From 8e6142eb9b1cf1af4e4a1fa64f54b1bc92ca8b6f Mon Sep 17 00:00:00 2001 From: Mike S Date: Sat, 11 Jan 2025 12:18:11 -0500 Subject: [PATCH] Added SDRAM + Lib + llext_export changes --- cores/arduino/abi.cpp | 26 + firmwares/zephyr-arduino_giga_r1_m7.bin | Bin 141148 -> 146908 bytes firmwares/zephyr-arduino_giga_r1_m7.elf | Bin 2368172 -> 2521776 bytes installed.json | 4872 ++++ libraries/SocketWrapper/WiFi.cpp | 3 + libraries/SocketWrapper/WiFi.h | 4 + libraries/SocketWrapper/ZephyrSSLClient.h | 18 + libraries/SocketWrapper/ZephyrUDP.h | 330 + .../SocketWrapper/utility/wl_definitions.h | 77 + .../SDRAM_operations/SDRAM_operations.ino | 68 + libraries/Zephyr_SDRAM/library.properties | 9 + libraries/Zephyr_SDRAM/src/SDRAM.cpp | 69 + libraries/Zephyr_SDRAM/src/SDRAM.h | 27 + libraries/ea_malloc/ea_malloc.h | 46 + libraries/ea_malloc/ll.h | 367 + libraries/ea_malloc/malloc_freelist.c | 168 + loader/boards/arduino_giga_r1_m7.conf | 12 +- loader/boards/arduino_giga_r1_m7.overlay | 42 + loader/llext_exports.c | 34 +- samples/analog_input/CMakeLists.txt | 12 - samples/analog_input/README.rst | 24 - samples/analog_input/prj.conf | 2 - samples/analog_input/src/main.cpp | 29 - samples/attach_interrupt/CMakeLists.txt | 13 - samples/attach_interrupt/README.rst | 22 - samples/attach_interrupt/prj.conf | 1 - samples/attach_interrupt/src/main.cpp | 25 - samples/blinky_arduino/CMakeLists.txt | 13 - samples/blinky_arduino/README.rst | 71 - samples/blinky_arduino/prj.conf | 2 - samples/blinky_arduino/src/main.cpp | 19 - samples/button_press_led/CMakeLists.txt | 13 - samples/button_press_led/README.rst | 67 - samples/button_press_led/prj.conf | 2 - samples/button_press_led/src/main.cpp | 34 - samples/fade/CMakeLists.txt | 13 - samples/fade/README.rst | 21 - samples/fade/prj.conf | 2 - samples/fade/src/app.cpp | 31 - samples/hello_arduino/CMakeLists.txt | 13 - samples/hello_arduino/README.rst | 33 - samples/hello_arduino/prj.conf | 1 - samples/hello_arduino/src/app.cpp | 29 - samples/i2cdemo/CMakeLists.txt | 12 - samples/i2cdemo/README.rst | 28 - samples/i2cdemo/prj.conf | 6 - samples/i2cdemo/src/main.cpp | 118 - samples/serial_event/CMakeLists.txt | 13 - samples/serial_event/README.rst | 20 - samples/serial_event/prj.conf | 1 - samples/serial_event/src/app.cpp | 20 - samples/spi_controller/CMakeLists.txt | 13 - samples/spi_controller/README.rst | 9 - samples/spi_controller/prj.conf | 6 - samples/spi_controller/src/app.cpp | 27 - samples/threads_arduino/CMakeLists.txt | 12 - samples/threads_arduino/README.rst | 47 - samples/threads_arduino/prj.conf | 3 - samples/threads_arduino/src/main.cpp | 51 - .../llext-edk/Makefile.cflags | 8 +- .../arduino_giga_r1_m7/llext-edk/cmake.cflags | 8 +- .../common_ll/include/stm32_ll_adc.h | 4 + .../common_ll/include/stm32_ll_bus.h | 4 + .../common_ll/include/stm32_ll_comp.h | 2 + .../common_ll/include/stm32_ll_cortex.h | 4 + .../common_ll/include/stm32_ll_crc.h | 4 + .../common_ll/include/stm32_ll_crs.h | 6 +- .../common_ll/include/stm32_ll_dac.h | 2 + .../common_ll/include/stm32_ll_dma.h | 4 + .../common_ll/include/stm32_ll_dmamux.h | 4 + .../common_ll/include/stm32_ll_exti.h | 2 + .../common_ll/include/stm32_ll_gpio.h | 4 + .../common_ll/include/stm32_ll_i2c.h | 4 + .../common_ll/include/stm32_ll_iwdg.h | 4 + .../common_ll/include/stm32_ll_lptim.h | 2 + .../common_ll/include/stm32_ll_lpuart.h | 4 + .../common_ll/include/stm32_ll_opamp.h | 2 + .../common_ll/include/stm32_ll_pka.h | 2 + .../common_ll/include/stm32_ll_pwr.h | 4 + .../common_ll/include/stm32_ll_radio.h | 9 + .../common_ll/include/stm32_ll_rcc.h | 4 + .../common_ll/include/stm32_ll_rng.h | 4 + .../common_ll/include/stm32_ll_rtc.h | 4 + .../common_ll/include/stm32_ll_spi.h | 4 + .../common_ll/include/stm32_ll_system.h | 4 + .../common_ll/include/stm32_ll_tim.h | 4 + .../common_ll/include/stm32_ll_usart.h | 4 + .../common_ll/include/stm32_ll_utils.h | 4 + .../common_ll/include/stm32_ll_wwdg.h | 2 + .../drivers/include/Legacy/stm32_hal_legacy.h | 84 +- .../stm32h7xx/drivers/include/stm32h7xx_hal.h | 6 + .../drivers/include/stm32h7xx_hal_adc.h | 6 +- .../drivers/include/stm32h7xx_hal_adc_ex.h | 82 +- .../drivers/include/stm32h7xx_hal_comp.h | 6 +- .../drivers/include/stm32h7xx_hal_conf.h | 8 + .../drivers/include/stm32h7xx_hal_cordic.h | 21 +- .../drivers/include/stm32h7xx_hal_cortex.h | 2 +- .../drivers/include/stm32h7xx_hal_cryp.h | 4 +- .../drivers/include/stm32h7xx_hal_cryp_ex.h | 4 +- .../drivers/include/stm32h7xx_hal_dac.h | 11 +- .../drivers/include/stm32h7xx_hal_dcmi.h | 4 +- .../drivers/include/stm32h7xx_hal_dma.h | 4 +- .../drivers/include/stm32h7xx_hal_dma2d.h | 8 +- .../drivers/include/stm32h7xx_hal_dts.h | 2 +- .../drivers/include/stm32h7xx_hal_eth.h | 37 +- .../drivers/include/stm32h7xx_hal_exti.h | 10 +- .../drivers/include/stm32h7xx_hal_fdcan.h | 4 +- .../drivers/include/stm32h7xx_hal_fmac.h | 12 +- .../drivers/include/stm32h7xx_hal_gfxmmu.h | 8 +- .../drivers/include/stm32h7xx_hal_gpio.h | 4 +- .../drivers/include/stm32h7xx_hal_hash.h | 82 +- .../drivers/include/stm32h7xx_hal_hash_ex.h | 74 +- .../drivers/include/stm32h7xx_hal_hrtim.h | 1550 +- .../drivers/include/stm32h7xx_hal_i2s.h | 5 + .../drivers/include/stm32h7xx_hal_ltdc.h | 7 +- .../drivers/include/stm32h7xx_hal_mdios.h | 8 +- .../drivers/include/stm32h7xx_hal_mdma.h | 6 +- .../drivers/include/stm32h7xx_hal_mmc.h | 130 +- .../drivers/include/stm32h7xx_hal_mmc_ex.h | 3 +- .../drivers/include/stm32h7xx_hal_nand.h | 2 +- .../drivers/include/stm32h7xx_hal_opamp.h | 4 +- .../drivers/include/stm32h7xx_hal_otfdec.h | 8 +- .../drivers/include/stm32h7xx_hal_pcd_ex.h | 1 - .../drivers/include/stm32h7xx_hal_pwr.h | 2 +- .../drivers/include/stm32h7xx_hal_pwr_ex.h | 4 +- .../drivers/include/stm32h7xx_hal_qspi.h | 3 + .../drivers/include/stm32h7xx_hal_ramecc.h | 18 +- .../drivers/include/stm32h7xx_hal_rcc.h | 2 +- .../drivers/include/stm32h7xx_hal_rcc_ex.h | 2 +- .../drivers/include/stm32h7xx_hal_rng.h | 3 + .../drivers/include/stm32h7xx_hal_rng_ex.h | 34 +- .../drivers/include/stm32h7xx_hal_rtc.h | 8 +- .../drivers/include/stm32h7xx_hal_rtc_ex.h | 20 +- .../drivers/include/stm32h7xx_hal_sd.h | 16 +- .../drivers/include/stm32h7xx_hal_sd_ex.h | 2 + .../drivers/include/stm32h7xx_hal_sdio.h | 600 + .../drivers/include/stm32h7xx_hal_sdram.h | 2 +- .../drivers/include/stm32h7xx_hal_swpmi.h | 36 +- .../drivers/include/stm32h7xx_hal_uart.h | 5 +- .../drivers/include/stm32h7xx_hal_usart.h | 3 +- .../drivers/include/stm32h7xx_hal_wwdg.h | 2 +- .../drivers/include/stm32h7xx_ll_adc.h | 232 +- .../drivers/include/stm32h7xx_ll_bdma.h | 160 +- .../drivers/include/stm32h7xx_ll_comp.h | 30 +- .../drivers/include/stm32h7xx_ll_cordic.h | 28 +- .../drivers/include/stm32h7xx_ll_dma.h | 216 +- .../drivers/include/stm32h7xx_ll_dma2d.h | 129 +- .../drivers/include/stm32h7xx_ll_dmamux.h | 154 +- .../drivers/include/stm32h7xx_ll_fmac.h | 6 - .../drivers/include/stm32h7xx_ll_fmc.h | 55 +- .../drivers/include/stm32h7xx_ll_gpio.h | 26 +- .../drivers/include/stm32h7xx_ll_hrtim.h | 449 +- .../drivers/include/stm32h7xx_ll_hsem.h | 24 +- .../drivers/include/stm32h7xx_ll_iwdg.h | 14 +- .../drivers/include/stm32h7xx_ll_lpuart.h | 15 + .../drivers/include/stm32h7xx_ll_mdma.h | 220 +- .../drivers/include/stm32h7xx_ll_opamp.h | 22 +- .../drivers/include/stm32h7xx_ll_rng.h | 2 +- .../drivers/include/stm32h7xx_ll_rtc.h | 170 +- .../drivers/include/stm32h7xx_ll_sdmmc.h | 313 +- .../drivers/include/stm32h7xx_ll_swpmi.h | 90 +- .../drivers/include/stm32h7xx_ll_wwdg.h | 12 +- .../stm32cube/stm32h7xx/soc/stm32h723xx.h | 289 +- .../stm32cube/stm32h7xx/soc/stm32h725xx.h | 289 +- .../stm32cube/stm32h7xx/soc/stm32h730xx.h | 289 +- .../stm32cube/stm32h7xx/soc/stm32h730xxq.h | 289 +- .../stm32cube/stm32h7xx/soc/stm32h733xx.h | 291 +- .../stm32cube/stm32h7xx/soc/stm32h735xx.h | 289 +- .../stm32cube/stm32h7xx/soc/stm32h742xx.h | 287 +- .../stm32cube/stm32h7xx/soc/stm32h743xx.h | 291 +- .../stm32cube/stm32h7xx/soc/stm32h745xg.h | 291 +- .../stm32cube/stm32h7xx/soc/stm32h745xx.h | 291 +- .../stm32cube/stm32h7xx/soc/stm32h747xg.h | 291 +- .../stm32cube/stm32h7xx/soc/stm32h747xx.h | 291 +- .../stm32cube/stm32h7xx/soc/stm32h750xx.h | 291 +- .../stm32cube/stm32h7xx/soc/stm32h753xx.h | 291 +- .../stm32cube/stm32h7xx/soc/stm32h755xx.h | 291 +- .../stm32cube/stm32h7xx/soc/stm32h757xx.h | 291 +- .../stm32cube/stm32h7xx/soc/stm32h7a3xx.h | 291 +- .../stm32cube/stm32h7xx/soc/stm32h7a3xxq.h | 291 +- .../stm32cube/stm32h7xx/soc/stm32h7b0xx.h | 291 +- .../stm32cube/stm32h7xx/soc/stm32h7b0xxq.h | 291 +- .../stm32cube/stm32h7xx/soc/stm32h7b3xx.h | 291 +- .../stm32cube/stm32h7xx/soc/stm32h7b3xxq.h | 291 +- .../stm32/stm32cube/stm32h7xx/soc/stm32h7xx.h | 7 +- .../stm32h7xx/soc/system_stm32h7xx.h | 1 + .../include/zephyr/drivers/audio/wm8904.h | 154 + .../drivers/bluetooth/hci/apollox_blue.h | 7 + .../zephyr/drivers/can/can_mcp251xfd.h | 2 + .../drivers/can/can_native_linux_adapt.h | 6 +- .../clock_control/clock_control_litex.h | 6 +- .../clock_control/clock_control_nrf2_common.h | 78 + .../clock_control/clock_stm32_ll_common.h | 14 + .../zephyr/drivers/crypto/crypto_stm32_priv.h | 9 +- .../zephyr/drivers/dai/intel/dmic/dmic.h | 15 +- .../dai/intel/ssp/dai-params-intel-ipc4.h | 40 +- .../zephyr/drivers/dai/intel/ssp/ssp.h | 26 +- .../drivers/dai/intel/ssp/ssp_regs_v1.h | 2 +- .../drivers/dai/intel/ssp/ssp_regs_v2.h | 2 +- .../drivers/dai/intel/ssp/ssp_regs_v3.h | 2 +- .../include/zephyr/drivers/dai/nxp/sai/sai.h | 8 +- .../zephyr/drivers/display/display_ili9340.h | 2 +- .../zephyr/drivers/display/display_ili9341.h | 2 +- .../zephyr/drivers/display/display_ili9342c.h | 2 +- .../zephyr/drivers/display/display_ili9488.h | 2 +- .../zephyr/drivers/display/display_ist3931.h | 36 + .../drivers/display/display_sdl_bottom.h | 23 +- .../zephyr/drivers/display/display_st7796s.h | 1 + .../zephyr/drivers/display/ssd1306_regs.h | 6 +- .../zephyr/drivers/display/ssd1327_regs.h | 48 + .../include/zephyr/drivers/dma/dma_nxp_edma.h | 68 +- .../include/zephyr/drivers/dma/dma_stm32.h | 4 +- .../zephyr/drivers/dma/dma_stm32_bdma.h | 3 +- .../zephyr/drivers/dma/dma_xilinx_axi_dma.h | 28 + .../include/zephyr/drivers/dp/swdp_ll_pin.h | 3 +- .../drivers/eeprom/eeprom_simulator_native.h | 28 + .../ethernet/dwc_xgmac/eth_dwc_xgmac_priv.h | 690 + .../drivers/ethernet/eth_enc28j60_priv.h | 6 +- .../drivers/ethernet/eth_lan865x_priv.h | 13 + .../drivers/ethernet/eth_lan9250_priv.h | 333 + .../drivers/ethernet/eth_nxp_imx_netc_priv.h | 121 + .../drivers/ethernet/eth_nxp_s32_netc_priv.h | 4 +- .../drivers/ethernet/eth_stm32_hal_priv.h | 5 +- .../include/zephyr/drivers/ethernet/oa_tc6.h | 5 +- .../drivers/ethernet/phy/phy_dm8806_priv.h | 156 + .../zephyr/drivers/firmware/scmi/mailbox.h | 117 + .../zephyr/drivers/flash/flash_hp_ra.h | 94 +- .../zephyr/drivers/flash/flash_stm32.h | 53 +- .../include/zephyr/drivers/flash/jesd216.h | 15 +- .../include/zephyr/drivers/flash/spi_nor.h | 1 + .../zephyr/drivers/fpga/fpga_ice40_common.h | 84 + .../gnss_u_blox_protocol_defines.h | 10 +- .../include/zephyr/drivers/gpio/gpio_grgpio.h | 53 + .../zephyr/drivers/gpio/gpio_max14906.h | 321 + .../zephyr/drivers/gpio/gpio_max14916.h | 200 + .../zephyr/drivers/gpio/gpio_max149x6.h | 157 + .../zephyr/drivers/gpio/gpio_mcp23xxx.h | 1 + .../zephyr/drivers/gpio/gpio_renesas_rz.h | 46 + .../zephyr/drivers/gpio/gpio_rt1718s.h | 3 +- .../include/zephyr/drivers/gpio/gpio_stm32.h | 4 +- .../include/zephyr/drivers/i2c/i2c_dw.h | 151 +- .../zephyr/drivers/i2c/i2c_dw_registers.h | 253 +- .../zephyr/drivers/i2c/i2c_nrfx_twi_common.h | 3 +- .../zephyr/drivers/i2c/i2c_nrfx_twim_common.h | 59 + .../ieee802154/ieee802154_cc13xx_cc26xx.h | 8 + .../zephyr/drivers/modem/modem_context.h | 2 +- .../include/zephyr/drivers/mspi/mspi_ambiq.h | 3 + .../include/zephyr/drivers/net/nsos.h | 23 + .../include/zephyr/drivers/net/slip.h | 2 +- .../drivers/sensor/adi/adxl345/adxl345.h | 214 +- .../drivers/sensor/adi/adxl362/adxl362.h | 74 +- .../drivers/sensor/adi/adxl367/adxl367.h | 119 +- .../drivers/sensor/adi/adxl372/adxl372.h | 53 + .../zephyr/drivers/sensor/apds9253/apds9253.h | 106 + .../sensor/asahi_kasei/akm09918c/akm09918c.h | 15 +- .../drivers/sensor/bosch/bme280/bme280.h | 138 +- .../drivers/sensor/bosch/bme680/bme680.h | 1 + .../drivers/sensor/bosch/bmi08x/bmi08x.h | 2 +- .../drivers/sensor/bosch/bmm150/bmm150.h | 2 + .../drivers/sensor/bosch/bmp180/bmp180.h | 49 + .../drivers/sensor/bosch/bmp388/bmp388.h | 32 +- .../zephyr/drivers/sensor/jedec/jc42/jc42.h | 133 + .../drivers/sensor/maxim/max31865/max31865.h | 2 +- .../drivers/sensor/memsic/mc3419/mc3419.h | 105 + .../drivers/sensor/memsic/mmc56x3/mmc56x3.h | 151 + .../sensor/ntc_thermistor/ntc_thermistor.h | 21 +- .../drivers/sensor/nxp/fxls8974/fxls8974.h | 204 + .../drivers/sensor/nxp/p3t1755/p3t1755.h | 71 + .../sensor/renesas/isl29035/isl29035.h | 153 + .../drivers/sensor/sensirion/scd4x/scd4x.h | 88 + .../drivers/sensor/sensirion/sht4x/sht4x.h | 2 +- .../drivers/sensor/st/lis2dux12/lis2dux12.h | 4 +- .../drivers/sensor/st/lis2dw12/lis2dw12.h | 32 +- .../drivers/sensor/st/lps2xdf/ilps22qs.h | 23 + .../drivers/sensor/st/lps2xdf/lps2xdf.h | 25 +- .../drivers/sensor/st/lsm6dso/lsm6dso.h | 16 +- .../drivers/sensor/st/lsm6dsv16x/lsm6dsv16x.h | 37 + .../sensor/st/lsm6dsv16x/lsm6dsv16x_decoder.h | 54 + .../sensor/st/lsm6dsv16x/lsm6dsv16x_rtio.h | 20 + .../drivers/sensor/st/lsm9ds1/lsm9ds1.h | 56 + .../drivers/sensor/tdk/icm42670/icm42670.h | 40 +- .../drivers/sensor/tdk/icm42688/icm42688.h | 16 +- .../zephyr/drivers/sensor/ti/ina23x/ina230.h | 27 +- .../drivers/sensor/ti/tmag5273/tmag5273.h | 9 +- .../drivers/sensor/ti/tmp1075/tmp1075.h | 75 + .../zephyr/drivers/sensor/ti/tmp116/tmp116.h | 14 + .../sensor/vishay/vcnl36825t/vcnl36825t.h | 91 +- .../wsen_hids_2525020210002.h | 45 + .../zephyr/drivers/serial/uart_lpc11u6x.h | 16 +- .../zephyr/drivers/serial/uart_pl011_ambiq.h | 114 +- .../drivers/serial/uart_pl011_registers.h | 4 +- .../zephyr/drivers/spi/spi_andes_atcspi200.h | 1 + .../include/zephyr/drivers/spi/spi_context.h | 14 +- .../zephyr/drivers/spi/spi_esp32_spim.h | 2 + .../zephyr/drivers/spi/spi_litex_common.h | 66 + .../include/zephyr/drivers/spi/spi_ll_stm32.h | 21 +- .../include/zephyr/drivers/spi/spi_nxp_s32.h | 1 + .../include/zephyr/drivers/spi/spi_sifive.h | 1 + .../stepper/adi_tmc/adi_tmc5xxx_common.h | 51 + .../drivers/stepper/adi_tmc/adi_tmc_reg.h | 151 + .../drivers/stepper/adi_tmc/adi_tmc_spi.h | 63 + .../drivers/stepper/step_dir_stepper_common.h | 191 + .../zephyr/drivers/usb/common/usb_dwc2_hw.h | 308 +- .../zephyr/drivers/usb/udc/udc_common.h | 2 +- .../include/zephyr/drivers/usb/udc/udc_dwc2.h | 6 + .../drivers/usb/udc/udc_dwc2_vendor_quirks.h | 49 +- .../zephyr/drivers/usb_c/tcpc/ps8xxx_priv.h | 18 + .../zephyr/drivers/usb_c/tcpc/ucpd_numaker.h | 32 + .../include/zephyr/drivers/watchdog/wdt_dw.h | 5 +- .../zephyr/drivers/wifi/eswifi/eswifi.h | 4 +- .../wifi/infineon/airoc_whd_hal_common.h | 51 + .../zephyr/drivers/wifi/infineon/airoc_wifi.h | 49 +- .../zephyr/drivers/wifi/infineon/cybsp.h | 13 +- .../zephyr/drivers/wifi/nrf_wifi/inc/coex.h | 84 + .../drivers/wifi/nrf_wifi/inc/coex_struct.h | 182 + .../drivers/wifi/nrf_wifi/inc/fmac_main.h | 155 + .../zephyr/drivers/wifi/nrf_wifi/inc/net_if.h | 66 + .../drivers/wifi/nrf_wifi/inc/wifi_mgmt.h | 78 + .../wifi/nrf_wifi/inc/wifi_mgmt_scan.h | 34 + .../drivers/wifi/nrf_wifi/inc/wpa_supp_if.h | 145 + .../wifi/nrf_wifi/off_raw_tx/inc/off_raw_tx.h | 28 + .../drivers/wifi/nrf_wifi/src/wifi_util.h | 24 + .../zephyr/drivers/wifi/nxp/nxp_wifi_drv.h | 83 + .../zephyr/include/generated/syscall_list.h | 1092 +- .../include/generated/zephyr/autoconf.h | 103 +- .../generated/zephyr/devicetree_generated.h | 18509 +++++++------- .../generated/zephyr/driver-validation.h | 16 +- .../generated/zephyr/kobj-types-enum.h | 8 +- .../zephyr/include/generated/zephyr/offsets.h | 1 + .../include/generated/zephyr/otype-to-str.h | 8 +- .../include/generated/zephyr/syscall_list.h | 1092 +- .../generated/zephyr/syscalls/comparator.h | 98 + .../generated/zephyr/syscalls/devmux.h | 8 +- .../generated/zephyr/syscalls/fdtable.h | 81 + .../include/generated/zephyr/syscalls/flash.h | 57 + .../include/generated/zephyr/syscalls/gnss.h | 72 +- .../generated/zephyr/syscalls/haptics.h | 74 + .../generated/zephyr/syscalls/kernel.h | 17 - .../generated/zephyr/syscalls/socket.h | 25 - .../generated/zephyr/syscalls/stepper.h | 294 + .../zephyr/include/generated/zephyr/version.h | 20 +- .../include/zephyr/app_memory/mem_domain.h | 6 +- .../include/zephyr/arch/arc/arch_inlines.h | 6 +- .../zephyr/arch/arc/v2/arcv2_irq_unit.h | 12 +- .../include/zephyr/arch/arc/v2/vpx/arc_vpx.h | 54 + .../zephyr/include/zephyr/arch/arch_inlines.h | 2 + .../include/zephyr/arch/arch_interface.h | 25 +- .../zephyr/include/zephyr/arch/arm/arch.h | 7 +- .../include/zephyr/arch/arm/cortex_a_r/cpu.h | 11 +- .../zephyr/arch/arm/cortex_a_r/exception.h | 3 + .../include/zephyr/arch/arm/cortex_a_r/mpu.h | 2 +- .../arch/arm/cortex_m/arm_mpu_mem_cfg.h | 22 +- .../include/zephyr/arch/arm/cortex_m/cpu.h | 17 +- .../zephyr/arch/arm/cortex_m/exception.h | 3 + .../zephyr/include/zephyr/arch/arm/gdbstub.h | 2 +- .../include/zephyr/arch/arm/mpu/arm_mpu_v8.h | 23 +- .../include/zephyr/arch/arm64/arm_mmu.h | 17 + .../zephyr/include/zephyr/arch/arm64/cache.h | 4 + .../zephyr/include/zephyr/arch/cache.h | 3 + .../include/zephyr/arch/common/arch_inlines.h | 45 + .../zephyr/include/zephyr/arch/common/ffs.h | 21 +- .../include/zephyr/arch/common/pm_s2ram.h | 11 + .../include/zephyr/arch/riscv/arch_inlines.h | 11 + .../zephyr/include/zephyr/arch/riscv/elf.h | 298 + .../include/zephyr/arch/riscv/exception.h | 10 + .../zephyr/include/zephyr/arch/riscv/irq.h | 7 + .../zephyr/include/zephyr/arch/riscv/reg.h | 21 + .../zephyr/include/zephyr/arch/riscv/sys_io.h | 8 +- .../include/zephyr/arch/riscv/syscall.h | 2 +- .../include/zephyr/arch/x86/ia32/arch.h | 2 +- .../include/zephyr/arch/x86/mmustructs.h | 14 + .../include/zephyr/arch/x86/multiboot.h | 34 +- .../include/zephyr/arch/x86/multiboot_info.h | 40 + .../zephyr/include/zephyr/arch/xtensa/arch.h | 3 +- .../zephyr/include/zephyr/arch/xtensa/cache.h | 4 + .../include/zephyr/arch/xtensa/syscall.h | 62 +- .../zephyr/include/zephyr/audio/codec.h | 75 +- .../include/zephyr/include/zephyr/bindesc.h | 235 +- .../include/zephyr/bluetooth/audio/aics.h | 2 +- .../include/zephyr/bluetooth/audio/audio.h | 1223 +- .../include/zephyr/bluetooth/audio/bap.h | 618 +- .../zephyr/bluetooth/audio/bap_lc3_preset.h | 133 +- .../include/zephyr/bluetooth/audio/cap.h | 136 +- .../include/zephyr/bluetooth/audio/ccid.h | 74 + .../include/zephyr/bluetooth/audio/csip.h | 6 +- .../include/zephyr/bluetooth/audio/gmap.h | 8 +- .../zephyr/bluetooth/audio/gmap_lc3_preset.h | 34 +- .../include/zephyr/bluetooth/audio/lc3.h | 6 +- .../include/zephyr/bluetooth/audio/mcc.h | 4 +- .../include/zephyr/bluetooth/audio/micp.h | 2 +- .../include/zephyr/bluetooth/audio/pacs.h | 2 +- .../include/zephyr/bluetooth/audio/pbp.h | 2 +- .../include/zephyr/bluetooth/audio/tbs.h | 106 +- .../include/zephyr/bluetooth/audio/tmap.h | 19 + .../include/zephyr/bluetooth/audio/vcp.h | 10 +- .../include/zephyr/bluetooth/audio/vocs.h | 2 +- .../include/zephyr/bluetooth/bluetooth.h | 288 +- .../zephyr/include/zephyr/bluetooth/buf.h | 69 +- .../include/zephyr/bluetooth/byteorder.h | 72 + .../include/zephyr/bluetooth/classic/avrcp.h | 127 + .../zephyr/bluetooth/classic/classic.h | 210 + .../include/zephyr/bluetooth/classic/sdp.h | 54 +- .../zephyr/include/zephyr/bluetooth/conn.h | 708 +- .../zephyr/include/zephyr/bluetooth/cs.h | 889 + .../zephyr/include/zephyr/bluetooth/gap.h | 323 +- .../zephyr/include/zephyr/bluetooth/gatt.h | 183 +- .../zephyr/include/zephyr/bluetooth/hci.h | 32 +- .../include/zephyr/bluetooth/hci_types.h | 752 +- .../zephyr/include/zephyr/bluetooth/iso.h | 73 +- .../zephyr/include/zephyr/bluetooth/l2cap.h | 110 +- .../zephyr/include/zephyr/bluetooth/mesh.h | 4 +- .../include/zephyr/bluetooth/mesh/access.h | 4 + .../include/zephyr/bluetooth/mesh/blob_cli.h | 23 +- .../include/zephyr/bluetooth/mesh/blob_srv.h | 2 +- .../include/zephyr/bluetooth/mesh/brg_cfg.h | 97 + .../zephyr/bluetooth/mesh/brg_cfg_cli.h | 319 + .../zephyr/bluetooth/mesh/brg_cfg_srv.h | 47 + .../include/zephyr/bluetooth/mesh/msg.h | 2 +- .../include/zephyr/bluetooth/services/bas.h | 252 + .../include/zephyr/bluetooth/services/cts.h | 147 + .../include/zephyr/bluetooth/services/hrs.h | 21 + .../zephyr/include/zephyr/bluetooth/testing.h | 107 +- .../zephyr/include/zephyr/bluetooth/uuid.h | 12 + .../zephyr/include/zephyr/canbus/isotp.h | 2 +- .../include/zephyr/include/zephyr/data/json.h | 2 + .../include/zephyr/include/zephyr/data/jwt.h | 49 +- .../zephyr/include/zephyr/debug/coredump.h | 17 +- .../zephyr/debug/coresight/cs_trace_defmt.h | 64 + .../include/zephyr/debug/mipi_stp_decoder.h | 6 +- .../zephyr/include/zephyr/debug/symtab.h | 4 +- .../include/zephyr/debug/thread_analyzer.h | 25 +- .../include/zephyr/include/zephyr/device.h | 78 +- .../zephyr/include/zephyr/devicetree.h | 504 +- .../zephyr/include/zephyr/devicetree/dma.h | 19 + .../include/zephyr/devicetree/port-endpoint.h | 275 + .../zephyr/include/zephyr/devicetree/spi.h | 6 +- .../zephyr/include/zephyr/display/cfb.h | 6 +- .../zephyr/include/zephyr/drivers/adc.h | 22 +- .../drivers/adc/current_sense_amplifier.h | 14 +- .../zephyr/include/zephyr/drivers/bluetooth.h | 22 +- .../zephyr/include/zephyr/drivers/can.h | 99 +- .../include/zephyr/drivers/can/transceiver.h | 10 +- .../clock_control/adi_max32_clock_control.h | 16 +- .../clock_control/clock_control_silabs.h | 39 + .../clock_control/esp32_clock_control.h | 2 + .../drivers/clock_control/nrf_clock_control.h | 192 + .../drivers/clock_control/renesas_ra_cgc.h | 61 +- .../clock_control/stm32_clock_control.h | 78 +- .../include/zephyr/drivers/comparator.h | 138 + .../zephyr/drivers/comparator/fake_comp.h | 40 + .../zephyr/drivers/comparator/mcux_acmp.h | 136 + .../zephyr/drivers/comparator/nrf_comp.h | 164 + .../zephyr/drivers/comparator/nrf_lpcomp.h | 112 + .../zephyr/include/zephyr/drivers/dac.h | 13 +- .../zephyr/include/zephyr/drivers/dai.h | 46 +- .../zephyr/include/zephyr/drivers/display.h | 2 + .../zephyr/include/zephyr/drivers/dma.h | 29 +- .../include/zephyr/drivers/dma/dma_mcux_pxp.h | 18 +- .../zephyr/drivers/dma/dma_mcux_smartdma.h | 30 - .../zephyr/drivers/dma/dma_smartbond.h | 6 +- .../zephyr/include/zephyr/drivers/emul.h | 36 +- .../drivers/ethernet/eth_nxp_enet_qos.h | 2 +- .../zephyr/drivers/firmware/scmi/clk.h | 96 + .../zephyr/drivers/firmware/scmi/pinctrl.h | 103 + .../zephyr/drivers/firmware/scmi/protocol.h | 122 + .../zephyr/drivers/firmware/scmi/shmem.h | 67 + .../zephyr/drivers/firmware/scmi/transport.h | 274 + .../zephyr/drivers/firmware/scmi/util.h | 286 + .../zephyr/include/zephyr/drivers/flash.h | 71 + .../drivers/flash/ra_flash_api_extensions.h | 2 +- .../zephyr/include/zephyr/drivers/gnss.h | 105 +- .../zephyr/include/zephyr/drivers/gpio.h | 110 +- .../include/zephyr/drivers/gpio/gpio_intel.h | 13 + .../include/zephyr/drivers/gpio/gpio_mmio32.h | 7 + .../zephyr/drivers/gpio/gpio_nct38xx.h | 8 + .../zephyr/drivers/gpio/gpio_pcal64xxa.h | 33 + .../zephyr/drivers/gpio/gpio_sx1509b.h | 8 + .../include/zephyr/drivers/gpio/gpio_utils.h | 13 + .../zephyr/include/zephyr/drivers/haptics.h | 88 + .../include/zephyr/drivers/haptics/drv2605.h | 86 + .../include/zephyr/drivers/hwspinlock.h | 12 +- .../zephyr/include/zephyr/drivers/i2c.h | 62 +- .../zephyr/include/zephyr/drivers/i3c.h | 328 +- .../include/zephyr/drivers/i3c/addresses.h | 5 +- .../zephyr/include/zephyr/drivers/i3c/ccc.h | 682 +- .../include/zephyr/drivers/i3c/devicetree.h | 40 +- .../include/zephyr/drivers/i3c/hdr_ddr.h | 131 + .../zephyr/include/zephyr/drivers/i3c/ibi.h | 11 +- .../zephyr/drivers/i3c/target_device.h | 69 +- .../zephyr/drivers/interrupt_controller/gic.h | 7 + .../interrupt_controller/gpio_intc_stm32.h | 120 + .../interrupt_controller/intc_eirq_nxp_s32.h | 72 +- .../drivers/interrupt_controller/intc_esp32.h | 18 +- .../interrupt_controller/intc_esp32c3.h | 18 +- .../interrupt_controller/intc_wkpu_nxp_s32.h | 44 +- .../drivers/interrupt_controller/intel_vtd.h | 2 +- .../drivers/interrupt_controller/riscv_clic.h | 7 + .../drivers/interrupt_controller/riscv_plic.h | 21 + .../zephyr/include/zephyr/drivers/kscan.h | 6 + .../zephyr/include/zephyr/drivers/led.h | 129 + .../zephyr/include/zephyr/drivers/mbox.h | 2 +- .../include/zephyr/drivers/mfd/ad559x.h | 6 +- .../include/zephyr/drivers/mfd/aw9523b.h | 45 + .../zephyr/drivers/mfd/mfd_ite_it8801.h | 137 + .../include/zephyr/drivers/mfd/npm2100.h | 129 + .../zephyr/include/zephyr/drivers/mipi_dbi.h | 82 +- .../zephyr/drivers/misc/coresight/nrf_etr.h | 20 + .../zephyr/drivers/misc/coresight/stmesp.h | 193 + .../zephyr/drivers/misc/devmux/devmux.h | 2 +- .../zephyr/include/zephyr/drivers/mspi.h | 5 +- .../include/zephyr/drivers/mspi/devicetree.h | 3 +- .../zephyr/include/zephyr/drivers/pinctrl.h | 8 +- .../drivers/pinctrl/pinctrl_nxp_port_common.h | 78 + .../include/zephyr/drivers/pwm/pwm_fake.h | 24 + .../zephyr/include/zephyr/drivers/regulator.h | 24 +- .../zephyr/include/zephyr/drivers/rtc.h | 56 +- .../include/zephyr/drivers/rtc/rtc_fake.h | 12 +- .../zephyr/include/zephyr/drivers/sensor.h | 31 +- .../include/zephyr/drivers/sensor/battery.h | 87 + .../include/zephyr/drivers/sensor/mcux_acmp.h | 8 +- .../include/zephyr/drivers/sensor/mmc56x3.h | 51 + .../zephyr/drivers/sensor/npm1300_charger.h | 11 + .../zephyr/drivers/sensor/npm2100_vbat.h | 25 + .../include/zephyr/drivers/sensor/scd4x.h | 92 + .../include/zephyr/drivers/sensor/tmp116.h | 10 + .../include/zephyr/drivers/sensor/tsl2540.h | 4 +- .../drivers/sensor/wsen_hids_2525020210002.h | 47 + .../zephyr/drivers/serial/uart_async_to_irq.h | 8 +- .../zephyr/drivers/sip_svc/sip_svc_driver.h | 2 +- .../zephyr/include/zephyr/drivers/spi.h | 215 +- .../zephyr/include/zephyr/drivers/spi/rtio.h | 114 + .../zephyr/include/zephyr/drivers/stepper.h | 483 + .../zephyr/drivers/stepper/stepper_fake.h | 47 + .../zephyr/drivers/stepper/stepper_trinamic.h | 173 + .../zephyr/include/zephyr/drivers/uart.h | 738 +- .../zephyr/drivers/uart/uart_internal.h | 679 + .../zephyr/include/zephyr/drivers/uart_emul.h | 76 + .../zephyr/include/zephyr/drivers/usb/udc.h | 49 +- .../include/zephyr/drivers/usb/udc_buf.h | 158 + .../zephyr/include/zephyr/drivers/usb/uhc.h | 4 +- .../include/zephyr/drivers/usb/usb_dc.h | 2 + .../include/zephyr/drivers/usb_c/tcpci_priv.h | 119 + .../include/zephyr/drivers/usb_c/usbc_tcpc.h | 189 +- .../include/zephyr/drivers/video-controls.h | 159 +- .../zephyr/include/zephyr/drivers/video.h | 420 +- .../zephyr/include/zephyr/drivers/w1.h | 6 +- .../drivers/wifi/nrf_wifi/bus/qspi_if.h | 116 + .../drivers/wifi/nrf_wifi/bus/rpu_hw_if.h | 61 + .../wifi/nrf_wifi/off_raw_tx/off_raw_tx_api.h | 262 + .../zephyr/include/zephyr/dsp/basicmath.h | 6 +- .../zephyr/include/zephyr/dsp/basicmath_f16.h | 6 +- .../include/zephyr/include/zephyr/dsp/dsp.h | 6 +- .../zephyr/include/zephyr/dsp/print_format.h | 6 +- .../include/zephyr/include/zephyr/dsp/types.h | 6 +- .../include/zephyr/dt-bindings/adc/nrf-adc.h | 11 - .../zephyr/dt-bindings/adc/nrf-saadc-nrf54l.h | 15 + .../zephyr/dt-bindings/adc/nrf-saadc-v2.h | 14 + .../zephyr/dt-bindings/adc/nrf-saadc-v3.h | 14 + .../zephyr/dt-bindings/adc/nrf-saadc.h | 19 + .../zephyr/dt-bindings/battery/battery.h | 37 + .../dt-bindings/clock/adi_max32_clock.h | 2 + .../dt-bindings/clock/ch32v00x-clocks.h | 42 + .../zephyr/dt-bindings/clock/esp32c2_clock.h | 74 + .../zephyr/dt-bindings/clock/imx95_clock.h | 177 + .../zephyr/dt-bindings/clock/imx_ccm_rev2.h | 23 + .../zephyr/dt-bindings/clock/kinetis_sim.h | 3 + .../dt-bindings/clock/mcux_lpc_syscon_clock.h | 115 +- .../zephyr/dt-bindings/clock/npcm_clock.h | 72 + .../dt-bindings/clock/numaker_m2l31x_clock.h | 13 + .../dt-bindings/clock/numaker_m46x_clock.h | 6 + .../dt-bindings/clock/nxp_s32z2_clock.h | 6 +- .../zephyr/dt-bindings/clock/ra_clock.h | 129 +- .../include/zephyr/dt-bindings/clock/scg_k4.h | 14 + .../dt-bindings/clock/silabs/common-clock.h | 54 + .../dt-bindings/clock/silabs/xg21-clock.h | 26 + .../dt-bindings/clock/silabs/xg22-clock.h | 76 + .../dt-bindings/clock/silabs/xg23-clock.h | 86 + .../dt-bindings/clock/silabs/xg24-clock.h | 85 + .../dt-bindings/clock/silabs/xg27-clock.h | 78 + .../zephyr/dt-bindings/clock/stm32_clock.h | 5 + .../dt-bindings/clock/stm32_common_clocks.h | 44 + .../zephyr/dt-bindings/clock/stm32c0_clock.h | 31 +- .../zephyr/dt-bindings/clock/stm32f0_clock.h | 21 +- .../dt-bindings/clock/stm32f10x_clock.h | 25 + .../zephyr/dt-bindings/clock/stm32f1_clock.h | 22 +- .../zephyr/dt-bindings/clock/stm32f3_clock.h | 40 +- .../dt-bindings/clock/stm32f410_clock.h | 22 +- .../dt-bindings/clock/stm32f427_clock.h | 14 +- .../zephyr/dt-bindings/clock/stm32f4_clock.h | 56 +- .../zephyr/dt-bindings/clock/stm32f7_clock.h | 59 +- .../zephyr/dt-bindings/clock/stm32g0_clock.h | 40 +- .../zephyr/dt-bindings/clock/stm32g4_clock.h | 40 +- .../zephyr/dt-bindings/clock/stm32h5_clock.h | 125 +- .../zephyr/dt-bindings/clock/stm32h7_clock.h | 87 +- .../dt-bindings/clock/stm32h7rs_clock.h | 74 +- .../zephyr/dt-bindings/clock/stm32l0_clock.h | 18 +- .../zephyr/dt-bindings/clock/stm32l1_clock.h | 5 +- .../zephyr/dt-bindings/clock/stm32l4_clock.h | 60 +- .../zephyr/dt-bindings/clock/stm32u0_clock.h | 92 + .../zephyr/dt-bindings/clock/stm32u5_clock.h | 99 +- .../zephyr/dt-bindings/clock/stm32wb0_clock.h | 70 + .../zephyr/dt-bindings/clock/stm32wb_clock.h | 26 +- .../zephyr/dt-bindings/clock/stm32wba_clock.h | 38 +- .../zephyr/dt-bindings/clock/stm32wl_clock.h | 28 +- .../zephyr/dt-bindings/dma/dma_smartbond.h | 6 +- .../zephyr/dt-bindings/dma/max32655_dma.h | 33 + .../zephyr/dt-bindings/dma/max32662_dma.h | 29 + .../zephyr/dt-bindings/dma/max32666_dma.h | 31 + .../zephyr/dt-bindings/dma/max32670_dma.h | 37 + .../zephyr/dt-bindings/dma/max32672_dma.h | 38 + .../zephyr/dt-bindings/dma/max32675_dma.h | 29 + .../zephyr/dt-bindings/dma/max32680_dma.h | 32 + .../zephyr/dt-bindings/dma/max32690_dma.h | 65 + .../zephyr/dt-bindings/dma/max78002_dma.h | 34 + .../zephyr/dt-bindings/dma/stm32_dma.h | 2 + .../zephyr/dt-bindings/espi/npcx_espi.h | 20 +- .../zephyr/dt-bindings/gnss/u_blox_m8.h | 23 + .../dt-bindings/gpio/espressif-esp32-gpio.h | 20 + .../dt-bindings/gpio/nordic-npm2100-gpio.h | 61 + .../dt-bindings/gpio/renesas-ra-gpio-ioport.h | 18 + .../zephyr/dt-bindings/gpio/renesas-rz-gpio.h | 43 + .../dt-bindings/input/cst816s-gesture-codes.h | 18 + .../dt-bindings/input/input-event-codes.h | 9 +- .../interrupt-controller/esp-esp32c2-intmux.h | 62 + .../interrupt-controller/esp-esp32c3-intmux.h | 8 + .../interrupt-controller/esp-esp32c6-intmux.h | 8 + .../interrupt-controller/esp-xtensa-intmux.h | 7 + .../esp32s2-xtensa-intmux.h | 7 + .../esp32s3-xtensa-intmux.h | 7 + .../dt-bindings/mfd/mfd_it8801_altctrl.h | 17 + .../zephyr/dt-bindings/mipi_dbi/mipi_dbi.h | 82 +- .../misc/nordic-domain-id-nrf54h20.h | 1 + .../misc/nordic-domain-id-nrf9230.h | 15 + .../misc/nordic-nrf-ficr-nrf9230-engb.h | 110 + .../misc/nordic-owner-id-nrf54h20.h | 1 + .../misc/nordic-owner-id-nrf9230.h | 14 + .../zephyr/dt-bindings/misc/nordic-tddconf.h | 15 + .../dt-bindings/pinctrl/ch32v003-pinctrl.h | 136 + .../dt-bindings/pinctrl/esp32c2-gpio-sigmap.h | 156 + .../dt-bindings/pinctrl/esp32c2-pinctrl.h | 796 + .../dt-bindings/pinctrl/esp32c3-pinctrl.h | 2494 +- .../dt-bindings/pinctrl/esp32s3-pinctrl.h | 19215 ++++++++------- .../dt-bindings/pinctrl/gecko-pinctrl-s1.h | 6 +- .../dt-bindings/pinctrl/max32-pinctrl.h | 1 + .../zephyr/dt-bindings/pinctrl/nrf-pinctrl.h | 17 +- .../dt-bindings/pinctrl/nxp-s32-pinctrl.h | 57 +- .../dt-bindings/pinctrl/renesas/pinctrl-ra.h | 57 + .../pinctrl/renesas/pinctrl-rzg-common.h | 104 + .../pinctrl/rpi-pico-rp2040-pinctrl.h | 16 + .../zephyr/dt-bindings/pinctrl/si32-pinctrl.h | 113 + .../dt-bindings/pinctrl/silabs-pinctrl-dbus.h | 40 + .../dt-bindings/pinctrl/silabs/xg21-pinctrl.h | 1188 + .../dt-bindings/pinctrl/silabs/xg22-pinctrl.h | 1792 ++ .../dt-bindings/pinctrl/silabs/xg24-pinctrl.h | 2703 ++ .../dt-bindings/pinctrl/silabs/xg27-pinctrl.h | 1875 ++ .../dt-bindings/pinctrl/ti-k3-pinctrl.h | 5 + .../zephyr/dt-bindings/power/imx_scu_rsrc.h | 558 + .../zephyr/dt-bindings/power/imx_spc.h | 118 + .../zephyr/dt-bindings/power/nordic-nrf-gpd.h | 17 + .../zephyr/dt-bindings/pwm/pwm_ifx_cat1.h | 11 + .../include/zephyr/dt-bindings/pwm/ra_pwm.h | 39 + .../zephyr/dt-bindings/regulator/npm2100.h | 50 + .../zephyr/dt-bindings/regulator/nrf5x.h | 27 + .../dt-bindings/regulator/silabs_dcdc.h | 27 + .../reserved-memory/nordic-owned-memory.h | 53 + .../zephyr/dt-bindings/reset/rp2040_reset.h | 36 + .../zephyr/dt-bindings/reset/stm32u0_reset.h | 18 + .../zephyr/dt-bindings/reset/stm32wb0_reset.h | 18 + .../zephyr/dt-bindings/sensor/apds9253.h | 55 + .../zephyr/dt-bindings/sensor/lis2dw12.h | 18 + .../zephyr/dt-bindings/sensor/lps2xdf.h | 4 + .../zephyr/dt-bindings/sensor/lsm6dsv16x.h | 36 + .../zephyr/dt-bindings/sensor/lsm9ds1.h | 46 + .../zephyr/dt-bindings/sensor/mc3419.h | 50 + .../zephyr/dt-bindings/sensor/tmp116.h | 31 + .../dt-bindings/video/video-interfaces.h | 17 + .../include/zephyr/include/zephyr/fs/nvs.h | 24 + .../include/zephyr/include/zephyr/fs/zms.h | 211 + .../zephyr/include/zephyr/input/input.h | 28 +- .../include/zephyr/input/input_kbd_matrix.h | 23 + .../zephyr/include/zephyr/input/input_touch.h | 94 + .../include/zephyr/internal/syscall_handler.h | 4 +- .../include/zephyr/include/zephyr/ipc/icmsg.h | 4 +- .../include/zephyr/ipc/ipc_static_vrings.h | 6 +- .../include/zephyr/include/zephyr/ipc/pbuf.h | 38 +- .../zephyr/include/zephyr/irq_multilevel.h | 164 +- .../include/zephyr/include/zephyr/kernel.h | 162 +- .../include/zephyr/include/zephyr/kernel/mm.h | 84 + .../include/zephyr/kernel/mm/demand_paging.h | 37 + .../include/zephyr/kernel/thread_stack.h | 22 - .../zephyr/include/zephyr/kernel_structs.h | 11 +- .../zephyr/linker/devicetree_regions.h | 70 +- .../include/zephyr/linker/linker-defs.h | 28 +- .../include/zephyr/linker/linker-devnull.h | 1 + .../include/zephyr/linker/section_tags.h | 11 + .../zephyr/include/zephyr/linker/sections.h | 14 + .../zephyr/include/zephyr/llext/buf_loader.h | 23 +- .../include/zephyr/include/zephyr/llext/elf.h | 48 - .../zephyr/include/zephyr/llext/fs_loader.h | 73 + .../zephyr/include/zephyr/llext/llext.h | 76 +- .../include/zephyr/llext/llext_internal.h | 32 + .../zephyr/include/zephyr/llext/loader.h | 35 +- .../zephyr/include/zephyr/llext/symbol.h | 12 +- .../zephyr/include/zephyr/logging/log.h | 3 +- .../include/zephyr/logging/log_backend_ws.h | 56 + .../zephyr/include/zephyr/logging/log_core.h | 277 +- .../zephyr/logging/log_frontend_stmesp.h | 142 + .../logging/log_frontend_stmesp_demux.h | 319 + .../include/zephyr/logging/log_output.h | 25 +- .../zephyr/include/zephyr/lorawan/lorawan.h | 41 +- .../include/zephyr/math/interpolation.h | 75 + .../zephyr/include/zephyr/mgmt/hawkbit.h | 278 +- .../include/zephyr/mgmt/hawkbit/autohandler.h | 73 + .../include/zephyr/mgmt/hawkbit/config.h | 192 + .../include/zephyr/mgmt/hawkbit/hawkbit.h | 143 + .../mgmt/mcumgr/grp/enum_mgmt/enum_mgmt.h | 57 + .../grp/enum_mgmt/enum_mgmt_callbacks.h | 45 + .../mgmt/mcumgr/grp/img_mgmt/img_mgmt.h | 3 +- .../mcumgr/grp/img_mgmt/img_mgmt_callbacks.h | 56 + .../mcumgr/grp/os_mgmt/os_mgmt_callbacks.h | 24 + .../zephyr/mgmt/mcumgr/mgmt/callbacks.h | 35 +- .../include/zephyr/mgmt/mcumgr/mgmt/mgmt.h | 25 +- .../zephyr/mgmt/mcumgr/mgmt/mgmt_defines.h | 3 + .../include/zephyr/mgmt/mcumgr/smp/smp.h | 8 +- .../zephyr/mgmt/mcumgr/smp/smp_client.h | 2 +- .../zephyr/mgmt/mcumgr/transport/smp.h | 2 + .../zephyr/mgmt/mcumgr/transport/smp_bt.h | 19 + .../zephyr/mgmt/mcumgr/transport/smp_dummy.h | 2 +- .../include/zephyr/include/zephyr/mgmt/osdp.h | 6 +- .../zephyr/include/zephyr/misc/lorem_ipsum.h | 57 + .../zephyr/include/zephyr/modem/cmux.h | 2 +- .../zephyr/include/zephyr/modem/pipe.h | 10 +- .../zephyr/multi_heap/shared_multi_heap.h | 3 + .../include/zephyr/include/zephyr/net/buf.h | 2733 +-- .../zephyr/include/zephyr/net/capture.h | 2 + .../include/zephyr/include/zephyr/net/coap.h | 50 +- .../zephyr/include/zephyr/net/coap_client.h | 64 +- .../zephyr/include/zephyr/net/coap_mgmt.h | 2 + .../zephyr/include/zephyr/net/coap_service.h | 20 +- .../zephyr/net/conn_mgr_connectivity.h | 4 +- .../zephyr/net/conn_mgr_connectivity_impl.h | 4 +- .../include/zephyr/net/conn_mgr_monitor.h | 2 + .../zephyr/include/zephyr/net/dhcpv4.h | 2 + .../zephyr/include/zephyr/net/dhcpv4_server.h | 30 + .../zephyr/include/zephyr/net/dhcpv6.h | 2 + .../zephyr/include/zephyr/net/dns_resolve.h | 15 +- .../zephyr/include/zephyr/net/dns_sd.h | 14 +- .../include/zephyr/include/zephyr/net/dsa.h | 2 + .../include/zephyr/include/zephyr/net/dummy.h | 2 + .../zephyr/include/zephyr/net/ethernet.h | 31 +- .../include/zephyr/net/ethernet_bridge.h | 140 +- .../zephyr/include/zephyr/net/ethernet_mgmt.h | 2 + .../zephyr/include/zephyr/net/ethernet_vlan.h | 2 + .../include/zephyr/include/zephyr/net/gptp.h | 2 + .../zephyr/net/hdlc_rcp_if/hdlc_rcp_if.h | 77 + .../zephyr/include/zephyr/net/hostname.h | 34 +- .../zephyr/include/zephyr/net/http/hpack.h | 2 + .../zephyr/include/zephyr/net/http/method.h | 2 + .../zephyr/include/zephyr/net/http/server.h | 155 +- .../zephyr/include/zephyr/net/http/service.h | 24 +- .../zephyr/include/zephyr/net/http/status.h | 2 + .../include/zephyr/include/zephyr/net/icmp.h | 2 + .../zephyr/include/zephyr/net/ieee802154_ie.h | 2 +- .../include/zephyr/net/ieee802154_mgmt.h | 7 + .../include/zephyr/net/ieee802154_pkt.h | 22 + .../include/zephyr/net/ieee802154_radio.h | 61 +- .../zephyr/net/ieee802154_radio_openthread.h | 67 +- .../include/zephyr/include/zephyr/net/igmp.h | 2 + .../include/zephyr/include/zephyr/net/lldp.h | 2 + .../include/zephyr/include/zephyr/net/lwm2m.h | 140 +- .../zephyr/include/zephyr/net/lwm2m_path.h | 2 + .../include/zephyr/include/zephyr/net/mdio.h | 12 + .../include/zephyr/include/zephyr/net/mii.h | 11 + .../include/zephyr/include/zephyr/net/mld.h | 84 + .../zephyr/include/zephyr/net/mqtt_sn.h | 92 +- .../zephyr/include/zephyr/net/net_config.h | 2 + .../zephyr/include/zephyr/net/net_context.h | 37 +- .../zephyr/include/zephyr/net/net_core.h | 2 + .../zephyr/include/zephyr/net/net_event.h | 38 + .../zephyr/include/zephyr/net/net_if.h | 257 +- .../zephyr/include/zephyr/net/net_ip.h | 123 +- .../zephyr/include/zephyr/net/net_l2.h | 20 +- .../zephyr/include/zephyr/net/net_linkaddr.h | 2 + .../zephyr/include/zephyr/net/net_mgmt.h | 2 + .../zephyr/include/zephyr/net/net_offload.h | 4 +- .../zephyr/include/zephyr/net/net_pkt.h | 141 +- .../include/zephyr/net/net_pkt_filter.h | 6 + .../zephyr/include/zephyr/net/net_stats.h | 660 + .../zephyr/include/zephyr/net/net_time.h | 2 + .../zephyr/include/zephyr/net/net_timeout.h | 2 + .../include/zephyr/net/offloaded_netdev.h | 2 + .../zephyr/include/zephyr/net/openthread.h | 2 + .../include/zephyr/include/zephyr/net/phy.h | 8 +- .../include/zephyr/include/zephyr/net/ppp.h | 2 + .../include/zephyr/net/prometheus/collector.h | 177 + .../include/zephyr/net/prometheus/counter.h | 111 + .../include/zephyr/net/prometheus/formatter.h | 56 + .../include/zephyr/net/prometheus/gauge.h | 90 + .../include/zephyr/net/prometheus/histogram.h | 112 + .../include/zephyr/net/prometheus/label.h | 42 + .../include/zephyr/net/prometheus/metric.h | 76 + .../include/zephyr/net/prometheus/summary.h | 130 + .../zephyr/include/zephyr/net/promiscuous.h | 2 + .../include/zephyr/include/zephyr/net/ptp.h | 2 + .../zephyr/include/zephyr/net/ptp_time.h | 2 + .../include/zephyr/include/zephyr/net/sntp.h | 19 +- .../zephyr/include/zephyr/net/socket.h | 631 +- .../include/zephyr/net/socket_net_mgmt.h | 4 +- .../zephyr/include/zephyr/net/socket_poll.h | 6 + .../zephyr/include/zephyr/net/socket_select.h | 131 +- .../include/zephyr/net/socket_service.h | 35 +- .../zephyr/include/zephyr/net/socketcan.h | 4 +- .../include/zephyr/net/socketcan_utils.h | 3 +- .../include/zephyr/include/zephyr/net/tftp.h | 2 + .../include/zephyr/net/tls_credentials.h | 2 + .../zephyr/include/zephyr/net/trickle.h | 6 +- .../zephyr/include/zephyr/net/virtual.h | 5 + .../zephyr/include/zephyr/net/virtual_mgmt.h | 2 + .../zephyr/include/zephyr/net/websocket.h | 2 + .../include/zephyr/include/zephyr/net/wifi.h | 201 +- .../include/zephyr/net/wifi_credentials.h | 218 + .../zephyr/include/zephyr/net/wifi_mgmt.h | 583 +- .../zephyr/include/zephyr/net/wifi_nm.h | 2 + .../include/zephyr/include/zephyr/net/zperf.h | 2 + .../include/zephyr/include/zephyr/net_buf.h | 2731 ++ .../zephyr/include/zephyr/platform/hooks.h | 81 + .../include/zephyr/include/zephyr/pm/device.h | 17 +- .../include/zephyr/include/zephyr/pm/policy.h | 180 +- .../include/zephyr/include/zephyr/pm/state.h | 6 +- .../zephyr/include/zephyr/posix/dirent.h | 5 +- .../zephyr/include/zephyr/posix/fcntl.h | 9 +- .../include/zephyr/include/zephyr/posix/grp.h | 35 + .../zephyr/include/zephyr/posix/mqueue.h | 2 +- .../zephyr/include/zephyr/posix/poll.h | 3 + .../include/zephyr/posix/posix_features.h | 7 +- .../zephyr/include/zephyr/posix/posix_types.h | 83 +- .../zephyr/include/zephyr/posix/pthread.h | 18 +- .../include/zephyr/include/zephyr/posix/pwd.h | 36 + .../zephyr/include/zephyr/posix/sched.h | 3 +- .../zephyr/include/zephyr/posix/semaphore.h | 2 +- .../zephyr/include/zephyr/posix/signal.h | 37 +- .../zephyr/include/zephyr/posix/sys/select.h | 21 +- .../zephyr/include/zephyr/posix/sys/stat.h | 37 +- .../zephyr/include/zephyr/posix/sys/time.h | 1 + .../zephyr/include/zephyr/posix/time.h | 3 +- .../zephyr/include/zephyr/posix/unistd.h | 7 +- .../include/zephyr/include/zephyr/rtio/rtio.h | 108 +- .../zephyr/include/zephyr/settings/settings.h | 33 +- .../zephyr/include/zephyr/shell/shell.h | 108 +- .../include/zephyr/shell/shell_backend.h | 6 +- .../zephyr/include/zephyr/shell/shell_dummy.h | 6 +- .../include/zephyr/shell/shell_fprintf.h | 6 +- .../include/zephyr/shell/shell_history.h | 6 +- .../include/zephyr/shell/shell_log_backend.h | 6 +- .../zephyr/include/zephyr/shell/shell_mqtt.h | 6 +- .../zephyr/include/zephyr/shell/shell_rpmsg.h | 6 +- .../zephyr/include/zephyr/shell/shell_rtt.h | 6 +- .../include/zephyr/shell/shell_string_conv.h | 6 +- .../include/zephyr/shell/shell_telnet.h | 6 +- .../zephyr/include/zephyr/shell/shell_types.h | 6 +- .../zephyr/include/zephyr/shell/shell_uart.h | 6 +- .../include/zephyr/shell/shell_websocket.h | 151 + .../zephyr/include/zephyr/storage/flash_map.h | 66 +- .../include/zephyr/storage/stream_flash.h | 9 +- .../zephyr/include/zephyr/sys/atomic.h | 10 +- .../zephyr/include/zephyr/sys/cbprintf.h | 6 - .../include/zephyr/include/zephyr/sys/crc.h | 26 +- .../zephyr/include/zephyr/sys/errno_private.h | 3 +- .../zephyr/include/zephyr/sys/fdtable.h | 56 +- .../zephyr/include/zephyr/sys/libc-hooks.h | 4 +- .../zephyr/include/zephyr/sys/multi_heap.h | 26 + .../zephyr/include/zephyr/sys/poweroff.h | 2 - .../zephyr/include/zephyr/sys/printk-hooks.h | 38 + .../include/zephyr/include/zephyr/sys/rb.h | 4 +- .../zephyr/include/zephyr/sys/ring_buffer.h | 3 - .../include/zephyr/include/zephyr/sys/sem.h | 77 + .../zephyr/include/zephyr/sys/sys_heap.h | 9 + .../zephyr/include/zephyr/sys/timeutil.h | 3 + .../include/zephyr/include/zephyr/sys/util.h | 64 +- .../zephyr/include/zephyr/sys/util_internal.h | 2 +- .../include/zephyr/sys/util_internal_is_eq.h | 20485 ++++++++++++---- .../zephyr/include/zephyr/sys/util_macro.h | 30 +- .../include/zephyr/include/zephyr/sys_clock.h | 21 +- .../zephyr/include/zephyr/task_wdt/task_wdt.h | 6 +- .../zephyr/include/zephyr/toolchain/gcc.h | 14 + .../zephyr/include/zephyr/toolchain/mwdt.h | 10 - .../zephyr/include/zephyr/toolchain/xcc.h | 33 +- .../zephyr/include/zephyr/tracing/tracing.h | 303 + .../include/zephyr/tracing/tracing_macros.h | 8 +- .../include/zephyr/include/zephyr/types.h | 18 + .../include/zephyr/include/zephyr/usb/bos.h | 2 + .../zephyr/include/zephyr/usb/class/hid.h | 2 + .../include/zephyr/usb/class/usb_audio.h | 2 +- .../zephyr/include/zephyr/usb/class/usb_cdc.h | 28 + .../zephyr/include/zephyr/usb/class/usb_hid.h | 2 + .../include/zephyr/usb/class/usbd_hid.h | 2 + .../include/zephyr/usb/class/usbd_msc.h | 15 +- .../include/zephyr/usb/class/usbd_uac2.h | 35 + .../zephyr/include/zephyr/usb/msos_desc.h | 29 + .../zephyr/include/zephyr/usb/usb_ch9.h | 36 +- .../zephyr/include/zephyr/usb/usb_device.h | 2 + .../include/zephyr/include/zephyr/usb/usbd.h | 161 +- .../zephyr/include/zephyr/usb/usbd_msg.h | 5 + .../include/zephyr/include/zephyr/usb/usbh.h | 2 +- .../zephyr/include/zephyr/usb_c/tcpci.h | 788 + .../include/zephyr/xen/public/grant_table.h | 8 +- .../zephyr/include/zephyr/xen/public/memory.h | 4 +- .../zephyr/include/zephyr/xen/public/xen.h | 6 +- .../include/zephyr/include/zephyr/zbus/zbus.h | 147 +- .../zephyr/modules/cmsis/cmsis_core_a_r.h | 2 + .../zephyr/soc/st/stm32/stm32u0x/soc.h | 22 + .../zephyr/soc/st/stm32/stm32wb0x/soc.h | 33 + .../zephyr/soc/st/stm32/stm32wbax/soc.h | 5 +- .../modules/kernel_service/kernel_shell.h | 29 + .../zephyr/subsys/bluetooth/host/classic/at.h | 2 +- 915 files changed, 102622 insertions(+), 38258 deletions(-) create mode 100644 cores/arduino/abi.cpp create mode 100644 installed.json create mode 100644 libraries/SocketWrapper/WiFi.cpp create mode 100644 libraries/SocketWrapper/WiFi.h create mode 100644 libraries/SocketWrapper/ZephyrSSLClient.h create mode 100644 libraries/SocketWrapper/ZephyrUDP.h create mode 100644 libraries/SocketWrapper/utility/wl_definitions.h create mode 100644 libraries/Zephyr_SDRAM/examples/SDRAM_operations/SDRAM_operations.ino create mode 100644 libraries/Zephyr_SDRAM/library.properties create mode 100644 libraries/Zephyr_SDRAM/src/SDRAM.cpp create mode 100644 libraries/Zephyr_SDRAM/src/SDRAM.h create mode 100644 libraries/ea_malloc/ea_malloc.h create mode 100644 libraries/ea_malloc/ll.h create mode 100644 libraries/ea_malloc/malloc_freelist.c delete mode 100644 samples/analog_input/CMakeLists.txt delete mode 100644 samples/analog_input/README.rst delete mode 100644 samples/analog_input/prj.conf delete mode 100644 samples/analog_input/src/main.cpp delete mode 100644 samples/attach_interrupt/CMakeLists.txt delete mode 100644 samples/attach_interrupt/README.rst delete mode 100644 samples/attach_interrupt/prj.conf delete mode 100644 samples/attach_interrupt/src/main.cpp delete mode 100644 samples/blinky_arduino/CMakeLists.txt delete mode 100644 samples/blinky_arduino/README.rst delete mode 100644 samples/blinky_arduino/prj.conf delete mode 100644 samples/blinky_arduino/src/main.cpp delete mode 100644 samples/button_press_led/CMakeLists.txt delete mode 100644 samples/button_press_led/README.rst delete mode 100644 samples/button_press_led/prj.conf delete mode 100644 samples/button_press_led/src/main.cpp delete mode 100644 samples/fade/CMakeLists.txt delete mode 100644 samples/fade/README.rst delete mode 100644 samples/fade/prj.conf delete mode 100644 samples/fade/src/app.cpp delete mode 100644 samples/hello_arduino/CMakeLists.txt delete mode 100644 samples/hello_arduino/README.rst delete mode 100644 samples/hello_arduino/prj.conf delete mode 100644 samples/hello_arduino/src/app.cpp delete mode 100644 samples/i2cdemo/CMakeLists.txt delete mode 100644 samples/i2cdemo/README.rst delete mode 100644 samples/i2cdemo/prj.conf delete mode 100644 samples/i2cdemo/src/main.cpp delete mode 100644 samples/serial_event/CMakeLists.txt delete mode 100644 samples/serial_event/README.rst delete mode 100644 samples/serial_event/prj.conf delete mode 100644 samples/serial_event/src/app.cpp delete mode 100644 samples/spi_controller/CMakeLists.txt delete mode 100644 samples/spi_controller/README.rst delete mode 100644 samples/spi_controller/prj.conf delete mode 100644 samples/spi_controller/src/app.cpp delete mode 100644 samples/threads_arduino/CMakeLists.txt delete mode 100644 samples/threads_arduino/README.rst delete mode 100644 samples/threads_arduino/prj.conf delete mode 100644 samples/threads_arduino/src/main.cpp create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_radio.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sdio.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/audio/wm8904.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/clock_control/clock_control_nrf2_common.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ist3931.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/ssd1327_regs.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_xilinx_axi_dma.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/eeprom/eeprom_simulator_native.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/dwc_xgmac/eth_dwc_xgmac_priv.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_lan9250_priv.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_nxp_imx_netc_priv.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/phy/phy_dm8806_priv.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/firmware/scmi/mailbox.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/fpga/fpga_ice40_common.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_grgpio.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_max14906.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_max14916.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_max149x6.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_renesas_rz.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_nrfx_twim_common.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/apds9253/apds9253.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmp180/bmp180.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/jedec/jc42/jc42.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/memsic/mc3419/mc3419.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/memsic/mmc56x3/mmc56x3.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/nxp/fxls8974/fxls8974.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/nxp/p3t1755/p3t1755.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/renesas/isl29035/isl29035.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/sensirion/scd4x/scd4x.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lps2xdf/ilps22qs.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dsv16x/lsm6dsv16x_decoder.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dsv16x/lsm6dsv16x_rtio.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm9ds1/lsm9ds1.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/tmp1075/tmp1075.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/wsen/wsen_hids_2525020210002/wsen_hids_2525020210002.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_litex_common.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/adi_tmc/adi_tmc5xxx_common.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/adi_tmc/adi_tmc_reg.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/adi_tmc/adi_tmc_spi.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/step_dir_stepper_common.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb_c/tcpc/ps8xxx_priv.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb_c/tcpc/ucpd_numaker.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/infineon/airoc_whd_hal_common.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/coex.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/coex_struct.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/fmac_main.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/net_if.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/wifi_mgmt.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/wifi_mgmt_scan.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/wpa_supp_if.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/off_raw_tx/inc/off_raw_tx.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/src/wifi_util.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nxp/nxp_wifi_drv.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/comparator.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/fdtable.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/haptics.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/stepper.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arc/v2/vpx/arc_vpx.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/common/arch_inlines.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/elf.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/reg.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/multiboot_info.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/ccid.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/classic/avrcp.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/classic/classic.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/cs.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/brg_cfg.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/brg_cfg_cli.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/brg_cfg_srv.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/services/cts.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/coresight/cs_trace_defmt.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree/port-endpoint.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/clock_control_silabs.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/fake_comp.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/mcux_acmp.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/nrf_comp.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/nrf_lpcomp.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/clk.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/pinctrl.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/protocol.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/shmem.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/transport.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/util.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_pcal64xxa.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/haptics.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/haptics/drv2605.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/hdr_ddr.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/gpio_intc_stm32.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/aw9523b.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/mfd_ite_it8801.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/npm2100.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/misc/coresight/nrf_etr.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/misc/coresight/stmesp.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/pinctrl/pinctrl_nxp_port_common.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/pwm/pwm_fake.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/battery.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/mmc56x3.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/npm2100_vbat.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/scd4x.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/wsen_hids_2525020210002.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/spi/rtio.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/stepper.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/stepper/stepper_fake.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/stepper/stepper_trinamic.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/uart/uart_internal.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/uart_emul.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/udc_buf.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb_c/tcpci_priv.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/wifi/nrf_wifi/bus/qspi_if.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/wifi/nrf_wifi/bus/rpu_hw_if.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/wifi/nrf_wifi/off_raw_tx/off_raw_tx_api.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc-nrf54l.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc-v2.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc-v3.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/battery/battery.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/ch32v00x-clocks.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/esp32c2_clock.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/imx95_clock.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/npcm_clock.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/scg_k4.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/common-clock.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg21-clock.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg22-clock.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg23-clock.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg24-clock.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg27-clock.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f10x_clock.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32u0_clock.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wb0_clock.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32655_dma.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32662_dma.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32666_dma.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32670_dma.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32672_dma.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32675_dma.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32680_dma.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32690_dma.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max78002_dma.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gnss/u_blox_m8.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/nordic-npm2100-gpio.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/renesas-ra-gpio-ioport.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/renesas-rz-gpio.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/input/cst816s-gesture-codes.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-esp32c2-intmux.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/mfd/mfd_it8801_altctrl.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-domain-id-nrf9230.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-nrf-ficr-nrf9230-engb.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-owner-id-nrf9230.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-tddconf.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/ch32v003-pinctrl.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32c2-gpio-sigmap.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32c2-pinctrl.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/renesas/pinctrl-ra.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/renesas/pinctrl-rzg-common.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/si32-pinctrl.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs-pinctrl-dbus.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg21-pinctrl.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg22-pinctrl.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg24-pinctrl.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg27-pinctrl.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/power/imx_scu_rsrc.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/power/imx_spc.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/power/nordic-nrf-gpd.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pwm/pwm_ifx_cat1.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pwm/ra_pwm.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/regulator/npm2100.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/regulator/nrf5x.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/regulator/silabs_dcdc.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reserved-memory/nordic-owned-memory.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reset/rp2040_reset.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reset/stm32u0_reset.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reset/stm32wb0_reset.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/apds9253.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lsm9ds1.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/mc3419.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/tmp116.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/video/video-interfaces.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/fs/zms.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/input/input_touch.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/fs_loader.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/llext_internal.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_backend_ws.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_frontend_stmesp.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_frontend_stmesp_demux.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/math/interpolation.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit/autohandler.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit/config.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit/hawkbit.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/enum_mgmt/enum_mgmt.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/enum_mgmt/enum_mgmt_callbacks.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/misc/lorem_ipsum.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/hdlc_rcp_if/hdlc_rcp_if.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mld.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/collector.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/counter.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/formatter.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/gauge.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/histogram.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/label.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/metric.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/summary.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi_credentials.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net_buf.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/platform/hooks.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/grp.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/pwd.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_websocket.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/printk-hooks.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb_c/tcpci.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/soc/st/stm32/stm32u0x/soc.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/soc/st/stm32/stm32wb0x/soc.h create mode 100644 variants/arduino_giga_r1_m7/llext-edk/include/zephyr/subsys/shell/modules/kernel_service/kernel_shell.h diff --git a/cores/arduino/abi.cpp b/cores/arduino/abi.cpp new file mode 100644 index 00000000..aefb467b --- /dev/null +++ b/cores/arduino/abi.cpp @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2024 Arduino SA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +extern "C" void __cxa_pure_virtual(void) {} +extern "C" void __cxa_deleted_virtual(void) {} +extern "C" int __cxa_atexit(void (*func) (void *), void * arg, void * dso_handle) { + return 0; +} + +namespace std { + void __throw_length_error(const char* __s __attribute__((unused))) {} +}; + +extern "C" int strcmp(const char* s1, const char* s2) { + while(*s1 && (*s1 == *s2)) + { + s1++; + s2++; + } + return *(const unsigned char*)s1 - *(const unsigned char*)s2; +} diff --git a/firmwares/zephyr-arduino_giga_r1_m7.bin b/firmwares/zephyr-arduino_giga_r1_m7.bin index 159443f54b4d9d441f84aee7483b043241b6133f..71c62aa8e75bbb638a99858e42ef0c93c2fdaee3 100755 GIT binary patch delta 59365 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 diff --git a/firmwares/zephyr-arduino_giga_r1_m7.elf b/firmwares/zephyr-arduino_giga_r1_m7.elf index b79845095fc6844c79b416d5e724a1c8eaa2df63..6346f493c260ed2225f8750ac48411801dc7a4e1 100755 GIT binary patch literal 2521776 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

  • P7Rt!H@J2qMH6ODkv+a5od5en!dDF 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 xDTA&UgM9u$ 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%0AoN6W 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 z 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

    4jmWF4wSu!`R@N@iLR%Zm{D$B&PIwK%gT_#@V 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 K{~Hb9U;O{pBLR&7 literal 2368172 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

    jXnqejc13?q08U;#X{;JQ8m82=3})`b%? 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 z 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 z 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�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

    NmT#e>5E#Heu| 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 diff --git a/installed.json b/installed.json new file mode 100644 index 00000000..00e4b017 --- /dev/null +++ b/installed.json @@ -0,0 +1,4872 @@ +{ + "packages": [ + { + "name": "arduino", + "maintainer": "Arduino", + "websiteUrl": "http://www.arduino.cc/", + "Url": "https://downloads.arduino.cc/packages/package_index.tar.bz2", + "email": "packages@arduino.cc", + "platforms": [ + { + "name": "Arduino Zephyr Boards (llext)", + "architecture": "zephyr", + "version": "0.1.0", + "deprecated": false, + "category": "Arduino", + "url": "http://downloads.arduino.cc/cores/staging/arduino-core-zephyr-llext-0.1.0.tar.bz2", + "archiveFileName": "arduino-core-zephyr-llext-0.1.0.tar.bz2", + "checksum": "SHA-256:d9afefe59c86ad4a62136a045a88d536ff169eff29ea27294fda9731426f345e", + "size": "42593949", + "boards": [ + { + "name": "Arduino Giga" + }, + { + "name": "Arduino Nano 33 BLE" + }, + { + "name": "Arduino Portenta H7" + }, + { + "name": "Renesas EK_RA8D1" + }, + { + "name": "NXP FRDM MCXN947" + } + ], + "help": { + "online": "http://www.arduino.cc/en/Reference/HomePage" + }, + "toolsDependencies": [ + { + "packager": "zephyr", + "name": "arm-zephyr-eabi", + "version": "0.16.8" + }, + { + "packager": "arduino", + "name": "dfu-util", + "version": "0.11.0-arduino5" + }, + { + "packager": "arduino", + "name": "zephyr-post-build-tool", + "version": "0.0.2" + } + ], + "discoveryDependencies": [], + "monitorDependencies": [] + } + ], + "tools": [ + { + "name": "adb", + "version": "32.0.0", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/android/adb_r32.0.0-linux-aarch64.tar.bz2", + "archiveFileName": "adb_r32.0.0-linux-aarch64.tar.bz2", + "size": "2520745", + "checksum": "SHA-256:684b27537fbedfce5f4b310e7a0706c7274ef467bf8d227d1512ef6f4a5597fe" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/android/platform-tools_r32.0.0-darwin.zip", + "archiveFileName": "platform-tools_r32.0.0-darwin.zip", + "size": "19439685", + "checksum": "SHA-256:29f0163a8f5c2cea7b3bedf3ccaa9374513a2cd653f436b0debdb7c4974ba525" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/android/platform-tools_r32.0.0-windows.zip", + "archiveFileName": "platform-tools_r32.0.0-windows.zip", + "size": "12033552", + "checksum": "SHA-256:41f4c7512b32cbb3f8c624c20b56326abb692a6f169b03b4b63b6c5a6fdbb08c" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/android/adb_r32.0.0-linux64.tar.bz2", + "archiveFileName": "adb_r32.0.0-linux64.tar.bz2", + "size": "3171335", + "checksum": "SHA-256:a14c748d59a46145e053ed10404395db8ca5ac2ac5980a331771efc20be16d8d" + } + ] + }, + { + "name": "arduinoSTM32load", + "version": "2.0.0", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/arduino.org/arduinoSTM32load-2.0.0-linux_arm.tar.bz2", + "archiveFileName": "arduinoSTM32load-2.0.0-linux_arm.tar.bz2", + "size": "809480", + "checksum": "SHA-256:fc0d8058b57bda849e1ffc849f83f54b0b85f97954176db317da1c745c174e08" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/arduino.org/arduinoSTM32load-2.0.0-darwin_amd64.tar.bz2", + "archiveFileName": "arduinoSTM32load-2.0.0-darwin_amd64.tar.bz2", + "size": "807514", + "checksum": "SHA-256:92fb9714091850febaa9d159501cbca5ba68d03020e5e2d4eff596154040bfaa" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/arduino.org/arduinoSTM32load-2.0.0-linux_386.tar.bz2", + "archiveFileName": "arduinoSTM32load-2.0.0-linux_386.tar.bz2", + "size": "814283", + "checksum": "SHA-256:fad50abaaca034e6d647d09b042291b761982aabfd42b6156411c86e4f873ca7" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/arduino.org/arduinoSTM32load-2.0.0-windows_386.tar.bz2", + "archiveFileName": "arduinoSTM32load-2.0.0-windows_386.tar.bz2", + "size": "786335", + "checksum": "SHA-256:79467c0cde4b88c4884acb09445a2186af4e41f901eee56e99b5d89b7065d085" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino.org/arduinoSTM32load-2.0.0-linux_amd64.tar.bz2", + "archiveFileName": "arduinoSTM32load-2.0.0-linux_amd64.tar.bz2", + "size": "818885", + "checksum": "SHA-256:0ed5cf1ea05fe6c33567817c54daf9c296d058a3607c428e0b0bd9aad89b9809" + } + ] + }, + { + "name": "avr-gcc", + "version": "4.9.2-atmel3.5.4-arduino2", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.4-arduino2-armhf-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.9.2-atmel3.5.4-arduino2-armhf-pc-linux-gnu.tar.bz2", + "size": "27764772", + "checksum": "SHA-256:ee36009e19bd238d1f6351cbc9aa5db69714761f67dec4c1d69d5d5d7758720c" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.4-arduino2-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avr-gcc-4.9.2-atmel3.5.4-arduino2-i386-apple-darwin11.tar.bz2", + "size": "28574644", + "checksum": "SHA-256:67b3ed3555eacf0b4fc6f62240773b9f0220171fe4de26bb8d711547fc884730" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.4-arduino2-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.9.2-atmel3.5.4-arduino2-i686-pc-linux-gnu.tar.bz2", + "size": "29723974", + "checksum": "SHA-256:63a9d4cebbac06fd5fa8f48a2e2ba7d513837dcddc97f560129b4e466af901b5" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.4-arduino2-i686-mingw32.zip", + "archiveFileName": "avr-gcc-4.9.2-atmel3.5.4-arduino2-i686-mingw32.zip", + "size": "44386446", + "checksum": "SHA-256:6044551cd729d88ea6ffcccf10aad1934c5b164d61f4f5890b0e78524ffff853" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.4-arduino2-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.9.2-atmel3.5.4-arduino2-x86_64-pc-linux-gnu.tar.bz2", + "size": "30374404", + "checksum": "SHA-256:19480217f1524d78467b83cd742f503182bbcc76b5440093261f146828aa588c" + } + ] + }, + { + "name": "avr-gcc", + "version": "4.8.1-arduino5", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino5-armhf-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.8.1-arduino5-armhf-pc-linux-gnu.tar.bz2", + "size": "24403768", + "checksum": "SHA-256:c8ffcd2db7a651b48ab4ea19db4b34fbae3e7f0210a0f294592af2bdabf2154b" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino5-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avr-gcc-4.8.1-arduino5-i386-apple-darwin11.tar.bz2", + "size": "24437400", + "checksum": "SHA-256:111b3ef00d737d069eb237a8933406cbb928e4698689e24663cffef07688a901" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino5-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.8.1-arduino5-i686-pc-linux-gnu.tar.bz2", + "size": "25882375", + "checksum": "SHA-256:7648b7f549b37191da0b0be53bae791b652f82ac3cb4e7877f85075aaf32141f" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino5-i686-mingw32.zip", + "archiveFileName": "avr-gcc-4.8.1-arduino5-i686-mingw32.zip", + "size": "46044779", + "checksum": "SHA-256:d4303226a7b41d3c445d901b5aa5903458def3fc7b7ff4ffef37cabeb37d424d" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino5-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.8.1-arduino5-x86_64-pc-linux-gnu.tar.bz2", + "size": "27093036", + "checksum": "SHA-256:9054fcc174397a419ba56c4ce1bfcbcad275a6a080cc144905acc9b0351ee9cc" + } + ] + }, + { + "name": "avr-gcc", + "version": "4.8.1-arduino3", + "systems": [ + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino3-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avr-gcc-4.8.1-arduino3-i386-apple-darwin11.tar.bz2", + "size": "24447175", + "checksum": "SHA-256:28e207c66b3dc405367d0c5e68ce3c278e5ec3abb0e4974e7927fe0f9a532c40" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino3-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.8.1-arduino3-i686-pc-linux-gnu.tar.bz2", + "size": "28768022", + "checksum": "SHA-256:37796548ba9653267568f959cd8c7ebfe5b4bce4599898cf9f876d64e616cb87" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino3-i686-mingw32.zip", + "archiveFileName": "avr-gcc-4.8.1-arduino3-i686-mingw32.zip", + "size": "46046917", + "checksum": "SHA-256:d6f0527793f9800f060408392a99eb290ed205730edbae43a1a25cbf6b6b588f" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino3-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.8.1-arduino3-x86_64-pc-linux-gnu.tar.bz2", + "size": "30556996", + "checksum": "SHA-256:028340abec6eb3085b82404dfc7ed143e1bb05b2da961b539ddcdba4a6f65533" + } + ] + }, + { + "name": "avr-gcc", + "version": "4.8.1-arduino2", + "systems": [ + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino2-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avr-gcc-4.8.1-arduino2-i386-apple-darwin11.tar.bz2", + "size": "24443285", + "checksum": "SHA-256:c19a7526235c364d7f62ec1a993d9b495973ba1813869ccf0241c65905896852" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino2-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.8.1-arduino2-i686-pc-linux-gnu.tar.bz2", + "size": "25876628", + "checksum": "SHA-256:2d701b4efbc8cec62dc299cde01730c5eebcf23d7e4393db8cf7744a9bf1d3de" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino2-i686-mingw32.zip", + "archiveFileName": "avr-gcc-4.8.1-arduino2-i686-mingw32.zip", + "size": "46046691", + "checksum": "SHA-256:2eafb49fb803fa4d2c32d35e24c0b372fcd520ca0a790fa537a847179e382000" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.8.1-arduino2-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.8.1-arduino2-x86_64-pc-linux-gnu.tar.bz2", + "size": "27152002", + "checksum": "SHA-256:24a931877bee5f36dc00a88877219a6d2f6a1fb7abb989fd04556b8432d2e14e" + } + ] + }, + { + "name": "avr-gcc", + "version": "7.3.0-atmel3.6.1-arduino7", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-aarch64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino7-aarch64-pc-linux-gnu.tar.bz2", + "size": "38045723", + "checksum": "SHA-256:03d322b9df6da17289e9e7c6233c34a8535d9c645c19efc772ba19e56914f339" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-arm-linux-gnueabihf.tar.bz2", + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino7-arm-linux-gnueabihf.tar.bz2", + "size": "34683056", + "checksum": "SHA-256:3903553d035da59e33cff9941b857c3cb379cb0638105dfdf69c97f0acc8e7b5" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino7-i686-pc-linux-gnu.tar.bz2", + "size": "37176991", + "checksum": "SHA-256:954bbffb33545bcdcd473af993da2980bf32e8461ff55a18e0eebc7b2ef69a4c" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-i686-w64-mingw32.zip", + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino7-i686-w64-mingw32.zip", + "size": "52519412", + "checksum": "SHA-256:a54f64755fff4cb792a1495e5defdd789902a2a3503982e81b898299cf39800e" + }, + { + "host": "x86_64-apple-darwin14", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-x86_64-apple-darwin14.tar.bz2", + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino7-x86_64-apple-darwin14.tar.bz2", + "size": "36684546", + "checksum": "SHA-256:f6ed2346953fcf88df223469088633eb86de997fa27ece117fd1ef170d69c1f8" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino7-x86_64-pc-linux-gnu.tar.bz2", + "size": "37630618", + "checksum": "SHA-256:bd8c37f6952a2130ac9ee32c53f6a660feb79bee8353c8e289eb60fdcefed91e" + } + ] + }, + { + "name": "avr-gcc", + "version": "7.3.0-atmel3.6.1-arduino5", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino5-aarch64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino5-aarch64-pc-linux-gnu.tar.bz2", + "size": "39381972", + "checksum": "SHA-256:dd9c70190be370a44fb47dab1514de6d8852b861dfa527964b65c740d8d50c10" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino5-arm-linux-gnueabihf.tar.bz2", + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino5-arm-linux-gnueabihf.tar.bz2", + "size": "34462042", + "checksum": "SHA-256:f4acd5531c6b82c715e2edfa0aadb13fb718b4095b3ea1aa1f7fbde680069639" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino5-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino5-i686-pc-linux-gnu.tar.bz2", + "size": "38710087", + "checksum": "SHA-256:2ff12739d7ed09688d6b3c2c126e8df69b5bda1a07ab558799f0e576571e0e1d" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino5-i686-w64-mingw32.zip", + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino5-i686-w64-mingw32.zip", + "size": "53727984", + "checksum": "SHA-256:6d4a5d089a36e5b5252befc73da204555b49e376ce7577ee19ca7f028b295830" + }, + { + "host": "x86_64-apple-darwin14", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino5-x86_64-apple-darwin14.tar.bz2", + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino5-x86_64-apple-darwin14.tar.bz2", + "size": "38492678", + "checksum": "SHA-256:f48706317f04452544ab90e75bd1bb193f8af2cb1002f53aa702f27202c1b38f" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino5-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino5-x86_64-pc-linux-gnu.tar.bz2", + "size": "39114120", + "checksum": "SHA-256:3effed8ffa1978b6e4a46f1aa2acc629e440b4d77244f71f9b79a916025206fb" + } + ] + }, + { + "name": "avr-gcc", + "version": "4.9.2-atmel3.5.3-arduino", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino-armhf-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.9.2-atmel3.5.3-arduino-armhf-pc-linux-gnu.tar.bz2", + "size": "27400001", + "checksum": "SHA-256:02dba9ee77694c23a4c304416a3808949c8faedf07f25a225a4189d850615ec6" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avr-gcc-4.9.2-atmel3.5.3-arduino-i386-apple-darwin11.tar.bz2", + "size": "27046965", + "checksum": "SHA-256:adeee70be27cc3ee0e4b9e844610d9c534c7b21dae24ec3fa49808c2f04958de" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.9.2-atmel3.5.3-arduino-i686-pc-linux-gnu.tar.bz2", + "size": "29077606", + "checksum": "SHA-256:fe0bb1d6369694779ceb671d457ccadbeafe855a11f6746b7db20055cea4df33" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino-i686-mingw32.zip", + "archiveFileName": "avr-gcc-4.9.2-atmel3.5.3-arduino-i686-mingw32.zip", + "size": "43847566", + "checksum": "SHA-256:445ce3117e87be7e196809fbbea373976160689b6d4b43dbf185eb4c914d1469" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.9.2-atmel3.5.3-arduino-x86_64-pc-linux-gnu.tar.bz2", + "size": "29904544", + "checksum": "SHA-256:0711e885c0430859e7fea3831af8c69a0c25f92a90ecfda9281799a0acec7455" + } + ] + }, + { + "name": "avr-gcc", + "version": "5.4.0-atmel3.6.1-arduino2", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-5.4.0-atmel3.6.1-arduino2-aarch64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-5.4.0-atmel3.6.1-arduino2-aarch64-pc-linux-gnu.tar.bz2", + "size": "33141295", + "checksum": "SHA-256:0fa9e4f2d6d09782dbc84dd91a302849cde2f192163cb9f29484c5f32785269a" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avr-gcc-5.4.0-atmel3.6.1-arduino2-armhf-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-5.4.0-atmel3.6.1-arduino2-armhf-pc-linux-gnu.tar.bz2", + "size": "31449123", + "checksum": "SHA-256:6741f95cc3182a8729cf9670eb13d8dc5a19e881639ca61e53a2d78346a4e99f" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/avr-gcc-5.4.0-atmel3.6.1-arduino2-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avr-gcc-5.4.0-atmel3.6.1-arduino2-i386-apple-darwin11.tar.bz2", + "size": "31894498", + "checksum": "SHA-256:abc50137543ba73e227b4d1b8510fff50a474bacd24f2c794f852904963849f8" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-5.4.0-atmel3.6.1-arduino2-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-5.4.0-atmel3.6.1-arduino2-i686-pc-linux-gnu.tar.bz2", + "size": "33022916", + "checksum": "SHA-256:51f87e04f3cdaa73565c751051ac118e02904ad8478f1475b300e1bffcd5538f" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avr-gcc-5.4.0-atmel3.6.1-arduino2-i686-w64-mingw32.zip", + "archiveFileName": "avr-gcc-5.4.0-atmel3.6.1-arduino2-i686-w64-mingw32.zip", + "size": "45923772", + "checksum": "SHA-256:7eb5691a379b547798fae535b05d68bc02d3969f12d051b8a5a5f2f350ab0a7f" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-5.4.0-atmel3.6.1-arduino2-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-5.4.0-atmel3.6.1-arduino2-x86_64-pc-linux-gnu.tar.bz2", + "size": "33522375", + "checksum": "SHA-256:05422b0d73b10357c12ea938f02cf50529422b89a4722756e70024aed3e69185" + } + ] + }, + { + "name": "avr-gcc", + "version": "4.9.2-atmel3.5.3-arduino2", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino2-armhf-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.9.2-atmel3.5.3-arduino2-armhf-pc-linux-gnu.tar.bz2", + "size": "27400889", + "checksum": "SHA-256:77f300d519bc6b9a25df17b36cb303218e9a258c059b2f6bff8f71a0d8f96821" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino2-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avr-gcc-4.9.2-atmel3.5.3-arduino2-i386-apple-darwin11.tar.bz2", + "size": "27048070", + "checksum": "SHA-256:311258af188defe24a4b341e4e1f4dc93ca6c80516d3e3b55a2fc07a7050248b" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino2-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.9.2-atmel3.5.3-arduino2-i686-pc-linux-gnu.tar.bz2", + "size": "29292729", + "checksum": "SHA-256:f108951e7c4dc90926d1fc76cc27549f6ea63c702a2bb7ff39647a19ae86ec68" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino2-i686-mingw32.zip", + "archiveFileName": "avr-gcc-4.9.2-atmel3.5.3-arduino2-i686-mingw32.zip", + "size": "43847945", + "checksum": "SHA-256:f8e6ede8746c70be01ec79a30803277cd94360cc5b2e104762da0fbcf536fcc6" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avr-gcc-4.9.2-atmel3.5.3-arduino2-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avr-gcc-4.9.2-atmel3.5.3-arduino2-x86_64-pc-linux-gnu.tar.bz2", + "size": "29882960", + "checksum": "SHA-256:3903a6d1bb9fdd91727e504b5993d5501f119bcb7f99f7aee98a2101e5629188" + } + ] + }, + { + "name": "imgtool", + "version": "1.8.0-arduino.2", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "https://downloads.arduino.cc/tools/imgtool_1.8.0-arduino.2_Linux_ARM64.tar.gz", + "archiveFileName": "imgtool_1.8.0-arduino.2_Linux_ARM64.tar.gz", + "size": "15655944", + "checksum": "SHA-256:cb0341f016e100833c0fd28c4215544d4056b195efebe523288bde9fed80445f" + }, + { + "host": "arm-linux-gnueabihf", + "url": "https://downloads.arduino.cc/tools/imgtool_1.8.0-arduino.2_Linux_ARMv6.tar.gz", + "archiveFileName": "imgtool_1.8.0-arduino.2_Linux_ARMv6.tar.gz", + "size": "13482271", + "checksum": "SHA-256:a215fc2fbd4f82194fdbd2fcb0e2f017859a68e915d4da031df824e1e7134b87" + }, + { + "host": "i386-apple-darwin11", + "url": "https://downloads.arduino.cc/tools/imgtool_1.8.0-arduino.2_macOS_64bit.tar.gz", + "archiveFileName": "imgtool_1.8.0-arduino.2_macOS_64bit.tar.gz", + "size": "8454939", + "checksum": "SHA-256:d23daba045f46754bfa466f63199b3e17936de716a08502a369ab4a9c3615fda" + }, + { + "host": "i686-linux-gnu", + "url": "https://downloads.arduino.cc/tools/imgtool_1.8.0-arduino.2_Linux_32bit.tar.gz", + "archiveFileName": "imgtool_1.8.0-arduino.2_Linux_32bit.tar.gz", + "size": "13881242", + "checksum": "SHA-256:4b58a23bc7c41268e113e25afba4dccaa477058fca94eea8749b315c7b7d2a8b" + }, + { + "host": "i686-mingw32", + "url": "https://downloads.arduino.cc/tools/imgtool_1.8.0-arduino.2_Windows_32bit.zip", + "archiveFileName": "imgtool_1.8.0-arduino.2_Windows_32bit.zip", + "size": "6744516", + "checksum": "SHA-256:9e365727801229ba4775974f6c648711da1a06961bb9bef7546a11080ea25420" + }, + { + "host": "x86_64-linux-gnu", + "url": "https://downloads.arduino.cc/tools/imgtool_1.8.0-arduino.2_Linux_64bit.tar.gz", + "archiveFileName": "imgtool_1.8.0-arduino.2_Linux_64bit.tar.gz", + "size": "15579636", + "checksum": "SHA-256:062d9e3ac1066a7d3e345c9d105858aeff3e3b73e12bbb6c0c5d3e6761d52577" + }, + { + "host": "x86_64-mingw32", + "url": "https://downloads.arduino.cc/tools/imgtool_1.8.0-arduino.2_Windows_64bit.zip", + "archiveFileName": "imgtool_1.8.0-arduino.2_Windows_64bit.zip", + "size": "8416009", + "checksum": "SHA-256:60d77da618b785345fc7ce2529bcb01c7195371b8e65a11abbd804c26ffd7df4" + } + ] + }, + { + "name": "imgtool", + "version": "1.8.0-arduino.1", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "https://downloads.arduino.cc/tools/imgtool_1.8.0-arduino.1_Linux_ARM64.tar.gz", + "archiveFileName": "imgtool_1.8.0-arduino.1_Linux_ARM64.tar.gz", + "size": "15650801", + "checksum": "SHA-256:fad64d46a2d10d225d21fa6cab1cbd4511cbe0028b67b18c460656bcc203538c" + }, + { + "host": "arm-linux-gnueabihf", + "url": "https://downloads.arduino.cc/tools/imgtool_1.8.0-arduino.1_Linux_ARMv6.tar.gz", + "archiveFileName": "imgtool_1.8.0-arduino.1_Linux_ARMv6.tar.gz", + "size": "13477544", + "checksum": "SHA-256:bbd8136d9d67e2db81360df8d435a899f8b231247719b7313b7b2c920e85c4d7" + }, + { + "host": "i386-apple-darwin11", + "url": "https://downloads.arduino.cc/tools/imgtool_1.8.0-arduino.1_macOS_64bit.tar.gz", + "archiveFileName": "imgtool_1.8.0-arduino.1_macOS_64bit.tar.gz", + "size": "8448535", + "checksum": "SHA-256:8002d8a017bbd994328f3ec7f0af007c1a5bc45d694860148870972fb3f3a5e8" + }, + { + "host": "i686-linux-gnu", + "url": "https://downloads.arduino.cc/tools/imgtool_1.8.0-arduino.1_Linux_32bit.tar.gz", + "archiveFileName": "imgtool_1.8.0-arduino.1_Linux_32bit.tar.gz", + "size": "13875969", + "checksum": "SHA-256:354343b2f6b91f463553ffd48bc4af3b91c897e4ac79ea43551982c9b3afeade" + }, + { + "host": "i686-mingw32", + "url": "https://downloads.arduino.cc/tools/imgtool_1.8.0-arduino.1_Windows_32bit.zip", + "archiveFileName": "imgtool_1.8.0-arduino.1_Windows_32bit.zip", + "size": "6735777", + "checksum": "SHA-256:42d4fbf70a390c84a59a19db166b74d0fb231ff729d9c56775b4e7cc5055cef3" + }, + { + "host": "x86_64-linux-gnu", + "url": "https://downloads.arduino.cc/tools/imgtool_1.8.0-arduino.1_Linux_64bit.tar.gz", + "archiveFileName": "imgtool_1.8.0-arduino.1_Linux_64bit.tar.gz", + "size": "15574228", + "checksum": "SHA-256:12c3c5b04bf53bea3baccf4072cbffaf9e9c4901a1a9ff77d611eb3c2db2ca1f" + }, + { + "host": "x86_64-mingw32", + "url": "https://downloads.arduino.cc/tools/imgtool_1.8.0-arduino.1_Windows_64bit.zip", + "archiveFileName": "imgtool_1.8.0-arduino.1_Windows_64bit.zip", + "size": "8411018", + "checksum": "SHA-256:9c600c5ca22c50a6eb6b9d6a870d486710be4997060fe9cbacdabd968daacc87" + } + ] + }, + { + "name": "imgtool", + "version": "1.8.0-arduino", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/imgtool_1.8.0-rc1_Linux_ARM64.tar.gz", + "archiveFileName": "imgtool_1.8.0-rc1_Linux_ARM64.tar.gz", + "size": "15679158", + "checksum": "SHA-256:b893ac88bcf3f4da0af05fa31f8af43a2d29ef5ecef0bd4ba6fb66a0b2e360f1" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/imgtool_1.8.0-rc1_Linux_ARMv6.tar.gz", + "archiveFileName": "imgtool_1.8.0-rc1_Linux_ARMv6.tar.gz", + "size": "13500219", + "checksum": "SHA-256:dff39f8a884d4c5f98b5ac0ae075eaba35bf2d0b189c633c2723fc12170e7ea0" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/imgtool_1.8.0-rc1_macOS_64bit.tar.gz", + "archiveFileName": "imgtool_1.8.0-rc1_macOS_64bit.tar.gz", + "size": "8425545", + "checksum": "SHA-256:6129c767c1b395c809b79aa2bd75fd0ce09544ff6d7ca20b330fac703efe3fc4" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/imgtool_1.8.0-rc1_Linux_32bit.tar.gz", + "archiveFileName": "imgtool_1.8.0-rc1_Linux_32bit.tar.gz", + "size": "13906205", + "checksum": "SHA-256:0b95b98c0e51a91512b3bfa10d3178315af1a1cd9e3b4982d0c9459ef84614b1" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/imgtool_1.8.0-rc1_Windows_32bit.zip", + "archiveFileName": "imgtool_1.8.0-rc1_Windows_32bit.zip", + "size": "6736497", + "checksum": "SHA-256:1177275ca93ce6bfd3cc64f68837b9f6b8d8a1592a6fbcfa643b9ccf35b7879a" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/tools/imgtool_1.8.0-rc1_Windows_64bit.zip", + "archiveFileName": "imgtool_1.8.0-rc1_Windows_64bit.zip", + "size": "8409007", + "checksum": "SHA-256:c51b62ff173887faa2d4e94e77777bac274ba898ae39bec0082b6327a011115b" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/imgtool_1.8.0-rc1_Linux_64bit.tar.gz", + "archiveFileName": "imgtool_1.8.0-rc1_Linux_64bit.tar.gz", + "size": "15591995", + "checksum": "SHA-256:92222eb8023fae0877da2e9d87dd2187fa9b82c0543330ab47a4a67bc0c89cae" + } + ] + }, + { + "name": "portenta-c33-fwuploader-plugin", + "version": "1.0.0", + "systems": [ + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/portenta-c33-fwuploader-plugin/portenta-c33-fwuploader-plugin_1.0.0_Windows_64bit.zip", + "archiveFileName": "portenta-c33-fwuploader-plugin_1.0.0_Windows_64bit.zip", + "size": "4334081", + "checksum": "SHA-256:ef8376c5086845dadad84cb18d4b9deded05bf3629c3cd508544e21159322faf" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/portenta-c33-fwuploader-plugin/portenta-c33-fwuploader-plugin_1.0.0_macOS_64bit.tar.gz", + "archiveFileName": "portenta-c33-fwuploader-plugin_1.0.0_macOS_64bit.tar.gz", + "size": "4084329", + "checksum": "SHA-256:fc2f3031aada65ce198acf156fc48542f68e3f5bc333a7afb90bf77c98bdb9b0" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/portenta-c33-fwuploader-plugin/portenta-c33-fwuploader-plugin_1.0.0_Linux_64bit.tar.gz", + "archiveFileName": "portenta-c33-fwuploader-plugin_1.0.0_Linux_64bit.tar.gz", + "size": "4132728", + "checksum": "SHA-256:04cab94965341e932a35fab698a2f0411922f05f3d48e6b5eb6b808ae5000b52" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/portenta-c33-fwuploader-plugin/portenta-c33-fwuploader-plugin_1.0.0_Windows_64bit.zip", + "archiveFileName": "portenta-c33-fwuploader-plugin_1.0.0_Windows_64bit.zip", + "size": "4334081", + "checksum": "SHA-256:ef8376c5086845dadad84cb18d4b9deded05bf3629c3cd508544e21159322faf" + } + ] + }, + { + "name": "uno-r4-wifi-fwuploader-plugin", + "version": "1.0.0", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/uno-r4-wifi-fwuploader-plugin_1.0.0_Linux_ARM64.tar.gz", + "archiveFileName": "uno-r4-wifi-fwuploader-plugin_1.0.0_Linux_ARM64.tar.gz", + "size": "4460245", + "checksum": "SHA-256:d021c9981fc3d91b6c5ffc449ddb8364d263d2c73c0c3c54c05eab3274b646c6" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/uno-r4-wifi-fwuploader-plugin_1.0.0_Linux_ARMv6.tar.gz", + "archiveFileName": "uno-r4-wifi-fwuploader-plugin_1.0.0_Linux_ARMv6.tar.gz", + "size": "4566072", + "checksum": "SHA-256:ce645ca45773d9297d1b4c3f8a5a3572c019c7279b5d7d671f03a1ba1acde951" + }, + { + "host": "arm64-apple-darwin", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/uno-r4-wifi-fwuploader-plugin_1.0.0_macOS_ARM64.tar.gz", + "archiveFileName": "uno-r4-wifi-fwuploader-plugin_1.0.0_macOS_ARM64.tar.gz", + "size": "4782730", + "checksum": "SHA-256:e47af33debce4b476047f5789d62d253401ba91c4633e1c4569652031bcb9c38" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/uno-r4-wifi-fwuploader-plugin_1.0.0_Linux_32bit.tar.gz", + "archiveFileName": "uno-r4-wifi-fwuploader-plugin_1.0.0_Linux_32bit.tar.gz", + "size": "4804225", + "checksum": "SHA-256:3a0cf3a35d2cb5afd046e60c441cb58805b2cac4e49fd9da57f95c80283ced55" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/uno-r4-wifi-fwuploader-plugin_1.0.0_Windows_32bit.zip", + "archiveFileName": "uno-r4-wifi-fwuploader-plugin_1.0.0_Windows_32bit.zip", + "size": "5074405", + "checksum": "SHA-256:e49eb41199c2fa6751448265ba9dbbe41f5b8a544f982d7d36a7746dca746565" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/uno-r4-wifi-fwuploader-plugin_1.0.0_macOS_64bit.tar.gz", + "archiveFileName": "uno-r4-wifi-fwuploader-plugin_1.0.0_macOS_64bit.tar.gz", + "size": "5426761", + "checksum": "SHA-256:f5334ee385e47735121ae568a31ca03dc0603da1132f2ec4316bf904eedc72de" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/uno-r4-wifi-fwuploader-plugin_1.0.0_Linux_64bit.tar.gz", + "archiveFileName": "uno-r4-wifi-fwuploader-plugin_1.0.0_Linux_64bit.tar.gz", + "size": "4856595", + "checksum": "SHA-256:f17f088b6dfa5e292b9350c76c56aeb465d2b4acbd866815a13f947e23342a1f" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/uno-r4-wifi-fwuploader-plugin_1.0.0_Windows_64bit.zip", + "archiveFileName": "uno-r4-wifi-fwuploader-plugin_1.0.0_Windows_64bit.zip", + "size": "5085458", + "checksum": "SHA-256:2b9aade645b1fb753a8120fbaec747d6b8fddf1fc3dd13e6147ba078765a92cf" + } + ] + }, + { + "name": "arduino-fwuploader", + "version": "2.1.0", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.1.0_Linux_ARM64.tar.gz", + "archiveFileName": "arduino-fwuploader_2.1.0_Linux_ARM64.tar.gz", + "size": "6374511", + "checksum": "SHA-256:ac32bf7c2b28e71fcfb06ea485775b43712bbd63f07eee4bbcd0ea197c1b475e" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.1.0_Linux_ARM.tar.gz", + "archiveFileName": "arduino-fwuploader_2.1.0_Linux_ARM.tar.gz", + "size": "6317910", + "checksum": "SHA-256:3b707df47b8b33a8fc9756838999c77e4605b79b8b2acadb4162e6a9d7aa9e79" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.1.0_macOS_64bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.1.0_macOS_64bit.tar.gz", + "size": "6926299", + "checksum": "SHA-256:6979551a7a84417ec7f5f04fa6b75bec89c12d3891f061c1843cec43957d4d9a" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.1.0_Linux_32bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.1.0_Linux_32bit.tar.gz", + "size": "6592713", + "checksum": "SHA-256:fe9a8ac10841ba9855aee79b487b0c3620930e25fceedc635d90996cc4f8745a" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.1.0_Windows_32bit.zip", + "archiveFileName": "arduino-fwuploader_2.1.0_Windows_32bit.zip", + "size": "6770325", + "checksum": "SHA-256:70c3f58074aa04bfe0392f504a24c39f196b85d93fdd41accf75f5e9eda58441" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.1.0_Windows_64bit.zip", + "archiveFileName": "arduino-fwuploader_2.1.0_Windows_64bit.zip", + "size": "6994066", + "checksum": "SHA-256:8c2f7b1b76502323fc2fb0eb43375a2d88509ddf084b6a9836a138f0fb4d1c9b" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.1.0_Linux_64bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.1.0_Linux_64bit.tar.gz", + "size": "6909998", + "checksum": "SHA-256:7b375b7cc1618027c609e76e97c77cc2036e7c7a95e10db743261e2f397f04db" + } + ] + }, + { + "name": "arduino-fwuploader", + "version": "2.0.1", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.0.1_Linux_ARM64.tar.gz", + "archiveFileName": "arduino-fwuploader_2.0.1_Linux_ARM64.tar.gz", + "size": "6311327", + "checksum": "SHA-256:ab280543697379be604a59f3db4694e80d5a85fee61b7073dba8b2df31989404" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.0.1_Linux_ARM.tar.gz", + "archiveFileName": "arduino-fwuploader_2.0.1_Linux_ARM.tar.gz", + "size": "6296962", + "checksum": "SHA-256:de2759ff0cc560e651658f9d7cebebada9bb246281e9370d3362ce0a08353ff6" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.0.1_macOS_64bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.0.1_macOS_64bit.tar.gz", + "size": "6802383", + "checksum": "SHA-256:11b907d0ff0be73f9b7ef3a9b90b1265fc416c22aee10d724354668168550fb1" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.0.1_Linux_32bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.0.1_Linux_32bit.tar.gz", + "size": "6592200", + "checksum": "SHA-256:c1df11f9096955ceca5ae0fb0d16394408c373a72e603034f96ddbd48bc6af0a" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.0.1_Windows_32bit.zip", + "archiveFileName": "arduino-fwuploader_2.0.1_Windows_32bit.zip", + "size": "6790043", + "checksum": "SHA-256:7d99c03d4b8a127b6f4acf40e89fe0fbd4c3bb7fe11d2b4c89ca9200e8993f73" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.0.1_Windows_64bit.zip", + "archiveFileName": "arduino-fwuploader_2.0.1_Windows_64bit.zip", + "size": "6885151", + "checksum": "SHA-256:94f120eb2d5172e9afc03e3cd04d80e5e5312927065cd53c3fef3926b4e3e398" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.0.1_Linux_64bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.0.1_Linux_64bit.tar.gz", + "size": "6787210", + "checksum": "SHA-256:fd7408d52c4b187e00ac60a2ebc37150ab680989a992168fcab524caa0e4519b" + } + ] + }, + { + "name": "arduino-fwuploader", + "version": "2.4.1", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.1_Linux_ARM64.tar.gz", + "archiveFileName": "arduino-fwuploader_2.4.1_Linux_ARM64.tar.gz", + "size": "9180830", + "checksum": "SHA-256:00412715a4d1dca4b2a524bfd9f856bc0aafbdd1d14c8b805543fcf9d632ca18" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.1_Linux_ARMv6.tar.gz", + "archiveFileName": "arduino-fwuploader_2.4.1_Linux_ARMv6.tar.gz", + "size": "9272850", + "checksum": "SHA-256:59c59919c4619b9fa36458fa3983d969665214a9711202370ab064376972f224" + }, + { + "host": "arm64-apple-darwin", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.1_macOS_ARM64.tar.gz", + "archiveFileName": "arduino-fwuploader_2.4.1_macOS_ARM64.tar.gz", + "size": "9292450", + "checksum": "SHA-256:82f45d960b1d0d61300232e47c394c865237c8d70a9bf85285de4a9e0ce25e72" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.1_Linux_32bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.4.1_Linux_32bit.tar.gz", + "size": "9685731", + "checksum": "SHA-256:6f00694f0e1baaea8e1ebbd9067afcf2677970ab5a8986646ccf7a784b18f3c7" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.1_Windows_32bit.zip", + "archiveFileName": "arduino-fwuploader_2.4.1_Windows_32bit.zip", + "size": "9887872", + "checksum": "SHA-256:8a2fcd9b66e6eebc09b7eeb7435ba36c5095384890a5d30317d1b162da76e816" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.1_macOS_64bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.4.1_macOS_64bit.tar.gz", + "size": "9829523", + "checksum": "SHA-256:28b8a57ec94277b8145e3d99bbc703f44a4c3d1ae7c1219aa97ef04306510891" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.1_Linux_64bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.4.1_Linux_64bit.tar.gz", + "size": "9810467", + "checksum": "SHA-256:a21ea7596d0b883b24fc09bcfc3000f3a77b195004eb508f9a2deb70003f538e" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.1_Windows_64bit.zip", + "archiveFileName": "arduino-fwuploader_2.4.1_Windows_64bit.zip", + "size": "9874283", + "checksum": "SHA-256:6fc728f8b9edb42eaf80e375abd07624396dbe218d91364116a761ae733fee59" + } + ] + }, + { + "name": "arduino-fwuploader", + "version": "2.4.0", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.0_Linux_ARM64.tar.gz", + "archiveFileName": "arduino-fwuploader_2.4.0_Linux_ARM64.tar.gz", + "size": "9179419", + "checksum": "SHA-256:3d67ea645bef96b47d7496fb150a00ccecd3b15bb54c333b451199e62ec62e56" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.0_Linux_ARMv6.tar.gz", + "archiveFileName": "arduino-fwuploader_2.4.0_Linux_ARMv6.tar.gz", + "size": "9271485", + "checksum": "SHA-256:f7ae4fb2496ba2a443dddc63303cbf762d999ac16f5905f2fb9d315a1c2787f9" + }, + { + "host": "arm64-apple-darwin", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.0_macOS_ARM64.tar.gz", + "archiveFileName": "arduino-fwuploader_2.4.0_macOS_ARM64.tar.gz", + "size": "9291781", + "checksum": "SHA-256:6ba5f8562df74721563ba7e1f0b2a64398abcc11a7ed37864e83a61d2bd7ac26" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.0_Linux_32bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.4.0_Linux_32bit.tar.gz", + "size": "9685879", + "checksum": "SHA-256:54c087a2a9513e2d53a42a417031a21b1bd6b97f80a8dbcbb1c4adfa769e9140" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.0_Windows_32bit.zip", + "archiveFileName": "arduino-fwuploader_2.4.0_Windows_32bit.zip", + "size": "9887673", + "checksum": "SHA-256:548447ce2028eb26257d2fdaa193680c61ccea65b0de981c60c6439d2397faae" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.0_macOS_64bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.4.0_macOS_64bit.tar.gz", + "size": "9828777", + "checksum": "SHA-256:f948545aaa1cda145516637b88bf51221a8a532393c80e831a31c4f62a305738" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.0_Linux_64bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.4.0_Linux_64bit.tar.gz", + "size": "9808266", + "checksum": "SHA-256:50c21df34438bc306435374da251c2329d80af113e48f61d517a0985005d4815" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.4.0_Windows_64bit.zip", + "archiveFileName": "arduino-fwuploader_2.4.0_Windows_64bit.zip", + "size": "9878592", + "checksum": "SHA-256:e6c0c2fb1d82f87ab5c3026ad699a5e99eacc41e995dc8a2204204f99daa141c" + } + ] + }, + { + "name": "arduino-fwuploader", + "version": "2.3.0", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.3.0_Linux_ARM64.tar.gz", + "archiveFileName": "arduino-fwuploader_2.3.0_Linux_ARM64.tar.gz", + "size": "9267889", + "checksum": "SHA-256:7ca3807154342590abce0d6d0f560bfc721cc3f2d3af478ca64102174188827f" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.3.0_Linux_ARMv6.tar.gz", + "archiveFileName": "arduino-fwuploader_2.3.0_Linux_ARMv6.tar.gz", + "size": "9366809", + "checksum": "SHA-256:daf5bf02069a12bbc5b91e0fa6340655293a678b48be1e08d5f6cfdd672e1c66" + }, + { + "host": "arm64-apple-darwin", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.3.0_macOS_ARM64.tar.gz", + "archiveFileName": "arduino-fwuploader_2.3.0_macOS_ARM64.tar.gz", + "size": "9382790", + "checksum": "SHA-256:925af0ab0ca333f67f24c498a3e450ab4e33da03165b5a2b421a202073fbbedc" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.3.0_Linux_32bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.3.0_Linux_32bit.tar.gz", + "size": "9774627", + "checksum": "SHA-256:39a40bb1ad2bfd76ca72fbee458da1ef70228a4a7ea823bef451660f896ceb10" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.3.0_Windows_32bit.zip", + "archiveFileName": "arduino-fwuploader_2.3.0_Windows_32bit.zip", + "size": "9973184", + "checksum": "SHA-256:22a6ef6120a26d3dd88921ca51a604fb7e10ac84d56a8c342ac476adfb48c650" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.3.0_macOS_64bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.3.0_macOS_64bit.tar.gz", + "size": "9921559", + "checksum": "SHA-256:b528b535a770e7f434b090dc754187475a5998cf9968493ceda13331974ecae6" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.3.0_Linux_64bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.3.0_Linux_64bit.tar.gz", + "size": "9903881", + "checksum": "SHA-256:7ade445af7eddb28a0d38c27a53e93e06b735b79db2cefe5fb7a530bcc2b926a" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.3.0_Windows_64bit.zip", + "archiveFileName": "arduino-fwuploader_2.3.0_Windows_64bit.zip", + "size": "9963033", + "checksum": "SHA-256:d54b12c20ad5d8eb169a1ce7dfd3a67c3953b816326327ed8a216a9232e47d14" + } + ] + }, + { + "name": "arduino-fwuploader", + "version": "2.2.2", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.2.2_Linux_ARM64.tar.gz", + "archiveFileName": "arduino-fwuploader_2.2.2_Linux_ARM64.tar.gz", + "size": "6829396", + "checksum": "SHA-256:6d11a4f4aa5a81de865f3d18ca395a2780fdbb1e1597a2b11b2b5329e09f30fd" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.2.2_Linux_ARMv6.tar.gz", + "archiveFileName": "arduino-fwuploader_2.2.2_Linux_ARMv6.tar.gz", + "size": "6940393", + "checksum": "SHA-256:5aadf6e50ffe620635faf941fdf82c0765c8cba4830951bb53267ad125fc5af8" + }, + { + "host": "arm64-apple-darwin", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.2.2_macOS_ARM64.tar.gz", + "archiveFileName": "arduino-fwuploader_2.2.2_macOS_ARM64.tar.gz", + "size": "6878214", + "checksum": "SHA-256:10ae5614af4d82096b6ba0e1e07aab667fa140d2bf1d5e3407dd8ad4c6748195" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.2.2_Linux_32bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.2.2_Linux_32bit.tar.gz", + "size": "7262873", + "checksum": "SHA-256:503b9f8b24c6e396d09eb64f0e1f625c6f9aa5a90b01a50d7dec6477f4a866f0" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.2.2_Windows_32bit.zip", + "archiveFileName": "arduino-fwuploader_2.2.2_Windows_32bit.zip", + "size": "7450717", + "checksum": "SHA-256:74ad9a5d369204b51be288c98d74f949ceb7a0c227ee64eb65ae179ec884c84c" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.2.2_macOS_64bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.2.2_macOS_64bit.tar.gz", + "size": "7306576", + "checksum": "SHA-256:2cd6168ff470457b5124ba0faf118f315be2d1b9fb4fef43eb74370cd83620a2" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.2.2_Linux_64bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.2.2_Linux_64bit.tar.gz", + "size": "7306763", + "checksum": "SHA-256:8d77d0b33c8b0787fe3b80191709b69d638ef2a447d9853536cda35bfafd274b" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.2.2_Windows_64bit.zip", + "archiveFileName": "arduino-fwuploader_2.2.2_Windows_64bit.zip", + "size": "7390999", + "checksum": "SHA-256:b25ac549cb0645166613c96cf899aebc541e482fe196aada6408bd7cff2c7d02" + } + ] + }, + { + "name": "arduino-fwuploader", + "version": "2.2.0", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.2.0_Linux_ARM64.tar.gz", + "archiveFileName": "arduino-fwuploader_2.2.0_Linux_ARM64.tar.gz", + "size": "6814356", + "checksum": "SHA-256:c37947f40a7d83d5cf7eabdaa3eede1c02a3f97cef617be2a9fd4209c9a15273" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.2.0_Linux_ARM.tar.gz", + "archiveFileName": "arduino-fwuploader_2.2.0_Linux_ARM.tar.gz", + "size": "6942473", + "checksum": "SHA-256:2f94e51ba7f24bed14ea3ffea5aa6800ffaaa71dea59fc467a6541f37792a35c" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.2.0_macOS_64bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.2.0_macOS_64bit.tar.gz", + "size": "7301372", + "checksum": "SHA-256:ce4444e92ba88c6b24736adb4b0b2b6c4241e4fb916945acbc7de6391d5bfe8c" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.2.0_Linux_32bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.2.0_Linux_32bit.tar.gz", + "size": "7260785", + "checksum": "SHA-256:9b93dc3ffe174f51bf7e35008b6139be9aaf3357cd7459b0d6b1bd149ffb2e55" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.2.0_Windows_32bit.zip", + "archiveFileName": "arduino-fwuploader_2.2.0_Windows_32bit.zip", + "size": "7442444", + "checksum": "SHA-256:c0ff772702460fb5cbd8593f8ce731145d21fbf550342da556e45ef946c7d2f5" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.2.0_Windows_64bit.zip", + "archiveFileName": "arduino-fwuploader_2.2.0_Windows_64bit.zip", + "size": "7388945", + "checksum": "SHA-256:e3c5b862a6e86fd1e3da9d385122c8416f5520e88ec4025560f5a1354d80cb68" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/arduino-fwuploader_2.2.0_Linux_64bit.tar.gz", + "archiveFileName": "arduino-fwuploader_2.2.0_Linux_64bit.tar.gz", + "size": "7305558", + "checksum": "SHA-256:313c6b5b66a85491302912a518a7424589c0366974de28cbfa9047427b0682fc" + } + ] + }, + { + "name": "arduinoOTA", + "version": "1.0.0", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.0.0-linuxarm.tar.bz2", + "archiveFileName": "arduinoOTA-1.0.0-linuxarm.tar.bz2", + "size": "1961623", + "checksum": "SHA-256:0ca6c0a93bfad50be0b6e62dc51ba6c3267b809bab4ec91ef9606ab7d838e46b" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.0.0-osx.tar.bz2", + "archiveFileName": "arduinoOTA-1.0.0-osx.tar.bz2", + "size": "2180617", + "checksum": "SHA-256:e63c6034da2c1a7fe453eaa29c22df88627cc0aa3c5cbab7635c19367b74ee59" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.0.0-linux32.tar.bz2", + "archiveFileName": "arduinoOTA-1.0.0-linux32.tar.bz2", + "size": "2044124", + "checksum": "SHA-256:850a86876403cb45c944590a8cc7f9d8ef6d53ed853f7a9593ec395c4c1c6b2d" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.0.0-windows.zip", + "archiveFileName": "arduinoOTA-1.0.0-windows.zip", + "size": "2247970", + "checksum": "SHA-256:7bced1489217e07661ea1e75702a10a874b54f6146e2414ee47684c7eac014d1" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.0.0-linux64.tar.bz2", + "archiveFileName": "arduinoOTA-1.0.0-linux64.tar.bz2", + "size": "2178772", + "checksum": "SHA-256:f01f25e02787492a8a30414230635adae76ed85228045437433892d185991f9e" + } + ] + }, + { + "name": "arduinoOTA", + "version": "1.4.1", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "https://downloads.arduino.cc/tools/arduinoOTA/arduinoOTA_1.4.1_Linux_ARMv6.tar.gz", + "archiveFileName": "arduinoOTA_1.4.1_Linux_ARMv6.tar.gz", + "size": "3583929", + "checksum": "SHA-256:248daf6e9ea73b6eed9ec697c610524fcba73b63327d0176b6944e0936f1bdf4" + }, + { + "host": "arm64-linux-gnueabihf", + "url": "https://downloads.arduino.cc/tools/arduinoOTA/arduinoOTA_1.4.1_Linux_ARM64.tar.gz", + "archiveFileName": "arduinoOTA_1.4.1_Linux_ARM64.tar.gz", + "size": "3648820", + "checksum": "SHA-256:01081746bc8ec0ae879c89b518301937b2040abfb13c0e3f43e182de47edbbf7" + }, + { + "host": "i686-mingw32", + "url": "https://downloads.arduino.cc/tools/arduinoOTA/arduinoOTA_1.4.1_Windows_32bit.zip", + "archiveFileName": "arduinoOTA_1.4.1_Windows_32bit.zip", + "size": "3723304", + "checksum": "SHA-256:012721cbff75c0908b3e7d191231064743e8f025fe771b38b33028d01d859e52" + }, + { + "host": "i686-pc-linux-gnu", + "url": "https://downloads.arduino.cc/tools/arduinoOTA/arduinoOTA_1.4.1_Linux_32bit.tar.gz", + "archiveFileName": "arduinoOTA_1.4.1_Linux_32bit.tar.gz", + "size": "3741387", + "checksum": "SHA-256:42e3f157acbe68b497a57a744ab48aeb8def2e367a457edba353377956e7c1de" + }, + { + "host": "x86_64-apple-darwin", + "url": "https://downloads.arduino.cc/tools/arduinoOTA/arduinoOTA_1.4.1_macOS_64bit.tar.gz", + "archiveFileName": "arduinoOTA_1.4.1_macOS_64bit.tar.gz", + "size": "3956086", + "checksum": "SHA-256:5f824b5268b6cb56391deee81a58e9edaa3f0b247862d623c4c8e735b202ecf2" + }, + { + "host": "x86_64-mingw32", + "url": "https://downloads.arduino.cc/tools/arduinoOTA/arduinoOTA_1.4.1_Windows_64bit.zip", + "archiveFileName": "arduinoOTA_1.4.1_Windows_64bit.zip", + "size": "3895845", + "checksum": "SHA-256:d9d14f01cbccc83a19292777cd604660e8cbe7d362f2ca972e3d0a296ab0d746" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "https://downloads.arduino.cc/tools/arduinoOTA/arduinoOTA_1.4.1_Linux_64bit.tar.gz", + "archiveFileName": "arduinoOTA_1.4.1_Linux_64bit.tar.gz", + "size": "3985162", + "checksum": "SHA-256:90d9394f368fb80c512b0be89535f28ca03da64f97e39ed755d33aba63aba7dd" + } + ] + }, + { + "name": "arduinoOTA", + "version": "1.3.0", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.3.0-linux_arm64.tar.bz2", + "archiveFileName": "arduinoOTA-1.3.0-linux_arm64.tar.bz2", + "size": "2472427", + "checksum": "SHA-256:835ed8f37cffac37e979d1b0f6041559592d3d98be52f0e8611b76c4858e4113" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.3.0-linux_arm.tar.bz2", + "archiveFileName": "arduinoOTA-1.3.0-linux_arm.tar.bz2", + "size": "2567435", + "checksum": "SHA-256:1888587409b56aef4ba0ab0e6703b3dccba7cc3a022756ba9b908247e5d5a656" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.3.0-darwin_amd64.tar.bz2", + "archiveFileName": "arduinoOTA-1.3.0-darwin_amd64.tar.bz2", + "size": "2766116", + "checksum": "SHA-256:d5d0f82ff829c0e434d12a2ee640a6fbd78f893ab37782edbb8b5bf2359d119e" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.3.0-linux_386.tar.bz2", + "archiveFileName": "arduinoOTA-1.3.0-linux_386.tar.bz2", + "size": "2633516", + "checksum": "SHA-256:3e7f59d6fbc7a724598303f0d3289d0c4fd137a8973437980658379a024887b2" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.3.0-windows_386.zip", + "archiveFileName": "arduinoOTA-1.3.0-windows_386.zip", + "size": "2768948", + "checksum": "SHA-256:051943844eee442460d2c709edefadca184287fffd2b6c100dd53aa742aa05f6" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.3.0-linux_amd64.tar.bz2", + "archiveFileName": "arduinoOTA-1.3.0-linux_amd64.tar.bz2", + "size": "2716248", + "checksum": "SHA-256:aa45ee2441ffc3a122daec5802941d1fa2ac47adf5c5c481b5e0daa4dc259ffa" + } + ] + }, + { + "name": "arduinoOTA", + "version": "1.2.1", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.1-linux_arm.tar.bz2", + "archiveFileName": "arduinoOTA-1.2.1-linux_arm.tar.bz2", + "size": "2093132", + "checksum": "SHA-256:ad54b3dcd586212941fd992bab573b53d13207a419a3f2981c970a085ae0e9e0" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.1-linux_arm.tar.bz2", + "archiveFileName": "arduinoOTA-1.2.1-linux_arm.tar.bz2", + "size": "2093132", + "checksum": "SHA-256:ad54b3dcd586212941fd992bab573b53d13207a419a3f2981c970a085ae0e9e0" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.1-darwin_amd64.tar.bz2", + "archiveFileName": "arduinoOTA-1.2.1-darwin_amd64.tar.bz2", + "size": "2244088", + "checksum": "SHA-256:93a6d9f9c0c765d237be1665bf7a0a8e2b0b6d2a8531eae92db807f5515088a7" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.1-linux_386.tar.bz2", + "archiveFileName": "arduinoOTA-1.2.1-linux_386.tar.bz2", + "size": "2133779", + "checksum": "SHA-256:2ffdf64b78486c1d0bf28dc23d0ca36ab75ca92e84b9487246da01888abea6d4" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.1-windows_386.zip", + "archiveFileName": "arduinoOTA-1.2.1-windows_386.zip", + "size": "2237511", + "checksum": "SHA-256:e1ebf21f2c073fce25c09548c656da90d4ef6c078401ec6f323e0c58335115e5" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.1-linux_amd64.tar.bz2", + "archiveFileName": "arduinoOTA-1.2.1-linux_amd64.tar.bz2", + "size": "2257689", + "checksum": "SHA-256:5b82310d53688480f34a916aac31cd8f2dd2be65dd8fa6c2445262262e1948f9" + } + ] + }, + { + "name": "arduinoOTA", + "version": "1.2.0", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.0-linux_arm.tar.bz2", + "archiveFileName": "arduinoOTA-1.2.0-linux_arm.tar.bz2", + "size": "1787138", + "checksum": "SHA-256:ac49ffcd3239a6a52215f89dbda012d28f1296e6d79fc0efc3df06f919105744" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.0-darwin_amd64.tar.bz2", + "archiveFileName": "arduinoOTA-1.2.0-darwin_amd64.tar.bz2", + "size": "1992476", + "checksum": "SHA-256:160e83e77d7a60514ca40fedf34f539124aac4b9ae0e2bfdf8fda11d958de38f" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.0-linux_386.tar.bz2", + "archiveFileName": "arduinoOTA-1.2.0-linux_386.tar.bz2", + "size": "1839854", + "checksum": "SHA-256:7157a0b56620fb43b8dfb4afd958f8b294476a5ce4322c212167ca5d4092f2d9" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.0-windows_386.zip", + "archiveFileName": "arduinoOTA-1.2.0-windows_386.zip", + "size": "2003964", + "checksum": "SHA-256:9d26747093ab7966bfeffced9dbd7def0e164bba0db89f5efb3f7f8011496c8f" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.0-linux_amd64.tar.bz2", + "archiveFileName": "arduinoOTA-1.2.0-linux_amd64.tar.bz2", + "size": "1974030", + "checksum": "SHA-256:f672c1c407c4cb10729a1d891bdb8b010e2043e5415e1c2559bf39cdeaede78c" + } + ] + }, + { + "name": "arduinoOTA", + "version": "1.1.1", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.1.1-linux_arm.tar.bz2", + "archiveFileName": "arduinoOTA-1.1.1-linux_arm.tar.bz2", + "size": "1962115", + "checksum": "SHA-256:e4880d83df3d3f6f4b7b7bcde161e80a0556877468803a3c6066ee4ad18a374c" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.1.1-darwin_amd64.tar.bz2", + "archiveFileName": "arduinoOTA-1.1.1-darwin_amd64.tar.bz2", + "size": "2181376", + "checksum": "SHA-256:a1ce7cf578982f3af5e4fab6b5839e44830d7a41cb093faba5c4b45952a6fa55" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.1.1-linux_386.tar.bz2", + "archiveFileName": "arduinoOTA-1.1.1-linux_386.tar.bz2", + "size": "2045036", + "checksum": "SHA-256:7ac91ef1d5b357c0ceb790be02ef54986db598ba5a42fffbd6c8ecbdd6a271ef" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.1.1-windows_386.zip", + "archiveFileName": "arduinoOTA-1.1.1-windows_386.zip", + "size": "2248431", + "checksum": "SHA-256:b2d3610c77f969a68cd75b6ea66bf63ec10c263937009d99147fbcd975c90006" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.1.1-linux_amd64.tar.bz2", + "archiveFileName": "arduinoOTA-1.1.1-linux_amd64.tar.bz2", + "size": "2178288", + "checksum": "SHA-256:eb5ad0a457dd7f610f7f9b85454399c36755673d61a16f9d07cdfcbbb32ec277" + } + ] + }, + { + "name": "avrdude", + "version": "6.0.1-arduino3", + "systems": [ + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino3-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avrdude-6.0.1-arduino3-i386-apple-darwin11.tar.bz2", + "size": "264682", + "checksum": "SHA-256:df7cd4a76e45ab3767eb964f845f4d5e9d643df950ec32812923da1e9843d072" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino3-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.0.1-arduino3-i686-pc-linux-gnu.tar.bz2", + "size": "495482", + "checksum": "SHA-256:96a0cfb83fe0452366159e3bf4e19ff10906a8957d1feafd3d98b49ab4b14405" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino3-i686-mingw32.zip", + "archiveFileName": "avrdude-6.0.1-arduino3-i686-mingw32.zip", + "size": "241619", + "checksum": "SHA-256:ea59bfc2ee85039c85318b2ba52c47ef0573513444a785b72f59b22586a950f9" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino3-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.0.1-arduino3-x86_64-pc-linux-gnu.tar.bz2", + "size": "748634", + "checksum": "SHA-256:bb7bff48f20a68e1fe559c3f3f644574df12ab5c98eb6a1491079f3c760434ad" + } + ] + }, + { + "name": "avrdude", + "version": "6.0.1-arduino2", + "systems": [ + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino2-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avrdude-6.0.1-arduino2-i386-apple-darwin11.tar.bz2", + "size": "264965", + "checksum": "SHA-256:71117cce0096dad6c091e2c34eb0b9a3386d3aec7d863d2da733d9e5eac3a6b1" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino2-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.0.1-arduino2-i686-pc-linux-gnu.tar.bz2", + "size": "283209", + "checksum": "SHA-256:6f633dd6270ad0d9ef19507bcbf8697b414a15208e4c0f71deec25ef89cdef3f" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino2-i686-mingw32.zip", + "archiveFileName": "avrdude-6.0.1-arduino2-i686-mingw32.zip", + "size": "241618", + "checksum": "SHA-256:6c5483800ba753c80893607e30cade8ab77b182808fcc5ea15fa3019c63d76ae" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino2-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.0.1-arduino2-x86_64-pc-linux-gnu.tar.bz2", + "size": "292541", + "checksum": "SHA-256:2489004d1d98177eaf69796760451f89224007c98b39ebb5577a9a34f51425f1" + } + ] + }, + { + "name": "avrdude", + "version": "6.3.0-arduino18", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino18-aarch64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino18-aarch64-pc-linux-gnu.tar.bz2", + "size": "231047", + "checksum": "SHA-256:4f88bb50d2235182ed7aa9e0a1d08e4bb956378ac9569b8e1141e37ed314fb2d" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino18-armhf-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino18-armhf-pc-linux-gnu.tar.bz2", + "size": "220677", + "checksum": "SHA-256:2e25c9e99c255d595a1072679a88ecddfa12c223b18510760bb867039f35efa5" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino18-i686-w64-mingw32.zip", + "archiveFileName": "avrdude-6.3.0-arduino18-i686-w64-mingw32.zip", + "size": "329515", + "checksum": "SHA-256:0781f4183e91a9783c2330035520144ab76b8f75c0a9f7a25877c063bc984c4d" + }, + { + "host": "x86_64-apple-darwin12", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino18-x86_64-apple-darwin12.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino18-x86_64-apple-darwin12.tar.bz2", + "size": "280072", + "checksum": "SHA-256:df1dfd18e2e287c47232605cd4fa41751eb70df8c300aeb7a00a3a09b524a1b8" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino18-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino18-x86_64-pc-linux-gnu.tar.bz2", + "size": "254460", + "checksum": "SHA-256:1ae46972b276b8a54c459f87c4ff326abdad0be2b1a293d73bf86e47765eddc3" + } + ] + }, + { + "name": "avrdude", + "version": "6.3.0-arduino17", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino17-aarch64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino17-aarch64-pc-linux-gnu.tar.bz2", + "size": "229852", + "checksum": "SHA-256:6cf948f751acfe7b96684537f2291c766ec8b54b4f7dc95539864821456fa9fc" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino17-armhf-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino17-armhf-pc-linux-gnu.tar.bz2", + "size": "219631", + "checksum": "SHA-256:2a8e68c5d803aa6f902ef219f177ec3a4c28275d85cbe272962ad2cd374f50d1" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino17-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino17-i686-pc-linux-gnu.tar.bz2", + "size": "244550", + "checksum": "SHA-256:5c8cc6c17db9300e1451fe41cd7178b0442b4490ee6fdbc0aed9811aef96c05f" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino17-i686-w64-mingw32.zip", + "archiveFileName": "avrdude-6.3.0-arduino17-i686-w64-mingw32.zip", + "size": "328460", + "checksum": "SHA-256:e99188873c7c5ad8f8f906f068c33600e758b2e36cce3adbd518a21bd266749d" + }, + { + "host": "x86_64-apple-darwin12", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino17-x86_64-apple-darwin12.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino17-x86_64-apple-darwin12.tar.bz2", + "size": "279045", + "checksum": "SHA-256:120cc9edaae699e7e9ac50b1b8eb0e7d51fdfa555bac54233c2511e6ee5418c9" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino17-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino17-x86_64-pc-linux-gnu.tar.bz2", + "size": "254271", + "checksum": "SHA-256:accdfb920af2aabf4f7461d2ac73c0751760f525216dc4e7657427a78c60d13d" + } + ] + }, + { + "name": "avrdude", + "version": "6.3.0-arduino8", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino8-armhf-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino8-armhf-pc-linux-gnu.tar.bz2", + "size": "644550", + "checksum": "SHA-256:25a6834ae48019fccf37024236a1f79fe21760414292a4f3fa058d937ceee1ce" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino8-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino8-i386-apple-darwin11.tar.bz2", + "size": "697268", + "checksum": "SHA-256:be8a33a7ec01bb7123279466ffa31371e0aa4fccefffcc23ce71810b59531947" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino8-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino8-i686-pc-linux-gnu.tar.bz2", + "size": "701718", + "checksum": "SHA-256:8e2e4bc71d22e9d11ed143763b97f3aa2d164cdeee678a9deaf5b36e245b2d20" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino8-i686-w64-mingw32.zip", + "archiveFileName": "avrdude-6.3.0-arduino8-i686-w64-mingw32.zip", + "size": "645996", + "checksum": "SHA-256:3a7592f6c33efd658b820c73d1058d3c868a297cbddb37da5644973c3b516d5e" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino8-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino8-x86_64-pc-linux-gnu.tar.bz2", + "size": "711544", + "checksum": "SHA-256:85f38d02e2398d3b7f93da2ca8b830ee65bb73f66cc7a7b30c466d3cebf2da6e" + } + ] + }, + { + "name": "avrdude", + "version": "6.3.0-arduino6", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino6-armhf-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino6-armhf-pc-linux-gnu.tar.bz2", + "size": "644600", + "checksum": "SHA-256:2426207423d58eb0e5fc4df9493418f1cb54ba3f328fdc7c3bb582f920b9cbe7" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino6-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino6-i386-apple-darwin11.tar.bz2", + "size": "696273", + "checksum": "SHA-256:d9a039c9e92d3dbb2011e75e6c044a1a4a2789e2fbf8386b1d580994811be084" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino6-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino6-i686-pc-linux-gnu.tar.bz2", + "size": "733127", + "checksum": "SHA-256:5f4bc4b0957b1d34cec9908b7f84a7c297b894b39fe16a4992c284b24c00d6fb" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino6-i686-w64-mingw32.zip", + "archiveFileName": "avrdude-6.3.0-arduino6-i686-w64-mingw32.zip", + "size": "645859", + "checksum": "SHA-256:7468a1bcdfa459d175a095b102c0de28efc466accfb104305fbcad7832659ddc" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino6-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino6-x86_64-pc-linux-gnu.tar.bz2", + "size": "746653", + "checksum": "SHA-256:97b4875cad6110c70101bb776f3ac37b64a2e73f036cd0b10afb6f4be96a6621" + } + ] + }, + { + "name": "avrdude", + "version": "6.0.1-arduino5", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino5-armhf-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.0.1-arduino5-armhf-pc-linux-gnu.tar.bz2", + "size": "267095", + "checksum": "SHA-256:23ea1341dbc117ec067f2eb1a498ad2bdd7d11fff0143c00b2e018c39804f6b4" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino5-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avrdude-6.0.1-arduino5-i386-apple-darwin11.tar.bz2", + "size": "264894", + "checksum": "SHA-256:41af8d3b0a586853c8317b4fb5163ca0db594a1870ddf680fd988c42166fc3e5" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino5-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.0.1-arduino5-i686-pc-linux-gnu.tar.bz2", + "size": "283121", + "checksum": "SHA-256:5933d66927bce46ababa9b68a8b7f1d53f68c4f3ff7a5ce4b85d7cf4e6c6bfee" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino5-i686-mingw32.zip", + "archiveFileName": "avrdude-6.0.1-arduino5-i686-mingw32.zip", + "size": "241634", + "checksum": "SHA-256:41f667f1f6a0ab8df46b4ffacd023176dcdef331d6db3b74bddd37d18cca0a44" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.0.1-arduino5-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.0.1-arduino5-x86_64-pc-linux-gnu.tar.bz2", + "size": "292629", + "checksum": "SHA-256:d826cca7383461f7e8adde686372cf900e9cb3afd639555cf2d6c645b283a476" + } + ] + }, + { + "name": "avrdude", + "version": "6.3.0-arduino16", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino16-aarch64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino16-aarch64-pc-linux-gnu.tar.bz2", + "size": "229997", + "checksum": "SHA-256:7a2726ab2fd18b910abc3d9dd33c4b40d18c34cf12c46f3367932e7fd87c0197" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino16-armhf-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino16-armhf-pc-linux-gnu.tar.bz2", + "size": "219642", + "checksum": "SHA-256:6fc443445440f0e2d95d70013ed075bceffc2a1babc1e7d4f1ae69c3fe268c57" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino16-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino16-i686-pc-linux-gnu.tar.bz2", + "size": "244393", + "checksum": "SHA-256:bdf73358991243a9a8de11a42c80c4ec4b14c82f2222cb0c3c181f62656c41fb" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino16-i686-w64-mingw32.zip", + "archiveFileName": "avrdude-6.3.0-arduino16-i686-w64-mingw32.zip", + "size": "328456", + "checksum": "SHA-256:781c16a8bf813fa68fc0f47d427279053c9e098c3aed7165449ac4f0137304dd" + }, + { + "host": "x86_64-apple-darwin15", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino16-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino16-i386-apple-darwin11.tar.bz2", + "size": "279172", + "checksum": "SHA-256:f93dc12a4b30a335ab24b3c628e6cad0ebf2f8adfb7ef50f87c0fc17165b2156" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino16-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino16-x86_64-pc-linux-gnu.tar.bz2", + "size": "254085", + "checksum": "SHA-256:57856d6e388d333d924afa3e2d5525161dbe0dc670e7caae2720e249606175a7" + } + ] + }, + { + "name": "avrdude", + "version": "6.3.0-arduino14", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino14-aarch64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino14-aarch64-pc-linux-gnu.tar.bz2", + "size": "229688", + "checksum": "SHA-256:439f5de150695e3732dd598bb182dae6ec1e3a5cdb580f855d9b58e485e84e66" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino14-armhf-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino14-armhf-pc-linux-gnu.tar.bz2", + "size": "219616", + "checksum": "SHA-256:d1a06275490d59a431c419788bbc53ffd5a79510dac1a35e63cf488621ba5589" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino14-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino14-i386-apple-darwin12.tar.bz2", + "size": "256917", + "checksum": "SHA-256:47d03991522722ce92120c60c4118685b7861909d895f34575001137961e4a63" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino14-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino14-i686-pc-linux-gnu.tar.bz2", + "size": "244293", + "checksum": "SHA-256:4f100e3843c635064997df91d2a079ab15cd30d1d7fa227280abe6a7c3bc74ca" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino14-i686-w64-mingw32.zip", + "archiveFileName": "avrdude-6.3.0-arduino14-i686-w64-mingw32.zip", + "size": "328363", + "checksum": "SHA-256:69293e0de2eff8de89f553477795c25005f674a320bbba4b0222beb0194aa297" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino14-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino14-x86_64-pc-linux-gnu.tar.bz2", + "size": "253366", + "checksum": "SHA-256:7986e8f3059353dc08f9234f7dbc98d9b2fa2242f046f02a8243a060f7358bfc" + } + ] + }, + { + "name": "avrdude", + "version": "6.3.0-arduino9", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino9-armhf-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino9-armhf-pc-linux-gnu.tar.bz2", + "size": "644550", + "checksum": "SHA-256:25a6834ae48019fccf37024236a1f79fe21760414292a4f3fa058d937ceee1ce" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino9-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino9-i386-apple-darwin11.tar.bz2", + "size": "697309", + "checksum": "SHA-256:bfa06bc042dff252d3a8eded98da159484e75b46d2697da4d9446dcd2aea8465" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino9-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino9-i686-pc-linux-gnu.tar.bz2", + "size": "701590", + "checksum": "SHA-256:4235a2d58e3c3224c603d6c5f0610507ed6c48ebf4051fdcce9f77a7646e218b" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino9-i686-w64-mingw32.zip", + "archiveFileName": "avrdude-6.3.0-arduino9-i686-w64-mingw32.zip", + "size": "645974", + "checksum": "SHA-256:f3c5cfa8d0b3b0caee81c5b35fb6acff89c342ef609bf4266734c6266a256d4f" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino9-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino9-x86_64-pc-linux-gnu.tar.bz2", + "size": "711229", + "checksum": "SHA-256:c8cccb84e2fe49ee837b24f0a60a99e9c371dae26e84c5b0b22b6b6aab2f1f6a" + } + ] + }, + { + "name": "avrdude", + "version": "6.3.0-arduino2", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino2-armhf-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino2-armhf-pc-linux-gnu.tar.bz2", + "size": "643484", + "checksum": "SHA-256:26af86137d8a872f64d217cb262734860b36fe26d6d34faf72e951042f187885" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino2-i386-apple-darwin11.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino2-i386-apple-darwin11.tar.bz2", + "size": "653968", + "checksum": "SHA-256:32525ea3696c861030e1a6006a5f11971d1dad331e45bfa68dac35126476b04f" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino2-i686-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino2-i686-pc-linux-gnu.tar.bz2", + "size": "731802", + "checksum": "SHA-256:790b6cb610c48e73a2a0f65dcee9903d2fd7f1b0a1f75008a9a21f50a60c7251" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino2-i686-w64-mingw32.zip", + "archiveFileName": "avrdude-6.3.0-arduino2-i686-w64-mingw32.zip", + "size": "608496", + "checksum": "SHA-256:8eaf98ea41fbd4450483488ef31710cbcc43c0412dbc8e1e1b582feaab6eca30" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino2-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "avrdude-6.3.0-arduino2-x86_64-pc-linux-gnu.tar.bz2", + "size": "745081", + "checksum": "SHA-256:9635af5a35bdca11804c07582d7beec458140fb6e3308168c3deda18dc6790fa" + } + ] + }, + { + "name": "dfu-util", + "version": "0.11.0-arduino5", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-linux_arm64.tar.gz", + "archiveFileName": "dfu-util-0.11-arduino5-linux_arm64.tar.gz", + "size": "2607592", + "checksum": "SHA-256:b3f46a65da0c2fed2449dc5a3351c3c74953a868aa7f8d99ba2bb8c418344fe9" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-linux_arm.tar.gz", + "archiveFileName": "dfu-util-0.11-arduino5-linux_arm.tar.gz", + "size": "2512819", + "checksum": "SHA-256:acd4bd283fd408515279a44dd830499ad37b0767e8f2fde5c27e878ded909dc3" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-darwin_amd64.tar.gz", + "archiveFileName": "dfu-util-0.11-arduino5-darwin_amd64.tar.gz", + "size": "72429", + "checksum": "SHA-256:9e576c6e44f54b1e921a43ea77bcc08ec99e0e4e0905f4b9acf9ab2c979f0a22" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-linux_386.tar.gz", + "archiveFileName": "dfu-util-0.11-arduino5-linux_386.tar.gz", + "size": "2524406", + "checksum": "SHA-256:9a707692261e5710ed79a6d8a4031ffd0bfe1e585216569934346e9b2d68d0c2" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-windows_386.tar.gz", + "archiveFileName": "dfu-util-0.11-arduino5-windows_386.tar.gz", + "size": "571340", + "checksum": "SHA-256:6451e16bf77600fe2436c8708ab4b75077c49997cf8bedf03221d9d6726bb641" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11-arduino5-linux_amd64.tar.gz", + "archiveFileName": "dfu-util-0.11-arduino5-linux_amd64.tar.gz", + "size": "2283425", + "checksum": "SHA-256:96c64c278561af806b585c123c85748926ad02b1aedc07e5578ca9bee2be0d2a" + } + ] + }, + { + "name": "dfu-util", + "version": "0.11.0-arduino3", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino3-arm64.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino3-arm64.tar.bz2", + "size": "282961", + "checksum": "SHA-256:5f212524b6338d06bf833a2375f1012740e0a359c81ad1ff728222cc93a28586" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino3-arm.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino3-arm.tar.bz2", + "size": "241168", + "checksum": "SHA-256:27fb1fc8ba19df08f1805236083c7199f59bdaaacacceead98fee0e817e48425" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino3-osx.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino3-osx.tar.bz2", + "size": "79057", + "checksum": "SHA-256:81d88dae0ed068a7bdde14d7cd56c9b953a3aea87aaaf4bcbaf022ba7df47ad5" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino3-linux32.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino3-linux32.tar.bz2", + "size": "82825", + "checksum": "SHA-256:d6e5bd3d1861ac01dc85e85ae44667346a18f56537a95fe63e9dc71b1adeac99" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino3-windows.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino3-windows.tar.bz2", + "size": "635719", + "checksum": "SHA-256:7dccfadc260c5b13f7267fcd9ed610571bc74f6f64a85c20541c9ae48a1833b3" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino3-linux64.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino3-linux64.tar.bz2", + "size": "78422", + "checksum": "SHA-256:6a72e62546d4ba1c0c05c00a1e4863b23ab99e1224e6325b458207822fbf0da4" + } + ] + }, + { + "name": "dfu-util", + "version": "0.11.0-arduino2", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino2-arm64.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino2-arm64.tar.bz2", + "size": "282570", + "checksum": "SHA-256:fc2fd50397b5e23d552424bf6fbdd38c970fd58b2d2ac11f2395c3e3b7228cee" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino2-arm.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino2-arm.tar.bz2", + "size": "285451", + "checksum": "SHA-256:63bbddbdab6889c925d6f9535c92f0ba5fbd58d4e5e03d32cb43b91ef44bf277" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino2-osx.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino2-osx.tar.bz2", + "size": "72590", + "checksum": "SHA-256:8a01eb2238962e42db6dc476a6c1ec204a8670b2f3c9f6784c69e6cb981fd938" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino2-linux32.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino2-linux32.tar.bz2", + "size": "76696", + "checksum": "SHA-256:f6c39d312b0c70efc66c5439a3f95c08006eb7639c1205805175cc85a3725564" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino2-windows.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino2-windows.tar.bz2", + "size": "634198", + "checksum": "SHA-256:3ddc85d1dd0195bc88a45d7a1a82c8b4e1952923ef39f89e13645226f0294da8" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino2-linux64.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino2-linux64.tar.bz2", + "size": "76662", + "checksum": "SHA-256:bbfecff5e59c70f436777bd2ea4732708d34f0611634f386d29964692b87db2f" + } + ] + }, + { + "name": "dfu-util", + "version": "0.11.0-arduino1", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino1-arm.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino1-arm.tar.bz2", + "size": "240667", + "checksum": "SHA-256:105ffe9287e7341b6ad017c1224b45a6fcf440fd8a1d1b796cf10e8c8e05e51d" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino1-osx.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino1-osx.tar.bz2", + "size": "72632", + "checksum": "SHA-256:4518156ef1f46655714f11c9c9e753b6dee24e975d2155b5887ee613be133831" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino1-linux32.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino1-linux32.tar.bz2", + "size": "76871", + "checksum": "SHA-256:cda70b9a3840b005f1070ac49e161df9c17bb5e9411897f38d4f5383104c864d" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino1-windows.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino1-windows.tar.bz2", + "size": "634135", + "checksum": "SHA-256:dad96adc633d1a415b68439298c75db8d66aff978aef1288977bc7797ae946f6" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.11.0-arduino1-linux64.tar.bz2", + "archiveFileName": "dfu-util-0.11.0-arduino1-linux64.tar.bz2", + "size": "76905", + "checksum": "SHA-256:dedd8ff3d21525957211a0f7ff320294542ea61e42431bd10f3d95200b07def0" + } + ] + }, + { + "name": "dfu-util", + "version": "0.10.0-arduino1", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.10.0-arduino1-arm64.tar.bz2", + "archiveFileName": "dfu-util-0.10.0-arduino1-arm64.tar.bz2", + "size": "277886", + "checksum": "SHA-256:ebfbd21d3030c500da1f83b9aae5b8c597bee04c3bde1ce0a51b41abeafc9614" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.10.0-arduino1-arm.tar.bz2", + "archiveFileName": "dfu-util-0.10.0-arduino1-arm.tar.bz2", + "size": "272153", + "checksum": "SHA-256:f1e550f40c235356b7fde1c59447bfbab28f768915d3c14bd858fe0576bfc5a9" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.10.0-arduino1-osx.tar.bz2", + "archiveFileName": "dfu-util-0.10.0-arduino1-osx.tar.bz2", + "size": "73921", + "checksum": "SHA-256:7562d128036759605828d64b8d672d42445a8d95555c4b9ba339f73a1711a640" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.10.0-arduino1-linux32.tar.bz2", + "archiveFileName": "dfu-util-0.10.0-arduino1-linux32.tar.bz2", + "size": "81826", + "checksum": "SHA-256:43599ec60c000e9ef016970a496d6ab2cbbe5a8b7df9d06ef3114ecf83f9d123" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.10.0-arduino1-windows.tar.bz2", + "archiveFileName": "dfu-util-0.10.0-arduino1-windows.tar.bz2", + "size": "464314", + "checksum": "SHA-256:90816b669273ae796d734a2459c46bb340d4790783fd7aa01eb40c0443f1a9b1" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.10.0-arduino1-linux64.tar.bz2", + "archiveFileName": "dfu-util-0.10.0-arduino1-linux64.tar.bz2", + "size": "77184", + "checksum": "SHA-256:13ef2ec591c1e8b0b7eb0a05da972ecd6695016e7a9607e332c7553899af9b4a" + } + ] + }, + { + "name": "dfu-util", + "version": "0.9.0-arduino2", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.9.0-arduino2-arm.tar.bz2", + "archiveFileName": "dfu-util-0.9.0-arduino2-arm.tar.bz2", + "size": "198568", + "checksum": "SHA-256:b364a8fe1de697d7dd6c4135d341ddff6dbda7e33c707321c7dceab85dfc560b" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.9.0-arduino2-osx.tar.bz2", + "archiveFileName": "dfu-util-0.9.0-arduino2-osx.tar.bz2", + "size": "65137", + "checksum": "SHA-256:00e87178b81d5721f334d4b688267f19f36eed1d9710a912c9e44bb1a748f766" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.9.0-arduino2-linux32.tar.bz2", + "archiveFileName": "dfu-util-0.9.0-arduino2-linux32.tar.bz2", + "size": "71002", + "checksum": "SHA-256:7a6cec3d89c65119c52b6109cd92a9ec84bdf8a9d12083444d2c89e7ac16c84b" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.9.0-arduino2-windows.tar.bz2", + "archiveFileName": "dfu-util-0.9.0-arduino2-windows.tar.bz2", + "size": "394993", + "checksum": "SHA-256:8ec0e66acdc41941b6e25545f8c12e7eb7ba01a0bafae0b4ab4c99a70deb2ea5" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.9.0-arduino2-linux64.tar.bz2", + "archiveFileName": "dfu-util-0.9.0-arduino2-linux64.tar.bz2", + "size": "70996", + "checksum": "SHA-256:628e01772007e622dff6af82220c27bcdf1d0726ba886bd2b36807601f66e4e8" + } + ] + }, + { + "name": "dfu-util", + "version": "0.9.0-arduino1", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.9.0-arduino1-arm.tar.bz2", + "archiveFileName": "dfu-util-0.9.0-arduino1-arm.tar.bz2", + "size": "194826", + "checksum": "SHA-256:480637bf578e74b19753666a049f267d8ebcd9dfc8660d48f246bb76d5b806f9" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.9.0-arduino1-osx.tar.bz2", + "archiveFileName": "dfu-util-0.9.0-arduino1-osx.tar.bz2", + "size": "68361", + "checksum": "SHA-256:ea9216c627b7aa2d3a9bffab97df937e3c580cce66753c428dc697c854a35271" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.9.0-arduino1-linux32.tar.bz2", + "archiveFileName": "dfu-util-0.9.0-arduino1-linux32.tar.bz2", + "size": "62608", + "checksum": "SHA-256:17d69213914da04dadd6464d8adbcd3581dd930eb666b8f3336ab5383ce2127f" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.9.0-arduino1-windows.tar.bz2", + "archiveFileName": "dfu-util-0.9.0-arduino1-windows.tar.bz2", + "size": "377537", + "checksum": "SHA-256:29be01b298348be8b822391be7147b71a969d47bd5457d5b24cfa5981dbce78e" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/dfu-util-0.9.0-arduino1-linux64.tar.bz2", + "archiveFileName": "dfu-util-0.9.0-arduino1-linux64.tar.bz2", + "size": "66230", + "checksum": "SHA-256:e8a4d5477ab8c44d8528f35bc7dfafa5f3f04dace513906514aea31adc6fd3ba" + } + ] + }, + { + "name": "dfu-util", + "version": "0.8.0-stm32-arduino1", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/arduino.org/dfu-util-0.8.0-stm32-arduino1-linux_arm.tar.bz2", + "archiveFileName": "dfu-util-0.8.0-stm32-arduino1-linux_arm.tar.bz2", + "size": "213760", + "checksum": "SHA-256:607e6b0f2d2787ed7837f26da30b100131e3db207f84b8aca94a377db6e9ae50" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/arduino.org/dfu-util-0.8.0-stm32-arduino1-darwin_amd64.tar.bz2", + "archiveFileName": "dfu-util-0.8.0-stm32-arduino1-darwin_amd64.tar.bz2", + "size": "68381", + "checksum": "SHA-256:bb146803a4152ce2647d72b2cde68ff95eb3017c2460f24c4db922adac1fbd12" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/arduino.org/dfu-util-0.8.0-stm32-arduino1-linux_386.tar.bz2", + "archiveFileName": "dfu-util-0.8.0-stm32-arduino1-linux_386.tar.bz2", + "size": "69097", + "checksum": "SHA-256:58131e35ad5d7053b281bc6176face7b117c5ad63331e43c6801f8ccd57f59a4" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/arduino.org/dfu-util-0.8.0-stm32-arduino1-windows_386.tar.bz2", + "archiveFileName": "dfu-util-0.8.0-stm32-arduino1-windows_386.tar.bz2", + "size": "159753", + "checksum": "SHA-256:25c2f84e1acf1f10fd2aa1afced441366d4545fd41eae56e64f0b990b4ce9f55" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino.org/dfu-util-0.8.0-stm32-arduino1-linux_amd64.tar.bz2", + "archiveFileName": "dfu-util-0.8.0-stm32-arduino1-stm32-linux_amd64.tar.bz2", + "size": "68575", + "checksum": "SHA-256:e44287494ebd22f59fc79766a94e20306e59c6c799f5bb1cddeed80db95000d9" + } + ] + }, + { + "name": "nina-fwuploader-plugin", + "version": "1.0.0", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/nina-fwuploader-plugin/nina-fwuploader-plugin_1.0.0_Linux_ARM64.tar.gz", + "archiveFileName": "nina-fwuploader-plugin_1.0.0_Linux_ARM64.tar.gz", + "size": "4451720", + "checksum": "SHA-256:8a6fd11271329fd06a0690a3798b8bb74ce4b2e983064f84d71246f1f824841f" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/nina-fwuploader-plugin/nina-fwuploader-plugin_1.0.0_Linux_ARMv6.tar.gz", + "archiveFileName": "nina-fwuploader-plugin_1.0.0_Linux_ARMv6.tar.gz", + "size": "4457747", + "checksum": "SHA-256:1ae067a6bd9e1797f741bcbd9068f69ac22bfd6eff08d319197333a5a4d857f8" + }, + { + "host": "arm64-apple-darwin", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/nina-fwuploader-plugin/nina-fwuploader-plugin_1.0.0_macOS_ARM64.tar.gz", + "archiveFileName": "nina-fwuploader-plugin_1.0.0_macOS_ARM64.tar.gz", + "size": "4478600", + "checksum": "SHA-256:25fc6732197453f1b9fd054c15a60907fb88a15b394b8443a7e50a1d9f69e474" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/nina-fwuploader-plugin/nina-fwuploader-plugin_1.0.0_Linux_32bit.tar.gz", + "archiveFileName": "nina-fwuploader-plugin_1.0.0_Linux_32bit.tar.gz", + "size": "4620524", + "checksum": "SHA-256:a14f0e876628865c78decf816b71d61844cd621e18d111ca0af3d6f0cd686210" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/nina-fwuploader-plugin/nina-fwuploader-plugin_1.0.0_Windows_32bit.zip", + "archiveFileName": "nina-fwuploader-plugin_1.0.0_Windows_32bit.zip", + "size": "4842900", + "checksum": "SHA-256:c3aa316f4c07c8d7469b3c993d0e7dd7e3d98c0e82a55638ea69ca9526a15961" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/nina-fwuploader-plugin/nina-fwuploader-plugin_1.0.0_macOS_64bit.tar.gz", + "archiveFileName": "nina-fwuploader-plugin_1.0.0_macOS_64bit.tar.gz", + "size": "4688967", + "checksum": "SHA-256:6418cdb8684fc7ea8724526bfd1a7f5568f8a59c58c65a5953441e1aa7f10d5b" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/nina-fwuploader-plugin/nina-fwuploader-plugin_1.0.0_Linux_64bit.tar.gz", + "archiveFileName": "nina-fwuploader-plugin_1.0.0_Linux_64bit.tar.gz", + "size": "4724967", + "checksum": "SHA-256:11eeb6b078eba2dcbe4b8ab187221cb5e0528c6b67fcc927ea75fc8d204d6354" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/arduino-fwuploader/plugins/nina-fwuploader-plugin/nina-fwuploader-plugin_1.0.0_Windows_64bit.zip", + "archiveFileName": "nina-fwuploader-plugin_1.0.0_Windows_64bit.zip", + "size": "4926670", + "checksum": "SHA-256:ab958c206c883c3eebf7b9241dfc9fbbdf34d1961abb5bc55d5f257f4d815175" + } + ] + }, + { + "name": "openocd", + "version": "0.10.0-arduino8", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino8-static-aarch64-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino8-static-aarch64-linux-gnu.tar.bz2", + "size": "1778371", + "checksum": "SHA-256:500cb112ee92092bbfce69649b90d0284752c5766f5aaf5c24dc754100788ef9" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino8-static-arm-linux-gnueabihf.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino8-static-arm-linux-gnueabihf.tar.bz2", + "size": "1714346", + "checksum": "SHA-256:86c4ea3086b4a1475fd8a1e1daf4585748be093dad4160e816b1bf2502501fb2" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino8-static-x86_64-apple-darwin13.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino8-static-x86_64-apple-darwin13.tar.bz2", + "size": "1653652", + "checksum": "SHA-256:584b513ebbc4a645a68234d964ba56f042aaf7668d84ba47398a07a294516cc4" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino8-static-i686-ubuntu12.04-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino8-static-i686-ubuntu12.04-linux-gnu.tar.bz2", + "size": "1781892", + "checksum": "SHA-256:5b44889984daefa966b8251edb98445169107ca32f974ca598d4c59e7d2c8901" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino8-static-i686-w64-mingw32.zip", + "archiveFileName": "openocd-0.10.0-arduino8-static-i686-w64-mingw32.zip", + "size": "2190397", + "checksum": "SHA-256:35a92f32f2762ef9405d2c684ec7bea2e70c01068f380251aecd9290f5bd5b24" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino8-static-x86_64-ubuntu12.04-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino8-static-x86_64-ubuntu12.04-linux-gnu.tar.bz2", + "size": "1845547", + "checksum": "SHA-256:455d4123146bf6b4b095de86d3340fd01e39bba9c70b2f0bb8e979ac4dddac39" + } + ] + }, + { + "name": "openocd", + "version": "0.10.0-arduino1-static", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/arduino.org/OpenOCD-0.10.0-nrf52-arm-static.tar.gz", + "archiveFileName": "OpenOCD-0.10.0-nrf52-arm-static.tar.gz", + "size": "1526863", + "checksum": "SHA-256:b5172422077f87ff05b76ff40034979678c9c640e9d08cee15ce55e40dd8c929" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/arduino.org/OpenOCD-0.10.0-nrf52-osx-static.tar.gz", + "archiveFileName": "OpenOCD-0.10.0-nrf52-osx-static.tar.gz", + "size": "1529841", + "checksum": "SHA-256:46bd02c1d42c5d94c4936e4d4a0ff29697b621840be9a6f882e316203122049d" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/arduino.org/OpenOCD-0.10.0-nrf52-linux32-static.tar.gz", + "archiveFileName": "OpenOCD-0.10.0-nrf52-linux32-static.tar.gz", + "size": "1713236", + "checksum": "SHA-256:777371df34828810e1bea623b0f7c98f28fedf30fd3bc8e7d8f0a5745fb4e258" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/arduino.org/OpenOCD-0.10.0-nrf52-win32-static.zip", + "archiveFileName": "OpenOCD-0.10.0-nrf52-win32-static.zip", + "size": "1773642", + "checksum": "SHA-256:9371b25d000bd589c058a5bf10720617adb91fd8b8a21d2e887cf45eaa2df93c" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino.org/OpenOCD-0.10.0-nrf52-linux64-static.tar.gz", + "archiveFileName": "OpenOCD-0.10.0-nrf52-linux64-static.tar.gz", + "size": "1777984", + "checksum": "SHA-256:1c9ae77930dd7377d8c13f84abe7307b67fdcd6da74cc1ce269a79e138e7a00a" + } + ] + }, + { + "name": "openocd", + "version": "0.11.0-arduino2", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.11.0-arduino2-static-aarch64-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.11.0-arduino2-static-aarch64-linux-gnu.tar.bz2", + "size": "1902818", + "checksum": "SHA-256:a1aa7f1435a61eafb72ee90722f2496d6a34a7a0f085d0315c2613e4a548b824" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/openocd-0.11.0-arduino2-static-arm-linux-gnueabihf.tar.bz2", + "archiveFileName": "openocd-0.11.0-arduino2-static-arm-linux-gnueabihf.tar.bz2", + "size": "1986716", + "checksum": "SHA-256:57041130160be086e69387cceb4616eefc9819a0ef75de1f7c11aea57fb92699" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/openocd-0.11.0-arduino2-static-x86_64-apple-darwin13.tar.bz2", + "archiveFileName": "openocd-0.11.0-arduino2-static-x86_64-apple-darwin13.tar.bz2", + "size": "1893150", + "checksum": "SHA-256:280e7234eba84e830e92d791ebc685286f71d2bc1d3347f93605ef170d54fef4" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.11.0-arduino2-static-i686-ubuntu12.04-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.11.0-arduino2-static-i686-ubuntu12.04-linux-gnu.tar.bz2", + "size": "1971364", + "checksum": "SHA-256:6f4a8b77c8076aa18afb8438472526dff8c0d161a3ca68d0326163b59fcab663" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/openocd-0.11.0-arduino2-static-i686-w64-mingw32.zip", + "archiveFileName": "openocd-0.11.0-arduino2-static-i686-w64-mingw32.zip", + "size": "2460087", + "checksum": "SHA-256:631010980f12b1e750c4c67ce012b31c5953caabf4d30607d806e3d2b717d4b8" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.11.0-arduino2-static-x86_64-ubuntu12.04-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.11.0-arduino2-static-x86_64-ubuntu12.04-linux-gnu.tar.bz2", + "size": "2052080", + "checksum": "SHA-256:4d19b6e3906de1434ec86841e0e3138235714c655d45f037c0fabfa5e5c0681b" + } + ] + }, + { + "name": "openocd", + "version": "0.10.0-arduino13", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino13-static-aarch64-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino13-static-aarch64-linux-gnu.tar.bz2", + "size": "1820630", + "checksum": "SHA-256:47ae7a1a7961ac9daef001b011505b38777baac3c02dd7e673f62601df841427" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino13-static-arm-linux-gnueabihf.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino13-static-arm-linux-gnueabihf.tar.bz2", + "size": "1896478", + "checksum": "SHA-256:4dd38b701019ad2fbb58173a3bc6c58effd39501a4a8266256dfe169e7516655" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino13-static-x86_64-apple-darwin13.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino13-static-x86_64-apple-darwin13.tar.bz2", + "size": "1767137", + "checksum": "SHA-256:0f3f6e5e03355ffbbc84c4b4750e63c9315b7638c56d63df1b7795968208e6ba" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino13-static-i686-ubuntu12.04-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino13-static-i686-ubuntu12.04-linux-gnu.tar.bz2", + "size": "1883854", + "checksum": "SHA-256:788093504b25d2b9b772657215254ba178ed37773364ce240de68281efe40bd5" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino13-static-i686-w64-mingw32.zip", + "archiveFileName": "openocd-0.10.0-arduino13-static-i686-w64-mingw32.zip", + "size": "2334654", + "checksum": "SHA-256:2f3b87c644569f47780b16b071cd0929a64a8899ec769f4ca7480d20d5503365" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino13-static-x86_64-ubuntu12.04-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino13-static-x86_64-ubuntu12.04-linux-gnu.tar.bz2", + "size": "1955043", + "checksum": "SHA-256:e4b2ffbc9a29be21c32c6921c2e7c0ee39c664c4faca28a5f839c1df32d3bd24" + } + ] + }, + { + "name": "openocd", + "version": "0.10.0-arduino12", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino12-static-aarch64-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino12-static-aarch64-linux-gnu.tar.bz2", + "size": "1778706", + "checksum": "SHA-256:86e15186a44b87c00f5ddd9c05849d2ec107783dd18a5ac984ce2a71e34084ed" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino12-static-arm-linux-gnueabihf.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino12-static-arm-linux-gnueabihf.tar.bz2", + "size": "1855234", + "checksum": "SHA-256:5c6ca6189f61894ee77b29bc342f96cd14e4d7627fabeb2a8d2e2c534316cc38" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino12-static-x86_64-apple-darwin13.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino12-static-x86_64-apple-darwin13.tar.bz2", + "size": "1723600", + "checksum": "SHA-256:b40d135449401870302bec073326d6f1df79da38d9dd21326314a5a90189a06e" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino12-static-i686-ubuntu12.04-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino12-static-i686-ubuntu12.04-linux-gnu.tar.bz2", + "size": "1844359", + "checksum": "SHA-256:4938742d3fec62941187666b8ded44d8f6c7a404920ff49d97fca484b9fd08af" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino12-static-i686-w64-mingw32.zip", + "archiveFileName": "openocd-0.10.0-arduino12-static-i686-w64-mingw32.zip", + "size": "2276602", + "checksum": "SHA-256:1e23c0f1f809725db3e1f8d1e1f460a37fb7b2cf95e93c6e328e527501ab084c" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino12-static-x86_64-ubuntu12.04-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino12-static-x86_64-ubuntu12.04-linux-gnu.tar.bz2", + "size": "1918845", + "checksum": "SHA-256:bc48be10916f69f3a4b050f04babc14ee99dad1fc5da55ce606077991edab1d0" + } + ] + }, + { + "name": "openocd", + "version": "0.10.0-arduino9", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino9-static-aarch64-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino9-static-aarch64-linux-gnu.tar.bz2", + "size": "1714657", + "checksum": "SHA-256:b814b16b52cef21eacf456cc7a89d7b5d4cb1385bfb8fb82963b7d8151824d93" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino9-static-arm-linux-gnueabihf.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino9-static-arm-linux-gnueabihf.tar.bz2", + "size": "1778177", + "checksum": "SHA-256:f0443e771f5e3a779949498d3c9bfffd1dd27cdf0ad7136a2db5e80447a7175a" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino9-static-x86_64-apple-darwin13.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino9-static-x86_64-apple-darwin13.tar.bz2", + "size": "1655311", + "checksum": "SHA-256:6d47f97919f317bb6e5f1f903127604271d66d149f4625f29b8e0eb5f6c94c64" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino9-static-i686-ubuntu12.04-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino9-static-i686-ubuntu12.04-linux-gnu.tar.bz2", + "size": "1782958", + "checksum": "SHA-256:a22872918df899cb808f9286141d42438ae5611156c143cfb692069f52a2bddd" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino9-static-i686-w64-mingw32.zip", + "archiveFileName": "openocd-0.10.0-arduino9-static-i686-w64-mingw32.zip", + "size": "2190484", + "checksum": "SHA-256:f53f9a2b7f48a2ebc00ea9196bf559d15987d3779bcea4118ebec8925da5a1f6" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino9-static-x86_64-ubuntu12.04-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino9-static-x86_64-ubuntu12.04-linux-gnu.tar.bz2", + "size": "1844365", + "checksum": "SHA-256:f624552b5ba56aa78d0c1a0e5d18cf2b5694db2ed44080968e22aa1af8f23c1b" + } + ] + }, + { + "name": "openocd", + "version": "0.10.0-arduino7", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino7-static-aarch64-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino7-static-aarch64-linux-gnu.tar.bz2", + "size": "1580739", + "checksum": "SHA-256:d47d728a9a8d98f28dc22e31d7127ced9de0d5e268292bf935e050ef1d2bdfd0" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino7-static-arm-linux-gnueabihf.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino7-static-arm-linux-gnueabihf.tar.bz2", + "size": "1638575", + "checksum": "SHA-256:f8e0d783e80a3d5f75ee82e9542315871d46e1e283a97447735f1cbcd8986b06" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino7-static-x86_64-apple-darwin13.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino7-static-x86_64-apple-darwin13.tar.bz2", + "size": "1498970", + "checksum": "SHA-256:1e539a587a0c54a551ce0dc542af10a2520b1c93bbfe2ca4ebaef4c83411df1a" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino7-static-i686-ubuntu12.04-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino7-static-i686-ubuntu12.04-linux-gnu.tar.bz2", + "size": "1626347", + "checksum": "SHA-256:08a18f39d72a5626383503053a30a5da89eed7fdccb6f514b20b77403eb1b2b4" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino7-static-i686-w64-mingw32.zip", + "archiveFileName": "openocd-0.10.0-arduino7-static-i686-w64-mingw32.zip", + "size": "2016965", + "checksum": "SHA-256:f251aec5471296e18aa540c3078d66475357a76a77c16c06a2d9345f4e12b3d5" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.10.0-arduino7-static-x86_64-ubuntu12.04-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.10.0-arduino7-static-x86_64-ubuntu12.04-linux-gnu.tar.bz2", + "size": "1701581", + "checksum": "SHA-256:91d418bd309ec1e98795c622cd25c936aa537c0b3828fa5bcb191389378a1b27" + } + ] + }, + { + "name": "openocd", + "version": "0.9.0-arduino6-static", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/openocd-0.9.0-arduino6-static-arm-linux-gnueabihf.tar.bz2", + "archiveFileName": "openocd-0.9.0-arduino6-static-arm-linux-gnueabihf.tar.bz2", + "size": "1319020", + "checksum": "SHA-256:5d596c90510f80d66f64a3615d74063a6a61f07b79be475592a3c76bf0deb3ca" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/openocd-0.9.0-arduino6-static-i686-w64-mingw32.zip", + "archiveFileName": "openocd-0.9.0-arduino6-static-i686-w64-mingw32.zip", + "size": "1641514", + "checksum": "SHA-256:dde6c8cd42c179e819eeebee1d09829b0768ecb89b75fb10e1f053c1c65f9cf1" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.9.0-arduino6-static-i686-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.9.0-arduino6-static-i686-linux-gnu.tar.bz2", + "size": "1340444", + "checksum": "SHA-256:88d948c2062c73c0c93e649e099aaac4b009018cff365f44cfc5b47907043dc9" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/tools/openocd-0.9.0-arduino6-static-x86_64-apple-darwin15.6.0.tar.bz2", + "archiveFileName": "openocd-0.9.0-arduino6-static-x86_64-apple-darwin15.6.0.tar.bz2", + "size": "1222523", + "checksum": "SHA-256:00cd65339bc981ff0d4ab4876df8f89b1e60e476441fabca31d5fc2968bad9be" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.9.0-arduino6-static-x86_64-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.9.0-arduino6-static-x86_64-linux-gnu.tar.bz2", + "size": "1394293", + "checksum": "SHA-256:d2f58bbd0661b755fdb8a307d197f119d838b066f5510b25ee766e47d1774543" + } + ] + }, + { + "name": "openocd", + "version": "0.9.0-arduino5-static", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/openocd-0.9.0-arduino5-static-arm-linux-gnueabihf.tar.bz2", + "archiveFileName": "openocd-0.9.0-arduino5-static-arm-linux-gnueabihf.tar.bz2", + "size": "1319000", + "checksum": "SHA-256:cef48c1448664612dd25168f0a56962aec4ce2f1d7c06dafd86a1b606dc8ae20" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/openocd-0.9.0-arduino5-static-i686-w64-mingw32.zip", + "archiveFileName": "openocd-0.9.0-arduino5-static-i686-w64-mingw32.zip", + "size": "1641209", + "checksum": "SHA-256:54c70a0bfa1b0a3a592d6ee9ab532f9715e1dede2e7d46a3232abd72de274c5a" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.9.0-arduino5-static-i686-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.9.0-arduino5-static-i686-linux-gnu.tar.bz2", + "size": "1341739", + "checksum": "SHA-256:8e0787f54e204fe6e9071b2b7edf8a5e695492696f1182d447647fe5c0bd55bd" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/tools/openocd-0.9.0-arduino5-static-x86_64-apple-darwin15.6.0.tar.bz2", + "archiveFileName": "openocd-0.9.0-arduino5-static-x86_64-apple-darwin15.6.0.tar.bz2", + "size": "1235752", + "checksum": "SHA-256:14be5c5400e1a32c3d6a15f9c8d2f438634974ab263ff437b91b527e5b5d53a4" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.9.0-arduino5-static-x86_64-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.9.0-arduino5-static-x86_64-linux-gnu.tar.bz2", + "size": "1393855", + "checksum": "SHA-256:8e378bdcd71c93a39818c16b49b91128c8028e3d9675551ba7eff39462391ba2" + } + ] + }, + { + "name": "openocd", + "version": "0.9.0-arduino", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/OpenOCD-0.9.0-arduino-arm-linux-gnueabihf.tar.bz2", + "archiveFileName": "OpenOCD-0.9.0-dev-arduino-arm-linux-gnueabihf.tar.bz2", + "size": "1402283", + "checksum": "SHA-256:a84e7c4cba853f2c937d77286f8a0ca317447d3873e51cbd2a2d41424e044a18" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/OpenOCD-0.9.0-arduino-i686-pc-cygwin.tar.bz2", + "archiveFileName": "OpenOCD-0.9.0-arduino-i686-pc-cygwin.tar.bz2", + "size": "2360705", + "checksum": "SHA-256:5310bdd3730168a33b09b68558e908ca8b2fec25620c488f50a5fb35d0d1effd" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/OpenOCD-0.9.0-arduino-i486-linux-gnu.tar.bz2", + "archiveFileName": "OpenOCD-0.9.0-arduino-i486-linux-gnu.tar.bz2", + "size": "1129654", + "checksum": "SHA-256:4c9793dfd7822b0fc959d039e5ecabfa89092ee2911abfdc7b5905deb171499a" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/tools/OpenOCD-0.9.0-arduino-x86_64-apple-darwin14.3.0.tar.bz2", + "archiveFileName": "OpenOCD-0.9.0-arduino-x86_64-apple-darwin14.3.0.tar.bz2", + "size": "2275101", + "checksum": "SHA-256:ef90769c07b8018cec3a5054e690ac6c196e03720e102ac5038c3f9da4e44782" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/OpenOCD-0.9.0-arduino-x86_64-linux-gnu.tar.bz2", + "archiveFileName": "OpenOCD-0.9.0-arduino-x86_64-linux-gnu.tar.bz2", + "size": "1210796", + "checksum": "SHA-256:c350409f7badf213dfcc516ea34289461ad92d87806e8e33945508a2c6b2c0b3" + } + ] + }, + { + "name": "openocd", + "version": "0.11.0-arduino1", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.11.0-arduino1-static-aarch64-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.11.0-arduino1-static-aarch64-linux-gnu.tar.bz2", + "size": "1882308", + "checksum": "SHA-256:f4bc15523a9777a61befb67ee46b0c567572029cf2dbb8bc092d1175f188a62b" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/openocd-0.11.0-arduino1-static-arm-linux-gnueabihf.tar.bz2", + "archiveFileName": "openocd-0.11.0-arduino1-static-arm-linux-gnueabihf.tar.bz2", + "size": "1967523", + "checksum": "SHA-256:c56e88b34c82748b015c9e11f62c1d6aa98da00c2642f0027b1a5781085c56f9" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/openocd-0.11.0-arduino1-static-x86_64-apple-darwin13.tar.bz2", + "archiveFileName": "openocd-0.11.0-arduino1-static-x86_64-apple-darwin13.tar.bz2", + "size": "1865080", + "checksum": "SHA-256:c9ab5f32038551318434feb8ffba5cf2932b8956443c284997431eb784eacaee" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.11.0-arduino1-static-i686-ubuntu12.04-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.11.0-arduino1-static-i686-ubuntu12.04-linux-gnu.tar.bz2", + "size": "1948258", + "checksum": "SHA-256:dbee4de8e838996067444fa1c775bc64418af5660f96d9a9e92a95e85c762d16" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/openocd-0.11.0-arduino1-static-i686-w64-mingw32.zip", + "archiveFileName": "openocd-0.11.0-arduino1-static-i686-w64-mingw32.zip", + "size": "2443521", + "checksum": "SHA-256:13455c55bb089bd0b4005fd77d8522c691b60a4a40bc101afe817db6f1d05695" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/openocd-0.11.0-arduino1-static-x86_64-ubuntu12.04-linux-gnu.tar.bz2", + "archiveFileName": "openocd-0.11.0-arduino1-static-x86_64-ubuntu12.04-linux-gnu.tar.bz2", + "size": "2023084", + "checksum": "SHA-256:beb45bb95e43d2d592ee62342e6fdfbb15b87c20c96177b8f6bbc2a57cddbeb1" + } + ] + }, + { + "name": "windows-drivers", + "version": "1.8.0", + "systems": [ + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/drivers-arduino-windows-1.8.0.zip", + "archiveFileName": "drivers-arduino-windows-1.8.0.zip", + "size": "16302148", + "checksum": "SHA-256:60614b326ad6860ed0cb99eb4cb2cb69f9ba6ba3784396d5441fe3f99004f8ec" + } + ] + }, + { + "name": "windows-drivers", + "version": "1.6.9", + "systems": [ + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/drivers-arduino-windows-1.6.9.zip", + "archiveFileName": "drivers-arduino-windows-1.6.9.zip", + "size": "7071714", + "checksum": "SHA-256:10d456ab18d164d42545255db8bef4ac9e1bf660cc89acb7a0980b5a486654ac" + } + ] + }, + { + "name": "arm-none-eabi-gcc", + "version": "7-2017q4", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-7-2018-q2-update-linuxarm64.tar.bz2", + "archiveFileName": "gcc-arm-none-eabi-7-2018-q2-update-linuxarm64.tar.bz2", + "size": "99558726", + "checksum": "SHA-256:6fb5752fb4d11012bd0a1ceb93a19d0641ff7cf29d289b3e6b86b99768e66f76" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-7-2019-q4-major-linuxarm.tar.bz2", + "archiveFileName": "gcc-arm-none-eabi-7-2019-q4-major-linuxarm.tar.bz2", + "size": "96613739", + "checksum": "SHA-256:34180943d95f759c66444a40b032f7dd9159a562670fc334f049567de140c51b" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-7-2017-q4-major-win32-arduino1.zip", + "archiveFileName": "gcc-arm-none-eabi-7-2017-q4-major-win32-arduino1.zip", + "size": "131761924", + "checksum": "SHA-256:96dd0091856f4d2eb21046eba571321feecf7d50b9c156f708b2a8b683903382" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-7-2018-q2-update-linux32.tar.bz2", + "archiveFileName": "gcc-arm-none-eabi-7-2018-q2-update-linux32.tar.bz2", + "size": "97427309", + "checksum": "SHA-256:090a0bc2b1956bc49392dff924a6c30fa57c88130097b1972204d67a45ce3cf3" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-7-2017-q4-major-mac.tar.bz2", + "archiveFileName": "gcc-arm-none-eabi-7-2017-q4-major-mac.tar.bz2", + "size": "104550003", + "checksum": "SHA-256:89b776c7cf0591c810b5b60067e4dc113b5b71bc50084a536e71b894a97fdccb" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/gcc-arm-none-eabi-7-2017-q4-major-linux64.tar.bz2", + "archiveFileName": "gcc-arm-none-eabi-7-2017-q4-major-linux64.tar.bz2", + "size": "99857645", + "checksum": "SHA-256:96a029e2ae130a1210eaa69e309ea40463028eab18ba19c1086e4c2dafe69a6a" + } + ] + }, + { + "name": "arm-none-eabi-gcc", + "version": "4.8.3-2014q1", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/gcc-arm-none-eabi-4.8.3-2014q1-arm.tar.bz2", + "archiveFileName": "gcc-arm-none-eabi-4.8.3-2014q1-arm.tar.bz2", + "size": "44423906", + "checksum": "SHA-256:ebe96b34c4f434667cab0187b881ed585e7c7eb990fe6b69be3c81ec7e11e845" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/gcc-arm-none-eabi-4.8.3-2014q1-windows.tar.gz", + "archiveFileName": "gcc-arm-none-eabi-4.8.3-2014q1-windows.tar.gz", + "size": "84537449", + "checksum": "SHA-256:fd8c111c861144f932728e00abd3f7d1107e186eb9cd6083a54c7236ea78b7c2" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/gcc-arm-none-eabi-4.8.3-2014q1-linux32.tar.gz", + "archiveFileName": "gcc-arm-none-eabi-4.8.3-2014q1-linux32.tar.gz", + "size": "51029223", + "checksum": "SHA-256:ba1994235f69c526c564f65343f22ddbc9822b2ea8c5ee07dd79d89f6ace2498" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/gcc-arm-none-eabi-4.8.3-2014q1-mac.tar.gz", + "archiveFileName": "gcc-arm-none-eabi-4.8.3-2014q1-mac.tar.gz", + "size": "52518522", + "checksum": "SHA-256:3598acf21600f17a8e4a4e8e193dc422b894dc09384759b270b2ece5facb59c2" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/gcc-arm-none-eabi-4.8.3-2014q1-linux64.tar.gz", + "archiveFileName": "gcc-arm-none-eabi-4.8.3-2014q1-linux64.tar.gz", + "size": "51395093", + "checksum": "SHA-256:d23f6626148396d6ec42a5b4d928955a703e0757829195fa71a939e5b86eecf6" + } + ] + }, + { + "name": "CMSIS", + "version": "4.5.0", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/CMSIS-4.5.0.tar.bz2", + "archiveFileName": "CMSIS-4.5.0.tar.bz2", + "size": "31525196", + "checksum": "SHA-256:cd8f7eae9fc7c8b4a1b5e40b89b9666d33953b47d3d2eb81844f5af729fa224d" + }, + { + "host": "all", + "url": "http://downloads.arduino.cc/CMSIS-4.5.0.tar.bz2", + "archiveFileName": "CMSIS-4.5.0.tar.bz2", + "size": "31525196", + "checksum": "SHA-256:cd8f7eae9fc7c8b4a1b5e40b89b9666d33953b47d3d2eb81844f5af729fa224d" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/CMSIS-4.5.0.tar.bz2", + "archiveFileName": "CMSIS-4.5.0.tar.bz2", + "size": "31525196", + "checksum": "SHA-256:cd8f7eae9fc7c8b4a1b5e40b89b9666d33953b47d3d2eb81844f5af729fa224d" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/CMSIS-4.5.0.tar.bz2", + "archiveFileName": "CMSIS-4.5.0.tar.bz2", + "size": "31525196", + "checksum": "SHA-256:cd8f7eae9fc7c8b4a1b5e40b89b9666d33953b47d3d2eb81844f5af729fa224d" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/CMSIS-4.5.0.tar.bz2", + "archiveFileName": "CMSIS-4.5.0.tar.bz2", + "size": "31525196", + "checksum": "SHA-256:cd8f7eae9fc7c8b4a1b5e40b89b9666d33953b47d3d2eb81844f5af729fa224d" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/CMSIS-4.5.0.tar.bz2", + "archiveFileName": "CMSIS-4.5.0.tar.bz2", + "size": "31525196", + "checksum": "SHA-256:cd8f7eae9fc7c8b4a1b5e40b89b9666d33953b47d3d2eb81844f5af729fa224d" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/CMSIS-4.5.0.tar.bz2", + "archiveFileName": "CMSIS-4.5.0.tar.bz2", + "size": "31525196", + "checksum": "SHA-256:cd8f7eae9fc7c8b4a1b5e40b89b9666d33953b47d3d2eb81844f5af729fa224d" + } + ] + }, + { + "name": "CMSIS", + "version": "4.0.0-atmel", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/CMSIS-4.0.0.tar.bz2", + "archiveFileName": "CMSIS-4.0.0.tar.bz2", + "size": "17642623", + "checksum": "SHA-256:7d637d2d7a0c6bacc22065848a201db2fff124268e4a56868260d0f472b4bbb7" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/CMSIS-4.0.0.tar.bz2", + "archiveFileName": "CMSIS-4.0.0.tar.bz2", + "size": "17642623", + "checksum": "SHA-256:7d637d2d7a0c6bacc22065848a201db2fff124268e4a56868260d0f472b4bbb7" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/CMSIS-4.0.0.tar.bz2", + "archiveFileName": "CMSIS-4.0.0.tar.bz2", + "size": "17642623", + "checksum": "SHA-256:7d637d2d7a0c6bacc22065848a201db2fff124268e4a56868260d0f472b4bbb7" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/CMSIS-4.0.0.tar.bz2", + "archiveFileName": "CMSIS-4.0.0.tar.bz2", + "size": "17642623", + "checksum": "SHA-256:7d637d2d7a0c6bacc22065848a201db2fff124268e4a56868260d0f472b4bbb7" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/CMSIS-4.0.0.tar.bz2", + "archiveFileName": "CMSIS-4.0.0.tar.bz2", + "size": "17642623", + "checksum": "SHA-256:7d637d2d7a0c6bacc22065848a201db2fff124268e4a56868260d0f472b4bbb7" + } + ] + }, + { + "name": "CMSIS-Atmel", + "version": "1.0.0", + "systems": [ + { + "host": "all", + "url": "http://downloads.arduino.cc/CMSIS-Atmel-1.0.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.0.0.tar.bz2", + "size": "1281654", + "checksum": "SHA-256:b3c954570a2f8d9821c372e0864f5f0b86cfbeab8114ce95821f5c49758c7256" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/CMSIS-Atmel-1.0.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.0.0.tar.bz2", + "size": "1281654", + "checksum": "SHA-256:b3c954570a2f8d9821c372e0864f5f0b86cfbeab8114ce95821f5c49758c7256" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/CMSIS-Atmel-1.0.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.0.0.tar.bz2", + "size": "1281654", + "checksum": "SHA-256:b3c954570a2f8d9821c372e0864f5f0b86cfbeab8114ce95821f5c49758c7256" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/CMSIS-Atmel-1.0.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.0.0.tar.bz2", + "size": "1281654", + "checksum": "SHA-256:b3c954570a2f8d9821c372e0864f5f0b86cfbeab8114ce95821f5c49758c7256" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/CMSIS-Atmel-1.0.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.0.0.tar.bz2", + "size": "1281654", + "checksum": "SHA-256:b3c954570a2f8d9821c372e0864f5f0b86cfbeab8114ce95821f5c49758c7256" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/CMSIS-Atmel-1.0.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.0.0.tar.bz2", + "size": "1281654", + "checksum": "SHA-256:b3c954570a2f8d9821c372e0864f5f0b86cfbeab8114ce95821f5c49758c7256" + } + ] + }, + { + "name": "CMSIS-Atmel", + "version": "1.2.0", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "https://downloads.arduino.cc/CMSIS-Atmel-1.2.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.2.0.tar.bz2", + "size": "2221805", + "checksum": "SHA-256:5e02670be7e36be9691d059bee0b04ee8b249404687531f33893922d116b19a5" + }, + { + "host": "all", + "url": "https://downloads.arduino.cc/CMSIS-Atmel-1.2.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.2.0.tar.bz2", + "size": "2221805", + "checksum": "SHA-256:5e02670be7e36be9691d059bee0b04ee8b249404687531f33893922d116b19a5" + }, + { + "host": "arm-linux-gnueabihf", + "url": "https://downloads.arduino.cc/CMSIS-Atmel-1.2.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.2.0.tar.bz2", + "size": "2221805", + "checksum": "SHA-256:5e02670be7e36be9691d059bee0b04ee8b249404687531f33893922d116b19a5" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/CMSIS-Atmel-1.2.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.2.0.tar.bz2", + "size": "2221805", + "checksum": "SHA-256:5e02670be7e36be9691d059bee0b04ee8b249404687531f33893922d116b19a5" + }, + { + "host": "i686-pc-linux-gnu", + "url": "https://downloads.arduino.cc/CMSIS-Atmel-1.2.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.2.0.tar.bz2", + "size": "2221805", + "checksum": "SHA-256:5e02670be7e36be9691d059bee0b04ee8b249404687531f33893922d116b19a5" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/CMSIS-Atmel-1.2.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.2.0.tar.bz2", + "size": "2221805", + "checksum": "SHA-256:5e02670be7e36be9691d059bee0b04ee8b249404687531f33893922d116b19a5" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "https://downloads.arduino.cc/CMSIS-Atmel-1.2.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.2.0.tar.bz2", + "size": "2221805", + "checksum": "SHA-256:5e02670be7e36be9691d059bee0b04ee8b249404687531f33893922d116b19a5" + } + ] + }, + { + "name": "CMSIS-Atmel", + "version": "1.1.0", + "systems": [ + { + "host": "all", + "url": "http://downloads.arduino.cc/CMSIS-Atmel-1.1.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.1.0.tar.bz2", + "size": "1659108", + "checksum": "SHA-256:3ea5ec0451f42dc2b97f869b027a9cf696241cfc927cfc48d74ccc7b396ba41b" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/CMSIS-Atmel-1.1.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.1.0.tar.bz2", + "size": "1659108", + "checksum": "SHA-256:3ea5ec0451f42dc2b97f869b027a9cf696241cfc927cfc48d74ccc7b396ba41b" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/CMSIS-Atmel-1.1.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.1.0.tar.bz2", + "size": "1659108", + "checksum": "SHA-256:3ea5ec0451f42dc2b97f869b027a9cf696241cfc927cfc48d74ccc7b396ba41b" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/CMSIS-Atmel-1.1.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.1.0.tar.bz2", + "size": "1659108", + "checksum": "SHA-256:3ea5ec0451f42dc2b97f869b027a9cf696241cfc927cfc48d74ccc7b396ba41b" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/CMSIS-Atmel-1.1.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.1.0.tar.bz2", + "size": "1659108", + "checksum": "SHA-256:3ea5ec0451f42dc2b97f869b027a9cf696241cfc927cfc48d74ccc7b396ba41b" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/CMSIS-Atmel-1.1.0.tar.bz2", + "archiveFileName": "CMSIS-Atmel-1.1.0.tar.bz2", + "size": "1659108", + "checksum": "SHA-256:3ea5ec0451f42dc2b97f869b027a9cf696241cfc927cfc48d74ccc7b396ba41b" + } + ] + }, + { + "name": "espflash", + "version": "2.0.0", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "https://downloads.arduino.cc/tools/espflash_2.0.0_Linux_ARMv7.tar.gz", + "archiveFileName": "espflash_2.0.0_Linux_ARMv7.tar.gz", + "size": "2709225", + "checksum": "SHA-256:9c3df96c360e978186b44007667ca6e7c3d5a5104f7eb855fc212b3840e4805a" + }, + { + "host": "arm64-apple-darwin", + "url": "https://downloads.arduino.cc/tools/espflash_2.0.0_macOS_ARM64.tar.gz", + "archiveFileName": "espflash_2.0.0_macOS_ARM64.tar.gz", + "size": "2802102", + "checksum": "SHA-256:362db4880b2e46a758b0a223e0a4ed25faf1747dc4546f5ee50d9d33bab64966" + }, + { + "host": "arm64-linux-gnueabihf", + "url": "https://downloads.arduino.cc/tools/espflash_2.0.0_Linux_ARM64.tar.gz", + "archiveFileName": "espflash_2.0.0_Linux_ARM64.tar.gz", + "size": "2955417", + "checksum": "SHA-256:19532401fffd22e9b67de09c92a1eddd65aa2b47b369292aae844665198dd852" + }, + { + "host": "i686-mingw32", + "url": "https://downloads.arduino.cc/tools/espflash_2.0.0_Windows_64bit.zip", + "archiveFileName": "espflash_2.0.0_Windows_64bit.zip", + "size": "2898625", + "checksum": "SHA-256:8e6c5f6a39bd5358663766417e676dcc7236c8d5ab57bb51760c20bc99f394e1" + }, + { + "host": "x86_64-apple-darwin", + "url": "https://downloads.arduino.cc/tools/espflash_2.0.0_macOS_64bit.tar.gz", + "archiveFileName": "espflash_2.0.0_macOS_64bit.tar.gz", + "size": "2847601", + "checksum": "SHA-256:f5a7b65f679b2c4ad6d30af02377f6c0bdf3c2e20d32cbc3e5ac1af95cd8f0fd" + }, + { + "host": "x86_64-mingw32", + "url": "https://downloads.arduino.cc/tools/espflash_2.0.0_Windows_64bit.zip", + "archiveFileName": "espflash_2.0.0_Windows_64bit.zip", + "size": "2898625", + "checksum": "SHA-256:8e6c5f6a39bd5358663766417e676dcc7236c8d5ab57bb51760c20bc99f394e1" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "https://downloads.arduino.cc/tools/espflash_2.0.0_Linux_64bit.tar.gz", + "archiveFileName": "espflash_2.0.0_Linux_64bit.tar.gz", + "size": "3168742", + "checksum": "SHA-256:b234547df8a08339e461d0aab8130c344be6c48279642fac92bfe77084a5f0f9" + } + ] + }, + { + "name": "fwupdater", + "version": "0.1.9", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.9_Linux_ARM64.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.9_Linux_ARM64.tar.bz2", + "size": "23951209", + "checksum": "SHA-256:1878d10be00c1af98911cadeee03802bf23a4395d8f21dbbd9196741f3900d20" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.9_Linux_ARM.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.9_Linux_ARM.tar.bz2", + "size": "23894811", + "checksum": "SHA-256:9e4adf983d3a9b5882c33c0f1e06ef2db33194ec4f6e1a81841d718fa47d62b4" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.9_macOS_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.9_macOS_64bit.tar.bz2", + "size": "23761216", + "checksum": "SHA-256:84042ff991829f9333d6f437c0b6aacf4e409b6af440dbbfad03f88d7a9358d5" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.9_Linux_32bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.9_Linux_32bit.tar.bz2", + "size": "24067265", + "checksum": "SHA-256:d49339643d6b834893488d32f87e56f9d320ef557520bb8ea52856cf19805e16" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.9_Windows_32bit.zip", + "archiveFileName": "FirmwareUploader_0.1.9_Windows_32bit.zip", + "size": "23702667", + "checksum": "SHA-256:c586a7f5752a8af22008ab6fd74c8f8ffad760169d702ba3df003636e505f922" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.9_Windows_64bit.zip", + "archiveFileName": "FirmwareUploader_0.1.9_Windows_64bit.zip", + "size": "23847968", + "checksum": "SHA-256:a1e1622c48456f0eccef66e5c3a1bb012a7c5e64c45978d2ea729f66f0bc2083" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.9_Linux_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.9_Linux_64bit.tar.bz2", + "size": "24043342", + "checksum": "SHA-256:6097bc8eab1bedc0c8704b61a19556596d33ef6191548bc96d1744147de31a4a" + } + ] + }, + { + "name": "fwupdater", + "version": "0.1.7", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.7_Linux_ARM64.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.7_Linux_ARM64.tar.bz2", + "size": "19736165", + "checksum": "SHA-256:235f5e157cbe31f647bd8092f6e1146c796641e1fc0ae366222228636c62f2db" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.7_Linux_ARM.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.7_Linux_ARM.tar.bz2", + "size": "19698330", + "checksum": "SHA-256:0f83ed1cfa04adc35dd828b17b96903c075b8c71116d2c41f3db29d20e838b46" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.7_macOS_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.7_macOS_64bit.tar.bz2", + "size": "19556591", + "checksum": "SHA-256:2255013a1065a13ff3980678888b56aecce38d236944f53a64aae6889aa567ec" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.7_Linux_32bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.7_Linux_32bit.tar.bz2", + "size": "20037466", + "checksum": "SHA-256:5c2a04c6f84bca68a77f884d905de67970035a652d4113e2772effa03f151ac9" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.7_Windows_32bit.zip", + "archiveFileName": "FirmwareUploader_0.1.7_Windows_32bit.zip", + "size": "19504654", + "checksum": "SHA-256:28377ebe89d22a2a8246865aba93d215ed1f0c99cdbff9ae4f0149dec5bee20a" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.7_Windows_64bit.zip", + "archiveFileName": "FirmwareUploader_0.1.7_Windows_64bit.zip", + "size": "19693655", + "checksum": "SHA-256:47e93e135cc074305e03b7b156d8a5788611063ed28e0b8d98bc84d94ab69f27" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.7_Linux_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.7_Linux_64bit.tar.bz2", + "size": "20013555", + "checksum": "SHA-256:95cf13032c1a83a175ed6b87f2e6f3f33a5a5c656e98ab7caadbc07d29f6eed0" + } + ] + }, + { + "name": "fwupdater", + "version": "0.1.5", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.5_Linux_ARM64.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.5_Linux_ARM64.tar.bz2", + "size": "15621405", + "checksum": "SHA-256:e09d3880d9fd51b5257c44c6304e12422523dfdc1c378a978e9596caadac6a89" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.5_Linux_ARM.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.5_Linux_ARM.tar.bz2", + "size": "15573837", + "checksum": "SHA-256:6cbecb92ef0a8014aef3b8692cf64869d13c2fc0483332695ef42fef39c0b989" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.5_macOS_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.5_macOS_64bit.tar.bz2", + "size": "15449203", + "checksum": "SHA-256:256f884a295a7b49f08124549ca25bd16e5ff46c0f50ea73e163363b40ec2c60" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.5_Linux_32bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.5_Linux_32bit.tar.bz2", + "size": "16099680", + "checksum": "SHA-256:32cf24ae74d0b11ae5d41cf0b7d99a30ed5120a54ca06bfa9f5d7f02b03ad7f7" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.5_Windows_32bit.zip", + "archiveFileName": "FirmwareUploader_0.1.5_Windows_32bit.zip", + "size": "15392456", + "checksum": "SHA-256:ed08415371b126bf28fdefedc7527f5679ae822e23392a918f687ffa6614a299" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.5_Windows_64bit.zip", + "archiveFileName": "FirmwareUploader_0.1.5_Windows_64bit.zip", + "size": "15620440", + "checksum": "SHA-256:193bde05298c7cde87b0b212eec2e104650cf44a7fe9dec44df6fde2299686e8" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.5_Linux_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.5_Linux_64bit.tar.bz2", + "size": "16077879", + "checksum": "SHA-256:e619e67e5296c0e1a76bfb32b646972340083578ab216e1d298a2d3e9ddfe04c" + } + ] + }, + { + "name": "fwupdater", + "version": "0.1.4", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "https://downloads.arduino.cc/tools/FirmwareUploader_0.1.4_Linux_ARM64.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.4_Linux_ARM64.tar.bz2", + "size": "17042502", + "checksum": "SHA-256:d68ddc8c78902f164f701d974d2b0deffdbe3a58bd4d62f0d2e10263c2292c0b" + }, + { + "host": "arm-linux-gnueabihf", + "url": "https://downloads.arduino.cc/tools/FirmwareUploader_0.1.4_Linux_ARM.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.4_Linux_ARM.tar.bz2", + "size": "16992130", + "checksum": "SHA-256:93503377d29a84f63433a608f3a2320ef27ca7f4b54a5cef6857ad16aa464842" + }, + { + "host": "i386-apple-darwin11", + "url": "https://downloads.arduino.cc/tools/FirmwareUploader_0.1.4_macOS_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.4_macOS_64bit.tar.bz2", + "size": "16913255", + "checksum": "SHA-256:f4c5542c209e5b7f09b020c9714889d846e8e6a96d1e2ab6e22cdae8d3ad8ef4" + }, + { + "host": "i686-linux-gnu", + "url": "https://downloads.arduino.cc/tools/FirmwareUploader_0.1.4_Linux_32bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.4_Linux_32bit.tar.bz2", + "size": "17369582", + "checksum": "SHA-256:794192e4463191308687ca10d361f6e86d06b57384800ead82ff9f1c32e3462b" + }, + { + "host": "i686-mingw32", + "url": "https://downloads.arduino.cc/tools/FirmwareUploader_0.1.4_Windows_32bit.zip", + "archiveFileName": "FirmwareUploader_0.1.4_Windows_32bit.zip", + "size": "16792636", + "checksum": "SHA-256:8bc96ea4a8e8232b7798feda9bd5e2e745c14ba7584b936a6588dcd44e69bcca" + }, + { + "host": "x86_64-mingw32", + "url": "https://downloads.arduino.cc/tools/FirmwareUploader_0.1.4_Windows_64bit.zip", + "archiveFileName": "FirmwareUploader_0.1.4_Windows_64bit.zip", + "size": "16940370", + "checksum": "SHA-256:29b753610b9b285a31471fe35fa7938f54d461b773f3fcf4e5bff27ca72c20e8" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "https://downloads.arduino.cc/tools/FirmwareUploader_0.1.4_Linux_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.4_Linux_64bit.tar.bz2", + "size": "17346963", + "checksum": "SHA-256:e7e5a7f3c3f1c363a4e1e3cce3bbd48faa806da9153ade19336c68adcbc80464" + } + ] + }, + { + "name": "fwupdater", + "version": "0.1.11", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.11_Linux_ARM64.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.11_Linux_ARM64.tar.bz2", + "size": "24014292", + "checksum": "SHA-256:3edf202e8f1a467956117299c129ca93edcd17ec7a9e03361133a14421e575b9" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.11_Linux_ARM.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.11_Linux_ARM.tar.bz2", + "size": "23960584", + "checksum": "SHA-256:052381391c579184513c07c3513386b396652209b59d79f1ea96fabb593852cd" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.11_macOS_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.11_macOS_64bit.tar.bz2", + "size": "23830733", + "checksum": "SHA-256:d50548c88400fe7dbb91764cbb136de397a7146c9278bae977da5a533e982632" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.11_Linux_32bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.11_Linux_32bit.tar.bz2", + "size": "24080234", + "checksum": "SHA-256:4e1a57aaf4176013fd73ba89ae8495a1a7fc78336b9059ba87f6cfcab78f709e" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.11_Windows_32bit.zip", + "archiveFileName": "FirmwareUploader_0.1.11_Windows_32bit.zip", + "size": "23763274", + "checksum": "SHA-256:9d4753f524b656326ee78304f2b0096c2906295f1e5d7e47a2a8cd1d88b88fc9" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.11_Windows_64bit.zip", + "archiveFileName": "FirmwareUploader_0.1.11_Windows_64bit.zip", + "size": "23846832", + "checksum": "SHA-256:00281ebf6255cce999c021a61af44cfb790471458fbfcd30339548ff7139be2f" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.11_Linux_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.11_Linux_64bit.tar.bz2", + "size": "24056311", + "checksum": "SHA-256:169d2e4992782ee1a21c7717a5cdfbff561f9a30bfe9ae7ad07bbf817b5bae9d" + } + ] + }, + { + "name": "fwupdater", + "version": "0.1.8", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.8_Linux_ARM64.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.8_Linux_ARM64.tar.bz2", + "size": "21842771", + "checksum": "SHA-256:1518427a1f7862c10f21c87ffaf29550bba6cff0195bcd1954e683df4e60b8af" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.8_Linux_ARM.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.8_Linux_ARM.tar.bz2", + "size": "21801813", + "checksum": "SHA-256:221dfa1b928bf772d8f92039ae6c41b50d45bcf8447b00b55f5ca3df90e0346c" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.8_macOS_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.8_macOS_64bit.tar.bz2", + "size": "21661287", + "checksum": "SHA-256:7d9c1c6c44d21cc9c88fa429ccad122ee40101f6f8c77fb03643be8c674b7a46" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.8_Linux_32bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.8_Linux_32bit.tar.bz2", + "size": "22050201", + "checksum": "SHA-256:b4f2f7cc3ced6053b22ac252cff2105b24474bbff468149beb7161e4c42ddd44" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.8_Windows_32bit.zip", + "archiveFileName": "FirmwareUploader_0.1.8_Windows_32bit.zip", + "size": "21595791", + "checksum": "SHA-256:f67fb4d74b518a06e0ae2109040a5df81def123287f47856ff64c67b32e2e801" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.8_Windows_64bit.zip", + "archiveFileName": "FirmwareUploader_0.1.8_Windows_64bit.zip", + "size": "21918177", + "checksum": "SHA-256:3edc59cc39ef8e0a863f8619c92315494fdb5a3c9d7d165533fe89c10d0b8d3a" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.8_Linux_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.8_Linux_64bit.tar.bz2", + "size": "22026254", + "checksum": "SHA-256:af0b39ed9468554b69305ef195b32ce00564190d50d19b7c467b34e3b76dd9e3" + } + ] + }, + { + "name": "fwupdater", + "version": "0.1.12", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.12_Linux_ARM64.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.12_Linux_ARM64.tar.bz2", + "size": "25967430", + "checksum": "SHA-256:691461e64fe075e9a79801347c2bd895fb72f8f2c45a7cd49056c6ad9efe8fc4" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.12_Linux_ARM.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.12_Linux_ARM.tar.bz2", + "size": "25936245", + "checksum": "SHA-256:855fa0a9b942c3ee18906efc510bdfe30bf3334ff28ffbb476e648ff30033847" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.12_macOS_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.12_macOS_64bit.tar.bz2", + "size": "25792860", + "checksum": "SHA-256:a470361b57f86ddfcaecd274d844af51ee1d23a71cd6c26e30fcef2152d1a03f" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.12_Linux_32bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.12_Linux_32bit.tar.bz2", + "size": "26097546", + "checksum": "SHA-256:2fec2bdfd20ad4950bc9ba37108dc2a7c152f569174279c0697efe1f5a0db781" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.12_Windows_32bit.zip", + "archiveFileName": "FirmwareUploader_0.1.12_Windows_32bit.zip", + "size": "25743641", + "checksum": "SHA-256:558568b453caa1c821def8cc6d34555d0c910eb7e7e871de3ae1c39ae6f01bdd" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.12_Windows_64bit.zip", + "archiveFileName": "FirmwareUploader_0.1.12_Windows_64bit.zip", + "size": "25851428", + "checksum": "SHA-256:ec16de33620985434280c92c3c322257b89bb67adf8fd4d5dd5f9467ea1e9e40" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.12_Linux_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.12_Linux_64bit.tar.bz2", + "size": "26073327", + "checksum": "SHA-256:ce57d0afef30cb7d3513f5da326346c99d6bf4923bbc2200634086811f3fb31e" + } + ] + }, + { + "name": "fwupdater", + "version": "0.1.3", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.3_Linux_ARM64.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.3_Linux_ARM64.tar.bz2", + "size": "15557114", + "checksum": "SHA-256:7b2ebd25998c441b4a4da1cc5bf227285f0fd321b2107497d29910213d8ad039" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.3_Linux_ARM.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.3_Linux_ARM.tar.bz2", + "size": "15734716", + "checksum": "SHA-256:91a85be7d657b4f31f69aba7e1a0390234d4ede5d138474b3eef928119a21df4" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.3_macOS_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.3_macOS_64bit.tar.bz2", + "size": "15832036", + "checksum": "SHA-256:ba53f679baca0f5ab6bbd4991da89702437932d67ae6c589c4da6ced3a4dc66b" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.3_Linux_32bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.3_Linux_32bit.tar.bz2", + "size": "15794726", + "checksum": "SHA-256:22f72fee3a1682c30b0bf4579a1ecc2759a5063c2be9342dd3c46858db43d7ef" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.3_Windows_32bit.zip", + "archiveFileName": "FirmwareUploader_0.1.3_Windows_32bit.zip", + "size": "16139436", + "checksum": "SHA-256:d23dd1ef5ea19b46633980b47964834d0718d11b375c64725b28d4e39660ff3c" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.3_Windows_64bit.zip", + "archiveFileName": "FirmwareUploader_0.1.3_Windows_64bit.zip", + "size": "16189555", + "checksum": "SHA-256:fd6eb93b2737ae3a49800d4f42abd7fa925e985b043d3a418412f26dc61b3baa" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.3_Linux_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.3_Linux_64bit.tar.bz2", + "size": "15927812", + "checksum": "SHA-256:1f998f8f5d9ef9487beb00d2f434682cbcdc4b13337fd82271df8ad931121324" + } + ] + }, + { + "name": "fwupdater", + "version": "0.1.2", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.2_Linux_ARM64.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.2_Linux_ARM64.tar.bz2", + "size": "13015184", + "checksum": "SHA-256:057243d5ee65b14772035a2402ac48cefb208e59102f75928b4004530227cd47" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.2_Linux_ARM.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.2_Linux_ARM.tar.bz2", + "size": "13063327", + "checksum": "SHA-256:824dec1d62c1a8b835e2692991b017ce21cd0c95287c9282ff9621620157b3d6" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.2_macOS_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.2_macOS_64bit.tar.bz2", + "size": "13201523", + "checksum": "SHA-256:01f952aa365ddbf2072e3181f95f1b0a82d9c85bd1707a4b913e7500f833ff5f" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.2_Linux_32bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.2_Linux_32bit.tar.bz2", + "size": "13222221", + "checksum": "SHA-256:973ce3cd2d604f8750c9b62dabccdf8689013f0380d62eee29f8d6427dd37e8e" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.2_Windows_32bit.zip", + "archiveFileName": "FirmwareUploader_0.1.2_Windows_32bit.zip", + "size": "13589237", + "checksum": "SHA-256:e3986ae565b658a4bcaf50c0592c5801166ade30255571154ad5729f9b8649eb" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.2_Windows_64bit.zip", + "archiveFileName": "FirmwareUploader_0.1.2_Windows_64bit.zip", + "size": "13657381", + "checksum": "SHA-256:a3094a4c9589812e2c9751ce324315de9011481575c53a772b3c4950cb0310d0" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.2_Linux_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.2_Linux_64bit.tar.bz2", + "size": "13255805", + "checksum": "SHA-256:9303c50f051b459ba89a4b218bcb39c3348f469c55feb2c63ac53f7f12eb5048" + } + ] + }, + { + "name": "fwupdater", + "version": "0.1.1", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater_0.1.1_Linux_ARM64.tar.bz2", + "archiveFileName": "FirmwareUpdater_0.1.1_Linux_ARM64.tar.bz2", + "size": "13014398", + "checksum": "SHA-256:0be6adb21791fb64134356b2ef56c9054e19fb7522e368cad9ee5c1222835e13" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater_0.1.1_Linux_ARM.tar.bz2", + "archiveFileName": "FirmwareUpdater_0.1.1_Linux_ARM.tar.bz2", + "size": "13062843", + "checksum": "SHA-256:65ddc38d9cfa555979bf9c7a371f887561b7d7af6a07a6adfb354628a8e69801" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater_0.1.1_macOS_64bit.tar.bz2", + "archiveFileName": "FirmwareUpdater_0.1.1_macOS_64bit.tar.bz2", + "size": "13201438", + "checksum": "SHA-256:8c7602dee33e6806eefc0525a9f43512c4d89201869e677ad8d34f7e82276e38" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater_0.1.1_Linux_32bit.tar.bz2", + "archiveFileName": "FirmwareUpdater_0.1.1_Linux_32bit.tar.bz2", + "size": "13221805", + "checksum": "SHA-256:22bd6410b39043b0608285a51fbad7abcef0b8361f54936b362935a9bbddeeba" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater_0.1.1_Windows_32bit.zip", + "archiveFileName": "FirmwareUpdater_0.1.1_Windows_32bit.zip", + "size": "13589219", + "checksum": "SHA-256:29ecdd651336eca9fbddde96415087e2f19a2d7330e1938e256d7acf31a0ff74" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater_0.1.1_Windows_64bit.zip", + "archiveFileName": "FirmwareUpdater_0.1.1_Windows_64bit.zip", + "size": "13657363", + "checksum": "SHA-256:a2ff1b6672e56c97aa4eccfa4258b0d91a726d0116f51227e6cc2c5c984afb5d" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater_0.1.1_Linux_64bit.tar.bz2", + "archiveFileName": "FirmwareUpdater_0.1.1_Linux_64bit.tar.bz2", + "size": "13255213", + "checksum": "SHA-256:ba4b1b620796e352da2821bb1101cd86340649badf67abf7e7d030efee107159" + } + ] + }, + { + "name": "fwupdater", + "version": "0.0.6", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.6-linuxarm64.tar.bz2", + "archiveFileName": "FirmwareUpdater-0.0.6-linuxarm64.tar.bz2", + "size": "7149332", + "checksum": "SHA-256:d6a2e72b4869c031b434380da6e6a8a4a6269f8ee6312a3d23e85ea133a37ae9" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.6-linuxarm.tar.bz2", + "archiveFileName": "FirmwareUpdater-0.0.6-linuxarm.tar.bz2", + "size": "7180391", + "checksum": "SHA-256:276f027e552eb620064b09591c7a7c79927c93c017428436c81f71bad666803c" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.6-osx.tar.bz2", + "archiveFileName": "FirmwareUpdater-0.0.6-osx.tar.bz2", + "size": "7368819", + "checksum": "SHA-256:3584d7581ff2469bdfde9de6f57d87b2a0370de5c902e9df687b7322a5405018" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.6-linux32.tar.bz2", + "archiveFileName": "FirmwareUpdater-0.0.6-linux32.tar.bz2", + "size": "7334059", + "checksum": "SHA-256:8c4e562a8e6fa3d916c4bf6bb24d7eec0df013d8cc45dff187e5c63086a92c11" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.6-windows.zip", + "archiveFileName": "FirmwareUpdater-0.0.6-windows.zip", + "size": "7580663", + "checksum": "SHA-256:33a92661f43b8d025ca5f57be1116537ed153703067d9c86297619d58988feff" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.6-linux64.tar.bz2", + "archiveFileName": "FirmwareUpdater-0.0.6-linux64.tar.bz2", + "size": "7383853", + "checksum": "SHA-256:0e9132518acfe66e5a4e17ba4b6dd0c89dbd90cc0d9b4a54e007ac24d51fd36a" + } + ] + }, + { + "name": "fwupdater", + "version": "0.1.10", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.10_Linux_ARM64.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.10_Linux_ARM64.tar.bz2", + "size": "23953999", + "checksum": "SHA-256:8fb3edaf2b9439ec5326e489612cac30a0cf997ab350a98d465a50e1ef2e076c" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.10_Linux_ARM.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.10_Linux_ARM.tar.bz2", + "size": "23897570", + "checksum": "SHA-256:da234dcb71445d17d504aff700948f0e3a1b16cc8acf4b517134fffe0cac79a7" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.10_macOS_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.10_macOS_64bit.tar.bz2", + "size": "23763971", + "checksum": "SHA-256:9bae4139f5da7a046c51bf20b12e2bc062618a654f601113bcf32217ac4611f9" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.10_Linux_32bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.10_Linux_32bit.tar.bz2", + "size": "24067265", + "checksum": "SHA-256:6d843ad2236e34c0fa7a0ce497bafdbb0870e6c00d181e9d16fc4a5b2d37e5b9" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.10_Windows_32bit.zip", + "archiveFileName": "FirmwareUploader_0.1.10_Windows_32bit.zip", + "size": "23705443", + "checksum": "SHA-256:b1153781b68f1a564309d7f63ca9c389e94194c29be3ec3944f17c9c62dd7b61" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.10_Windows_64bit.zip", + "archiveFileName": "FirmwareUploader_0.1.10_Windows_64bit.zip", + "size": "23847822", + "checksum": "SHA-256:0b8bb8cfcecff4965243507efaefcf679a5eb8f99748890c0d83fda5dc8a3a4b" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.10_Linux_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.10_Linux_64bit.tar.bz2", + "size": "24043342", + "checksum": "SHA-256:31b841a02ef001857e337733cac3d962abb8d3f66a0ae31bbb46d4673a8ed4cb" + } + ] + }, + { + "name": "fwupdater", + "version": "0.1.6", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.6_Linux_ARM64.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.6_Linux_ARM64.tar.bz2", + "size": "17186826", + "checksum": "SHA-256:538a24a8f7c6831477d39ae166695ed411eb29a6d5aec3b2bc69bc1ef7b4d7b1" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.6_Linux_ARM.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.6_Linux_ARM.tar.bz2", + "size": "17147561", + "checksum": "SHA-256:1b392a5ec7d4b7f8fd052e0e249f85538fbcce790bc5a442980ce6be215b5872" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.6_macOS_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.6_macOS_64bit.tar.bz2", + "size": "17000606", + "checksum": "SHA-256:2d4af33020a0291e54197b133de8f278a8d68c0272e0bc93953941fd06508694" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.6_Linux_32bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.6_Linux_32bit.tar.bz2", + "size": "17458014", + "checksum": "SHA-256:67b413dd15afca65d327e45329b1c2e64614126ef1fae27a1323155bbdc74c20" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.6_Windows_32bit.zip", + "archiveFileName": "FirmwareUploader_0.1.6_Windows_32bit.zip", + "size": "16950481", + "checksum": "SHA-256:4be9f5208841150ffc0148feccd819d77c7fbb477f41597fc3198f633a09a8ac" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.6_Windows_64bit.zip", + "archiveFileName": "FirmwareUploader_0.1.6_Windows_64bit.zip", + "size": "17079617", + "checksum": "SHA-256:2490cdceb24b17d8269d8c144172c02c37a81c2275ed395973d22f0017d53713" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUploader_0.1.6_Linux_64bit.tar.bz2", + "archiveFileName": "FirmwareUploader_0.1.6_Linux_64bit.tar.bz2", + "size": "17433263", + "checksum": "SHA-256:e299bea991778a388e611c3e9a4b1f5a7d5cf1b121465f7a843570602d0b6f39" + } + ] + }, + { + "name": "fwupdater", + "version": "0.0.9", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater_0.0.9_Linux_ARM64.tar.bz2", + "archiveFileName": "FirmwareUpdater_0.0.9_Linux_ARM64.tar.bz2", + "size": "13014703", + "checksum": "SHA-256:3a41fac33917c4b5d8f5e0720afa780b2250b2561dd6090ed5338d7ab147524f" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater_0.0.9_Linux_ARM.tar.bz2", + "archiveFileName": "FirmwareUpdater_0.0.9_Linux_ARM.tar.bz2", + "size": "13063437", + "checksum": "SHA-256:3cde04fa96479bb5342f07752b9cbabdf159f1dcbe7074b642a163ff2a363a28" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater_0.0.9_macOS_64bit.tar.bz2", + "archiveFileName": "FirmwareUpdater_0.0.9_macOS_64bit.tar.bz2", + "size": "13202065", + "checksum": "SHA-256:26c0b8764a67f945037a461ead756bee0b453e383dee741548d03322327bd17d" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater_0.0.9_Linux_32bit.tar.bz2", + "archiveFileName": "FirmwareUpdater_0.0.9_Linux_32bit.tar.bz2", + "size": "13221786", + "checksum": "SHA-256:a45c536be798e6fc023044ee13911b9b567fb9d0b1c41c5cc9b722346f306425" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater_0.0.9_Windows_64bit.zip", + "archiveFileName": "FirmwareUpdater_0.0.9_Windows_64bit.zip", + "size": "13658133", + "checksum": "SHA-256:51eacfcaba9279ef42050d15cf86d98e79511879a84a8e960a8994f6343f74a8" + }, + { + "host": "x86_64-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater_0.0.9_Windows_32bit.zip", + "archiveFileName": "FirmwareUpdater_0.0.9_Windows_32bit.zip", + "size": "13589082", + "checksum": "SHA-256:523b2f09a38ef36dcd96558a31e072c5b244e511690326a03af9406eccda2650" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater_0.0.9_Linux_64bit.tar.bz2", + "archiveFileName": "FirmwareUpdater_0.0.9_Linux_64bit.tar.bz2", + "size": "13255356", + "checksum": "SHA-256:89d08d4b75dae676bc6e982723f3b07ee5ab4c2fe6071fc97fe850697a0c5398" + } + ] + }, + { + "name": "fwupdater", + "version": "0.0.8", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.8-linuxarm64.tar.bz2", + "archiveFileName": "FirmwareUpdater-0.0.8-linuxarm64.tar.bz2", + "size": "19952489", + "checksum": "SHA-256:b6846bb84034e6a8486ce3165dabeb9b32b4fd3804639cd6137a37a00d0157c8" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.8-linuxarm.tar.bz2", + "archiveFileName": "FirmwareUpdater-0.0.8-linuxarm.tar.bz2", + "size": "19984154", + "checksum": "SHA-256:c027389528e9b04d622167943fe04badbd2f63923f08cc1b22935e5158b2545b" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.8-osx.tar.bz2", + "archiveFileName": "FirmwareUpdater-0.0.8-osx.tar.bz2", + "size": "20091397", + "checksum": "SHA-256:635cbe786cd11ead26e5af0662991d8c3b647469f1874195eeb7f1dba5530b39" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.8-linux32.tar.bz2", + "archiveFileName": "FirmwareUpdater-0.0.8-linux32.tar.bz2", + "size": "20137214", + "checksum": "SHA-256:e1f43aa225e6e2ad1f2bccc07898ddb439e980905385a8d7e0615f804a69eee8" + }, + { + "host": "i686-mingw32", + "url": "https://downloads.arduino.cc/tools/FirmwareUpdater_0.0.8_Windows_32bit.zip", + "archiveFileName": "FirmwareUpdater_0.0.8_Windows_32bit.zip", + "size": "13578670", + "checksum": "SHA-256:dc3ce2e824b2f8ab6ee4c7d2f836311450d60825db95cbb51eeb076a28a1e2af" + }, + { + "host": "x86_64-mingw32", + "url": "https://downloads.arduino.cc/tools/FirmwareUpdater_0.0.8_Windows_64bit.zip", + "archiveFileName": "FirmwareUpdater_0.0.8_Windows_64bit.zip", + "size": "13645709", + "checksum": "SHA-256:c3386fdc440638186541f92f920462865308e0f5dde9f45e4dd1c35d2570b808" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.8-linux64.tar.bz2", + "archiveFileName": "FirmwareUpdater-0.0.8-linux64.tar.bz2", + "size": "20167410", + "checksum": "SHA-256:423f67767d5b861a3c39ca6f6a18b2358a30b76bdc3d3d3d870e102b2b2271a8" + } + ] + }, + { + "name": "fwupdater", + "version": "0.0.7", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.7-linuxarm64.tar.bz2", + "archiveFileName": "FirmwareUpdater-0.0.7-linuxarm64.tar.bz2", + "size": "12897349", + "checksum": "SHA-256:620f81148b13f70cdecbe59bbcbf605c7e0aae85f9cbee8ec48202f6018f23ce" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.7-linuxarm.tar.bz2", + "archiveFileName": "FirmwareUpdater-0.0.7-linuxarm.tar.bz2", + "size": "12929770", + "checksum": "SHA-256:b6e09c07e816a35935585db07e07437023d44e66d1d2f05861708ea6ceff7629" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.7-osx.tar.bz2", + "archiveFileName": "FirmwareUpdater-0.0.7-osx.tar.bz2", + "size": "13064291", + "checksum": "SHA-256:647ad713d68a1531ba56c88e5b3db9516cc0072ca1d401de5142d85ffcfd931a" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.7-linux32.tar.bz2", + "archiveFileName": "FirmwareUpdater-0.0.7-linux32.tar.bz2", + "size": "13077590", + "checksum": "SHA-256:05e26d5df253246cf68ba8a8f5f2de1032ac6f4d7af5310b8080ef6f54030fb4" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.7-windows.zip", + "archiveFileName": "FirmwareUpdater-0.0.7-windows.zip", + "size": "13337495", + "checksum": "SHA-256:e881dd8a4bbb35f7271157e8dd226c2e032ac1115106170b0aaf9c969817df86" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/FirmwareUpdater-0.0.7-linux64.tar.bz2", + "archiveFileName": "FirmwareUpdater-0.0.7-linux64.tar.bz2", + "size": "13134534", + "checksum": "SHA-256:e8a36b7ae19060748b8b0540c9c0c9341d8d4c7a630441922a030223f767258d" + } + ] + }, + { + "name": "rp2040tools", + "version": "1.0.6", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.6-linux_arm64.tar.bz2", + "archiveFileName": "rp2040tools-1.0.6-linux_arm64.tar.bz2", + "size": "9037783", + "checksum": "SHA-256:1a2a6cb1abf1f7b8198d494c8d8e838700297d748877be8232e02aaa5ca8d0df" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.6-linux_arm.tar.bz2", + "archiveFileName": "rp2040tools-1.0.6-linux_arm.tar.bz2", + "size": "8702508", + "checksum": "SHA-256:084a29accf0014bc79723fbb40057b95299c7ae63876f74494a077c987014cc3" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.6-darwin_amd64.tar.bz2", + "archiveFileName": "rp2040tools-1.0.6-darwin_amd64.tar.bz2", + "size": "1717967", + "checksum": "SHA-256:4e32aa4b8f36db40a17bfbdfd34d80da91710e30c3887732bf0c0bf0b02840a7" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.6-linux_386.tar.bz2", + "archiveFileName": "rp2040tools-1.0.6-linux_386.tar.bz2", + "size": "6604083", + "checksum": "SHA-256:ef339e2e0f5c7d5464b9911b612c634767daba39a6be977a1ffa41c95b9827a1" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.6-windows_386.tar.bz2", + "archiveFileName": "rp2040tools-1.0.6-windows_386.tar.bz2", + "size": "3145329", + "checksum": "SHA-256:26a5daebba68c2348dade33716a6e379ded89895ef0e49df1332964a724f6170" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.6-linux_amd64.tar.bz2", + "archiveFileName": "rp2040tools-1.0.6-linux_amd64.tar.bz2", + "size": "6108121", + "checksum": "SHA-256:6e2ea818db1ff57f2d8e1e3010fbc5bdb5f28ff44f5a68900cae41d7d709f738" + } + ] + }, + { + "name": "rp2040tools", + "version": "1.0.5", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.5-linux_arm64.tar.bz2", + "archiveFileName": "rp2040tools-1.0.5-linux_arm64.tar.bz2", + "size": "9069986", + "checksum": "SHA-256:951c8834c3fa740e0c6fd15a484d6c6f6be4e461baf410e568ef0e47c1500b8f" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.5-linux_arm.tar.bz2", + "archiveFileName": "rp2040tools-1.0.5-linux_arm.tar.bz2", + "size": "8729125", + "checksum": "SHA-256:621a9553c8f1f3a5fcd96540f1994799795dbc74ceaba79f64224665a67ca6ea" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.5-darwin_amd64.tar.bz2", + "archiveFileName": "rp2040tools-1.0.5-darwin_amd64.tar.bz2", + "size": "1735713", + "checksum": "SHA-256:be2aa4c61206420f9aeac753deba6b365b40ccb2785536fbf8f16dc2ee3520b7" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.5-linux_386.tar.bz2", + "archiveFileName": "rp2040tools-1.0.5-linux_386.tar.bz2", + "size": "6645102", + "checksum": "SHA-256:83d9adcbb7a42689b87a4fc968dad458d3770fbae364542e1f7e35da07eba71f" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.5-windows_386.tar.bz2", + "archiveFileName": "rp2040tools-1.0.5-windows_386.tar.bz2", + "size": "3180797", + "checksum": "SHA-256:698b5193f7f8efa0ecc01e75b505ec6c815ba7d59568babb2661d3871674db53" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.5-linux_amd64.tar.bz2", + "archiveFileName": "rp2040tools-1.0.5-linux_amd64.tar.bz2", + "size": "6138070", + "checksum": "SHA-256:6cb2554a28450e30265beeb64361d0d2ab822fc9daa9d5bd0c7963ae51e80526" + } + ] + }, + { + "name": "rp2040tools", + "version": "1.0.2", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.2-linux_arm64.tar.bz2", + "archiveFileName": "rp2040tools-1.0.2-linux_arm64.tar.bz2", + "size": "5650185", + "checksum": "SHA-256:4f102352d702fc89757c119cd46c231b998f9900956183b0f7874994dc3965d5" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.2-linux_arm.tar.bz2", + "archiveFileName": "rp2040tools-1.0.2-linux_arm.tar.bz2", + "size": "5438204", + "checksum": "SHA-256:8981155a50bac8c7e3621f22b8e9c87f7d6aace4e28dddb03f41d704301da94d" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.2-darwin_amd64.tar.bz2", + "archiveFileName": "rp2040tools-1.0.2-darwin_amd64.tar.bz2", + "size": "1665895", + "checksum": "SHA-256:039e0ddb7a407c5c20c3ef6def8d7cc2abdc7a4fc6dcb039abb3b41c4791f69f" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.2-linux_386.tar.bz2", + "archiveFileName": "rp2040tools-1.0.2-linux_386.tar.bz2", + "size": "4423488", + "checksum": "SHA-256:9af1aaf46402ab27d60a6b5d28da5ab8807f3099d78ee6e681bf7a36911ee690" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.2-windows_386.tar.bz2", + "archiveFileName": "rp2040tools-1.0.2-windows_386.tar.bz2", + "size": "2493234", + "checksum": "SHA-256:8aa684c431b1194d9af4958b116a0a96e4ebf6c90764f9f3420db0515dc6e2c7" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/rp2040tools-1.0.2-linux_amd64.tar.bz2", + "archiveFileName": "rp2040tools-1.0.2-linux_amd64.tar.bz2", + "size": "4180308", + "checksum": "SHA-256:f6faafdfdf3cb780b884fe7d092679963e95f88ea78a9ed38312c511045d15c7" + } + ] + }, + { + "name": "bossac", + "version": "1.9.1-arduino1", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino1-linuxaarch64.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino1-linuxaarch64.tar.gz", + "size": "442657", + "checksum": "SHA-256:b271013841e1e25ee55f241e8c50a56ed775d3b322844e1e3099231ba17f3868" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino1-linuxarm.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino1-linuxarm.tar.gz", + "size": "361799", + "checksum": "SHA-256:b42061d2fa2dbd6910d0d295e024f2cff7bb44f3e2ecc0bc2fe71a1f31b0ecba" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino1-windows.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino1-windows.tar.gz", + "size": "1260118", + "checksum": "SHA-256:fe2d6ef78ca711c78e104e258357ed06b09e95e9356dc72d8d2c9f6670af4b7a" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino1-linux32.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino1-linux32.tar.gz", + "size": "384792", + "checksum": "SHA-256:eec622b8b5a8642af94ec23febfe14c928edd734f144db73b146bf6708d2057f" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino1-osx.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino1-osx.tar.gz", + "size": "47835", + "checksum": "SHA-256:c356632f98d5bae9b4f5d3ad823a5ee89b23078c2b835e8ac39a208f4855b0e6" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino1-linux64.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino1-linux64.tar.gz", + "size": "399453", + "checksum": "SHA-256:d3d324a3503a8db825c01f3b38519e4d4824c4d0e42cb399a16c1e074f9a9a86" + } + ] + }, + { + "name": "bossac", + "version": "1.8.0-48-gb176eee", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/bossac-1.8-48-gb176eee-arm-linux-gnueabihf.tar.gz", + "archiveFileName": "bossac-1.8-48-gb176eee-arm-linux-gnueabihf.tar.gz", + "size": "34825", + "checksum": "SHA-256:2001e4a592f3aefd22f213b1ddd6f5d8d5e74bd04080cf1b97c24cbaa81b10ed" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/bossac-1.8-48-gb176eee-i686-w64-mingw32.tar.gz", + "archiveFileName": "bossac-1.8-48-gb176eee-i686-w64-mingw32.tar.gz", + "size": "91219", + "checksum": "SHA-256:4523a6897f3dfd673fe821c5cfbac8d6a12782e7a36b312b9ee7d41deec2a10a" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.8-48-gb176eee-i486-linux-gnu.tar.gz", + "archiveFileName": "bossac-1.8-48-gb176eee-i486-linux-gnu.tar.gz", + "size": "37374", + "checksum": "SHA-256:4c7492f876b8269aa9d8bcaad3aeda31acf1a0292383093b6d9f5f1d23fdafc3" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/tools/bossac-1.8-48-gb176eee-i386-apple-darwin16.1.0.tar.gz", + "archiveFileName": "bossac-1.8-48-gb176eee-i386-apple-darwin16.1.0.tar.gz", + "size": "39150", + "checksum": "SHA-256:581ecc16021de36638ae14e9e064ffb4a1d532a11502f4252da8bcdf5ce1d649" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.8-48-gb176eee-x86_64-linux-gnu.tar.gz", + "archiveFileName": "bossac-1.8-48-gb176eee-x86_64-linux-gnu.tar.gz", + "size": "37798", + "checksum": "SHA-256:1347eec67f5b90b785abdf6c8a8aa59129d0c016de7ff9b5ac1690378eacca3c" + } + ] + }, + { + "name": "bossac", + "version": "1.6-arduino", + "systems": [ + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/bossac-1.6-arduino-mingw32.tar.gz", + "archiveFileName": "bossac-1.6-arduino-mingw32.tar.gz", + "size": "222517", + "checksum": "SHA-256:b59d64d3f7a43c894d0fba2dd1241bbaeefedf8c902130a24d8ec63b08f9ff6a" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.6-arduino-i486-linux-gnu.tar.gz", + "archiveFileName": "bossac-1.6-arduino-i486-linux-gnu.tar.gz", + "size": "30072", + "checksum": "SHA-256:5c320bf5cfdbf03e3f648642e6de325e459a061fcf96b2215cb955263f7467b2" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/tools/bossac-1.6-arduino-i386-apple-darwin14.4.0.tar.gz", + "archiveFileName": "bossac-1.6-arduino-i386-apple-darwin14.4.0.tar.gz", + "size": "64538", + "checksum": "SHA-256:6b3b686a782b6587c64c85db80085c9089c5ea1b051e49e5af17b3c6109c8efa" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.6-arduino-x86_64-linux-gnu.tar.gz", + "archiveFileName": "bossac-1.6-arduino-x86_64-linux-gnu.tar.gz", + "size": "30649", + "checksum": "SHA-256:2ce7a54d609b4ce3b678147202b2556dd1ce5b318de48a018c676521b994c7a7" + } + ] + }, + { + "name": "bossac", + "version": "1.5-arduino", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/bossac-1.5-arduino2-arm-linux-gnueabihf.tar.bz2", + "archiveFileName": "bossac-1.5-arduino2-arm-linux-gnueabihf.tar.bz2", + "size": "199550", + "checksum": "SHA-256:7b61b7814e5b57bcbd853439fc9cd3e98af4abfdd369bf039c6917f9599e44b9" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/bossac-1.5-arduino2-mingw32.tar.gz", + "archiveFileName": "bossac-1.5-arduino2-mingw32.tar.gz", + "size": "222283", + "checksum": "SHA-256:9d849a34f0b26c25c6a8c4d741cd749dea238cade73b57a3048f248c431d9cc9" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/bossac-1.5-arduino2-i486-linux-gnu.tar.gz", + "archiveFileName": "bossac-1.5-arduino2-i486-linux-gnu.tar.gz", + "size": "29783", + "checksum": "SHA-256:ac56e553bbd6d992fa5592ace90996806230ab582f2bf9f8590836fec9dabef6" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/bossac-1.5-arduino2-i386-apple-darwin14.3.0.tar.gz", + "archiveFileName": "bossac-1.5-arduino2-i386-apple-darwin14.3.0.tar.gz", + "size": "64120", + "checksum": "SHA-256:8f07e50a1f887cb254092034c6a4482d73209568cd83cb624d6625d66794f607" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/bossac-1.5-arduino2-x86_64-linux-gnu.tar.gz", + "archiveFileName": "bossac-1.5-arduino2-x86_64-linux-gnu.tar.gz", + "size": "30431", + "checksum": "SHA-256:42785329155dcb39872d4d30a2a9d31e0f0ce3ae7e34a3ed3d840cbc909c4657" + } + ] + }, + { + "name": "bossac", + "version": "1.3-arduino", + "systems": [ + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/bossac-1.3a-arduino-i386-apple-darwin11.tar.bz2", + "archiveFileName": "bossac-1.3a-arduino-i386-apple-darwin11.tar.bz2", + "size": "39475", + "checksum": "SHA-256:40770b225753e7a52bb165e8f37e6b760364f5c5e96048168d0178945bd96ad6" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.3a-arduino-i686-linux-gnu.tar.bz2", + "archiveFileName": "bossac-1.3a-arduino-i686-linux-gnu.tar.bz2", + "size": "147359", + "checksum": "SHA-256:d6d10362f40729a7877e43474fcf02ad82cf83321cc64ca931f5c82b2d25d24f" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/bossac-1.3a-arduino-i686-mingw32.tar.bz2", + "archiveFileName": "bossac-1.3a-arduino-i686-mingw32.tar.bz2", + "size": "265647", + "checksum": "SHA-256:a37727622e0f86cb4f2856ad0209568a5d804234dba3dc0778829730d61a5ec7" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.3a-arduino-x86_64-pc-linux-gnu.tar.bz2", + "archiveFileName": "bossac-1.3a-arduino-x86_64-pc-linux-gnu.tar.bz2", + "size": "26179", + "checksum": "SHA-256:c1daed033251296768fa8b63ad283e053da93427c0f3cd476a71a9188e18442c" + } + ] + }, + { + "name": "bossac", + "version": "1.7.0", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/bossac-1.7.0-arm-linux-gnueabihf.tar.gz", + "archiveFileName": "bossac-1.7.0-arm-linux-gnueabihf.tar.gz", + "size": "27382", + "checksum": "SHA-256:09e46d0af61b2189caaac0bc6d4dd15cb22c167fdedc56ec98602dd5f10e68e0" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/bossac-1.7.0-mingw32.tar.gz", + "archiveFileName": "bossac-1.7.0-mingw32.tar.gz", + "size": "243066", + "checksum": "SHA-256:9ef7d11b4fabca0adc17102a0290957d5cc26ce46b422c3a5344722c80acc7b2" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.7.0-i686-linux-gnu.tar.gz", + "archiveFileName": "bossac-1.7.0-i686-linux-gnu.tar.gz", + "size": "31086", + "checksum": "SHA-256:17003b0bdc698d52eeb91b09c34aec501c6e0285b4aa88659ab7cc407a451a4d" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/tools/bossac-1.7.0-i386-apple-darwin15.6.0.tar.gz", + "archiveFileName": "bossac-1.7.0-i386-apple-darwin15.6.0.tar.gz", + "size": "63822", + "checksum": "SHA-256:feac36ab38876c163dcf51bdbcfbed01554eede3d41c59a0e152e170fe5164d2" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.7.0-x86_64-linux-gnu.tar.gz", + "archiveFileName": "bossac-1.7.0-x86_64-linux-gnu.tar.gz", + "size": "31373", + "checksum": "SHA-256:9475c0c8596c1ba12dcbce60e48fef7559087fa8eccbea7bab732113f3c181ee" + } + ] + }, + { + "name": "bossac", + "version": "1.9.1-arduino5", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino5-linuxaarch64.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino5-linuxaarch64.tar.gz", + "size": "442901", + "checksum": "SHA-256:f91dbbe90d57dd8074cd9b0ca7a2f5d41ee71bdf15e9bfd68bf2048a08e4a286" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino5-linuxarm.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino5-linuxarm.tar.gz", + "size": "362365", + "checksum": "SHA-256:a0680ac5067ca8134f28fd7f86320d4c3099c782cefecd2e9b1edfde57f5947b" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino5-osx.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino5-osx.tar.gz", + "size": "47862", + "checksum": "SHA-256:c76eae00874a44265029b452303fb355e9ffa006e7ba214ca7ae01b1416867da" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino5-linux32.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino5-linux32.tar.gz", + "size": "385086", + "checksum": "SHA-256:d9c7ddab312bfc330ed7a98916ffa2c7a9c44798863ce1f4467fb240abc1830a" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino5-windows.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino5-windows.tar.gz", + "size": "1260650", + "checksum": "SHA-256:99e1982cf29600152e1c89b3389c1b4ce853201491ed52a12b4a327200cc6af0" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino5-linux64.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino5-linux64.tar.gz", + "size": "399674", + "checksum": "SHA-256:ef80d247c431db2686a3e6728cb4897b708b92cd67687100c125684f3c12fc80" + } + ] + }, + { + "name": "bossac", + "version": "1.9.1-arduino2", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino2-linuxaarch64.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino2-linuxaarch64.tar.gz", + "size": "442853", + "checksum": "SHA-256:c167fa0ea223966f4d21f5592da3888bcbfbae385be6c5c4e41f8abff35f5cb1" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino2-linuxarm.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino2-linuxarm.tar.gz", + "size": "361915", + "checksum": "SHA-256:c9539d161d23231b5beb1d09a71829744216c7f5bc2857a491999c3e567f5b19" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino2-windows.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino2-windows.tar.gz", + "size": "1260628", + "checksum": "SHA-256:5c994d04354f0db8e4bea136f49866d2ba537f0af74b2e78026f2d4fc75e3e39" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino2-linux32.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino2-linux32.tar.gz", + "size": "384951", + "checksum": "SHA-256:10d69f53f169f25afee2dd583dfd9dc803c10543e6c5260d106725cb0d174900" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino2-osx.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino2-osx.tar.gz", + "size": "47870", + "checksum": "SHA-256:b7732129364a378676604db6579c9b8dab50dd965fb50d7a3afff1839c97ff80" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.9.1-arduino2-linux64.tar.gz", + "archiveFileName": "bossac-1.9.1-arduino2-linux64.tar.gz", + "size": "399532", + "checksum": "SHA-256:9eb549874391521999cee13dc823a2cfc8866b8246945339a281808d99c72d2c" + } + ] + }, + { + "name": "bossac", + "version": "1.7.0-arduino3", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.7.0-arduino3-linuxaarch64.tar.gz", + "archiveFileName": "bossac-1.7.0-arduino3-linuxaarch64.tar.gz", + "size": "268365", + "checksum": "SHA-256:a098b2cc23e29f0dc468416210d097c4a808752cd5da1a7b9b8b7b931a04180b" + }, + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/tools/bossac-1.7.0-arduino3-linuxarm.tar.gz", + "archiveFileName": "bossac-1.7.0-arduino3-linuxarm.tar.gz", + "size": "193941", + "checksum": "SHA-256:626c6cc548046901143037b782bf019af1663bae0d78cf19181a876fb9abbb90" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/bossac-1.7.0-arduino3-windows.tar.gz", + "archiveFileName": "bossac-1.7.0-arduino3-windows.tar.gz", + "size": "3607421", + "checksum": "SHA-256:62745cc5a98c26949ec9041ef20420643c561ec43e99dae659debf44e6836526" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.7.0-arduino3-linux32.tar.gz", + "archiveFileName": "bossac-1.7.0-arduino3-linux32.tar.gz", + "size": "193577", + "checksum": "SHA-256:4ac4354746d1a09258f49a43ef4d1baf030d81c022f8434774268b00f55d3ec3" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/tools/bossac-1.7.0-arduino3-osx.tar.gz", + "archiveFileName": "bossac-1.7.0-arduino3-osx.tar.gz", + "size": "75510", + "checksum": "SHA-256:adb3c14debd397d8135e9e970215c6972f0e592c7af7532fa15f9ce5e64b991f" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/tools/bossac-1.7.0-arduino3-linux64.tar.gz", + "archiveFileName": "bossac-1.7.0-arduino3-linux64.tar.gz", + "size": "207271", + "checksum": "SHA-256:1ae54999c1f97234a5c603eb99ad39313b11746a4ca517269a9285afa05f9100" + } + ] + }, + { + "name": "bossac", + "version": "1.6.1-arduino", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "http://downloads.arduino.cc/bossac-1.6.1-arduino-arm-linux-gnueabihf.tar.bz2", + "archiveFileName": "bossac-1.6.1-arduino-arm-linux-gnueabihf.tar.bz2", + "size": "201341", + "checksum": "SHA-256:8c4e63db982178919c824e7a35580dffc95c3426afa7285de3eb583982d4d391" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/bossac-1.6.1-arduino-mingw32.tar.gz", + "archiveFileName": "bossac-1.6.1-arduino-mingw32.tar.gz", + "size": "222918", + "checksum": "SHA-256:d59f43e2e83a337d04c4ae88b195a4ee175b8d87fff4c43144d23412a4a9513b" + }, + { + "host": "i686-pc-linux-gnu", + "url": "http://downloads.arduino.cc/bossac-1.6.1-arduino-i486-linux-gnu.tar.gz", + "archiveFileName": "bossac-1.6.1-arduino-i486-linux-gnu.tar.gz", + "size": "30320", + "checksum": "SHA-256:1e211347569d75193b337296a10dd25b0ce04419e3d7dc644355178b6b514f92" + }, + { + "host": "x86_64-apple-darwin", + "url": "http://downloads.arduino.cc/bossac-1.6.1-arduino-i386-apple-darwin14.5.0.tar.gz", + "archiveFileName": "bossac-1.6.1-arduino-i386-apple-darwin14.5.0.tar.gz", + "size": "64587", + "checksum": "SHA-256:2f80ef569a3fb19da60ab3489e49d8fe7d4699876acf30ff4938c632230a09aa" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "http://downloads.arduino.cc/bossac-1.6.1-arduino-x86_64-linux-gnu.tar.gz", + "archiveFileName": "bossac-1.6.1-arduino-x86_64-linux-gnu.tar.gz", + "size": "30869", + "checksum": "SHA-256:b78afc66c00ccfdd69a08bd3959c260a0c64ccce78a71d5a1135ae4437ff40db" + } + ] + }, + { + "name": "esptool", + "version": "4.6.2", + "systems": [ + { + "host": "arm-linux-gnueabihf", + "url": "https://downloads.arduino.cc/tools/esptool_4.6.2_Linux_ARMv6.tar.gz", + "archiveFileName": "esptool_4.6.2_Linux_ARMv6.tar.gz", + "size": "9659362", + "checksum": "SHA-256:d5efb2b80ad21157228cbca43e13d9187a9dc12b944a3c63d69e9139e424568b" + }, + { + "host": "arm64-linux-gnueabihf", + "url": "https://downloads.arduino.cc/tools/esptool_4.6.2_Linux_ARM64.tar.gz", + "archiveFileName": "esptool_4.6.2_Linux_ARM64.tar.gz", + "size": "10221768", + "checksum": "SHA-256:33e1f2edb04def19e17f8ffa1cd37f9638ecccae8c05f95e54667e44496bd28d" + }, + { + "host": "x86_64-apple-darwin", + "url": "https://downloads.arduino.cc/tools/esptool_4.6.2_macOS_64bit.tar.gz", + "archiveFileName": "esptool_4.6.2_macOS_64bit.tar.gz", + "size": "5859915", + "checksum": "SHA-256:546e964c0012d5e708985d70f5a7ff081219dff332c9f49eebec6b16c26a37a9" + }, + { + "host": "x86_64-mingw32", + "url": "https://downloads.arduino.cc/tools/esptool_4.6.2_Windows_64bit.zip", + "archiveFileName": "esptool_4.6.2_Windows_64bit.zip", + "size": "6400257", + "checksum": "SHA-256:a103423b367c5dcb7343e1093f4a1a9ff041ca95756919c2b9c91ad2f312294d" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "https://downloads.arduino.cc/tools/esptool_4.6.2_Linux_64bit.tar.gz", + "archiveFileName": "esptool_4.6.2_Linux_64bit.tar.gz", + "size": "13034467", + "checksum": "SHA-256:e29437dfbd12b025cd5e23d724481b6262f5b8fb75ce2fa5d0498a4cf65eca95" + } + ] + }, + { + "name": "esptool", + "version": "3.3.3", + "systems": [ + { + "host": "i686-mingw32", + "url": "https://downloads.arduino.cc/tools/esptool_3.3.3_Windows_64bit.zip", + "archiveFileName": "esptool_3.3.3_Windows_64bit.zip", + "size": "6347021", + "checksum": "SHA-256:b12354d11596397d3a84970d16c9267d6f5770fba5c75d78e1adfc5a7088f4de" + }, + { + "host": "x86_64-apple-darwin", + "url": "https://downloads.arduino.cc/tools/esptool_3.3.3_macOS_64bit.tar.gz", + "archiveFileName": "esptool_3.3.3_macOS_64bit.tar.gz", + "size": "5787840", + "checksum": "SHA-256:302e547fe2aa222cbbd67aaf2126ac451f48d1eff46d30f0454613d22e8c2a21" + }, + { + "host": "x86_64-mingw32", + "url": "https://downloads.arduino.cc/tools/esptool_3.3.3_Windows_64bit.zip", + "archiveFileName": "esptool_3.3.3_Windows_64bit.zip", + "size": "6347021", + "checksum": "SHA-256:b12354d11596397d3a84970d16c9267d6f5770fba5c75d78e1adfc5a7088f4de" + }, + { + "host": "x86_64-pc-linux-gnu", + "url": "https://downloads.arduino.cc/tools/esptool_3.3.3_Linux_64bit.tar.gz", + "archiveFileName": "esptool_3.3.3_Linux_64bit.tar.gz", + "size": "12850181", + "checksum": "SHA-256:bdcab463fe2d1eb65d4d0d575ac2be2efbef470994998021a99bd8fe63853335" + } + ] + }, + { + "name": "nrf5x-cl-tools", + "version": "9.3.1", + "systems": [ + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/arduino.org/nRF5x-Command-Line-Tools_9_3_1_OSX.tar.bz2", + "archiveFileName": "nRF5x-Command-Line-Tools_9_3_1_OSX.tar.bz2", + "size": "341674", + "checksum": "SHA-256:41e4580271b39459a7ef1b078d11ee08d8f4f23fab7ff03f3fe8c3bc986a0ed4" + }, + { + "host": "i686-linux-gnu", + "url": "http://downloads.arduino.cc/arduino.org/nRF5x-Command-Line-Tools_9_3_1_Linux-i386.tar.bz2", + "archiveFileName": "nRF5x-Command-Line-Tools_9_3_1_Linux-i386.tar.bz2", + "size": "155680", + "checksum": "SHA-256:e880059b303e5aad3a8b34c83dfd8c22beee77ae2074fbd37511e3baa91464a5" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/arduino.org/nRF5x-Command-Line-Tools_9_3_1_Win32.tar.bz2", + "archiveFileName": "nRF5x-Command-Line-Tools_9_3_1_Win32.tar.bz2", + "size": "812257", + "checksum": "SHA-256:a4467350e39314690cec2e96b80e7e3cab463c84eff9b81593ad57754d76ee00" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/arduino.org/nRF5x-Command-Line-Tools_9_3_1_Linux-x86_64.tar.bz2", + "archiveFileName": "nRF5x-Command-Line-Tools_9_3_1_Linux-x86_64.tar.bz2", + "size": "167414", + "checksum": "SHA-256:4074fffe678d60968006a72edd182c6506b264472c9957bc3eaa39336bfcf972" + } + ] + }, + { + "name": "zephyr-post-build-tool", + "version": "0.0.2", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/zephyr-post-build-tool-0.0.2-linux-arm64.tar.gz", + "archiveFileName": "zephyr-post-build-tool-0.0.2-linux-arm.tar.bz2", + "size": "1187806", + "checksum": "SHA-256:d8786f48236b6425c39e6ecefb955ba93d425e1bb947f4b6a4720e168c1081cb" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/zephyr-post-build-tool-0.0.2-macos_amd64.tar.gz", + "archiveFileName": "zephyr-post-build-tool-0.0.2-macos_amd64.tar.gz", + "size": "1243024", + "checksum": "SHA-256:8892ba21dcebfc1631725c3c5da85aff05684da978d0585dcac4679664b19ae1" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/zephyr-post-build-tool-0.0.2-windows_386.zip", + "archiveFileName": "zephyr-post-build-tool-0.0.2-windows_386.zip", + "size": "1232893", + "checksum": "SHA-256:42c99632e45e47747ba5e8310cee420d7cc04aad8fea742adec877b0f233f413" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/zephyr-post-build-tool-0.0.2-linux_amd64.tar.gz", + "archiveFileName": "zephyr-post-build-tool-0.0.2-linux_amd64.tar.gz", + "size": "1249392", + "checksum": "SHA-256:56bad506c99d2cabda7fd6bc6591f52b103ac4b2ffefcee613306c6ac6ea2ec3" + } + ] + }, + { + "name": "zephyr-post-build-tool", + "version": "0.0.1", + "systems": [ + { + "host": "aarch64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/zephyr-post-build-tool-0.0.1-linux-arm64.tar.gz", + "archiveFileName": "zephyr-post-build-tool-0.0.1-linux-arm.tar.bz2", + "size": "1186835", + "checksum": "SHA-256:2a399efdf9c94eab3097f8bfc535e7585634f7f103f3aac51c52e9fbd6863c51" + }, + { + "host": "i386-apple-darwin11", + "url": "http://downloads.arduino.cc/tools/zephyr-post-build-tool-0.0.1-macos_amd64.tar.gz", + "archiveFileName": "zephyr-post-build-tool-0.0.1-macos_amd64.tar.gz", + "size": "1243020", + "checksum": "SHA-256:7f0bf1a5c2a2548c4d4faf081d8956d403a5de3d55e082bcd77660f01b47de10" + }, + { + "host": "i686-mingw32", + "url": "http://downloads.arduino.cc/tools/zephyr-post-build-tool-0.0.1-windows_386.zip", + "archiveFileName": "zephyr-post-build-tool-0.0.1-windows_386.zip", + "size": "1232672", + "checksum": "SHA-256:f4547d401363666f8ec29fce12ec12f4500188a7035f6ce840be48c98cf5fd40" + }, + { + "host": "x86_64-linux-gnu", + "url": "http://downloads.arduino.cc/tools/zephyr-post-build-tool-0.0.1-linux_amd64.tar.gz", + "archiveFileName": "zephyr-post-build-tool-0.0.1-linux_amd64.tar.gz", + "size": "1249164", + "checksum": "SHA-256:8286db4cdd7dd8aeb8587c233de8a88b3b8168b85f053aa64cd5a58856676fa2" + } + ] + } + ], + "help": { + "online": "http://www.arduino.cc/en/Reference/HomePage" + } + } + ], + "IsTrusted": true +} \ No newline at end of file diff --git a/libraries/SocketWrapper/WiFi.cpp b/libraries/SocketWrapper/WiFi.cpp new file mode 100644 index 00000000..f7374eb4 --- /dev/null +++ b/libraries/SocketWrapper/WiFi.cpp @@ -0,0 +1,3 @@ +#include "WiFi.h" + +NetworkInterface WiFi(1); diff --git a/libraries/SocketWrapper/WiFi.h b/libraries/SocketWrapper/WiFi.h new file mode 100644 index 00000000..29a1dc02 --- /dev/null +++ b/libraries/SocketWrapper/WiFi.h @@ -0,0 +1,4 @@ +#define SPECIALIZE_FOR_WIFI +#include "SocketHelpers.h" + +extern NetworkInterface WiFi; diff --git a/libraries/SocketWrapper/ZephyrSSLClient.h b/libraries/SocketWrapper/ZephyrSSLClient.h new file mode 100644 index 00000000..085f6a40 --- /dev/null +++ b/libraries/SocketWrapper/ZephyrSSLClient.h @@ -0,0 +1,18 @@ +#include "SocketWrapper.h" +#include "api/Client.h" +#include "unistd.h" +#include "zephyr/sys/printk.h" +#include "ZephyrClient.h" + +#if defined(CONFIG_NET_SOCKETS_SOCKOPT_TLS) +class ZephyrSSLClient : public ZephyrClient { + +public: + int connect(const char* host, uint16_t port, const char* cert) { + return connectSSL(host, port, (char*)cert); + } + int connect(const char* host, uint16_t port, char* cert) { + return connectSSL(host, port, cert); + } +}; +#endif \ No newline at end of file diff --git a/libraries/SocketWrapper/ZephyrUDP.h b/libraries/SocketWrapper/ZephyrUDP.h new file mode 100644 index 00000000..d0620205 --- /dev/null +++ b/libraries/SocketWrapper/ZephyrUDP.h @@ -0,0 +1,330 @@ +/* + MbedUdp.h - UDP implementation using mbed Sockets + Copyright (c) 2021 Arduino SA. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "Arduino.h" +#include "SocketWrapper.h" +#include "api/Udp.h" +#include "sys/socket.h" +#include "zephyr/net/net_ip.h" +#include "zephyr/net/net_if.h" + +#include +#include +#include +#include + +class ZephyrUDP : public arduino::UDP { +private: + int _socket; + +public: + ZephyrUDP() : _socket(-1) {} // Constructor + ~ZephyrUDP() { + stop(); + } + + // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use + virtual uint8_t begin(uint16_t port) { + + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + addr.sin_addr.s_addr = INADDR_ANY; + + _socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); + + zsock_ioctl(_socket, ZFD_IOCTL_FIONBIO); + + if (::bind(_socket, (struct sockaddr*)&addr, sizeof(addr)) < 0) { + ::close(_socket); + _socket = -1; + return false; + } + + return true; + } + + // initialize, start listening on specified multicast IP address and port. Returns 1 if successful, 0 if there are no sockets available to use + virtual uint8_t beginMulticast(IPAddress ip, uint16_t port) { + bool ret = begin(port); + if (ret == false) { + return false; + } + + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = ip; + + net_if_ipv4_maddr_join(net_if_get_by_index(1), net_if_ipv4_maddr_add(net_if_get_by_index(1), (struct in_addr*)&addr)); + return true; + } + + // Finish with the UDP socket + virtual void stop() { + if (_socket != -1) { + ::close(_socket); + _socket = -1; + } + } + + // Sending UDP packets + + // Start building up a packet to send to the remote host specific in ip and port + // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port + virtual int beginPacket(IPAddress ip, uint16_t port) { + _send_to_ip = ip; + _send_to_port = port; + + /* Make sure that the transmit data buffer is empty. */ + _tx_data.clear(); + return true; + } + + // Start building up a packet to send to the remote host specific in host and port + // Returns 1 if successful, 0 if there was a problem resolving the hostname or port + virtual int beginPacket(const char* host, uint16_t port) { + // Resolve address + struct addrinfo hints; + struct addrinfo *res; + + hints.ai_family = AF_INET; + hints.ai_socktype = SOCK_DGRAM; + + int resolve_attempts = 100; + int ret; + + while (resolve_attempts--) { + ret = getaddrinfo(host, String(port).c_str(), &hints, &res); + + if (ret == 0) { + break; + } else { + k_sleep(K_MSEC(1)); + } + } + + if (ret != 0) { + return false; + } + + return beginPacket(IPAddress(((sockaddr_in*)(res->ai_addr))->sin_addr.s_addr), port); + } + + // Finish off this packet and send it + // Returns 1 if the packet was sent successfully, 0 if there was an error + virtual int endPacket() { + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_port = htons(_send_to_port); + addr.sin_addr.s_addr = _send_to_ip; + return ::sendto(_socket, _tx_data.data(), _tx_data.size(), 0, (sockaddr*)&addr, sizeof(addr)); + } + + // Write a single byte into the packet + virtual size_t write(uint8_t data) { + _tx_data.push_back(data); + return 1; + } + + // Write size bytes from buffer into the packet + virtual size_t write(uint8_t* buffer, size_t size) { + std::copy(buffer, buffer + size, std::back_inserter(_tx_data)); + return size; + } + + // Write size bytes from buffer into the packet + virtual size_t write(const uint8_t* buffer, size_t size) { + std::copy(buffer, buffer + size, std::back_inserter(_tx_data)); + return size; + } + + using Print::write; + + int parsePacket() + { + struct sockaddr_in addr; + socklen_t addrlen = sizeof(addr); + uint8_t tmp_buf[512]; + + int ret = ::recvfrom(_socket, tmp_buf, sizeof(tmp_buf), 0, (sockaddr*)&addr, &addrlen); + if (ret > 0) + { + auto pkt = std::make_shared( + IPAddress(addr.sin_addr.s_addr), + ntohs(addr.sin_port), tmp_buf, ret); + + _rx_pkt_list.push_back(pkt); + + // drop the oldest packet if the list is full + if(_rx_pkt_list.size() > _rx_pkt_list_size) { + _rx_pkt_list.pop_front(); + } + } + + if (_rx_pkt_list.size()) + { + /* Discard UdpRxPacket object previously held by _rx_pkt + * and replace it with the new one. + */ + _rx_pkt = _rx_pkt_list.front(); + _rx_pkt_list.pop_front(); + return _rx_pkt->totalSize(); + } + else + { + /* Otherwise ensure that _rx_pkt definitely + * does not hold any UdpRxPacket object anymore. + */ + _rx_pkt.reset(); + return 0; + } + } + + int available() + { + if (_rx_pkt) + return _rx_pkt->available(); + else + return 0; + } + + int read() + { + if (_rx_pkt) + return _rx_pkt->read(); + else + return -1; + } + + int read(unsigned char* buffer, size_t len) + { + if (_rx_pkt) + return _rx_pkt->read(buffer, len); + else + return -1; + } + + int read(char* buffer, size_t len) + { + if (_rx_pkt) + return _rx_pkt->read(buffer, len); + else + return -1; + } + + int peek() + { + if (_rx_pkt) + return _rx_pkt->peek(); + else + return -1; + } + + void flush() + { + /* Delete UdpRxPacket object held by _rx_pkt. */ + if (_rx_pkt) + _rx_pkt.reset(); + } + + virtual IPAddress remoteIP() { + if (_rx_pkt) + return _rx_pkt->remoteIP(); + else + return IPAddress(); + } + + virtual uint16_t remotePort() { + if (_rx_pkt) + return _rx_pkt->remotePort(); + else + return 0; + } + +private: + + /* UDP TRANSMISSION */ + IPAddress _send_to_ip; + uint16_t _send_to_port; + std::vector _tx_data; + int _rx_pkt_list_size = 10; + /* UDP RECEPTION */ + class UdpRxPacket + { + private: + IPAddress const _remote_ip; + uint16_t const _remote_port; + size_t const _rx_data_len; + std::deque _rx_data; + + public: + UdpRxPacket( + IPAddress const remote_ip, + uint16_t const remote_port, + uint8_t const * p_data, + size_t const data_len) + : _remote_ip(remote_ip) + , _remote_port(remote_port) + , _rx_data_len(data_len) + , _rx_data(p_data, p_data + data_len) + { + } + + typedef std::shared_ptr SharedPtr; + + IPAddress remoteIP() const { return _remote_ip; } + uint16_t remotePort() const { return _remote_port; } + size_t totalSize() const { return _rx_data_len; } + + int available() + { + return _rx_data.size(); + } + + int read() + { + uint8_t const data = _rx_data.front(); + _rx_data.pop_front(); + return data; + } + + int read(unsigned char* buffer, size_t len) + { + size_t bytes_read = 0; + for (; bytes_read < len && !_rx_data.empty(); bytes_read++) + { + buffer[bytes_read] = _rx_data.front(); + _rx_data.pop_front(); + } + return bytes_read; + } + + int read(char* buffer, size_t len) + { + return read((unsigned char*)buffer, len); + } + + int peek() + { + return _rx_data.front(); + } + }; + std::list _rx_pkt_list; + UdpRxPacket::SharedPtr _rx_pkt; +}; \ No newline at end of file diff --git a/libraries/SocketWrapper/utility/wl_definitions.h b/libraries/SocketWrapper/utility/wl_definitions.h new file mode 100644 index 00000000..1c49a7af --- /dev/null +++ b/libraries/SocketWrapper/utility/wl_definitions.h @@ -0,0 +1,77 @@ +/* + wl_definitions.h - Library for Arduino Wifi shield. + Copyright (c) 2011-2014 Arduino. All right reserved. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ +/* + * wl_definitions.h + * + * Created on: Mar 6, 2011 + * Author: dlafauci + */ + +#ifndef WL_DEFINITIONS_H_ +#define WL_DEFINITIONS_H_ + +// Maximum size of a SSID +#define WL_SSID_MAX_LENGTH 32 +// Length of passphrase. Valid lengths are 8-63. +#define WL_WPA_KEY_MAX_LENGTH 63 +// Length of key in bytes. Valid values are 5 and 13. +#define WL_WEP_KEY_MAX_LENGTH 13 +// Size of a MAC-address or BSSID +#define WL_MAC_ADDR_LENGTH 6 +// Size of a MAC-address or BSSID +#define WL_IPV4_LENGTH 4 +// Maximum size of a SSID list +#define WL_NETWORKS_LIST_MAXNUM 10 +// Maxmium number of socket +#define MAX_SOCK_NUM 4 +// Socket not available constant +#define SOCK_NOT_AVAIL 255 +// Default state value for Wifi state field +#define NA_STATE -1 +//Maximum number of attempts to establish wifi connection +#define WL_MAX_ATTEMPT_CONNECTION 10 + +typedef enum { + WL_NO_SHIELD = 255, + WL_NO_MODULE = 255, + WL_IDLE_STATUS = 0, + WL_NO_SSID_AVAIL, + WL_SCAN_COMPLETED, + WL_CONNECTED, + WL_CONNECT_FAILED, + WL_CONNECTION_LOST, + WL_DISCONNECTED, + WL_AP_LISTENING, + WL_AP_CONNECTED, + WL_AP_FAILED +} wl_status_t; + +/* Encryption modes */ +enum wl_enc_type { /* Values map to 802.11 Cipher Algorithm Identifier */ + ENC_TYPE_WEP = 5, + ENC_TYPE_TKIP = 2, + ENC_TYPE_WPA = ENC_TYPE_TKIP, + ENC_TYPE_CCMP = 4, + ENC_TYPE_WPA2 = ENC_TYPE_CCMP, + ENC_TYPE_GCMP = 6, + ENC_TYPE_WPA3 = ENC_TYPE_GCMP, + /* ... except these two, 7 and 8 are reserved in 802.11-2007 */ + ENC_TYPE_NONE = 7, + ENC_TYPE_UNKNOWN = 9, + ENC_TYPE_AUTO = 8 +}; + +#endif /* WL_DEFINITIONS_H_ */ \ No newline at end of file diff --git a/libraries/Zephyr_SDRAM/examples/SDRAM_operations/SDRAM_operations.ino b/libraries/Zephyr_SDRAM/examples/SDRAM_operations/SDRAM_operations.ino new file mode 100644 index 00000000..c55795ea --- /dev/null +++ b/libraries/Zephyr_SDRAM/examples/SDRAM_operations/SDRAM_operations.ino @@ -0,0 +1,68 @@ +/* + How to interact with external SDRAM on Portenta H7 + + The board comes with an hefty 8MB of external fast RAM, which can be used: + - as a framebuffer (raw mode) + - as an expansion of on-chip RAM to store "standard" data + + This example shows both the usages +*/ + +#include "SDRAM.h" + +void nonFrameBuffer() { + // Initilize SDRAM for non-framebuffer operations + SDRAM.begin(); // is the same as SDRAM.begin(SDRAM_START_ADDRESS); + + // Now we can malloc() and free() in the whole RAM space + // For example, let's create a 7MB array + uint8_t* myVeryBigArray = (uint8_t*)SDRAM.malloc(7 * 1024 * 1024); + + // and a small one + uint8_t* mySmallArray = (uint8_t*)SDRAM.malloc(128); + + // and use then as usual + for (int i = 0; i<128; i++) { + myVeryBigArray[i] = i; + mySmallArray[i] = i*2; + } + + // free the memory when you don't need them anymore + SDRAM.free(myVeryBigArray); +} + +void frameBuffer() { + // In case we want a framebuffer-like area at the beginning of the flash, + // simply initialize the memory as + + SDRAM.begin(SDRAM_START_ADDRESS + 2 * 1024 * 1024); + // 2MB of contiguous memory available at the beginning + + uint32_t* framebuffer = (uint32_t*)SDRAM_START_ADDRESS; + + // We can't allocate anymore the huge 7MB array + + uint8_t* myVeryBigArray = (uint8_t*)SDRAM.malloc(7 * 1024 * 1024); + if (myVeryBigArray == NULL) { + Serial.println("Oops, too big :)"); + } + +} + +void setup() { + Serial.begin(115200); + while (!Serial); + + frameBuffer(); + // Uncomment to test the other functionality + // nonFrameBuffer(); + + // Sort of memtest for stability, useful for testing when overclocking + if (SDRAM.test()) { + Serial.println("SDRAM completely functional"); + } +} + +void loop() { + +} \ No newline at end of file diff --git a/libraries/Zephyr_SDRAM/library.properties b/libraries/Zephyr_SDRAM/library.properties new file mode 100644 index 00000000..cc80e102 --- /dev/null +++ b/libraries/Zephyr_SDRAM/library.properties @@ -0,0 +1,9 @@ +name=Portenta_SDRAM +version=1.0 +author=Arduino +maintainer=Arduino +sentence=Interact with external SDRAM chip on Portenta H7 +paragraph= +category=Other +url=https://github.com/arduino/ArduinoCore-mbed/tree/master/libraries/Portenta_SDRAM +architectures=* diff --git a/libraries/Zephyr_SDRAM/src/SDRAM.cpp b/libraries/Zephyr_SDRAM/src/SDRAM.cpp new file mode 100644 index 00000000..23c93f03 --- /dev/null +++ b/libraries/Zephyr_SDRAM/src/SDRAM.cpp @@ -0,0 +1,69 @@ +#include "SDRAM.h" +#include "Arduino.h" + +int SDRAMClass::begin(uint32_t start_address) { + if (start_address) { + malloc_addblock((void*)start_address, SDRAM_END_ADDRESS - start_address); + } + + return 1; +} + +void* SDRAMClass::malloc(size_t size) { + return ea_malloc(size); +} + +void SDRAMClass::free(void* ptr) { + ea_free(ptr); +} + +bool SDRAMClass::test(bool fast, Stream& _serial) { + uint8_t const pattern = 0xaa; + uint8_t const antipattern = 0x55; + uint8_t *const mem_base = (uint8_t*)SDRAM_START_ADDRESS; + + /* test data bus */ + for (uint8_t i = 1; i; i <<= 1) { + *mem_base = i; + if (*mem_base != i) { + _serial.println("data bus lines test failed! data (" + String(i) + ")"); + __asm__ volatile ("BKPT"); + } + } + + /* test address bus */ + /* Check individual address lines */ + for (uint32_t i = 1; i < HW_SDRAM_SIZE; i <<= 1) { + mem_base[i] = pattern; + if (mem_base[i] != pattern) { + _serial.println("address bus lines test failed! address ("+ String((uint32_t)&mem_base[i], HEX) + ")"); + __asm__ volatile ("BKPT"); + } + } + + /* Check for aliasing (overlaping addresses) */ + mem_base[0] = antipattern; + for (uint32_t i = 1; i < HW_SDRAM_SIZE; i <<= 1) { + if (mem_base[i] != pattern) { + _serial.println("address bus overlap! address ("+ String((uint32_t)&mem_base[i], HEX) + ")"); + __asm__ volatile ("BKPT"); + } + } + + /* test all ram cells */ + if (!fast) { + for (uint32_t i = 0; i < HW_SDRAM_SIZE; ++i) { + mem_base[i] = pattern; + if (mem_base[i] != pattern) { + _serial.println("address bus test failed! address ("+ String((uint32_t)&mem_base[i], HEX) + ")"); + __asm__ volatile ("BKPT"); + } + } + } else { + memset(mem_base, pattern, HW_SDRAM_SIZE); + } + + return true; +} + +SDRAMClass SDRAM; \ No newline at end of file diff --git a/libraries/Zephyr_SDRAM/src/SDRAM.h b/libraries/Zephyr_SDRAM/src/SDRAM.h new file mode 100644 index 00000000..853b705a --- /dev/null +++ b/libraries/Zephyr_SDRAM/src/SDRAM.h @@ -0,0 +1,27 @@ +#ifndef __SDRAM_H +#define __SDRAM_H + +#include "ea_malloc.h" + +#ifdef __cplusplus + +#include "Arduino.h" + +#define SDRAM_END_ADDRESS (0xc0800000) +#define SDRAM_START_ADDRESS (0xc0000000) +#define HW_SDRAM_SIZE (8 * 1024 * 1024) + +class SDRAMClass { +public: + SDRAMClass() {} + int begin(uint32_t start_address = SDRAM_START_ADDRESS); + void* malloc(size_t size); + void free(void* ptr); + bool test(bool fast = false, Stream& _serial = Serial); +private: + +}; +extern SDRAMClass SDRAM; + +#endif +#endif // __SDRAM_H diff --git a/libraries/ea_malloc/ea_malloc.h b/libraries/ea_malloc/ea_malloc.h new file mode 100644 index 00000000..1fd54287 --- /dev/null +++ b/libraries/ea_malloc/ea_malloc.h @@ -0,0 +1,46 @@ +/* +* Copyright © 2017 Embedded Artistry LLC. +* License: MIT. See LICENSE file for details. +*/ + +#ifndef MALLOC_H_ +#define MALLOC_H_ + +#ifdef __cplusplus +extern "C" { +#endif //__cplusplus + +#include + +/** +* @brief Assign blocks of memory for use by malloc(). +* +* Initializes the malloc() backend with a memory address and memory pool size. +* This memory is assumed to be owned by malloc() and is vended out when memory is requested. +* Multiple blocks can be added. +* +* NOTE: This API must be called before malloc() can be used. If you call malloc() before +* allocating memory, malloc() will return NULL because there is no available memory +* to provide to the user. +* +* @param addr Pointer to the memory block address that you are providing to malloc() +* @param size Size of the memory block that you are providing to malloc() +*/ +void malloc_addblock(void* addr, size_t size); + +/** +* @brief Initialize Malloc +* +* Weakly linked, can be overridden based on your needs. +* Each malloc implementation contains a different set of initialization requirements +*/ +void malloc_init(void); + +void* ea_malloc(size_t size); +void ea_free(void* ptr); + +#ifdef __cplusplus +} +#endif //__cplusplus + +#endif //MALLOC_H_ \ No newline at end of file diff --git a/libraries/ea_malloc/ll.h b/libraries/ea_malloc/ll.h new file mode 100644 index 00000000..a83be8ff --- /dev/null +++ b/libraries/ea_malloc/ll.h @@ -0,0 +1,367 @@ +#ifndef LL_H__ +#define LL_H__ + +#include +#include //size_t, NULL + +/** @defgroup linkedlist-C C Linked List Interface + * A linked list library for C modules + * + * @ingroup FrameworkUtils + * @{ + */ + +/** + * Define offsetof if we don't have it already + */ +#ifndef offsetof +#ifdef __compiler_offsetof +#define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE, MEMBER) +#else +#define offsetof(TYPE, MEMBER) ((size_t) & ((TYPE*)0)->MEMBER) +#endif +#endif // offsetof + +/** + * Define container_of if we don't have it already + */ +#ifndef container_of +#ifdef __GNUC__ +#ifndef __clang__ +// Isolate the GNU-specific expression +#define container_of(ptr, type, member) \ + __extension__ ({ \ + const __typeof__(((type*)0)->member)* __mptr = (ptr); \ + (type*)((uintptr_t)__mptr - offsetof(type, member)); \ + }) +#else // we are clang - avoid GNU expression +#define container_of(ptr, type, member) ((type*)((uintptr_t)(ptr)-offsetof(type, member))) +#endif // GNU and not clang +#else +#define container_of(ptr, type, member) ((type*)((uintptr_t)(ptr)-offsetof(type, member))) +#endif // not GNU +#endif // container_of + +#ifdef __cplusplus +extern "C" { +#endif //__cplusplus + +/** Linked list struct + * + * This is a doubly linked list structure. + * The ll_t structure should be embedded in a container structure that you want to list. + * + * Example: + * + * @code + * typedef struct + * { + * ll_t node; + * size_t size; + * char* block; + * } alloc_node_t; + * @endcode + */ +typedef struct ll_head +{ + /// Pointer to the next element in the list. + struct ll_head* next; + /// Pointer to the previous element in the list. + struct ll_head* prev; +} ll_t; + +//#pragma mark - List Manipulation - + +/// @name Get Containers +/// @{ + +/** Get the container for a list entry + * + * @param[in] ptr The pointer to the target ll_t node. + * @param[in] type The struct type which contains the ll_t node. For this example struct, + * type would refer to alloc_node_t: + * @code + * typedef struct + * { + * ll_t node; + * size_t size; + * char* block; + * } alloc_node_t; + * @endcode + * + * @param[in] member The member which corresponds to the member name of the ll_t entry. For this + * example struct, member would refer to `node`. + * @code + * typedef struct + * { + * ll_t node; + * size_t size; + * char* block; + * } alloc_node_t; + * @endcode + * + * @returns a pointer to the struct containing the linked list node at `ptr`, cast to type `type`. + */ +#define list_entry(ptr, type, member) container_of(ptr, type, member) + +/** Get the container for the first item in the list + * + * @param[in] head The pointer to the head of the list. + * @param[in] type The struct type which contains the ll_t node. For this example struct, + * type would refer to alloc_node_t: + * @code + * typedef struct + * { + * ll_t node; + * size_t size; + * char* block; + * } alloc_node_t; + * @endcode + + * @param[in] member The member which corresponds to the member name of the ll_t entry. For this + * example struct, member would refer to `node`. + * @code + * typedef struct + * { + * ll_t node; + * size_t size; + * char* block; + * } alloc_node_t; + * @endcode + * + * @returns a pointer to the struct containing the linked list node at `ptr`, cast to type `type`. + */ +#define list_first_entry(head, type, member) list_entry((head)->next, type, member) + +/// @} +// Get containers + +//#pragma mark - Foreach - + +/// @name Foreach Operations +/// @{ + +/** Declare a foreach loop which iterates over the list + * + * list_for_each() will run as long as the current object's next pointer is not equal to the + * head of the list. It's possible for a malformed list to loop forever. + * + * @param[in] pos The variable which will hold the current iteration's position value. + * This variable must be a pointer and should be pre-declared before instantiating the loop. + * @code + * ll_t *b; + * list_for_each(b, &free_list) + * { + * ... + * } + * @endcode + * @param[in] head The head of of the linked list. Input should be a pointer. + */ +#define list_for_each(pos, head) for(pos = (head)->next; pos != (head); pos = pos->next) + +/** Declare a foreach loop which iterates over the list, copy current node pointer. + * + * list_for_each_safe() will run as long as the current object's next pointer is not equal to the + * head of the list. It's possible for a malformed list to loop forever. + * + * The list_for_each_safe() variant makes a copy of the current node pointer, enabling the loop + * to get to the next pointer if there is a deletion. + * + * @param[in] pos The variable which will hold the current iteration's position value. + * This variable must be a pointer should be pre-declared before instantiating the loop. + * @code + * ll_t *b, *t; + * list_for_each_safe(b, t, &free_list) + * { + * ... + * } + * @endcode + * @param[in] n The variable which will hold the current iteration's position value **copy**. + * This variable must be a pointer and should be pre-declared before instantiating the loop. + * @code + * alloc_node_t *b, *t; + * list_for_each_safe(b, t, &free_list) + * { + * ... + * } + * @endcode + * @param[in] head The head of of the linked list. Input should be a pointer. + */ +#define list_for_each_safe(pos, n, head) \ + for(pos = (head)->next, n = pos->next; pos != (head); pos = n, n = pos->next) + +/** Declare a for loop which operates on each node in the list using the container value. + * + * @param[in] pos The variable which will hold the current iteration's position value. + * This variable must be a pointer and should be pre-declared before instantiating the loop. + * The `pos` variable must be the container type. + * @code + * alloc_node_t *b, *t; + * list_for_each_entry(b, &free_list, node) + * { + * ... + * } + * @endcode + * + * @param[in] head The head of of the linked list. Input should be a pointer. + * + * @param[in] member The member which corresponds to the member name of the ll_t entry. For this + * example struct, member would refer to `node`. + * @code + * typedef struct + * { + * ll_t node; + * size_t size; + * char* block; + * } alloc_node_t; + * @endcode + */ +#define list_for_each_entry(pos, head, member) \ + for(pos = list_entry((head)->next, __typeof__(*pos), member); &pos->member != (head); \ + pos = list_entry(pos->member.next, __typeof__(*pos), member)) + +/** Declare a for loop which operates on each node in the list using a copy of the container value. + * + * @param[in] pos The variable which will hold the current iteration's position value. + * This variable must be a pointer and should be pre-declared before instantiating the loop. + * The `pos` variable must be the container type. + * @code + * alloc_node_t *b, *t; + * list_for_each_entry(b, &free_list, node) + * { + * ... + * } + * @endcode + * @param[in] n The variable which will hold the current iteration's position value **copy**. + * This variable must be a pointer and should be pre-declared before instantiating the loop. + * The `n` variable must be the container type. + * @code + * typedef struct + * { + * ll_t node; + * size_t size; + * char* block; + * } alloc_node_t; + * + * alloc_node_t *b, *t; + * list_for_each_entrysafe(b, t, &free_list, node) + * { + * ... + * } + * @endcode + * @param[in] head The head of of the linked list. Input should be a pointer. + * @param[in] member The member which corresponds to the member name of the ll_t entry. For this + * example struct, member would refer to `node`. + * @code + * typedef struct + * { + * ll_t node; + * size_t size; + * char* block; + * } alloc_node_t; + * @endcode + */ +#define list_for_each_entry_safe(pos, n, head, member) \ + for(pos = list_entry((head)->next, __typeof__(*pos), member), \ + n = list_entry(pos->member.next, __typeof__(*pos), member); \ + &pos->member != (head); pos = n, n = list_entry(n->member.next, __typeof__(*n), member)) + +/// @} +// End foreach + +//#pragma mark - Init - + +/// @name Initialization +/// @{ + +/// Initialize a linked list so it points to itself +/// @param[in] name of the linked list object +#define ll_head_INIT(name) \ + { \ + &(name), &(name) \ + } + +/** Initialize a linked list + * + * @code + * // This macro declares and initializes our linked list + * static LIST_INIT(free_list); + * @endcode + * @param[in] name The name of the linked list object to declare + */ +#define LIST_INIT(name) struct ll_head name = ll_head_INIT(name) + +/// @} + +//#pragma mark - Add - + +/// @name Addition +/// @{ + +/// Insert a new element between two existing elements. +/// @param[in] n The node to add to the list. +/// @param[in] prev The pointer to the node before where the new node will be inserted. +/// @param[in] next The pointer to the new node after where the new node will be inserted. +static inline void list_insert(struct ll_head* n, struct ll_head* prev, struct ll_head* next) +{ + next->prev = n; + n->next = next; + n->prev = prev; + prev->next = n; +} + +/// Add a node to the front of the list +/// @param[in] n The node to add to the list. +/// @param[in] head The head of the list. +static inline void list_add(struct ll_head* n, struct ll_head* head) +{ + list_insert(n, head, head->next); +} + +/// Add a node to the end of the list +/// @param[in] n The node to add to the list. +/// @param[in] head The head of the list. +static inline void list_add_tail(struct ll_head* n, struct ll_head* head) +{ + list_insert(n, head->prev, head); +} + +/// @} + +//#pragma mark - Delete - + +/// @name Deletion +/// @{ + +/// Remove the node between two element pointers. +/// +/// Joins the `prev` and `next` elements together, effectively removing +/// the element in the middle. +/// +/// @param[in] prev The previous element in the list, which will now be joined to next. +/// @param[in] next The next element in the list, which will now be joined to prev. +static inline void list_join_nodes(struct ll_head* prev, struct ll_head* next) +{ + next->prev = prev; + prev->next = next; +} + +/// Remove an entry from the list +/// @param[in] entry The pointer to the entry to remove from the list. +static inline void list_del(struct ll_head* entry) +{ + list_join_nodes(entry->prev, entry->next); + entry->next = NULL; + entry->prev = NULL; +} + +/// @} + +/// @} +// end group + +#ifdef __cplusplus +} +#endif //__cplusplus + +#endif // LL_H__ diff --git a/libraries/ea_malloc/malloc_freelist.c b/libraries/ea_malloc/malloc_freelist.c new file mode 100644 index 00000000..4fb1f7b3 --- /dev/null +++ b/libraries/ea_malloc/malloc_freelist.c @@ -0,0 +1,168 @@ +/* + * Copyright © 2017 Embedded Artistry LLC. + * License: MIT. See LICENSE file for details. + */ + +#include +#include +#include +#include + +//#pragma mark - Definitions - + +/** + * Simple macro for making sure memory addresses are aligned + * to the nearest power of two + */ +#ifndef align_up +#define align_up(num, align) (((num) + ((align)-1)) & ~((align)-1)) +#endif + +/* + * This is the container for our free-list. + * Note the usage of the linked list here: the library uses offsetof + * and container_of to manage the list and get back to the parent struct. + */ +typedef struct +{ + ll_t node; + size_t size; + char* block; +} alloc_node_t; + +/** + * We vend a memory address to the user. This lets us translate back and forth + * between the vended pointer and the container we use for managing the data. + */ +#define ALLOC_HEADER_SZ offsetof(alloc_node_t, block) + +// We are enforcing a minimum allocation size of 32B. +#define MIN_ALLOC_SZ ALLOC_HEADER_SZ + 32 + +//#pragma mark - Prototypes - + +static void defrag_free_list(void); + +//#pragma mark - Declarations - + +// This macro simply declares and initializes our linked list +static LIST_INIT(free_list); + +//#pragma mark - Private Functions - + +/** + * When we free, we can take our node and check to see if any memory blocks + * can be combined into larger blocks. This will help us fight against + * memory fragmentation in a simple way. + */ +void defrag_free_list(void) +{ + alloc_node_t* b; + alloc_node_t* lb = NULL; + alloc_node_t* t; + + list_for_each_entry_safe(b, t, &free_list, node) + { + if(lb) + { + if((((uintptr_t)&lb->block) + lb->size) == (uintptr_t)b) + { + lb->size += ALLOC_HEADER_SZ + b->size; + list_del(&b->node); + continue; + } + } + lb = b; + } +} + +//#pragma mark - APIs - + +__attribute__((weak)) void malloc_init(void) +{ + // Unused here, override to specify your own init functin + // Which includes malloc_addblock calls +} + +void* ea_malloc(size_t size) +{ + void* ptr = NULL; + alloc_node_t* blk = NULL; + + if(size > 0) + { + // Align the pointer + size = align_up(size, sizeof(void*)); + + // try to find a big enough block to alloc + list_for_each_entry(blk, &free_list, node) + { + if(blk->size >= size) + { + ptr = &blk->block; + break; + } + } + + // we found something + if(ptr) + { + // Can we split the block? + if((blk->size - size) >= MIN_ALLOC_SZ) + { + alloc_node_t* new_blk; + new_blk = (alloc_node_t*)((uintptr_t)(&blk->block) + size); + new_blk->size = blk->size - size - ALLOC_HEADER_SZ; + blk->size = size; + list_insert(&new_blk->node, &blk->node, blk->node.next); + } + + list_del(&blk->node); + } + + } // else NULL + + return ptr; +} + +void ea_free(void* ptr) +{ + alloc_node_t* free_blk; + alloc_node_t* blk; + + // Don't free a NULL pointer.. + if(ptr) + { + // we take the pointer and use container_of to get the corresponding alloc block + blk = container_of(ptr, alloc_node_t, block); + + // Let's put it back in the proper spot + list_for_each_entry(free_blk, &free_list, node) + { + if(free_blk > blk) + { + list_insert(&blk->node, free_blk->node.prev, &free_blk->node); + goto blockadded; + } + } + list_add_tail(&blk->node, &free_list); + + blockadded: + // Let's see if we can combine any memory + defrag_free_list(); + } +} + +void malloc_addblock(void* addr, size_t size) +{ + alloc_node_t* blk; + + // let's align the start address of our block to the next pointer aligned number + blk = (void*)align_up((uintptr_t)addr, sizeof(void*)); + + // calculate actual size - remove our alignment and our header space from the availability + blk->size = (uintptr_t)addr + size - (uintptr_t)blk - ALLOC_HEADER_SZ; + + // and now our giant block of memory is added to the list! + list_add(&blk->node, &free_list); +} diff --git a/loader/boards/arduino_giga_r1_m7.conf b/loader/boards/arduino_giga_r1_m7.conf index 7b3f94ea..f9855f66 100644 --- a/loader/boards/arduino_giga_r1_m7.conf +++ b/loader/boards/arduino_giga_r1_m7.conf @@ -10,6 +10,10 @@ CONFIG_UART_LINE_CTRL=y CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT=y CONFIG_LLEXT_STORAGE_WRITABLE=n +CONFIG_HEAP_MEM_POOL_SIZE=2048 +CONFIG_SHELL_STACK_SIZE=32768 +CONFIG_MAIN_STACK_SIZE=32768 +CONFIG_LLEXT_HEAP_SIZE=128 CONFIG_FPU=y @@ -22,4 +26,10 @@ CONFIG_MEMC=y #CONFIG_VIDEO=y CONFIG_VIDEO_STM32_DCMI=y CONFIG_VIDEO_BUFFER_POOL_NUM_MAX=1 -CONFIG_VIDEO_BUFFER_POOL_SZ_MAX=160000 \ No newline at end of file +CONFIG_VIDEO_BUFFER_POOL_SZ_MAX=160000 + +CONFIG_ENTROPY_GENERATOR=y +CONFIG_TEST_RANDOM_GENERATOR=y + +CONFIG_CPP=y +CONFIG_STD_CPP17=y \ No newline at end of file diff --git a/loader/boards/arduino_giga_r1_m7.overlay b/loader/boards/arduino_giga_r1_m7.overlay index f6711d65..0f6a138f 100644 --- a/loader/boards/arduino_giga_r1_m7.overlay +++ b/loader/boards/arduino_giga_r1_m7.overlay @@ -27,6 +27,7 @@ status = "okay"; }; + &i2c4 { status = "okay"; ov7670: ov7670@21 { @@ -258,6 +259,47 @@ }; }; + +&fmc { + status = "okay"; + pinctrl-0 = <&fmc_nbl0_pe0 &fmc_nbl1_pe1 + &fmc_sdclk_pg8 &fmc_sdnwe_ph5 &fmc_sdcke0_ph2 + &fmc_sdne0_ph3 &fmc_sdnras_pf11 &fmc_sdncas_pg15 + + &fmc_a0_pf0 &fmc_a1_pf1 &fmc_a2_pf2 &fmc_a3_pf3 &fmc_a4_pf4 + &fmc_a5_pf5 &fmc_a6_pf12 &fmc_a7_pf13 &fmc_a8_pf14 + &fmc_a9_pf15 &fmc_a10_pg0 &fmc_a11_pg1 &fmc_a12_pg2 + &fmc_a14_pg4 &fmc_a15_pg5 + + &fmc_d0_pd14 &fmc_d1_pd15 &fmc_d2_pd0 &fmc_d3_pd1 + &fmc_d4_pe7 &fmc_d5_pe8 &fmc_d6_pe9 &fmc_d7_pe10 + &fmc_d8_pe11 &fmc_d9_pe12 &fmc_d10_pe13 &fmc_d11_pe14 + &fmc_d12_pe15 &fmc_d13_pd8 &fmc_d14_pd9 &fmc_d15_pd10>; + pinctrl-names = "default"; + + sdram { + status = "okay"; + + power-up-delay = <100>; + num-auto-refresh = <8>; + mode-register = <0x220>; + refresh-rate = <603>; + + bank@0 { + reg = <0>; + st,sdram-control = ; + st,sdram-timing = <2 6 4 6 2 2 2>; + }; + }; +}; + /{ chosen { zephyr,camera = &dcmi; diff --git a/loader/llext_exports.c b/loader/llext_exports.c index 0c9d4b5a..4d04336f 100644 --- a/loader/llext_exports.c +++ b/loader/llext_exports.c @@ -21,8 +21,15 @@ EXPORT_SYMBOL(strtoul); EXPORT_SYMBOL(strcmp); EXPORT_SYMBOL(strlen); EXPORT_SYMBOL(strchr); +EXPORT_SYMBOL(strcat); +EXPORT_SYMBOL(strtok); +EXPORT_SYMBOL(strtol); + EXPORT_SYMBOL(memmove); +EXPORT_SYMBOL(memcpy); +EXPORT_SYMBOL(memset); +EXPORT_SYMBOL(k_malloc); EXPORT_SYMBOL(malloc); EXPORT_SYMBOL(realloc); EXPORT_SYMBOL(calloc); @@ -30,6 +37,7 @@ EXPORT_SYMBOL(free); EXPORT_SYMBOL(rand); EXPORT_SYMBOL(srand); +EXPORT_SYMBOL(atoi); EXPORT_SYMBOL(atof); EXPORT_SYMBOL(atol); EXPORT_SYMBOL(isspace); @@ -42,8 +50,10 @@ EXPORT_SYMBOL(isdigit); EXPORT_SYMBOL(isgraph); EXPORT_SYMBOL(isprint); EXPORT_SYMBOL(isupper); +EXPORT_SYMBOL(islower); EXPORT_SYMBOL(isxdigit); + #if defined(CONFIG_USB_DEVICE_STACK) EXPORT_SYMBOL(usb_enable); EXPORT_SYMBOL(usb_disable); @@ -54,6 +64,8 @@ EXPORT_SYMBOL(z_log_msg_runtime_vcreate); #if defined(CONFIG_NETWORKING) FORCE_EXPORT_SYM(net_if_foreach); FORCE_EXPORT_SYM(net_if_get_by_iface); +//FORCE_EXPORT_SYM(net_if_ipv4_maddr_add); +//FORCE_EXPORT_SYM(net_if_ipv4_maddr_join); #endif #if defined(CONFIG_NET_DHCPV4) @@ -65,14 +77,26 @@ FORCE_EXPORT_SYM(net_dhcpv4_add_option_callback); #if defined(CONFIG_NET_MGMT_EVENT) FORCE_EXPORT_SYM(net_mgmt_add_event_callback); +FORCE_EXPORT_SYM(net_mgmt_event_wait_on_iface); +#endif + +#if defined(CONFIG_MBEDTLS) +FORCE_EXPORT_SYM(tls_credential_add); +#endif + +#if defined(CONFIG_WIFI) +FORCE_EXPORT_SYM(net_if_get_wifi_sta); +FORCE_EXPORT_SYM(net_mgmt_NET_REQUEST_WIFI_CONNECT); +FORCE_EXPORT_SYM(net_mgmt_NET_REQUEST_WIFI_IFACE_STATUS); #endif #if defined(CONFIG_BT) FORCE_EXPORT_SYM(bt_enable_raw); FORCE_EXPORT_SYM(bt_hci_raw_set_mode); -FORCE_EXPORT_SYM(bt_send); +FORCE_EXPORT_SYM(bt_send) FORCE_EXPORT_SYM(net_buf_get); FORCE_EXPORT_SYM(bt_buf_get_tx); +FORCE_EXPORT_SYM(bt_conn_get_dst); FORCE_EXPORT_SYM(net_buf_simple_pull); FORCE_EXPORT_SYM(net_buf_simple_add_mem); FORCE_EXPORT_SYM(net_buf_simple_pull_mem); @@ -98,6 +122,9 @@ FORCE_EXPORT_SYM(bind); FORCE_EXPORT_SYM(listen); EXPORT_SYMBOL(exit); FORCE_EXPORT_SYM(inet_pton); +FORCE_EXPORT_SYM(sendto); +FORCE_EXPORT_SYM(recvfrom); +FORCE_EXPORT_SYM(setsockopt); #endif #if defined(CONFIG_CDC_ACM_DTE_RATE_CALLBACK_SUPPORT) @@ -106,6 +133,7 @@ FORCE_EXPORT_SYM(cdc_acm_dte_rate_callback_set); EXPORT_SYMBOL(k_timer_init); EXPORT_SYMBOL(k_fatal_halt); +EXPORT_SYMBOL(k_work_schedule); //FORCE_EXPORT_SYM(k_timer_user_data_set); //FORCE_EXPORT_SYM(k_timer_start); @@ -120,7 +148,7 @@ EXPORT_SYMBOL(printf); EXPORT_SYMBOL(sprintf); EXPORT_SYMBOL(snprintf); EXPORT_SYMBOL(cbvprintf); - +; FORCE_EXPORT_SYM(abort); #if defined(CONFIG_RING_BUFFER) FORCE_EXPORT_SYM(ring_buf_get); @@ -153,3 +181,5 @@ FORCE_EXPORT_SYM(__aeabi_d2iz); FORCE_EXPORT_SYM(__aeabi_f2d); FORCE_EXPORT_SYM(__aeabi_idivmod); FORCE_EXPORT_SYM(__aeabi_ldivmod); +FORCE_EXPORT_SYM(__aeabi_ul2f); +FORCE_EXPORT_SYM(__cxa_pure_virtual); \ No newline at end of file diff --git a/samples/analog_input/CMakeLists.txt b/samples/analog_input/CMakeLists.txt deleted file mode 100644 index 83ac0d6b..00000000 --- a/samples/analog_input/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -cmake_minimum_required(VERSION 3.20.0) - -cmake_path(SET ZephyrBase $ENV{ZEPHYR_BASE}) -set(DTC_OVERLAY_FILE ${ZephyrBase}/../modules/lib/Arduino-Zephyr-API/variants/${BOARD}/${BOARD}.overlay) - -find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) -project(analog_input) - -target_sources(app PRIVATE src/main.cpp) -zephyr_compile_options(-Wno-unused-variable -Wno-comment) diff --git a/samples/analog_input/README.rst b/samples/analog_input/README.rst deleted file mode 100644 index 51349e48..00000000 --- a/samples/analog_input/README.rst +++ /dev/null @@ -1,24 +0,0 @@ -.. _analog_input: - -Analog Input -############ - -Overview -******** - -The analog_input sample blinks the LED with control of the period -by the voltage of the input pin. -Inputting high voltage to blink the LED slowly. -Blink the LED fast on input voltage is low. -When the input is 0V, LED light. - -Building and Running -******************** - -Build and flash analog_input sample as follows, - -```sh -$> west build -p -b arduino_nano_33_ble sample/analog_input/ - -$> west flash --bossac=/home/$USER/.arduino15/packages/arduino/tools/bossac/1.9.1-arduino2/bossac -``` diff --git a/samples/analog_input/prj.conf b/samples/analog_input/prj.conf deleted file mode 100644 index 7db48201..00000000 --- a/samples/analog_input/prj.conf +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_ADC=y -CONFIG_ARDUINO_API=y diff --git a/samples/analog_input/src/main.cpp b/samples/analog_input/src/main.cpp deleted file mode 100644 index 9cc23dae..00000000 --- a/samples/analog_input/src/main.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2022 TOKITA Hiroshi - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include - -const int analog_input = A0; // select the input pin for the potentiometer -const int ledPin = LED_BUILTIN; // select the pin for the LED -const float wait_factor = 1.f; - -void setup() { - pinMode(ledPin, OUTPUT); -} - -void loop() { - int value = 0; - - value = analogRead(analog_input); - - /* Blinks slowly when the input voltage is high */ - - digitalWrite(ledPin, HIGH); - delay(value * wait_factor); - - digitalWrite(ledPin, LOW); - delay(value * wait_factor); -} diff --git a/samples/attach_interrupt/CMakeLists.txt b/samples/attach_interrupt/CMakeLists.txt deleted file mode 100644 index 711b9673..00000000 --- a/samples/attach_interrupt/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -cmake_minimum_required(VERSION 3.20.0) - -cmake_path(SET ZephyrBase $ENV{ZEPHYR_BASE}) -set(DTC_OVERLAY_FILE ${ZephyrBase}/../modules/lib/Arduino-Zephyr-API/variants/${BOARD}/${BOARD}.overlay) - -find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) -project(attach_interrupt) - -target_sources(app PRIVATE src/main.cpp) - -zephyr_compile_options(-Wno-unused-variable -Wno-comment) diff --git a/samples/attach_interrupt/README.rst b/samples/attach_interrupt/README.rst deleted file mode 100644 index f85d738a..00000000 --- a/samples/attach_interrupt/README.rst +++ /dev/null @@ -1,22 +0,0 @@ -.. _attach_interrupt-sample: - -AttachInterrupt -###### - -Overview -******** - -This sample demonstrates how to use attachInterrupt API. - -Building and Running -******************** - -Build and flash attachInterrupt sample as follows, - -```sh -$> west build -p -b arduino_nano_33_ble samples/basic/attach_interrupt/ -DZEPHYR_EXTRA_MODULES=/home/$USER/zephyrproject/modules/lib/Arduino-Core-Zephyr - -$> west flash --bossac=/home/$USER/.arduino15/packages/arduino/tools/bossac/1.9.1-arduino2/bossac -``` - -Turn on the LED by detecting interrupts. And Turn off the next interrupt. diff --git a/samples/attach_interrupt/prj.conf b/samples/attach_interrupt/prj.conf deleted file mode 100644 index f93fa321..00000000 --- a/samples/attach_interrupt/prj.conf +++ /dev/null @@ -1 +0,0 @@ -CONFIG_ARDUINO_API=y diff --git a/samples/attach_interrupt/src/main.cpp b/samples/attach_interrupt/src/main.cpp deleted file mode 100644 index 3d803dbb..00000000 --- a/samples/attach_interrupt/src/main.cpp +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright (c) 2022 TOKITA Hiroshi - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include - -const pin_size_t ledPin = LED_BUILTIN; -const pin_size_t interruptPin = 2; -PinStatus state = LOW; - -void blink() { - state = (state == LOW) ? HIGH : LOW; - digitalWrite(ledPin, state); -} - -void setup() { - pinMode(ledPin, OUTPUT); - pinMode(interruptPin, INPUT_PULLUP); - attachInterrupt(interruptPin, blink, CHANGE); -} - -void loop() { -} diff --git a/samples/blinky_arduino/CMakeLists.txt b/samples/blinky_arduino/CMakeLists.txt deleted file mode 100644 index e5c58ee3..00000000 --- a/samples/blinky_arduino/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -cmake_minimum_required(VERSION 3.20.0) - -cmake_path(SET ZephyrBase $ENV{ZEPHYR_BASE}) -set(DTC_OVERLAY_FILE ${ZephyrBase}/../modules/lib/Arduino-Zephyr-API/variants/${BOARD}/${BOARD}.overlay) - -find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) -project(blinky) - -target_sources(app PRIVATE src/main.cpp) - -zephyr_compile_options(-Wno-unused-variable -Wno-comment) diff --git a/samples/blinky_arduino/README.rst b/samples/blinky_arduino/README.rst deleted file mode 100644 index 67027e57..00000000 --- a/samples/blinky_arduino/README.rst +++ /dev/null @@ -1,71 +0,0 @@ -.. _blinky-sample: - -Blinky -###### - -Overview -******** - -This Arduino Blinky sample blinks an LED forever using the `ArduinoAPI`. - -Requirements -************ - -Your board must: - -#. Have an LED connected via a GPIO pin (these are called "User LEDs" on many of - Zephyr's :ref:`boards`). -#. Have the LED configured using the ``led0`` devicetree alias. - -Building and Running -******************** - -Build and flash Blinky as follows, - -```sh -$> west build -p -b arduino_nano_33_ble samples/basic/arduino-blinky/ -DZEPHYR_EXTRA_MODULES=/home/$USER/zephyrproject/modules/lib/Arduino-Core-Zephyr - -$> west flash --bossac=/home/$USER/.arduino15/packages/arduino/tools/bossac/1.9.1-arduino2/bossac -``` - -After flashing, the LED starts to blink. If a runtime error occurs, the sample -exits without printing to the console. - -Adding board support -******************** - -To add support for your board, add something like this to your devicetree: - -.. code-block:: DTS - - / { - aliases { - led0 = &myled0; - }; - - leds { - compatible = "gpio-leds"; - myled0: led_0 { - gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; - }; - }; - }; - -The above sets your board's ``led0`` alias to use pin 13 on GPIO controller -``gpio0``. The pin flags :c:macro:`GPIO_ACTIVE_HIGH` mean the LED is on when -the pin is set to its high state, and off when the pin is in its low state. - -Tips: - -- See :dtcompatible:`gpio-leds` for more information on defining GPIO-based LEDs - in devicetree. - -- If you're not sure what to do, check the devicetrees for supported boards which - use the same SoC as your target. See :ref:`get-devicetree-outputs` for details. - -- See :zephyr_file:`include/zephyr/dt-bindings/gpio/gpio.h` for the flags you can use - in devicetree. - -- If the LED is built in to your board hardware, the alias should be defined in - your :ref:`BOARD.dts file `. Otherwise, you can - define one in a :ref:`devicetree overlay `. diff --git a/samples/blinky_arduino/prj.conf b/samples/blinky_arduino/prj.conf deleted file mode 100644 index 290d61a3..00000000 --- a/samples/blinky_arduino/prj.conf +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_GPIO=y -CONFIG_ARDUINO_API=y diff --git a/samples/blinky_arduino/src/main.cpp b/samples/blinky_arduino/src/main.cpp deleted file mode 100644 index b3c1103e..00000000 --- a/samples/blinky_arduino/src/main.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - */ - -/* Blink inbuilt LED example */ - -#include - -/* 1000 msec = 1 sec */ -#define SLEEP_TIME_MS 1000 - -void setup() { pinMode(LED_BUILTIN, OUTPUT); } - -void loop() { - digitalWrite(LED_BUILTIN, HIGH); - delay(SLEEP_TIME_MS); - digitalWrite(LED_BUILTIN, LOW); - delay(SLEEP_TIME_MS); -} \ No newline at end of file diff --git a/samples/button_press_led/CMakeLists.txt b/samples/button_press_led/CMakeLists.txt deleted file mode 100644 index e5c58ee3..00000000 --- a/samples/button_press_led/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -cmake_minimum_required(VERSION 3.20.0) - -cmake_path(SET ZephyrBase $ENV{ZEPHYR_BASE}) -set(DTC_OVERLAY_FILE ${ZephyrBase}/../modules/lib/Arduino-Zephyr-API/variants/${BOARD}/${BOARD}.overlay) - -find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) -project(blinky) - -target_sources(app PRIVATE src/main.cpp) - -zephyr_compile_options(-Wno-unused-variable -Wno-comment) diff --git a/samples/button_press_led/README.rst b/samples/button_press_led/README.rst deleted file mode 100644 index f3cef794..00000000 --- a/samples/button_press_led/README.rst +++ /dev/null @@ -1,67 +0,0 @@ -Button press LED -###### - -Overview -******** - -This Arduino sample turns ON an LED if button pressed using the `ArduinoAPI`. - -Requirements -************ - -Your board must: - -#. Have an LED connected via a GPIO pin (these are called "User LEDs" on many of - Zephyr's :ref:`boards`). -#. Have the LED configured using the ``led0`` devicetree alias. -#. Have a button connected to pin `D9` of the arduino externally (pulled down by default) - -Building and Running -******************** - -Build and flash as follows, - -```sh -$> west build -p -b arduino_nano_33_ble samples/button_press_led -DZEPHYR_EXTRA_MODULES=/home/$USER/zephyrproject/modules/lib/Arduino-Core-Zephyr - -$> west flash --bossac=/home/$USER/.arduino15/packages/arduino/tools/bossac/1.9.1-arduino2/bossac -``` - -Adding board support -******************** - -To add support for your board, add something like this to your devicetree: - -.. code-block:: DTS - - / { - aliases { - led0 = &myled0; - }; - - leds { - compatible = "gpio-leds"; - myled0: led_0 { - gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; - }; - }; - }; - -The above sets your board's ``led0`` alias to use pin 13 on GPIO controller -``gpio0``. The pin flags :c:macro:`GPIO_ACTIVE_HIGH` mean the LED is on when -the pin is set to its high state, and off when the pin is in its low state. - -Tips: - -- See :dtcompatible:`gpio-leds` for more information on defining GPIO-based LEDs - in devicetree. - -- If you're not sure what to do, check the devicetrees for supported boards which - use the same SoC as your target. See :ref:`get-devicetree-outputs` for details. - -- See :zephyr_file:`include/zephyr/dt-bindings/gpio/gpio.h` for the flags you can use - in devicetree. - -- If the LED is built in to your board hardware, the alias should be defined in - your :ref:`BOARD.dts file `. Otherwise, you can - define one in a :ref:`devicetree overlay `. diff --git a/samples/button_press_led/prj.conf b/samples/button_press_led/prj.conf deleted file mode 100644 index 290d61a3..00000000 --- a/samples/button_press_led/prj.conf +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_GPIO=y -CONFIG_ARDUINO_API=y diff --git a/samples/button_press_led/src/main.cpp b/samples/button_press_led/src/main.cpp deleted file mode 100644 index 9440ceea..00000000 --- a/samples/button_press_led/src/main.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - */ - -/* Button Press turns on inbuilt LED example */ - -#include - -const int buttonPin = D9; // the number of the pushbutton pin -const int ledPin = 13; // the number of the LED pin - -// variables will change: -int buttonState = 0; // variable for reading the pushbutton status - -void setup() { - // initialize the LED pin as an output: - pinMode(ledPin, OUTPUT); - // initialize the pushbutton pin as an input: - pinMode(buttonPin, INPUT); -} - -void loop() { - // read the state of the pushbutton value: - buttonState = digitalRead(buttonPin); - - // check if the pushbutton is pressed. If it is, the buttonState is HIGH: - if (buttonState == HIGH) { - // turn LED on: - digitalWrite(ledPin, HIGH); - } else { - // turn LED off: - digitalWrite(ledPin, LOW); - } -} diff --git a/samples/fade/CMakeLists.txt b/samples/fade/CMakeLists.txt deleted file mode 100644 index 6f3c4cff..00000000 --- a/samples/fade/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -cmake_minimum_required(VERSION 3.20.0) - -cmake_path(SET ZephyrBase $ENV{ZEPHYR_BASE}) -set(DTC_OVERLAY_FILE ${ZephyrBase}/../modules/lib/Arduino-Zephyr-API/variants/${BOARD}/${BOARD}.overlay) - -find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) -project(fade) - -target_sources(app PRIVATE src/app.cpp) - -zephyr_compile_options(-Wno-unused-variable -Wno-comment) diff --git a/samples/fade/README.rst b/samples/fade/README.rst deleted file mode 100644 index 8de33953..00000000 --- a/samples/fade/README.rst +++ /dev/null @@ -1,21 +0,0 @@ -.. _fade: - -Fade -#### - -Overview -******** - -The Fade sample gradually increases/decreases the voltage of the output pin. -When connecting the LED to the output pin, the LED blinks gradually. - -Building and Running -******************** - -Build and flash Fade sample as follows, - -```sh -$> west build -p -b arduino_nano_33_ble samples/basic/fade/ -DZEPHYR_EXTRA_MODULES=/home/$USER/zephyrproject/modules/lib/Arduino-Core-Zephyr - -$> west flash --bossac=/home/$USER/.arduino15/packages/arduino/tools/bossac/1.9.1-arduino2/bossac -``` diff --git a/samples/fade/prj.conf b/samples/fade/prj.conf deleted file mode 100644 index cd969855..00000000 --- a/samples/fade/prj.conf +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_ARDUINO_API=y -CONFIG_PWM=y diff --git a/samples/fade/src/app.cpp b/samples/fade/src/app.cpp deleted file mode 100644 index e812dcd0..00000000 --- a/samples/fade/src/app.cpp +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2022 TOKITA Hiroshi - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include - -const int led = 3; // PWM output pin. -const int increments = 5; -const int wait_ms = 10; - -void setup() { - /* Pin that use as the PWM output need not be configured by pinMode() */ -} - -void loop() { - int value = 0; - while (value < 256) { - analogWrite(led, value); - value += increments; - delay(wait_ms); - } - - value = 255; - while (value >= 0) { - analogWrite(led, value); - value -= increments; - delay(wait_ms); - } -} diff --git a/samples/hello_arduino/CMakeLists.txt b/samples/hello_arduino/CMakeLists.txt deleted file mode 100644 index 0675b10d..00000000 --- a/samples/hello_arduino/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -cmake_minimum_required(VERSION 3.20.0) - -cmake_path(SET ZephyrBase $ENV{ZEPHYR_BASE}) -set(DTC_OVERLAY_FILE ${ZephyrBase}/../modules/lib/Arduino-Zephyr-API/variants/${BOARD}/${BOARD}.overlay) - -find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) -project(hello_world) - -target_sources(app PRIVATE src/app.cpp) - -zephyr_compile_options(-Wno-unused-variable -Wno-comment) diff --git a/samples/hello_arduino/README.rst b/samples/hello_arduino/README.rst deleted file mode 100644 index ce5423d6..00000000 --- a/samples/hello_arduino/README.rst +++ /dev/null @@ -1,33 +0,0 @@ -.. _hello_world: - -Hello World -########### - -Overview -******** - -A simple sample that can be used with any :ref:`supported board ` and -prints "Hello World" to the console. - -Building and Running -******************** - -This application can be built and executed on QEMU as follows: - -.. zephyr-app-commands:: - :zephyr-app: samples/hello_world - :host-os: unix - :board: qemu_x86 - :goals: run - :compact: - -To build for another board, change "qemu_x86" above to that board's name. - -Sample Output -============= - -.. code-block:: console - - Hello World! x86 - -Exit QEMU by pressing :kbd:`CTRL+A` :kbd:`x`. diff --git a/samples/hello_arduino/prj.conf b/samples/hello_arduino/prj.conf deleted file mode 100644 index f93fa321..00000000 --- a/samples/hello_arduino/prj.conf +++ /dev/null @@ -1 +0,0 @@ -CONFIG_ARDUINO_API=y diff --git a/samples/hello_arduino/src/app.cpp b/samples/hello_arduino/src/app.cpp deleted file mode 100644 index aa7cd536..00000000 --- a/samples/hello_arduino/src/app.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - */ - -#include -#include "zephyrSerial.h" - - -void setup() { - // put your setup code here, to run once: - Serial.begin(115200); // dummy as of now, need to study and refer https://docs.zephyrproject.org/latest/hardware/peripherals/uart.html -} -void loop() { - char c = 'D'; - size_t ret1; - size_t ret2; - ret1 = Serial.print(c); - ret2 = Serial.println("Hello, World!"); - printk("Sizes: %d %d\n", ret1, ret2); - Serial.println(); - ret1 = Serial.print("My letter is: "); - ret2 = Serial.println(c); - printk("Sizes: %d %d\n", ret1, ret2); - Serial.println(); - char myString[] = "Will it print?"; - ret1 = Serial.println(myString); - printk("Size: %d \n\n\n", ret1); - delay(1000); // 1 second delay -} diff --git a/samples/i2cdemo/CMakeLists.txt b/samples/i2cdemo/CMakeLists.txt deleted file mode 100644 index e79ab241..00000000 --- a/samples/i2cdemo/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -cmake_minimum_required(VERSION 3.20.0) - -cmake_path(SET ZephyrBase $ENV{ZEPHYR_BASE}) -set(DTC_OVERLAY_FILE ${ZephyrBase}/../modules/lib/Arduino-Zephyr-API/variants/${BOARD}/${BOARD}.overlay) - -find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) -project(blinky) - -target_sources(app PRIVATE src/main.cpp) -zephyr_compile_options(-Wno-unused-variable -Wno-comment) diff --git a/samples/i2cdemo/README.rst b/samples/i2cdemo/README.rst deleted file mode 100644 index 41c6cb43..00000000 --- a/samples/i2cdemo/README.rst +++ /dev/null @@ -1,28 +0,0 @@ -i2c demo -###### - -Overview -******** - -This Arduino i2c sample gets data from an ADXL345 sensor connected over `i2c0`. - -Requirements -************ - -Your board must: - -#. Have atleast 1 i2c port. -#. Have the ADXL345 sensor connected to the I2C port. - -Building and Running -******************** - -Build and flash Blinky as follows, - -```sh -$> west build -p -b arduino_nano_33_ble samples/i2cdemo - -$> west flash --bossac=/home/$USER/.arduino15/packages/arduino/tools/bossac/1.9.1-arduino2/bossac -``` - -After flashing, probe the UART pin (TX) and you should be able to see X, Y and Z values if everything goes well. diff --git a/samples/i2cdemo/prj.conf b/samples/i2cdemo/prj.conf deleted file mode 100644 index d546d036..00000000 --- a/samples/i2cdemo/prj.conf +++ /dev/null @@ -1,6 +0,0 @@ -CONFIG_GPIO=y -CONFIG_ARDUINO_API=y -CONFIG_I2C=y -CONFIG_NEWLIB_LIBC=y -CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=y -CONFIG_RING_BUFFER=y diff --git a/samples/i2cdemo/src/main.cpp b/samples/i2cdemo/src/main.cpp deleted file mode 100644 index 6f3f4c79..00000000 --- a/samples/i2cdemo/src/main.cpp +++ /dev/null @@ -1,118 +0,0 @@ -/* Blink inbuilt LED example */ - -#include -#include "Wire.h" - -void setup() -{ - printf("\n\nSetup begins\n"); - Wire.begin(); - // initialize the LED pin as an output: - - // initialize the pushbutton pin as an input: - // pinMode(buttonPin, INPUT); - // pinMode(ledPin, OUTPUT); - Wire.beginTransmission(0x53); - Wire.write(0x2C); - Wire.write(0x08); - Wire.endTransmission(); - - Wire.beginTransmission(0x53); - Wire.write(0x31); - Wire.write(0x08); - Wire.endTransmission(); - - Wire.beginTransmission(0x53); - Wire.write(0x2D); - Wire.write(0x08); - Wire.endTransmission(); - printf("\n\nSetup COMPLETE\n\n\n"); -} - -void loop() -{ - Wire.beginTransmission(0x53); -Wire.write(0x32); -Wire.endTransmission(); -// printf("\n\nrequesting from 53\n\n\n"); -Wire.requestFrom(0x53, 1); -byte x0 = Wire.read(); - -Wire.beginTransmission(0x53); -Wire.write(0x33); -Wire.endTransmission(); -Wire.requestFrom(0x53, 1); -byte x1 = Wire.read(); -x1 = x1 & 0x03; - -uint16_t x = (x1 << 8) + x0; -int16_t xf = x; -if(xf > 511) -{ -xf = xf - 1024; -} -float xa = xf * 0.004; -printf("\n\nX = %f\n",xa); -// Serial.print("X = "); -// Serial.print(xa); -// Serial.print(" g"); -// Serial.println(); - - -Wire.beginTransmission(0x53); -Wire.write(0x34); -Wire.endTransmission(); -Wire.requestFrom(0x53, 1); -byte y0 = Wire.read(); - -Wire.beginTransmission(0x53); -Wire.write(0x35); -Wire.endTransmission(); -Wire.requestFrom(0x53, 1); -byte y1 = Wire.read(); -y1 = y1 & 0x03; - -uint16_t y = (y1 << 8) + y0; -int16_t yf = y; -if(yf > 511) -{ -yf = yf - 1024; -} -float ya = yf * 0.004; -// printk("Y = %f\n",ya); -printf("Y = %f\n",ya); -// printf("\n\nYa = %f\n\n\n",ya); -// Serial.print("Y = "); -// Serial.print(ya); -// Serial.print(" g"); -// Serial.println(); - -Wire.beginTransmission(0x53); -Wire.write(0x36); -Wire.endTransmission(); -Wire.requestFrom(0x53, 1); -byte z0 = Wire.read(); - -Wire.beginTransmission(0x53); -Wire.write(0x37); -Wire.endTransmission(); -Wire.requestFrom(0x53, 1); -byte z1 = Wire.read(); -z1 = z1 & 0x03; - -uint16_t z = (z1 << 8) + z0; -int16_t zf = z; -if(zf > 511) -{ -zf = zf - 1024; -} -float za = zf * 0.004; -printf("Z = %f\n\n",za); -// Serial.print("Z = "); -// Serial.print(za); -// Serial.print(" g"); -// Serial.println(); -// Serial.println(); -delay(500); - -} \ No newline at end of file diff --git a/samples/serial_event/CMakeLists.txt b/samples/serial_event/CMakeLists.txt deleted file mode 100644 index a275e3cc..00000000 --- a/samples/serial_event/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -cmake_minimum_required(VERSION 3.20.0) - -cmake_path(SET ZephyrBase $ENV{ZEPHYR_BASE}) -set(DTC_OVERLAY_FILE ${ZephyrBase}/../modules/lib/Arduino-Zephyr-API/variants/${BOARD}/${BOARD}.overlay) - -find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) -project(serial_event) - -target_sources(app PRIVATE src/app.cpp) - -zephyr_compile_options(-Wno-unused-variable -Wno-comment) diff --git a/samples/serial_event/README.rst b/samples/serial_event/README.rst deleted file mode 100644 index e4dde008..00000000 --- a/samples/serial_event/README.rst +++ /dev/null @@ -1,20 +0,0 @@ -.. _serial_event: - -Serial Event -############ - -Overview -******** - -The serial_event sample echo back serial input data. - -Building and Running -******************** - -Build and flash serial_event sample as follows, - -```sh -$> west build -p -b arduino_nano_33_ble sample/serial_event/ - -$> west flash --bossac=/home/$USER/.arduino15/packages/arduino/tools/bossac/1.9.1-arduino2/bossac -``` diff --git a/samples/serial_event/prj.conf b/samples/serial_event/prj.conf deleted file mode 100644 index f93fa321..00000000 --- a/samples/serial_event/prj.conf +++ /dev/null @@ -1 +0,0 @@ -CONFIG_ARDUINO_API=y diff --git a/samples/serial_event/src/app.cpp b/samples/serial_event/src/app.cpp deleted file mode 100644 index 602d378a..00000000 --- a/samples/serial_event/src/app.cpp +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2022 TOKITA Hiroshi - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include - -void setup() { - Serial.begin(115200); -} - -void loop() { -} - -void serialEvent() { - while(Serial.available()) { - Serial.print((char)Serial.read()); - } -} diff --git a/samples/spi_controller/CMakeLists.txt b/samples/spi_controller/CMakeLists.txt deleted file mode 100644 index 824634e5..00000000 --- a/samples/spi_controller/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -cmake_minimum_required(VERSION 3.20.0) - -cmake_path(SET ZephyrBase $ENV{ZEPHYR_BASE}) -set(DTC_OVERLAY_FILE ${ZephyrBase}/../modules/lib/Arduino-Zephyr-API/variants/${BOARD}/${BOARD}.overlay) - -find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) -project(spi_controller) - -target_sources(app PRIVATE src/app.cpp) - -zephyr_compile_options(-Wno-unused-variable -Wno-comment) diff --git a/samples/spi_controller/README.rst b/samples/spi_controller/README.rst deleted file mode 100644 index 8d2aad33..00000000 --- a/samples/spi_controller/README.rst +++ /dev/null @@ -1,9 +0,0 @@ -.. _spi_controller: - -SPI Controller -############### - -Overview -******** - -A simple sample that sends incrementing byte to SPI peripheral. diff --git a/samples/spi_controller/prj.conf b/samples/spi_controller/prj.conf deleted file mode 100644 index 661fb228..00000000 --- a/samples/spi_controller/prj.conf +++ /dev/null @@ -1,6 +0,0 @@ -CONFIG_CPLUSPLUS=y -CONFIG_ARDUINO_API=y -CONFIG_SPI=y -CONFIG_LOG=y -CONFIG_LOG_OUTPUT=y -CONFIG_LOG_MODE_IMMEDIATE=y diff --git a/samples/spi_controller/src/app.cpp b/samples/spi_controller/src/app.cpp deleted file mode 100644 index d0306512..00000000 --- a/samples/spi_controller/src/app.cpp +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2024 Ayush Singh - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include "SPI.h" -#include - -#define CHIPSELECT 3 - -static uint8_t data = 0; - -void setup() { - SPI.begin(); - pinMode(CHIPSELECT, OUTPUT); - digitalWrite(CHIPSELECT, HIGH); -} - -void loop() { - SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0)); - digitalWrite(CHIPSELECT, LOW); - SPI.transfer(data++); - digitalWrite(CHIPSELECT, HIGH); - SPI.endTransaction(); - delay(1000); -} diff --git a/samples/threads_arduino/CMakeLists.txt b/samples/threads_arduino/CMakeLists.txt deleted file mode 100644 index f9aea636..00000000 --- a/samples/threads_arduino/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -cmake_minimum_required(VERSION 3.20.0) - -cmake_path(SET ZephyrBase $ENV{ZEPHYR_BASE}) -set(DTC_OVERLAY_FILE ${ZephyrBase}/../modules/lib/Arduino-Zephyr-API/variants/${BOARD}/${BOARD}.overlay) - -find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) -project(threads) - -target_sources(app PRIVATE src/main.cpp) -zephyr_compile_options(-Wno-unused-variable -Wno-comment) \ No newline at end of file diff --git a/samples/threads_arduino/README.rst b/samples/threads_arduino/README.rst deleted file mode 100644 index 670cd23d..00000000 --- a/samples/threads_arduino/README.rst +++ /dev/null @@ -1,47 +0,0 @@ -.. _arduino_nano_33_ble_multi_thread_blinky: - -Basic Thread Example -#################### - -Overview -******** - -This example demonstrates spawning multiple threads using -:c:func:`K_THREAD_DEFINE`. It spawns three threads. Each thread is then defined -at compile time using `K_THREAD_DEFINE`. - -These three each control an LED. These LEDs, ``LED_BUILTIN``, ``D10`` and ``D11``, have -loop control and timing logic controlled by separate functions. - -- ``blink0()`` controls ``LED_BUILTIN`` and has a 100ms sleep cycle -- ``blink1()`` controls ``D11`` and has a 1000ms sleep cycle -- ``loop()`` controls ``D10`` and has a 300ms sleep cycle - -Requirements -************ - -The board must have two LEDs connected via GPIO pins and one builtin LED. These are called "User -LEDs" on many of Zephyr's :ref:`boards`. The LEDs must be mapped using the `` -``LED_BUILTIN``, ``D10`` and ``D11`` to the :ref:`devicetree ` aliases, in the -variants folder. - -You will see one of these errors if you try to build this sample for an -unsupported board: - -.. code-block:: none - - Unsupported board: LED_BUILTIN devicetree alias is not defined - Unsupported board: D11 devicetree alias is not defined - -Building -******** - -For example, to build this sample for :ref:`arduino_nano_33_ble`: - -.. zephyr-app-commands:: - :zephyr-app: samples/basic/arduino-threads - :board: arduino_nano_33_ble - :goals: build flash - :compact: - -Change ``arduino_nano_33_ble`` appropriately for other supported boards. diff --git a/samples/threads_arduino/prj.conf b/samples/threads_arduino/prj.conf deleted file mode 100644 index 2d0830d4..00000000 --- a/samples/threads_arduino/prj.conf +++ /dev/null @@ -1,3 +0,0 @@ -CONFIG_HEAP_MEM_POOL_SIZE=256 -CONFIG_GPIO=y -CONFIG_ARDUINO_API=y diff --git a/samples/threads_arduino/src/main.cpp b/samples/threads_arduino/src/main.cpp deleted file mode 100644 index 7fa01650..00000000 --- a/samples/threads_arduino/src/main.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2022 Dhruva Gole - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include - -/* size of stack area used by each thread */ -#define STACKSIZE 1024 - -/* scheduling priority used by each thread */ -#define PRIORITY 7 - -void blink0(void) -{ - while (1) { - digitalWrite(LED_BUILTIN, HIGH); - delay(100); - digitalWrite(LED_BUILTIN, LOW); - delay(100); - } -} - -void blink1(void) -{ - while (1) { - digitalWrite(D11, HIGH); - delay(1000); - digitalWrite(D11, LOW); - delay(1000); - } -} - -K_THREAD_DEFINE(blink0_id, STACKSIZE, blink0, NULL, NULL, NULL, PRIORITY, 0, 0); -K_THREAD_DEFINE(blink1_id, STACKSIZE, blink1, NULL, NULL, NULL, PRIORITY, 0, 0); -K_THREAD_DEFINE(blink2_id, STACKSIZE, loop, NULL, NULL, NULL, PRIORITY, 0, 0); - -void setup() -{ - pinMode(LED_BUILTIN, OUTPUT); - pinMode(D11, OUTPUT); - pinMode(D10, OUTPUT); -} -void loop() -{ - digitalWrite(D10, HIGH); - delay(300); - digitalWrite(D10, LOW); - delay(300); -} diff --git a/variants/arduino_giga_r1_m7/llext-edk/Makefile.cflags b/variants/arduino_giga_r1_m7/llext-edk/Makefile.cflags index 1abe1f6c..6ec4ccb5 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/Makefile.cflags +++ b/variants/arduino_giga_r1_m7/llext-edk/Makefile.cflags @@ -1,11 +1,11 @@ -LLEXT_CFLAGS = -fno-strict-aliasing -fno-common -fdiagnostics-color=always -mcpu=cortex-m7 -mthumb -mabi=aapcs -mfpu=fpv5-d16 -mfloat-abi=hard -mfp16-format=ieee -mtp=soft -Wall -Wformat -Wformat-security -Wformat -Wno-format-zero-length -Wdouble-promotion -Wno-pointer-sign -Wpointer-arith -Wexpansion-to-defined -Wno-unused-but-set-variable -Werror=implicit-int -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop --specs=picolibc.specs -D_POSIX_THREADS -std=c99 -mlong-calls -mthumb -nodefaultlibs -imacros$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/zephyr/toolchain/zephyr_stdint.h -DLL_EXTENSION_BUILD -imacros$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/generated/zephyr/autoconf.h -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/generated/zephyr -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/generated -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32 -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/lib/libc/common/include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/lib/posix/options/getopt/ -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32/common/. -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/drivers -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32/stm32h7x/. -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/subsys/usb/device -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/cmsis/CMSIS/Core/Include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/modules/cmsis/. -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/stm32h7xx/soc -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/common_ll/include +LLEXT_CFLAGS = -DKERNEL -D__ZEPHYR__=1 -D__LINUX_ERRNO_EXTENSIONS__ -DPICOLIBC_DOUBLE_PRINTF_SCANF -D__PROGRAM_START -DSTM32H747xx -DUSE_HAL_DRIVER -DUSE_FULL_LL_DRIVER -DCORE_CM7 -DHSE_VALUE=16000000 -DK_HEAP_MEM_POOL_SIZE=2048 -DLL_EXTENSION_BUILD -fno-strict-aliasing -fno-common -fdiagnostics-color=always -mcpu=cortex-m7 -mthumb -mabi=aapcs -mfpu=fpv5-d16 -mfloat-abi=hard -mfp16-format=ieee -mtp=soft -Wall -Wformat -Wformat-security -Wformat -Wno-format-zero-length -Wdouble-promotion -Wno-pointer-sign -Wpointer-arith -Wexpansion-to-defined -Wno-unused-but-set-variable -Werror=implicit-int -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop -specs=picolibc.specs -D_POSIX_THREADS -std=c99 -mlong-calls -mthumb -nodefaultlibs -imacros$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/zephyr/toolchain/zephyr_stdint.h -imacros$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/generated/zephyr/autoconf.h -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/generated/zephyr -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/generated -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32 -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/lib/libc/common/include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/lib/posix/options/getopt/ -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/lib/cpp/minimal/include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32/common/. -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/drivers -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32/stm32h7x/. -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/subsys/usb/device -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/subsys/shell/modules/kernel_service/thread/../ -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/cmsis/CMSIS/Core/Include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/modules/cmsis/. -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/stm32h7xx/soc -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/common_ll/include -LLEXT_ALL_INCLUDE_CFLAGS = -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/generated/zephyr -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/generated -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32 -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/lib/libc/common/include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/lib/posix/options/getopt/ -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32/common/. -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/drivers -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32/stm32h7x/. -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/subsys/usb/device -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/cmsis/CMSIS/Core/Include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/modules/cmsis/. -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/stm32h7xx/soc -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/common_ll/include +LLEXT_ALL_INCLUDE_CFLAGS = -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/generated/zephyr -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/generated -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32 -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/lib/libc/common/include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/lib/posix/options/getopt/ -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/lib/cpp/minimal/include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32/common/. -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/drivers -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32/stm32h7x/. -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/subsys/usb/device -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/subsys/shell/modules/kernel_service/thread/../ -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/cmsis/CMSIS/Core/Include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/modules/cmsis/. -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/stm32h7xx/soc -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/common_ll/include -LLEXT_INCLUDE_CFLAGS = -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32 -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/lib/libc/common/include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/lib/posix/options/getopt/ -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32/common/. -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/drivers -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32/stm32h7x/. -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/subsys/usb/device -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/cmsis/CMSIS/Core/Include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/modules/cmsis/. -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/stm32h7xx/soc -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/common_ll/include +LLEXT_INCLUDE_CFLAGS = -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32 -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/lib/libc/common/include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/lib/posix/options/getopt/ -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/lib/cpp/minimal/include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32/common/. -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/drivers -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/soc/st/stm32/stm32h7x/. -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/subsys/usb/device -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/subsys/shell/modules/kernel_service/thread/../ -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/cmsis/CMSIS/Core/Include -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/modules/cmsis/. -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/stm32h7xx/soc -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include -I$(LLEXT_EDK_INSTALL_DIR)/include/modules/hal/stm32/stm32cube/common_ll/include LLEXT_GENERATED_INCLUDE_CFLAGS = -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/generated/zephyr -I$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/generated -LLEXT_BASE_CFLAGS = -fno-strict-aliasing -fno-common -fdiagnostics-color=always -mcpu=cortex-m7 -mthumb -mabi=aapcs -mfpu=fpv5-d16 -mfloat-abi=hard -mfp16-format=ieee -mtp=soft -Wall -Wformat -Wformat-security -Wformat -Wno-format-zero-length -Wdouble-promotion -Wno-pointer-sign -Wpointer-arith -Wexpansion-to-defined -Wno-unused-but-set-variable -Werror=implicit-int -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop --specs=picolibc.specs -D_POSIX_THREADS -std=c99 -mlong-calls -mthumb -nodefaultlibs -imacros$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/zephyr/toolchain/zephyr_stdint.h -DLL_EXTENSION_BUILD +LLEXT_BASE_CFLAGS = -DKERNEL -D__ZEPHYR__=1 -D__LINUX_ERRNO_EXTENSIONS__ -DPICOLIBC_DOUBLE_PRINTF_SCANF -D__PROGRAM_START -DSTM32H747xx -DUSE_HAL_DRIVER -DUSE_FULL_LL_DRIVER -DCORE_CM7 -DHSE_VALUE=16000000 -DK_HEAP_MEM_POOL_SIZE=2048 -DLL_EXTENSION_BUILD -fno-strict-aliasing -fno-common -fdiagnostics-color=always -mcpu=cortex-m7 -mthumb -mabi=aapcs -mfpu=fpv5-d16 -mfloat-abi=hard -mfp16-format=ieee -mtp=soft -Wall -Wformat -Wformat-security -Wformat -Wno-format-zero-length -Wdouble-promotion -Wno-pointer-sign -Wpointer-arith -Wexpansion-to-defined -Wno-unused-but-set-variable -Werror=implicit-int -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop -specs=picolibc.specs -D_POSIX_THREADS -std=c99 -mlong-calls -mthumb -nodefaultlibs -imacros$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/zephyr/toolchain/zephyr_stdint.h LLEXT_GENERATED_IMACROS_CFLAGS = -imacros$(LLEXT_EDK_INSTALL_DIR)/include/zephyr/include/generated/zephyr/autoconf.h \ No newline at end of file diff --git a/variants/arduino_giga_r1_m7/llext-edk/cmake.cflags b/variants/arduino_giga_r1_m7/llext-edk/cmake.cflags index 3ebd562f..fed550b1 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/cmake.cflags +++ b/variants/arduino_giga_r1_m7/llext-edk/cmake.cflags @@ -1,11 +1,11 @@ -set(LLEXT_CFLAGS -fno-strict-aliasing;-fno-common;-fdiagnostics-color=always;-mcpu=cortex-m7;-mthumb;-mabi=aapcs;-mfpu=fpv5-d16;-mfloat-abi=hard;-mfp16-format=ieee;-mtp=soft;-Wall;-Wformat;-Wformat-security;-Wformat;-Wno-format-zero-length;-Wdouble-promotion;-Wno-pointer-sign;-Wpointer-arith;-Wexpansion-to-defined;-Wno-unused-but-set-variable;-Werror=implicit-int;-fno-asynchronous-unwind-tables;-ftls-model=local-exec;-fno-reorder-functions;--param=min-pagesize=0;-fno-defer-pop;--specs=picolibc.specs;-D_POSIX_THREADS;-std=c99;-mlong-calls;-mthumb;-nodefaultlibs;-imacros${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/zephyr/toolchain/zephyr_stdint.h;-DLL_EXTENSION_BUILD;-imacros${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/generated/zephyr/autoconf.h;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/generated/zephyr;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/generated;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/lib/libc/common/include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/lib/posix/options/getopt/;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32/common/.;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/drivers;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32/stm32h7x/.;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/subsys/usb/device;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/cmsis/CMSIS/Core/Include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/modules/cmsis/.;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/stm32h7xx/soc;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/common_ll/include) +set(LLEXT_CFLAGS -DKERNEL;-D__ZEPHYR__=1;-D__LINUX_ERRNO_EXTENSIONS__;-DPICOLIBC_DOUBLE_PRINTF_SCANF;-D__PROGRAM_START;-DSTM32H747xx;-DUSE_HAL_DRIVER;-DUSE_FULL_LL_DRIVER;-DCORE_CM7;-DHSE_VALUE=16000000;-DK_HEAP_MEM_POOL_SIZE=2048;-DLL_EXTENSION_BUILD;-fno-strict-aliasing;-fno-common;-fdiagnostics-color=always;-mcpu=cortex-m7;-mthumb;-mabi=aapcs;-mfpu=fpv5-d16;-mfloat-abi=hard;-mfp16-format=ieee;-mtp=soft;-Wall;-Wformat;-Wformat-security;-Wformat;-Wno-format-zero-length;-Wdouble-promotion;-Wno-pointer-sign;-Wpointer-arith;-Wexpansion-to-defined;-Wno-unused-but-set-variable;-Werror=implicit-int;-fno-asynchronous-unwind-tables;-ftls-model=local-exec;-fno-reorder-functions;--param=min-pagesize=0;-fno-defer-pop;-specs=picolibc.specs;-D_POSIX_THREADS;-std=c99;-mlong-calls;-mthumb;-nodefaultlibs;-imacros${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/zephyr/toolchain/zephyr_stdint.h;-imacros${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/generated/zephyr/autoconf.h;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/generated/zephyr;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/generated;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/lib/libc/common/include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/lib/posix/options/getopt/;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/lib/cpp/minimal/include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32/common/.;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/drivers;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32/stm32h7x/.;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/subsys/usb/device;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/subsys/shell/modules/kernel_service/thread/../;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/cmsis/CMSIS/Core/Include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/modules/cmsis/.;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/stm32h7xx/soc;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/common_ll/include) -set(LLEXT_ALL_INCLUDE_CFLAGS -I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/generated/zephyr;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/generated;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/lib/libc/common/include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/lib/posix/options/getopt/;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32/common/.;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/drivers;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32/stm32h7x/.;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/subsys/usb/device;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/cmsis/CMSIS/Core/Include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/modules/cmsis/.;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/stm32h7xx/soc;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/common_ll/include) +set(LLEXT_ALL_INCLUDE_CFLAGS -I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/generated/zephyr;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/generated;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/lib/libc/common/include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/lib/posix/options/getopt/;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/lib/cpp/minimal/include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32/common/.;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/drivers;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32/stm32h7x/.;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/subsys/usb/device;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/subsys/shell/modules/kernel_service/thread/../;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/cmsis/CMSIS/Core/Include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/modules/cmsis/.;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/stm32h7xx/soc;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/common_ll/include) -set(LLEXT_INCLUDE_CFLAGS -I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/lib/libc/common/include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/lib/posix/options/getopt/;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32/common/.;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/drivers;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32/stm32h7x/.;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/subsys/usb/device;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/cmsis/CMSIS/Core/Include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/modules/cmsis/.;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/stm32h7xx/soc;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/common_ll/include) +set(LLEXT_INCLUDE_CFLAGS -I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/lib/libc/common/include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/lib/posix/options/getopt/;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/lib/cpp/minimal/include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32/common/.;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/drivers;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/soc/st/stm32/stm32h7x/.;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/subsys/usb/device;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/subsys/shell/modules/kernel_service/thread/../;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/cmsis/CMSIS/Core/Include;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/modules/cmsis/.;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/stm32h7xx/soc;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include;-I${CMAKE_CURRENT_LIST_DIR}/include/modules/hal/stm32/stm32cube/common_ll/include) set(LLEXT_GENERATED_INCLUDE_CFLAGS -I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/generated/zephyr;-I${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/generated) -set(LLEXT_BASE_CFLAGS -fno-strict-aliasing;-fno-common;-fdiagnostics-color=always;-mcpu=cortex-m7;-mthumb;-mabi=aapcs;-mfpu=fpv5-d16;-mfloat-abi=hard;-mfp16-format=ieee;-mtp=soft;-Wall;-Wformat;-Wformat-security;-Wformat;-Wno-format-zero-length;-Wdouble-promotion;-Wno-pointer-sign;-Wpointer-arith;-Wexpansion-to-defined;-Wno-unused-but-set-variable;-Werror=implicit-int;-fno-asynchronous-unwind-tables;-ftls-model=local-exec;-fno-reorder-functions;--param=min-pagesize=0;-fno-defer-pop;--specs=picolibc.specs;-D_POSIX_THREADS;-std=c99;-mlong-calls;-mthumb;-nodefaultlibs;-imacros${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/zephyr/toolchain/zephyr_stdint.h;-DLL_EXTENSION_BUILD) +set(LLEXT_BASE_CFLAGS -DKERNEL;-D__ZEPHYR__=1;-D__LINUX_ERRNO_EXTENSIONS__;-DPICOLIBC_DOUBLE_PRINTF_SCANF;-D__PROGRAM_START;-DSTM32H747xx;-DUSE_HAL_DRIVER;-DUSE_FULL_LL_DRIVER;-DCORE_CM7;-DHSE_VALUE=16000000;-DK_HEAP_MEM_POOL_SIZE=2048;-DLL_EXTENSION_BUILD;-fno-strict-aliasing;-fno-common;-fdiagnostics-color=always;-mcpu=cortex-m7;-mthumb;-mabi=aapcs;-mfpu=fpv5-d16;-mfloat-abi=hard;-mfp16-format=ieee;-mtp=soft;-Wall;-Wformat;-Wformat-security;-Wformat;-Wno-format-zero-length;-Wdouble-promotion;-Wno-pointer-sign;-Wpointer-arith;-Wexpansion-to-defined;-Wno-unused-but-set-variable;-Werror=implicit-int;-fno-asynchronous-unwind-tables;-ftls-model=local-exec;-fno-reorder-functions;--param=min-pagesize=0;-fno-defer-pop;-specs=picolibc.specs;-D_POSIX_THREADS;-std=c99;-mlong-calls;-mthumb;-nodefaultlibs;-imacros${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/zephyr/toolchain/zephyr_stdint.h) set(LLEXT_GENERATED_IMACROS_CFLAGS -imacros${CMAKE_CURRENT_LIST_DIR}/include/zephyr/include/generated/zephyr/autoconf.h) \ No newline at end of file diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_adc.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_adc.h index 68f6321d..0a7bf0d3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_adc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_adc.h @@ -38,8 +38,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_bus.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_bus.h index 6b6d7019..ab48223e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_bus.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_bus.h @@ -38,8 +38,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_comp.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_comp.h index 8cba2e90..cbb4883c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_comp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_comp.h @@ -24,6 +24,8 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32L5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_cortex.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_cortex.h index 62d750d3..e0db9300 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_cortex.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_cortex.h @@ -38,8 +38,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_crc.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_crc.h index aed5fa86..c97bf984 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_crc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_crc.h @@ -36,8 +36,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32L5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_crs.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_crs.h index 6949fada..c3632cad 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_crs.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_crs.h @@ -4,7 +4,9 @@ * SPDX-License-Identifier: Apache-2.0 */ -#if defined(CONFIG_SOC_SERIES_STM32F0X) +#if defined(CONFIG_SOC_SERIES_STM32C0X) +#include +#elif defined(CONFIG_SOC_SERIES_STM32F0X) #include #elif defined(CONFIG_SOC_SERIES_STM32G0X) #include @@ -22,6 +24,8 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32L5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_dac.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_dac.h index 7dc42e63..5075cda4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_dac.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_dac.h @@ -32,6 +32,8 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32L5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include #elif defined(CONFIG_SOC_SERIES_STM32WLX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_dma.h index 7aacaeb0..0611d758 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_dma.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_dma.h @@ -38,8 +38,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_dmamux.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_dmamux.h index 5d351323..941fe309 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_dmamux.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_dmamux.h @@ -18,6 +18,10 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBX) #include #elif defined(CONFIG_SOC_SERIES_STM32WLX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_exti.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_exti.h index 41ead159..8efcd25c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_exti.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_exti.h @@ -38,6 +38,8 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_gpio.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_gpio.h index 026ee612..d1ad5e4b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_gpio.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_gpio.h @@ -38,8 +38,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_i2c.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_i2c.h index e43f2edc..3c12db06 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_i2c.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_i2c.h @@ -38,8 +38,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_iwdg.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_iwdg.h index 8ef649f1..4ab93b5b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_iwdg.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_iwdg.h @@ -36,8 +36,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32L5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_lptim.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_lptim.h index 28e7a22c..b5e2e3d4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_lptim.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_lptim.h @@ -26,6 +26,8 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_lpuart.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_lpuart.h index 1a710f98..96f99760 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_lpuart.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_lpuart.h @@ -20,8 +20,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32L5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_opamp.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_opamp.h index c59a3571..f37c13b5 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_opamp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_opamp.h @@ -18,6 +18,8 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32L5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_pka.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_pka.h index ba7698be..90740fc0 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_pka.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_pka.h @@ -14,6 +14,8 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_pwr.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_pwr.h index d030da3a..fa8f7793 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_pwr.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_pwr.h @@ -38,8 +38,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_radio.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_radio.h new file mode 100644 index 00000000..01625310 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_radio.h @@ -0,0 +1,9 @@ +/* + * NOTE: Autogenerated file using genllheaders.py + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#if defined(CONFIG_SOC_SERIES_STM32WB0X) +#include +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_rcc.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_rcc.h index d2ea7d71..27e6308e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_rcc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_rcc.h @@ -38,8 +38,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_rng.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_rng.h index 88664e07..d1787ab0 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_rng.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_rng.h @@ -26,8 +26,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32L5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_rtc.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_rtc.h index edfb7abc..c633c129 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_rtc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_rtc.h @@ -38,8 +38,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_spi.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_spi.h index 7183e183..f678d7ec 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_spi.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_spi.h @@ -38,8 +38,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_system.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_system.h index f2175797..122ccd87 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_system.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_system.h @@ -38,8 +38,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_tim.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_tim.h index 3e09aa48..a2698819 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_tim.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_tim.h @@ -38,8 +38,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_usart.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_usart.h index eafc819c..40f41901 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_usart.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_usart.h @@ -38,8 +38,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_utils.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_utils.h index ba5e9834..699d7979 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_utils.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_utils.h @@ -38,8 +38,12 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_wwdg.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_wwdg.h index b1bad707..091793da 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_wwdg.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/common_ll/include/stm32_ll_wwdg.h @@ -38,6 +38,8 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32MP1X) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/Legacy/stm32_hal_legacy.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/Legacy/stm32_hal_legacy.h index 2013593c..07a7c67a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/Legacy/stm32_hal_legacy.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/Legacy/stm32_hal_legacy.h @@ -472,7 +472,9 @@ extern "C" { #define TYPEPROGRAMDATA_FASTBYTE FLASH_TYPEPROGRAMDATA_FASTBYTE #define TYPEPROGRAMDATA_FASTHALFWORD FLASH_TYPEPROGRAMDATA_FASTHALFWORD #define TYPEPROGRAMDATA_FASTWORD FLASH_TYPEPROGRAMDATA_FASTWORD +#if !defined(STM32F2) && !defined(STM32F4) && !defined(STM32F7) && !defined(STM32H7) && !defined(STM32H5) /* #define PAGESIZE FLASH_PAGE_SIZE */ +#endif /* STM32F2 && STM32F4 && STM32F7 && STM32H7 && STM32H5 */ #define TYPEPROGRAM_FASTBYTE FLASH_TYPEPROGRAM_BYTE #define TYPEPROGRAM_FASTHALFWORD FLASH_TYPEPROGRAM_HALFWORD #define TYPEPROGRAM_FASTWORD FLASH_TYPEPROGRAM_WORD @@ -601,6 +603,15 @@ extern "C" { #define HAL_SYSCFG_DisableIOAnalogSwitchVDD HAL_SYSCFG_DisableIOSwitchVDD #endif /* STM32G4 */ +#if defined(STM32U5) + +#define HAL_SYSCFG_EnableIOAnalogSwitchBooster HAL_SYSCFG_EnableIOAnalogBooster +#define HAL_SYSCFG_DisableIOAnalogSwitchBooster HAL_SYSCFG_DisableIOAnalogBooster +#define HAL_SYSCFG_EnableIOAnalogSwitchVoltageSelection HAL_SYSCFG_EnableIOAnalogVoltageSelection +#define HAL_SYSCFG_DisableIOAnalogSwitchVoltageSelection HAL_SYSCFG_DisableIOAnalogVoltageSelection + +#endif /* STM32U5 */ + #if defined(STM32H5) #define SYSCFG_IT_FPU_IOC SBS_IT_FPU_IOC #define SYSCFG_IT_FPU_DZC SBS_IT_FPU_DZC @@ -806,6 +817,21 @@ extern "C" { #define GPIO_AF0_S2DSTOP GPIO_AF0_SRDSTOP #define GPIO_AF11_LPGPIO GPIO_AF11_LPGPIO1 #endif /* STM32U5 */ + +#if defined(STM32WBA) +#define GPIO_AF11_RF_ANTSW0 GPIO_AF11_RF +#define GPIO_AF11_RF_ANTSW1 GPIO_AF11_RF +#define GPIO_AF11_RF_ANTSW2 GPIO_AF11_RF +#define GPIO_AF11_RF_IO1 GPIO_AF11_RF +#define GPIO_AF11_RF_IO2 GPIO_AF11_RF +#define GPIO_AF11_RF_IO3 GPIO_AF11_RF +#define GPIO_AF11_RF_IO4 GPIO_AF11_RF +#define GPIO_AF11_RF_IO5 GPIO_AF11_RF +#define GPIO_AF11_RF_IO6 GPIO_AF11_RF +#define GPIO_AF11_RF_IO7 GPIO_AF11_RF +#define GPIO_AF11_RF_IO8 GPIO_AF11_RF +#define GPIO_AF11_RF_IO9 GPIO_AF11_RF +#endif /* STM32WBA */ /** * @} */ @@ -860,6 +886,10 @@ extern "C" { #define __HAL_HRTIM_SetCompare __HAL_HRTIM_SETCOMPARE #define __HAL_HRTIM_GetCompare __HAL_HRTIM_GETCOMPARE +#if defined(STM32F3) || defined(STM32G4) || defined(STM32H7) +#define HRTIMInterruptResquests HRTIMInterruptRequests +#endif /* STM32F3 || STM32G4 || STM32H7 */ + #if defined(STM32G4) #define HAL_HRTIM_ExternalEventCounterConfig HAL_HRTIM_ExtEventCounterConfig #define HAL_HRTIM_ExternalEventCounterEnable HAL_HRTIM_ExtEventCounterEnable @@ -997,8 +1027,8 @@ extern "C" { #define HRTIM_CALIBRATIONRATE_910 (HRTIM_DLLCR_CALRTE_0) #define HRTIM_CALIBRATIONRATE_114 (HRTIM_DLLCR_CALRTE_1) #define HRTIM_CALIBRATIONRATE_14 (HRTIM_DLLCR_CALRTE_1 | HRTIM_DLLCR_CALRTE_0) - #endif /* STM32F3 */ + /** * @} */ @@ -1249,10 +1279,10 @@ extern "C" { #define RTC_TAMPERPIN_PA0 RTC_TAMPERPIN_POS1 #define RTC_TAMPERPIN_PI8 RTC_TAMPERPIN_POS1 -#if defined(STM32H5) || defined(STM32H7RS) +#if defined(STM32H5) || defined(STM32H7RS) || defined(STM32N6) #define TAMP_SECRETDEVICE_ERASE_NONE TAMP_DEVICESECRETS_ERASE_NONE #define TAMP_SECRETDEVICE_ERASE_BKP_SRAM TAMP_DEVICESECRETS_ERASE_BKPSRAM -#endif /* STM32H5 || STM32H7RS */ +#endif /* STM32H5 || STM32H7RS || STM32N6 */ #if defined(STM32WBA) #define TAMP_SECRETDEVICE_ERASE_NONE TAMP_DEVICESECRETS_ERASE_NONE @@ -1264,10 +1294,10 @@ extern "C" { #define TAMP_SECRETDEVICE_ERASE_ALL TAMP_DEVICESECRETS_ERASE_ALL #endif /* STM32WBA */ -#if defined(STM32H5) || defined(STM32WBA) || defined(STM32H7RS) +#if defined(STM32H5) || defined(STM32WBA) || defined(STM32H7RS) || defined(STM32N6) #define TAMP_SECRETDEVICE_ERASE_DISABLE TAMP_DEVICESECRETS_ERASE_NONE #define TAMP_SECRETDEVICE_ERASE_ENABLE TAMP_SECRETDEVICE_ERASE_ALL -#endif /* STM32H5 || STM32WBA || STM32H7RS */ +#endif /* STM32H5 || STM32WBA || STM32H7RS || STM32N6 */ #if defined(STM32F7) #define RTC_TAMPCR_TAMPXE RTC_TAMPER_ENABLE_BITS_MASK @@ -1817,7 +1847,7 @@ extern "C" { #define HAL_FMPI2CEx_AnalogFilter_Config HAL_FMPI2CEx_ConfigAnalogFilter #define HAL_FMPI2CEx_DigitalFilter_Config HAL_FMPI2CEx_ConfigDigitalFilter -#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) ((cmd == ENABLE)? \ +#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) (((cmd) == ENABLE)? \ HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): \ HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus)) @@ -1999,12 +2029,12 @@ extern "C" { /** @defgroup HAL_RTC_Aliased_Functions HAL RTC Aliased Functions maintained for legacy purpose * @{ */ -#if defined(STM32H5) || defined(STM32WBA) || defined(STM32H7RS) +#if defined(STM32H5) || defined(STM32WBA) || defined(STM32H7RS) || defined(STM32N6) #define HAL_RTCEx_SetBoothardwareKey HAL_RTCEx_LockBootHardwareKey #define HAL_RTCEx_BKUPBlock_Enable HAL_RTCEx_BKUPBlock #define HAL_RTCEx_BKUPBlock_Disable HAL_RTCEx_BKUPUnblock #define HAL_RTCEx_Erase_SecretDev_Conf HAL_RTCEx_ConfigEraseDeviceSecrets -#endif /* STM32H5 || STM32WBA || STM32H7RS */ +#endif /* STM32H5 || STM32WBA || STM32H7RS || STM32N6 */ /** * @} @@ -2731,6 +2761,12 @@ extern "C" { #define __APB1_RELEASE_RESET __HAL_RCC_APB1_RELEASE_RESET #define __APB2_FORCE_RESET __HAL_RCC_APB2_FORCE_RESET #define __APB2_RELEASE_RESET __HAL_RCC_APB2_RELEASE_RESET +#if defined(STM32C0) +#define __HAL_RCC_APB1_FORCE_RESET __HAL_RCC_APB1_GRP1_FORCE_RESET +#define __HAL_RCC_APB1_RELEASE_RESET __HAL_RCC_APB1_GRP1_RELEASE_RESET +#define __HAL_RCC_APB2_FORCE_RESET __HAL_RCC_APB1_GRP2_FORCE_RESET +#define __HAL_RCC_APB2_RELEASE_RESET __HAL_RCC_APB1_GRP2_RELEASE_RESET +#endif /* STM32C0 */ #define __BKP_CLK_DISABLE __HAL_RCC_BKP_CLK_DISABLE #define __BKP_CLK_ENABLE __HAL_RCC_BKP_CLK_ENABLE #define __BKP_FORCE_RESET __HAL_RCC_BKP_FORCE_RESET @@ -3659,7 +3695,7 @@ extern "C" { #endif #if defined(STM32L4) || defined(STM32WB) || defined(STM32G0) || defined(STM32G4) || defined(STM32L5) || \ - defined(STM32WL) || defined(STM32C0) || defined(STM32H7RS) || defined(STM32U0) + defined(STM32WL) || defined(STM32C0) || defined(STM32N6) || defined(STM32H7RS) || defined(STM32U0) #define RCC_RTCCLKSOURCE_NO_CLK RCC_RTCCLKSOURCE_NONE #else #define RCC_RTCCLKSOURCE_NONE RCC_RTCCLKSOURCE_NO_CLK @@ -3910,7 +3946,8 @@ extern "C" { */ #if defined (STM32G0) || defined (STM32L5) || defined (STM32L412xx) || defined (STM32L422xx) || \ defined (STM32L4P5xx)|| defined (STM32L4Q5xx) || defined (STM32G4) || defined (STM32WL) || defined (STM32U5) || \ - defined (STM32WBA) || defined (STM32H5) || defined (STM32C0) || defined (STM32H7RS) || defined (STM32U0) + defined (STM32WBA) || defined (STM32H5) || defined (STM32C0) || defined (STM32N6) || \ + defined (STM32H7RS) || defined (STM32U0) || defined (STM32U3) #else #define __HAL_RTC_CLEAR_FLAG __HAL_RTC_EXTI_CLEAR_FLAG #endif @@ -4204,6 +4241,33 @@ extern "C" { #define HAL_PCD_SetTxFiFo HAL_PCDEx_SetTxFiFo #define HAL_PCD_SetRxFiFo HAL_PCDEx_SetRxFiFo +#if defined(STM32U5) +#define USB_OTG_GOTGCTL_BSESVLD USB_OTG_GOTGCTL_BSVLD +#define USB_OTG_GAHBCFG_GINT USB_OTG_GAHBCFG_GINTMSK +#define USB_OTG_GUSBCFG_PHYLPCS USB_OTG_GUSBCFG_PHYLPC +#define USB_OTG_GRSTCTL_HSRST USB_OTG_GRSTCTL_PSRST +#define USB_OTG_GINTSTS_BOUTNAKEFF USB_OTG_GINTSTS_GONAKEFF +#define USB_OTG_GINTSTS_WKUINT USB_OTG_GINTSTS_WKUPINT +#define USB_OTG_GINTMSK_PXFRM_IISOOXFRM USB_OTG_GINTMSK_IPXFRM_IISOOXFRM +#define USB_OTG_GRXSTSP_EPNUM USB_OTG_GRXSTSP_EPNUM_CHNUM +#define USB_OTG_GLPMCFG_L1ResumeOK USB_OTG_GLPMCFG_L1RSMOK +#define USB_OTG_HPTXFSIZ_PTXFD USB_OTG_HPTXFSIZ_PTXFSIZ +#define USB_OTG_HCCHAR_MC USB_OTG_HCCHAR_MCNT +#define USB_OTG_HCCHAR_MC_0 USB_OTG_HCCHAR_MCNT_0 +#define USB_OTG_HCCHAR_MC_1 USB_OTG_HCCHAR_MCNT_1 +#define USB_OTG_HCINTMSK_AHBERR USB_OTG_HCINTMSK_AHBERRM +#define USB_OTG_HCTSIZ_DOPING USB_OTG_HCTSIZ_DOPNG +#define USB_OTG_DOEPMSK_OPEM USB_OTG_DOEPMSK_OUTPKTERRM +#define USB_OTG_DIEPCTL_SODDFRM USB_OTG_DIEPCTL_SD1PID_SODDFRM +#define USB_OTG_DIEPTSIZ_MULCNT USB_OTG_DIEPTSIZ_MCNT +#define USB_OTG_DOEPCTL_SODDFRM USB_OTG_DOEPCTL_SD1PID_SODDFRM +#define USB_OTG_DOEPCTL_DPID USB_OTG_DOEPCTL_DPID_EONUM +#define USB_OTG_DOEPTSIZ_STUPCNT USB_OTG_DOEPTSIZ_RXDPID +#define USB_OTG_DOEPTSIZ_STUPCNT_0 USB_OTG_DOEPTSIZ_RXDPID_0 +#define USB_OTG_DOEPTSIZ_STUPCNT_1 USB_OTG_DOEPTSIZ_RXDPID_1 +#define USB_OTG_PCGCCTL_STOPCLK USB_OTG_PCGCCTL_STPPCLK +#define USB_OTG_PCGCCTL_GATECLK USB_OTG_PCGCCTL_GATEHCLK +#endif /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal.h index c3760b17..222a4e9d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal.h @@ -59,8 +59,14 @@ typedef enum * @{ */ #define REV_ID_Y ((uint32_t)0x1003) /*!< STM32H7 rev.Y */ +#define REV_ID_Z ((uint32_t)0x1001) /*!< STM32H7 rev.Z */ +#define REV_ID_A ((uint32_t)0x1000) /*!< STM32H7 rev.A */ #define REV_ID_B ((uint32_t)0x2000) /*!< STM32H7 rev.B */ +#if (STM32H7_DEV_ID == 0x450UL) #define REV_ID_X ((uint32_t)0x2001) /*!< STM32H7 rev.X */ +#else +#define REV_ID_X ((uint32_t)0x1007) /*!< STM32H7 rev.X */ +#endif /* STM32H7_DEV_ID */ #define REV_ID_V ((uint32_t)0x2003) /*!< STM32H7 rev.V */ /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_adc.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_adc.h index 861324a3..7cde9f1e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_adc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_adc.h @@ -1962,7 +1962,7 @@ HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef *hadc, uint32_t *pDa HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef *hadc); /* ADC retrieve conversion value intended to be used with polling or interruption */ -uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef *hadc); +uint32_t HAL_ADC_GetValue(const ADC_HandleTypeDef *hadc); /* ADC IRQHandler and Callbacks used in non-blocking modes (Interruption and DMA) */ void HAL_ADC_IRQHandler(ADC_HandleTypeDef *hadc); @@ -1990,8 +1990,8 @@ HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef *hadc, ADC_Ana /** @addtogroup ADC_Exported_Functions_Group4 * @{ */ -uint32_t HAL_ADC_GetState(ADC_HandleTypeDef *hadc); -uint32_t HAL_ADC_GetError(ADC_HandleTypeDef *hadc); +uint32_t HAL_ADC_GetState(const ADC_HandleTypeDef *hadc); +uint32_t HAL_ADC_GetError(const ADC_HandleTypeDef *hadc); /** * @} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_adc_ex.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_adc_ex.h index 2da227fa..d2900314 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_adc_ex.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_adc_ex.h @@ -1011,6 +1011,80 @@ typedef struct ((__CHANNEL__) == ADC_CHANNEL_14) || \ ((__CHANNEL__) == ADC_CHANNEL_15) ) +/** + * @brief Helper macro to determine the selected channel corresponding + * negative input for ADC1. + * @param __CHANNEL__: programmed ADC channel. + * @retval return the negative input channels corresponding to the selected channel. + */ +#define ADC_CHANNEL_DIFF_NEG_INPUT_ADC1(__CHANNEL__) (((__CHANNEL__) == ADC_CHANNEL_1) ? ADC_CHANNEL_0 : \ + ((__CHANNEL__) == ADC_CHANNEL_2) ? ADC_CHANNEL_6 : \ + ((__CHANNEL__) == ADC_CHANNEL_3) ? ADC_CHANNEL_7 : \ + ((__CHANNEL__) == ADC_CHANNEL_4) ? ADC_CHANNEL_8 : \ + ((__CHANNEL__) == ADC_CHANNEL_5) ? ADC_CHANNEL_9 : \ + ((__CHANNEL__) == ADC_CHANNEL_10) ? ADC_CHANNEL_11 : \ + ((__CHANNEL__) == ADC_CHANNEL_11) ? ADC_CHANNEL_12 : \ + ((__CHANNEL__) == ADC_CHANNEL_12) ? ADC_CHANNEL_13 : \ + ((__CHANNEL__) == ADC_CHANNEL_16) ? ADC_CHANNEL_17 : \ + ((__CHANNEL__) == ADC_CHANNEL_18) ? ADC_CHANNEL_19 : 0UL) + +/** + * @brief Helper macro to determine the selected channel corresponding + * negative input for ADC2. + * @param __CHANNEL__: programmed ADC channel. + * @retval return the negative input channels corresponding to the selected channel. + */ +#define ADC_CHANNEL_DIFF_NEG_INPUT_ADC2(__CHANNEL__) (((__CHANNEL__) == ADC_CHANNEL_1) ? ADC_CHANNEL_0 : \ + ((__CHANNEL__) == ADC_CHANNEL_2) ? ADC_CHANNEL_6 : \ + ((__CHANNEL__) == ADC_CHANNEL_3) ? ADC_CHANNEL_7 : \ + ((__CHANNEL__) == ADC_CHANNEL_4) ? ADC_CHANNEL_8 : \ + ((__CHANNEL__) == ADC_CHANNEL_5) ? ADC_CHANNEL_9 : \ + ((__CHANNEL__) == ADC_CHANNEL_10) ? ADC_CHANNEL_11 : \ + ((__CHANNEL__) == ADC_CHANNEL_11) ? ADC_CHANNEL_12 : \ + ((__CHANNEL__) == ADC_CHANNEL_12) ? ADC_CHANNEL_13 : \ + ((__CHANNEL__) == ADC_CHANNEL_18) ? ADC_CHANNEL_19 : 0UL) + +#if defined(ADC_VER_V5_V90) +/** + * @brief Helper macro to determine the selected channel corresponding + * negative input for ADC3. + * @param __CHANNEL__: programmed ADC channel. + * @retval return the negative input channels corresponding to the selected channel. + */ +#define ADC_CHANNEL_DIFF_NEG_INPUT_ADC3(__CHANNEL__) (((__CHANNEL__) == ADC_CHANNEL_1) ? ADC_CHANNEL_0 : \ + ((__CHANNEL__) == ADC_CHANNEL_2) ? ADC_CHANNEL_6 : \ + ((__CHANNEL__) == ADC_CHANNEL_3) ? ADC_CHANNEL_7 : \ + ((__CHANNEL__) == ADC_CHANNEL_4) ? ADC_CHANNEL_8 : \ + ((__CHANNEL__) == ADC_CHANNEL_5) ? ADC_CHANNEL_9 : \ + ((__CHANNEL__) == ADC_CHANNEL_10) ? ADC_CHANNEL_11 : \ + ((__CHANNEL__) == ADC_CHANNEL_11) ? ADC_CHANNEL_12 : \ + ((__CHANNEL__) == ADC_CHANNEL_13) ? ADC_CHANNEL_14 : \ + ((__CHANNEL__) == ADC_CHANNEL_14) ? ADC_CHANNEL_15 : 0UL) +#endif /* ADC_VER_V5_V90 */ + +#if defined(ADC_VER_V5_V90) +/** + * @brief Helper macro to determine the selected channel corresponding + * negative input on the ADC instance selected. + * @param __HANDLE__ ADC handle. + * @param __CHANNEL__ This parameter can be one of the following values: + * @retval return the negative input channels corresponding to the selected channel. + */ +#define ADC_CHANNEL_DIFF_NEG_INPUT(__HANDLE__, __CHANNEL__) ((((__HANDLE__)->Instance) == ADC1) ? ADC_CHANNEL_DIFF_NEG_INPUT_ADC1(__CHANNEL__) : \ + (((__HANDLE__)->Instance) == ADC2) ? ADC_CHANNEL_DIFF_NEG_INPUT_ADC2(__CHANNEL__) : \ + (((__HANDLE__)->Instance) == ADC3) ? ADC_CHANNEL_DIFF_NEG_INPUT_ADC3(__CHANNEL__) : 0UL) +#else +/** + * @brief Helper macro to determine the selected channel corresponding + * negative input on the ADC instance selected. + * @param __HANDLE__ ADC handle. + * @param __CHANNEL__ This parameter can be one of the following values: + * @retval return the negative input channels corresponding to the selected channel. + */ +#define ADC_CHANNEL_DIFF_NEG_INPUT(__HANDLE__, __CHANNEL__) ((((__HANDLE__)->Instance) == ADC1) ? ADC_CHANNEL_DIFF_NEG_INPUT_ADC1(__CHANNEL__) : \ + (((__HANDLE__)->Instance) == ADC2) ? ADC_CHANNEL_DIFF_NEG_INPUT_ADC2(__CHANNEL__) : 0UL) +#endif /* ADC_VER_V5_V90 */ + /** * @brief Verify the ADC single-ended input or differential mode setting. * @param __SING_DIFF__ programmed channel setting. @@ -1311,7 +1385,7 @@ typedef struct /* ADC calibration */ HAL_StatusTypeDef HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef *hadc, uint32_t CalibrationMode, uint32_t SingleDiff); -uint32_t HAL_ADCEx_Calibration_GetValue(ADC_HandleTypeDef *hadc, uint32_t SingleDiff); +uint32_t HAL_ADCEx_Calibration_GetValue(const ADC_HandleTypeDef *hadc, uint32_t SingleDiff); HAL_StatusTypeDef HAL_ADCEx_LinearCalibration_GetValue(ADC_HandleTypeDef *hadc, uint32_t *LinearCalib_Buffer); HAL_StatusTypeDef HAL_ADCEx_Calibration_SetValue(ADC_HandleTypeDef *hadc, uint32_t SingleDiff, uint32_t CalibrationFactor); HAL_StatusTypeDef HAL_ADCEx_LinearCalibration_SetValue(ADC_HandleTypeDef *hadc, uint32_t *LinearCalib_Buffer); @@ -1328,12 +1402,12 @@ HAL_StatusTypeDef HAL_ADCEx_InjectedStart_IT(ADC_HandleTypeDef *hadc); HAL_StatusTypeDef HAL_ADCEx_InjectedStop_IT(ADC_HandleTypeDef *hadc); /* ADC multimode */ -HAL_StatusTypeDef HAL_ADCEx_MultiModeStart_DMA(ADC_HandleTypeDef *hadc, uint32_t *pData, uint32_t Length); +HAL_StatusTypeDef HAL_ADCEx_MultiModeStart_DMA(ADC_HandleTypeDef *hadc, const uint32_t *pData, uint32_t Length); HAL_StatusTypeDef HAL_ADCEx_MultiModeStop_DMA(ADC_HandleTypeDef *hadc); -uint32_t HAL_ADCEx_MultiModeGetValue(ADC_HandleTypeDef *hadc); +uint32_t HAL_ADCEx_MultiModeGetValue(const ADC_HandleTypeDef *hadc); /* ADC retrieve conversion value intended to be used with polling or interruption */ -uint32_t HAL_ADCEx_InjectedGetValue(ADC_HandleTypeDef *hadc, uint32_t InjectedRank); +uint32_t HAL_ADCEx_InjectedGetValue(const ADC_HandleTypeDef *hadc, uint32_t InjectedRank); /* ADC IRQHandler and Callbacks used in non-blocking modes (Interruption) */ void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_comp.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_comp.h index 9d16f6aa..83265b01 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_comp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_comp.h @@ -915,7 +915,7 @@ void HAL_COMP_IRQHandler(COMP_HandleTypeDef *hcomp); * @{ */ HAL_StatusTypeDef HAL_COMP_Lock(COMP_HandleTypeDef *hcomp); -uint32_t HAL_COMP_GetOutputLevel(COMP_HandleTypeDef *hcomp); +uint32_t HAL_COMP_GetOutputLevel(const COMP_HandleTypeDef *hcomp); /* Callback in Interrupt mode */ void HAL_COMP_TriggerCallback(COMP_HandleTypeDef *hcomp); /** @@ -926,8 +926,8 @@ void HAL_COMP_TriggerCallback(COMP_HandleTypeDef *hcomp); /** @addtogroup COMP_Exported_Functions_Group4 * @{ */ -HAL_COMP_StateTypeDef HAL_COMP_GetState(COMP_HandleTypeDef *hcomp); -uint32_t HAL_COMP_GetError(COMP_HandleTypeDef *hcomp); +HAL_COMP_StateTypeDef HAL_COMP_GetState(const COMP_HandleTypeDef *hcomp); +uint32_t HAL_COMP_GetError(const COMP_HandleTypeDef *hcomp); /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_conf.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_conf.h index 36ed9cac..54fcc2d9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_conf.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_conf.h @@ -84,6 +84,7 @@ #define HAL_RTC_MODULE_ENABLED #define HAL_SAI_MODULE_ENABLED #define HAL_SD_MODULE_ENABLED +#define HAL_SDIO_MODULE_ENABLED #define HAL_SDRAM_MODULE_ENABLED #define HAL_SMARTCARD_MODULE_ENABLED #define HAL_SMBUS_MODULE_ENABLED @@ -168,6 +169,8 @@ #define USE_SD_TRANSCEIVER 0U /*!< use uSD Transceiver */ #define USE_SPI_CRC 1U /*!< use CRC in SPI */ #define USE_FLASH_ECC 0U /*!< use ECC error management in FLASH */ +#define USE_SDIO_TRANSCEIVER 0U /*!< use SDIO Transceiver */ +#define SDIO_MAX_IO_NUMBER 7U /*!< SDIO device support maximum IO number */ #define USE_HAL_ADC_REGISTER_CALLBACKS 0U /* ADC register callback disabled */ #define USE_HAL_CEC_REGISTER_CALLBACKS 0U /* CEC register callback disabled */ @@ -208,6 +211,7 @@ #define USE_HAL_RTC_REGISTER_CALLBACKS 0U /* RTC register callback disabled */ #define USE_HAL_SAI_REGISTER_CALLBACKS 0U /* SAI register callback disabled */ #define USE_HAL_SD_REGISTER_CALLBACKS 0U /* SD register callback disabled */ +#define USE_HAL_SDIO_REGISTER_CALLBACKS 0U /* SDIO register callback disabled */ #define USE_HAL_SMARTCARD_REGISTER_CALLBACKS 0U /* SMARTCARD register callback disabled */ #define USE_HAL_SPDIFRX_REGISTER_CALLBACKS 0U /* SPDIFRX register callback disabled */ #define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U /* SMBUS register callback disabled */ @@ -438,6 +442,10 @@ #include "stm32h7xx_hal_sd.h" #endif /* HAL_SD_MODULE_ENABLED */ +#ifdef HAL_SDIO_MODULE_ENABLED +#include "stm32h7xx_hal_sdio.h" +#endif /* HAL_SDIO_MODULE_ENABLED */ + #ifdef HAL_SDRAM_MODULE_ENABLED #include "stm32h7xx_hal_sdram.h" #endif /* HAL_SDRAM_MODULE_ENABLED */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cordic.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cordic.h index 0aa08c43..28949bed 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cordic.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cordic.h @@ -149,7 +149,6 @@ typedef void (*pCORDIC_CallbackTypeDef)(CORDIC_HandleTypeDef *hcordic); /*!< p * @} */ - /* Exported constants --------------------------------------------------------*/ /** @defgroup CORDIC_Exported_Constants CORDIC Exported Constants * @{ @@ -166,6 +165,7 @@ typedef void (*pCORDIC_CallbackTypeDef)(CORDIC_HandleTypeDef *hcordic); /*!< p #if USE_HAL_CORDIC_REGISTER_CALLBACKS == 1 #define HAL_CORDIC_ERROR_INVALID_CALLBACK ((uint32_t)0x00000010U) /*!< Invalid Callback error */ #endif /* USE_HAL_CORDIC_REGISTER_CALLBACKS */ + /** * @} */ @@ -183,6 +183,7 @@ typedef void (*pCORDIC_CallbackTypeDef)(CORDIC_HandleTypeDef *hcordic); /*!< p #define CORDIC_FUNCTION_HARCTANGENT ((uint32_t)(CORDIC_CSR_FUNC_2 | CORDIC_CSR_FUNC_1 | CORDIC_CSR_FUNC_0))/*!< Hyperbolic Arctangent */ #define CORDIC_FUNCTION_NATURALLOG ((uint32_t)(CORDIC_CSR_FUNC_3)) /*!< Natural Logarithm */ #define CORDIC_FUNCTION_SQUAREROOT ((uint32_t)(CORDIC_CSR_FUNC_3 | CORDIC_CSR_FUNC_0)) /*!< Square Root */ + /** * @} */ @@ -212,6 +213,7 @@ typedef void (*pCORDIC_CallbackTypeDef)(CORDIC_HandleTypeDef *hcordic); /*!< p #define CORDIC_PRECISION_15CYCLES ((uint32_t)(CORDIC_CSR_PRECISION_3\ | CORDIC_CSR_PRECISION_2 | CORDIC_CSR_PRECISION_1\ |CORDIC_CSR_PRECISION_0)) + /** * @} */ @@ -229,6 +231,7 @@ typedef void (*pCORDIC_CallbackTypeDef)(CORDIC_HandleTypeDef *hcordic); /*!< p #define CORDIC_SCALE_5 ((uint32_t)(CORDIC_CSR_SCALE_2 | CORDIC_CSR_SCALE_0)) #define CORDIC_SCALE_6 ((uint32_t)(CORDIC_CSR_SCALE_2 | CORDIC_CSR_SCALE_1)) #define CORDIC_SCALE_7 ((uint32_t)(CORDIC_CSR_SCALE_2 | CORDIC_CSR_SCALE_1 | CORDIC_CSR_SCALE_0)) + /** * @} */ @@ -237,6 +240,7 @@ typedef void (*pCORDIC_CallbackTypeDef)(CORDIC_HandleTypeDef *hcordic); /*!< p * @{ */ #define CORDIC_IT_IEN CORDIC_CSR_IEN /*!< Result ready interrupt enable */ + /** * @} */ @@ -245,6 +249,7 @@ typedef void (*pCORDIC_CallbackTypeDef)(CORDIC_HandleTypeDef *hcordic); /*!< p * @{ */ #define CORDIC_DMA_REN CORDIC_CSR_DMAREN /*!< DMA Read requests enable */ + /** * @} */ @@ -253,6 +258,7 @@ typedef void (*pCORDIC_CallbackTypeDef)(CORDIC_HandleTypeDef *hcordic); /*!< p * @{ */ #define CORDIC_DMA_WEN CORDIC_CSR_DMAWEN /*!< DMA Write channel enable */ + /** * @} */ @@ -288,6 +294,7 @@ typedef void (*pCORDIC_CallbackTypeDef)(CORDIC_HandleTypeDef *hcordic); /*!< p */ #define CORDIC_INSIZE_32BITS (0x00000000U) /*!< 32 bits input data size (Q1.31 format) */ #define CORDIC_INSIZE_16BITS CORDIC_CSR_ARGSIZE /*!< 16 bits input data size (Q1.15 format) */ + /** * @} */ @@ -297,6 +304,7 @@ typedef void (*pCORDIC_CallbackTypeDef)(CORDIC_HandleTypeDef *hcordic); /*!< p */ #define CORDIC_OUTSIZE_32BITS (0x00000000U) /*!< 32 bits output data size (Q1.31 format) */ #define CORDIC_OUTSIZE_16BITS CORDIC_CSR_RESSIZE /*!< 16 bits output data size (Q1.15 format) */ + /** * @} */ @@ -305,6 +313,7 @@ typedef void (*pCORDIC_CallbackTypeDef)(CORDIC_HandleTypeDef *hcordic); /*!< p * @{ */ #define CORDIC_FLAG_RRDY CORDIC_CSR_RRDY /*!< Result Ready Flag */ + /** * @} */ @@ -316,6 +325,7 @@ typedef void (*pCORDIC_CallbackTypeDef)(CORDIC_HandleTypeDef *hcordic); /*!< p #define CORDIC_DMA_DIR_IN ((uint32_t)0x00000001U) /*!< DMA direction : Input of CORDIC */ #define CORDIC_DMA_DIR_OUT ((uint32_t)0x00000002U) /*!< DMA direction : Output of CORDIC */ #define CORDIC_DMA_DIR_IN_OUT ((uint32_t)0x00000003U) /*!< DMA direction : Input and Output of CORDIC */ + /** * @} */ @@ -336,9 +346,9 @@ typedef void (*pCORDIC_CallbackTypeDef)(CORDIC_HandleTypeDef *hcordic); /*!< p */ #if USE_HAL_CORDIC_REGISTER_CALLBACKS == 1 #define __HAL_CORDIC_RESET_HANDLE_STATE(__HANDLE__) do{ \ - (__HANDLE__)->State = HAL_CORDIC_STATE_RESET; \ - (__HANDLE__)->MspInitCallback = NULL; \ - (__HANDLE__)->MspDeInitCallback = NULL; \ + (__HANDLE__)->State = HAL_CORDIC_STATE_RESET; \ + (__HANDLE__)->MspInitCallback = NULL; \ + (__HANDLE__)->MspDeInitCallback = NULL; \ } while(0) #else #define __HAL_CORDIC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CORDIC_STATE_RESET) @@ -416,7 +426,7 @@ typedef void (*pCORDIC_CallbackTypeDef)(CORDIC_HandleTypeDef *hcordic); /*!< p * @} */ -/* Private macros --------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ /** @defgroup CORDIC_Private_Macros CORDIC Private Macros * @{ */ @@ -584,6 +594,7 @@ void HAL_CORDIC_IRQHandler(CORDIC_HandleTypeDef *hcordic); /* Peripheral State functions *************************************************/ HAL_CORDIC_StateTypeDef HAL_CORDIC_GetState(const CORDIC_HandleTypeDef *hcordic); uint32_t HAL_CORDIC_GetError(const CORDIC_HandleTypeDef *hcordic); + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cortex.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cortex.h index 134fc483..cc4c24c7 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cortex.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cortex.h @@ -309,7 +309,7 @@ void HAL_MPU_Enable(uint32_t MPU_Control); void HAL_MPU_Disable(void); void HAL_MPU_EnableRegion(uint32_t RegionNumber); void HAL_MPU_DisableRegion(uint32_t RegionNumber); -void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init); +void HAL_MPU_ConfigRegion(const MPU_Region_InitTypeDef *MPU_Init); #endif /* __MPU_PRESENT */ uint32_t HAL_NVIC_GetPriorityGrouping(void); void HAL_NVIC_GetPriority(IRQn_Type IRQn, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cryp.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cryp.h index a6802ed6..59bf9cd5 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cryp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cryp.h @@ -454,11 +454,11 @@ HAL_StatusTypeDef HAL_CRYP_Decrypt_DMA(CRYP_HandleTypeDef *hcryp, uint32_t *Inpu */ /* Interrupt Handler functions **********************************************/ void HAL_CRYP_IRQHandler(CRYP_HandleTypeDef *hcryp); -HAL_CRYP_STATETypeDef HAL_CRYP_GetState(CRYP_HandleTypeDef *hcryp); +HAL_CRYP_STATETypeDef HAL_CRYP_GetState(const CRYP_HandleTypeDef *hcryp); void HAL_CRYP_InCpltCallback(CRYP_HandleTypeDef *hcryp); void HAL_CRYP_OutCpltCallback(CRYP_HandleTypeDef *hcryp); void HAL_CRYP_ErrorCallback(CRYP_HandleTypeDef *hcryp); -uint32_t HAL_CRYP_GetError(CRYP_HandleTypeDef *hcryp); +uint32_t HAL_CRYP_GetError(const CRYP_HandleTypeDef *hcryp); /** * @} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cryp_ex.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cryp_ex.h index 8820e0b7..3c193cde 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cryp_ex.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_cryp_ex.h @@ -91,8 +91,8 @@ extern "C" { /** @addtogroup CRYPEx_Exported_Functions_Group1 * @{ */ -HAL_StatusTypeDef HAL_CRYPEx_AESGCM_GenerateAuthTAG(CRYP_HandleTypeDef *hcryp, uint32_t *AuthTag, uint32_t Timeout); -HAL_StatusTypeDef HAL_CRYPEx_AESCCM_GenerateAuthTAG(CRYP_HandleTypeDef *hcryp, uint32_t *AuthTag, uint32_t Timeout); +HAL_StatusTypeDef HAL_CRYPEx_AESGCM_GenerateAuthTAG(CRYP_HandleTypeDef *hcryp, const uint32_t *AuthTag, uint32_t Timeout); +HAL_StatusTypeDef HAL_CRYPEx_AESCCM_GenerateAuthTAG(CRYP_HandleTypeDef *hcryp, const uint32_t *AuthTag, uint32_t Timeout); /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dac.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dac.h index 65e5fd93..90590387 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dac.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dac.h @@ -286,10 +286,13 @@ typedef void (*pDAC_CallbackTypeDef)(DAC_HandleTypeDef *hdac); /** @defgroup DAC_ConnectOnChipPeripheral DAC ConnectOnChipPeripheral * @{ */ -#define DAC_CHIPCONNECT_EXTERNAL (1UL << 0) -#define DAC_CHIPCONNECT_INTERNAL (1UL << 1) -#define DAC_CHIPCONNECT_BOTH (1UL << 2) - +#define DAC_CHIPCONNECT_EXTERNAL (1UL << 0) /*!< DAC channel output is connected to an external pin.*/ +#define DAC_CHIPCONNECT_INTERNAL (1UL << 1) /*!< DAC channel output is connected to on-chip peripherals (via + internal paths) and to an external pin. */ +#define DAC_CHIPCONNECT_BOTH (1UL << 2) /*!< DAC channel output is connected to on-chip peripherals (via + internal paths) and to an external pin. + Note: this connection is not available in mode normal + with buffer disabled. */ /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dcmi.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dcmi.h index a21afc09..672d5de0 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dcmi.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dcmi.h @@ -569,8 +569,8 @@ HAL_StatusTypeDef HAL_DCMI_ConfigSyncUnmask(DCMI_HandleTypeDef *hdcmi, DCMI_ * @{ */ /* Peripheral State functions *************************************************/ -HAL_DCMI_StateTypeDef HAL_DCMI_GetState(DCMI_HandleTypeDef *hdcmi); -uint32_t HAL_DCMI_GetError(DCMI_HandleTypeDef *hdcmi); +HAL_DCMI_StateTypeDef HAL_DCMI_GetState(const DCMI_HandleTypeDef *hdcmi); +uint32_t HAL_DCMI_GetError(const DCMI_HandleTypeDef *hdcmi); /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dma.h index 82f6f215..59ad97a8 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dma.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dma.h @@ -1211,8 +1211,8 @@ HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_Ca * @brief Peripheral State functions * @{ */ -HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma); -uint32_t HAL_DMA_GetError(DMA_HandleTypeDef *hdma); +HAL_DMA_StateTypeDef HAL_DMA_GetState(const DMA_HandleTypeDef *hdma); +uint32_t HAL_DMA_GetError(const DMA_HandleTypeDef *hdma); /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dma2d.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dma2d.h index 00f205bc..dd32a99b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dma2d.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dma2d.h @@ -511,9 +511,9 @@ HAL_StatusTypeDef HAL_DMA2D_Suspend(DMA2D_HandleTypeDef *hdma2d); HAL_StatusTypeDef HAL_DMA2D_Resume(DMA2D_HandleTypeDef *hdma2d); HAL_StatusTypeDef HAL_DMA2D_Abort(DMA2D_HandleTypeDef *hdma2d); HAL_StatusTypeDef HAL_DMA2D_EnableCLUT(DMA2D_HandleTypeDef *hdma2d, uint32_t LayerIdx); -HAL_StatusTypeDef HAL_DMA2D_CLUTStartLoad(DMA2D_HandleTypeDef *hdma2d, DMA2D_CLUTCfgTypeDef *CLUTCfg, +HAL_StatusTypeDef HAL_DMA2D_CLUTStartLoad(DMA2D_HandleTypeDef *hdma2d, const DMA2D_CLUTCfgTypeDef *CLUTCfg, uint32_t LayerIdx); -HAL_StatusTypeDef HAL_DMA2D_CLUTStartLoad_IT(DMA2D_HandleTypeDef *hdma2d, DMA2D_CLUTCfgTypeDef *CLUTCfg, +HAL_StatusTypeDef HAL_DMA2D_CLUTStartLoad_IT(DMA2D_HandleTypeDef *hdma2d, const DMA2D_CLUTCfgTypeDef *CLUTCfg, uint32_t LayerIdx); HAL_StatusTypeDef HAL_DMA2D_CLUTLoad(DMA2D_HandleTypeDef *hdma2d, DMA2D_CLUTCfgTypeDef CLUTCfg, uint32_t LayerIdx); HAL_StatusTypeDef HAL_DMA2D_CLUTLoad_IT(DMA2D_HandleTypeDef *hdma2d, DMA2D_CLUTCfgTypeDef CLUTCfg, uint32_t LayerIdx); @@ -550,8 +550,8 @@ HAL_StatusTypeDef HAL_DMA2D_ConfigDeadTime(DMA2D_HandleTypeDef *hdma2d, uint8_t */ /* Peripheral State functions ***************************************************/ -HAL_DMA2D_StateTypeDef HAL_DMA2D_GetState(DMA2D_HandleTypeDef *hdma2d); -uint32_t HAL_DMA2D_GetError(DMA2D_HandleTypeDef *hdma2d); +HAL_DMA2D_StateTypeDef HAL_DMA2D_GetState(const DMA2D_HandleTypeDef *hdma2d); +uint32_t HAL_DMA2D_GetError(const DMA2D_HandleTypeDef *hdma2d); /** * @} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dts.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dts.h index f9bff170..3bb262fa 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dts.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_dts.h @@ -423,7 +423,7 @@ HAL_StatusTypeDef HAL_DTS_GetTemperature(DTS_HandleTypeDef *hdts, int32_t *Tempe HAL_StatusTypeDef HAL_DTS_Start_IT(DTS_HandleTypeDef *hdts); HAL_StatusTypeDef HAL_DTS_Stop_IT(DTS_HandleTypeDef *hdts); void HAL_DTS_IRQHandler(DTS_HandleTypeDef *hdts); -HAL_DTS_StateTypeDef HAL_DTS_GetState(DTS_HandleTypeDef *hdts); +HAL_DTS_StateTypeDef HAL_DTS_GetState(const DTS_HandleTypeDef *hdts); /* Callback in Interrupt mode */ void HAL_DTS_EndCallback(DTS_HandleTypeDef *hdts); void HAL_DTS_LowCallback(DTS_HandleTypeDef *hdts); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_eth.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_eth.h index 726127ea..b3d9eefb 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_eth.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_eth.h @@ -105,7 +105,7 @@ typedef struct uint32_t *PacketAddress[ETH_TX_DESC_CNT]; /*= FMAC_PARAM_Q_MIN) && ((__Q__) <= FMAC_PARAM_Q_MAX))) ) +#define IS_FMAC_PARAM_Q(__FUNCTION__, __Q__) (((__FUNCTION__) == FMAC_FUNC_CONVO_FIR) || \ + (((__FUNCTION__) == FMAC_FUNC_IIR_DIRECT_FORM_1) && \ + (((__Q__) >= FMAC_PARAM_Q_MIN) && ((__Q__) <= FMAC_PARAM_Q_MAX)))) /** * @brief Verify the FMAC filter parameter R. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_gfxmmu.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_gfxmmu.h index 9e93c229..1a1e9849 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_gfxmmu.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_gfxmmu.h @@ -344,16 +344,16 @@ HAL_StatusTypeDef HAL_GFXMMU_UnRegisterCallback(GFXMMU_HandleTypeDef *hgf * @{ */ /* Operation functions ********************************************************/ -HAL_StatusTypeDef HAL_GFXMMU_ConfigLut(GFXMMU_HandleTypeDef *hgfxmmu, +HAL_StatusTypeDef HAL_GFXMMU_ConfigLut(const GFXMMU_HandleTypeDef *hgfxmmu, uint32_t FirstLine, uint32_t LinesNumber, uint32_t Address); -HAL_StatusTypeDef HAL_GFXMMU_DisableLutLines(GFXMMU_HandleTypeDef *hgfxmmu, +HAL_StatusTypeDef HAL_GFXMMU_DisableLutLines(const GFXMMU_HandleTypeDef *hgfxmmu, uint32_t FirstLine, uint32_t LinesNumber); -HAL_StatusTypeDef HAL_GFXMMU_ConfigLutLine(GFXMMU_HandleTypeDef *hgfxmmu, GFXMMU_LutLineTypeDef *lutLine); +HAL_StatusTypeDef HAL_GFXMMU_ConfigLutLine(const GFXMMU_HandleTypeDef *hgfxmmu, GFXMMU_LutLineTypeDef *lutLine); HAL_StatusTypeDef HAL_GFXMMU_ConfigForceCache(GFXMMU_HandleTypeDef *hgfxmmu, uint32_t ForceParam); @@ -373,7 +373,7 @@ void HAL_GFXMMU_ErrorCallback(GFXMMU_HandleTypeDef *hgfxmmu); * @{ */ /* State function *************************************************************/ -HAL_GFXMMU_StateTypeDef HAL_GFXMMU_GetState(GFXMMU_HandleTypeDef *hgfxmmu); +HAL_GFXMMU_StateTypeDef HAL_GFXMMU_GetState(const GFXMMU_HandleTypeDef *hgfxmmu); uint32_t HAL_GFXMMU_GetError(GFXMMU_HandleTypeDef *hgfxmmu); /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_gpio.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_gpio.h index 1cd9178b..e0b75b70 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_gpio.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_gpio.h @@ -252,7 +252,7 @@ typedef enum * @{ */ /* Initialization and de-initialization functions *****************************/ -void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init); +void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, const GPIO_InitTypeDef *GPIO_Init); void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin); /** * @} @@ -262,7 +262,7 @@ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin); * @{ */ /* IO operation functions *****************************************************/ -GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); +GPIO_PinState HAL_GPIO_ReadPin(const GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_hash.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_hash.h index 15b1213f..54df4670 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_hash.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_hash.h @@ -117,13 +117,13 @@ typedef struct { HASH_InitTypeDef Init; /*!< HASH required parameters */ - uint8_t *pHashInBuffPtr; /*!< Pointer to input buffer */ + uint8_t const *pHashInBuffPtr; /*!< Pointer to input buffer */ uint8_t *pHashOutBuffPtr; /*!< Pointer to output buffer (digest) */ uint8_t *pHashKeyBuffPtr; /*!< Pointer to key buffer (HMAC only) */ - uint8_t *pHashMsgBuffPtr; /*!< Pointer to message buffer (HMAC only) */ + uint8_t const *pHashMsgBuffPtr; /*!< Pointer to message buffer (HMAC only) */ uint32_t HashBuffSize; /*!< Size of buffer to be processed */ @@ -476,15 +476,17 @@ HAL_StatusTypeDef HAL_HASH_UnRegisterCallback(HASH_HandleTypeDef *hhash, HAL_HAS /* HASH processing using polling *********************************************/ -HAL_StatusTypeDef HAL_HASH_SHA1_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t *pOutBuffer, +HAL_StatusTypeDef HAL_HASH_SHA1_Start(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, + uint8_t *pOutBuffer, uint32_t Timeout); -HAL_StatusTypeDef HAL_HASH_MD5_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t *pOutBuffer, +HAL_StatusTypeDef HAL_HASH_MD5_Start(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, + uint8_t *pOutBuffer, uint32_t Timeout); -HAL_StatusTypeDef HAL_HASH_MD5_Accmlt(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HASH_SHA1_Accmlt(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HASH_MD5_Accmlt_End(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HASH_MD5_Accmlt(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HASH_SHA1_Accmlt(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HASH_MD5_Accmlt_End(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer, uint32_t Timeout); -HAL_StatusTypeDef HAL_HASH_SHA1_Accmlt_End(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HASH_SHA1_Accmlt_End(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer, uint32_t Timeout); @@ -497,15 +499,15 @@ HAL_StatusTypeDef HAL_HASH_SHA1_Accmlt_End(HASH_HandleTypeDef *hhash, uint8_t *p */ /* HASH processing using IT **************************************************/ -HAL_StatusTypeDef HAL_HASH_SHA1_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HASH_SHA1_Start_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer); -HAL_StatusTypeDef HAL_HASH_SHA1_Accmlt_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HASH_SHA1_Accmlt_End_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HASH_SHA1_Accmlt_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HASH_SHA1_Accmlt_End_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer); -HAL_StatusTypeDef HAL_HASH_MD5_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HASH_MD5_Start_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer); -HAL_StatusTypeDef HAL_HASH_MD5_Accmlt_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HASH_MD5_Accmlt_End_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HASH_MD5_Accmlt_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HASH_MD5_Accmlt_End_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer); void HAL_HASH_IRQHandler(HASH_HandleTypeDef *hhash); /** @@ -517,9 +519,9 @@ void HAL_HASH_IRQHandler(HASH_HandleTypeDef *hhash); */ /* HASH processing using DMA *************************************************/ -HAL_StatusTypeDef HAL_HASH_SHA1_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HASH_SHA1_Start_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); HAL_StatusTypeDef HAL_HASH_SHA1_Finish(HASH_HandleTypeDef *hhash, uint8_t *pOutBuffer, uint32_t Timeout); -HAL_StatusTypeDef HAL_HASH_MD5_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HASH_MD5_Start_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); HAL_StatusTypeDef HAL_HASH_MD5_Finish(HASH_HandleTypeDef *hhash, uint8_t *pOutBuffer, uint32_t Timeout); /** @@ -531,9 +533,11 @@ HAL_StatusTypeDef HAL_HASH_MD5_Finish(HASH_HandleTypeDef *hhash, uint8_t *pOutBu */ /* HASH-MAC processing using polling *****************************************/ -HAL_StatusTypeDef HAL_HMAC_SHA1_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t *pOutBuffer, +HAL_StatusTypeDef HAL_HMAC_SHA1_Start(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, + uint8_t *pOutBuffer, uint32_t Timeout); -HAL_StatusTypeDef HAL_HMAC_MD5_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t *pOutBuffer, +HAL_StatusTypeDef HAL_HMAC_MD5_Start(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, + uint8_t *pOutBuffer, uint32_t Timeout); /** @@ -544,9 +548,9 @@ HAL_StatusTypeDef HAL_HMAC_MD5_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuff * @{ */ -HAL_StatusTypeDef HAL_HMAC_MD5_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HMAC_MD5_Start_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer); -HAL_StatusTypeDef HAL_HMAC_SHA1_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HMAC_SHA1_Start_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer); /** @@ -558,8 +562,8 @@ HAL_StatusTypeDef HAL_HMAC_SHA1_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pIn */ /* HASH-HMAC processing using DMA ********************************************/ -HAL_StatusTypeDef HAL_HMAC_SHA1_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HMAC_MD5_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HMAC_SHA1_Start_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HMAC_MD5_Start_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); /** * @} @@ -571,13 +575,13 @@ HAL_StatusTypeDef HAL_HMAC_MD5_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pIn /* Peripheral State methods **************************************************/ -HAL_HASH_StateTypeDef HAL_HASH_GetState(HASH_HandleTypeDef *hhash); -HAL_StatusTypeDef HAL_HASH_GetStatus(HASH_HandleTypeDef *hhash); -void HAL_HASH_ContextSaving(HASH_HandleTypeDef *hhash, uint8_t *pMemBuffer); -void HAL_HASH_ContextRestoring(HASH_HandleTypeDef *hhash, uint8_t *pMemBuffer); +HAL_HASH_StateTypeDef HAL_HASH_GetState(const HASH_HandleTypeDef *hhash); +HAL_StatusTypeDef HAL_HASH_GetStatus(const HASH_HandleTypeDef *hhash); +void HAL_HASH_ContextSaving(const HASH_HandleTypeDef *hhash, const uint8_t *pMemBuffer); +void HAL_HASH_ContextRestoring(HASH_HandleTypeDef *hhash, const uint8_t *pMemBuffer); void HAL_HASH_SwFeed_ProcessSuspend(HASH_HandleTypeDef *hhash); HAL_StatusTypeDef HAL_HASH_DMAFeed_ProcessSuspend(HASH_HandleTypeDef *hhash); -uint32_t HAL_HASH_GetError(HASH_HandleTypeDef *hhash); +uint32_t HAL_HASH_GetError(const HASH_HandleTypeDef *hhash); /** * @} @@ -594,19 +598,27 @@ uint32_t HAL_HASH_GetError(HASH_HandleTypeDef *hhash); */ /* Private functions */ -HAL_StatusTypeDef HASH_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t *pOutBuffer, +HAL_StatusTypeDef HASH_Start(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, + uint8_t *pOutBuffer, uint32_t Timeout, uint32_t Algorithm); -HAL_StatusTypeDef HASH_Accumulate(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint32_t Algorithm); -HAL_StatusTypeDef HASH_Accumulate_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint32_t Algorithm); -HAL_StatusTypeDef HASH_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t *pOutBuffer, +HAL_StatusTypeDef HASH_Accumulate(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, + uint32_t Algorithm); +HAL_StatusTypeDef HASH_Accumulate_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, + uint32_t Algorithm); +HAL_StatusTypeDef HASH_Start_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, + uint8_t *pOutBuffer, uint32_t Algorithm); -HAL_StatusTypeDef HASH_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint32_t Algorithm); +HAL_StatusTypeDef HASH_Start_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, + uint32_t Algorithm); HAL_StatusTypeDef HASH_Finish(HASH_HandleTypeDef *hhash, uint8_t *pOutBuffer, uint32_t Timeout); -HAL_StatusTypeDef HMAC_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t *pOutBuffer, +HAL_StatusTypeDef HMAC_Start(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, + uint8_t *pOutBuffer, uint32_t Timeout, uint32_t Algorithm); -HAL_StatusTypeDef HMAC_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint8_t *pOutBuffer, +HAL_StatusTypeDef HMAC_Start_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, + uint8_t *pOutBuffer, uint32_t Algorithm); -HAL_StatusTypeDef HMAC_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, uint32_t Algorithm); +HAL_StatusTypeDef HMAC_Start_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, + uint32_t Algorithm); /** * @} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_hash_ex.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_hash_ex.h index 78fc650f..2ac9297a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_hash_ex.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_hash_ex.h @@ -50,15 +50,15 @@ extern "C" { * @{ */ -HAL_StatusTypeDef HAL_HASHEx_SHA224_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HASHEx_SHA224_Start(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer, uint32_t Timeout); -HAL_StatusTypeDef HAL_HASHEx_SHA224_Accmlt(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HASHEx_SHA224_Accmlt_End(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HASHEx_SHA224_Accmlt(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HASHEx_SHA224_Accmlt_End(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer, uint32_t Timeout); -HAL_StatusTypeDef HAL_HASHEx_SHA256_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HASHEx_SHA256_Start(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer, uint32_t Timeout); -HAL_StatusTypeDef HAL_HASHEx_SHA256_Accmlt(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HASHEx_SHA256_Accmlt_End(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HASHEx_SHA256_Accmlt(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HASHEx_SHA256_Accmlt_End(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer, uint32_t Timeout); /** @@ -69,15 +69,17 @@ HAL_StatusTypeDef HAL_HASHEx_SHA256_Accmlt_End(HASH_HandleTypeDef *hhash, uint8_ * @{ */ -HAL_StatusTypeDef HAL_HASHEx_SHA224_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HASHEx_SHA224_Start_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer); -HAL_StatusTypeDef HAL_HASHEx_SHA224_Accmlt_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HASHEx_SHA224_Accmlt_End_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HASHEx_SHA224_Accmlt_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HASHEx_SHA224_Accmlt_End_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, + uint32_t Size, uint8_t *pOutBuffer); -HAL_StatusTypeDef HAL_HASHEx_SHA256_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HASHEx_SHA256_Start_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer); -HAL_StatusTypeDef HAL_HASHEx_SHA256_Accmlt_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HASHEx_SHA256_Accmlt_End_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HASHEx_SHA256_Accmlt_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HASHEx_SHA256_Accmlt_End_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, + uint32_t Size, uint8_t *pOutBuffer); /** @@ -87,9 +89,9 @@ HAL_StatusTypeDef HAL_HASHEx_SHA256_Accmlt_End_IT(HASH_HandleTypeDef *hhash, uin /** @addtogroup HASHEx_Exported_Functions_Group3 HASH extended processing functions in DMA mode * @{ */ -HAL_StatusTypeDef HAL_HASHEx_SHA224_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HASHEx_SHA224_Start_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); HAL_StatusTypeDef HAL_HASHEx_SHA224_Finish(HASH_HandleTypeDef *hhash, uint8_t *pOutBuffer, uint32_t Timeout); -HAL_StatusTypeDef HAL_HASHEx_SHA256_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HASHEx_SHA256_Start_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); HAL_StatusTypeDef HAL_HASHEx_SHA256_Finish(HASH_HandleTypeDef *hhash, uint8_t *pOutBuffer, uint32_t Timeout); /** @@ -99,9 +101,9 @@ HAL_StatusTypeDef HAL_HASHEx_SHA256_Finish(HASH_HandleTypeDef *hhash, uint8_t *p /** @addtogroup HASHEx_Exported_Functions_Group4 HMAC extended processing functions in polling mode * @{ */ -HAL_StatusTypeDef HAL_HMACEx_SHA224_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HMACEx_SHA224_Start(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer, uint32_t Timeout); -HAL_StatusTypeDef HAL_HMACEx_SHA256_Start(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HMACEx_SHA256_Start(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer, uint32_t Timeout); /** * @} @@ -111,9 +113,9 @@ HAL_StatusTypeDef HAL_HMACEx_SHA256_Start(HASH_HandleTypeDef *hhash, uint8_t *pI * @{ */ -HAL_StatusTypeDef HAL_HMACEx_SHA224_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HMACEx_SHA224_Start_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer); -HAL_StatusTypeDef HAL_HMACEx_SHA256_Start_IT(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size, +HAL_StatusTypeDef HAL_HMACEx_SHA256_Start_IT(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size, uint8_t *pOutBuffer); /** @@ -124,8 +126,8 @@ HAL_StatusTypeDef HAL_HMACEx_SHA256_Start_IT(HASH_HandleTypeDef *hhash, uint8_t * @{ */ -HAL_StatusTypeDef HAL_HMACEx_SHA224_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HMACEx_SHA256_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HMACEx_SHA224_Start_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HMACEx_SHA256_Start_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); /** * @} @@ -135,20 +137,24 @@ HAL_StatusTypeDef HAL_HMACEx_SHA256_Start_DMA(HASH_HandleTypeDef *hhash, uint8_t * @{ */ -HAL_StatusTypeDef HAL_HMACEx_MD5_Step1_2_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HMACEx_MD5_Step2_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HMACEx_MD5_Step2_3_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); - -HAL_StatusTypeDef HAL_HMACEx_SHA1_Step1_2_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HMACEx_SHA1_Step2_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HMACEx_SHA1_Step2_3_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HMACEx_SHA224_Step1_2_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HMACEx_SHA224_Step2_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HMACEx_SHA224_Step2_3_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); - -HAL_StatusTypeDef HAL_HMACEx_SHA256_Step1_2_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HMACEx_SHA256_Step2_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); -HAL_StatusTypeDef HAL_HMACEx_SHA256_Step2_3_DMA(HASH_HandleTypeDef *hhash, uint8_t *pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HMACEx_MD5_Step1_2_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HMACEx_MD5_Step2_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HMACEx_MD5_Step2_3_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); + +HAL_StatusTypeDef HAL_HMACEx_SHA1_Step1_2_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HMACEx_SHA1_Step2_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HMACEx_SHA1_Step2_3_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HMACEx_SHA224_Step1_2_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, + uint32_t Size); +HAL_StatusTypeDef HAL_HMACEx_SHA224_Step2_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HMACEx_SHA224_Step2_3_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, + uint32_t Size); + +HAL_StatusTypeDef HAL_HMACEx_SHA256_Step1_2_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, + uint32_t Size); +HAL_StatusTypeDef HAL_HMACEx_SHA256_Step2_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, uint32_t Size); +HAL_StatusTypeDef HAL_HMACEx_SHA256_Step2_3_DMA(HASH_HandleTypeDef *hhash, const uint8_t *const pInBuffer, + uint32_t Size); /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_hrtim.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_hrtim.h index 7b709f3e..a6841ada 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_hrtim.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_hrtim.h @@ -21,7 +21,7 @@ #define STM32H7xx_HAL_HRTIM_H #ifdef __cplusplus - extern "C" { +extern "C" { #endif /* Includes ------------------------------------------------------------------*/ @@ -60,7 +60,7 @@ */ typedef struct { - uint32_t HRTIMInterruptResquests; /*!< Specifies which interrupts requests must enabled for the HRTIM instance. + uint32_t HRTIMInterruptRequests; /*!< Specifies which interrupts requests must enabled for the HRTIM instance. This parameter can be any combination of @ref HRTIM_Common_Interrupt_Enable */ uint32_t SyncOptions; /*!< Specifies how the HRTIM instance handles the external synchronization signals. The HRTIM instance can be configured to act as a slave (waiting for a trigger @@ -119,7 +119,7 @@ typedef struct __HRTIM_HandleTypeDef typedef struct #endif /* USE_HAL_HRTIM_REGISTER_CALLBACKS */ { - HRTIM_TypeDef * Instance; /*!< Register base address */ + HRTIM_TypeDef *Instance; /*!< Register base address */ HRTIM_InitTypeDef Init; /*!< HRTIM required parameters */ @@ -129,12 +129,12 @@ typedef struct __IO HAL_HRTIM_StateTypeDef State; /*!< HRTIM communication state */ - DMA_HandleTypeDef * hdmaMaster; /*!< Master timer DMA handle parameters */ - DMA_HandleTypeDef * hdmaTimerA; /*!< Timer A DMA handle parameters */ - DMA_HandleTypeDef * hdmaTimerB; /*!< Timer B DMA handle parameters */ - DMA_HandleTypeDef * hdmaTimerC; /*!< Timer C DMA handle parameters */ - DMA_HandleTypeDef * hdmaTimerD; /*!< Timer D DMA handle parameters */ - DMA_HandleTypeDef * hdmaTimerE; /*!< Timer E DMA handle parameters */ + DMA_HandleTypeDef *hdmaMaster; /*!< Master timer DMA handle parameters */ + DMA_HandleTypeDef *hdmaTimerA; /*!< Timer A DMA handle parameters */ + DMA_HandleTypeDef *hdmaTimerB; /*!< Timer B DMA handle parameters */ + DMA_HandleTypeDef *hdmaTimerC; /*!< Timer C DMA handle parameters */ + DMA_HandleTypeDef *hdmaTimerD; /*!< Timer D DMA handle parameters */ + DMA_HandleTypeDef *hdmaTimerE; /*!< Timer E DMA handle parameters */ #if (USE_HAL_HRTIM_REGISTER_CALLBACKS == 1) void (* Fault1Callback)(struct __HRTIM_HandleTypeDef *hhrtim); /*!< Fault 1 interrupt callback function pointer */ @@ -481,7 +481,8 @@ typedef struct /** * @brief HAL HRTIM Callback ID enumeration definition */ -typedef enum { +typedef enum +{ HAL_HRTIM_FAULT1CALLBACK_CB_ID = 0x00U, /*!< Fault 1 interrupt callback ID */ HAL_HRTIM_FAULT2CALLBACK_CB_ID = 0x01U, /*!< Fault 2 interrupt callback ID */ HAL_HRTIM_FAULT3CALLBACK_CB_ID = 0x02U, /*!< Fault 3 interrupt callback ID */ @@ -510,7 +511,7 @@ typedef enum { HAL_HRTIM_MSPINIT_CB_ID = 0x20U, /*!< HRTIM MspInit callback ID */ HAL_HRTIM_MSPDEINIT_CB_ID = 0x21U, /*!< HRTIM MspInit callback ID */ -}HAL_HRTIM_CallbackIDTypeDef; +} HAL_HRTIM_CallbackIDTypeDef; /** * @brief HAL HRTIM Callback function pointer definitions @@ -556,8 +557,8 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< #define HRTIM_TIMERID_TIMER_D (HRTIM_MCR_TDCEN) /*!< Timer D identifier */ #define HRTIM_TIMERID_TIMER_E (HRTIM_MCR_TECEN) /*!< Timer E identifier */ /** - * @} - */ + * @} + */ /** @defgroup HRTIM_Compare_Unit HRTIM Compare Unit * @{ @@ -567,9 +568,9 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< #define HRTIM_COMPAREUNIT_2 0x00000002U /*!< Compare unit 2 identifier */ #define HRTIM_COMPAREUNIT_3 0x00000004U /*!< Compare unit 3 identifier */ #define HRTIM_COMPAREUNIT_4 0x00000008U /*!< Compare unit 4 identifier */ - /** +/** * @} - */ + */ /** @defgroup HRTIM_Capture_Unit HRTIM Capture Unit * @{ @@ -609,10 +610,10 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< #define HRTIM_ADCTRIGGER_4 0x00000008U /*!< ADC trigger 4 identifier */ #define IS_HRTIM_ADCTRIGGER(ADCTRIGGER)\ - (((ADCTRIGGER) == HRTIM_ADCTRIGGER_1) || \ - ((ADCTRIGGER) == HRTIM_ADCTRIGGER_2) || \ - ((ADCTRIGGER) == HRTIM_ADCTRIGGER_3) || \ - ((ADCTRIGGER) == HRTIM_ADCTRIGGER_4)) + (((ADCTRIGGER) == HRTIM_ADCTRIGGER_1) || \ + ((ADCTRIGGER) == HRTIM_ADCTRIGGER_2) || \ + ((ADCTRIGGER) == HRTIM_ADCTRIGGER_3) || \ + ((ADCTRIGGER) == HRTIM_ADCTRIGGER_4)) /** * @} */ @@ -649,10 +650,10 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< */ - /** @defgroup HRTIM_Prescaler_Ratio HRTIM Prescaler Ratio +/** @defgroup HRTIM_Prescaler_Ratio HRTIM Prescaler Ratio * @{ * @brief Constants defining timer high-resolution clock prescaler ratio. - */ + */ #define HRTIM_PRESCALERRATIO_DIV1 (0x00000005U) /*!< fHRCK: fHRTIM = 144 MHz - Resolution: 6.95 ns - Min PWM frequency: 2.2 kHz (fHRTIM=144MHz) */ #define HRTIM_PRESCALERRATIO_DIV2 (0x00000006U) /*!< fHRCK: fHRTIM / 2U = 72 MHz - Resolution: 13.88 ns- Min PWM frequency: 1.1 kHz (fHRTIM=144MHz) */ #define HRTIM_PRESCALERRATIO_DIV4 (0x00000007U) /*!< fHRCK: fHRTIM / 4U = 36 MHz - Resolution: 27.7 ns- Min PWM frequency: 550Hz (fHRTIM=144MHz) */ @@ -934,9 +935,9 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< #define HRTIM_BASICOCMODE_ACTIVE (0x00000003U) /*!< Output forced to inactive level when the timer counter reaches the compare value */ #define IS_HRTIM_BASICOCMODE(BASICOCMODE)\ - (((BASICOCMODE) == HRTIM_BASICOCMODE_TOGGLE) || \ - ((BASICOCMODE) == HRTIM_BASICOCMODE_INACTIVE) || \ - ((BASICOCMODE) == HRTIM_BASICOCMODE_ACTIVE)) + (((BASICOCMODE) == HRTIM_BASICOCMODE_TOGGLE) || \ + ((BASICOCMODE) == HRTIM_BASICOCMODE_INACTIVE) || \ + ((BASICOCMODE) == HRTIM_BASICOCMODE_ACTIVE)) /** * @} */ @@ -1040,9 +1041,9 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< */ #define HRTIM_OUTPUTIDLEMODE_NONE 0x00000000U /*!< The output is not affected by the burst mode operation */ #define HRTIM_OUTPUTIDLEMODE_IDLE (HRTIM_OUTR_IDLM1) /*!< The output is in idle state when requested by the burst mode controller */ - /** +/** * @} - */ + */ /** @defgroup HRTIM_Output_IDLE_Level HRTIM Output IDLE Level * @{ @@ -1267,9 +1268,9 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< #define HRTIM_CHOPPER_PRESCALERRATIO_DIV224 (HRTIM_CHPR_CARFRQ_3 | HRTIM_CHPR_CARFRQ_2 | HRTIM_CHPR_CARFRQ_0) /*!< fCHPFRQ = fHRTIM / 224 */ #define HRTIM_CHOPPER_PRESCALERRATIO_DIV240 (HRTIM_CHPR_CARFRQ_3 | HRTIM_CHPR_CARFRQ_2 | HRTIM_CHPR_CARFRQ_1) /*!< fCHPFRQ = fHRTIM / 240 */ #define HRTIM_CHOPPER_PRESCALERRATIO_DIV256 (HRTIM_CHPR_CARFRQ_3 | HRTIM_CHPR_CARFRQ_2 | HRTIM_CHPR_CARFRQ_1 | HRTIM_CHPR_CARFRQ_0) /*!< fCHPFRQ = fHRTIM / 256 */ - /** +/** * @} - */ + */ /** @defgroup HRTIM_Chopper_Duty_Cycle HRTIM Chopper Duty Cycle * @{ @@ -1804,8 +1805,8 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< #define HRTIM_OUTPUTLEVEL_INACTIVE (0x00000002U) /*!< Force the output to its inactive state */ #define IS_HRTIM_OUTPUTLEVEL(OUTPUTLEVEL)\ - (((OUTPUTLEVEL) == HRTIM_OUTPUTLEVEL_ACTIVE) || \ - ((OUTPUTLEVEL) == HRTIM_OUTPUTLEVEL_INACTIVE)) + (((OUTPUTLEVEL) == HRTIM_OUTPUTLEVEL_ACTIVE) || \ + ((OUTPUTLEVEL) == HRTIM_OUTPUTLEVEL_INACTIVE)) /** * @} */ @@ -1999,169 +2000,169 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< * @} */ - /* Private macros --------------------------------------------------------*/ +/* Private macros --------------------------------------------------------*/ /** @addtogroup HRTIM_Private_Macros * @{ */ #define IS_HRTIM_TIMERINDEX(TIMERINDEX)\ - (((TIMERINDEX) == HRTIM_TIMERINDEX_MASTER) || \ - ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_A) || \ - ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_B) || \ - ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_C) || \ - ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_D) || \ - ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_E)) + (((TIMERINDEX) == HRTIM_TIMERINDEX_MASTER) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_A) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_B) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_C) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_D) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_E)) #define IS_HRTIM_TIMING_UNIT(TIMERINDEX)\ - (((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_A) || \ - ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_B) || \ - ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_C) || \ - ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_D) || \ - ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_E)) + (((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_A) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_B) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_C) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_D) || \ + ((TIMERINDEX) == HRTIM_TIMERINDEX_TIMER_E)) #define IS_HRTIM_TIMERID(TIMERID) (((TIMERID) & 0xFFC0FFFFU) == 0x00000000U) #define IS_HRTIM_COMPAREUNIT(COMPAREUNIT)\ - (((COMPAREUNIT) == HRTIM_COMPAREUNIT_1) || \ - ((COMPAREUNIT) == HRTIM_COMPAREUNIT_2) || \ - ((COMPAREUNIT) == HRTIM_COMPAREUNIT_3) || \ - ((COMPAREUNIT) == HRTIM_COMPAREUNIT_4)) + (((COMPAREUNIT) == HRTIM_COMPAREUNIT_1) || \ + ((COMPAREUNIT) == HRTIM_COMPAREUNIT_2) || \ + ((COMPAREUNIT) == HRTIM_COMPAREUNIT_3) || \ + ((COMPAREUNIT) == HRTIM_COMPAREUNIT_4)) #define IS_HRTIM_CAPTUREUNIT(CAPTUREUNIT)\ - (((CAPTUREUNIT) == HRTIM_CAPTUREUNIT_1) || \ - ((CAPTUREUNIT) == HRTIM_CAPTUREUNIT_2)) + (((CAPTUREUNIT) == HRTIM_CAPTUREUNIT_1) || \ + ((CAPTUREUNIT) == HRTIM_CAPTUREUNIT_2)) #define IS_HRTIM_OUTPUT(OUTPUT) (((OUTPUT) & 0xFFFFFC00U) == 0x00000000U) #define IS_HRTIM_TIMER_OUTPUT(TIMER, OUTPUT)\ - ((((TIMER) == HRTIM_TIMERINDEX_TIMER_A) && \ - (((OUTPUT) == HRTIM_OUTPUT_TA1) || \ - ((OUTPUT) == HRTIM_OUTPUT_TA2))) \ - || \ - (((TIMER) == HRTIM_TIMERINDEX_TIMER_B) && \ - (((OUTPUT) == HRTIM_OUTPUT_TB1) || \ - ((OUTPUT) == HRTIM_OUTPUT_TB2))) \ - || \ - (((TIMER) == HRTIM_TIMERINDEX_TIMER_C) && \ - (((OUTPUT) == HRTIM_OUTPUT_TC1) || \ - ((OUTPUT) == HRTIM_OUTPUT_TC2))) \ - || \ - (((TIMER) == HRTIM_TIMERINDEX_TIMER_D) && \ - (((OUTPUT) == HRTIM_OUTPUT_TD1) || \ - ((OUTPUT) == HRTIM_OUTPUT_TD2))) \ - || \ - (((TIMER) == HRTIM_TIMERINDEX_TIMER_E) && \ - (((OUTPUT) == HRTIM_OUTPUT_TE1) || \ - ((OUTPUT) == HRTIM_OUTPUT_TE2)))) + ((((TIMER) == HRTIM_TIMERINDEX_TIMER_A) && \ + (((OUTPUT) == HRTIM_OUTPUT_TA1) || \ + ((OUTPUT) == HRTIM_OUTPUT_TA2))) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_B) && \ + (((OUTPUT) == HRTIM_OUTPUT_TB1) || \ + ((OUTPUT) == HRTIM_OUTPUT_TB2))) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_C) && \ + (((OUTPUT) == HRTIM_OUTPUT_TC1) || \ + ((OUTPUT) == HRTIM_OUTPUT_TC2))) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_D) && \ + (((OUTPUT) == HRTIM_OUTPUT_TD1) || \ + ((OUTPUT) == HRTIM_OUTPUT_TD2))) \ + || \ + (((TIMER) == HRTIM_TIMERINDEX_TIMER_E) && \ + (((OUTPUT) == HRTIM_OUTPUT_TE1) || \ + ((OUTPUT) == HRTIM_OUTPUT_TE2)))) #define IS_HRTIM_EVENT(EVENT)\ - (((EVENT) == HRTIM_EVENT_NONE)|| \ - ((EVENT) == HRTIM_EVENT_1) || \ - ((EVENT) == HRTIM_EVENT_2) || \ - ((EVENT) == HRTIM_EVENT_3) || \ - ((EVENT) == HRTIM_EVENT_4) || \ - ((EVENT) == HRTIM_EVENT_5) || \ - ((EVENT) == HRTIM_EVENT_6) || \ - ((EVENT) == HRTIM_EVENT_7) || \ - ((EVENT) == HRTIM_EVENT_8) || \ - ((EVENT) == HRTIM_EVENT_9) || \ - ((EVENT) == HRTIM_EVENT_10)) + (((EVENT) == HRTIM_EVENT_NONE)|| \ + ((EVENT) == HRTIM_EVENT_1) || \ + ((EVENT) == HRTIM_EVENT_2) || \ + ((EVENT) == HRTIM_EVENT_3) || \ + ((EVENT) == HRTIM_EVENT_4) || \ + ((EVENT) == HRTIM_EVENT_5) || \ + ((EVENT) == HRTIM_EVENT_6) || \ + ((EVENT) == HRTIM_EVENT_7) || \ + ((EVENT) == HRTIM_EVENT_8) || \ + ((EVENT) == HRTIM_EVENT_9) || \ + ((EVENT) == HRTIM_EVENT_10)) #define IS_HRTIM_FAULT(FAULT)\ - (((FAULT) == HRTIM_FAULT_1) || \ - ((FAULT) == HRTIM_FAULT_2) || \ - ((FAULT) == HRTIM_FAULT_3) || \ - ((FAULT) == HRTIM_FAULT_4) || \ - ((FAULT) == HRTIM_FAULT_5)) + (((FAULT) == HRTIM_FAULT_1) || \ + ((FAULT) == HRTIM_FAULT_2) || \ + ((FAULT) == HRTIM_FAULT_3) || \ + ((FAULT) == HRTIM_FAULT_4) || \ + ((FAULT) == HRTIM_FAULT_5)) #define IS_HRTIM_PRESCALERRATIO(PRESCALERRATIO)\ - (((PRESCALERRATIO) == HRTIM_PRESCALERRATIO_DIV1) || \ - ((PRESCALERRATIO) == HRTIM_PRESCALERRATIO_DIV2) || \ - ((PRESCALERRATIO) == HRTIM_PRESCALERRATIO_DIV4)) + (((PRESCALERRATIO) == HRTIM_PRESCALERRATIO_DIV1) || \ + ((PRESCALERRATIO) == HRTIM_PRESCALERRATIO_DIV2) || \ + ((PRESCALERRATIO) == HRTIM_PRESCALERRATIO_DIV4)) #define IS_HRTIM_MODE(MODE)\ - (((MODE) == HRTIM_MODE_CONTINUOUS) || \ - ((MODE) == HRTIM_MODE_SINGLESHOT) || \ - ((MODE) == HRTIM_MODE_SINGLESHOT_RETRIGGERABLE)) + (((MODE) == HRTIM_MODE_CONTINUOUS) || \ + ((MODE) == HRTIM_MODE_SINGLESHOT) || \ + ((MODE) == HRTIM_MODE_SINGLESHOT_RETRIGGERABLE)) #define IS_HRTIM_MODE_ONEPULSE(MODE)\ - (((MODE) == HRTIM_MODE_SINGLESHOT) || \ - ((MODE) == HRTIM_MODE_SINGLESHOT_RETRIGGERABLE)) + (((MODE) == HRTIM_MODE_SINGLESHOT) || \ + ((MODE) == HRTIM_MODE_SINGLESHOT_RETRIGGERABLE)) #define IS_HRTIM_HALFMODE(HALFMODE)\ - (((HALFMODE) == HRTIM_HALFMODE_DISABLED) || \ - ((HALFMODE) == HRTIM_HALFMODE_ENABLED)) + (((HALFMODE) == HRTIM_HALFMODE_DISABLED) || \ + ((HALFMODE) == HRTIM_HALFMODE_ENABLED)) #define IS_HRTIM_SYNCSTART(SYNCSTART)\ - (((SYNCSTART) == HRTIM_SYNCSTART_DISABLED) || \ - ((SYNCSTART) == HRTIM_SYNCSTART_ENABLED)) + (((SYNCSTART) == HRTIM_SYNCSTART_DISABLED) || \ + ((SYNCSTART) == HRTIM_SYNCSTART_ENABLED)) #define IS_HRTIM_SYNCRESET(SYNCRESET)\ - (((SYNCRESET) == HRTIM_SYNCRESET_DISABLED) || \ - ((SYNCRESET) == HRTIM_SYNCRESET_ENABLED)) + (((SYNCRESET) == HRTIM_SYNCRESET_DISABLED) || \ + ((SYNCRESET) == HRTIM_SYNCRESET_ENABLED)) #define IS_HRTIM_DACSYNC(DACSYNC)\ - (((DACSYNC) == HRTIM_DACSYNC_NONE) || \ - ((DACSYNC) == HRTIM_DACSYNC_DACTRIGOUT_1) || \ - ((DACSYNC) == HRTIM_DACSYNC_DACTRIGOUT_2) || \ - ((DACSYNC) == HRTIM_DACSYNC_DACTRIGOUT_3)) + (((DACSYNC) == HRTIM_DACSYNC_NONE) || \ + ((DACSYNC) == HRTIM_DACSYNC_DACTRIGOUT_1) || \ + ((DACSYNC) == HRTIM_DACSYNC_DACTRIGOUT_2) || \ + ((DACSYNC) == HRTIM_DACSYNC_DACTRIGOUT_3)) #define IS_HRTIM_PRELOAD(PRELOAD)\ - (((PRELOAD) == HRTIM_PRELOAD_DISABLED) || \ - ((PRELOAD) == HRTIM_PRELOAD_ENABLED)) + (((PRELOAD) == HRTIM_PRELOAD_DISABLED) || \ + ((PRELOAD) == HRTIM_PRELOAD_ENABLED)) #define IS_HRTIM_UPDATEGATING_MASTER(UPDATEGATING)\ - (((UPDATEGATING) == HRTIM_UPDATEGATING_INDEPENDENT) || \ - ((UPDATEGATING) == HRTIM_UPDATEGATING_DMABURST) || \ - ((UPDATEGATING) == HRTIM_UPDATEGATING_DMABURST_UPDATE)) + (((UPDATEGATING) == HRTIM_UPDATEGATING_INDEPENDENT) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_DMABURST) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_DMABURST_UPDATE)) #define IS_HRTIM_UPDATEGATING_TIM(UPDATEGATING)\ - (((UPDATEGATING) == HRTIM_UPDATEGATING_INDEPENDENT) || \ - ((UPDATEGATING) == HRTIM_UPDATEGATING_DMABURST) || \ - ((UPDATEGATING) == HRTIM_UPDATEGATING_DMABURST_UPDATE) || \ - ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN1) || \ - ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN2) || \ - ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN3) || \ - ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN1_UPDATE) || \ - ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN2_UPDATE) || \ - ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN3_UPDATE)) + (((UPDATEGATING) == HRTIM_UPDATEGATING_INDEPENDENT) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_DMABURST) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_DMABURST_UPDATE) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN1) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN2) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN3) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN1_UPDATE) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN2_UPDATE) || \ + ((UPDATEGATING) == HRTIM_UPDATEGATING_UPDEN3_UPDATE)) #define IS_HRTIM_TIMERBURSTMODE(MODE) \ - (((MODE) == HRTIM_TIMERBURSTMODE_MAINTAINCLOCK) || \ - ((MODE) == HRTIM_TIMERBURSTMODE_RESETCOUNTER)) + (((MODE) == HRTIM_TIMERBURSTMODE_MAINTAINCLOCK) || \ + ((MODE) == HRTIM_TIMERBURSTMODE_RESETCOUNTER)) #define IS_HRTIM_UPDATEONREPETITION(UPDATEONREPETITION) \ - (((UPDATEONREPETITION) == HRTIM_UPDATEONREPETITION_DISABLED) || \ - ((UPDATEONREPETITION) == HRTIM_UPDATEONREPETITION_ENABLED)) + (((UPDATEONREPETITION) == HRTIM_UPDATEONREPETITION_DISABLED) || \ + ((UPDATEONREPETITION) == HRTIM_UPDATEONREPETITION_ENABLED)) #define IS_HRTIM_TIMPUSHPULLMODE(TIMPUSHPULLMODE)\ - (((TIMPUSHPULLMODE) == HRTIM_TIMPUSHPULLMODE_DISABLED) || \ - ((TIMPUSHPULLMODE) == HRTIM_TIMPUSHPULLMODE_ENABLED)) + (((TIMPUSHPULLMODE) == HRTIM_TIMPUSHPULLMODE_DISABLED) || \ + ((TIMPUSHPULLMODE) == HRTIM_TIMPUSHPULLMODE_ENABLED)) #define IS_HRTIM_TIMFAULTENABLE(TIMFAULTENABLE) (((TIMFAULTENABLE) & 0xFFFFFFE0U) == 0x00000000U) #define IS_HRTIM_TIMFAULTLOCK(TIMFAULTLOCK)\ - (((TIMFAULTLOCK) == HRTIM_TIMFAULTLOCK_READWRITE) || \ - ((TIMFAULTLOCK) == HRTIM_TIMFAULTLOCK_READONLY)) + (((TIMFAULTLOCK) == HRTIM_TIMFAULTLOCK_READWRITE) || \ + ((TIMFAULTLOCK) == HRTIM_TIMFAULTLOCK_READONLY)) #define IS_HRTIM_TIMDEADTIMEINSERTION(TIMPUSHPULLMODE, TIMDEADTIMEINSERTION)\ - ((((TIMPUSHPULLMODE) == HRTIM_TIMPUSHPULLMODE_DISABLED) && \ - ((((TIMDEADTIMEINSERTION) == HRTIM_TIMDEADTIMEINSERTION_DISABLED) || \ - ((TIMDEADTIMEINSERTION) == HRTIM_TIMDEADTIMEINSERTION_ENABLED)))) \ - || \ - (((TIMPUSHPULLMODE) == HRTIM_TIMPUSHPULLMODE_ENABLED) && \ - ((TIMDEADTIMEINSERTION) == HRTIM_TIMDEADTIMEINSERTION_DISABLED))) + ((((TIMPUSHPULLMODE) == HRTIM_TIMPUSHPULLMODE_DISABLED) && \ + ((((TIMDEADTIMEINSERTION) == HRTIM_TIMDEADTIMEINSERTION_DISABLED) || \ + ((TIMDEADTIMEINSERTION) == HRTIM_TIMDEADTIMEINSERTION_ENABLED)))) \ + || \ + (((TIMPUSHPULLMODE) == HRTIM_TIMPUSHPULLMODE_ENABLED) && \ + ((TIMDEADTIMEINSERTION) == HRTIM_TIMDEADTIMEINSERTION_DISABLED))) #define IS_HRTIM_TIMDELAYEDPROTECTION(TIMPUSHPULLMODE, TIMDELAYEDPROTECTION)\ - ((((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DISABLED) || \ - ((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_EEV6) || \ - ((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_EEV6) || \ - ((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV6) || \ - ((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_DEEV7) || \ - ((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_DEEV7) || \ - ((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV7)) \ - || \ - (((TIMPUSHPULLMODE) == HRTIM_TIMPUSHPULLMODE_ENABLED) && \ - (((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV6) || \ - ((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV7)))) + ((((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DISABLED) || \ + ((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_EEV6) || \ + ((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_EEV6) || \ + ((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV6) || \ + ((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT1_DEEV7) || \ + ((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDOUT2_DEEV7) || \ + ((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_DELAYEDBOTH_EEV7)) \ + || \ + (((TIMPUSHPULLMODE) == HRTIM_TIMPUSHPULLMODE_ENABLED) && \ + (((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV6) || \ + ((TIMDELAYEDPROTECTION) == HRTIM_TIMER_A_B_C_DELAYEDPROTECTION_BALANCED_EEV7)))) #define IS_HRTIM_TIMUPDATETRIGGER(TIMUPDATETRIGGER) (((TIMUPDATETRIGGER) & 0xFE07FFFFU) == 0x00000000U) @@ -2169,128 +2170,128 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< #define IS_HRTIM_TIMUPDATEONRESET(TIMUPDATEONRESET) \ - (((TIMUPDATEONRESET) == HRTIM_TIMUPDATEONRESET_DISABLED) || \ - ((TIMUPDATEONRESET) == HRTIM_TIMUPDATEONRESET_ENABLED)) + (((TIMUPDATEONRESET) == HRTIM_TIMUPDATEONRESET_DISABLED) || \ + ((TIMUPDATEONRESET) == HRTIM_TIMUPDATEONRESET_ENABLED)) #define IS_HRTIM_AUTODELAYEDMODE(AUTODELAYEDMODE)\ - (((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_REGULAR) || \ - ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_NOTIMEOUT) || \ - ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP1) || \ - ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP3)) + (((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_REGULAR) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_NOTIMEOUT) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP1) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP3)) /* Auto delayed mode is only available for compare units 2 and 4U */ #define IS_HRTIM_COMPAREUNIT_AUTODELAYEDMODE(COMPAREUNIT, AUTODELAYEDMODE) \ - ((((COMPAREUNIT) == HRTIM_COMPAREUNIT_2) && \ - (((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_REGULAR) || \ - ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_NOTIMEOUT) || \ - ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP1) || \ - ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP3))) \ - || \ - (((COMPAREUNIT) == HRTIM_COMPAREUNIT_4) && \ - (((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_REGULAR) || \ - ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_NOTIMEOUT) || \ - ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP1) || \ - ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP3)))) + ((((COMPAREUNIT) == HRTIM_COMPAREUNIT_2) && \ + (((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_REGULAR) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_NOTIMEOUT) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP1) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP3))) \ + || \ + (((COMPAREUNIT) == HRTIM_COMPAREUNIT_4) && \ + (((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_REGULAR) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_NOTIMEOUT) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP1) || \ + ((AUTODELAYEDMODE) == HRTIM_AUTODELAYEDMODE_AUTODELAYED_TIMEOUTCMP3)))) #define IS_HRTIM_OUTPUTPOLARITY(OUTPUTPOLARITY)\ - (((OUTPUTPOLARITY) == HRTIM_OUTPUTPOLARITY_HIGH) || \ - ((OUTPUTPOLARITY) == HRTIM_OUTPUTPOLARITY_LOW)) + (((OUTPUTPOLARITY) == HRTIM_OUTPUTPOLARITY_HIGH) || \ + ((OUTPUTPOLARITY) == HRTIM_OUTPUTPOLARITY_LOW)) #define IS_HRTIM_OUTPUTPULSE(OUTPUTPULSE) ((OUTPUTPULSE) <= 0x0000FFFFU) #define IS_HRTIM_OUTPUTSET(OUTPUTSET)\ - (((OUTPUTSET) == HRTIM_OUTPUTSET_NONE) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_RESYNC) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMPER) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMCMP1) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMCMP2) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMCMP3) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMCMP4) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_MASTERPER) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_MASTERCMP1) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_MASTERCMP2) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_MASTERCMP3) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_MASTERCMP4) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_1) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_2) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_3) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_4) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_5) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_6) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_7) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_8) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_9) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_1) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_2) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_3) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_4) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_5) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_6) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_7) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_8) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_9) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_10) || \ - ((OUTPUTSET) == HRTIM_OUTPUTSET_UPDATE)) + (((OUTPUTSET) == HRTIM_OUTPUTSET_NONE) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_RESYNC) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMPER) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMCMP1) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMCMP2) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMCMP3) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMCMP4) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_MASTERPER) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_MASTERCMP1) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_MASTERCMP2) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_MASTERCMP3) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_MASTERCMP4) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_1) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_2) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_3) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_4) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_5) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_6) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_7) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_8) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_TIMEV_9) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_1) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_2) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_3) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_4) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_5) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_6) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_7) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_8) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_9) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_EEV_10) || \ + ((OUTPUTSET) == HRTIM_OUTPUTSET_UPDATE)) #define IS_HRTIM_OUTPUTRESET(OUTPUTRESET)\ - (((OUTPUTRESET) == HRTIM_OUTPUTRESET_NONE) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_RESYNC) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMPER) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMCMP1) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMCMP2) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMCMP3) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMCMP4) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_MASTERPER) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_MASTERCMP1) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_MASTERCMP2) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_MASTERCMP3) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_MASTERCMP4) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_1) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_2) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_3) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_4) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_5) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_6) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_7) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_8) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_9) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_1) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_2) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_3) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_4) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_5) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_6) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_7) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_8) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_9) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_10) || \ - ((OUTPUTRESET) == HRTIM_OUTPUTRESET_UPDATE)) + (((OUTPUTRESET) == HRTIM_OUTPUTRESET_NONE) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_RESYNC) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMPER) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMCMP1) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMCMP2) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMCMP3) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMCMP4) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_MASTERPER) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_MASTERCMP1) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_MASTERCMP2) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_MASTERCMP3) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_MASTERCMP4) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_1) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_2) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_3) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_4) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_5) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_6) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_7) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_8) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_TIMEV_9) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_1) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_2) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_3) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_4) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_5) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_6) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_7) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_8) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_9) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_EEV_10) || \ + ((OUTPUTRESET) == HRTIM_OUTPUTRESET_UPDATE)) #define IS_HRTIM_OUTPUTIDLEMODE(OUTPUTIDLEMODE)\ - (((OUTPUTIDLEMODE) == HRTIM_OUTPUTIDLEMODE_NONE) || \ - ((OUTPUTIDLEMODE) == HRTIM_OUTPUTIDLEMODE_IDLE)) + (((OUTPUTIDLEMODE) == HRTIM_OUTPUTIDLEMODE_NONE) || \ + ((OUTPUTIDLEMODE) == HRTIM_OUTPUTIDLEMODE_IDLE)) #define IS_HRTIM_OUTPUTIDLELEVEL(OUTPUTIDLELEVEL)\ - (((OUTPUTIDLELEVEL) == HRTIM_OUTPUTIDLELEVEL_INACTIVE) || \ - ((OUTPUTIDLELEVEL) == HRTIM_OUTPUTIDLELEVEL_ACTIVE)) + (((OUTPUTIDLELEVEL) == HRTIM_OUTPUTIDLELEVEL_INACTIVE) || \ + ((OUTPUTIDLELEVEL) == HRTIM_OUTPUTIDLELEVEL_ACTIVE)) #define IS_HRTIM_OUTPUTFAULTLEVEL(OUTPUTFAULTLEVEL)\ - (((OUTPUTFAULTLEVEL) == HRTIM_OUTPUTFAULTLEVEL_NONE) || \ - ((OUTPUTFAULTLEVEL) == HRTIM_OUTPUTFAULTLEVEL_ACTIVE) || \ - ((OUTPUTFAULTLEVEL) == HRTIM_OUTPUTFAULTLEVEL_INACTIVE) || \ - ((OUTPUTFAULTLEVEL) == HRTIM_OUTPUTFAULTLEVEL_HIGHZ)) + (((OUTPUTFAULTLEVEL) == HRTIM_OUTPUTFAULTLEVEL_NONE) || \ + ((OUTPUTFAULTLEVEL) == HRTIM_OUTPUTFAULTLEVEL_ACTIVE) || \ + ((OUTPUTFAULTLEVEL) == HRTIM_OUTPUTFAULTLEVEL_INACTIVE) || \ + ((OUTPUTFAULTLEVEL) == HRTIM_OUTPUTFAULTLEVEL_HIGHZ)) #define IS_HRTIM_OUTPUTCHOPPERMODE(OUTPUTCHOPPERMODE)\ - (((OUTPUTCHOPPERMODE) == HRTIM_OUTPUTCHOPPERMODE_DISABLED) || \ - ((OUTPUTCHOPPERMODE) == HRTIM_OUTPUTCHOPPERMODE_ENABLED)) + (((OUTPUTCHOPPERMODE) == HRTIM_OUTPUTCHOPPERMODE_DISABLED) || \ + ((OUTPUTCHOPPERMODE) == HRTIM_OUTPUTCHOPPERMODE_ENABLED)) #define IS_HRTIM_OUTPUTBURSTMODEENTRY(OUTPUTBURSTMODEENTRY)\ - (((OUTPUTBURSTMODEENTRY) == HRTIM_OUTPUTBURSTMODEENTRY_REGULAR) || \ - ((OUTPUTBURSTMODEENTRY) == HRTIM_OUTPUTBURSTMODEENTRY_DELAYED)) + (((OUTPUTBURSTMODEENTRY) == HRTIM_OUTPUTBURSTMODEENTRY_REGULAR) || \ + ((OUTPUTBURSTMODEENTRY) == HRTIM_OUTPUTBURSTMODEENTRY_DELAYED)) #define IS_HRTIM_TIMER_CAPTURETRIGGER(TIMER, CAPTURETRIGGER) \ - (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_NONE) || \ + (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_NONE) || \ ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_UPDATE) || \ ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_EEV_1) || \ ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_EEV_2) || \ @@ -2304,420 +2305,420 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_EEV_10) \ || \ (((TIMER) == HRTIM_TIMERINDEX_TIMER_A) && \ - (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP2) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP2) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP2) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP2))) \ - || \ + (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP2))) \ + || \ (((TIMER) == HRTIM_TIMERINDEX_TIMER_B) && \ - (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP2) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP2) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP2) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP2))) \ - || \ + (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP2))) \ + || \ (((TIMER) == HRTIM_TIMERINDEX_TIMER_C) && \ - (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP2) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP2) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP2) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP2))) \ - || \ + (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP2))) \ + || \ (((TIMER) == HRTIM_TIMERINDEX_TIMER_D) && \ - (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP2) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP2) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP2) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP2))) \ - || \ + (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TE1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERE_CMP2))) \ + || \ (((TIMER) == HRTIM_TIMERINDEX_TIMER_E) && \ - (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP2) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP2) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP2) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_SET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_RESET) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP1) || \ - ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP2)))) + (((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TA1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERA_CMP2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TB1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERB_CMP2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TC1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERC_CMP2) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_SET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TD1_RESET) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP1) || \ + ((CAPTURETRIGGER) == HRTIM_CAPTURETRIGGER_TIMERD_CMP2)))) #define IS_HRTIM_TIMEVENTFILTER(TIMEVENTFILTER)\ - (((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_NONE) || \ - ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGCMP1) || \ - ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGCMP2) || \ - ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGCMP3) || \ - ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGCMP4) || \ - ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR1) || \ - ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR2) || \ - ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR3) || \ - ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR4) || \ - ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR5) || \ - ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR6) || \ - ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR7) || \ - ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR8) || \ - ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_WINDOWINGCMP2) || \ - ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_WINDOWINGCMP3) || \ - ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_WINDOWINGTIM)) + (((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_NONE) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGCMP1) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGCMP2) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGCMP3) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGCMP4) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR1) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR2) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR3) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR4) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR5) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR6) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR7) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_BLANKINGFLTR8) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_WINDOWINGCMP2) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_WINDOWINGCMP3) || \ + ((TIMEVENTFILTER) == HRTIM_TIMEVENTFILTER_WINDOWINGTIM)) #define IS_HRTIM_TIMEVENTLATCH(TIMEVENTLATCH)\ - (((TIMEVENTLATCH) == HRTIM_TIMEVENTLATCH_DISABLED) || \ - ((TIMEVENTLATCH) == HRTIM_TIMEVENTLATCH_ENABLED)) + (((TIMEVENTLATCH) == HRTIM_TIMEVENTLATCH_DISABLED) || \ + ((TIMEVENTLATCH) == HRTIM_TIMEVENTLATCH_ENABLED)) #define IS_HRTIM_TIMDEADTIME_PRESCALERRATIO(PRESCALERRATIO)\ - (((PRESCALERRATIO) == HRTIM_TIMDEADTIME_PRESCALERRATIO_DIV1) || \ - ((PRESCALERRATIO) == HRTIM_TIMDEADTIME_PRESCALERRATIO_DIV2) || \ - ((PRESCALERRATIO) == HRTIM_TIMDEADTIME_PRESCALERRATIO_DIV4) || \ - ((PRESCALERRATIO) == HRTIM_TIMDEADTIME_PRESCALERRATIO_DIV8) || \ - ((PRESCALERRATIO) == HRTIM_TIMDEADTIME_PRESCALERRATIO_DIV16)) + (((PRESCALERRATIO) == HRTIM_TIMDEADTIME_PRESCALERRATIO_DIV1) || \ + ((PRESCALERRATIO) == HRTIM_TIMDEADTIME_PRESCALERRATIO_DIV2) || \ + ((PRESCALERRATIO) == HRTIM_TIMDEADTIME_PRESCALERRATIO_DIV4) || \ + ((PRESCALERRATIO) == HRTIM_TIMDEADTIME_PRESCALERRATIO_DIV8) || \ + ((PRESCALERRATIO) == HRTIM_TIMDEADTIME_PRESCALERRATIO_DIV16)) #define IS_HRTIM_TIMDEADTIME_RISINGSIGN(RISINGSIGN)\ - (((RISINGSIGN) == HRTIM_TIMDEADTIME_RISINGSIGN_POSITIVE) || \ - ((RISINGSIGN) == HRTIM_TIMDEADTIME_RISINGSIGN_NEGATIVE)) + (((RISINGSIGN) == HRTIM_TIMDEADTIME_RISINGSIGN_POSITIVE) || \ + ((RISINGSIGN) == HRTIM_TIMDEADTIME_RISINGSIGN_NEGATIVE)) #define IS_HRTIM_TIMDEADTIME_RISINGLOCK(RISINGLOCK)\ - (((RISINGLOCK) == HRTIM_TIMDEADTIME_RISINGLOCK_WRITE) || \ - ((RISINGLOCK) == HRTIM_TIMDEADTIME_RISINGLOCK_READONLY)) + (((RISINGLOCK) == HRTIM_TIMDEADTIME_RISINGLOCK_WRITE) || \ + ((RISINGLOCK) == HRTIM_TIMDEADTIME_RISINGLOCK_READONLY)) #define IS_HRTIM_TIMDEADTIME_RISINGSIGNLOCK(RISINGSIGNLOCK)\ - (((RISINGSIGNLOCK) == HRTIM_TIMDEADTIME_RISINGSIGNLOCK_WRITE) || \ - ((RISINGSIGNLOCK) == HRTIM_TIMDEADTIME_RISINGSIGNLOCK_READONLY)) + (((RISINGSIGNLOCK) == HRTIM_TIMDEADTIME_RISINGSIGNLOCK_WRITE) || \ + ((RISINGSIGNLOCK) == HRTIM_TIMDEADTIME_RISINGSIGNLOCK_READONLY)) #define IS_HRTIM_TIMDEADTIME_FALLINGSIGN(FALLINGSIGN)\ - (((FALLINGSIGN) == HRTIM_TIMDEADTIME_FALLINGSIGN_POSITIVE) || \ - ((FALLINGSIGN) == HRTIM_TIMDEADTIME_FALLINGSIGN_NEGATIVE)) + (((FALLINGSIGN) == HRTIM_TIMDEADTIME_FALLINGSIGN_POSITIVE) || \ + ((FALLINGSIGN) == HRTIM_TIMDEADTIME_FALLINGSIGN_NEGATIVE)) #define IS_HRTIM_TIMDEADTIME_FALLINGLOCK(FALLINGLOCK)\ - (((FALLINGLOCK) == HRTIM_TIMDEADTIME_FALLINGLOCK_WRITE) || \ - ((FALLINGLOCK) == HRTIM_TIMDEADTIME_FALLINGLOCK_READONLY)) + (((FALLINGLOCK) == HRTIM_TIMDEADTIME_FALLINGLOCK_WRITE) || \ + ((FALLINGLOCK) == HRTIM_TIMDEADTIME_FALLINGLOCK_READONLY)) #define IS_HRTIM_TIMDEADTIME_FALLINGSIGNLOCK(FALLINGSIGNLOCK)\ - (((FALLINGSIGNLOCK) == HRTIM_TIMDEADTIME_FALLINGSIGNLOCK_WRITE) || \ - ((FALLINGSIGNLOCK) == HRTIM_TIMDEADTIME_FALLINGSIGNLOCK_READONLY)) + (((FALLINGSIGNLOCK) == HRTIM_TIMDEADTIME_FALLINGSIGNLOCK_WRITE) || \ + ((FALLINGSIGNLOCK) == HRTIM_TIMDEADTIME_FALLINGSIGNLOCK_READONLY)) #define IS_HRTIM_CHOPPER_PRESCALERRATIO(PRESCALERRATIO)\ - (((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV16) || \ - ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV32) || \ - ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV48) || \ - ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV64) || \ - ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV80) || \ - ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV96) || \ - ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV112) || \ - ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV128) || \ - ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV144) || \ - ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV160) || \ - ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV176) || \ - ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV192) || \ - ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV208) || \ - ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV224) || \ - ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV240) || \ - ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV256)) + (((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV16) || \ + ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV32) || \ + ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV48) || \ + ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV64) || \ + ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV80) || \ + ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV96) || \ + ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV112) || \ + ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV128) || \ + ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV144) || \ + ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV160) || \ + ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV176) || \ + ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV192) || \ + ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV208) || \ + ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV224) || \ + ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV240) || \ + ((PRESCALERRATIO) == HRTIM_CHOPPER_PRESCALERRATIO_DIV256)) #define IS_HRTIM_CHOPPER_DUTYCYCLE(DUTYCYCLE)\ - (((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_0) || \ - ((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_125) || \ - ((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_250) || \ - ((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_375) || \ - ((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_500) || \ - ((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_625) || \ - ((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_750) || \ - ((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_875)) + (((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_0) || \ + ((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_125) || \ + ((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_250) || \ + ((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_375) || \ + ((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_500) || \ + ((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_625) || \ + ((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_750) || \ + ((DUTYCYCLE) == HRTIM_CHOPPER_DUTYCYCLE_875)) #define IS_HRTIM_CHOPPER_PULSEWIDTH(PULSEWIDTH)\ - (((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_16) || \ - ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_32) || \ - ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_48) || \ - ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_64) || \ - ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_80) || \ - ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_96) || \ - ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_112) || \ - ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_128) || \ - ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_144) || \ - ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_160) || \ - ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_176) || \ - ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_192) || \ - ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_208) || \ - ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_224) || \ - ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_240) || \ - ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_256)) + (((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_16) || \ + ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_32) || \ + ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_48) || \ + ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_64) || \ + ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_80) || \ + ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_96) || \ + ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_112) || \ + ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_128) || \ + ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_144) || \ + ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_160) || \ + ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_176) || \ + ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_192) || \ + ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_208) || \ + ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_224) || \ + ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_240) || \ + ((PULSEWIDTH) == HRTIM_CHOPPER_PULSEWIDTH_256)) #define IS_HRTIM_SYNCINPUTSOURCE(SYNCINPUTSOURCE)\ - (((SYNCINPUTSOURCE) == HRTIM_SYNCINPUTSOURCE_NONE) || \ - ((SYNCINPUTSOURCE) == HRTIM_SYNCINPUTSOURCE_INTERNALEVENT) || \ - ((SYNCINPUTSOURCE) == HRTIM_SYNCINPUTSOURCE_EXTERNALEVENT)) + (((SYNCINPUTSOURCE) == HRTIM_SYNCINPUTSOURCE_NONE) || \ + ((SYNCINPUTSOURCE) == HRTIM_SYNCINPUTSOURCE_INTERNALEVENT) || \ + ((SYNCINPUTSOURCE) == HRTIM_SYNCINPUTSOURCE_EXTERNALEVENT)) #define IS_HRTIM_SYNCOUTPUTSOURCE(SYNCOUTPUTSOURCE)\ - (((SYNCOUTPUTSOURCE) == HRTIM_SYNCOUTPUTSOURCE_MASTER_START) || \ - ((SYNCOUTPUTSOURCE) == HRTIM_SYNCOUTPUTSOURCE_MASTER_CMP1) || \ - ((SYNCOUTPUTSOURCE) == HRTIM_SYNCOUTPUTSOURCE_TIMA_START) || \ - ((SYNCOUTPUTSOURCE) == HRTIM_SYNCOUTPUTSOURCE_TIMA_CMP1)) + (((SYNCOUTPUTSOURCE) == HRTIM_SYNCOUTPUTSOURCE_MASTER_START) || \ + ((SYNCOUTPUTSOURCE) == HRTIM_SYNCOUTPUTSOURCE_MASTER_CMP1) || \ + ((SYNCOUTPUTSOURCE) == HRTIM_SYNCOUTPUTSOURCE_TIMA_START) || \ + ((SYNCOUTPUTSOURCE) == HRTIM_SYNCOUTPUTSOURCE_TIMA_CMP1)) #define IS_HRTIM_SYNCOUTPUTPOLARITY(SYNCOUTPUTPOLARITY)\ - (((SYNCOUTPUTPOLARITY) == HRTIM_SYNCOUTPUTPOLARITY_NONE) || \ - ((SYNCOUTPUTPOLARITY) == HRTIM_SYNCOUTPUTPOLARITY_POSITIVE) || \ - ((SYNCOUTPUTPOLARITY) == HRTIM_SYNCOUTPUTPOLARITY_NEGATIVE)) + (((SYNCOUTPUTPOLARITY) == HRTIM_SYNCOUTPUTPOLARITY_NONE) || \ + ((SYNCOUTPUTPOLARITY) == HRTIM_SYNCOUTPUTPOLARITY_POSITIVE) || \ + ((SYNCOUTPUTPOLARITY) == HRTIM_SYNCOUTPUTPOLARITY_NEGATIVE)) #define IS_HRTIM_EVENTSRC(EVENTSRC)\ - (((EVENTSRC) == HRTIM_EVENTSRC_1) || \ - ((EVENTSRC) == HRTIM_EVENTSRC_2) || \ - ((EVENTSRC) == HRTIM_EVENTSRC_3) || \ - ((EVENTSRC) == HRTIM_EVENTSRC_4)) + (((EVENTSRC) == HRTIM_EVENTSRC_1) || \ + ((EVENTSRC) == HRTIM_EVENTSRC_2) || \ + ((EVENTSRC) == HRTIM_EVENTSRC_3) || \ + ((EVENTSRC) == HRTIM_EVENTSRC_4)) #define IS_HRTIM_EVENTPOLARITY(EVENTSENSITIVITY, EVENTPOLARITY)\ - ((((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_LEVEL) && \ - (((EVENTPOLARITY) == HRTIM_EVENTPOLARITY_HIGH) || \ - ((EVENTPOLARITY) == HRTIM_EVENTPOLARITY_LOW))) \ - || \ - (((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_RISINGEDGE) || \ - ((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_FALLINGEDGE)|| \ - ((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_BOTHEDGES))) + ((((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_LEVEL) && \ + (((EVENTPOLARITY) == HRTIM_EVENTPOLARITY_HIGH) || \ + ((EVENTPOLARITY) == HRTIM_EVENTPOLARITY_LOW))) \ + || \ + (((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_RISINGEDGE) || \ + ((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_FALLINGEDGE)|| \ + ((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_BOTHEDGES))) #define IS_HRTIM_EVENTSENSITIVITY(EVENTSENSITIVITY)\ - (((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_LEVEL) || \ - ((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_RISINGEDGE) || \ - ((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_FALLINGEDGE) || \ - ((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_BOTHEDGES)) + (((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_LEVEL) || \ + ((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_RISINGEDGE) || \ + ((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_FALLINGEDGE) || \ + ((EVENTSENSITIVITY) == HRTIM_EVENTSENSITIVITY_BOTHEDGES)) #define IS_HRTIM_EVENTFASTMODE(EVENT, FASTMODE)\ - (((((EVENT) == HRTIM_EVENT_1) || \ - ((EVENT) == HRTIM_EVENT_2) || \ - ((EVENT) == HRTIM_EVENT_3) || \ - ((EVENT) == HRTIM_EVENT_4) || \ - ((EVENT) == HRTIM_EVENT_5)) && \ - (((FASTMODE) == HRTIM_EVENTFASTMODE_ENABLE) || \ - ((FASTMODE) == HRTIM_EVENTFASTMODE_DISABLE))) \ - || \ - (((EVENT) == HRTIM_EVENT_6) || \ - ((EVENT) == HRTIM_EVENT_7) || \ - ((EVENT) == HRTIM_EVENT_8) || \ - ((EVENT) == HRTIM_EVENT_9) || \ - ((EVENT) == HRTIM_EVENT_10))) + (((((EVENT) == HRTIM_EVENT_1) || \ + ((EVENT) == HRTIM_EVENT_2) || \ + ((EVENT) == HRTIM_EVENT_3) || \ + ((EVENT) == HRTIM_EVENT_4) || \ + ((EVENT) == HRTIM_EVENT_5)) && \ + (((FASTMODE) == HRTIM_EVENTFASTMODE_ENABLE) || \ + ((FASTMODE) == HRTIM_EVENTFASTMODE_DISABLE))) \ + || \ + (((EVENT) == HRTIM_EVENT_6) || \ + ((EVENT) == HRTIM_EVENT_7) || \ + ((EVENT) == HRTIM_EVENT_8) || \ + ((EVENT) == HRTIM_EVENT_9) || \ + ((EVENT) == HRTIM_EVENT_10))) #define IS_HRTIM_EVENTFILTER(EVENT, FILTER)\ - ((((EVENT) == HRTIM_EVENT_1) || \ - ((EVENT) == HRTIM_EVENT_2) || \ - ((EVENT) == HRTIM_EVENT_3) || \ - ((EVENT) == HRTIM_EVENT_4) || \ - ((EVENT) == HRTIM_EVENT_5)) \ - || \ - ((((EVENT) == HRTIM_EVENT_6) || \ - ((EVENT) == HRTIM_EVENT_7) || \ - ((EVENT) == HRTIM_EVENT_8) || \ - ((EVENT) == HRTIM_EVENT_9) || \ - ((EVENT) == HRTIM_EVENT_10)) && \ - (((FILTER) == HRTIM_EVENTFILTER_NONE) || \ - ((FILTER) == HRTIM_EVENTFILTER_1) || \ - ((FILTER) == HRTIM_EVENTFILTER_2) || \ - ((FILTER) == HRTIM_EVENTFILTER_3) || \ - ((FILTER) == HRTIM_EVENTFILTER_4) || \ - ((FILTER) == HRTIM_EVENTFILTER_5) || \ - ((FILTER) == HRTIM_EVENTFILTER_6) || \ - ((FILTER) == HRTIM_EVENTFILTER_7) || \ - ((FILTER) == HRTIM_EVENTFILTER_8) || \ - ((FILTER) == HRTIM_EVENTFILTER_9) || \ - ((FILTER) == HRTIM_EVENTFILTER_10) || \ - ((FILTER) == HRTIM_EVENTFILTER_11) || \ - ((FILTER) == HRTIM_EVENTFILTER_12) || \ - ((FILTER) == HRTIM_EVENTFILTER_13) || \ - ((FILTER) == HRTIM_EVENTFILTER_14) || \ - ((FILTER) == HRTIM_EVENTFILTER_15)))) + ((((EVENT) == HRTIM_EVENT_1) || \ + ((EVENT) == HRTIM_EVENT_2) || \ + ((EVENT) == HRTIM_EVENT_3) || \ + ((EVENT) == HRTIM_EVENT_4) || \ + ((EVENT) == HRTIM_EVENT_5)) \ + || \ + ((((EVENT) == HRTIM_EVENT_6) || \ + ((EVENT) == HRTIM_EVENT_7) || \ + ((EVENT) == HRTIM_EVENT_8) || \ + ((EVENT) == HRTIM_EVENT_9) || \ + ((EVENT) == HRTIM_EVENT_10)) && \ + (((FILTER) == HRTIM_EVENTFILTER_NONE) || \ + ((FILTER) == HRTIM_EVENTFILTER_1) || \ + ((FILTER) == HRTIM_EVENTFILTER_2) || \ + ((FILTER) == HRTIM_EVENTFILTER_3) || \ + ((FILTER) == HRTIM_EVENTFILTER_4) || \ + ((FILTER) == HRTIM_EVENTFILTER_5) || \ + ((FILTER) == HRTIM_EVENTFILTER_6) || \ + ((FILTER) == HRTIM_EVENTFILTER_7) || \ + ((FILTER) == HRTIM_EVENTFILTER_8) || \ + ((FILTER) == HRTIM_EVENTFILTER_9) || \ + ((FILTER) == HRTIM_EVENTFILTER_10) || \ + ((FILTER) == HRTIM_EVENTFILTER_11) || \ + ((FILTER) == HRTIM_EVENTFILTER_12) || \ + ((FILTER) == HRTIM_EVENTFILTER_13) || \ + ((FILTER) == HRTIM_EVENTFILTER_14) || \ + ((FILTER) == HRTIM_EVENTFILTER_15)))) #define IS_HRTIM_EVENTPRESCALER(EVENTPRESCALER)\ - (((EVENTPRESCALER) == HRTIM_EVENTPRESCALER_DIV1) || \ - ((EVENTPRESCALER) == HRTIM_EVENTPRESCALER_DIV2) || \ - ((EVENTPRESCALER) == HRTIM_EVENTPRESCALER_DIV4) || \ - ((EVENTPRESCALER) == HRTIM_EVENTPRESCALER_DIV8)) + (((EVENTPRESCALER) == HRTIM_EVENTPRESCALER_DIV1) || \ + ((EVENTPRESCALER) == HRTIM_EVENTPRESCALER_DIV2) || \ + ((EVENTPRESCALER) == HRTIM_EVENTPRESCALER_DIV4) || \ + ((EVENTPRESCALER) == HRTIM_EVENTPRESCALER_DIV8)) #define IS_HRTIM_FAULTSOURCE(FAULTSOURCE)\ - (((FAULTSOURCE) == HRTIM_FAULTSOURCE_DIGITALINPUT) || \ - ((FAULTSOURCE) == HRTIM_FAULTSOURCE_INTERNAL)) + (((FAULTSOURCE) == HRTIM_FAULTSOURCE_DIGITALINPUT) || \ + ((FAULTSOURCE) == HRTIM_FAULTSOURCE_INTERNAL)) #define IS_HRTIM_FAULTPOLARITY(HRTIM_FAULTPOLARITY)\ - (((HRTIM_FAULTPOLARITY) == HRTIM_FAULTPOLARITY_LOW) || \ - ((HRTIM_FAULTPOLARITY) == HRTIM_FAULTPOLARITY_HIGH)) + (((HRTIM_FAULTPOLARITY) == HRTIM_FAULTPOLARITY_LOW) || \ + ((HRTIM_FAULTPOLARITY) == HRTIM_FAULTPOLARITY_HIGH)) #define IS_HRTIM_FAULTMODECTL(FAULTMODECTL)\ - (((FAULTMODECTL) == HRTIM_FAULTMODECTL_DISABLED) || \ - ((FAULTMODECTL) == HRTIM_FAULTMODECTL_ENABLED)) + (((FAULTMODECTL) == HRTIM_FAULTMODECTL_DISABLED) || \ + ((FAULTMODECTL) == HRTIM_FAULTMODECTL_ENABLED)) #define IS_HRTIM_FAULTFILTER(FAULTFILTER)\ - (((FAULTFILTER) == HRTIM_FAULTFILTER_NONE) || \ - ((FAULTFILTER) == HRTIM_FAULTFILTER_1) || \ - ((FAULTFILTER) == HRTIM_FAULTFILTER_2) || \ - ((FAULTFILTER) == HRTIM_FAULTFILTER_3) || \ - ((FAULTFILTER) == HRTIM_FAULTFILTER_4) || \ - ((FAULTFILTER) == HRTIM_FAULTFILTER_5) || \ - ((FAULTFILTER) == HRTIM_FAULTFILTER_6) || \ - ((FAULTFILTER) == HRTIM_FAULTFILTER_7) || \ - ((FAULTFILTER) == HRTIM_FAULTFILTER_8) || \ - ((FAULTFILTER) == HRTIM_FAULTFILTER_9) || \ - ((FAULTFILTER) == HRTIM_FAULTFILTER_10) || \ - ((FAULTFILTER) == HRTIM_FAULTFILTER_11) || \ - ((FAULTFILTER) == HRTIM_FAULTFILTER_12) || \ - ((FAULTFILTER) == HRTIM_FAULTFILTER_13) || \ - ((FAULTFILTER) == HRTIM_FAULTFILTER_14) || \ - ((FAULTFILTER) == HRTIM_FAULTFILTER_15)) + (((FAULTFILTER) == HRTIM_FAULTFILTER_NONE) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_1) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_2) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_3) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_4) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_5) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_6) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_7) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_8) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_9) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_10) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_11) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_12) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_13) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_14) || \ + ((FAULTFILTER) == HRTIM_FAULTFILTER_15)) #define IS_HRTIM_FAULTLOCK(FAULTLOCK)\ - (((FAULTLOCK) == HRTIM_FAULTLOCK_READWRITE) || \ - ((FAULTLOCK) == HRTIM_FAULTLOCK_READONLY)) + (((FAULTLOCK) == HRTIM_FAULTLOCK_READWRITE) || \ + ((FAULTLOCK) == HRTIM_FAULTLOCK_READONLY)) #define IS_HRTIM_FAULTPRESCALER(FAULTPRESCALER)\ - (((FAULTPRESCALER) == HRTIM_FAULTPRESCALER_DIV1) || \ - ((FAULTPRESCALER) == HRTIM_FAULTPRESCALER_DIV2) || \ - ((FAULTPRESCALER) == HRTIM_FAULTPRESCALER_DIV4) || \ - ((FAULTPRESCALER) == HRTIM_FAULTPRESCALER_DIV8)) + (((FAULTPRESCALER) == HRTIM_FAULTPRESCALER_DIV1) || \ + ((FAULTPRESCALER) == HRTIM_FAULTPRESCALER_DIV2) || \ + ((FAULTPRESCALER) == HRTIM_FAULTPRESCALER_DIV4) || \ + ((FAULTPRESCALER) == HRTIM_FAULTPRESCALER_DIV8)) #define IS_HRTIM_BURSTMODE(BURSTMODE)\ - (((BURSTMODE) == HRTIM_BURSTMODE_SINGLESHOT) || \ - ((BURSTMODE) == HRTIM_BURSTMODE_CONTINOUS)) + (((BURSTMODE) == HRTIM_BURSTMODE_SINGLESHOT) || \ + ((BURSTMODE) == HRTIM_BURSTMODE_CONTINOUS)) #define IS_HRTIM_BURSTMODECLOCKSOURCE(BURSTMODECLOCKSOURCE)\ - (((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_MASTER) || \ - ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIMER_A) || \ - ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIMER_B) || \ - ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIMER_C) || \ - ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIMER_D) || \ - ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIMER_E) || \ - ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIM16_OC) || \ - ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIM17_OC) || \ - ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIM7_TRGO) || \ - ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_FHRTIM)) + (((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_MASTER) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIMER_A) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIMER_B) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIMER_C) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIMER_D) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIMER_E) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIM16_OC) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIM17_OC) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_TIM7_TRGO) || \ + ((BURSTMODECLOCKSOURCE) == HRTIM_BURSTMODECLOCKSOURCE_FHRTIM)) #define IS_HRTIM_HRTIM_BURSTMODEPRESCALER(BURSTMODEPRESCALER)\ - (((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV1) || \ - ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV2) || \ - ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV4) || \ - ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV8) || \ - ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV16) || \ - ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV32) || \ - ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV64) || \ - ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV128) || \ - ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV256) || \ - ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV512) || \ - ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV1024) || \ - ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV2048) || \ - ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV4096) || \ - ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV8192) || \ - ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV16384) || \ - ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV32768)) + (((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV1) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV2) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV4) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV8) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV16) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV32) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV64) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV128) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV256) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV512) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV1024) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV2048) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV4096) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV8192) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV16384) || \ + ((BURSTMODEPRESCALER) == HRTIM_BURSTMODEPRESCALER_DIV32768)) #define IS_HRTIM_BURSTMODEPRELOAD(BURSTMODEPRELOAD)\ - (((BURSTMODEPRELOAD) == HRIM_BURSTMODEPRELOAD_DISABLED) || \ - ((BURSTMODEPRELOAD) == HRIM_BURSTMODEPRELOAD_ENABLED)) + (((BURSTMODEPRELOAD) == HRIM_BURSTMODEPRELOAD_DISABLED) || \ + ((BURSTMODEPRELOAD) == HRIM_BURSTMODEPRELOAD_ENABLED)) #define IS_HRTIM_BURSTMODETRIGGER(BURSTMODETRIGGER)\ - (((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_NONE) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_RESET) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_REPETITION) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_CMP1) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_CMP2) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_CMP3) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_CMP4) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERA_RESET) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERA_REPETITION) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERA_CMP1) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERA_CMP2) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERB_RESET) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERB_REPETITION) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERB_CMP1) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERB_CMP2) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERC_RESET) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERC_REPETITION) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERC_CMP1) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERC_CMP2) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERD_RESET) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERD_REPETITION) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERD_CMP1) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERD_CMP2) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERE_RESET) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERE_REPETITION) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERE_CMP1) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERE_CMP2) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERA_EVENT7) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERD_EVENT8) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_EVENT_7) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_EVENT_8) || \ - ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_EVENT_ONCHIP)) + (((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_NONE) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_RESET) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_REPETITION) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_CMP1) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_CMP2) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_CMP3) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_MASTER_CMP4) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERA_RESET) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERA_REPETITION) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERA_CMP1) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERA_CMP2) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERB_RESET) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERB_REPETITION) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERB_CMP1) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERB_CMP2) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERC_RESET) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERC_REPETITION) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERC_CMP1) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERC_CMP2) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERD_RESET) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERD_REPETITION) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERD_CMP1) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERD_CMP2) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERE_RESET) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERE_REPETITION) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERE_CMP1) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERE_CMP2) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERA_EVENT7) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_TIMERD_EVENT8) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_EVENT_7) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_EVENT_8) || \ + ((BURSTMODETRIGGER) == HRTIM_BURSTMODETRIGGER_EVENT_ONCHIP)) #define IS_HRTIM_ADCTRIGGERUPDATE(ADCTRIGGERUPDATE)\ - (((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_MASTER) || \ - ((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_TIMER_A) || \ - ((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_TIMER_B) || \ - ((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_TIMER_C) || \ - ((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_TIMER_D) || \ - ((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_TIMER_E)) + (((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_MASTER) || \ + ((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_TIMER_A) || \ + ((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_TIMER_B) || \ + ((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_TIMER_C) || \ + ((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_TIMER_D) || \ + ((ADCTRIGGERUPDATE) == HRTIM_ADCTRIGGERUPDATE_TIMER_E)) #define IS_HRTIM_CALIBRATIONRATE(CALIBRATIONRATE)\ - (((CALIBRATIONRATE) == HRTIM_SINGLE_CALIBRATION) || \ - ((CALIBRATIONRATE) == HRTIM_CALIBRATIONRATE_7300) || \ - ((CALIBRATIONRATE) == HRTIM_CALIBRATIONRATE_910) || \ - ((CALIBRATIONRATE) == HRTIM_CALIBRATIONRATE_114) || \ - ((CALIBRATIONRATE) == HRTIM_CALIBRATIONRATE_14)) + (((CALIBRATIONRATE) == HRTIM_SINGLE_CALIBRATION) || \ + ((CALIBRATIONRATE) == HRTIM_CALIBRATIONRATE_7300) || \ + ((CALIBRATIONRATE) == HRTIM_CALIBRATIONRATE_910) || \ + ((CALIBRATIONRATE) == HRTIM_CALIBRATIONRATE_114) || \ + ((CALIBRATIONRATE) == HRTIM_CALIBRATIONRATE_14)) #define IS_HRTIM_TIMER_BURSTDMA(TIMER, BURSTDMA) \ - ((((TIMER) == HRTIM_TIMERINDEX_MASTER) && (((BURSTDMA) & 0xFFFFC000U) == 0x00000000U)) \ - || (((TIMER) == HRTIM_TIMERINDEX_TIMER_A) && (((BURSTDMA) & 0xFFE00000U) == 0x00000000U)) \ - || (((TIMER) == HRTIM_TIMERINDEX_TIMER_B) && (((BURSTDMA) & 0xFFE00000U) == 0x00000000U)) \ - || (((TIMER) == HRTIM_TIMERINDEX_TIMER_C) && (((BURSTDMA) & 0xFFE00000U) == 0x00000000U)) \ - || (((TIMER) == HRTIM_TIMERINDEX_TIMER_D) && (((BURSTDMA) & 0xFFE00000U) == 0x00000000U)) \ - || (((TIMER) == HRTIM_TIMERINDEX_TIMER_E) && (((BURSTDMA) & 0xFFE00000U) == 0x00000000U))) + ((((TIMER) == HRTIM_TIMERINDEX_MASTER) && (((BURSTDMA) & 0xFFFFC000U) == 0x00000000U)) \ + || (((TIMER) == HRTIM_TIMERINDEX_TIMER_A) && (((BURSTDMA) & 0xFFE00000U) == 0x00000000U)) \ + || (((TIMER) == HRTIM_TIMERINDEX_TIMER_B) && (((BURSTDMA) & 0xFFE00000U) == 0x00000000U)) \ + || (((TIMER) == HRTIM_TIMERINDEX_TIMER_C) && (((BURSTDMA) & 0xFFE00000U) == 0x00000000U)) \ + || (((TIMER) == HRTIM_TIMERINDEX_TIMER_D) && (((BURSTDMA) & 0xFFE00000U) == 0x00000000U)) \ + || (((TIMER) == HRTIM_TIMERINDEX_TIMER_E) && (((BURSTDMA) & 0xFFE00000U) == 0x00000000U))) #define IS_HRTIM_BURSTMODECTL(BURSTMODECTL)\ - (((BURSTMODECTL) == HRTIM_BURSTMODECTL_DISABLED) || \ - ((BURSTMODECTL) == HRTIM_BURSTMODECTL_ENABLED)) + (((BURSTMODECTL) == HRTIM_BURSTMODECTL_DISABLED) || \ + ((BURSTMODECTL) == HRTIM_BURSTMODECTL_ENABLED)) #define IS_HRTIM_TIMERUPDATE(TIMERUPDATE) (((TIMERUPDATE) & 0xFFFFFFC0U) == 0x00000000U) @@ -2750,10 +2751,10 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< */ #if (USE_HAL_HRTIM_REGISTER_CALLBACKS == 1) #define __HAL_HRTIM_RESET_HANDLE_STATE(__HANDLE__) do{ \ - (__HANDLE__)->State = HAL_HRTIM_STATE_RESET; \ - (__HANDLE__)->MspInitCallback = NULL; \ - (__HANDLE__)->MspDeInitCallback = NULL; \ - } while(0) + (__HANDLE__)->State = HAL_HRTIM_STATE_RESET; \ + (__HANDLE__)->MspInitCallback = NULL; \ + (__HANDLE__)->MspDeInitCallback = NULL; \ + } while(0) #else #define __HAL_HRTIM_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_HRTIM_STATE_RESET) #endif @@ -2782,44 +2783,44 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< #define __HAL_HRTIM_DISABLE(__HANDLE__, __TIMERS__)\ do {\ if (((__TIMERS__) & HRTIM_TIMERID_MASTER) == HRTIM_TIMERID_MASTER)\ - {\ - ((__HANDLE__)->Instance->sMasterRegs.MCR &= ~HRTIM_TIMERID_MASTER);\ - }\ + {\ + ((__HANDLE__)->Instance->sMasterRegs.MCR &= ~HRTIM_TIMERID_MASTER);\ + }\ if (((__TIMERS__) & HRTIM_TIMERID_TIMER_A) == HRTIM_TIMERID_TIMER_A)\ + {\ + if (((__HANDLE__)->Instance->sCommonRegs.OENR & HRTIM_TAOEN_MASK) == (uint32_t)RESET)\ {\ - if (((__HANDLE__)->Instance->sCommonRegs.OENR & HRTIM_TAOEN_MASK) == (uint32_t)RESET)\ - {\ - ((__HANDLE__)->Instance->sMasterRegs.MCR &= ~HRTIM_TIMERID_TIMER_A);\ - }\ + ((__HANDLE__)->Instance->sMasterRegs.MCR &= ~HRTIM_TIMERID_TIMER_A);\ }\ + }\ if (((__TIMERS__) & HRTIM_TIMERID_TIMER_B) == HRTIM_TIMERID_TIMER_B)\ + {\ + if (((__HANDLE__)->Instance->sCommonRegs.OENR & HRTIM_TBOEN_MASK) == (uint32_t)RESET)\ {\ - if (((__HANDLE__)->Instance->sCommonRegs.OENR & HRTIM_TBOEN_MASK) == (uint32_t)RESET)\ - {\ - ((__HANDLE__)->Instance->sMasterRegs.MCR &= ~HRTIM_TIMERID_TIMER_B);\ - }\ + ((__HANDLE__)->Instance->sMasterRegs.MCR &= ~HRTIM_TIMERID_TIMER_B);\ }\ + }\ if (((__TIMERS__) & HRTIM_TIMERID_TIMER_C) == HRTIM_TIMERID_TIMER_C)\ + {\ + if (((__HANDLE__)->Instance->sCommonRegs.OENR & HRTIM_TCOEN_MASK) == (uint32_t)RESET)\ {\ - if (((__HANDLE__)->Instance->sCommonRegs.OENR & HRTIM_TCOEN_MASK) == (uint32_t)RESET)\ - {\ - ((__HANDLE__)->Instance->sMasterRegs.MCR &= ~HRTIM_TIMERID_TIMER_C);\ - }\ + ((__HANDLE__)->Instance->sMasterRegs.MCR &= ~HRTIM_TIMERID_TIMER_C);\ }\ + }\ if (((__TIMERS__) & HRTIM_TIMERID_TIMER_D) == HRTIM_TIMERID_TIMER_D)\ + {\ + if (((__HANDLE__)->Instance->sCommonRegs.OENR & HRTIM_TDOEN_MASK) == (uint32_t)RESET)\ {\ - if (((__HANDLE__)->Instance->sCommonRegs.OENR & HRTIM_TDOEN_MASK) == (uint32_t)RESET)\ - {\ - ((__HANDLE__)->Instance->sMasterRegs.MCR &= ~HRTIM_TIMERID_TIMER_D);\ - }\ + ((__HANDLE__)->Instance->sMasterRegs.MCR &= ~HRTIM_TIMERID_TIMER_D);\ }\ + }\ if (((__TIMERS__) & HRTIM_TIMERID_TIMER_E) == HRTIM_TIMERID_TIMER_E)\ + {\ + if (((__HANDLE__)->Instance->sCommonRegs.OENR & HRTIM_TEOEN_MASK) == (uint32_t)RESET)\ {\ - if (((__HANDLE__)->Instance->sCommonRegs.OENR & HRTIM_TEOEN_MASK) == (uint32_t)RESET)\ - {\ - ((__HANDLE__)->Instance->sMasterRegs.MCR &= ~HRTIM_TIMERID_TIMER_E);\ - }\ + ((__HANDLE__)->Instance->sMasterRegs.MCR &= ~HRTIM_TIMERID_TIMER_E);\ }\ + }\ } while(0U) @@ -2852,8 +2853,10 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< * @arg HRTIM_MASTER_IT_MUPD: Master update interrupt enable * @retval None */ -#define __HAL_HRTIM_MASTER_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->sMasterRegs.MDIER |= (__INTERRUPT__)) -#define __HAL_HRTIM_MASTER_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->sMasterRegs.MDIER &= ~(__INTERRUPT__)) +#define __HAL_HRTIM_MASTER_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->sMasterRegs.MDIER \ + |= (__INTERRUPT__)) +#define __HAL_HRTIM_MASTER_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->sMasterRegs.MDIER \ + &= ~(__INTERRUPT__)) /** @brief Enables or disables the specified HRTIM Timerx interrupts. * @param __HANDLE__ specifies the HRTIM Handle. @@ -2892,7 +2895,8 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< * @arg HRTIM_IT_BMPER: Burst mode period interrupt enable * @retval The new state of __INTERRUPT__ (TRUE or FALSE). */ -#define __HAL_HRTIM_GET_ITSTATUS(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->sCommonRegs.IER & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET) +#define __HAL_HRTIM_GET_ITSTATUS(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->sCommonRegs.IER &\ + (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET) /** @brief Checks if the specified HRTIM Master interrupt source is enabled or disabled. * @param __HANDLE__ specifies the HRTIM Handle. @@ -2907,7 +2911,8 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< * @arg HRTIM_MASTER_IT_MUPD: Master update interrupt enable * @retval The new state of __INTERRUPT__ (TRUE or FALSE). */ -#define __HAL_HRTIM_MASTER_GET_ITSTATUS(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->sMasterRegs.MDIER & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET) +#define __HAL_HRTIM_MASTER_GET_ITSTATUS(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->sMasterRegs.MDIER &\ + (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET) /** @brief Checks if the specified HRTIM Timerx interrupt source is enabled or disabled. * @param __HANDLE__ specifies the HRTIM Handle. @@ -2937,7 +2942,8 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< * @arg HRTIM_TIM_IT_DLYPRT: Timer delay protection interrupt enable * @retval The new state of __INTERRUPT__ (TRUE or FALSE). */ -#define __HAL_HRTIM_TIMER_GET_ITSTATUS(__HANDLE__, __TIMER__, __INTERRUPT__) ((((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].TIMxDIER & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET) +#define __HAL_HRTIM_TIMER_GET_ITSTATUS(__HANDLE__, __TIMER__, __INTERRUPT__) ((((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].TIMxDIER &\ + (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET) /** @brief Clears the specified HRTIM common pending flag. * @param __HANDLE__ specifies the HRTIM Handle. @@ -2967,7 +2973,8 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< * @arg HRTIM_MASTER_IT_MUPD: Master update interrupt clear flag * @retval None */ -#define __HAL_HRTIM_MASTER_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->sMasterRegs.MICR = (__INTERRUPT__)) +#define __HAL_HRTIM_MASTER_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->sMasterRegs.MICR\ + = (__INTERRUPT__)) /** @brief Clears the specified HRTIM Timerx pending flag. * @param __HANDLE__ specifies the HRTIM Handle. @@ -2990,7 +2997,8 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< * @arg HRTIM_TIM_IT_DLYPRT: Timer output 1 delay protection interrupt clear flag * @retval None */ -#define __HAL_HRTIM_TIMER_CLEAR_IT(__HANDLE__, __TIMER__, __INTERRUPT__) ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].TIMxICR = (__INTERRUPT__)) +#define __HAL_HRTIM_TIMER_CLEAR_IT(__HANDLE__, __TIMER__, __INTERRUPT__) ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].TIMxICR\ + = (__INTERRUPT__)) /* DMA HANDLING */ /** @brief Enables or disables the specified HRTIM Master timer DMA requests. @@ -3033,14 +3041,18 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< #define __HAL_HRTIM_TIMER_ENABLE_DMA(__HANDLE__, __TIMER__, __DMA__) ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].TIMxDIER |= (__DMA__)) #define __HAL_HRTIM_TIMER_DISABLE_DMA(__HANDLE__, __TIMER__, __DMA__) ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].TIMxDIER &= ~(__DMA__)) -#define __HAL_HRTIM_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->sCommonRegs.ISR & (__FLAG__)) == (__FLAG__)) +#define __HAL_HRTIM_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->sCommonRegs.ISR &\ + (__FLAG__)) == (__FLAG__)) #define __HAL_HRTIM_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->sCommonRegs.ICR = (__FLAG__)) -#define __HAL_HRTIM_MASTER_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->sMasterRegs.MISR & (__FLAG__)) == (__FLAG__)) +#define __HAL_HRTIM_MASTER_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->sMasterRegs.MISR &\ + (__FLAG__)) == (__FLAG__)) #define __HAL_HRTIM_MASTER_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->sMasterRegs.MICR = (__FLAG__)) -#define __HAL_HRTIM_TIMER_GET_FLAG(__HANDLE__, __TIMER__, __FLAG__) (((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].TIMxISR & (__FLAG__)) == (__FLAG__)) -#define __HAL_HRTIM_TIMER_CLEAR_FLAG(__HANDLE__, __TIMER__, __FLAG__) ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].TIMxICR = (__FLAG__)) +#define __HAL_HRTIM_TIMER_GET_FLAG(__HANDLE__, __TIMER__, __FLAG__) (((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].TIMxISR &\ + (__FLAG__)) == (__FLAG__)) +#define __HAL_HRTIM_TIMER_CLEAR_FLAG(__HANDLE__, __TIMER__, __FLAG__) ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].TIMxICR\ + = (__FLAG__)) /** @brief Sets the HRTIM timer Counter Register value on runtime * @param __HANDLE__ HRTIM Handle. @@ -3136,16 +3148,16 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< * @retval None */ #define __HAL_HRTIM_SETCOMPARE(__HANDLE__, __TIMER__, __COMPAREUNIT__, __COMPARE__) \ - (((__TIMER__) == HRTIM_TIMERINDEX_MASTER) ? \ - (((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_1) ? ((__HANDLE__)->Instance->sMasterRegs.MCMP1R = (__COMPARE__)) :\ - ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_2) ? ((__HANDLE__)->Instance->sMasterRegs.MCMP2R = (__COMPARE__)) :\ - ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_3) ? ((__HANDLE__)->Instance->sMasterRegs.MCMP3R = (__COMPARE__)) :\ - ((__HANDLE__)->Instance->sMasterRegs.MCMP4R = (__COMPARE__))) \ - : \ - (((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_1) ? ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP1xR = (__COMPARE__)) :\ - ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_2) ? ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP2xR = (__COMPARE__)) :\ - ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_3) ? ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP3xR = (__COMPARE__)) :\ - ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP4xR = (__COMPARE__)))) + (((__TIMER__) == HRTIM_TIMERINDEX_MASTER) ? \ + (((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_1) ? ((__HANDLE__)->Instance->sMasterRegs.MCMP1R = (__COMPARE__)) :\ + ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_2) ? ((__HANDLE__)->Instance->sMasterRegs.MCMP2R = (__COMPARE__)) :\ + ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_3) ? ((__HANDLE__)->Instance->sMasterRegs.MCMP3R = (__COMPARE__)) :\ + ((__HANDLE__)->Instance->sMasterRegs.MCMP4R = (__COMPARE__))) \ + : \ + (((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_1) ? ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP1xR = (__COMPARE__)) :\ + ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_2) ? ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP2xR = (__COMPARE__)) :\ + ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_3) ? ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP3xR = (__COMPARE__)) :\ + ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP4xR = (__COMPARE__)))) /** @brief Gets the HRTIM timer Compare Register value on runtime * @param __HANDLE__ HRTIM Handle. @@ -3161,16 +3173,16 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< * @retval Compare value */ #define __HAL_HRTIM_GETCOMPARE(__HANDLE__, __TIMER__, __COMPAREUNIT__) \ - (((__TIMER__) == HRTIM_TIMERINDEX_MASTER) ? \ - (((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_1) ? ((__HANDLE__)->Instance->sMasterRegs.MCMP1R) :\ - ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_2) ? ((__HANDLE__)->Instance->sMasterRegs.MCMP2R) :\ - ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_3) ? ((__HANDLE__)->Instance->sMasterRegs.MCMP3R) :\ - ((__HANDLE__)->Instance->sMasterRegs.MCMP4R)) \ - : \ - (((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_1) ? ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP1xR) :\ - ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_2) ? ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP2xR) :\ - ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_3) ? ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP3xR) :\ - ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP4xR))) + (((__TIMER__) == HRTIM_TIMERINDEX_MASTER) ? \ + (((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_1) ? ((__HANDLE__)->Instance->sMasterRegs.MCMP1R) :\ + ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_2) ? ((__HANDLE__)->Instance->sMasterRegs.MCMP2R) :\ + ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_3) ? ((__HANDLE__)->Instance->sMasterRegs.MCMP3R) :\ + ((__HANDLE__)->Instance->sMasterRegs.MCMP4R)) \ + : \ + (((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_1) ? ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP1xR) :\ + ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_2) ? ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP2xR) :\ + ((__COMPAREUNIT__) == HRTIM_COMPAREUNIT_3) ? ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP3xR) :\ + ((__HANDLE__)->Instance->sTimerxRegs[(__TIMER__)].CMP4xR))) /** * @} @@ -3178,17 +3190,17 @@ typedef void (* pHRTIM_TIMxCallbackTypeDef)(HRTIM_HandleTypeDef *hhrtim, /*!< /* Exported functions --------------------------------------------------------*/ /** @addtogroup HRTIM_Exported_Functions -* @{ -*/ + * @{ + */ /** @addtogroup HRTIM_Exported_Functions_Group1 -* @{ -*/ + * @{ + */ /* Initialization and Configuration functions ********************************/ HAL_StatusTypeDef HAL_HRTIM_Init(HRTIM_HandleTypeDef *hhrtim); -HAL_StatusTypeDef HAL_HRTIM_DeInit (HRTIM_HandleTypeDef *hhrtim); +HAL_StatusTypeDef HAL_HRTIM_DeInit(HRTIM_HandleTypeDef *hhrtim); void HAL_HRTIM_MspInit(HRTIM_HandleTypeDef *hhrtim); @@ -3196,244 +3208,244 @@ void HAL_HRTIM_MspDeInit(HRTIM_HandleTypeDef *hhrtim); HAL_StatusTypeDef HAL_HRTIM_TimeBaseConfig(HRTIM_HandleTypeDef *hhrtim, uint32_t TimerIdx, - const HRTIM_TimeBaseCfgTypeDef * pTimeBaseCfg); + const HRTIM_TimeBaseCfgTypeDef *pTimeBaseCfg); /** * @} */ /** @addtogroup HRTIM_Exported_Functions_Group2 -* @{ -*/ + * @{ + */ /* Simple time base related functions *****************************************/ HAL_StatusTypeDef HAL_HRTIM_SimpleBaseStart(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); HAL_StatusTypeDef HAL_HRTIM_SimpleBaseStop(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); HAL_StatusTypeDef HAL_HRTIM_SimpleBaseStart_IT(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); HAL_StatusTypeDef HAL_HRTIM_SimpleBaseStop_IT(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); HAL_StatusTypeDef HAL_HRTIM_SimpleBaseStart_DMA(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t SrcAddr, - uint32_t DestAddr, - uint32_t Length); + uint32_t TimerIdx, + uint32_t SrcAddr, + uint32_t DestAddr, + uint32_t Length); HAL_StatusTypeDef HAL_HRTIM_SimpleBaseStop_DMA(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); /** * @} */ /** @addtogroup HRTIM_Exported_Functions_Group3 -* @{ -*/ + * @{ + */ /* Simple output compare related functions ************************************/ HAL_StatusTypeDef HAL_HRTIM_SimpleOCChannelConfig(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t OCChannel, - const HRTIM_SimpleOCChannelCfgTypeDef* pSimpleOCChannelCfg); + uint32_t TimerIdx, + uint32_t OCChannel, + const HRTIM_SimpleOCChannelCfgTypeDef *pSimpleOCChannelCfg); HAL_StatusTypeDef HAL_HRTIM_SimpleOCStart(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t OCChannel); + uint32_t TimerIdx, + uint32_t OCChannel); HAL_StatusTypeDef HAL_HRTIM_SimpleOCStop(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t OCChannel); + uint32_t TimerIdx, + uint32_t OCChannel); HAL_StatusTypeDef HAL_HRTIM_SimpleOCStart_IT(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t OCChannel); + uint32_t TimerIdx, + uint32_t OCChannel); HAL_StatusTypeDef HAL_HRTIM_SimpleOCStop_IT(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t OCChannel); + uint32_t TimerIdx, + uint32_t OCChannel); HAL_StatusTypeDef HAL_HRTIM_SimpleOCStart_DMA(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t OCChannel, - uint32_t SrcAddr, - uint32_t DestAddr, - uint32_t Length); + uint32_t TimerIdx, + uint32_t OCChannel, + uint32_t SrcAddr, + uint32_t DestAddr, + uint32_t Length); HAL_StatusTypeDef HAL_HRTIM_SimpleOCStop_DMA(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t OCChannel); + uint32_t TimerIdx, + uint32_t OCChannel); /** * @} */ /** @addtogroup HRTIM_Exported_Functions_Group4 -* @{ -*/ + * @{ + */ /* Simple PWM output related functions ****************************************/ HAL_StatusTypeDef HAL_HRTIM_SimplePWMChannelConfig(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t PWMChannel, - const HRTIM_SimplePWMChannelCfgTypeDef* pSimplePWMChannelCfg); + uint32_t TimerIdx, + uint32_t PWMChannel, + const HRTIM_SimplePWMChannelCfgTypeDef *pSimplePWMChannelCfg); HAL_StatusTypeDef HAL_HRTIM_SimplePWMStart(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t PWMChannel); + uint32_t TimerIdx, + uint32_t PWMChannel); HAL_StatusTypeDef HAL_HRTIM_SimplePWMStop(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t PWMChannel); + uint32_t TimerIdx, + uint32_t PWMChannel); HAL_StatusTypeDef HAL_HRTIM_SimplePWMStart_IT(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t PWMChannel); + uint32_t TimerIdx, + uint32_t PWMChannel); HAL_StatusTypeDef HAL_HRTIM_SimplePWMStop_IT(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t PWMChannel); + uint32_t TimerIdx, + uint32_t PWMChannel); HAL_StatusTypeDef HAL_HRTIM_SimplePWMStart_DMA(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t PWMChannel, - uint32_t SrcAddr, - uint32_t DestAddr, - uint32_t Length); + uint32_t TimerIdx, + uint32_t PWMChannel, + uint32_t SrcAddr, + uint32_t DestAddr, + uint32_t Length); HAL_StatusTypeDef HAL_HRTIM_SimplePWMStop_DMA(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t PWMChannel); + uint32_t TimerIdx, + uint32_t PWMChannel); /** * @} */ /** @addtogroup HRTIM_Exported_Functions_Group5 -* @{ -*/ + * @{ + */ /* Simple capture related functions *******************************************/ HAL_StatusTypeDef HAL_HRTIM_SimpleCaptureChannelConfig(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t CaptureChannel, - const HRTIM_SimpleCaptureChannelCfgTypeDef* pSimpleCaptureChannelCfg); + uint32_t TimerIdx, + uint32_t CaptureChannel, + const HRTIM_SimpleCaptureChannelCfgTypeDef *pSimpleCaptureChannelCfg); HAL_StatusTypeDef HAL_HRTIM_SimpleCaptureStart(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t CaptureChannel); + uint32_t TimerIdx, + uint32_t CaptureChannel); HAL_StatusTypeDef HAL_HRTIM_SimpleCaptureStop(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t CaptureChannel); + uint32_t TimerIdx, + uint32_t CaptureChannel); HAL_StatusTypeDef HAL_HRTIM_SimpleCaptureStart_IT(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t CaptureChannel); + uint32_t TimerIdx, + uint32_t CaptureChannel); HAL_StatusTypeDef HAL_HRTIM_SimpleCaptureStop_IT(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t CaptureChannel); + uint32_t TimerIdx, + uint32_t CaptureChannel); HAL_StatusTypeDef HAL_HRTIM_SimpleCaptureStart_DMA(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t CaptureChannel, - uint32_t SrcAddr, - uint32_t DestAddr, - uint32_t Length); + uint32_t TimerIdx, + uint32_t CaptureChannel, + uint32_t SrcAddr, + uint32_t DestAddr, + uint32_t Length); HAL_StatusTypeDef HAL_HRTIM_SimpleCaptureStop_DMA(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t CaptureChannel); + uint32_t TimerIdx, + uint32_t CaptureChannel); /** * @} */ /** @addtogroup HRTIM_Exported_Functions_Group6 -* @{ -*/ + * @{ + */ /* Simple one pulse related functions *****************************************/ HAL_StatusTypeDef HAL_HRTIM_SimpleOnePulseChannelConfig(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t OnePulseChannel, - const HRTIM_SimpleOnePulseChannelCfgTypeDef* pSimpleOnePulseChannelCfg); + uint32_t TimerIdx, + uint32_t OnePulseChannel, + const HRTIM_SimpleOnePulseChannelCfgTypeDef *pSimpleOnePulseChannelCfg); HAL_StatusTypeDef HAL_HRTIM_SimpleOnePulseStart(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t OnePulseChannel); + uint32_t TimerIdx, + uint32_t OnePulseChannel); HAL_StatusTypeDef HAL_HRTIM_SimpleOnePulseStop(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t OnePulseChannel); + uint32_t TimerIdx, + uint32_t OnePulseChannel); HAL_StatusTypeDef HAL_HRTIM_SimpleOnePulseStart_IT(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t OnePulseChannel); + uint32_t TimerIdx, + uint32_t OnePulseChannel); HAL_StatusTypeDef HAL_HRTIM_SimpleOnePulseStop_IT(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx, - uint32_t OnePulseChannel); + uint32_t TimerIdx, + uint32_t OnePulseChannel); /** * @} */ /** @addtogroup HRTIM_Exported_Functions_Group7 -* @{ -*/ + * @{ + */ HAL_StatusTypeDef HAL_HRTIM_BurstModeConfig(HRTIM_HandleTypeDef *hhrtim, - const HRTIM_BurstModeCfgTypeDef* pBurstModeCfg); + const HRTIM_BurstModeCfgTypeDef *pBurstModeCfg); HAL_StatusTypeDef HAL_HRTIM_EventConfig(HRTIM_HandleTypeDef *hhrtim, uint32_t Event, - const HRTIM_EventCfgTypeDef* pEventCfg); + const HRTIM_EventCfgTypeDef *pEventCfg); HAL_StatusTypeDef HAL_HRTIM_EventPrescalerConfig(HRTIM_HandleTypeDef *hhrtim, uint32_t Prescaler); HAL_StatusTypeDef HAL_HRTIM_FaultConfig(HRTIM_HandleTypeDef *hhrtim, uint32_t Fault, - const HRTIM_FaultCfgTypeDef* pFaultCfg); + const HRTIM_FaultCfgTypeDef *pFaultCfg); HAL_StatusTypeDef HAL_HRTIM_FaultPrescalerConfig(HRTIM_HandleTypeDef *hhrtim, uint32_t Prescaler); -void HAL_HRTIM_FaultModeCtl(HRTIM_HandleTypeDef * hhrtim, +void HAL_HRTIM_FaultModeCtl(HRTIM_HandleTypeDef *hhrtim, uint32_t Faults, uint32_t Enable); HAL_StatusTypeDef HAL_HRTIM_ADCTriggerConfig(HRTIM_HandleTypeDef *hhrtim, uint32_t ADCTrigger, - const HRTIM_ADCTriggerCfgTypeDef* pADCTriggerCfg); + const HRTIM_ADCTriggerCfgTypeDef *pADCTriggerCfg); /** * @} */ /** @addtogroup HRTIM_Exported_Functions_Group8 -* @{ -*/ + * @{ + */ /* Waveform related functions *************************************************/ HAL_StatusTypeDef HAL_HRTIM_WaveformTimerConfig(HRTIM_HandleTypeDef *hhrtim, uint32_t TimerIdx, - const HRTIM_TimerCfgTypeDef * pTimerCfg); + const HRTIM_TimerCfgTypeDef *pTimerCfg); HAL_StatusTypeDef HAL_HRTIM_WaveformCompareConfig(HRTIM_HandleTypeDef *hhrtim, uint32_t TimerIdx, uint32_t CompareUnit, - const HRTIM_CompareCfgTypeDef* pCompareCfg); + const HRTIM_CompareCfgTypeDef *pCompareCfg); HAL_StatusTypeDef HAL_HRTIM_WaveformCaptureConfig(HRTIM_HandleTypeDef *hhrtim, uint32_t TimerIdx, uint32_t CaptureUnit, - const HRTIM_CaptureCfgTypeDef* pCaptureCfg); + const HRTIM_CaptureCfgTypeDef *pCaptureCfg); HAL_StatusTypeDef HAL_HRTIM_WaveformOutputConfig(HRTIM_HandleTypeDef *hhrtim, uint32_t TimerIdx, uint32_t Output, - const HRTIM_OutputCfgTypeDef * pOutputCfg); + const HRTIM_OutputCfgTypeDef *pOutputCfg); HAL_StatusTypeDef HAL_HRTIM_WaveformSetOutputLevel(HRTIM_HandleTypeDef *hhrtim, uint32_t TimerIdx, @@ -3443,15 +3455,15 @@ HAL_StatusTypeDef HAL_HRTIM_WaveformSetOutputLevel(HRTIM_HandleTypeDef *hhrtim, HAL_StatusTypeDef HAL_HRTIM_TimerEventFilteringConfig(HRTIM_HandleTypeDef *hhrtim, uint32_t TimerIdx, uint32_t Event, - const HRTIM_TimerEventFilteringCfgTypeDef * pTimerEventFilteringCfg); + const HRTIM_TimerEventFilteringCfgTypeDef *pTimerEventFilteringCfg); HAL_StatusTypeDef HAL_HRTIM_DeadTimeConfig(HRTIM_HandleTypeDef *hhrtim, uint32_t TimerIdx, - const HRTIM_DeadTimeCfgTypeDef* pDeadTimeCfg); + const HRTIM_DeadTimeCfgTypeDef *pDeadTimeCfg); HAL_StatusTypeDef HAL_HRTIM_ChopperModeConfig(HRTIM_HandleTypeDef *hhrtim, uint32_t TimerIdx, - const HRTIM_ChopperModeCfgTypeDef* pChopperModeCfg); + const HRTIM_ChopperModeCfgTypeDef *pChopperModeCfg); HAL_StatusTypeDef HAL_HRTIM_BurstDMAConfig(HRTIM_HandleTypeDef *hhrtim, uint32_t TimerIdx, @@ -3459,22 +3471,22 @@ HAL_StatusTypeDef HAL_HRTIM_BurstDMAConfig(HRTIM_HandleTypeDef *hhrtim, HAL_StatusTypeDef HAL_HRTIM_WaveformCountStart(HRTIM_HandleTypeDef *hhrtim, - uint32_t Timers); + uint32_t Timers); HAL_StatusTypeDef HAL_HRTIM_WaveformCountStop(HRTIM_HandleTypeDef *hhrtim, - uint32_t Timers); + uint32_t Timers); HAL_StatusTypeDef HAL_HRTIM_WaveformCountStart_IT(HRTIM_HandleTypeDef *hhrtim, - uint32_t Timers); + uint32_t Timers); HAL_StatusTypeDef HAL_HRTIM_WaveformCountStop_IT(HRTIM_HandleTypeDef *hhrtim, uint32_t Timers); HAL_StatusTypeDef HAL_HRTIM_WaveformCountStart_DMA(HRTIM_HandleTypeDef *hhrtim, - uint32_t Timers); + uint32_t Timers); HAL_StatusTypeDef HAL_HRTIM_WaveformCountStop_DMA(HRTIM_HandleTypeDef *hhrtim, - uint32_t Timers); + uint32_t Timers); HAL_StatusTypeDef HAL_HRTIM_WaveformOutputStart(HRTIM_HandleTypeDef *hhrtim, uint32_t OutputsToStart); @@ -3503,7 +3515,7 @@ HAL_StatusTypeDef HAL_HRTIM_BurstDMATransfer(HRTIM_HandleTypeDef *hhrtim, uint32_t BurstBufferLength); HAL_StatusTypeDef HAL_HRTIM_UpdateEnable(HRTIM_HandleTypeDef *hhrtim, - uint32_t Timers); + uint32_t Timers); HAL_StatusTypeDef HAL_HRTIM_UpdateDisable(HRTIM_HandleTypeDef *hhrtim, uint32_t Timers); @@ -3513,12 +3525,12 @@ HAL_StatusTypeDef HAL_HRTIM_UpdateDisable(HRTIM_HandleTypeDef *hhrtim, */ /** @addtogroup HRTIM_Exported_Functions_Group9 -* @{ -*/ + * @{ + */ /* HRTIM peripheral state functions */ -HAL_HRTIM_StateTypeDef HAL_HRTIM_GetState(const HRTIM_HandleTypeDef* hhrtim); +HAL_HRTIM_StateTypeDef HAL_HRTIM_GetState(const HRTIM_HandleTypeDef *hhrtim); -uint32_t HAL_HRTIM_GetCapturedValue(const HRTIM_HandleTypeDef * hhrtim, +uint32_t HAL_HRTIM_GetCapturedValue(const HRTIM_HandleTypeDef *hhrtim, uint32_t TimerIdx, uint32_t CaptureUnit); @@ -3526,7 +3538,7 @@ uint32_t HAL_HRTIM_WaveformGetOutputLevel(const HRTIM_HandleTypeDef *hhrtim, uint32_t TimerIdx, uint32_t Output); -uint32_t HAL_HRTIM_WaveformGetOutputState(const HRTIM_HandleTypeDef * hhrtim, +uint32_t HAL_HRTIM_WaveformGetOutputState(const HRTIM_HandleTypeDef *hhrtim, uint32_t TimerIdx, uint32_t Output); @@ -3547,8 +3559,8 @@ uint32_t HAL_HRTIM_GetIdlePushPullStatus(const HRTIM_HandleTypeDef *hhrtim, */ /** @addtogroup HRTIM_Exported_Functions_Group10 -* @{ -*/ + * @{ + */ /* IRQ handler */ void HAL_HRTIM_IRQHandler(HRTIM_HandleTypeDef *hhrtim, uint32_t TimerIdx); @@ -3565,50 +3577,50 @@ void HAL_HRTIM_SynchronizationEventCallback(HRTIM_HandleTypeDef *hhrtim); /* Timer events related callback functions */ void HAL_HRTIM_RegistersUpdateCallback(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); void HAL_HRTIM_RepetitionEventCallback(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); void HAL_HRTIM_Compare1EventCallback(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); void HAL_HRTIM_Compare2EventCallback(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); void HAL_HRTIM_Compare3EventCallback(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); void HAL_HRTIM_Compare4EventCallback(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); void HAL_HRTIM_Capture1EventCallback(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); void HAL_HRTIM_Capture2EventCallback(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); void HAL_HRTIM_DelayedProtectionCallback(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); void HAL_HRTIM_CounterResetCallback(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); void HAL_HRTIM_Output1SetCallback(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); void HAL_HRTIM_Output1ResetCallback(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); void HAL_HRTIM_Output2SetCallback(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); void HAL_HRTIM_Output2ResetCallback(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); void HAL_HRTIM_BurstDMATransferCallback(HRTIM_HandleTypeDef *hhrtim, - uint32_t TimerIdx); + uint32_t TimerIdx); void HAL_HRTIM_ErrorCallback(HRTIM_HandleTypeDef *hhrtim); #if (USE_HAL_HRTIM_REGISTER_CALLBACKS == 1) -HAL_StatusTypeDef HAL_HRTIM_RegisterCallback(HRTIM_HandleTypeDef * hhrtim, +HAL_StatusTypeDef HAL_HRTIM_RegisterCallback(HRTIM_HandleTypeDef *hhrtim, HAL_HRTIM_CallbackIDTypeDef CallbackID, pHRTIM_CallbackTypeDef pCallback); -HAL_StatusTypeDef HAL_HRTIM_UnRegisterCallback(HRTIM_HandleTypeDef * hhrtim, +HAL_StatusTypeDef HAL_HRTIM_UnRegisterCallback(HRTIM_HandleTypeDef *hhrtim, HAL_HRTIM_CallbackIDTypeDef CallbackID); -HAL_StatusTypeDef HAL_HRTIM_TIMxRegisterCallback(HRTIM_HandleTypeDef * hhrtim, +HAL_StatusTypeDef HAL_HRTIM_TIMxRegisterCallback(HRTIM_HandleTypeDef *hhrtim, HAL_HRTIM_CallbackIDTypeDef CallbackID, pHRTIM_TIMxCallbackTypeDef pCallback); -HAL_StatusTypeDef HAL_HRTIM_TIMxUnRegisterCallback(HRTIM_HandleTypeDef * hhrtim, +HAL_StatusTypeDef HAL_HRTIM_TIMxUnRegisterCallback(HRTIM_HandleTypeDef *hhrtim, HAL_HRTIM_CallbackIDTypeDef CallbackID); #endif /* USE_HAL_HRTIM_REGISTER_CALLBACKS */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_i2s.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_i2s.h index 407bf2cc..40f321f8 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_i2s.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_i2s.h @@ -505,6 +505,11 @@ HAL_StatusTypeDef HAL_I2S_DMAPause(I2S_HandleTypeDef *hi2s); HAL_StatusTypeDef HAL_I2S_DMAResume(I2S_HandleTypeDef *hi2s); HAL_StatusTypeDef HAL_I2S_DMAStop(I2S_HandleTypeDef *hi2s); +/* IO Swap feature */ +HAL_StatusTypeDef HAL_I2S_EnableIOSwap(I2S_HandleTypeDef *hi2s); +HAL_StatusTypeDef HAL_I2S_DisableIOSwap(I2S_HandleTypeDef *hi2s); +uint32_t HAL_I2S_IsEnabledIOSwap(const I2S_HandleTypeDef *hi2s); + /* Callbacks used in non blocking modes (Interrupt and DMA) *******************/ void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s); void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_ltdc.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_ltdc.h index d5b4a665..a72e42f9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_ltdc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_ltdc.h @@ -592,7 +592,8 @@ HAL_StatusTypeDef HAL_LTDC_SetAlpha(LTDC_HandleTypeDef *hltdc, uint32_t Alpha, u HAL_StatusTypeDef HAL_LTDC_SetAddress(LTDC_HandleTypeDef *hltdc, uint32_t Address, uint32_t LayerIdx); HAL_StatusTypeDef HAL_LTDC_SetPitch(LTDC_HandleTypeDef *hltdc, uint32_t LinePitchInPixels, uint32_t LayerIdx); HAL_StatusTypeDef HAL_LTDC_ConfigColorKeying(LTDC_HandleTypeDef *hltdc, uint32_t RGBValue, uint32_t LayerIdx); -HAL_StatusTypeDef HAL_LTDC_ConfigCLUT(LTDC_HandleTypeDef *hltdc, uint32_t *pCLUT, uint32_t CLUTSize, uint32_t LayerIdx); +HAL_StatusTypeDef HAL_LTDC_ConfigCLUT(LTDC_HandleTypeDef *hltdc, const uint32_t *pCLUT, uint32_t CLUTSize, + uint32_t LayerIdx); HAL_StatusTypeDef HAL_LTDC_EnableColorKeying(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx); HAL_StatusTypeDef HAL_LTDC_DisableColorKeying(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx); HAL_StatusTypeDef HAL_LTDC_EnableCLUT(LTDC_HandleTypeDef *hltdc, uint32_t LayerIdx); @@ -625,8 +626,8 @@ HAL_StatusTypeDef HAL_LTDC_DisableCLUT_NoReload(LTDC_HandleTypeDef *hltdc, uint3 * @{ */ /* Peripheral State functions *************************************************/ -HAL_LTDC_StateTypeDef HAL_LTDC_GetState(LTDC_HandleTypeDef *hltdc); -uint32_t HAL_LTDC_GetError(LTDC_HandleTypeDef *hltdc); +HAL_LTDC_StateTypeDef HAL_LTDC_GetState(const LTDC_HandleTypeDef *hltdc); +uint32_t HAL_LTDC_GetError(const LTDC_HandleTypeDef *hltdc); /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mdios.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mdios.h index 50c61f41..fecf9fe2 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mdios.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mdios.h @@ -509,8 +509,8 @@ HAL_StatusTypeDef HAL_MDIOS_UnRegisterCallback(MDIOS_HandleTypeDef *hmdios, HAL_ HAL_StatusTypeDef HAL_MDIOS_WriteReg(MDIOS_HandleTypeDef *hmdios, uint32_t RegNum, uint16_t Data); HAL_StatusTypeDef HAL_MDIOS_ReadReg(MDIOS_HandleTypeDef *hmdios, uint32_t RegNum, uint16_t *pData); -uint32_t HAL_MDIOS_GetWrittenRegAddress(MDIOS_HandleTypeDef *hmdios); -uint32_t HAL_MDIOS_GetReadRegAddress(MDIOS_HandleTypeDef *hmdios); +uint32_t HAL_MDIOS_GetWrittenRegAddress(const MDIOS_HandleTypeDef *hmdios); +uint32_t HAL_MDIOS_GetReadRegAddress(const MDIOS_HandleTypeDef *hmdios); HAL_StatusTypeDef HAL_MDIOS_ClearWriteRegAddress(MDIOS_HandleTypeDef *hmdios, uint32_t RegNum); HAL_StatusTypeDef HAL_MDIOS_ClearReadRegAddress(MDIOS_HandleTypeDef *hmdios, uint32_t RegNum); @@ -527,8 +527,8 @@ void HAL_MDIOS_WakeUpCallback(MDIOS_HandleTypeDef *hmdios); /** @addtogroup MDIOS_Exported_Functions_Group3 * @{ */ -uint32_t HAL_MDIOS_GetError(MDIOS_HandleTypeDef *hmdios); -HAL_MDIOS_StateTypeDef HAL_MDIOS_GetState(MDIOS_HandleTypeDef *hmdios); +uint32_t HAL_MDIOS_GetError(const MDIOS_HandleTypeDef *hmdios); +HAL_MDIOS_StateTypeDef HAL_MDIOS_GetState(const MDIOS_HandleTypeDef *hmdios); /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mdma.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mdma.h index a39cc0d7..fb611786 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mdma.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mdma.h @@ -655,7 +655,7 @@ HAL_StatusTypeDef HAL_MDMA_UnRegisterCallback(MDMA_HandleTypeDef *hmdma, HAL_MDM */ HAL_StatusTypeDef HAL_MDMA_LinkedList_CreateNode(MDMA_LinkNodeTypeDef *pNode, MDMA_LinkNodeConfTypeDef *pNodeConfig); -HAL_StatusTypeDef HAL_MDMA_LinkedList_AddNode(MDMA_HandleTypeDef *hmdma, MDMA_LinkNodeTypeDef *pNewNode, MDMA_LinkNodeTypeDef *pPrevNode); +HAL_StatusTypeDef HAL_MDMA_LinkedList_AddNode(MDMA_HandleTypeDef *hmdma, MDMA_LinkNodeTypeDef *pNewNode, const MDMA_LinkNodeTypeDef *pPrevNode); HAL_StatusTypeDef HAL_MDMA_LinkedList_RemoveNode(MDMA_HandleTypeDef *hmdma, MDMA_LinkNodeTypeDef *pNode); HAL_StatusTypeDef HAL_MDMA_LinkedList_EnableCircularMode(MDMA_HandleTypeDef *hmdma); HAL_StatusTypeDef HAL_MDMA_LinkedList_DisableCircularMode(MDMA_HandleTypeDef *hmdma); @@ -687,8 +687,8 @@ void HAL_MDMA_IRQHandler(MDMA_HandleTypeDef *hmdma); * @brief Peripheral State functions * @{ */ -HAL_MDMA_StateTypeDef HAL_MDMA_GetState(MDMA_HandleTypeDef *hmdma); -uint32_t HAL_MDMA_GetError(MDMA_HandleTypeDef *hmdma); +HAL_MDMA_StateTypeDef HAL_MDMA_GetState(const MDMA_HandleTypeDef *hmdma); +uint32_t HAL_MDMA_GetError(const MDMA_HandleTypeDef *hmdma); /** * @} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mmc.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mmc.h index ed4e5e5a..3b242bae 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mmc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mmc.h @@ -30,6 +30,7 @@ extern "C" { /** @addtogroup STM32H7xx_HAL_Driver * @{ */ +#if defined (SDMMC1) || defined (SDMMC2) /** @addtogroup MMC * @{ @@ -121,7 +122,7 @@ typedef struct HAL_LockTypeDef Lock; /*!< MMC locking object */ - const uint8_t *pTxBuffPtr; /*!< Pointer to MMC Tx transfer Buffer */ + const uint8_t *pTxBuffPtr; /*!< Pointer to MMC Tx transfer Buffer */ uint32_t TxXferSize; /*!< MMC Tx Transfer size */ @@ -135,6 +136,8 @@ typedef struct __IO uint32_t ErrorCode; /*!< MMC Card Error codes */ + __IO uint16_t RPMBErrorCode; /*!< MMC RPMB Area Error codes */ + HAL_MMC_CardInfoTypeDef MmcCard; /*!< MMC Card information */ uint32_t CSD[4U]; /*!< MMC card specific data table */ @@ -276,45 +279,55 @@ typedef void (*pMMC_CallbackTypeDef)(MMC_HandleTypeDef *hmmc); /** @defgroup MMC_Exported_Constansts_Group1 MMC Error status enumeration Structure definition * @{ */ -#define HAL_MMC_ERROR_NONE SDMMC_ERROR_NONE /*!< No error */ -#define HAL_MMC_ERROR_CMD_CRC_FAIL SDMMC_ERROR_CMD_CRC_FAIL /*!< Command response received (but CRC check failed) */ -#define HAL_MMC_ERROR_DATA_CRC_FAIL SDMMC_ERROR_DATA_CRC_FAIL /*!< Data block sent/received (CRC check failed) */ -#define HAL_MMC_ERROR_CMD_RSP_TIMEOUT SDMMC_ERROR_CMD_RSP_TIMEOUT /*!< Command response timeout */ -#define HAL_MMC_ERROR_DATA_TIMEOUT SDMMC_ERROR_DATA_TIMEOUT /*!< Data timeout */ -#define HAL_MMC_ERROR_TX_UNDERRUN SDMMC_ERROR_TX_UNDERRUN /*!< Transmit FIFO underrun */ -#define HAL_MMC_ERROR_RX_OVERRUN SDMMC_ERROR_RX_OVERRUN /*!< Receive FIFO overrun */ -#define HAL_MMC_ERROR_ADDR_MISALIGNED SDMMC_ERROR_ADDR_MISALIGNED /*!< Misaligned address */ -#define HAL_MMC_ERROR_BLOCK_LEN_ERR SDMMC_ERROR_BLOCK_LEN_ERR /*!< Transferred block length is not allowed for the card or the */ +#define HAL_MMC_ERROR_NONE SDMMC_ERROR_NONE /*!< No error */ +#define HAL_MMC_ERROR_CMD_CRC_FAIL SDMMC_ERROR_CMD_CRC_FAIL /*!< Command response received (but CRC check failed) */ +#define HAL_MMC_ERROR_DATA_CRC_FAIL SDMMC_ERROR_DATA_CRC_FAIL /*!< Data block sent/received (CRC check failed) */ +#define HAL_MMC_ERROR_CMD_RSP_TIMEOUT SDMMC_ERROR_CMD_RSP_TIMEOUT /*!< Command response timeout */ +#define HAL_MMC_ERROR_DATA_TIMEOUT SDMMC_ERROR_DATA_TIMEOUT /*!< Data timeout */ +#define HAL_MMC_ERROR_TX_UNDERRUN SDMMC_ERROR_TX_UNDERRUN /*!< Transmit FIFO underrun */ +#define HAL_MMC_ERROR_RX_OVERRUN SDMMC_ERROR_RX_OVERRUN /*!< Receive FIFO overrun */ +#define HAL_MMC_ERROR_ADDR_MISALIGNED SDMMC_ERROR_ADDR_MISALIGNED /*!< Misaligned address */ +#define HAL_MMC_ERROR_BLOCK_LEN_ERR SDMMC_ERROR_BLOCK_LEN_ERR /*!< Transferred block length is not allowed for the card or the */ /*!< number of transferred bytes does not match the block length */ -#define HAL_MMC_ERROR_ERASE_SEQ_ERR SDMMC_ERROR_ERASE_SEQ_ERR /*!< An error in the sequence of erase command occurs */ -#define HAL_MMC_ERROR_BAD_ERASE_PARAM SDMMC_ERROR_BAD_ERASE_PARAM /*!< An invalid selection for erase groups */ -#define HAL_MMC_ERROR_WRITE_PROT_VIOLATION SDMMC_ERROR_WRITE_PROT_VIOLATION /*!< Attempt to program a write protect block */ -#define HAL_MMC_ERROR_LOCK_UNLOCK_FAILED SDMMC_ERROR_LOCK_UNLOCK_FAILED /*!< Sequence or password error has been detected in unlock */ +#define HAL_MMC_ERROR_ERASE_SEQ_ERR SDMMC_ERROR_ERASE_SEQ_ERR /*!< An error in the sequence of erase command occurs */ +#define HAL_MMC_ERROR_BAD_ERASE_PARAM SDMMC_ERROR_BAD_ERASE_PARAM /*!< An invalid selection for erase groups */ +#define HAL_MMC_ERROR_WRITE_PROT_VIOLATION SDMMC_ERROR_WRITE_PROT_VIOLATION /*!< Attempt to program a write protect block */ +#define HAL_MMC_ERROR_LOCK_UNLOCK_FAILED SDMMC_ERROR_LOCK_UNLOCK_FAILED /*!< Sequence or password error has been detected in unlock */ /*!< command or if there was an attempt to access a locked card */ -#define HAL_MMC_ERROR_COM_CRC_FAILED SDMMC_ERROR_COM_CRC_FAILED /*!< CRC check of the previous command failed */ -#define HAL_MMC_ERROR_ILLEGAL_CMD SDMMC_ERROR_ILLEGAL_CMD /*!< Command is not legal for the card state */ -#define HAL_MMC_ERROR_CARD_ECC_FAILED SDMMC_ERROR_CARD_ECC_FAILED /*!< Card internal ECC was applied but failed to correct the data */ -#define HAL_MMC_ERROR_CC_ERR SDMMC_ERROR_CC_ERR /*!< Internal card controller error */ -#define HAL_MMC_ERROR_GENERAL_UNKNOWN_ERR SDMMC_ERROR_GENERAL_UNKNOWN_ERR /*!< General or unknown error */ -#define HAL_MMC_ERROR_STREAM_READ_UNDERRUN SDMMC_ERROR_STREAM_READ_UNDERRUN /*!< The card could not sustain data reading in stream rmode */ -#define HAL_MMC_ERROR_STREAM_WRITE_OVERRUN SDMMC_ERROR_STREAM_WRITE_OVERRUN /*!< The card could not sustain data programming in stream mode */ -#define HAL_MMC_ERROR_CID_CSD_OVERWRITE SDMMC_ERROR_CID_CSD_OVERWRITE /*!< CID/CSD overwrite error */ -#define HAL_MMC_ERROR_WP_ERASE_SKIP SDMMC_ERROR_WP_ERASE_SKIP /*!< Only partial address space was erased */ -#define HAL_MMC_ERROR_CARD_ECC_DISABLED SDMMC_ERROR_CARD_ECC_DISABLED /*!< Command has been executed without using internal ECC */ -#define HAL_MMC_ERROR_ERASE_RESET SDMMC_ERROR_ERASE_RESET /*!< Erase sequence was cleared before executing because an out */ +#define HAL_MMC_ERROR_COM_CRC_FAILED SDMMC_ERROR_COM_CRC_FAILED /*!< CRC check of the previous command failed */ +#define HAL_MMC_ERROR_ILLEGAL_CMD SDMMC_ERROR_ILLEGAL_CMD /*!< Command is not legal for the card state */ +#define HAL_MMC_ERROR_CARD_ECC_FAILED SDMMC_ERROR_CARD_ECC_FAILED /*!< Card internal ECC was applied but failed to correct the data */ +#define HAL_MMC_ERROR_CC_ERR SDMMC_ERROR_CC_ERR /*!< Internal card controller error */ +#define HAL_MMC_ERROR_GENERAL_UNKNOWN_ERR SDMMC_ERROR_GENERAL_UNKNOWN_ERR /*!< General or unknown error */ +#define HAL_MMC_ERROR_STREAM_READ_UNDERRUN SDMMC_ERROR_STREAM_READ_UNDERRUN /*!< The card could not sustain data reading in stream rmode */ +#define HAL_MMC_ERROR_STREAM_WRITE_OVERRUN SDMMC_ERROR_STREAM_WRITE_OVERRUN /*!< The card could not sustain data programming in stream mode */ +#define HAL_MMC_ERROR_CID_CSD_OVERWRITE SDMMC_ERROR_CID_CSD_OVERWRITE /*!< CID/CSD overwrite error */ +#define HAL_MMC_ERROR_WP_ERASE_SKIP SDMMC_ERROR_WP_ERASE_SKIP /*!< Only partial address space was erased */ +#define HAL_MMC_ERROR_CARD_ECC_DISABLED SDMMC_ERROR_CARD_ECC_DISABLED /*!< Command has been executed without using internal ECC */ +#define HAL_MMC_ERROR_ERASE_RESET SDMMC_ERROR_ERASE_RESET /*!< Erase sequence was cleared before executing because an out */ /*!< of erase sequence command was received */ -#define HAL_MMC_ERROR_AKE_SEQ_ERR SDMMC_ERROR_AKE_SEQ_ERR /*!< Error in sequence of authentication */ -#define HAL_MMC_ERROR_INVALID_VOLTRANGE SDMMC_ERROR_INVALID_VOLTRANGE /*!< Error in case of invalid voltage range */ -#define HAL_MMC_ERROR_ADDR_OUT_OF_RANGE SDMMC_ERROR_ADDR_OUT_OF_RANGE /*!< Error when addressed block is out of range */ -#define HAL_MMC_ERROR_REQUEST_NOT_APPLICABLE SDMMC_ERROR_REQUEST_NOT_APPLICABLE /*!< Error when command request is not applicable */ -#define HAL_MMC_ERROR_PARAM SDMMC_ERROR_INVALID_PARAMETER /*!< the used parameter is not valid */ -#define HAL_MMC_ERROR_UNSUPPORTED_FEATURE SDMMC_ERROR_UNSUPPORTED_FEATURE /*!< Error when feature is not insupported */ -#define HAL_MMC_ERROR_BUSY SDMMC_ERROR_BUSY /*!< Error when transfer process is busy */ -#define HAL_MMC_ERROR_DMA SDMMC_ERROR_DMA /*!< Error while DMA transfer */ -#define HAL_MMC_ERROR_TIMEOUT SDMMC_ERROR_TIMEOUT /*!< Timeout error */ +#define HAL_MMC_ERROR_AKE_SEQ_ERR SDMMC_ERROR_AKE_SEQ_ERR /*!< Error in sequence of authentication */ +#define HAL_MMC_ERROR_INVALID_VOLTRANGE SDMMC_ERROR_INVALID_VOLTRANGE /*!< Error in case of invalid voltage range */ +#define HAL_MMC_ERROR_ADDR_OUT_OF_RANGE SDMMC_ERROR_ADDR_OUT_OF_RANGE /*!< Error when addressed block is out of range */ +#define HAL_MMC_ERROR_REQUEST_NOT_APPLICABLE SDMMC_ERROR_REQUEST_NOT_APPLICABLE /*!< Error when command request is not applicable */ +#define HAL_MMC_ERROR_PARAM SDMMC_ERROR_INVALID_PARAMETER /*!< the used parameter is not valid */ +#define HAL_MMC_ERROR_UNSUPPORTED_FEATURE SDMMC_ERROR_UNSUPPORTED_FEATURE /*!< Error when feature is not insupported */ +#define HAL_MMC_ERROR_BUSY SDMMC_ERROR_BUSY /*!< Error when transfer process is busy */ +#define HAL_MMC_ERROR_DMA SDMMC_ERROR_DMA /*!< Error while DMA transfer */ +#define HAL_MMC_ERROR_TIMEOUT SDMMC_ERROR_TIMEOUT /*!< Timeout error */ +/*!< response results after operating with RPMB partition */ +#define HAL_MMC_ERROR_RPMB_OPERATION_OK 0x0000U /*!< Operation OK */ +#define HAL_MMC_ERROR_RPMB_GENERAL_FAILURE 0x0001U /*!< General failure */ +#define HAL_MMC_ERROR_RPMB_AUTHENTICATION_FAILURE 0x0002U /*!< Authentication failure */ +#define HAL_MMC_ERROR_RPMB_COUNTER_FAILURE 0x0003U /*!< Counter failure */ +#define HAL_MMC_ERROR_RPMB_ADDRESS_FAILURE 0x0004U /*!< Address failure */ +#define HAL_MMC_ERROR_RPMB_WRITE_FAILURE 0x0005U /*!< Write failure */ +#define HAL_MMC_ERROR_RPMB_READ_FAILURE 0x0006U /*!< Read failure */ +#define HAL_MMC_ERROR_RPMB_KEY_NOT_YET_PROG 0x0007U /*!< Authentication Key not yet programmed */ +#define HAL_MMC_ERROR_RPMB_COUNTER_EXPIRED 0x0080U /*!< Write Counter has expired i.e. reached its max value */ #if defined (USE_HAL_MMC_REGISTER_CALLBACKS) && (USE_HAL_MMC_REGISTER_CALLBACKS == 1U) -#define HAL_MMC_ERROR_INVALID_CALLBACK SDMMC_ERROR_INVALID_PARAMETER /*!< Invalid callback error */ +#define HAL_MMC_ERROR_INVALID_CALLBACK SDMMC_ERROR_INVALID_PARAMETER /*!< Invalid callback error */ #endif /* USE_HAL_MMC_REGISTER_CALLBACKS */ /** * @} @@ -399,6 +412,19 @@ typedef void (*pMMC_CallbackTypeDef)(MMC_HandleTypeDef *hmmc); * @} */ +/** @defgroup MMC_Exported_Constansts_Group7 MMC Partitions types + * @{ + */ +typedef uint32_t HAL_MMC_PartitionTypeDef; + +#define HAL_MMC_USER_AREA_PARTITION 0x00000000U /*!< User area partition */ +#define HAL_MMC_BOOT_PARTITION1 0x00000100U /*!< Boot partition 1 */ +#define HAL_MMC_BOOT_PARTITION2 0x00000200U /*!< Boot partition 2 */ +#define HAL_MMC_RPMB_PARTITION 0x00000300U /*!< RPMB partition */ +/** + * @} + */ + /** * @} */ @@ -686,6 +712,7 @@ HAL_StatusTypeDef HAL_MMC_UnRegisterCallback(MMC_HandleTypeDef *hmmc, HAL_MMC_Ca */ HAL_StatusTypeDef HAL_MMC_ConfigWideBusOperation(MMC_HandleTypeDef *hmmc, uint32_t WideMode); HAL_StatusTypeDef HAL_MMC_ConfigSpeedBusOperation(MMC_HandleTypeDef *hmmc, uint32_t SpeedMode); +HAL_StatusTypeDef HAL_MMC_SwitchPartition(MMC_HandleTypeDef *hmmc, HAL_MMC_PartitionTypeDef Partition); /** * @} */ @@ -694,9 +721,9 @@ HAL_StatusTypeDef HAL_MMC_ConfigSpeedBusOperation(MMC_HandleTypeDef *hmmc, uint3 * @{ */ HAL_MMC_CardStateTypeDef HAL_MMC_GetCardState(MMC_HandleTypeDef *hmmc); -HAL_StatusTypeDef HAL_MMC_GetCardCID(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCIDTypeDef *pCID); +HAL_StatusTypeDef HAL_MMC_GetCardCID(const MMC_HandleTypeDef *hmmc, HAL_MMC_CardCIDTypeDef *pCID); HAL_StatusTypeDef HAL_MMC_GetCardCSD(MMC_HandleTypeDef *hmmc, HAL_MMC_CardCSDTypeDef *pCSD); -HAL_StatusTypeDef HAL_MMC_GetCardInfo(MMC_HandleTypeDef *hmmc, HAL_MMC_CardInfoTypeDef *pCardInfo); +HAL_StatusTypeDef HAL_MMC_GetCardInfo(const MMC_HandleTypeDef *hmmc, HAL_MMC_CardInfoTypeDef *pCardInfo); HAL_StatusTypeDef HAL_MMC_GetCardExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pExtCSD, uint32_t Timeout); /** * @} @@ -705,8 +732,9 @@ HAL_StatusTypeDef HAL_MMC_GetCardExtCSD(MMC_HandleTypeDef *hmmc, uint32_t *pExtC /** @defgroup MMC_Exported_Functions_Group5 Peripheral State and Errors functions * @{ */ -HAL_MMC_StateTypeDef HAL_MMC_GetState(MMC_HandleTypeDef *hmmc); -uint32_t HAL_MMC_GetError(MMC_HandleTypeDef *hmmc); +HAL_MMC_StateTypeDef HAL_MMC_GetState(const MMC_HandleTypeDef *hmmc); +uint32_t HAL_MMC_GetError(const MMC_HandleTypeDef *hmmc); +uint32_t HAL_MMC_GetRPMBError(const MMC_HandleTypeDef *hmmc); /** * @} */ @@ -740,6 +768,29 @@ HAL_StatusTypeDef HAL_MMC_AwakeDevice(MMC_HandleTypeDef *hmmc); /** * @} */ + +/** @defgroup MMC_Exported_Functions_Group9 Replay Protected Memory Block management + * @{ + */ +HAL_StatusTypeDef HAL_MMC_RPMB_ProgramAuthenticationKey(MMC_HandleTypeDef *hmmc, const uint8_t *pKey, uint32_t Timeout); +HAL_StatusTypeDef HAL_MMC_RPMB_ProgramAuthenticationKey_IT(MMC_HandleTypeDef *hmmc, const uint8_t *pKey, + uint32_t Timeout); +uint32_t HAL_MMC_RPMB_GetWriteCounter(MMC_HandleTypeDef *hmmc, uint8_t *pNonce, uint32_t Timeout); +uint32_t HAL_MMC_RPMB_GetWriteCounter_IT(MMC_HandleTypeDef *hmmc, uint8_t *pNonce); +HAL_StatusTypeDef HAL_MMC_RPMB_WriteBlocks(MMC_HandleTypeDef *hmmc, const uint8_t *pData, uint16_t BlockAdd, + uint16_t NumberOfBlocks, const uint8_t *pMAC, uint32_t Timeout); +HAL_StatusTypeDef HAL_MMC_RPMB_WriteBlocks_IT(MMC_HandleTypeDef *hmmc, const uint8_t *pData, uint16_t BlockAdd, + uint16_t NumberOfBlocks, const uint8_t *pMAC); +HAL_StatusTypeDef HAL_MMC_RPMB_ReadBlocks(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint16_t BlockAdd, + uint16_t NumberOfBlocks, const uint8_t *pNonce, uint8_t *pMAC, + uint32_t Timeout); +HAL_StatusTypeDef HAL_MMC_RPMB_ReadBlocks_IT(MMC_HandleTypeDef *hmmc, uint8_t *pData, uint16_t BlockAdd, + uint16_t NumberOfBlocks, const uint8_t *pNonce, uint8_t *pMAC); + +/** + * @} + */ + /* Private types -------------------------------------------------------------*/ /** @defgroup MMC_Private_Types MMC Private Types * @{ @@ -812,6 +863,7 @@ HAL_StatusTypeDef HAL_MMC_AwakeDevice(MMC_HandleTypeDef *hmmc); /** * @} */ +#endif /* SDMMC1 || SDMMC2 */ /** * @} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mmc_ex.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mmc_ex.h index 21574958..c610a2bd 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mmc_ex.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_mmc_ex.h @@ -30,7 +30,7 @@ extern "C" { /** @addtogroup STM32H7xx_HAL_Driver * @{ */ - +#if defined (SDMMC1) || defined (SDMMC2) /** @addtogroup MMCEx * @brief SD HAL extended module driver * @{ @@ -100,6 +100,7 @@ void HAL_MMCEx_Write_DMADoubleBuf1CpltCallback(MMC_HandleTypeDef *hmmc); /** * @} */ +#endif /* SDMMC1 || SDMMC2 */ /** * @} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_nand.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_nand.h index 7290893b..b0b31b91 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_nand.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_nand.h @@ -193,7 +193,7 @@ HAL_StatusTypeDef HAL_NAND_Init(NAND_HandleTypeDef *hnand, FMC_NAND_PCC_TimingT FMC_NAND_PCC_TimingTypeDef *AttSpace_Timing); HAL_StatusTypeDef HAL_NAND_DeInit(NAND_HandleTypeDef *hnand); -HAL_StatusTypeDef HAL_NAND_ConfigDevice(NAND_HandleTypeDef *hnand, NAND_DeviceConfigTypeDef *pDeviceConfig); +HAL_StatusTypeDef HAL_NAND_ConfigDevice(NAND_HandleTypeDef *hnand, const NAND_DeviceConfigTypeDef *pDeviceConfig); HAL_StatusTypeDef HAL_NAND_Read_ID(NAND_HandleTypeDef *hnand, NAND_IDTypeDef *pNAND_ID); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_opamp.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_opamp.h index ef354861..cac09484 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_opamp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_opamp.h @@ -417,7 +417,7 @@ HAL_StatusTypeDef HAL_OPAMP_RegisterCallback (OPAMP_HandleTypeDef *hopamp, HAL_O HAL_StatusTypeDef HAL_OPAMP_UnRegisterCallback (OPAMP_HandleTypeDef *hopamp, HAL_OPAMP_CallbackIDTypeDef CallbackId); #endif /* USE_HAL_OPAMP_REGISTER_CALLBACKS */ HAL_StatusTypeDef HAL_OPAMP_Lock(OPAMP_HandleTypeDef *hopamp); -HAL_OPAMP_TrimmingValueTypeDef HAL_OPAMP_GetTrimOffset (OPAMP_HandleTypeDef *hopamp, uint32_t trimmingoffset); +HAL_OPAMP_TrimmingValueTypeDef HAL_OPAMP_GetTrimOffset (const OPAMP_HandleTypeDef *hopamp, uint32_t trimmingoffset); /** * @} @@ -428,7 +428,7 @@ HAL_OPAMP_TrimmingValueTypeDef HAL_OPAMP_GetTrimOffset (OPAMP_HandleTypeDef *hop */ /* Peripheral State functions **************************************************/ -HAL_OPAMP_StateTypeDef HAL_OPAMP_GetState(OPAMP_HandleTypeDef *hopamp); +HAL_OPAMP_StateTypeDef HAL_OPAMP_GetState(const OPAMP_HandleTypeDef *hopamp); /** * @} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_otfdec.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_otfdec.h index bfdfb0b4..9aa5e3ab 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_otfdec.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_otfdec.h @@ -342,8 +342,8 @@ HAL_StatusTypeDef HAL_OTFDEC_RegionKeyLock(OTFDEC_HandleTypeDef *hotfdec, uint32 HAL_StatusTypeDef HAL_OTFDEC_RegionSetKey(OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex, uint32_t *pKey); HAL_StatusTypeDef HAL_OTFDEC_RegionSetMode(OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex, uint32_t mode); HAL_StatusTypeDef HAL_OTFDEC_RegionConfig(OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex, - OTFDEC_RegionConfigTypeDef *Config, uint32_t lock); -uint32_t HAL_OTFDEC_KeyCRCComputation(uint32_t *pKey); + const OTFDEC_RegionConfigTypeDef *Config, uint32_t lock); +uint32_t HAL_OTFDEC_KeyCRCComputation(const uint32_t *pKey); HAL_StatusTypeDef HAL_OTFDEC_RegionEnable(OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex); HAL_StatusTypeDef HAL_OTFDEC_RegionDisable(OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex); /** @@ -353,8 +353,8 @@ HAL_StatusTypeDef HAL_OTFDEC_RegionDisable(OTFDEC_HandleTypeDef *hotfdec, uint32 /** @addtogroup @addtogroup OTFDEC_Exported_Functions_Group4 Peripheral State and Status functions * @{ */ -HAL_OTFDEC_StateTypeDef HAL_OTFDEC_GetState(OTFDEC_HandleTypeDef *hotfdec); -uint32_t HAL_OTFDEC_RegionGetKeyCRC(OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex); +HAL_OTFDEC_StateTypeDef HAL_OTFDEC_GetState(const OTFDEC_HandleTypeDef *hotfdec); +uint32_t HAL_OTFDEC_RegionGetKeyCRC(const OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex); HAL_StatusTypeDef HAL_OTFDEC_RegionGetConfig(OTFDEC_HandleTypeDef *hotfdec, uint32_t RegionIndex, OTFDEC_RegionConfigTypeDef *Config); /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_pcd_ex.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_pcd_ex.h index 9cfa0125..221e2af3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_pcd_ex.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_pcd_ex.h @@ -45,7 +45,6 @@ extern "C" { /** @addtogroup PCDEx_Exported_Functions_Group1 Peripheral Control functions * @{ */ - #if defined (USB_OTG_FS) || defined (USB_OTG_HS) HAL_StatusTypeDef HAL_PCDEx_SetTxFiFo(PCD_HandleTypeDef *hpcd, uint8_t fifo, uint16_t size); HAL_StatusTypeDef HAL_PCDEx_SetRxFiFo(PCD_HandleTypeDef *hpcd, uint16_t size); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_pwr.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_pwr.h index 91a90540..c1d72223 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_pwr.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_pwr.h @@ -692,7 +692,7 @@ void HAL_PWR_DisableBkUpAccess (void); */ /* Peripheral Control functions **********************************************/ /* PVD configuration */ -void HAL_PWR_ConfigPVD (PWR_PVDTypeDef *sConfigPVD); +void HAL_PWR_ConfigPVD (const PWR_PVDTypeDef *sConfigPVD); void HAL_PWR_EnablePVD (void); void HAL_PWR_DisablePVD (void); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_pwr_ex.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_pwr_ex.h index 61c76092..e8455d8d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_pwr_ex.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_pwr_ex.h @@ -544,7 +544,7 @@ void HAL_PWREx_EnableMemoryShutOff (uint32_t MemoryBlock); void HAL_PWREx_DisableMemoryShutOff (uint32_t MemoryBlock); #endif /* defined(PWR_CR1_SRDRAMSO) */ /* Wakeup Pins control functions */ -void HAL_PWREx_EnableWakeUpPin (PWREx_WakeupPinTypeDef *sPinParams); +void HAL_PWREx_EnableWakeUpPin (const PWREx_WakeupPinTypeDef *sPinParams); void HAL_PWREx_DisableWakeUpPin (uint32_t WakeUpPin); uint32_t HAL_PWREx_GetWakeupFlag (uint32_t WakeUpFlag); HAL_StatusTypeDef HAL_PWREx_ClearWakeupFlag (uint32_t WakeUpFlag); @@ -599,7 +599,7 @@ uint32_t HAL_PWREx_GetVBATLevel (void); PWREx_MMC_VoltageLevel HAL_PWREx_GetMMCVoltage (void); #endif /* PWR_CSR1_MMCVDO */ /* Power AVD configuration functions */ -void HAL_PWREx_ConfigAVD (PWREx_AVDTypeDef *sConfigAVD); +void HAL_PWREx_ConfigAVD (const PWREx_AVDTypeDef *sConfigAVD); void HAL_PWREx_EnableAVD (void); void HAL_PWREx_DisableAVD (void); /* Power PVD/AVD IRQ Handler */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_qspi.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_qspi.h index 98b2c5cf..321f05f5 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_qspi.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_qspi.h @@ -26,6 +26,9 @@ /* Includes ------------------------------------------------------------------*/ #include "stm32h7xx_hal_def.h" +#if defined (DLYB_QUADSPI) +#include "stm32h7xx_ll_delayblock.h" +#endif /* DLYB_QUADSPI */ #if defined(QUADSPI) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_ramecc.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_ramecc.h index f9444ebc..b681c8de 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_ramecc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_ramecc.h @@ -303,12 +303,12 @@ HAL_StatusTypeDef HAL_RAMECC_UnRegisterCallback(RAMECC_HandleTypeDef *hramecc); * @brief Error information functions * @{ */ -uint32_t HAL_RAMECC_GetFailingAddress(RAMECC_HandleTypeDef *hramecc); -uint32_t HAL_RAMECC_GetFailingDataLow(RAMECC_HandleTypeDef *hramecc); -uint32_t HAL_RAMECC_GetFailingDataHigh(RAMECC_HandleTypeDef *hramecc); -uint32_t HAL_RAMECC_GetHammingErrorCode(RAMECC_HandleTypeDef *hramecc); -uint32_t HAL_RAMECC_IsECCSingleErrorDetected(RAMECC_HandleTypeDef *hramecc); -uint32_t HAL_RAMECC_IsECCDoubleErrorDetected(RAMECC_HandleTypeDef *hramecc); +uint32_t HAL_RAMECC_GetFailingAddress(const RAMECC_HandleTypeDef *hramecc); +uint32_t HAL_RAMECC_GetFailingDataLow(const RAMECC_HandleTypeDef *hramecc); +uint32_t HAL_RAMECC_GetFailingDataHigh(const RAMECC_HandleTypeDef *hramecc); +uint32_t HAL_RAMECC_GetHammingErrorCode(const RAMECC_HandleTypeDef *hramecc); +uint32_t HAL_RAMECC_IsECCSingleErrorDetected(const RAMECC_HandleTypeDef *hramecc); +uint32_t HAL_RAMECC_IsECCDoubleErrorDetected(const RAMECC_HandleTypeDef *hramecc); /** * @} */ @@ -317,9 +317,9 @@ uint32_t HAL_RAMECC_IsECCDoubleErrorDetected(RAMECC_HandleTypeDef *hramecc); * @brief State and Error Functions * @{ */ -HAL_RAMECC_StateTypeDef HAL_RAMECC_GetState(RAMECC_HandleTypeDef *hramecc); -uint32_t HAL_RAMECC_GetError(RAMECC_HandleTypeDef *hramecc); -uint32_t HAL_RAMECC_GetRAMECCError(RAMECC_HandleTypeDef *hramecc); +HAL_RAMECC_StateTypeDef HAL_RAMECC_GetState(const RAMECC_HandleTypeDef *hramecc); +uint32_t HAL_RAMECC_GetError(const RAMECC_HandleTypeDef *hramecc); +uint32_t HAL_RAMECC_GetRAMECCError(const RAMECC_HandleTypeDef *hramecc); /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rcc.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rcc.h index 1626c6d0..564a8a09 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rcc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rcc.h @@ -7968,7 +7968,7 @@ typedef struct /* Initialization and de-initialization functions ******************************/ HAL_StatusTypeDef HAL_RCC_DeInit(void); HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct); -HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency); +HAL_StatusTypeDef HAL_RCC_ClockConfig(const RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t FLatency); /** * @} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rcc_ex.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rcc_ex.h index 2fb1fd29..d39df84c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rcc_ex.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rcc_ex.h @@ -3936,7 +3936,7 @@ void HAL_RCCEx_WWDGxSysResetConfig(uint32_t RCC_WWDGx); * @{ */ -void HAL_RCCEx_CRSConfig(RCC_CRSInitTypeDef *pInit); +void HAL_RCCEx_CRSConfig(const RCC_CRSInitTypeDef *pInit); void HAL_RCCEx_CRSSoftwareSynchronizationGenerate(void); void HAL_RCCEx_CRSGetSynchronizationInfo(RCC_CRSSynchroInfoTypeDef *pSynchroInfo); uint32_t HAL_RCCEx_CRSWaitSynchronization(uint32_t Timeout); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rng.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rng.h index e7dd55a1..409ac73b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rng.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rng.h @@ -178,6 +178,9 @@ typedef void (*pRNG_ReadyDataCallbackTypeDef)(RNG_HandleTypeDef *hrng, uint32_t #define HAL_RNG_ERROR_BUSY 0x00000004U /*!< Busy error */ #define HAL_RNG_ERROR_SEED 0x00000008U /*!< Seed error */ #define HAL_RNG_ERROR_CLOCK 0x00000010U /*!< Clock error */ +#if defined(RNG_CR_CONDRST) +#define HAL_RNG_ERROR_RECOVERSEED 0x00000020U /*!< Recover Seed error */ +#endif /* RNG_CR_CONDRST */ /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rng_ex.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rng_ex.h index ee43ec10..05c83d07 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rng_ex.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rng_ex.h @@ -34,19 +34,19 @@ extern "C" { #if defined(RNG) #if defined(RNG_CR_CONDRST) -/** @defgroup RNG_Ex RNG_Ex +/** @defgroup RNGEx RNGEx * @brief RNG Extension HAL module driver * @{ */ /* Exported types ------------------------------------------------------------*/ -/** @defgroup RNG_Ex_Exported_Types RNG_Ex Exported Types - * @brief RNG_Ex Exported types +/** @defgroup RNGEx_Exported_Types RNGEx Exported Types + * @brief RNGEx Exported types * @{ */ /** - * @brief RNG_Ex Configuration Structure definition + * @brief RNGEx Configuration Structure definition */ typedef struct @@ -55,9 +55,9 @@ typedef struct uint32_t Config2; /*!< Config2 must be a value between 0 and 0x7 */ uint32_t Config3; /*!< Config3 must be a value between 0 and 0xF */ uint32_t ClockDivider; /*!< Clock Divider factor.This parameter can - be a value of @ref RNG_Ex_Clock_Divider_Factor */ + be a value of @ref RNGEx_Clock_Divider_Factor */ uint32_t NistCompliance; /*!< NIST compliance.This parameter can be a - value of @ref RNG_Ex_NIST_Compliance */ + value of @ref RNGEx_NIST_Compliance */ } RNG_ConfigTypeDef; /** @@ -65,11 +65,11 @@ typedef struct */ /* Exported constants --------------------------------------------------------*/ -/** @defgroup RNG_Ex_Exported_Constants RNG_Ex Exported Constants +/** @defgroup RNGEx_Exported_Constants RNGEx Exported Constants * @{ */ -/** @defgroup RNG_Ex_Clock_Divider_Factor Value used to configure an internal +/** @defgroup RNGEx_Clock_Divider_Factor Value used to configure an internal * programmable divider acting on the incoming RNG clock * @{ */ @@ -108,7 +108,7 @@ typedef struct * @} */ -/** @defgroup RNG_Ex_NIST_Compliance NIST Compliance configuration +/** @defgroup RNGEx_NIST_Compliance NIST Compliance configuration * @{ */ #define RNG_NIST_COMPLIANT (0x00000000UL) /*!< NIST compliant configuration*/ @@ -123,7 +123,7 @@ typedef struct */ /* Private types -------------------------------------------------------------*/ -/** @defgroup RNG_Ex_Private_Types RNG_Ex Private Types +/** @defgroup RNGEx_Private_Types RNGEx Private Types * @{ */ @@ -132,7 +132,7 @@ typedef struct */ /* Private variables ---------------------------------------------------------*/ -/** @defgroup RNG_Ex_Private_Variables RNG_Ex Private Variables +/** @defgroup RNGEx_Private_Variables RNGEx Private Variables * @{ */ @@ -141,7 +141,7 @@ typedef struct */ /* Private constants ---------------------------------------------------------*/ -/** @defgroup RNG_Ex_Private_Constants RNG_Ex Private Constants +/** @defgroup RNGEx_Private_Constants RNGEx Private Constants * @{ */ @@ -150,7 +150,7 @@ typedef struct */ /* Private macros ------------------------------------------------------------*/ -/** @defgroup RNG_Ex_Private_Macros RNG_Ex Private Macros +/** @defgroup RNGEx_Private_Macros RNGEx Private Macros * @{ */ @@ -187,7 +187,7 @@ typedef struct */ /* Private functions ---------------------------------------------------------*/ -/** @defgroup RNG_Ex_Private_Functions RNG_Ex Private Functions +/** @defgroup RNGEx_Private_Functions RNGEx Private Functions * @{ */ @@ -196,11 +196,11 @@ typedef struct */ /* Exported functions --------------------------------------------------------*/ -/** @addtogroup RNG_Ex_Exported_Functions +/** @addtogroup RNGEx_Exported_Functions * @{ */ -/** @addtogroup RNG_Ex_Exported_Functions_Group1 +/** @addtogroup RNGEx_Exported_Functions_Group1 * @{ */ HAL_StatusTypeDef HAL_RNGEx_SetConfig(RNG_HandleTypeDef *hrng, const RNG_ConfigTypeDef *pConf); @@ -211,7 +211,7 @@ HAL_StatusTypeDef HAL_RNGEx_LockConfig(RNG_HandleTypeDef *hrng); * @} */ -/** @addtogroup RNG_Ex_Exported_Functions_Group2 +/** @addtogroup RNGEx_Exported_Functions_Group2 * @{ */ HAL_StatusTypeDef HAL_RNGEx_RecoverSeedError(RNG_HandleTypeDef *hrng); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rtc.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rtc.h index ad0fa135..30198263 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rtc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rtc.h @@ -935,9 +935,9 @@ HAL_StatusTypeDef HAL_RTC_UnRegisterCallback(RTC_HandleTypeDef *hrtc, HAL_RTC_Ca */ /* RTC Time and Date functions ************************************************/ HAL_StatusTypeDef HAL_RTC_SetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format); -HAL_StatusTypeDef HAL_RTC_GetTime(RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format); +HAL_StatusTypeDef HAL_RTC_GetTime(const RTC_HandleTypeDef *hrtc, RTC_TimeTypeDef *sTime, uint32_t Format); HAL_StatusTypeDef HAL_RTC_SetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format); -HAL_StatusTypeDef HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format); +HAL_StatusTypeDef HAL_RTC_GetDate(const RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDate, uint32_t Format); /** * @} */ @@ -949,7 +949,7 @@ HAL_StatusTypeDef HAL_RTC_GetDate(RTC_HandleTypeDef *hrtc, RTC_DateTypeDef *sDat HAL_StatusTypeDef HAL_RTC_SetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format); HAL_StatusTypeDef HAL_RTC_SetAlarm_IT(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Format); HAL_StatusTypeDef HAL_RTC_DeactivateAlarm(RTC_HandleTypeDef *hrtc, uint32_t Alarm); -HAL_StatusTypeDef HAL_RTC_GetAlarm(RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Alarm, uint32_t Format); +HAL_StatusTypeDef HAL_RTC_GetAlarm(const RTC_HandleTypeDef *hrtc, RTC_AlarmTypeDef *sAlarm, uint32_t Alarm, uint32_t Format); void HAL_RTC_AlarmIRQHandler(RTC_HandleTypeDef *hrtc); void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc); HAL_StatusTypeDef HAL_RTC_PollForAlarmAEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout); @@ -970,7 +970,7 @@ HAL_StatusTypeDef HAL_RTC_WaitForSynchro(RTC_HandleTypeDef *hrtc); * @{ */ /* Peripheral State functions *************************************************/ -HAL_RTCStateTypeDef HAL_RTC_GetState(RTC_HandleTypeDef *hrtc); +HAL_RTCStateTypeDef HAL_RTC_GetState(const RTC_HandleTypeDef *hrtc); /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rtc_ex.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rtc_ex.h index bb29abe8..61845fff 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rtc_ex.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_rtc_ex.h @@ -1658,8 +1658,8 @@ HAL_StatusTypeDef HAL_RTCEx_PollForTimeStampEvent(RTC_HandleTypeDef *hrtc, uint3 /** @defgroup RTCEx_Exported_Functions_Group5 Extended RTC Tamper functions * @{ */ -HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper); -HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, RTC_TamperTypeDef *sTamper); +HAL_StatusTypeDef HAL_RTCEx_SetTamper(RTC_HandleTypeDef *hrtc, const RTC_TamperTypeDef *sTamper); +HAL_StatusTypeDef HAL_RTCEx_SetTamper_IT(RTC_HandleTypeDef *hrtc, const RTC_TamperTypeDef *sTamper); HAL_StatusTypeDef HAL_RTCEx_DeactivateTamper(RTC_HandleTypeDef *hrtc, uint32_t Tamper); HAL_StatusTypeDef HAL_RTCEx_PollForTamper1Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout); HAL_StatusTypeDef HAL_RTCEx_PollForTamper2Event(RTC_HandleTypeDef *hrtc, uint32_t Timeout); @@ -1668,8 +1668,8 @@ void HAL_RTCEx_Tamper1EventCallback(RTC_HandleTypeDef *hrtc); void HAL_RTCEx_Tamper2EventCallback(RTC_HandleTypeDef *hrtc); void HAL_RTCEx_Tamper3EventCallback(RTC_HandleTypeDef *hrtc); #if defined(TAMP) -HAL_StatusTypeDef HAL_RTCEx_SetInternalTamper(RTC_HandleTypeDef *hrtc, RTC_InternalTamperTypeDef *sIntTamper); -HAL_StatusTypeDef HAL_RTCEx_SetInternalTamper_IT(RTC_HandleTypeDef *hrtc, RTC_InternalTamperTypeDef *sIntTamper); +HAL_StatusTypeDef HAL_RTCEx_SetInternalTamper(RTC_HandleTypeDef *hrtc, const RTC_InternalTamperTypeDef *sIntTamper); +HAL_StatusTypeDef HAL_RTCEx_SetInternalTamper_IT(RTC_HandleTypeDef *hrtc, const RTC_InternalTamperTypeDef *sIntTamper); HAL_StatusTypeDef HAL_RTCEx_DeactivateInternalTamper(RTC_HandleTypeDef *hrtc, uint32_t IntTamper); HAL_StatusTypeDef HAL_RTCEx_PollForInternalTamperEvent(RTC_HandleTypeDef *hrtc, uint32_t IntTamper, uint32_t Timeout); void HAL_RTCEx_InternalTamper1EventCallback(RTC_HandleTypeDef *hrtc); @@ -1679,8 +1679,8 @@ void HAL_RTCEx_InternalTamper4EventCallback(RTC_HandleTypeDef *hrtc void HAL_RTCEx_InternalTamper5EventCallback(RTC_HandleTypeDef *hrtc); void HAL_RTCEx_InternalTamper6EventCallback(RTC_HandleTypeDef *hrtc); void HAL_RTCEx_InternalTamper8EventCallback(RTC_HandleTypeDef *hrtc); -HAL_StatusTypeDef HAL_RTCEx_SetActiveTampers(RTC_HandleTypeDef *hrtc, RTC_ActiveTampersTypeDef *sAllTamper); -HAL_StatusTypeDef HAL_RTCEx_SetActiveSeed(RTC_HandleTypeDef *hrtc, uint32_t *pSeed); +HAL_StatusTypeDef HAL_RTCEx_SetActiveTampers(RTC_HandleTypeDef *hrtc, const RTC_ActiveTampersTypeDef *sAllTamper); +HAL_StatusTypeDef HAL_RTCEx_SetActiveSeed(RTC_HandleTypeDef *hrtc, const uint32_t *pSeed); HAL_StatusTypeDef HAL_RTCEx_DeactivateActiveTampers(RTC_HandleTypeDef *hrtc); #endif /* TAMP */ @@ -1700,7 +1700,7 @@ HAL_StatusTypeDef HAL_RTCEx_DeactivateActiveTampers(RTC_HandleTypeDef *hrtc); HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock); HAL_StatusTypeDef HAL_RTCEx_SetWakeUpTimer_IT(RTC_HandleTypeDef *hrtc, uint32_t WakeUpCounter, uint32_t WakeUpClock); HAL_StatusTypeDef HAL_RTCEx_DeactivateWakeUpTimer(RTC_HandleTypeDef *hrtc); -uint32_t HAL_RTCEx_GetWakeUpTimer(RTC_HandleTypeDef *hrtc); +uint32_t HAL_RTCEx_GetWakeUpTimer(const RTC_HandleTypeDef *hrtc); void HAL_RTCEx_WakeUpTimerIRQHandler(RTC_HandleTypeDef *hrtc); void HAL_RTCEx_WakeUpTimerEventCallback(RTC_HandleTypeDef *hrtc); HAL_StatusTypeDef HAL_RTCEx_PollForWakeUpTimerEvent(RTC_HandleTypeDef *hrtc, uint32_t Timeout); @@ -1717,8 +1717,8 @@ HAL_StatusTypeDef HAL_RTCEx_PollForWakeUpTimerEvent(RTC_HandleTypeDef *hrtc, uin /** @defgroup RTCEx_Exported_Functions_Group6 Extended RTC Backup register functions * @{ */ -void HAL_RTCEx_BKUPWrite(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data); -uint32_t HAL_RTCEx_BKUPRead(RTC_HandleTypeDef *hrtc, uint32_t BackupRegister); +void HAL_RTCEx_BKUPWrite(const RTC_HandleTypeDef *hrtc, uint32_t BackupRegister, uint32_t Data); +uint32_t HAL_RTCEx_BKUPRead(const RTC_HandleTypeDef *hrtc, uint32_t BackupRegister); /** * @} */ @@ -1742,7 +1742,7 @@ HAL_StatusTypeDef HAL_RTCEx_EnableBypassShadow(RTC_HandleTypeDef *hrtc); HAL_StatusTypeDef HAL_RTCEx_DisableBypassShadow(RTC_HandleTypeDef *hrtc); #if defined(TAMP) HAL_StatusTypeDef HAL_RTCEx_MonotonicCounterIncrement(RTC_HandleTypeDef *hrtc, uint32_t Instance); -HAL_StatusTypeDef HAL_RTCEx_MonotonicCounterGet(RTC_HandleTypeDef *hrtc, uint32_t *Counter, uint32_t Instance); +HAL_StatusTypeDef HAL_RTCEx_MonotonicCounterGet(const RTC_HandleTypeDef *hrtc, uint32_t *Counter, uint32_t Instance); #endif /* TAMP */ /** * @} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sd.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sd.h index 83fa74fd..a2536da2 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sd.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sd.h @@ -33,6 +33,7 @@ extern "C" { /** @addtogroup STM32H7xx_HAL_Driver * @{ */ +#if defined (SDMMC1) || defined (SDMMC2) /** @defgroup SD SD * @brief SD HAL module driver @@ -315,12 +316,12 @@ typedef void (*pSD_TransceiverCallbackTypeDef)(FlagStatus status); #define HAL_SD_ERROR_RX_OVERRUN SDMMC_ERROR_RX_OVERRUN /*!< Receive FIFO overrun */ #define HAL_SD_ERROR_ADDR_MISALIGNED SDMMC_ERROR_ADDR_MISALIGNED /*!< Misaligned address */ #define HAL_SD_ERROR_BLOCK_LEN_ERR SDMMC_ERROR_BLOCK_LEN_ERR /*!< Transferred block length is not allowed for the card or the */ - /*!< number of transferred bytes does not match the block length */ +/*!< number of transferred bytes does not match the block length */ #define HAL_SD_ERROR_ERASE_SEQ_ERR SDMMC_ERROR_ERASE_SEQ_ERR /*!< An error in the sequence of erase command occurs */ #define HAL_SD_ERROR_BAD_ERASE_PARAM SDMMC_ERROR_BAD_ERASE_PARAM /*!< An invalid selection for erase groups */ #define HAL_SD_ERROR_WRITE_PROT_VIOLATION SDMMC_ERROR_WRITE_PROT_VIOLATION /*!< Attempt to program a write protect block */ #define HAL_SD_ERROR_LOCK_UNLOCK_FAILED SDMMC_ERROR_LOCK_UNLOCK_FAILED /*!< Sequence or password error has been detected in unlock */ - /*!< command or if there was an attempt to access a locked card */ +/*!< command or if there was an attempt to access a locked card */ #define HAL_SD_ERROR_COM_CRC_FAILED SDMMC_ERROR_COM_CRC_FAILED /*!< CRC check of the previous command failed */ #define HAL_SD_ERROR_ILLEGAL_CMD SDMMC_ERROR_ILLEGAL_CMD /*!< Command is not legal for the card state */ #define HAL_SD_ERROR_CARD_ECC_FAILED SDMMC_ERROR_CARD_ECC_FAILED /*!< Card internal ECC was applied but failed to correct the data */ @@ -332,7 +333,7 @@ typedef void (*pSD_TransceiverCallbackTypeDef)(FlagStatus status); #define HAL_SD_ERROR_WP_ERASE_SKIP SDMMC_ERROR_WP_ERASE_SKIP /*!< Only partial address space was erased */ #define HAL_SD_ERROR_CARD_ECC_DISABLED SDMMC_ERROR_CARD_ECC_DISABLED /*!< Command has been executed without using internal ECC */ #define HAL_SD_ERROR_ERASE_RESET SDMMC_ERROR_ERASE_RESET /*!< Erase sequence was cleared before executing because an out */ - /*!< of erase sequence command was received */ +/*!< of erase sequence command was received */ #define HAL_SD_ERROR_AKE_SEQ_ERR SDMMC_ERROR_AKE_SEQ_ERR /*!< Error in sequence of authentication */ #define HAL_SD_ERROR_INVALID_VOLTRANGE SDMMC_ERROR_INVALID_VOLTRANGE /*!< Error in case of invalid voltage range */ #define HAL_SD_ERROR_ADDR_OUT_OF_RANGE SDMMC_ERROR_ADDR_OUT_OF_RANGE /*!< Error when addressed block is out of range */ @@ -690,10 +691,10 @@ HAL_StatusTypeDef HAL_SD_ConfigSpeedBusOperation(SD_HandleTypeDef *hsd, uint32_t * @{ */ HAL_SD_CardStateTypeDef HAL_SD_GetCardState(SD_HandleTypeDef *hsd); -HAL_StatusTypeDef HAL_SD_GetCardCID(SD_HandleTypeDef *hsd, HAL_SD_CardCIDTypeDef *pCID); +HAL_StatusTypeDef HAL_SD_GetCardCID(const SD_HandleTypeDef *hsd, HAL_SD_CardCIDTypeDef *pCID); HAL_StatusTypeDef HAL_SD_GetCardCSD(SD_HandleTypeDef *hsd, HAL_SD_CardCSDTypeDef *pCSD); HAL_StatusTypeDef HAL_SD_GetCardStatus(SD_HandleTypeDef *hsd, HAL_SD_CardStatusTypeDef *pStatus); -HAL_StatusTypeDef HAL_SD_GetCardInfo(SD_HandleTypeDef *hsd, HAL_SD_CardInfoTypeDef *pCardInfo); +HAL_StatusTypeDef HAL_SD_GetCardInfo(const SD_HandleTypeDef *hsd, HAL_SD_CardInfoTypeDef *pCardInfo); /** * @} */ @@ -701,8 +702,8 @@ HAL_StatusTypeDef HAL_SD_GetCardInfo(SD_HandleTypeDef *hsd, HAL_SD_CardInf /** @defgroup SD_Exported_Functions_Group5 Peripheral State and Errors functions * @{ */ -HAL_SD_StateTypeDef HAL_SD_GetState(SD_HandleTypeDef *hsd); -uint32_t HAL_SD_GetError(SD_HandleTypeDef *hsd); +HAL_SD_StateTypeDef HAL_SD_GetState(const SD_HandleTypeDef *hsd); +uint32_t HAL_SD_GetError(const SD_HandleTypeDef *hsd); /** * @} */ @@ -787,6 +788,7 @@ HAL_StatusTypeDef HAL_SD_Abort_IT(SD_HandleTypeDef *hsd); /** * @} */ +#endif /* SDMMC1 || SDMMC2 */ /** * @} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sd_ex.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sd_ex.h index 450e7dfa..050005b0 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sd_ex.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sd_ex.h @@ -30,6 +30,7 @@ extern "C" { /** @addtogroup STM32H7xx_HAL_Driver * @{ */ +#if defined (SDMMC1) || defined (SDMMC2) /** @addtogroup SDEx * @brief SD HAL extended module driver @@ -98,6 +99,7 @@ void HAL_SDEx_Write_DMADoubleBuf1CpltCallback(SD_HandleTypeDef *hsd); /** * @} */ +#endif /* SDMMC1 || SDMMC2 */ /** * @} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sdio.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sdio.h new file mode 100644 index 00000000..77cb250e --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sdio.h @@ -0,0 +1,600 @@ +/** + ********************************************************************************************************************** + * @file stm32h7xx_hal_sdio.h + * @author MCD Application Team + * @brief Header file of SDIO HAL module. + ********************************************************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ********************************************************************************************************************** + */ + +/* Define to prevent recursive inclusion -----------------------------------------------------------------------------*/ +#ifndef STM32H7xx_HAL_SDIO_H +#define STM32H7xx_HAL_SDIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ----------------------------------------------------------------------------------------------------------*/ +#include "stm32h7xx_ll_sdmmc.h" + +/** @addtogroup STM32U5xx_HAL_Driver + * @{ + */ +#if defined (SDMMC1) || defined (SDMMC2) + +/** @defgroup SDIO SDIO + * @brief SDIO HAL module driver + * @{ + */ + +/* Exported types ----------------------------------------------------------------------------------------------------*/ +/** @defgroup SDIO_Exported_Types SDIO Exported Types + * @{ + */ + +/** @defgroup SDIO_Exported_Types_Group1 SDIO State enumeration structure + * @{ + + */ +typedef enum +{ + HAL_SDIO_STATE_RESET = 0x00U, /*!< SDIO not yet initialized or disabled */ + HAL_SDIO_STATE_READY = 0x01U, /*!< SDIO initialized and ready for us */ + HAL_SDIO_STATE_BUSY = 0x02U, /*!< SDIO process ongoing */ +} HAL_SDIO_StateTypeDef; + +/** + * @} + */ + +/** @defgroup SDIO_Exported_Types_Group2 SDIO Handle and Structure definition + * @{ + */ +/** + * @brief SDIO Card Common Control Register Structure definition + */ +typedef struct +{ + uint8_t sdio_revision; /*!< SDIO revision */ + uint8_t cccr_revision; /*!< CCCR version */ + uint8_t sd_spec_revision; /*!< SD revision */ + uint8_t bus_width_8Bit; /*!< SDIO bus width 8 bit support */ + uint32_t card_capability; /*!< SDIO card capability */ + uint32_t commonCISPointer; /*!< point to common CIS */ +} HAL_SDIO_CCCR_TypeDef; + +/** + * @brief sdio card FBR register(Function Basic Register) + */ +typedef struct +{ + uint8_t flags; /*!< SDIO current IO flags */ + uint8_t ioStdFunctionCode; /*!< SDIO current IO standard function code */ + uint8_t ioExtFunctionCode; /*!< SDIO current IO extended function code */ + uint32_t ioPointerToCIS; /*!< SDIO current IO pointer to CIS */ + uint32_t ioPointerToCSA; /*!< SDIO current IO pointer to CSA */ +} HAL_SDIO_FBR_t; + +/** + * @brief SDIO CMD52 Structure definition + */ +typedef struct +{ + uint32_t Reg_Addr; /*!< This is the address of the byte of data inside of the selected function to read or write */ + uint8_t ReadAfterWrite; /*!< This is the read after write flag, it is used for write access only. */ + uint8_t IOFunctionNbr; /*!< The number of the function within the IO card you wish to read or write */ +} HAL_SDIO_DirectCmd_TypeDef; + +/** + * @brief SDIO CMD53 Structure definition + */ +typedef struct +{ + uint32_t Reg_Addr; /*!< This is the address of the byte of data inside of the selected function to read or write */ + uint32_t OpCode; /*!< Read/Write operation mode */ + uint32_t Block_Mode; /*!< Bytes or Blocks mode */ + uint32_t IOFunctionNbr; /*!< The number of the function within the IO card you wish to read or write */ +} HAL_SDIO_ExtendedCmd_TypeDef; + +#define SDIO_InitTypeDef SDMMC_InitTypeDef +#define SDIO_TypeDef SDMMC_TypeDef + +/** + * @brief SDIO handle Structure definition + */ +typedef struct __SDIO_HandleTypeDef +{ + SDIO_TypeDef *Instance; /*!< SDIO registers base address */ + + SDIO_InitTypeDef Init; /*!< SDIO required parameters */ + + HAL_LockTypeDef Lock; /*!< SDIO locking object */ + + uint8_t *pTxBuffPtr; /*!< Pointer to SDIO Tx transfer Buffer */ + + uint32_t TxXferSize; /*!< SDIO Tx Transfer size */ + + uint8_t *pRxBuffPtr; /*!< Pointer to SDIO Rx transfer Buffer */ + + uint32_t RxXferSize; /*!< SDIO Rx Transfer size */ + + uint32_t remaining_data; /*!< Remaining data to transfer */ + + uint32_t next_data_addr; /*!< SDIO Next data address */ + + __IO uint32_t next_reg_addr; /*!< SDIO Next register address */ + + uint16_t block_size; /*!< SDIO Block size */ + + __IO uint32_t Context; /*!< SDIO transfer context */ + + __IO HAL_SDIO_StateTypeDef State; /*!< SDIO card State */ + + __IO uint32_t ErrorCode; /*!< SDIO Card Error codes */ + + uint8_t IOFunctionMask; /*!< SDIO used to record current enabled io interrupt */ + + volatile uint8_t IOInterruptNbr; /*!< SDIO used to record total enabled io interrupt numbers */ + + void (* SDIO_IOFunction_Callback[SDIO_MAX_IO_NUMBER])(struct __SDIO_HandleTypeDef *hsdio, uint32_t func); + +#if defined (USE_HAL_SDIO_REGISTER_CALLBACKS) && (USE_HAL_SDIO_REGISTER_CALLBACKS == 1U) + void (* TxCpltCallback)(struct __SDIO_HandleTypeDef *hsdio); + void (* RxCpltCallback)(struct __SDIO_HandleTypeDef *hsdio); + void (* ErrorCallback)(struct __SDIO_HandleTypeDef *hsdio); + void (* MspInitCallback)(struct __SDIO_HandleTypeDef *hsdio); + void (* MspDeInitCallback)(struct __SDIO_HandleTypeDef *hsdio); +#endif /* USE_HAL_SDIO_REGISTER_CALLBACKS */ + +#if (USE_SDIO_TRANSCEIVER != 0U) + void (* DriveTransceiver_1_8V_Callback)(struct __SDIO_HandleTypeDef *hsdio, FlagStatus status); +#endif /* USE_SDIO_TRANSCEIVER */ + + HAL_StatusTypeDef(* SDIO_IdentifyCard)(struct __SDIO_HandleTypeDef *hsdio); + +} SDIO_HandleTypeDef; + +/** + * @} + */ +#if defined (USE_HAL_SDIO_REGISTER_CALLBACKS) && (USE_HAL_SDIO_REGISTER_CALLBACKS == 1U) +/** @defgroup SDIO_Exported_Types_Group3 SDIO Callback ID enumeration definition + * @{ + */ +typedef enum +{ + HAL_SDIO_TX_CPLT_CB_ID = 0x00U, /*!< SDIO Tx Complete Callback ID */ + HAL_SDIO_RX_CPLT_CB_ID = 0x01U, /*!< SDIO Rx Complete Callback ID */ + HAL_SDIO_ERROR_CB_ID = 0x02U, /*!< SDIO Error Callback ID */ + HAL_SDIO_MSP_INIT_CB_ID = 0x10U, /*!< SDIO MspInit Callback ID */ + HAL_SDIO_MSP_DEINIT_CB_ID = 0x11U /*!< SDIO MspDeInit Callback ID */ +} HAL_SDIO_CallbackIDTypeDef; +/** + * @} + */ + +/** @defgroup SDIO_Exported_Types_Group4 SDIO Callback pointer definition + * @{ + */ +typedef void (*pSDIO_CallbackTypeDef)(SDIO_HandleTypeDef *hsdio); +/** + * @} + */ +#endif /* USE_HAL_SDIO_REGISTER_CALLBACKS */ + +#if (USE_SDIO_TRANSCEIVER != 0U) +typedef void (*pSDIO_TransceiverCallbackTypeDef)(SDIO_HandleTypeDef *hsdio, FlagStatus status); +#endif /* USE_SDIO_TRANSCEIVER */ + +typedef HAL_StatusTypeDef(*pSDIO_IdentifyCardCallbackTypeDef)(SDIO_HandleTypeDef *hsdio); +typedef void (*HAL_SDIO_IOFunction_CallbackTypeDef)(SDIO_HandleTypeDef *hsdio, uint32_t func); +/** + * @} + */ + +/* Exported constants ------------------------------------------------------------------------------------------------*/ +/** @defgroup SDIO_Exported_Constants SDIO Exported Constants + * @{ + */ + +/** @defgroup SDIO_Exported_Constansts_Group1 SDIO Error status Structure definition + * @{ + */ +#define HAL_SDIO_ERROR_NONE SDMMC_ERROR_NONE /*!< No error */ +#define HAL_SDIO_ERROR_DATA_CRC_FAIL SDMMC_ERROR_DATA_CRC_FAIL /*!< Data block sent/received (CRC check failed) */ +#define HAL_SDIO_ERROR_DATA_TIMEOUT SDMMC_ERROR_DATA_TIMEOUT /*!< Data timeout */ +#define HAL_SDIO_ERROR_TX_UNDERRUN SDMMC_ERROR_TX_UNDERRUN /*!< Transmit FIFO underrun */ +#define HAL_SDIO_ERROR_RX_OVERRUN SDMMC_ERROR_RX_OVERRUN /*!< Receive FIFO overrun */ +#define HAL_SDIO_ERROR_TIMEOUT SDMMC_ERROR_TIMEOUT /*!< Timeout error */ +#define HAL_SDIO_ERROR_INVALID_CALLBACK SDMMC_ERROR_INVALID_PARAMETER /*!< Invalid callback error */ +/** + * @} + */ + +/** @defgroup SDIO_Exported_Constansts_Group2 SDIO context enumeration + * @{ + */ +#define SDIO_CONTEXT_NONE 0x00U /*!< None */ +#define SDIO_CONTEXT_READ_SINGLE_BLOCK 0x01U /*!< Read single block operation */ +#define SDIO_CONTEXT_READ_MULTIPLE_BLOCK 0x02U /*!< Read multiple blocks operation */ +#define SDIO_CONTEXT_WRITE_SINGLE_BLOCK 0x10U /*!< Write single block operation */ +#define SDIO_CONTEXT_WRITE_MULTIPLE_BLOCK 0x20U /*!< Write multiple blocks operation */ +#define SDIO_CONTEXT_IT 0x08U /*!< Process in Interrupt mode */ +#define SDIO_CONTEXT_DMA 0x80U /*!< Process in DMA mode */ +/** + * @} + */ + +/** @defgroup SDIO_Exported_Constansts_Group3 SDIO Block mode enumeration + * @{ + */ +#define HAL_SDIO_MODE_BYTE SDMMC_SDIO_MODE_BYTE +#define HAL_SDIO_MODE_BLOCK SDMMC_SDIO_MODE_BLOCK +/** + * @} + */ + +/** @defgroup SDIO_Exported_Constansts_Group4 SDIO operation code enumeration + * @{ + */ +#define HAL_SDIO_OP_CODE_NO_INC SDMMC_SDIO_NO_INC +#define HAL_SDIO_OP_CODE_AUTO_INC SDMMC_SDIO_AUTO_INC +/** + * @} + */ + +/** @defgroup SDIO_Exported_Constansts_Group5 SDIO Read After Write(RAW) enumeration + * @{ + */ +#define HAL_SDIO_WRITE_ONLY SDMMC_SDIO_WO /*!< SDIO Write only */ +#define HAL_SDIO_READ_AFTER_WRITE SDMMC_SDIO_RAW /*!< SDIO Read after write */ +/** + * @} + */ + +/** @defgroup SDIO_Exported_Constansts_Group6 SDIO wire mode enumeration + * @{ + */ +#define HAL_SDIO_1_WIRE_MODE 0U /*!< SDIO wire support 1 wire */ +#define HAL_SDIO_4_WIRES_MODE 1U /*!< SDIO wire support 4 wires */ +/** + * @} + */ + +/** @defgroup SDIO_Exported_Constansts_Group7 SDIO Data block size enumeration + * @{ + */ +#define HAL_SDIO_DATA_BLOCK_SIZE_1BYTE 1U /*!< SDIO data block size 1 byte */ +#define HAL_SDIO_DATA_BLOCK_SIZE_2BYTE 2U /*!< SDIO data block size 2 byte */ +#define HAL_SDIO_DATA_BLOCK_SIZE_4BYTE 4U /*!< SDIO data block size 4 byte */ +#define HAL_SDIO_DATA_BLOCK_SIZE_8BYTE 8U /*!< SDIO data block size 8 byte */ +#define HAL_SDIO_DATA_BLOCK_SIZE_16BYTE 16U /*!< SDIO data block size 16 byte */ +#define HAL_SDIO_DATA_BLOCK_SIZE_32BYTE 32U /*!< SDIO data block size 32 byte */ +#define HAL_SDIO_DATA_BLOCK_SIZE_64BYTE 64U /*!< SDIO data block size 64 byte */ +#define HAL_SDIO_DATA_BLOCK_SIZE_128BYTE 128U /*!< SDIO data block size 128 byte */ +#define HAL_SDIO_DATA_BLOCK_SIZE_256BYTE 256U /*!< SDIO data block size 256 byte */ +#define HAL_SDIO_DATA_BLOCK_SIZE_512BYTE 512U /*!< SDIO data block size 512 byte */ +#define HAL_SDIO_DATA_BLOCK_SIZE_1024BYTE 1024U /*!< SDIO data block size 1024 byte */ +#define HAL_SDIO_DATA_BLOCK_SIZE_2048BYTE 2048U /*!< SDIO data block size 2048 byte */ +/** + * @} + */ + +/** @defgroup SDIO_Exported_Constansts_Group8 SDIO Bus Width enumeration + * @{ + */ +#define HAL_SDIO_BUS_WIDTH_8BIT_NOT_SUPPORTED 0U /*!< SDIO bus width 8 bit is not supported */ +#define HAL_SDIO_BUS_WIDTH_8BIT_SUPPORTED 1U /*!< SDIO bus width 8 bit is supported */ +/** + * @} + */ + +/** @defgroup SDIO_Exported_Constansts_Group9 SDIO Data rate definitions + * @{ + */ +#define HAL_SDIOS_DATA_RATE_SDR12 0U /*!< SDIO Data rate SDR12 */ +#define HAL_SDIOS_DATA_RATE_SDR25 1U /*!< SDIO Data rate SDR25 */ +#define HAL_SDIOS_DATA_RATE_SDR50 2U /*!< SDIO Data rate SDR50 */ +#define HAL_SDIOS_DATA_RATE_DDR50 3U /*!< SDIO Data rate DDR50 */ +/** + * @} + */ + +/** @defgroup SDIO_Exported_Constansts_Group10 SDIO Functions definitions + * @{ + */ +#define HAL_SDIO_FUNCTION_0 0U /*!< SDIO function 0 */ +#define HAL_SDIO_FUNCTION_1 1U /*!< SDIO function 1 */ +#define HAL_SDIO_FUNCTION_2 2U /*!< SDIO function 2 */ +#define HAL_SDIO_FUNCTION_3 3U /*!< SDIO function 3 */ +#define HAL_SDIO_FUNCTION_4 4U /*!< SDIO function 4 */ +#define HAL_SDIO_FUNCTION_5 5U /*!< SDIO function 5 */ +#define HAL_SDIO_FUNCTION_6 6U /*!< SDIO function 6 */ +#define HAL_SDIO_FUNCTION_7 7U /*!< SDIO function 7 */ +/** + * @} + */ + +/** @defgroup SDIO_Exported_Constansts_Group11 SDIO FBR definitions + * @{ + */ +#define HAL_SDIO_FBR_SUPPORT_CSA 1U /*!< SDIO function support CSA */ +#define HAL_SDIO_FBR_SUPPORT_POWER_SELECTION 1U /*!< SDIO function support power selection */ +/** + * @} + */ + +/** + * @} + */ +/* Exported macro ----------------------------------------------------------------------------------------------------*/ +/** @defgroup SDIO_Exported_macros SDIO Exported Macros + * @brief macros to handle interrupts and specific clock configurations + * @{ + */ +/** + * @brief Enable the SDIO device interrupt. + * @param __HANDLE__ SDIO Handle. + * @param __INTERRUPT__ specifies the SDMMC interrupt sources to be enabled. + * This parameter can be one or a combination of @ref SDMMC_LL_Interrupt_sources. + * @retval None + */ +#define __HAL_SDIO_ENABLE_IT(__HANDLE__, __INTERRUPT__) __SDMMC_ENABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__)) + +/** + * @brief Disable the SDIO device interrupt. + * @param __HANDLE__ SDIO Handle. + * @param __INTERRUPT__ specifies the SDMMC interrupt sources to be disabled. + * This parameter can be one or a combination of @ref SDMMC_LL_Interrupt_sources. + * @retval None + */ +#define __HAL_SDIO_DISABLE_IT(__HANDLE__, __INTERRUPT__) __SDMMC_DISABLE_IT((__HANDLE__)->Instance, (__INTERRUPT__)) + +/** + * @brief Check whether the specified SDIO flag is set or not. + * @param __HANDLE__ SDIO Handle. + * @param __FLAG__ specifies the flag to check. + * This parameter can be one of @ref SDMMC_LL_Flags. + * @retval The new state of SDIO FLAG (SET or RESET). + */ +#define __HAL_SDIO_GET_FLAG(__HANDLE__, __FLAG__) __SDMMC_GET_FLAG((__HANDLE__)->Instance, (__FLAG__)) + +/** + * @brief Clear the SDIO's pending flags. + * @param __HANDLE__ SDIO Handle. + * @param __FLAG__ specifies the flag to clear. + * This parameter can be one or a combination of @ref SDMMC_LL_Flags. + * @retval None + */ +#define __HAL_SDIO_CLEAR_FLAG(__HANDLE__, __FLAG__) __SDMMC_CLEAR_FLAG((__HANDLE__)->Instance, (__FLAG__)) + +/** + * @brief Check whether the specified SDIO interrupt has occurred or not. + * @param __HANDLE__ SDIO Handle. + * @param __INTERRUPT__ specifies the SDMMC interrupt source to check. + * This parameter can be one of @ref SDMMC_LL_Interrupt_sources. + * @retval The new state of SDIO IT (SET or RESET). + */ +#define __HAL_SDIO_GET_IT(__HANDLE__, __INTERRUPT__) __SDMMC_GET_IT((__HANDLE__)->Instance, (__INTERRUPT__)) + +/** + * @brief Checks whether the specified SDIO interrupt is enabled or not. + * @param __HANDLE__ : SDIO handle. + * @param __INTERRUPT__ : specifies the SDMMC interrupt source to check. + * @retval The state of SDIO IT (SET or RESET). + */ +#define __HAL_SDIO_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) \ + __SDMMC_GET_IT_SOURCE((__HANDLE__)->Instance, (__INTERRUPT__)) +/** + * @} + */ + +/* Exported functions ------------------------------------------------------------------------------------------------*/ +/** @defgroup SDIO_Exported_Functions SDIO Exported Functions + * @{ + */ +/** @defgroup SDIO_Exported_Functions_Group1 Initialization and de-initialization functions + * @{ + */ +HAL_StatusTypeDef HAL_SDIO_Init(SDIO_HandleTypeDef *hsdio); +HAL_StatusTypeDef HAL_SDIO_DeInit(SDIO_HandleTypeDef *hsdio); + +void HAL_SDIO_MspInit(SDIO_HandleTypeDef *hsdio); +void HAL_SDIO_MspDeInit(SDIO_HandleTypeDef *hsdio); +/** + * @} + */ + +/** @defgroup SDIO_Exported_Functions_Group2 Peripheral Control functions + * @{ + */ +HAL_StatusTypeDef HAL_SDIO_SetDataBusWidth(SDIO_HandleTypeDef *hsdio, uint32_t BusWide); +HAL_StatusTypeDef HAL_SDIO_ConfigFrequency(SDIO_HandleTypeDef *hsdio, uint32_t ClockSpeed); + +HAL_StatusTypeDef HAL_SDIO_SetBlockSize(SDIO_HandleTypeDef *hsdio, uint8_t function_nbr, uint16_t BlockSize); +HAL_StatusTypeDef HAL_SDIO_SetSpeedMode(SDIO_HandleTypeDef *hsdio, uint32_t DataRate); + +HAL_StatusTypeDef HAL_SDIO_CardReset(SDIO_HandleTypeDef *hsdio); +HAL_StatusTypeDef HAL_SDIO_GetCardCommonControlRegister(SDIO_HandleTypeDef *hsdio, HAL_SDIO_CCCR_TypeDef *pCccr); +HAL_StatusTypeDef HAL_SDIO_GetCardFBRRegister(SDIO_HandleTypeDef *hsdio, HAL_SDIO_FBR_t *pFbr); +/** + * @} + */ + +/** @defgroup SDIO_Exported_Functions_Group3 Process functions + * @{ + */ +HAL_StatusTypeDef HAL_SDIO_ReadDirect(SDIO_HandleTypeDef *hsdio, HAL_SDIO_DirectCmd_TypeDef *Argument, uint8_t *pData); +HAL_StatusTypeDef HAL_SDIO_WriteDirect(SDIO_HandleTypeDef *hsdio, HAL_SDIO_DirectCmd_TypeDef *Argument, uint8_t Data); + +HAL_StatusTypeDef HAL_SDIO_ReadExtended(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef *Argument, + uint8_t *pData, uint32_t Size_byte, uint32_t Timeout_Ms); + +HAL_StatusTypeDef HAL_SDIO_WriteExtended(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef *Argument, + uint8_t *pData, uint32_t Size_byte, uint32_t Timeout_Ms); + +HAL_StatusTypeDef HAL_SDIO_ReadExtended_DMA(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef *Argument, + uint8_t *pData, uint32_t Size_byte); + +HAL_StatusTypeDef HAL_SDIO_WriteExtended_DMA(SDIO_HandleTypeDef *hsdio, HAL_SDIO_ExtendedCmd_TypeDef *Argument, + uint8_t *pData, uint32_t Size_byte); +/** + * @} + */ + +/** @defgroup SDIO_Exported_Functions_Group4 IRQHandler and callback functions + * @{ + */ +void HAL_SDIO_IRQHandler(SDIO_HandleTypeDef *hsdio); + +void HAL_SDIO_TxCpltCallback(SDIO_HandleTypeDef *hsdio); +void HAL_SDIO_RxCpltCallback(SDIO_HandleTypeDef *hsdio); +void HAL_SDIO_ErrorCallback(SDIO_HandleTypeDef *hsdio); +void HAL_SDIO_IOFunctionCallback(SDIO_HandleTypeDef *hsdio, uint32_t func); +#if (USE_SDIO_TRANSCEIVER != 0U) +/* Callback to switch in 1.8V mode */ +void HAL_SDIO_DriveTransceiver_1_8V_Callback(SDIO_HandleTypeDef *hsdio, FlagStatus status); +#endif /* USE_SDIO_TRANSCEIVER */ + +#if defined (USE_HAL_SDIO_REGISTER_CALLBACKS) && (USE_HAL_SDIO_REGISTER_CALLBACKS == 1U) +HAL_StatusTypeDef HAL_SDIO_RegisterCallback(SDIO_HandleTypeDef *hsdio, HAL_SDIO_CallbackIDTypeDef CallbackID, + pSDIO_CallbackTypeDef pCallback); + +HAL_StatusTypeDef HAL_SDIO_UnRegisterCallback(SDIO_HandleTypeDef *hsdio, HAL_SDIO_CallbackIDTypeDef CallbackID); +#endif /* USE_HAL_SDIO_REGISTER_CALLBACKS */ + +#if (USE_SDIO_TRANSCEIVER != 0U) +HAL_StatusTypeDef HAL_SDIO_RegisterTransceiverCallback(SDIO_HandleTypeDef *hsdio, + pSDIO_TransceiverCallbackTypeDef pCallback); +HAL_StatusTypeDef HAL_SDIO_UnRegisterTransceiverCallback(SDIO_HandleTypeDef *hsdio); +#endif /* USE_SDIO_TRANSCEIVER */ + +HAL_StatusTypeDef HAL_SDIO_RegisterIOFunctionCallback(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction, + HAL_SDIO_IOFunction_CallbackTypeDef pCallback); + +HAL_StatusTypeDef HAL_SDIO_RegisterIdentifyCardCallback(SDIO_HandleTypeDef *hsdio, + pSDIO_IdentifyCardCallbackTypeDef pCallback); +/** + * @} + */ + +/** @defgroup SDIO_Exported_Functions_Group5 Peripheral State and Errors functions + * @{ + */ +HAL_SDIO_StateTypeDef HAL_SDIO_GetState(const SDIO_HandleTypeDef *hsdio); +uint32_t HAL_SDIO_GetError(const SDIO_HandleTypeDef *hsdio); +/** + * @} + */ + +/** @defgroup SDIO_Exported_Functions_Group6 Peripheral IO interrupt + * @{ + */ +HAL_StatusTypeDef HAL_SDIO_EnableIOFunctionInterrupt(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction); +HAL_StatusTypeDef HAL_SDIO_DisableIOFunctionInterrupt(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction); + +HAL_StatusTypeDef HAL_SDIO_EnableIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction); +HAL_StatusTypeDef HAL_SDIO_DisableIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction); + +HAL_StatusTypeDef HAL_SDIO_SelectIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction); +HAL_StatusTypeDef HAL_SDIO_AbortIOFunction(SDIO_HandleTypeDef *hsdio, uint32_t IOFunction); + +HAL_StatusTypeDef HAL_SDIO_EnableIOAsynInterrupt(SDIO_HandleTypeDef *hsdio); +HAL_StatusTypeDef HAL_SDIO_DisableIOAsynInterrupt(SDIO_HandleTypeDef *hsdio); + +/** + * @} + */ + +/* Private types -----------------------------------------------------------------------------------------------------*/ +/** @defgroup SDIO_Private_Types SDIO Private Types + * @{ + */ + +/** + * @} + */ + +/* Private defines ---------------------------------------------------------------------------------------------------*/ +/** @defgroup SDIO_Private_Defines SDIO Private Defines + * @{ + */ + +/** + * @} + */ + +/* Private variables -------------------------------------------------------------------------------------------------*/ +/** @defgroup SDIO_Private_Variables SDIO Private Variables + * @{ + */ + +/** + * @} + */ + +/* Private constants -------------------------------------------------------------------------------------------------*/ +/** @defgroup SDIO_Private_Constants SDIO Private Constants + * @{ + */ + +/** + * @} + */ + +/* Private macros ----------------------------------------------------------------------------------------------------*/ +/** @defgroup SDIO_Private_Macros SDIO Private Macros + * @{ + */ + +/** + * @} + */ + +/* Private functions prototypes --------------------------------------------------------------------------------------*/ +/** @defgroup SDIO_Private_Functions_Prototypes SDIO Private Functions Prototypes + * @{ + */ + +/** + * @} + */ + +/* Private functions -------------------------------------------------------------------------------------------------*/ +/** @defgroup SDIO_Private_Functions SDIO Private Functions + * @{ + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* SDMMC1 || SDMMC2 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + + +#endif /* STM32H7xx_HAL_SDIO_H */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sdram.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sdram.h index cee1ffdd..e90d546c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sdram.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_sdram.h @@ -211,7 +211,7 @@ uint32_t HAL_SDRAM_GetModeStatus(SDRAM_HandleTypeDef *hsdram); * @{ */ /* SDRAM State functions ********************************************************/ -HAL_SDRAM_StateTypeDef HAL_SDRAM_GetState(SDRAM_HandleTypeDef *hsdram); +HAL_SDRAM_StateTypeDef HAL_SDRAM_GetState(const SDRAM_HandleTypeDef *hsdram); /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_swpmi.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_swpmi.h index 4180c713..0a9e11ae 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_swpmi.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_swpmi.h @@ -92,7 +92,7 @@ typedef struct SWPMI_InitTypeDef Init; /*!< SWPMI communication parameters */ - uint32_t *pTxBuffPtr; /*!< Pointer to SWPMI Tx transfer Buffer */ + const uint32_t *pTxBuffPtr; /*!< Pointer to SWPMI Tx transfer Buffer */ uint32_t TxXferSize; /*!< SWPMI Tx Transfer size */ @@ -122,7 +122,7 @@ typedef struct void (*ErrorCallback)(struct __SWPMI_HandleTypeDef *hswpmi); /*!< SWPMI error callback */ void (*MspInitCallback)(struct __SWPMI_HandleTypeDef *hswpmi); /*!< SWPMI MSP init callback */ void (*MspDeInitCallback)(struct __SWPMI_HandleTypeDef *hswpmi); /*!< SWPMI MSP de-init callback */ -#endif +#endif /* USE_HAL_SWPMI_REGISTER_CALLBACKS */ } SWPMI_HandleTypeDef; @@ -145,7 +145,7 @@ typedef enum * @brief SWPMI callback pointer definition */ typedef void (*pSWPMI_CallbackTypeDef)(SWPMI_HandleTypeDef *hswpmi); -#endif +#endif /* USE_HAL_SWPMI_REGISTER_CALLBACKS */ /** * @} @@ -170,7 +170,7 @@ typedef void (*pSWPMI_CallbackTypeDef)(SWPMI_HandleTypeDef *hswpmi); #define HAL_SWPMI_ERROR_TRANSCEIVER_NOT_READY ((uint32_t)0x00000080) /*!< Transceiver not ready */ #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1) #define HAL_SWPMI_ERROR_INVALID_CALLBACK ((uint32_t)0x00000100) /*!< Invalid callback error */ -#endif +#endif /* USE_HAL_SWPMI_REGISTER_CALLBACKS */ /** * @} */ @@ -258,14 +258,14 @@ typedef void (*pSWPMI_CallbackTypeDef)(SWPMI_HandleTypeDef *hswpmi); * @retval None */ #if (USE_HAL_SWPMI_REGISTER_CALLBACKS == 1) -#define __HAL_SWPMI_RESET_HANDLE_STATE(__HANDLE__) do{ \ - (__HANDLE__)->State = HAL_SWPMI_STATE_RESET; \ - (__HANDLE__)->MspInitCallback = NULL; \ - (__HANDLE__)->MspDeInitCallback = NULL; \ - } while(0) +#define __HAL_SWPMI_RESET_HANDLE_STATE(__HANDLE__) do{ \ + (__HANDLE__)->State = HAL_SWPMI_STATE_RESET; \ + (__HANDLE__)->MspInitCallback = NULL; \ + (__HANDLE__)->MspDeInitCallback = NULL; \ + } while(0) #else #define __HAL_SWPMI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SWPMI_STATE_RESET) -#endif +#endif /* USE_HAL_SWPMI_REGISTER_CALLBACKS */ /** * @brief Enable the SWPMI peripheral. @@ -401,7 +401,8 @@ typedef void (*pSWPMI_CallbackTypeDef)(SWPMI_HandleTypeDef *hswpmi); * @arg SWPMI_IT_RXBFIE Receive buffer full interrupt. * @retval The new state of __IT__ (TRUE or FALSE). */ -#define __HAL_SWPMI_GET_IT_SOURCE(__HANDLE__, __IT__) ((READ_BIT((__HANDLE__)->Instance->IER, (__IT__)) == (__IT__)) ? SET : RESET) +#define __HAL_SWPMI_GET_IT_SOURCE(__HANDLE__, __IT__) ((READ_BIT((__HANDLE__)->Instance->IER, (__IT__))\ + == (__IT__)) ? SET : RESET) /** * @} @@ -424,14 +425,15 @@ HAL_StatusTypeDef HAL_SWPMI_RegisterCallback(SWPMI_HandleTypeDef *hswpmi, pSWPMI_CallbackTypeDef pCallback); HAL_StatusTypeDef HAL_SWPMI_UnRegisterCallback(SWPMI_HandleTypeDef *hswpmi, HAL_SWPMI_CallbackIDTypeDef CallbackID); -#endif +#endif /* USE_HAL_SWPMI_REGISTER_CALLBACKS */ /* IO operation functions *****************************************************/ -HAL_StatusTypeDef HAL_SWPMI_Transmit(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size, uint32_t Timeout); +HAL_StatusTypeDef HAL_SWPMI_Transmit(SWPMI_HandleTypeDef *hswpmi, const uint32_t *pData, uint16_t Size, + uint32_t Timeout); HAL_StatusTypeDef HAL_SWPMI_Receive(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size, uint32_t Timeout); -HAL_StatusTypeDef HAL_SWPMI_Transmit_IT(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_SWPMI_Transmit_IT(SWPMI_HandleTypeDef *hswpmi, const uint32_t *pData, uint16_t Size); HAL_StatusTypeDef HAL_SWPMI_Receive_IT(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size); -HAL_StatusTypeDef HAL_SWPMI_Transmit_DMA(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size); +HAL_StatusTypeDef HAL_SWPMI_Transmit_DMA(SWPMI_HandleTypeDef *hswpmi, const uint32_t *pData, uint16_t Size); HAL_StatusTypeDef HAL_SWPMI_Receive_DMA(SWPMI_HandleTypeDef *hswpmi, uint32_t *pData, uint16_t Size); HAL_StatusTypeDef HAL_SWPMI_DMAStop(SWPMI_HandleTypeDef *hswpmi); HAL_StatusTypeDef HAL_SWPMI_EnableLoopback(SWPMI_HandleTypeDef *hswpmi); @@ -444,8 +446,8 @@ void HAL_SWPMI_RxHalfCpltCallback(SWPMI_HandleTypeDef *hswpmi); void HAL_SWPMI_ErrorCallback(SWPMI_HandleTypeDef *hswpmi); /* Peripheral Control and State functions ************************************/ -HAL_SWPMI_StateTypeDef HAL_SWPMI_GetState(SWPMI_HandleTypeDef *hswpmi); -uint32_t HAL_SWPMI_GetError(SWPMI_HandleTypeDef *hswpmi); +HAL_SWPMI_StateTypeDef HAL_SWPMI_GetState(const SWPMI_HandleTypeDef *hswpmi); +uint32_t HAL_SWPMI_GetError(const SWPMI_HandleTypeDef *hswpmi); /** * @} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_uart.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_uart.h index c6fced02..5f0db220 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_uart.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_uart.h @@ -1233,7 +1233,7 @@ typedef void (*pUART_RxEventCallbackTypeDef) /** @defgroup UART_Private_Macros UART Private Macros * @{ */ -/** @brief Get UART clok division factor from clock prescaler value. +/** @brief Get UART clock division factor from clock prescaler value. * @param __CLOCKPRESCALER__ UART prescaler value. * @retval UART clock division factor */ @@ -1248,8 +1248,7 @@ typedef void (*pUART_RxEventCallbackTypeDef) ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV16) ? 16U : \ ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV32) ? 32U : \ ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV64) ? 64U : \ - ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV128) ? 128U : \ - ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV256) ? 256U : 1U) + ((__CLOCKPRESCALER__) == UART_PRESCALER_DIV128) ? 128U : 256U) /** @brief BRR division operation to set BRR register with LPUART. * @param __PCLK__ LPUART clock. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_usart.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_usart.h index 518c0aa3..28ba1ed1 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_usart.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_usart.h @@ -706,8 +706,7 @@ typedef void (*pUSART_CallbackTypeDef)(USART_HandleTypeDef *husart); /*!< poin ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV16) ? 16U : \ ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV32) ? 32U : \ ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV64) ? 64U : \ - ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV128) ? 128U : \ - ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV256) ? 256U : 1U) + ((__CLOCKPRESCALER__) == USART_PRESCALER_DIV128) ? 128U : 256U) /** @brief BRR division operation to set BRR register in 8-bit oversampling mode. * @param __PCLK__ USART clock. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_wwdg.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_wwdg.h index 8f2e4dc1..bee4437e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_wwdg.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_hal_wwdg.h @@ -191,7 +191,7 @@ typedef void (*pWWDG_CallbackTypeDef)(WWDG_HandleTypeDef *hppp); /*!< pointer t /** * @brief Enable the WWDG early wakeup interrupt. - * @param __HANDLE__ WWDG handle + * @param __HANDLE__: WWDG handle * @param __INTERRUPT__ specifies the interrupt to enable. * This parameter can be one of the following values: * @arg WWDG_IT_EWI: Early wakeup interrupt diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_adc.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_adc.h index c8f38afa..8ca787b3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_adc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_adc.h @@ -386,12 +386,12 @@ extern "C" { #endif /* ADC_VER_V5_3 */ #define TEMPSENSOR_CAL1_TEMP (30L) /* Internal temperature sensor, temperature at which temperature sensor has been calibrated in production for data into TEMPSENSOR_CAL1_ADDR (tolerance: +-5 DegC) (unit: DegC). */ -#if defined (STM32H742xx) || defined (STM32H743xx) || defined (STM32H753xx) +#if defined (STM32H742xx) || defined (STM32H743xx) || defined (STM32H753xx) || defined (STM32H750xx) #define TEMPSENSOR_CAL2_TEMP ((((DBGMCU->IDCODE) >> 16) <= ((uint32_t)0x1003)) ? 110L : 130L) /* Internal temperature sensor , temperature at which temperature sensor has been calibrated in production for data into TEMPSENSOR_CAL2_ADDR 110 °C for revision Y and 130 °C for revision V (tolerance: +-5 DegC) (unit: DegC). */ #else -#define TEMPSENSOR_CAL2_TEMP (110L) /* Internal temperature sensor, temperature at which temperature sensor has been +#define TEMPSENSOR_CAL2_TEMP (130L) /* Internal temperature sensor, temperature at which temperature sensor has been calibrated in production for data into TEMPSENSOR_CAL2_ADDR (tolerance: +-5 DegC) (unit: DegC). */ #endif /* defined (STM32H742xx) || defined (STM32H743xx) || defined (STM32H753xx) */ #define TEMPSENSOR_CAL_VREFANALOG (3300UL) /* Analog voltage reference (Vref+) voltage with which temperature sensor has been calibrated in production (+-10 mV) (unit: mV). */ @@ -2600,7 +2600,7 @@ typedef struct * (1) Available on devices with several ADC instances. * @retval ADC register address */ -__STATIC_INLINE uint32_t LL_ADC_DMA_GetRegAddr(ADC_TypeDef *ADCx, uint32_t Register) +__STATIC_INLINE uint32_t LL_ADC_DMA_GetRegAddr(const ADC_TypeDef *ADCx, uint32_t Register) { uint32_t data_reg_addr; @@ -2688,7 +2688,7 @@ __STATIC_INLINE void LL_ADC_SetCommonClock(ADC_Common_TypeDef *ADCxy_COMMON, uin * @arg @ref LL_ADC_CLOCK_ASYNC_DIV128 * @arg @ref LL_ADC_CLOCK_ASYNC_DIV256 */ -__STATIC_INLINE uint32_t LL_ADC_GetCommonClock(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_GetCommonClock(const ADC_Common_TypeDef *ADCxy_COMMON) { return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_CKMODE | ADC_CCR_PRESC)); } @@ -2750,7 +2750,7 @@ __STATIC_INLINE void LL_ADC_SetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_CO * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR * @arg @ref LL_ADC_PATH_INTERNAL_VBAT */ -__STATIC_INLINE uint32_t LL_ADC_GetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_GetCommonPathInternalCh(const ADC_Common_TypeDef *ADCxy_COMMON) { return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_VREFEN | ADC_CCR_TSEN | ADC_CCR_VBATEN)); } @@ -2887,7 +2887,7 @@ __STATIC_INLINE void LL_ADC_SetCalibrationOffsetFactor(ADC_TypeDef *ADCx, uint32 * @arg @ref LL_ADC_DIFFERENTIAL_ENDED * @retval Value between Min_Data=0x00 and Max_Data=0x7F */ -__STATIC_INLINE uint32_t LL_ADC_GetCalibrationOffsetFactor(ADC_TypeDef *ADCx, uint32_t SingleDiff) +__STATIC_INLINE uint32_t LL_ADC_GetCalibrationOffsetFactor(const ADC_TypeDef *ADCx, uint32_t SingleDiff) { /* Retrieve bits with position in register depending on parameter */ /* "SingleDiff". */ @@ -3059,7 +3059,7 @@ __STATIC_INLINE void LL_ADC_SetResolution(ADC_TypeDef *ADCx, uint32_t Resolution * (1): Specific to ADC instance: ADC1, ADC2 * (2): Specific to ADC instance: ADC3 */ -__STATIC_INLINE uint32_t LL_ADC_GetResolution(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_GetResolution(const ADC_TypeDef *ADCx) { #if defined (ADC_VER_V5_3) @@ -3204,7 +3204,7 @@ __STATIC_INLINE void LL_ADC_SetLowPowerMode(ADC_TypeDef *ADCx, uint32_t LowPower * @arg @ref LL_ADC_LP_MODE_NONE * @arg @ref LL_ADC_LP_AUTOWAIT */ -__STATIC_INLINE uint32_t LL_ADC_GetLowPowerMode(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_GetLowPowerMode(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_AUTDLY)); } @@ -3285,7 +3285,7 @@ __STATIC_INLINE void LL_ADC_SetChannelPreselection(ADC_TypeDef *ADCx, uint32_t C * @arg @ref LL_ADC_CHANNEL_19 * @retval the preselection state of Channel (!= 0 : pre-selected, == 0 : not pre-selected) */ -__STATIC_INLINE uint32_t LL_ADC_GetChannelPreselection(ADC_TypeDef *ADCx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_ADC_GetChannelPreselection(const ADC_TypeDef *ADCx, uint32_t Channel) { #if defined(ADC_VER_V5_V90) if (ADCx != ADC3) @@ -3458,7 +3458,7 @@ __STATIC_INLINE void LL_ADC_SetOffset(ADC_TypeDef *ADCx, uint32_t Offsety, uint3 * comparison with internal channel parameter to be done * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(). */ -__STATIC_INLINE uint32_t LL_ADC_GetOffsetChannel(ADC_TypeDef *ADCx, uint32_t Offsety) +__STATIC_INLINE uint32_t LL_ADC_GetOffsetChannel(const ADC_TypeDef *ADCx, uint32_t Offsety) { const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFR1, Offsety); @@ -3484,7 +3484,7 @@ __STATIC_INLINE uint32_t LL_ADC_GetOffsetChannel(ADC_TypeDef *ADCx, uint32_t Off * @arg @ref LL_ADC_OFFSET_4 * @retval Value between Min_Data=0x000 and Max_Data=0x3FFFFFF */ -__STATIC_INLINE uint32_t LL_ADC_GetOffsetLevel(ADC_TypeDef *ADCx, uint32_t Offsety) +__STATIC_INLINE uint32_t LL_ADC_GetOffsetLevel(const ADC_TypeDef *ADCx, uint32_t Offsety) { const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFR1, Offsety); @@ -3526,7 +3526,7 @@ __STATIC_INLINE void LL_ADC_SetDataRightShift(ADC_TypeDef *ADCx, uint32_t Offset * @arg @ref LL_ADC_OFFSET_RSHIFT_ENABLE * @arg @ref LL_ADC_OFFSET_RSHIFT_DISABLE */ -__STATIC_INLINE uint32_t LL_ADC_GetDataRightShift(ADC_TypeDef *ADCx, uint32_t Offsety) +__STATIC_INLINE uint32_t LL_ADC_GetDataRightShift(const ADC_TypeDef *ADCx, uint32_t Offsety) { return (uint32_t)((READ_BIT(ADCx->CFGR2, (ADC_CFGR2_RSHIFT1 << (Offsety & 0x1FUL)))) >> (Offsety & 0x1FUL)); } @@ -3581,7 +3581,7 @@ __STATIC_INLINE void LL_ADC_SetOffsetSignedSaturation(ADC_TypeDef *ADCx, uint32_ * @arg @ref LL_ADC_OFFSET_SIGNED_SATURATION_ENABLE * @arg @ref LL_ADC_OFFSET_SIGNED_SATURATION_DISABLE */ -__STATIC_INLINE uint32_t LL_ADC_GetOffsetSignedSaturation(ADC_TypeDef *ADCx, uint32_t Offsety) +__STATIC_INLINE uint32_t LL_ADC_GetOffsetSignedSaturation(const ADC_TypeDef *ADCx, uint32_t Offsety) { #if defined(ADC_VER_V5_V90) if (ADCx == ADC3) @@ -3649,7 +3649,7 @@ __STATIC_INLINE void LL_ADC_SetOffsetSaturation(ADC_TypeDef *ADCx, uint32_t Offs * @arg @ref LL_ADC_OFFSET_SATURATION_ENABLE * @arg @ref LL_ADC_OFFSET_SATURATION_DISABLE */ -__STATIC_INLINE uint32_t LL_ADC_GetOffsetSaturation(ADC_TypeDef *ADCx, uint32_t Offsety) +__STATIC_INLINE uint32_t LL_ADC_GetOffsetSaturation(const ADC_TypeDef *ADCx, uint32_t Offsety) { if (ADCx == ADC3) { @@ -3713,7 +3713,7 @@ __STATIC_INLINE void LL_ADC_SetOffsetSign(ADC_TypeDef *ADCx, uint32_t Offsety, u * @arg @ref LL_ADC_OFFSET_SIGN_NEGATIVE * @arg @ref LL_ADC_OFFSET_SIGN_POSITIVE */ -__STATIC_INLINE uint32_t LL_ADC_GetOffsetSign(ADC_TypeDef *ADCx, uint32_t Offsety) +__STATIC_INLINE uint32_t LL_ADC_GetOffsetSign(const ADC_TypeDef *ADCx, uint32_t Offsety) { if (ADCx == ADC3) { @@ -3787,7 +3787,7 @@ __STATIC_INLINE void LL_ADC_SetOffsetState(ADC_TypeDef *ADCx, uint32_t Offsety, * @arg @ref LL_ADC_OFFSET_DISABLE * @arg @ref LL_ADC_OFFSET_ENABLE */ -__STATIC_INLINE uint32_t LL_ADC_GetOffsetState(ADC_TypeDef *ADCx, uint32_t Offsety) +__STATIC_INLINE uint32_t LL_ADC_GetOffsetState(const ADC_TypeDef *ADCx, uint32_t Offsety) { const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFR1, Offsety); if (ADCx == ADC3) @@ -3898,7 +3898,7 @@ __STATIC_INLINE void LL_ADC_REG_SetTriggerSource(ADC_TypeDef *ADCx, uint32_t Tri * @arg @ref LL_ADC_REG_TRIG_EXT_LPTIM2_OUT * @arg @ref LL_ADC_REG_TRIG_EXT_LPTIM3_OUT */ -__STATIC_INLINE uint32_t LL_ADC_REG_GetTriggerSource(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_REG_GetTriggerSource(const ADC_TypeDef *ADCx) { __IO uint32_t TriggerSource = READ_BIT(ADCx->CFGR, ADC_CFGR_EXTSEL | ADC_CFGR_EXTEN); @@ -3925,7 +3925,7 @@ __STATIC_INLINE uint32_t LL_ADC_REG_GetTriggerSource(ADC_TypeDef *ADCx) * @retval Value "0" if trigger source external trigger * Value "1" if trigger source SW start. */ -__STATIC_INLINE uint32_t LL_ADC_REG_IsTriggerSourceSWStart(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_REG_IsTriggerSourceSWStart(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->CFGR, ADC_CFGR_EXTEN) == (LL_ADC_REG_TRIG_SOFTWARE & ADC_CFGR_EXTEN)) ? 1UL : 0UL); } @@ -3960,7 +3960,7 @@ __STATIC_INLINE void LL_ADC_REG_SetTriggerEdge(ADC_TypeDef *ADCx, uint32_t Exter * @arg @ref LL_ADC_REG_TRIG_EXT_FALLING * @arg @ref LL_ADC_REG_TRIG_EXT_RISINGFALLING */ -__STATIC_INLINE uint32_t LL_ADC_REG_GetTriggerEdge(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_REG_GetTriggerEdge(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_EXTEN)); } @@ -4105,7 +4105,7 @@ __STATIC_INLINE void LL_ADC_REG_SetSequencerLength(ADC_TypeDef *ADCx, uint32_t S * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS */ -__STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerLength(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerLength(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->SQR1, ADC_SQR1_L)); } @@ -4160,7 +4160,7 @@ __STATIC_INLINE void LL_ADC_REG_SetSequencerDiscont(ADC_TypeDef *ADCx, uint32_t * @arg @ref LL_ADC_REG_SEQ_DISCONT_7RANKS * @arg @ref LL_ADC_REG_SEQ_DISCONT_8RANKS */ -__STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerDiscont(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerDiscont(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_DISCEN | ADC_CFGR_DISCNUM)); } @@ -4354,7 +4354,7 @@ __STATIC_INLINE void LL_ADC_REG_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Ra * comparison with internal channel parameter to be done * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(). */ -__STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank) +__STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerRanks(const ADC_TypeDef *ADCx, uint32_t Rank) { const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, ((Rank & ADC_REG_SQRX_REGOFFSET_MASK) >> ADC_SQRX_REGOFFSET_POS)); @@ -4400,7 +4400,7 @@ __STATIC_INLINE void LL_ADC_REG_SetContinuousMode(ADC_TypeDef *ADCx, uint32_t Co * @arg @ref LL_ADC_REG_CONV_SINGLE * @arg @ref LL_ADC_REG_CONV_CONTINUOUS */ -__STATIC_INLINE uint32_t LL_ADC_REG_GetContinuousMode(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_REG_GetContinuousMode(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_CONT)); } @@ -4438,7 +4438,7 @@ __STATIC_INLINE void LL_ADC_DisableDMAReq(ADC_TypeDef *ADCx) CLEAR_BIT (ADCx->CFGR, ADC3_CFGR_DMAEN); } -__STATIC_INLINE uint32_t LL_ADC_IsEnabledDMAReq (ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsEnabledDMAReq (const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->CFGR, ADC3_CFGR_DMAEN) == (ADC3_CFGR_DMAEN)) ? 1UL : 0UL); } @@ -4515,7 +4515,7 @@ __STATIC_INLINE void LL_ADC_REG_SetDMATransferMode(ADC_TypeDef *ADCx, uint32_t D * @arg @ref LL_ADC3_REG_DMA_TRANSFER_LIMITED * @arg @ref LL_ADC3_REG_DMA_TRANSFER_UNLIMITED */ -__STATIC_INLINE uint32_t LL_ADC_REG_GetDMATransferMode(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_REG_GetDMATransferMode(const ADC_TypeDef *ADCx) { if (ADCx == ADC3) { @@ -4544,7 +4544,7 @@ __STATIC_INLINE uint32_t LL_ADC_REG_GetDMATransferMode(ADC_TypeDef *ADCx) * @arg @ref LL_ADC_REG_DMA_TRANSFER_UNLIMITED * @arg @ref LL_ADC_REG_DFSDM_TRANSFER */ -__STATIC_INLINE uint32_t LL_ADC_REG_GetDataTransferMode(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_REG_GetDataTransferMode(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_DMNGT)); } @@ -4584,7 +4584,7 @@ __STATIC_INLINE void LL_ADC_REG_SetOverrun(ADC_TypeDef *ADCx, uint32_t Overrun) * @arg @ref LL_ADC_REG_OVR_DATA_PRESERVED * @arg @ref LL_ADC_REG_OVR_DATA_OVERWRITTEN */ -__STATIC_INLINE uint32_t LL_ADC_REG_GetOverrun(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_REG_GetOverrun(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_OVRMOD)); } @@ -4685,7 +4685,7 @@ __STATIC_INLINE void LL_ADC_INJ_SetTriggerSource(ADC_TypeDef *ADCx, uint32_t Tri * @arg @ref LL_ADC_INJ_TRIG_EXT_LPTIM2_OUT * @arg @ref LL_ADC_INJ_TRIG_EXT_LPTIM3_OUT */ -__STATIC_INLINE uint32_t LL_ADC_INJ_GetTriggerSource(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_INJ_GetTriggerSource(const ADC_TypeDef *ADCx) { __IO uint32_t TriggerSource = READ_BIT(ADCx->JSQR, ADC_JSQR_JEXTSEL | ADC_JSQR_JEXTEN); @@ -4712,7 +4712,7 @@ __STATIC_INLINE uint32_t LL_ADC_INJ_GetTriggerSource(ADC_TypeDef *ADCx) * @retval Value "0" if trigger source external trigger * Value "1" if trigger source SW start. */ -__STATIC_INLINE uint32_t LL_ADC_INJ_IsTriggerSourceSWStart(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_INJ_IsTriggerSourceSWStart(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->JSQR, ADC_JSQR_JEXTEN) == (LL_ADC_INJ_TRIG_SOFTWARE & ADC_JSQR_JEXTEN)) ? 1UL : 0UL); } @@ -4747,7 +4747,7 @@ __STATIC_INLINE void LL_ADC_INJ_SetTriggerEdge(ADC_TypeDef *ADCx, uint32_t Exter * @arg @ref LL_ADC_INJ_TRIG_EXT_FALLING * @arg @ref LL_ADC_INJ_TRIG_EXT_RISINGFALLING */ -__STATIC_INLINE uint32_t LL_ADC_INJ_GetTriggerEdge(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_INJ_GetTriggerEdge(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->JSQR, ADC_JSQR_JEXTEN)); } @@ -4794,7 +4794,7 @@ __STATIC_INLINE void LL_ADC_INJ_SetSequencerLength(ADC_TypeDef *ADCx, uint32_t S * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS */ -__STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerLength(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerLength(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->JSQR, ADC_JSQR_JL)); } @@ -4827,7 +4827,7 @@ __STATIC_INLINE void LL_ADC_INJ_SetSequencerDiscont(ADC_TypeDef *ADCx, uint32_t * @arg @ref LL_ADC_INJ_SEQ_DISCONT_DISABLE * @arg @ref LL_ADC_INJ_SEQ_DISCONT_1RANK */ -__STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerDiscont(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerDiscont(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_JDISCEN)); } @@ -4962,7 +4962,7 @@ __STATIC_INLINE void LL_ADC_INJ_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Ra * comparison with internal channel parameter to be done * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(). */ -__STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank) +__STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerRanks(const ADC_TypeDef *ADCx, uint32_t Rank) { return (uint32_t)((READ_BIT(ADCx->JSQR, (ADC_CHANNEL_ID_NUMBER_MASK >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) << (Rank & ADC_INJ_RANK_ID_JSQR_MASK)) @@ -5014,7 +5014,7 @@ __STATIC_INLINE void LL_ADC_INJ_SetTrigAuto(ADC_TypeDef *ADCx, uint32_t TrigAuto * @arg @ref LL_ADC_INJ_TRIG_INDEPENDENT * @arg @ref LL_ADC_INJ_TRIG_FROM_GRP_REGULAR */ -__STATIC_INLINE uint32_t LL_ADC_INJ_GetTrigAuto(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_INJ_GetTrigAuto(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_JAUTO)); } @@ -5075,7 +5075,7 @@ __STATIC_INLINE void LL_ADC_INJ_SetQueueMode(ADC_TypeDef *ADCx, uint32_t QueueMo * @arg @ref LL_ADC_INJ_QUEUE_2CONTEXTS_LAST_ACTIVE * @arg @ref LL_ADC_INJ_QUEUE_2CONTEXTS_END_EMPTY */ -__STATIC_INLINE uint32_t LL_ADC_INJ_GetQueueMode(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_INJ_GetQueueMode(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_JQM | ADC_CFGR_JQDIS)); } @@ -5491,7 +5491,7 @@ __STATIC_INLINE void LL_ADC_SetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t C * @arg @ref LL_ADC_SAMPLINGTIME_387CYCLES_5 * @arg @ref LL_ADC_SAMPLINGTIME_810CYCLES_5 */ -__STATIC_INLINE uint32_t LL_ADC_GetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_ADC_GetChannelSamplingTime(const ADC_TypeDef *ADCx, uint32_t Channel) { const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, ((Channel & ADC_CHANNEL_SMPRX_REGOFFSET_MASK) >> ADC_SMPRX_REGOFFSET_POS)); @@ -5623,7 +5623,7 @@ __STATIC_INLINE void LL_ADC_SetChannelSingleDiff(ADC_TypeDef *ADCx, uint32_t Cha * @arg @ref LL_ADC_CHANNEL_19 * @retval 0: channel in single-ended mode, else: channel in differential mode */ -__STATIC_INLINE uint32_t LL_ADC_GetChannelSingleDiff(ADC_TypeDef *ADCx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_ADC_GetChannelSingleDiff(const ADC_TypeDef *ADCx, uint32_t Channel) { #if defined(ADC_VER_V5_V90) return (uint32_t)(READ_BIT(ADCx->DIFSEL_RES12, (Channel & ADC_SINGLEDIFF_CHANNEL_MASK))); @@ -5910,7 +5910,7 @@ __STATIC_INLINE void LL_ADC_SetAnalogWDMonitChannels(ADC_TypeDef *ADCx, uint32_t * * (0) On STM32H7, parameter available only on analog watchdog number: AWD1. */ -__STATIC_INLINE uint32_t LL_ADC_GetAnalogWDMonitChannels(ADC_TypeDef *ADCx, uint32_t AWDy) +__STATIC_INLINE uint32_t LL_ADC_GetAnalogWDMonitChannels(const ADC_TypeDef *ADCx, uint32_t AWDy) { const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->CFGR, ((AWDy & ADC_AWD_CRX_REGOFFSET_MASK) >> ADC_AWD_CRX_REGOFFSET_POS) + ((AWDy & ADC_AWD_CR12_REGOFFSETGAP_MASK) * ADC_AWD_CR12_REGOFFSETGAP_VAL)); @@ -6085,7 +6085,7 @@ __STATIC_INLINE void LL_ADC_SetAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AW * @arg @ref LL_ADC_AWD_THRESHOLD_LOW * @retval Value between Min_Data=0x000 and Max_Data=0x3FFFFFF */ -__STATIC_INLINE uint32_t LL_ADC_GetAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdsHighLow) +__STATIC_INLINE uint32_t LL_ADC_GetAnalogWDThresholds(const ADC_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdsHighLow) { #if defined(ADC_VER_V5_V90) if (ADCx == ADC3) @@ -6245,7 +6245,7 @@ __STATIC_INLINE void LL_ADC_SetAWDFilteringConfiguration(ADC_TypeDef *ADCx, uint * @arg @ref LL_ADC_AWD_FILTERING_7SAMPLES * @arg @ref LL_ADC_AWD_FILTERING_8SAMPLES */ -__STATIC_INLINE uint32_t LL_ADC_GetAWDFilteringConfiguration(ADC_TypeDef *ADCx, uint32_t AWDy) +__STATIC_INLINE uint32_t LL_ADC_GetAWDFilteringConfiguration(const ADC_TypeDef *ADCx, uint32_t AWDy) { if (ADCx == ADC3) { @@ -6318,7 +6318,7 @@ __STATIC_INLINE void LL_ADC_SetOverSamplingScope(ADC_TypeDef *ADCx, uint32_t Ovs * @arg @ref LL_ADC_OVS_GRP_INJECTED * @arg @ref LL_ADC_OVS_GRP_INJ_REG_RESUMED */ -__STATIC_INLINE uint32_t LL_ADC_GetOverSamplingScope(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_GetOverSamplingScope(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->CFGR2, ADC_CFGR2_ROVSE | ADC_CFGR2_JOVSE | ADC_CFGR2_ROVSM)); } @@ -6364,7 +6364,7 @@ __STATIC_INLINE void LL_ADC_SetOverSamplingDiscont(ADC_TypeDef *ADCx, uint32_t O * @arg @ref LL_ADC_OVS_REG_CONT * @arg @ref LL_ADC_OVS_REG_DISCONT */ -__STATIC_INLINE uint32_t LL_ADC_GetOverSamplingDiscont(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_GetOverSamplingDiscont(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->CFGR2, ADC_CFGR2_TROVS)); } @@ -6441,7 +6441,7 @@ __STATIC_INLINE void LL_ADC_ConfigOverSamplingRatioShift(ADC_TypeDef *ADCx, uint * @arg @ref LL_ADC_OVS_RATIO_128 * @arg @ref LL_ADC_OVS_RATIO_256 */ -__STATIC_INLINE uint32_t LL_ADC_GetOverSamplingRatio(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_GetOverSamplingRatio(const ADC_TypeDef *ADCx) { #if defined(ADC_VER_V5_V90) if(ADCx==ADC3) @@ -6478,7 +6478,7 @@ __STATIC_INLINE uint32_t LL_ADC_GetOverSamplingRatio(ADC_TypeDef *ADCx) * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_10 * @arg @ref LL_ADC_OVS_SHIFT_RIGHT_11 */ -__STATIC_INLINE uint32_t LL_ADC_GetOverSamplingShift(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_GetOverSamplingShift(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->CFGR2, ADC_CFGR2_OVSS)); } @@ -6536,7 +6536,7 @@ __STATIC_INLINE void LL_ADC_SetBoostMode(ADC_TypeDef *ADCx, uint32_t BoostMode) * @param ADCx ADC instance * @retval 0: Boost disabled 1: Boost enabled */ -__STATIC_INLINE uint32_t LL_ADC_GetBoostMode(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_GetBoostMode(const ADC_TypeDef *ADCx) { if ((DBGMCU->IDCODE & 0x30000000UL) == 0x10000000UL) /* Cut 1.x */ { @@ -6598,7 +6598,7 @@ __STATIC_INLINE void LL_ADC_SetMultimode(ADC_Common_TypeDef *ADCxy_COMMON, uint3 * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT * @arg @ref LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM */ -__STATIC_INLINE uint32_t LL_ADC_GetMultimode(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_GetMultimode(const ADC_Common_TypeDef *ADCxy_COMMON) { return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_DUAL)); } @@ -6689,7 +6689,7 @@ __STATIC_INLINE void LL_ADC_SetMultiDMATransfer(ADC_Common_TypeDef *ADCxy_COMMON * @arg @ref LL_ADC_MULTI_REG_DMA_RES_32_10B * @arg @ref LL_ADC_MULTI_REG_DMA_RES_8B */ -__STATIC_INLINE uint32_t LL_ADC_GetMultiDMATransfer(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_GetMultiDMATransfer(const ADC_Common_TypeDef *ADCxy_COMMON) { return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_DAMDF)); } @@ -6767,7 +6767,7 @@ __STATIC_INLINE void LL_ADC_SetMultiTwoSamplingDelay(ADC_Common_TypeDef *ADCxy_C * (6) Parameter available only if ADC resolution is 12 bits. * (7) Parameter available only if ADC resolution is 16 or 14 bits. */ -__STATIC_INLINE uint32_t LL_ADC_GetMultiTwoSamplingDelay(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_GetMultiTwoSamplingDelay(const ADC_Common_TypeDef *ADCxy_COMMON) { return (uint32_t)(READ_BIT(ADCxy_COMMON->CCR, ADC_CCR_DELAY)); } @@ -6829,7 +6829,7 @@ __STATIC_INLINE void LL_ADC_DisableDeepPowerDown(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval 0: deep power down is disabled, 1: deep power down is enabled. */ -__STATIC_INLINE uint32_t LL_ADC_IsDeepPowerDownEnabled(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsDeepPowerDownEnabled(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->CR, ADC_CR_DEEPPWD) == (ADC_CR_DEEPPWD)) ? 1UL : 0UL); } @@ -6878,7 +6878,7 @@ __STATIC_INLINE void LL_ADC_DisableInternalRegulator(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval 0: internal regulator is disabled, 1: internal regulator is enabled. */ -__STATIC_INLINE uint32_t LL_ADC_IsInternalRegulatorEnabled(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsInternalRegulatorEnabled(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->CR, ADC_CR_ADVREGEN) == (ADC_CR_ADVREGEN)) ? 1UL : 0UL); } @@ -6938,7 +6938,7 @@ __STATIC_INLINE void LL_ADC_Disable(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval 0: ADC is disabled, 1: ADC is enabled. */ -__STATIC_INLINE uint32_t LL_ADC_IsEnabled(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsEnabled(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->CR, ADC_CR_ADEN) == (ADC_CR_ADEN)) ? 1UL : 0UL); } @@ -6949,7 +6949,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsEnabled(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval 0: no ADC disable command on going. */ -__STATIC_INLINE uint32_t LL_ADC_IsDisableOngoing(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsDisableOngoing(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->CR, ADC_CR_ADDIS) == (ADC_CR_ADDIS)) ? 1UL : 0UL); } @@ -7003,7 +7003,7 @@ __STATIC_INLINE void LL_ADC_StartCalibration(ADC_TypeDef *ADCx, uint32_t Calibra * @param ADCx ADC instance * @retval 0: calibration complete, 1: calibration in progress. */ -__STATIC_INLINE uint32_t LL_ADC_IsCalibrationOnGoing(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsCalibrationOnGoing(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->CR, ADC_CR_ADCAL) == (ADC_CR_ADCAL)) ? 1UL : 0UL); } @@ -7070,7 +7070,7 @@ __STATIC_INLINE void LL_ADC_REG_StopConversion(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval 0: no conversion is on going on ADC group regular. */ -__STATIC_INLINE uint32_t LL_ADC_REG_IsConversionOngoing(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_REG_IsConversionOngoing(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->CR, ADC_CR_ADSTART) == (ADC_CR_ADSTART)) ? 1UL : 0UL); } @@ -7081,7 +7081,7 @@ __STATIC_INLINE uint32_t LL_ADC_REG_IsConversionOngoing(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval 0: no command of conversion stop is on going on ADC group regular. */ -__STATIC_INLINE uint32_t LL_ADC_REG_IsStopConversionOngoing(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_REG_IsStopConversionOngoing(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->CR, ADC_CR_ADSTP) == (ADC_CR_ADSTP)) ? 1UL : 0UL); } @@ -7095,7 +7095,7 @@ __STATIC_INLINE uint32_t LL_ADC_REG_IsStopConversionOngoing(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_ADC_REG_ReadConversionData32(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_REG_ReadConversionData32(const ADC_TypeDef *ADCx) { return (uint32_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA)); } @@ -7110,7 +7110,7 @@ __STATIC_INLINE uint32_t LL_ADC_REG_ReadConversionData32(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval Value between Min_Data=0x00 and Max_Data=0xFFFF */ -__STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData16(ADC_TypeDef *ADCx) +__STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData16(const ADC_TypeDef *ADCx) { return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA)); } @@ -7125,7 +7125,7 @@ __STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData16(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval Value between Min_Data=0x00 and Max_Data=0x3FF */ -__STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData14(ADC_TypeDef *ADCx) +__STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData14(const ADC_TypeDef *ADCx) { return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA)); } @@ -7140,7 +7140,7 @@ __STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData14(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval Value between Min_Data=0x000 and Max_Data=0xFFF */ -__STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData12(ADC_TypeDef *ADCx) +__STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData12(const ADC_TypeDef *ADCx) { return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA)); } @@ -7155,7 +7155,7 @@ __STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData12(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval Value between Min_Data=0x000 and Max_Data=0x3FF */ -__STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData10(ADC_TypeDef *ADCx) +__STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData10(const ADC_TypeDef *ADCx) { return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA)); } @@ -7170,7 +7170,7 @@ __STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData10(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval Value between Min_Data=0x00 and Max_Data=0xFF */ -__STATIC_INLINE uint8_t LL_ADC_REG_ReadConversionData8(ADC_TypeDef *ADCx) +__STATIC_INLINE uint8_t LL_ADC_REG_ReadConversionData8(const ADC_TypeDef *ADCx) { return (uint8_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA)); } @@ -7195,7 +7195,7 @@ __STATIC_INLINE uint8_t LL_ADC_REG_ReadConversionData8(ADC_TypeDef *ADCx) * @arg @ref LL_ADC_MULTI_MASTER_SLAVE * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_ADC_REG_ReadMultiConversionData32(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t ConversionData) +__STATIC_INLINE uint32_t LL_ADC_REG_ReadMultiConversionData32(const ADC_Common_TypeDef *ADCxy_COMMON, uint32_t ConversionData) { return (uint32_t)(READ_BIT(ADCxy_COMMON->CDR, ConversionData) @@ -7265,7 +7265,7 @@ __STATIC_INLINE void LL_ADC_INJ_StopConversion(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval 0: no conversion is on going on ADC group injected. */ -__STATIC_INLINE uint32_t LL_ADC_INJ_IsConversionOngoing(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_INJ_IsConversionOngoing(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->CR, ADC_CR_JADSTART) == (ADC_CR_JADSTART)) ? 1UL : 0UL); } @@ -7276,7 +7276,7 @@ __STATIC_INLINE uint32_t LL_ADC_INJ_IsConversionOngoing(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval 0: no command of conversion stop is on going on ADC group injected. */ -__STATIC_INLINE uint32_t LL_ADC_INJ_IsStopConversionOngoing(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_INJ_IsStopConversionOngoing(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->CR, ADC_CR_JADSTP) == (ADC_CR_JADSTP)) ? 1UL : 0UL); } @@ -7298,7 +7298,7 @@ __STATIC_INLINE uint32_t LL_ADC_INJ_IsStopConversionOngoing(ADC_TypeDef *ADCx) * @arg @ref LL_ADC_INJ_RANK_4 * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_ADC_INJ_ReadConversionData32(ADC_TypeDef *ADCx, uint32_t Rank) +__STATIC_INLINE uint32_t LL_ADC_INJ_ReadConversionData32(const ADC_TypeDef *ADCx, uint32_t Rank) { const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, ((Rank & ADC_INJ_JDRX_REGOFFSET_MASK) >> ADC_JDRX_REGOFFSET_POS)); @@ -7325,7 +7325,7 @@ __STATIC_INLINE uint32_t LL_ADC_INJ_ReadConversionData32(ADC_TypeDef *ADCx, uint * @arg @ref LL_ADC_INJ_RANK_4 * @retval Value between Min_Data=0x000 and Max_Data=0xFFFF */ -__STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData16(ADC_TypeDef *ADCx, uint32_t Rank) +__STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData16(const ADC_TypeDef *ADCx, uint32_t Rank) { const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, ((Rank & ADC_INJ_JDRX_REGOFFSET_MASK) >> ADC_JDRX_REGOFFSET_POS)); @@ -7352,7 +7352,7 @@ __STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData16(ADC_TypeDef *ADCx, uint * @arg @ref LL_ADC_INJ_RANK_4 * @retval Value between Min_Data=0x000 and Max_Data=0x3FFF */ -__STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData14(ADC_TypeDef *ADCx, uint32_t Rank) +__STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData14(const ADC_TypeDef *ADCx, uint32_t Rank) { const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, ((Rank & ADC_INJ_JDRX_REGOFFSET_MASK) >> ADC_JDRX_REGOFFSET_POS)); @@ -7379,7 +7379,7 @@ __STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData14(ADC_TypeDef *ADCx, uint * @arg @ref LL_ADC_INJ_RANK_4 * @retval Value between Min_Data=0x000 and Max_Data=0xFFF */ -__STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData12(ADC_TypeDef *ADCx, uint32_t Rank) +__STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData12(const ADC_TypeDef *ADCx, uint32_t Rank) { const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, ((Rank & ADC_INJ_JDRX_REGOFFSET_MASK) >> ADC_JDRX_REGOFFSET_POS)); @@ -7406,7 +7406,7 @@ __STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData12(ADC_TypeDef *ADCx, uint * @arg @ref LL_ADC_INJ_RANK_4 * @retval Value between Min_Data=0x000 and Max_Data=0x3FF */ -__STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData10(ADC_TypeDef *ADCx, uint32_t Rank) +__STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData10(const ADC_TypeDef *ADCx, uint32_t Rank) { const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, ((Rank & ADC_INJ_JDRX_REGOFFSET_MASK) >> ADC_JDRX_REGOFFSET_POS)); @@ -7433,7 +7433,7 @@ __STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData10(ADC_TypeDef *ADCx, uint * @arg @ref LL_ADC_INJ_RANK_4 * @retval Value between Min_Data=0x00 and Max_Data=0xFF */ -__STATIC_INLINE uint8_t LL_ADC_INJ_ReadConversionData8(ADC_TypeDef *ADCx, uint32_t Rank) +__STATIC_INLINE uint8_t LL_ADC_INJ_ReadConversionData8(const ADC_TypeDef *ADCx, uint32_t Rank) { const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, ((Rank & ADC_INJ_JDRX_REGOFFSET_MASK) >> ADC_JDRX_REGOFFSET_POS)); @@ -7459,7 +7459,7 @@ __STATIC_INLINE uint8_t LL_ADC_INJ_ReadConversionData8(ADC_TypeDef *ADCx, uint32 * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_ADRDY(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_ADRDY(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->ISR, LL_ADC_FLAG_ADRDY) == (LL_ADC_FLAG_ADRDY)) ? 1UL : 0UL); } @@ -7470,7 +7470,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_ADRDY(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOC(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOC(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->ISR, ADC_ISR_EOC) == (ADC_ISR_EOC)) ? 1UL : 0UL); } @@ -7481,7 +7481,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOC(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOS(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOS(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->ISR, LL_ADC_FLAG_EOS) == (LL_ADC_FLAG_EOS)) ? 1UL : 0UL); } @@ -7492,7 +7492,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOS(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_OVR(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_OVR(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->ISR, LL_ADC_FLAG_OVR) == (LL_ADC_FLAG_OVR)) ? 1UL : 0UL); } @@ -7503,7 +7503,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_OVR(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOSMP(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOSMP(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->ISR, LL_ADC_FLAG_EOSMP) == (LL_ADC_FLAG_EOSMP)) ? 1UL : 0UL); } @@ -7514,7 +7514,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOSMP(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JEOC(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JEOC(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->ISR, LL_ADC_FLAG_JEOC) == (LL_ADC_FLAG_JEOC)) ? 1UL : 0UL); } @@ -7525,7 +7525,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JEOC(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JEOS(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JEOS(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->ISR, LL_ADC_FLAG_JEOS) == (LL_ADC_FLAG_JEOS)) ? 1UL : 0UL); } @@ -7536,7 +7536,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JEOS(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JQOVF(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JQOVF(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->ISR, LL_ADC_FLAG_JQOVF) == (LL_ADC_FLAG_JQOVF)) ? 1UL : 0UL); } @@ -7547,7 +7547,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JQOVF(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_LDORDY(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_LDORDY(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->ISR, LL_ADC_FLAG_LDORDY) == (LL_ADC_FLAG_LDORDY)) ? 1UL : 0UL); } @@ -7558,7 +7558,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_LDORDY(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD1(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD1(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->ISR, LL_ADC_FLAG_AWD1) == (LL_ADC_FLAG_AWD1)) ? 1UL : 0UL); } @@ -7569,7 +7569,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD1(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD2(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD2(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->ISR, LL_ADC_FLAG_AWD2) == (LL_ADC_FLAG_AWD2)) ? 1UL : 0UL); } @@ -7580,7 +7580,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD2(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD3(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD3(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->ISR, LL_ADC_FLAG_AWD3) == (LL_ADC_FLAG_AWD3)) ? 1UL : 0UL); } @@ -7716,7 +7716,7 @@ __STATIC_INLINE void LL_ADC_ClearFlag_AWD3(ADC_TypeDef *ADCx) * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_ADRDY(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_ADRDY(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_ADRDY_MST) == (LL_ADC_FLAG_ADRDY_MST)) ? 1UL : 0UL); } @@ -7728,7 +7728,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_ADRDY(ADC_Common_TypeDef *ADCxy * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_ADRDY(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_ADRDY(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_ADRDY_SLV) == (LL_ADC_FLAG_ADRDY_SLV)) ? 1UL : 0UL); } @@ -7740,7 +7740,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_ADRDY(ADC_Common_TypeDef *ADCxy * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOC(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOC(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOC_SLV) == (LL_ADC_FLAG_EOC_SLV)) ? 1UL : 0UL); } @@ -7752,7 +7752,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOC(ADC_Common_TypeDef *ADCxy_C * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOC(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOC(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOC_SLV) == (LL_ADC_FLAG_EOC_SLV)) ? 1UL : 0UL); } @@ -7764,7 +7764,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOC(ADC_Common_TypeDef *ADCxy_C * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOS(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOS(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOS_MST) == (LL_ADC_FLAG_EOS_MST)) ? 1UL : 0UL); } @@ -7776,7 +7776,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOS(ADC_Common_TypeDef *ADCxy_C * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOS(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOS(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOS_SLV) == (LL_ADC_FLAG_EOS_SLV)) ? 1UL : 0UL); } @@ -7788,7 +7788,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOS(ADC_Common_TypeDef *ADCxy_C * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_OVR(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_OVR(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_OVR_MST) == (LL_ADC_FLAG_OVR_MST)) ? 1UL : 0UL); } @@ -7800,7 +7800,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_OVR(ADC_Common_TypeDef *ADCxy_C * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_OVR(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_OVR(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_OVR_SLV) == (LL_ADC_FLAG_OVR_SLV)) ? 1UL : 0UL); } @@ -7812,7 +7812,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_OVR(ADC_Common_TypeDef *ADCxy_C * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOSMP(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOSMP(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOSMP_MST) == (LL_ADC_FLAG_EOSMP_MST)) ? 1UL : 0UL); } @@ -7824,7 +7824,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOSMP(ADC_Common_TypeDef *ADCxy * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOSMP(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOSMP(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_EOSMP_SLV) == (LL_ADC_FLAG_EOSMP_SLV)) ? 1UL : 0UL); } @@ -7836,7 +7836,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOSMP(ADC_Common_TypeDef *ADCxy * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JEOC(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JEOC(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JEOC_MST) == (LL_ADC_FLAG_JEOC_MST)) ? 1UL : 0UL); } @@ -7848,7 +7848,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JEOC(ADC_Common_TypeDef *ADCxy_ * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JEOC(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JEOC(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JEOC_SLV) == (LL_ADC_FLAG_JEOC_SLV)) ? 1UL : 0UL); } @@ -7860,7 +7860,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JEOC(ADC_Common_TypeDef *ADCxy_ * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JEOS(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JEOS(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JEOS_MST) == (LL_ADC_FLAG_JEOS_MST)) ? 1UL : 0UL); } @@ -7872,7 +7872,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JEOS(ADC_Common_TypeDef *ADCxy_ * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JEOS(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JEOS(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JEOS_SLV) == (LL_ADC_FLAG_JEOS_SLV)) ? 1UL : 0UL); } @@ -7884,7 +7884,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JEOS(ADC_Common_TypeDef *ADCxy_ * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JQOVF(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JQOVF(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JQOVF_MST) == (LL_ADC_FLAG_JQOVF_MST)) ? 1UL : 0UL); } @@ -7896,7 +7896,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JQOVF(ADC_Common_TypeDef *ADCxy * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JQOVF(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JQOVF(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_JQOVF_SLV) == (LL_ADC_FLAG_JQOVF_SLV)) ? 1UL : 0UL); } @@ -7908,7 +7908,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JQOVF(ADC_Common_TypeDef *ADCxy * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD1(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD1(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD1_MST) == (LL_ADC_FLAG_AWD1_MST)) ? 1UL : 0UL); } @@ -7920,7 +7920,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD1(ADC_Common_TypeDef *ADCxy_ * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_AWD1(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_AWD1(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD1_SLV) == (LL_ADC_FLAG_AWD1_SLV)) ? 1UL : 0UL); } @@ -7932,7 +7932,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_AWD1(ADC_Common_TypeDef *ADCxy_ * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD2(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD2(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD2_MST) == (LL_ADC_FLAG_AWD2_MST)) ? 1UL : 0UL); } @@ -7944,7 +7944,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD2(ADC_Common_TypeDef *ADCxy_ * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_AWD2(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_AWD2(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD2_SLV) == (LL_ADC_FLAG_AWD2_SLV)) ? 1UL : 0UL); } @@ -7956,7 +7956,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_AWD2(ADC_Common_TypeDef *ADCxy_ * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD3(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD3(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD3_MST) == (LL_ADC_FLAG_AWD3_MST)) ? 1UL : 0UL); } @@ -7968,7 +7968,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD3(ADC_Common_TypeDef *ADCxy_ * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_AWD3(ADC_Common_TypeDef *ADCxy_COMMON) +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_AWD3(const ADC_Common_TypeDef *ADCxy_COMMON) { return ((READ_BIT(ADCxy_COMMON->CSR, LL_ADC_FLAG_AWD3_SLV) == (LL_ADC_FLAG_AWD3_SLV)) ? 1UL : 0UL); } @@ -8230,7 +8230,7 @@ __STATIC_INLINE void LL_ADC_DisableIT_AWD3(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_ADRDY(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_ADRDY(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->IER, LL_ADC_IT_ADRDY) == (LL_ADC_IT_ADRDY)) ? 1UL : 0UL); } @@ -8242,7 +8242,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_ADRDY(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOC(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOC(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->IER, LL_ADC_IT_EOC) == (LL_ADC_IT_EOC)) ? 1UL : 0UL); } @@ -8254,7 +8254,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOC(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOS(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOS(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->IER, LL_ADC_IT_EOS) == (LL_ADC_IT_EOS)) ? 1UL : 0UL); } @@ -8266,7 +8266,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOS(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_OVR(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_OVR(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->IER, LL_ADC_IT_OVR) == (LL_ADC_IT_OVR)) ? 1UL : 0UL); } @@ -8278,7 +8278,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_OVR(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOSMP(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOSMP(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->IER, LL_ADC_IT_EOSMP) == (LL_ADC_IT_EOSMP)) ? 1UL : 0UL); } @@ -8290,7 +8290,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOSMP(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JEOC(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JEOC(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->IER, LL_ADC_IT_JEOC) == (LL_ADC_IT_JEOC)) ? 1UL : 0UL); } @@ -8302,7 +8302,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JEOC(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JEOS(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JEOS(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->IER, LL_ADC_IT_JEOS) == (LL_ADC_IT_JEOS)) ? 1UL : 0UL); } @@ -8314,7 +8314,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JEOS(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JQOVF(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JQOVF(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->IER, LL_ADC_IT_JQOVF) == (LL_ADC_IT_JQOVF)) ? 1UL : 0UL); } @@ -8326,7 +8326,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JQOVF(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD1(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD1(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->IER, LL_ADC_IT_AWD1) == (LL_ADC_IT_AWD1)) ? 1UL : 0UL); } @@ -8338,7 +8338,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD1(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD2(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD2(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->IER, LL_ADC_IT_AWD2) == (LL_ADC_IT_AWD2)) ? 1UL : 0UL); } @@ -8350,7 +8350,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD2(ADC_TypeDef *ADCx) * @param ADCx ADC instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD3(ADC_TypeDef *ADCx) +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD3(const ADC_TypeDef *ADCx) { return ((READ_BIT(ADCx->IER, LL_ADC_IT_AWD3) == (LL_ADC_IT_AWD3)) ? 1UL : 0UL); } @@ -8365,7 +8365,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD3(ADC_TypeDef *ADCx) */ /* Initialization of some features of ADC common parameters and multimode */ -ErrorStatus LL_ADC_CommonDeInit(ADC_Common_TypeDef *ADCxy_COMMON); +ErrorStatus LL_ADC_CommonDeInit(const ADC_Common_TypeDef *ADCxy_COMMON); ErrorStatus LL_ADC_CommonInit(ADC_Common_TypeDef *ADCxy_COMMON, LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct); void LL_ADC_CommonStructInit(LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_bdma.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_bdma.h index 8db1b7cc..72b747a6 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_bdma.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_bdma.h @@ -132,7 +132,7 @@ typedef struct This feature can be modified afterwards using unitary function @ref LL_BDMA_SetDataLength(). */ uint32_t PeriphRequest; /*!< Specifies the peripheral request. - This parameter can be a value of @ref DMAMUX2_Request_selection + This parameter can be a value of @ref DMAMUX_LL_EC_REQUEST This feature can be modified afterwards using unitary function @ref LL_BDMA_SetPeriphRequest(). */ @@ -499,7 +499,7 @@ LL_BDMA_CHANNEL_7) * @arg @ref LL_BDMA_CHANNEL_7 * @retval None */ -__STATIC_INLINE void LL_BDMA_EnableChannel(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE void LL_BDMA_EnableChannel(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -521,7 +521,7 @@ __STATIC_INLINE void LL_BDMA_EnableChannel(BDMA_TypeDef *BDMAx, uint32_t Channel * @arg @ref LL_BDMA_CHANNEL_7 * @retval None */ -__STATIC_INLINE void LL_BDMA_DisableChannel(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE void LL_BDMA_DisableChannel(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -543,7 +543,7 @@ __STATIC_INLINE void LL_BDMA_DisableChannel(BDMA_TypeDef *BDMAx, uint32_t Channe * @arg @ref LL_BDMA_CHANNEL_7 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsEnabledChannel(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_IsEnabledChannel(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -584,7 +584,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsEnabledChannel(BDMA_TypeDef *BDMAx, uint32_t * @arg @ref LL_BDMA_CURRENTTARGETMEM0 or @ref LL_BDMA_CURRENTTARGETMEM1 * @retval None */ -__STATIC_INLINE void LL_BDMA_ConfigTransfer(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Configuration) +__STATIC_INLINE void LL_BDMA_ConfigTransfer(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Configuration) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -613,7 +613,7 @@ __STATIC_INLINE void LL_BDMA_ConfigTransfer(BDMA_TypeDef *BDMAx, uint32_t Channe * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_MEMORY * @retval None */ -__STATIC_INLINE void LL_BDMA_SetDataTransferDirection(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Direction) +__STATIC_INLINE void LL_BDMA_SetDataTransferDirection(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Direction) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -640,7 +640,7 @@ __STATIC_INLINE void LL_BDMA_SetDataTransferDirection(BDMA_TypeDef *BDMAx, uint3 * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_PERIPH * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_MEMORY */ -__STATIC_INLINE uint32_t LL_BDMA_GetDataTransferDirection(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_GetDataTransferDirection(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -668,7 +668,7 @@ __STATIC_INLINE uint32_t LL_BDMA_GetDataTransferDirection(BDMA_TypeDef *BDMAx, u * @arg @ref LL_BDMA_MODE_CIRCULAR * @retval None */ -__STATIC_INLINE void LL_BDMA_SetMode(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Mode) +__STATIC_INLINE void LL_BDMA_SetMode(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Mode) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -693,7 +693,7 @@ __STATIC_INLINE void LL_BDMA_SetMode(BDMA_TypeDef *BDMAx, uint32_t Channel, uint * @arg @ref LL_BDMA_MODE_NORMAL * @arg @ref LL_BDMA_MODE_CIRCULAR */ -__STATIC_INLINE uint32_t LL_BDMA_GetMode(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_GetMode(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -719,7 +719,7 @@ __STATIC_INLINE uint32_t LL_BDMA_GetMode(BDMA_TypeDef *BDMAx, uint32_t Channel) * @arg @ref LL_BDMA_PERIPH_NOINCREMENT * @retval None */ -__STATIC_INLINE void LL_BDMA_SetPeriphIncMode(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcIncMode) +__STATIC_INLINE void LL_BDMA_SetPeriphIncMode(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcIncMode) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -744,7 +744,7 @@ __STATIC_INLINE void LL_BDMA_SetPeriphIncMode(BDMA_TypeDef *BDMAx, uint32_t Chan * @arg @ref LL_BDMA_PERIPH_INCREMENT * @arg @ref LL_BDMA_PERIPH_NOINCREMENT */ -__STATIC_INLINE uint32_t LL_BDMA_GetPeriphIncMode(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_GetPeriphIncMode(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -770,7 +770,7 @@ __STATIC_INLINE uint32_t LL_BDMA_GetPeriphIncMode(BDMA_TypeDef *BDMAx, uint32_t * @arg @ref LL_BDMA_MEMORY_NOINCREMENT * @retval None */ -__STATIC_INLINE void LL_BDMA_SetMemoryIncMode(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryOrM2MDstIncMode) +__STATIC_INLINE void LL_BDMA_SetMemoryIncMode(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryOrM2MDstIncMode) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -795,7 +795,7 @@ __STATIC_INLINE void LL_BDMA_SetMemoryIncMode(BDMA_TypeDef *BDMAx, uint32_t Chan * @arg @ref LL_BDMA_MEMORY_INCREMENT * @arg @ref LL_BDMA_MEMORY_NOINCREMENT */ -__STATIC_INLINE uint32_t LL_BDMA_GetMemoryIncMode(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_GetMemoryIncMode(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -822,7 +822,7 @@ __STATIC_INLINE uint32_t LL_BDMA_GetMemoryIncMode(BDMA_TypeDef *BDMAx, uint32_t * @arg @ref LL_BDMA_PDATAALIGN_WORD * @retval None */ -__STATIC_INLINE void LL_BDMA_SetPeriphSize(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcDataSize) +__STATIC_INLINE void LL_BDMA_SetPeriphSize(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcDataSize) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -848,7 +848,7 @@ __STATIC_INLINE void LL_BDMA_SetPeriphSize(BDMA_TypeDef *BDMAx, uint32_t Channel * @arg @ref LL_BDMA_PDATAALIGN_HALFWORD * @arg @ref LL_BDMA_PDATAALIGN_WORD */ -__STATIC_INLINE uint32_t LL_BDMA_GetPeriphSize(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_GetPeriphSize(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -875,7 +875,7 @@ __STATIC_INLINE uint32_t LL_BDMA_GetPeriphSize(BDMA_TypeDef *BDMAx, uint32_t Cha * @arg @ref LL_BDMA_MDATAALIGN_WORD * @retval None */ -__STATIC_INLINE void LL_BDMA_SetMemorySize(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryOrM2MDstDataSize) +__STATIC_INLINE void LL_BDMA_SetMemorySize(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryOrM2MDstDataSize) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -901,7 +901,7 @@ __STATIC_INLINE void LL_BDMA_SetMemorySize(BDMA_TypeDef *BDMAx, uint32_t Channel * @arg @ref LL_BDMA_MDATAALIGN_HALFWORD * @arg @ref LL_BDMA_MDATAALIGN_WORD */ -__STATIC_INLINE uint32_t LL_BDMA_GetMemorySize(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_GetMemorySize(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -929,7 +929,7 @@ __STATIC_INLINE uint32_t LL_BDMA_GetMemorySize(BDMA_TypeDef *BDMAx, uint32_t Cha * @arg @ref LL_BDMA_PRIORITY_VERYHIGH * @retval None */ -__STATIC_INLINE void LL_BDMA_SetChannelPriorityLevel(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Priority) +__STATIC_INLINE void LL_BDMA_SetChannelPriorityLevel(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Priority) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -956,7 +956,7 @@ __STATIC_INLINE void LL_BDMA_SetChannelPriorityLevel(BDMA_TypeDef *BDMAx, uint32 * @arg @ref LL_BDMA_PRIORITY_HIGH * @arg @ref LL_BDMA_PRIORITY_VERYHIGH */ -__STATIC_INLINE uint32_t LL_BDMA_GetChannelPriorityLevel(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_GetChannelPriorityLevel(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -982,7 +982,7 @@ __STATIC_INLINE uint32_t LL_BDMA_GetChannelPriorityLevel(BDMA_TypeDef *BDMAx, ui * @param NbData Between Min_Data = 0 and Max_Data = 0x0000FFFF * @retval None */ -__STATIC_INLINE void LL_BDMA_SetDataLength(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t NbData) +__STATIC_INLINE void LL_BDMA_SetDataLength(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t NbData) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1007,7 +1007,7 @@ __STATIC_INLINE void LL_BDMA_SetDataLength(BDMA_TypeDef *BDMAx, uint32_t Channel * @arg @ref LL_BDMA_CHANNEL_7 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_BDMA_GetDataLength(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_GetDataLength(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1033,7 +1033,7 @@ __STATIC_INLINE uint32_t LL_BDMA_GetDataLength(BDMA_TypeDef *BDMAx, uint32_t Cha * @arg @ref LL_BDMA_CURRENTTARGETMEM1 * @retval None */ -__STATIC_INLINE void LL_BDMA_SetCurrentTargetMem(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t CurrentMemory) +__STATIC_INLINE void LL_BDMA_SetCurrentTargetMem(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t CurrentMemory) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1057,7 +1057,7 @@ __STATIC_INLINE void LL_BDMA_SetCurrentTargetMem(BDMA_TypeDef *BDMAx, uint32_t C * @arg @ref LL_BDMA_CURRENTTARGETMEM0 * @arg @ref LL_BDMA_CURRENTTARGETMEM1 */ -__STATIC_INLINE uint32_t LL_BDMA_GetCurrentTargetMem(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_GetCurrentTargetMem(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1079,7 +1079,7 @@ __STATIC_INLINE uint32_t LL_BDMA_GetCurrentTargetMem(BDMA_TypeDef *BDMAx, uint32 * @arg @ref LL_BDMA_CHANNEL_7 * @retval None */ -__STATIC_INLINE void LL_BDMA_EnableDoubleBufferMode(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE void LL_BDMA_EnableDoubleBufferMode(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1101,7 +1101,7 @@ __STATIC_INLINE void LL_BDMA_EnableDoubleBufferMode(BDMA_TypeDef *BDMAx, uint32_ * @arg @ref LL_BDMA_CHANNEL_7 * @retval None */ -__STATIC_INLINE void LL_BDMA_DisableDoubleBufferMode(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE void LL_BDMA_DisableDoubleBufferMode(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1123,7 +1123,7 @@ __STATIC_INLINE void LL_BDMA_DisableDoubleBufferMode(BDMA_TypeDef *BDMAx, uint32 * @arg @ref LL_BDMA_CHANNEL_7 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsEnabledDoubleBufferMode(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_IsEnabledDoubleBufferMode(const BDMA_TypeDef *BDMAx, uint32_t Channel) { register uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1154,7 +1154,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsEnabledDoubleBufferMode(BDMA_TypeDef *BDMAx, * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_MEMORY * @retval None */ -__STATIC_INLINE void LL_BDMA_ConfigAddresses(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t SrcAddress, +__STATIC_INLINE void LL_BDMA_ConfigAddresses(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t SrcAddress, uint32_t DstAddress, uint32_t Direction) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1191,7 +1191,7 @@ __STATIC_INLINE void LL_BDMA_ConfigAddresses(BDMA_TypeDef *BDMAx, uint32_t Chann * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_BDMA_SetMemoryAddress(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryAddress) +__STATIC_INLINE void LL_BDMA_SetMemoryAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryAddress) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1216,7 +1216,7 @@ __STATIC_INLINE void LL_BDMA_SetMemoryAddress(BDMA_TypeDef *BDMAx, uint32_t Chan * @param PeriphAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_BDMA_SetPeriphAddress(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t PeriphAddress) +__STATIC_INLINE void LL_BDMA_SetPeriphAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t PeriphAddress) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1239,7 +1239,7 @@ __STATIC_INLINE void LL_BDMA_SetPeriphAddress(BDMA_TypeDef *BDMAx, uint32_t Chan * @arg @ref LL_BDMA_CHANNEL_7 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_BDMA_GetMemoryAddress(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_GetMemoryAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1262,7 +1262,7 @@ __STATIC_INLINE uint32_t LL_BDMA_GetMemoryAddress(BDMA_TypeDef *BDMAx, uint32_t * @arg @ref LL_BDMA_CHANNEL_7 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_BDMA_GetPeriphAddress(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_GetPeriphAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1287,7 +1287,7 @@ __STATIC_INLINE uint32_t LL_BDMA_GetPeriphAddress(BDMA_TypeDef *BDMAx, uint32_t * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_BDMA_SetM2MSrcAddress(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryAddress) +__STATIC_INLINE void LL_BDMA_SetM2MSrcAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryAddress) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1312,7 +1312,7 @@ __STATIC_INLINE void LL_BDMA_SetM2MSrcAddress(BDMA_TypeDef *BDMAx, uint32_t Chan * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_BDMA_SetM2MDstAddress(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryAddress) +__STATIC_INLINE void LL_BDMA_SetM2MDstAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryAddress) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1335,7 +1335,7 @@ __STATIC_INLINE void LL_BDMA_SetM2MDstAddress(BDMA_TypeDef *BDMAx, uint32_t Chan * @arg @ref LL_BDMA_CHANNEL_7 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_BDMA_GetM2MSrcAddress(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_GetM2MSrcAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1358,7 +1358,7 @@ __STATIC_INLINE uint32_t LL_BDMA_GetM2MSrcAddress(BDMA_TypeDef *BDMAx, uint32_t * @arg @ref LL_BDMA_CHANNEL_7 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_BDMA_GetM2MDstAddress(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_GetM2MDstAddress(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1381,7 +1381,7 @@ __STATIC_INLINE uint32_t LL_BDMA_GetM2MDstAddress(BDMA_TypeDef *BDMAx, uint32_t * @param Address Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_BDMA_SetMemory1Address(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Address) +__STATIC_INLINE void LL_BDMA_SetMemory1Address(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Address) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1403,7 +1403,7 @@ __STATIC_INLINE void LL_BDMA_SetMemory1Address(BDMA_TypeDef *BDMAx, uint32_t Cha * @arg @ref LL_BDMA_CHANNEL_7 * @retval Between 0 to 0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_BDMA_GetMemory1Address(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_GetMemory1Address(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -1449,7 +1449,7 @@ __STATIC_INLINE uint32_t LL_BDMA_GetMemory1Address(BDMA_TypeDef *BDMAx, uint32_t * @note (*) Availability depends on devices. * @retval None */ -__STATIC_INLINE void LL_BDMA_SetPeriphRequest(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Request) +__STATIC_INLINE void LL_BDMA_SetPeriphRequest(const BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Request) { UNUSED(BDMAx); MODIFY_REG(((DMAMUX_Channel_TypeDef *)(uint32_t)((uint32_t)DMAMUX2_Channel0 + (DMAMUX_CCR_SIZE * (Channel))))->CCR, DMAMUX_CxCR_DMAREQ_ID, Request); @@ -1493,7 +1493,7 @@ __STATIC_INLINE void LL_BDMA_SetPeriphRequest(BDMA_TypeDef *BDMAx, uint32_t Chan * * @note (*) Availability depends on devices. */ -__STATIC_INLINE uint32_t LL_BDMA_GetPeriphRequest(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_GetPeriphRequest(const BDMA_TypeDef *BDMAx, uint32_t Channel) { UNUSED(BDMAx); return (READ_BIT(((DMAMUX_Channel_TypeDef *)((uint32_t)((uint32_t)DMAMUX2_Channel0 + (DMAMUX_CCR_SIZE * (Channel)))))->CCR, DMAMUX_CxCR_DMAREQ_ID)); @@ -1513,7 +1513,7 @@ __STATIC_INLINE uint32_t LL_BDMA_GetPeriphRequest(BDMA_TypeDef *BDMAx, uint32_t * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI0(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI0(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF0) == (BDMA_ISR_GIF0)) ? 1UL : 0UL); } @@ -1524,7 +1524,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI0(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI1(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI1(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF1) == (BDMA_ISR_GIF1)) ? 1UL : 0UL); } @@ -1535,7 +1535,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI1(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI2(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI2(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF2) == (BDMA_ISR_GIF2)) ? 1UL : 0UL); } @@ -1546,7 +1546,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI2(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI3(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI3(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF3) == (BDMA_ISR_GIF3)) ? 1UL : 0UL); } @@ -1557,7 +1557,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI3(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI4(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI4(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF4) == (BDMA_ISR_GIF4)) ? 1UL : 0UL); } @@ -1568,7 +1568,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI4(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI5(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI5(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF5) == (BDMA_ISR_GIF5)) ? 1UL : 0UL); } @@ -1579,7 +1579,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI5(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI6(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI6(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF6) == (BDMA_ISR_GIF6)) ? 1UL : 0UL); } @@ -1590,7 +1590,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI6(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI7(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI7(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF7) == (BDMA_ISR_GIF7)) ? 1UL : 0UL); } @@ -1601,7 +1601,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI7(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC0(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC0(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF0) == (BDMA_ISR_TCIF0)) ? 1UL : 0UL); } @@ -1611,7 +1611,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC0(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC1(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC1(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF1) == (BDMA_ISR_TCIF1)) ? 1UL : 0UL); } @@ -1622,7 +1622,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC1(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC2(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC2(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF2) == (BDMA_ISR_TCIF2)) ? 1UL : 0UL); } @@ -1633,7 +1633,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC2(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC3(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC3(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF3) == (BDMA_ISR_TCIF3)) ? 1UL : 0UL); } @@ -1644,7 +1644,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC3(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC4(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC4(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF4) == (BDMA_ISR_TCIF4)) ? 1UL : 0UL); } @@ -1655,7 +1655,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC4(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC5(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC5(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF5) == (BDMA_ISR_TCIF5)) ? 1UL : 0UL); } @@ -1666,7 +1666,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC5(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC6(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC6(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF6) == (BDMA_ISR_TCIF6)) ? 1UL : 0UL); } @@ -1677,7 +1677,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC6(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC7(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC7(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF7) == (BDMA_ISR_TCIF7)) ? 1UL : 0UL); } @@ -1688,7 +1688,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC7(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT0(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT0(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF0) == (BDMA_ISR_HTIF0)) ? 1UL : 0UL); } @@ -1699,7 +1699,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT0(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT1(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT1(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF1) == (BDMA_ISR_HTIF1)) ? 1UL : 0UL); } @@ -1710,7 +1710,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT1(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT2(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT2(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF2) == (BDMA_ISR_HTIF2)) ? 1UL : 0UL); } @@ -1721,7 +1721,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT2(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT3(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT3(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF3) == (BDMA_ISR_HTIF3)) ? 1UL : 0UL); } @@ -1732,7 +1732,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT3(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT4(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT4(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF4) == (BDMA_ISR_HTIF4)) ? 1UL : 0UL); } @@ -1743,7 +1743,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT4(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT5(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT5(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF5) == (BDMA_ISR_HTIF5)) ? 1UL : 0UL); } @@ -1754,7 +1754,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT5(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT6(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT6(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF6) == (BDMA_ISR_HTIF6)) ? 1UL : 0UL); } @@ -1765,7 +1765,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT6(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT7(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT7(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF7) == (BDMA_ISR_HTIF7)) ? 1UL : 0UL); } @@ -1776,7 +1776,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT7(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE0(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE0(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF0) == (BDMA_ISR_TEIF0)) ? 1UL : 0UL); } @@ -1787,7 +1787,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE0(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE1(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE1(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF1) == (BDMA_ISR_TEIF1)) ? 1UL : 0UL); } @@ -1798,7 +1798,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE1(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE2(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE2(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF2) == (BDMA_ISR_TEIF2)) ? 1UL : 0UL); } @@ -1809,7 +1809,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE2(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE3(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE3(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF3) == (BDMA_ISR_TEIF3)) ? 1UL : 0UL); } @@ -1820,7 +1820,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE3(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE4(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE4(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF4) == (BDMA_ISR_TEIF4)) ? 1UL : 0UL); } @@ -1831,7 +1831,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE4(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE5(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE5(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF5) == (BDMA_ISR_TEIF5)) ? 1UL : 0UL); } @@ -1842,7 +1842,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE5(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE6(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE6(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF6) == (BDMA_ISR_TEIF6)) ? 1UL : 0UL); } @@ -1853,7 +1853,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE6(BDMA_TypeDef *BDMAx) * @param BDMAx BDMA Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE7(BDMA_TypeDef *BDMAx) +__STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE7(const BDMA_TypeDef *BDMAx) { return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF7) == (BDMA_ISR_TEIF7)) ? 1UL : 0UL); } @@ -2264,7 +2264,7 @@ __STATIC_INLINE void LL_BDMA_ClearFlag_TE7(BDMA_TypeDef *BDMAx) * @arg @ref LL_BDMA_CHANNEL_7 * @retval None */ -__STATIC_INLINE void LL_BDMA_EnableIT_TC(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE void LL_BDMA_EnableIT_TC(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -2286,7 +2286,7 @@ __STATIC_INLINE void LL_BDMA_EnableIT_TC(BDMA_TypeDef *BDMAx, uint32_t Channel) * @arg @ref LL_BDMA_CHANNEL_7 * @retval None */ -__STATIC_INLINE void LL_BDMA_EnableIT_HT(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE void LL_BDMA_EnableIT_HT(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -2308,7 +2308,7 @@ __STATIC_INLINE void LL_BDMA_EnableIT_HT(BDMA_TypeDef *BDMAx, uint32_t Channel) * @arg @ref LL_BDMA_CHANNEL_7 * @retval None */ -__STATIC_INLINE void LL_BDMA_EnableIT_TE(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE void LL_BDMA_EnableIT_TE(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -2330,7 +2330,7 @@ __STATIC_INLINE void LL_BDMA_EnableIT_TE(BDMA_TypeDef *BDMAx, uint32_t Channel) * @arg @ref LL_BDMA_CHANNEL_7 * @retval None */ -__STATIC_INLINE void LL_BDMA_DisableIT_TC(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE void LL_BDMA_DisableIT_TC(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -2352,7 +2352,7 @@ __STATIC_INLINE void LL_BDMA_DisableIT_TC(BDMA_TypeDef *BDMAx, uint32_t Channel) * @arg @ref LL_BDMA_CHANNEL_7 * @retval None */ -__STATIC_INLINE void LL_BDMA_DisableIT_HT(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE void LL_BDMA_DisableIT_HT(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -2374,7 +2374,7 @@ __STATIC_INLINE void LL_BDMA_DisableIT_HT(BDMA_TypeDef *BDMAx, uint32_t Channel) * @arg @ref LL_BDMA_CHANNEL_7 * @retval None */ -__STATIC_INLINE void LL_BDMA_DisableIT_TE(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE void LL_BDMA_DisableIT_TE(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -2396,7 +2396,7 @@ __STATIC_INLINE void LL_BDMA_DisableIT_TE(BDMA_TypeDef *BDMAx, uint32_t Channel) * @arg @ref LL_BDMA_CHANNEL_7 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_TC(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_TC(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -2418,7 +2418,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_TC(BDMA_TypeDef *BDMAx, uint32_t Ch * @arg @ref LL_BDMA_CHANNEL_7 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_HT(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_HT(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; @@ -2440,7 +2440,7 @@ __STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_HT(BDMA_TypeDef *BDMAx, uint32_t Ch * @arg @ref LL_BDMA_CHANNEL_7 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_TE(BDMA_TypeDef *BDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_TE(const BDMA_TypeDef *BDMAx, uint32_t Channel) { uint32_t bdma_base_addr = (uint32_t)BDMAx; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_comp.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_comp.h index 44fd717d..0a0ba777 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_comp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_comp.h @@ -341,7 +341,7 @@ __STATIC_INLINE void LL_COMP_SetCommonWindowMode(COMP_Common_TypeDef *COMPxy_COM * @arg @ref LL_COMP_WINDOWMODE_DISABLE * @arg @ref LL_COMP_WINDOWMODE_COMP1_INPUT_PLUS_COMMON */ -__STATIC_INLINE uint32_t LL_COMP_GetCommonWindowMode(COMP_Common_TypeDef *COMPxy_COMMON) +__STATIC_INLINE uint32_t LL_COMP_GetCommonWindowMode(const COMP_Common_TypeDef *COMPxy_COMMON) { return (uint32_t)(READ_BIT(COMPxy_COMMON->CFGR, COMP_CFGRx_WINMODE)); } @@ -378,7 +378,7 @@ __STATIC_INLINE void LL_COMP_SetPowerMode(COMP_TypeDef *COMPx, uint32_t PowerMod * @arg @ref LL_COMP_POWERMODE_MEDIUMSPEED * @arg @ref LL_COMP_POWERMODE_ULTRALOWPOWER */ -__STATIC_INLINE uint32_t LL_COMP_GetPowerMode(COMP_TypeDef *COMPx) +__STATIC_INLINE uint32_t LL_COMP_GetPowerMode(const COMP_TypeDef *COMPx) { return (uint32_t)(READ_BIT(COMPx->CFGR, COMP_CFGRx_PWRMODE)); } @@ -480,7 +480,7 @@ __STATIC_INLINE void LL_COMP_SetInputPlus(COMP_TypeDef *COMPx, uint32_t InputPlu * @arg @ref LL_COMP_INPUT_PLUS_IO2 * @arg @ref LL_COMP_INPUT_PLUS_DAC2_CH1 */ -__STATIC_INLINE uint32_t LL_COMP_GetInputPlus(COMP_TypeDef *COMPx) +__STATIC_INLINE uint32_t LL_COMP_GetInputPlus(const COMP_TypeDef *COMPx) { #if defined (COMP_CFGRx_INP2SEL) return (uint32_t)(READ_BIT(COMPx->CFGR, COMP_CFGRx_INPSEL | COMP_CFGRx_INP2SEL)); @@ -549,7 +549,7 @@ __STATIC_INLINE void LL_COMP_SetInputMinus(COMP_TypeDef *COMPx, uint32_t InputMi * @arg @ref LL_COMP_INPUT_MINUS_TPSENS_DAC2CH1 * @arg @ref LL_COMP_INPUT_MINUS_VBAT_VDDAP */ -__STATIC_INLINE uint32_t LL_COMP_GetInputMinus(COMP_TypeDef *COMPx) +__STATIC_INLINE uint32_t LL_COMP_GetInputMinus(const COMP_TypeDef *COMPx) { return (uint32_t)(READ_BIT(COMPx->CFGR, COMP_CFGRx_INMSEL | COMP_CFGRx_SCALEN | COMP_CFGRx_BRGEN)); } @@ -580,7 +580,7 @@ __STATIC_INLINE void LL_COMP_SetInputHysteresis(COMP_TypeDef *COMPx, uint32_t In * @arg @ref LL_COMP_HYSTERESIS_MEDIUM * @arg @ref LL_COMP_HYSTERESIS_HIGH */ -__STATIC_INLINE uint32_t LL_COMP_GetInputHysteresis(COMP_TypeDef *COMPx) +__STATIC_INLINE uint32_t LL_COMP_GetInputHysteresis(const COMP_TypeDef *COMPx) { return (uint32_t)(READ_BIT(COMPx->CFGR, COMP_CFGRx_HYST)); } @@ -615,7 +615,7 @@ __STATIC_INLINE void LL_COMP_SetOutputPolarity(COMP_TypeDef *COMPx, uint32_t Out * @arg @ref LL_COMP_OUTPUTPOL_NONINVERTED * @arg @ref LL_COMP_OUTPUTPOL_INVERTED */ -__STATIC_INLINE uint32_t LL_COMP_GetOutputPolarity(COMP_TypeDef *COMPx) +__STATIC_INLINE uint32_t LL_COMP_GetOutputPolarity(const COMP_TypeDef *COMPx) { return (uint32_t)(READ_BIT(COMPx->CFGR, COMP_CFGRx_POLARITY)); } @@ -660,7 +660,7 @@ __STATIC_INLINE void LL_COMP_SetOutputBlankingSource(COMP_TypeDef *COMPx, uint32 * @arg @ref LL_COMP_BLANKINGSRC_TIM8_OC5 * @arg @ref LL_COMP_BLANKINGSRC_TIM15_OC1 */ -__STATIC_INLINE uint32_t LL_COMP_GetOutputBlankingSource(COMP_TypeDef *COMPx) +__STATIC_INLINE uint32_t LL_COMP_GetOutputBlankingSource(const COMP_TypeDef *COMPx) { return (uint32_t)(READ_BIT(COMPx->CFGR, COMP_CFGRx_BLANKING)); } @@ -685,7 +685,7 @@ __STATIC_INLINE uint32_t LL_COMP_GetOutputBlankingSource(COMP_TypeDef *COMPx) * @arg @ref LL_COMP_AF_PK2 * @retval None */ -__STATIC_INLINE void LL_COMP_SetOutputAlternateFunction(COMP_TypeDef *COMPx, uint32_t CompAFx) +__STATIC_INLINE void LL_COMP_SetOutputAlternateFunction(const COMP_TypeDef *COMPx, uint32_t CompAFx) { MODIFY_REG(COMP12->OR, 0x7FFUL, (COMPx == COMP1) ? ((~CompAFx) & 0x7FFUL) : CompAFx); } @@ -706,7 +706,7 @@ __STATIC_INLINE void LL_COMP_SetOutputAlternateFunction(COMP_TypeDef *COMPx, uin * @arg @ref LL_COMP_AF_PI4 * @arg @ref LL_COMP_AF_PK2 */ -__STATIC_INLINE uint32_t LL_COMP_GetOutputAlternateFunction(COMP_TypeDef *COMPx ) +__STATIC_INLINE uint32_t LL_COMP_GetOutputAlternateFunction(const COMP_TypeDef *COMPx ) { return (uint32_t) ((COMPx == COMP1) ? ((~COMP12->OR) & 0x7FFUL) : (COMP12->OR & 0x7FFUL)); } @@ -751,7 +751,7 @@ __STATIC_INLINE void LL_COMP_Disable(COMP_TypeDef *COMPx) * @param COMPx Comparator instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_COMP_IsEnabled(COMP_TypeDef *COMPx) +__STATIC_INLINE uint32_t LL_COMP_IsEnabled(const COMP_TypeDef *COMPx) { return ((READ_BIT(COMPx->CFGR, COMP_CFGRx_EN) == (COMP_CFGRx_EN)) ? 1UL : 0UL); } @@ -778,7 +778,7 @@ __STATIC_INLINE void LL_COMP_Lock(COMP_TypeDef *COMPx) * @param COMPx Comparator instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_COMP_IsLocked(COMP_TypeDef *COMPx) +__STATIC_INLINE uint32_t LL_COMP_IsLocked(const COMP_TypeDef *COMPx) { return ((READ_BIT(COMPx->CFGR, COMP_CFGRx_LOCK) == (COMP_CFGRx_LOCK)) ? 1UL : 0UL); } @@ -803,7 +803,7 @@ __STATIC_INLINE uint32_t LL_COMP_IsLocked(COMP_TypeDef *COMPx) * @arg @ref LL_COMP_OUTPUT_LEVEL_LOW * @arg @ref LL_COMP_OUTPUT_LEVEL_HIGH */ -__STATIC_INLINE uint32_t LL_COMP_ReadOutputLevel(COMP_TypeDef *COMPx) +__STATIC_INLINE uint32_t LL_COMP_ReadOutputLevel(const COMP_TypeDef *COMPx) { if (COMPx == COMP1) { @@ -829,7 +829,7 @@ __STATIC_INLINE uint32_t LL_COMP_ReadOutputLevel(COMP_TypeDef *COMPx) * @param COMPx Comparator instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_COMP_IsActiveFlag_OutputTrig(COMP_TypeDef *COMPx) +__STATIC_INLINE uint32_t LL_COMP_IsActiveFlag_OutputTrig(const COMP_TypeDef *COMPx) { if (COMPx == COMP1) { @@ -847,7 +847,7 @@ __STATIC_INLINE uint32_t LL_COMP_IsActiveFlag_OutputTrig(COMP_TypeDef *COMPx) * @param COMPx Comparator instance * @retval None */ -__STATIC_INLINE void LL_COMP_ClearFlag_OutputTrig(COMP_TypeDef *COMPx) +__STATIC_INLINE void LL_COMP_ClearFlag_OutputTrig(const COMP_TypeDef *COMPx) { if (COMPx == COMP1) { @@ -895,7 +895,7 @@ __STATIC_INLINE void LL_COMP_DisableIT_OutputTrig(COMP_TypeDef *COMPx) * @param COMPx Comparator instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_COMP_IsEnabledIT_OutputTrig(COMP_TypeDef *COMPx) +__STATIC_INLINE uint32_t LL_COMP_IsEnabledIT_OutputTrig(const COMP_TypeDef *COMPx) { return ((READ_BIT(COMPx->CFGR, COMP_CFGRx_ITEN) == (COMP_CFGRx_ITEN)) ? 1UL : 0UL); } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_cordic.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_cordic.h index fe1f6f9e..f36ebfc0 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_cordic.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_cordic.h @@ -131,12 +131,12 @@ extern "C" { /** @defgroup CORDIC_LL_EC_NBWRITE NBWRITE * @{ */ -#define LL_CORDIC_NBWRITE_1 (0x00000000U) /*!< One 32-bits write containing either only one - 32-bit data input (Q1.31 format), or two - 16-bit data input (Q1.15 format) packed - in one 32 bits Data */ -#define LL_CORDIC_NBWRITE_2 CORDIC_CSR_NARGS /*!< Two 32-bit write containing two 32-bits data input - (Q1.31 format) */ +#define LL_CORDIC_NBWRITE_1 (0x00000000U) /*!< One 32-bits write containing either only one + 32-bits data input (Q1.31 format), or two + 16-bits data input (Q1.15 format) packed + in one 32 bits Data */ +#define LL_CORDIC_NBWRITE_2 CORDIC_CSR_NARGS /*!< Two 32-bit write containing two 32-bits data input + (Q1.31 format) */ /** * @} */ @@ -144,12 +144,12 @@ extern "C" { /** @defgroup CORDIC_LL_EC_NBREAD NBREAD * @{ */ -#define LL_CORDIC_NBREAD_1 (0x00000000U) /*!< One 32-bits read containing either only one - 32-bit data output (Q1.31 format), or two - 16-bit data output (Q1.15 format) packed - in one 32 bits Data */ -#define LL_CORDIC_NBREAD_2 CORDIC_CSR_NRES /*!< Two 32-bit Data containing two 32-bits data output - (Q1.31 format) */ +#define LL_CORDIC_NBREAD_1 (0x00000000U) /*!< One 32-bits read containing either only one + 32-bits data output (Q1.31 format), or two + 16-bits data output (Q1.15 format) packed + in one 32 bits Data */ +#define LL_CORDIC_NBREAD_2 CORDIC_CSR_NRES /*!< Two 32-bit Data containing two 32-bits data output + (Q1.31 format) */ /** * @} */ @@ -218,9 +218,7 @@ extern "C" { * @} */ - /* Exported functions --------------------------------------------------------*/ - /** @defgroup CORDIC_LL_Exported_Functions CORDIC Exported Functions * @{ */ @@ -749,8 +747,6 @@ __STATIC_INLINE uint32_t LL_CORDIC_ReadData(const CORDIC_TypeDef *CORDICx) * @} */ - - #if defined(USE_FULL_LL_DRIVER) /** @defgroup CORDIC_LL_EF_Init Initialization and de-initialization functions * @{ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_dma.h index c05815a9..5195c3b7 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_dma.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_dma.h @@ -140,7 +140,7 @@ typedef struct This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataLength(). */ uint32_t PeriphRequest; /*!< Specifies the peripheral request. - This parameter can be a value of @ref DMAMUX1_Request_selection + This parameter can be a value of @ref DMAMUX_LL_EC_REQUEST This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphRequest(). */ @@ -486,7 +486,7 @@ typedef struct * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_EnableStream(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_EnableStream(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -508,7 +508,7 @@ __STATIC_INLINE void LL_DMA_EnableStream(DMA_TypeDef *DMAx, uint32_t Stream) * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_DisableStream(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_DisableStream(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -530,7 +530,7 @@ __STATIC_INLINE void LL_DMA_DisableStream(DMA_TypeDef *DMAx, uint32_t Stream) * @arg @ref LL_DMA_STREAM_7 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsEnabledStream(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_IsEnabledStream(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -571,7 +571,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsEnabledStream(DMA_TypeDef *DMAx, uint32_t Stre * @arg @ref LL_DMA_CURRENTTARGETMEM0 or @ref LL_DMA_CURRENTTARGETMEM1 *@retval None */ -__STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Configuration) +__STATIC_INLINE void LL_DMA_ConfigTransfer(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Configuration) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -599,7 +599,7 @@ __STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Stream, u * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY * @retval None */ -__STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Direction) +__STATIC_INLINE void LL_DMA_SetDataTransferDirection(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Direction) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -624,7 +624,7 @@ __STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY */ -__STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -651,7 +651,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint * @arg @ref LL_DMA_MODE_PFCTRL * @retval None */ -__STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mode) +__STATIC_INLINE void LL_DMA_SetMode(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mode) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -677,7 +677,7 @@ __STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t * @arg @ref LL_DMA_MODE_CIRCULAR * @arg @ref LL_DMA_MODE_PFCTRL */ -__STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetMode(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -702,7 +702,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Stream) * @arg @ref LL_DMA_PERIPH_INCREMENT * @retval None */ -__STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t IncrementMode) +__STATIC_INLINE void LL_DMA_SetPeriphIncMode(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t IncrementMode) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -726,7 +726,7 @@ __STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream, * @arg @ref LL_DMA_PERIPH_NOINCREMENT * @arg @ref LL_DMA_PERIPH_INCREMENT */ -__STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -751,7 +751,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Str * @arg @ref LL_DMA_MEMORY_INCREMENT * @retval None */ -__STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t IncrementMode) +__STATIC_INLINE void LL_DMA_SetMemoryIncMode(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t IncrementMode) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -775,7 +775,7 @@ __STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream, * @arg @ref LL_DMA_MEMORY_NOINCREMENT * @arg @ref LL_DMA_MEMORY_INCREMENT */ -__STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -801,7 +801,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Str * @arg @ref LL_DMA_PDATAALIGN_WORD * @retval None */ -__STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size) +__STATIC_INLINE void LL_DMA_SetPeriphSize(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -826,7 +826,7 @@ __STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream, ui * @arg @ref LL_DMA_PDATAALIGN_HALFWORD * @arg @ref LL_DMA_PDATAALIGN_WORD */ -__STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -852,7 +852,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream * @arg @ref LL_DMA_MDATAALIGN_WORD * @retval None */ -__STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size) +__STATIC_INLINE void LL_DMA_SetMemorySize(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -877,7 +877,7 @@ __STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream, ui * @arg @ref LL_DMA_MDATAALIGN_HALFWORD * @arg @ref LL_DMA_MDATAALIGN_WORD */ -__STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetMemorySize(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -902,7 +902,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream * @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4 * @retval None */ -__STATIC_INLINE void LL_DMA_SetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t OffsetSize) +__STATIC_INLINE void LL_DMA_SetIncOffsetSize(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t OffsetSize) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -926,7 +926,7 @@ __STATIC_INLINE void LL_DMA_SetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream, * @arg @ref LL_DMA_OFFSETSIZE_PSIZE * @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4 */ -__STATIC_INLINE uint32_t LL_DMA_GetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetIncOffsetSize(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -953,7 +953,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Str * @arg @ref LL_DMA_PRIORITY_VERYHIGH * @retval None */ -__STATIC_INLINE void LL_DMA_SetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Priority) +__STATIC_INLINE void LL_DMA_SetStreamPriorityLevel(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Priority) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -979,7 +979,7 @@ __STATIC_INLINE void LL_DMA_SetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t S * @arg @ref LL_DMA_PRIORITY_HIGH * @arg @ref LL_DMA_PRIORITY_VERYHIGH */ -__STATIC_INLINE uint32_t LL_DMA_GetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetStreamPriorityLevel(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1001,7 +1001,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32 * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_EnableBufferableTransfer(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_EnableBufferableTransfer(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1023,7 +1023,7 @@ __STATIC_INLINE void LL_DMA_EnableBufferableTransfer(DMA_TypeDef *DMAx, uint32_t * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_DisableBufferableTransfer(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_DisableBufferableTransfer(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1048,7 +1048,7 @@ __STATIC_INLINE void LL_DMA_DisableBufferableTransfer(DMA_TypeDef *DMAx, uint32_ * @param NbData Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t NbData) +__STATIC_INLINE void LL_DMA_SetDataLength(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t NbData) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1072,7 +1072,7 @@ __STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef *DMAx, uint32_t Stream, ui * @arg @ref LL_DMA_STREAM_7 * @retval Between 0 to 0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetDataLength(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1396,7 +1396,7 @@ __STATIC_INLINE void LL_DMA_SetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Stream, * * @note (*) Availability depends on devices. */ -__STATIC_INLINE uint32_t LL_DMA_GetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetPeriphRequest(const DMA_TypeDef *DMAx, uint32_t Stream) { return (READ_BIT(((DMAMUX_Channel_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_Channel0 + (DMAMUX_CCR_SIZE * (Stream)) + (uint32_t)(DMAMUX_CCR_SIZE * LL_DMA_INSTANCE_TO_DMAMUX_CHANNEL(DMAx)))))->CCR, DMAMUX_CxCR_DMAREQ_ID)); } @@ -1421,7 +1421,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetPeriphRequest(DMA_TypeDef *DMAx, uint32_t St * @arg @ref LL_DMA_MBURST_INC16 * @retval None */ -__STATIC_INLINE void LL_DMA_SetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mburst) +__STATIC_INLINE void LL_DMA_SetMemoryBurstxfer(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mburst) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1447,7 +1447,7 @@ __STATIC_INLINE void LL_DMA_SetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Strea * @arg @ref LL_DMA_MBURST_INC8 * @arg @ref LL_DMA_MBURST_INC16 */ -__STATIC_INLINE uint32_t LL_DMA_GetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetMemoryBurstxfer(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1474,7 +1474,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t S * @arg @ref LL_DMA_PBURST_INC16 * @retval None */ -__STATIC_INLINE void LL_DMA_SetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Pburst) +__STATIC_INLINE void LL_DMA_SetPeriphBurstxfer(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Pburst) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1500,7 +1500,7 @@ __STATIC_INLINE void LL_DMA_SetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Strea * @arg @ref LL_DMA_PBURST_INC8 * @arg @ref LL_DMA_PBURST_INC16 */ -__STATIC_INLINE uint32_t LL_DMA_GetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetPeriphBurstxfer(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1525,7 +1525,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t S * @arg @ref LL_DMA_CURRENTTARGETMEM1 * @retval None */ -__STATIC_INLINE void LL_DMA_SetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t CurrentMemory) +__STATIC_INLINE void LL_DMA_SetCurrentTargetMem(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t CurrentMemory) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1549,7 +1549,7 @@ __STATIC_INLINE void LL_DMA_SetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stre * @arg @ref LL_DMA_CURRENTTARGETMEM0 * @arg @ref LL_DMA_CURRENTTARGETMEM1 */ -__STATIC_INLINE uint32_t LL_DMA_GetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetCurrentTargetMem(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1571,7 +1571,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_EnableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_EnableDoubleBufferMode(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1593,7 +1593,7 @@ __STATIC_INLINE void LL_DMA_EnableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t S * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_DisableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_DisableDoubleBufferMode(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1615,9 +1615,9 @@ __STATIC_INLINE void LL_DMA_DisableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t * @arg @ref LL_DMA_STREAM_7 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsEnabledDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_IsEnabledDoubleBufferMode(const DMA_TypeDef *DMAx, uint32_t Stream) { - register uint32_t dma_base_addr = (uint32_t)DMAx; + uint32_t dma_base_addr = (uint32_t)DMAx; return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DBM) == (DMA_SxCR_DBM)) ? 1UL : 0UL); } @@ -1643,7 +1643,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsEnabledDoubleBufferMode(DMA_TypeDef *DMAx, uin * @arg @ref LL_DMA_FIFOSTATUS_EMPTY * @arg @ref LL_DMA_FIFOSTATUS_FULL */ -__STATIC_INLINE uint32_t LL_DMA_GetFIFOStatus(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetFIFOStatus(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1665,7 +1665,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetFIFOStatus(DMA_TypeDef *DMAx, uint32_t Stream * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_DisableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_DisableFifoMode(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1687,7 +1687,7 @@ __STATIC_INLINE void LL_DMA_DisableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream) * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_EnableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_EnableFifoMode(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1714,7 +1714,7 @@ __STATIC_INLINE void LL_DMA_EnableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream) * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL * @retval None */ -__STATIC_INLINE void LL_DMA_SetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Threshold) +__STATIC_INLINE void LL_DMA_SetFIFOThreshold(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Threshold) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1740,7 +1740,7 @@ __STATIC_INLINE void LL_DMA_SetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream, * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4 * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL */ -__STATIC_INLINE uint32_t LL_DMA_GetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetFIFOThreshold(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1771,7 +1771,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Str * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL * @retval None */ -__STATIC_INLINE void LL_DMA_ConfigFifo(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t FifoMode, uint32_t FifoThreshold) +__STATIC_INLINE void LL_DMA_ConfigFifo(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t FifoMode, uint32_t FifoThreshold) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1801,7 +1801,7 @@ __STATIC_INLINE void LL_DMA_ConfigFifo(DMA_TypeDef *DMAx, uint32_t Stream, uint3 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY * @retval None */ -__STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t SrcAddress, uint32_t DstAddress, uint32_t Direction) +__STATIC_INLINE void LL_DMA_ConfigAddresses(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t SrcAddress, uint32_t DstAddress, uint32_t Direction) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1837,7 +1837,7 @@ __STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef *DMAx, uint32_t Stream, * @param MemoryAddress Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress) +__STATIC_INLINE void LL_DMA_SetMemoryAddress(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1862,7 +1862,7 @@ __STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Stream, * @param PeriphAddress Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t PeriphAddress) +__STATIC_INLINE void LL_DMA_SetPeriphAddress(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t PeriphAddress) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1885,7 +1885,7 @@ __STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Stream, * @arg @ref LL_DMA_STREAM_7 * @retval Between 0 to 0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1908,7 +1908,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Str * @arg @ref LL_DMA_STREAM_7 * @retval Between 0 to 0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1933,7 +1933,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Str * @param MemoryAddress Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress) +__STATIC_INLINE void LL_DMA_SetM2MSrcAddress(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1958,7 +1958,7 @@ __STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Stream, * @param MemoryAddress Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress) +__STATIC_INLINE void LL_DMA_SetM2MDstAddress(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -1981,7 +1981,7 @@ __STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Stream, * @arg @ref LL_DMA_STREAM_7 * @retval Between 0 to 0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -2004,7 +2004,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Str * @arg @ref LL_DMA_STREAM_7 * @retval Between 0 to 0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -2027,7 +2027,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Str * @param Address Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_DMA_SetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Address) +__STATIC_INLINE void LL_DMA_SetMemory1Address(const DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Address) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -2049,7 +2049,7 @@ __STATIC_INLINE void LL_DMA_SetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream * @arg @ref LL_DMA_STREAM_7 * @retval Between 0 to 0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_DMA_GetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_GetMemory1Address(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -2070,7 +2070,7 @@ __STATIC_INLINE uint32_t LL_DMA_GetMemory1Address(DMA_TypeDef *DMAx, uint32_t St * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT0(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT0(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF0) == (DMA_LISR_HTIF0)) ? 1UL : 0UL); } @@ -2081,7 +2081,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT0(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF1) == (DMA_LISR_HTIF1)) ? 1UL : 0UL); } @@ -2092,7 +2092,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF2) == (DMA_LISR_HTIF2)) ? 1UL : 0UL); } @@ -2103,7 +2103,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF3) == (DMA_LISR_HTIF3)) ? 1UL : 0UL); } @@ -2114,7 +2114,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF4) == (DMA_HISR_HTIF4)) ? 1UL : 0UL); } @@ -2125,7 +2125,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF5) == (DMA_HISR_HTIF5)) ? 1UL : 0UL); } @@ -2136,7 +2136,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF6) == (DMA_HISR_HTIF6)) ? 1UL : 0UL); } @@ -2147,7 +2147,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF7) == (DMA_HISR_HTIF7)) ? 1UL : 0UL); } @@ -2158,7 +2158,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC0(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC0(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF0) == (DMA_LISR_TCIF0)) ? 1UL : 0UL); } @@ -2169,7 +2169,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC0(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF1) == (DMA_LISR_TCIF1)) ? 1UL : 0UL); } @@ -2180,7 +2180,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF2) == (DMA_LISR_TCIF2)) ? 1UL : 0UL); } @@ -2191,7 +2191,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF3) == (DMA_LISR_TCIF3)) ? 1UL : 0UL); } @@ -2202,7 +2202,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF4) == (DMA_HISR_TCIF4)) ? 1UL : 0UL); } @@ -2213,7 +2213,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF5) == (DMA_HISR_TCIF5)) ? 1UL : 0UL); } @@ -2224,7 +2224,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF6) == (DMA_HISR_TCIF6)) ? 1UL : 0UL); } @@ -2235,7 +2235,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF7) == (DMA_HISR_TCIF7)) ? 1UL : 0UL); } @@ -2246,7 +2246,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE0(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE0(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF0) == (DMA_LISR_TEIF0)) ? 1UL : 0UL); } @@ -2257,7 +2257,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE0(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF1) == (DMA_LISR_TEIF1)) ? 1UL : 0UL); } @@ -2268,7 +2268,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF2) == (DMA_LISR_TEIF2)) ? 1UL : 0UL); } @@ -2279,7 +2279,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF3) == (DMA_LISR_TEIF3)) ? 1UL : 0UL); } @@ -2290,7 +2290,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF4) == (DMA_HISR_TEIF4)) ? 1UL : 0UL); } @@ -2301,7 +2301,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF5) == (DMA_HISR_TEIF5)) ? 1UL : 0UL); } @@ -2312,7 +2312,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF6) == (DMA_HISR_TEIF6)) ? 1UL : 0UL); } @@ -2323,7 +2323,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF7) == (DMA_HISR_TEIF7)) ? 1UL : 0UL); } @@ -2334,7 +2334,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME0(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME0(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF0) == (DMA_LISR_DMEIF0)) ? 1UL : 0UL); } @@ -2345,7 +2345,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME0(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME1(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME1(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF1) == (DMA_LISR_DMEIF1)) ? 1UL : 0UL); } @@ -2356,7 +2356,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME1(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME2(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME2(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF2) == (DMA_LISR_DMEIF2)) ? 1UL : 0UL); } @@ -2367,7 +2367,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME2(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME3(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME3(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF3) == (DMA_LISR_DMEIF3)) ? 1UL : 0UL); } @@ -2378,7 +2378,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME3(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME4(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME4(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF4) == (DMA_HISR_DMEIF4)) ? 1UL : 0UL); } @@ -2389,7 +2389,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME4(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME5(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME5(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF5) == (DMA_HISR_DMEIF5)) ? 1UL : 0UL); } @@ -2400,7 +2400,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME5(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME6(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME6(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF6) == (DMA_HISR_DMEIF6)) ? 1UL : 0UL); } @@ -2411,7 +2411,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME6(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME7(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME7(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF7) == (DMA_HISR_DMEIF7)) ? 1UL : 0UL); } @@ -2422,7 +2422,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME7(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE0(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE0(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF0) == (DMA_LISR_FEIF0)) ? 1UL : 0UL); } @@ -2433,7 +2433,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE0(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE1(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE1(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF1) == (DMA_LISR_FEIF1)) ? 1UL : 0UL); } @@ -2444,7 +2444,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE1(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE2(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE2(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF2) == (DMA_LISR_FEIF2)) ? 1UL : 0UL); } @@ -2455,7 +2455,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE2(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE3(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE3(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF3) == (DMA_LISR_FEIF3)) ? 1UL : 0UL); } @@ -2466,7 +2466,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE3(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE4(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE4(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF4) == (DMA_HISR_FEIF4)) ? 1UL : 0UL); } @@ -2477,7 +2477,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE4(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE5(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE5(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF5) == (DMA_HISR_FEIF5)) ? 1UL : 0UL); } @@ -2488,7 +2488,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE5(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE6(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE6(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF6) == (DMA_HISR_FEIF6)) ? 1UL : 0UL); } @@ -2499,7 +2499,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE6(DMA_TypeDef *DMAx) * @param DMAx DMAx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE7(DMA_TypeDef *DMAx) +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE7(const DMA_TypeDef *DMAx) { return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF7) == (DMA_HISR_FEIF7)) ? 1UL : 0UL); } @@ -2967,7 +2967,7 @@ __STATIC_INLINE void LL_DMA_ClearFlag_FE7(DMA_TypeDef *DMAx) * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_EnableIT_HT(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -2989,7 +2989,7 @@ __STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Stream) * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_EnableIT_TE(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -3011,7 +3011,7 @@ __STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream) * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_EnableIT_TC(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -3033,7 +3033,7 @@ __STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream) * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_EnableIT_DME(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_EnableIT_DME(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -3055,7 +3055,7 @@ __STATIC_INLINE void LL_DMA_EnableIT_DME(DMA_TypeDef *DMAx, uint32_t Stream) * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_EnableIT_FE(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_EnableIT_FE(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -3077,7 +3077,7 @@ __STATIC_INLINE void LL_DMA_EnableIT_FE(DMA_TypeDef *DMAx, uint32_t Stream) * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_DisableIT_HT(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_DisableIT_HT(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -3099,7 +3099,7 @@ __STATIC_INLINE void LL_DMA_DisableIT_HT(DMA_TypeDef *DMAx, uint32_t Stream) * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_DisableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_DisableIT_TE(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -3121,7 +3121,7 @@ __STATIC_INLINE void LL_DMA_DisableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream) * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_DisableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_DisableIT_TC(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -3143,7 +3143,7 @@ __STATIC_INLINE void LL_DMA_DisableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream) * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_DisableIT_DME(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_DisableIT_DME(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -3165,7 +3165,7 @@ __STATIC_INLINE void LL_DMA_DisableIT_DME(DMA_TypeDef *DMAx, uint32_t Stream) * @arg @ref LL_DMA_STREAM_7 * @retval None */ -__STATIC_INLINE void LL_DMA_DisableIT_FE(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE void LL_DMA_DisableIT_FE(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -3187,7 +3187,7 @@ __STATIC_INLINE void LL_DMA_DisableIT_FE(DMA_TypeDef *DMAx, uint32_t Stream) * @arg @ref LL_DMA_STREAM_7 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -3209,7 +3209,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(DMA_TypeDef *DMAx, uint32_t Strea * @arg @ref LL_DMA_STREAM_7 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -3231,7 +3231,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(DMA_TypeDef *DMAx, uint32_t Strea * @arg @ref LL_DMA_STREAM_7 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -3253,7 +3253,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(DMA_TypeDef *DMAx, uint32_t Strea * @arg @ref LL_DMA_STREAM_7 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_DME(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_DME(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; @@ -3275,7 +3275,7 @@ __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_DME(DMA_TypeDef *DMAx, uint32_t Stre * @arg @ref LL_DMA_STREAM_7 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_FE(DMA_TypeDef *DMAx, uint32_t Stream) +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_FE(const DMA_TypeDef *DMAx, uint32_t Stream) { uint32_t dma_base_addr = (uint32_t)DMAx; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_dma2d.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_dma2d.h index daea4758..905cbc7e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_dma2d.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_dma2d.h @@ -582,7 +582,7 @@ __STATIC_INLINE void LL_DMA2D_Start(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsTransferOngoing(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsTransferOngoing(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_START) == (DMA2D_CR_START)) ? 1UL : 0UL); } @@ -619,7 +619,7 @@ __STATIC_INLINE void LL_DMA2D_Resume(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsSuspended(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsSuspended(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_SUSP) == (DMA2D_CR_SUSP)) ? 1UL : 0UL); } @@ -644,7 +644,7 @@ __STATIC_INLINE void LL_DMA2D_Abort(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsAborted(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsAborted(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_ABORT) == (DMA2D_CR_ABORT)) ? 1UL : 0UL); } @@ -679,7 +679,7 @@ __STATIC_INLINE void LL_DMA2D_SetMode(DMA2D_TypeDef *DMA2Dx, uint32_t Mode) * @arg @ref LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_FG * @arg @ref LL_DMA2D_MODE_M2M_BLEND_FIXED_COLOR_BG */ -__STATIC_INLINE uint32_t LL_DMA2D_GetMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_GetMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->CR, DMA2D_CR_MODE)); } @@ -712,7 +712,7 @@ __STATIC_INLINE void LL_DMA2D_SetOutputColorMode(DMA2D_TypeDef *DMA2Dx, uint32_t * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB1555 * @arg @ref LL_DMA2D_OUTPUT_MODE_ARGB4444 */ -__STATIC_INLINE uint32_t LL_DMA2D_GetOutputColorMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_GetOutputColorMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->OPFCCR, DMA2D_OPFCCR_CM)); } @@ -739,7 +739,7 @@ __STATIC_INLINE void LL_DMA2D_SetOutputRBSwapMode(DMA2D_TypeDef *DMA2Dx, uint32_ * @arg @ref LL_DMA2D_RB_MODE_REGULAR * @arg @ref LL_DMA2D_RB_MODE_SWAP */ -__STATIC_INLINE uint32_t LL_DMA2D_GetOutputRBSwapMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_GetOutputRBSwapMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->OPFCCR, DMA2D_OPFCCR_RBS)); } @@ -766,7 +766,7 @@ __STATIC_INLINE void LL_DMA2D_SetOutputAlphaInvMode(DMA2D_TypeDef *DMA2Dx, uint3 * @arg @ref LL_DMA2D_ALPHA_REGULAR * @arg @ref LL_DMA2D_ALPHA_INVERTED */ -__STATIC_INLINE uint32_t LL_DMA2D_GetOutputAlphaInvMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_GetOutputAlphaInvMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->OPFCCR, DMA2D_OPFCCR_AI)); } @@ -794,7 +794,7 @@ __STATIC_INLINE void LL_DMA2D_SetOutputSwapMode(DMA2D_TypeDef *DMA2Dx, uint32_t * @arg @ref LL_DMA2D_SWAP_MODE_REGULAR * @arg @ref LL_DMA2D_SWAP_MODE_TWO_BY_TWO */ -__STATIC_INLINE uint32_t LL_DMA2D_GetOutputSwapMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_GetOutputSwapMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->OPFCCR, DMA2D_OPFCCR_SB)); } @@ -821,7 +821,7 @@ __STATIC_INLINE void LL_DMA2D_SetLineOffsetMode(DMA2D_TypeDef *DMA2Dx, uint32_t * @arg @ref LL_DMA2D_LINE_OFFSET_PIXELS * @arg @ref LL_DMA2D_LINE_OFFSET_BYTES */ -__STATIC_INLINE uint32_t LL_DMA2D_GetLineOffsetMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_GetLineOffsetMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->CR, DMA2D_CR_LOM)); } @@ -844,7 +844,7 @@ __STATIC_INLINE void LL_DMA2D_SetLineOffset(DMA2D_TypeDef *DMA2Dx, uint32_t Line * @param DMA2Dx DMA2D Instance * @retval Line offset value between Min_Data=0 and Max_Data=0xFFFF */ -__STATIC_INLINE uint32_t LL_DMA2D_GetLineOffset(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_GetLineOffset(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->OOR, DMA2D_OOR_LO)); } @@ -867,7 +867,7 @@ __STATIC_INLINE void LL_DMA2D_SetNbrOfPixelsPerLines(DMA2D_TypeDef *DMA2Dx, uint * @param DMA2Dx DMA2D Instance * @retval Number of pixels per lines value between Min_Data=0 and Max_Data=0x3FFF */ -__STATIC_INLINE uint32_t LL_DMA2D_GetNbrOfPixelsPerLines(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_GetNbrOfPixelsPerLines(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->NLR, DMA2D_NLR_PL) >> DMA2D_NLR_PL_Pos); } @@ -890,7 +890,7 @@ __STATIC_INLINE void LL_DMA2D_SetNbrOfLines(DMA2D_TypeDef *DMA2Dx, uint32_t NbrO * @param DMA2Dx DMA2D Instance * @retval Number of lines value between Min_Data=0 and Max_Data=0xFFFF */ -__STATIC_INLINE uint32_t LL_DMA2D_GetNbrOfLines(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_GetNbrOfLines(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->NLR, DMA2D_NLR_NL)); } @@ -913,7 +913,7 @@ __STATIC_INLINE void LL_DMA2D_SetOutputMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t O * @param DMA2Dx DMA2D Instance * @retval Output memory address value between Min_Data=0 and Max_Data=0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_DMA2D_GetOutputMemAddr(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_GetOutputMemAddr(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(LL_DMA2D_ReadReg(DMA2Dx, OMAR)); } @@ -934,8 +934,7 @@ __STATIC_INLINE uint32_t LL_DMA2D_GetOutputMemAddr(DMA2D_TypeDef *DMA2Dx) */ __STATIC_INLINE void LL_DMA2D_SetOutputColor(DMA2D_TypeDef *DMA2Dx, uint32_t OutputColor) { - MODIFY_REG(DMA2Dx->OCOLR, (DMA2D_OCOLR_BLUE_1 | DMA2D_OCOLR_GREEN_1 | DMA2D_OCOLR_RED_1 | DMA2D_OCOLR_ALPHA_1), \ - OutputColor); + WRITE_REG(DMA2Dx->OCOLR, OutputColor); } /** @@ -950,7 +949,7 @@ __STATIC_INLINE void LL_DMA2D_SetOutputColor(DMA2D_TypeDef *DMA2Dx, uint32_t Out * @param DMA2Dx DMA2D Instance * @retval Output color value between Min_Data=0 and Max_Data=0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_DMA2D_GetOutputColor(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_GetOutputColor(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->OCOLR, \ (DMA2D_OCOLR_BLUE_1 | DMA2D_OCOLR_GREEN_1 | DMA2D_OCOLR_RED_1 | DMA2D_OCOLR_ALPHA_1))); @@ -974,7 +973,7 @@ __STATIC_INLINE void LL_DMA2D_SetLineWatermark(DMA2D_TypeDef *DMA2Dx, uint32_t L * @param DMA2Dx DMA2D Instance * @retval Line watermark value between Min_Data=0 and Max_Data=0xFFFF */ -__STATIC_INLINE uint32_t LL_DMA2D_GetLineWatermark(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_GetLineWatermark(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->LWR, DMA2D_LWR_LW)); } @@ -997,7 +996,7 @@ __STATIC_INLINE void LL_DMA2D_SetDeadTime(DMA2D_TypeDef *DMA2Dx, uint32_t DeadTi * @param DMA2Dx DMA2D Instance * @retval Dead time value between Min_Data=0 and Max_Data=0xFF */ -__STATIC_INLINE uint32_t LL_DMA2D_GetDeadTime(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_GetDeadTime(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->AMTCR, DMA2D_AMTCR_DT) >> DMA2D_AMTCR_DT_Pos); } @@ -1030,7 +1029,7 @@ __STATIC_INLINE void LL_DMA2D_DisableDeadTime(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsEnabledDeadTime(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsEnabledDeadTime(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->AMTCR, DMA2D_AMTCR_EN) == (DMA2D_AMTCR_EN)) ? 1UL : 0UL); } @@ -1057,7 +1056,7 @@ __STATIC_INLINE void LL_DMA2D_FGND_SetMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t Me * @param DMA2Dx DMA2D Instance * @retval Foreground memory address value between Min_Data=0 and Max_Data=0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetMemAddr(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetMemAddr(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(LL_DMA2D_ReadReg(DMA2Dx, FGMAR)); } @@ -1079,7 +1078,7 @@ __STATIC_INLINE void LL_DMA2D_FGND_EnableCLUTLoad(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_FGND_IsEnabledCLUTLoad(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_FGND_IsEnabledCLUTLoad(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_START) == (DMA2D_FGPFCCR_START)) ? 1UL : 0UL); } @@ -1124,7 +1123,7 @@ __STATIC_INLINE void LL_DMA2D_FGND_SetColorMode(DMA2D_TypeDef *DMA2Dx, uint32_t * @arg @ref LL_DMA2D_INPUT_MODE_A8 * @arg @ref LL_DMA2D_INPUT_MODE_A4 */ -__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetColorMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetColorMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CM)); } @@ -1153,7 +1152,7 @@ __STATIC_INLINE void LL_DMA2D_FGND_SetAlphaMode(DMA2D_TypeDef *DMA2Dx, uint32_t * @arg @ref LL_DMA2D_ALPHA_MODE_REPLACE * @arg @ref LL_DMA2D_ALPHA_MODE_COMBINE */ -__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetAlphaMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetAlphaMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_AM)); } @@ -1176,7 +1175,7 @@ __STATIC_INLINE void LL_DMA2D_FGND_SetAlpha(DMA2D_TypeDef *DMA2Dx, uint32_t Alph * @param DMA2Dx DMA2D Instance * @retval Alpha value between Min_Data=0 and Max_Data=0xFF */ -__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetAlpha(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetAlpha(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_ALPHA) >> DMA2D_FGPFCCR_ALPHA_Pos); } @@ -1203,7 +1202,7 @@ __STATIC_INLINE void LL_DMA2D_FGND_SetRBSwapMode(DMA2D_TypeDef *DMA2Dx, uint32_t * @arg @ref LL_DMA2D_RB_MODE_REGULAR * @arg @ref LL_DMA2D_RB_MODE_SWAP */ -__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetRBSwapMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetRBSwapMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_RBS)); } @@ -1230,7 +1229,7 @@ __STATIC_INLINE void LL_DMA2D_FGND_SetAlphaInvMode(DMA2D_TypeDef *DMA2Dx, uint32 * @arg @ref LL_DMA2D_ALPHA_REGULAR * @arg @ref LL_DMA2D_ALPHA_INVERTED */ -__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetAlphaInvMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetAlphaInvMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_AI)); } @@ -1253,7 +1252,7 @@ __STATIC_INLINE void LL_DMA2D_FGND_SetLineOffset(DMA2D_TypeDef *DMA2Dx, uint32_t * @param DMA2Dx DMA2D Instance * @retval Foreground line offset value between Min_Data=0 and Max_Data=0x3FF */ -__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetLineOffset(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetLineOffset(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->FGOR, DMA2D_FGOR_LO)); } @@ -1293,7 +1292,7 @@ __STATIC_INLINE void LL_DMA2D_FGND_SetRedColor(DMA2D_TypeDef *DMA2Dx, uint32_t R * @param DMA2Dx DMA2D Instance * @retval Red color value between Min_Data=0 and Max_Data=0xFF */ -__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetRedColor(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetRedColor(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->FGCOLR, DMA2D_FGCOLR_RED) >> DMA2D_FGCOLR_RED_Pos); } @@ -1316,7 +1315,7 @@ __STATIC_INLINE void LL_DMA2D_FGND_SetGreenColor(DMA2D_TypeDef *DMA2Dx, uint32_t * @param DMA2Dx DMA2D Instance * @retval Green color value between Min_Data=0 and Max_Data=0xFF */ -__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetGreenColor(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetGreenColor(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->FGCOLR, DMA2D_FGCOLR_GREEN) >> DMA2D_FGCOLR_GREEN_Pos); } @@ -1339,7 +1338,7 @@ __STATIC_INLINE void LL_DMA2D_FGND_SetBlueColor(DMA2D_TypeDef *DMA2Dx, uint32_t * @param DMA2Dx DMA2D Instance * @retval Blue color value between Min_Data=0 and Max_Data=0xFF */ -__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetBlueColor(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetBlueColor(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->FGCOLR, DMA2D_FGCOLR_BLUE)); } @@ -1362,7 +1361,7 @@ __STATIC_INLINE void LL_DMA2D_FGND_SetCLUTMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_ * @param DMA2Dx DMA2D Instance * @retval Foreground CLUT memory address value between Min_Data=0 and Max_Data=0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetCLUTMemAddr(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetCLUTMemAddr(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(LL_DMA2D_ReadReg(DMA2Dx, FGCMAR)); } @@ -1385,7 +1384,7 @@ __STATIC_INLINE void LL_DMA2D_FGND_SetCLUTSize(DMA2D_TypeDef *DMA2Dx, uint32_t C * @param DMA2Dx DMA2D Instance * @retval Foreground CLUT size value between Min_Data=0 and Max_Data=0xFF */ -__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetCLUTSize(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetCLUTSize(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CS) >> DMA2D_FGPFCCR_CS_Pos); } @@ -1412,7 +1411,7 @@ __STATIC_INLINE void LL_DMA2D_FGND_SetCLUTColorMode(DMA2D_TypeDef *DMA2Dx, uint3 * @arg @ref LL_DMA2D_CLUT_COLOR_MODE_ARGB8888 * @arg @ref LL_DMA2D_CLUT_COLOR_MODE_RGB888 */ -__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetCLUTColorMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetCLUTColorMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CCM)); } @@ -1441,7 +1440,7 @@ __STATIC_INLINE void LL_DMA2D_FGND_SetChrSubSampling(DMA2D_TypeDef *DMA2Dx, uint * @arg @ref LL_DMA2D_CSS_422 * @arg @ref LL_DMA2D_CSS_420 */ -__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetChrSubSampling(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_FGND_GetChrSubSampling(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->FGPFCCR, DMA2D_FGPFCCR_CSS)); } @@ -1471,7 +1470,7 @@ __STATIC_INLINE void LL_DMA2D_BGND_SetMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_t Me * @param DMA2Dx DMA2D Instance * @retval Background memory address value between Min_Data=0 and Max_Data=0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetMemAddr(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetMemAddr(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(LL_DMA2D_ReadReg(DMA2Dx, BGMAR)); } @@ -1493,7 +1492,7 @@ __STATIC_INLINE void LL_DMA2D_BGND_EnableCLUTLoad(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_BGND_IsEnabledCLUTLoad(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_BGND_IsEnabledCLUTLoad(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_START) == (DMA2D_BGPFCCR_START)) ? 1UL : 0UL); } @@ -1538,7 +1537,7 @@ __STATIC_INLINE void LL_DMA2D_BGND_SetColorMode(DMA2D_TypeDef *DMA2Dx, uint32_t * @arg @ref LL_DMA2D_INPUT_MODE_A8 * @arg @ref LL_DMA2D_INPUT_MODE_A4 */ -__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetColorMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetColorMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_CM)); } @@ -1567,7 +1566,7 @@ __STATIC_INLINE void LL_DMA2D_BGND_SetAlphaMode(DMA2D_TypeDef *DMA2Dx, uint32_t * @arg @ref LL_DMA2D_ALPHA_MODE_REPLACE * @arg @ref LL_DMA2D_ALPHA_MODE_COMBINE */ -__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetAlphaMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetAlphaMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_AM)); } @@ -1590,7 +1589,7 @@ __STATIC_INLINE void LL_DMA2D_BGND_SetAlpha(DMA2D_TypeDef *DMA2Dx, uint32_t Alph * @param DMA2Dx DMA2D Instance * @retval Alpha value between Min_Data=0 and Max_Data=0xFF */ -__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetAlpha(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetAlpha(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_ALPHA) >> DMA2D_BGPFCCR_ALPHA_Pos); } @@ -1617,7 +1616,7 @@ __STATIC_INLINE void LL_DMA2D_BGND_SetRBSwapMode(DMA2D_TypeDef *DMA2Dx, uint32_t * @arg @ref LL_DMA2D_RB_MODE_REGULAR * @arg @ref LL_DMA2D_RB_MODE_SWAP */ -__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetRBSwapMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetRBSwapMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_RBS)); } @@ -1644,7 +1643,7 @@ __STATIC_INLINE void LL_DMA2D_BGND_SetAlphaInvMode(DMA2D_TypeDef *DMA2Dx, uint32 * @arg @ref LL_DMA2D_ALPHA_REGULAR * @arg @ref LL_DMA2D_ALPHA_INVERTED */ -__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetAlphaInvMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetAlphaInvMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_AI)); } @@ -1667,7 +1666,7 @@ __STATIC_INLINE void LL_DMA2D_BGND_SetLineOffset(DMA2D_TypeDef *DMA2Dx, uint32_t * @param DMA2Dx DMA2D Instance * @retval Background line offset value between Min_Data=0 and Max_Data=0x3FF */ -__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetLineOffset(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetLineOffset(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->BGOR, DMA2D_BGOR_LO)); } @@ -1707,7 +1706,7 @@ __STATIC_INLINE void LL_DMA2D_BGND_SetRedColor(DMA2D_TypeDef *DMA2Dx, uint32_t R * @param DMA2Dx DMA2D Instance * @retval Red color value between Min_Data=0 and Max_Data=0xFF */ -__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetRedColor(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetRedColor(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->BGCOLR, DMA2D_BGCOLR_RED) >> DMA2D_BGCOLR_RED_Pos); } @@ -1730,7 +1729,7 @@ __STATIC_INLINE void LL_DMA2D_BGND_SetGreenColor(DMA2D_TypeDef *DMA2Dx, uint32_t * @param DMA2Dx DMA2D Instance * @retval Green color value between Min_Data=0 and Max_Data=0xFF */ -__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetGreenColor(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetGreenColor(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->BGCOLR, DMA2D_BGCOLR_GREEN) >> DMA2D_BGCOLR_GREEN_Pos); } @@ -1753,7 +1752,7 @@ __STATIC_INLINE void LL_DMA2D_BGND_SetBlueColor(DMA2D_TypeDef *DMA2Dx, uint32_t * @param DMA2Dx DMA2D Instance * @retval Blue color value between Min_Data=0 and Max_Data=0xFF */ -__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetBlueColor(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetBlueColor(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->BGCOLR, DMA2D_BGCOLR_BLUE)); } @@ -1776,7 +1775,7 @@ __STATIC_INLINE void LL_DMA2D_BGND_SetCLUTMemAddr(DMA2D_TypeDef *DMA2Dx, uint32_ * @param DMA2Dx DMA2D Instance * @retval Background CLUT memory address value between Min_Data=0 and Max_Data=0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetCLUTMemAddr(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetCLUTMemAddr(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(LL_DMA2D_ReadReg(DMA2Dx, BGCMAR)); } @@ -1799,7 +1798,7 @@ __STATIC_INLINE void LL_DMA2D_BGND_SetCLUTSize(DMA2D_TypeDef *DMA2Dx, uint32_t C * @param DMA2Dx DMA2D Instance * @retval Background CLUT size value between Min_Data=0 and Max_Data=0xFF */ -__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetCLUTSize(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetCLUTSize(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_CS) >> DMA2D_BGPFCCR_CS_Pos); } @@ -1826,7 +1825,7 @@ __STATIC_INLINE void LL_DMA2D_BGND_SetCLUTColorMode(DMA2D_TypeDef *DMA2Dx, uint3 * @arg @ref LL_DMA2D_CLUT_COLOR_MODE_ARGB8888 * @arg @ref LL_DMA2D_CLUT_COLOR_MODE_RGB888 */ -__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetCLUTColorMode(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_BGND_GetCLUTColorMode(const DMA2D_TypeDef *DMA2Dx) { return (uint32_t)(READ_BIT(DMA2Dx->BGPFCCR, DMA2D_BGPFCCR_CCM)); } @@ -1850,7 +1849,7 @@ __STATIC_INLINE uint32_t LL_DMA2D_BGND_GetCLUTColorMode(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_CE(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_CE(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_CEIF) == (DMA2D_ISR_CEIF)) ? 1UL : 0UL); } @@ -1861,7 +1860,7 @@ __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_CE(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_CTC(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_CTC(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_CTCIF) == (DMA2D_ISR_CTCIF)) ? 1UL : 0UL); } @@ -1872,7 +1871,7 @@ __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_CTC(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_CAE(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_CAE(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_CAEIF) == (DMA2D_ISR_CAEIF)) ? 1UL : 0UL); } @@ -1883,7 +1882,7 @@ __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_CAE(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_TW(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_TW(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_TWIF) == (DMA2D_ISR_TWIF)) ? 1UL : 0UL); } @@ -1894,7 +1893,7 @@ __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_TW(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_TC(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_TC(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_TCIF) == (DMA2D_ISR_TCIF)) ? 1UL : 0UL); } @@ -1905,7 +1904,7 @@ __STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_TC(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_TE(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsActiveFlag_TE(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->ISR, DMA2D_ISR_TEIF) == (DMA2D_ISR_TEIF)) ? 1UL : 0UL); } @@ -2122,7 +2121,7 @@ __STATIC_INLINE void LL_DMA2D_DisableIT_TE(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_CE(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_CE(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_CEIE) == (DMA2D_CR_CEIE)) ? 1UL : 0UL); } @@ -2133,7 +2132,7 @@ __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_CE(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_CTC(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_CTC(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_CTCIE) == (DMA2D_CR_CTCIE)) ? 1UL : 0UL); } @@ -2144,7 +2143,7 @@ __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_CTC(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_CAE(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_CAE(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_CAEIE) == (DMA2D_CR_CAEIE)) ? 1UL : 0UL); } @@ -2155,7 +2154,7 @@ __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_CAE(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_TW(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_TW(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_TWIE) == (DMA2D_CR_TWIE)) ? 1UL : 0UL); } @@ -2166,7 +2165,7 @@ __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_TW(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_TC(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_TC(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_TCIE) == (DMA2D_CR_TCIE)) ? 1UL : 0UL); } @@ -2177,7 +2176,7 @@ __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_TC(DMA2D_TypeDef *DMA2Dx) * @param DMA2Dx DMA2D Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_TE(DMA2D_TypeDef *DMA2Dx) +__STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_TE(const DMA2D_TypeDef *DMA2Dx) { return ((READ_BIT(DMA2Dx->CR, DMA2D_CR_TEIE) == (DMA2D_CR_TEIE)) ? 1UL : 0UL); } @@ -2193,16 +2192,16 @@ __STATIC_INLINE uint32_t LL_DMA2D_IsEnabledIT_TE(DMA2D_TypeDef *DMA2Dx) * @{ */ -ErrorStatus LL_DMA2D_DeInit(DMA2D_TypeDef *DMA2Dx); +ErrorStatus LL_DMA2D_DeInit(const DMA2D_TypeDef *DMA2Dx); ErrorStatus LL_DMA2D_Init(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_InitTypeDef *DMA2D_InitStruct); void LL_DMA2D_StructInit(LL_DMA2D_InitTypeDef *DMA2D_InitStruct); void LL_DMA2D_ConfigLayer(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_LayerCfgTypeDef *DMA2D_LayerCfg, uint32_t LayerIdx); void LL_DMA2D_LayerCfgStructInit(LL_DMA2D_LayerCfgTypeDef *DMA2D_LayerCfg); void LL_DMA2D_ConfigOutputColor(DMA2D_TypeDef *DMA2Dx, LL_DMA2D_ColorTypeDef *DMA2D_ColorStruct); -uint32_t LL_DMA2D_GetOutputBlueColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode); -uint32_t LL_DMA2D_GetOutputGreenColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode); -uint32_t LL_DMA2D_GetOutputRedColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode); -uint32_t LL_DMA2D_GetOutputAlphaColor(DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode); +uint32_t LL_DMA2D_GetOutputBlueColor(const DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode); +uint32_t LL_DMA2D_GetOutputGreenColor(const DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode); +uint32_t LL_DMA2D_GetOutputRedColor(const DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode); +uint32_t LL_DMA2D_GetOutputAlphaColor(const DMA2D_TypeDef *DMA2Dx, uint32_t ColorMode); void LL_DMA2D_ConfigSize(DMA2D_TypeDef *DMA2Dx, uint32_t NbrOfLines, uint32_t NbrOfPixelsPerLines); /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_dmamux.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_dmamux.h index bf4cffa0..be9b2fc4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_dmamux.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_dmamux.h @@ -726,7 +726,7 @@ extern "C" { * @note (*) Availability depends on devices. * @retval None */ -__STATIC_INLINE void LL_DMAMUX_SetRequestID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t Request) +__STATIC_INLINE void LL_DMAMUX_SetRequestID(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t Request) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -919,7 +919,7 @@ __STATIC_INLINE void LL_DMAMUX_SetRequestID(DMAMUX_Channel_TypeDef *DMAMUXx, uin * @note (*) Availability depends on devices. * @retval None */ -__STATIC_INLINE uint32_t LL_DMAMUX_GetRequestID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_DMAMUX_GetRequestID(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -950,7 +950,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_GetRequestID(DMAMUX_Channel_TypeDef *DMAMUXx, * @param RequestNb This parameter must be a value between Min_Data = 1 and Max_Data = 32. * @retval None */ -__STATIC_INLINE void LL_DMAMUX_SetSyncRequestNb(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t RequestNb) +__STATIC_INLINE void LL_DMAMUX_SetSyncRequestNb(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t RequestNb) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -980,7 +980,7 @@ __STATIC_INLINE void LL_DMAMUX_SetSyncRequestNb(DMAMUX_Channel_TypeDef *DMAMUXx, * @arg @ref LL_DMAMUX_CHANNEL_15 * @retval Between Min_Data = 1 and Max_Data = 32 */ -__STATIC_INLINE uint32_t LL_DMAMUX_GetSyncRequestNb(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_DMAMUX_GetSyncRequestNb(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1015,7 +1015,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_GetSyncRequestNb(DMAMUX_Channel_TypeDef *DMAM * @arg @ref LL_DMAMUX_SYNC_POL_RISING_FALLING * @retval None */ -__STATIC_INLINE void LL_DMAMUX_SetSyncPolarity(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t Polarity) +__STATIC_INLINE void LL_DMAMUX_SetSyncPolarity(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t Polarity) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1049,7 +1049,7 @@ __STATIC_INLINE void LL_DMAMUX_SetSyncPolarity(DMAMUX_Channel_TypeDef *DMAMUXx, * @arg @ref LL_DMAMUX_SYNC_POL_FALLING * @arg @ref LL_DMAMUX_SYNC_POL_RISING_FALLING */ -__STATIC_INLINE uint32_t LL_DMAMUX_GetSyncPolarity(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_DMAMUX_GetSyncPolarity(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1079,7 +1079,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_GetSyncPolarity(DMAMUX_Channel_TypeDef *DMAMU * @arg @ref LL_DMAMUX_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_DMAMUX_EnableEventGeneration(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +__STATIC_INLINE void LL_DMAMUX_EnableEventGeneration(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1109,7 +1109,7 @@ __STATIC_INLINE void LL_DMAMUX_EnableEventGeneration(DMAMUX_Channel_TypeDef *DMA * @arg @ref LL_DMAMUX_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_DMAMUX_DisableEventGeneration(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +__STATIC_INLINE void LL_DMAMUX_DisableEventGeneration(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1139,7 +1139,7 @@ __STATIC_INLINE void LL_DMAMUX_DisableEventGeneration(DMAMUX_Channel_TypeDef *DM * @arg @ref LL_DMAMUX_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledEventGeneration(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledEventGeneration(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1169,7 +1169,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledEventGeneration(DMAMUX_Channel_TypeD * @arg @ref LL_DMAMUX_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_DMAMUX_EnableSync(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +__STATIC_INLINE void LL_DMAMUX_EnableSync(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1199,7 +1199,7 @@ __STATIC_INLINE void LL_DMAMUX_EnableSync(DMAMUX_Channel_TypeDef *DMAMUXx, uint3 * @arg @ref LL_DMAMUX_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_DMAMUX_DisableSync(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +__STATIC_INLINE void LL_DMAMUX_DisableSync(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1229,7 +1229,7 @@ __STATIC_INLINE void LL_DMAMUX_DisableSync(DMAMUX_Channel_TypeDef *DMAMUXx, uint * @arg @ref LL_DMAMUX_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledSync(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledSync(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1284,7 +1284,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledSync(DMAMUX_Channel_TypeDef *DMAMUXx * @arg @ref LL_DMAMUX2_SYNC_EXTI2 * @retval None */ -__STATIC_INLINE void LL_DMAMUX_SetSyncID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t SyncID) +__STATIC_INLINE void LL_DMAMUX_SetSyncID(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t SyncID) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1338,7 +1338,7 @@ __STATIC_INLINE void LL_DMAMUX_SetSyncID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32 * @arg @ref LL_DMAMUX2_SYNC_EXTI0 * @arg @ref LL_DMAMUX2_SYNC_EXTI2 */ -__STATIC_INLINE uint32_t LL_DMAMUX_GetSyncID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_DMAMUX_GetSyncID(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1360,7 +1360,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_GetSyncID(DMAMUX_Channel_TypeDef *DMAMUXx, ui * @arg @ref LL_DMAMUX_REQ_GEN_7 * @retval None */ -__STATIC_INLINE void LL_DMAMUX_EnableRequestGen(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +__STATIC_INLINE void LL_DMAMUX_EnableRequestGen(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1378,7 +1378,7 @@ __STATIC_INLINE void LL_DMAMUX_EnableRequestGen(DMAMUX_Channel_TypeDef *DMAMUXx, * @arg @ref LL_DMAMUX_REQ_GEN_3 * @retval None */ -__STATIC_INLINE void LL_DMAMUX_DisableRequestGen(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +__STATIC_INLINE void LL_DMAMUX_DisableRequestGen(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1400,7 +1400,7 @@ __STATIC_INLINE void LL_DMAMUX_DisableRequestGen(DMAMUX_Channel_TypeDef *DMAMUXx * @arg @ref LL_DMAMUX_REQ_GEN_7 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledRequestGen(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledRequestGen(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1427,7 +1427,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledRequestGen(DMAMUX_Channel_TypeDef *D * @arg @ref LL_DMAMUX_REQ_GEN_POL_RISING_FALLING * @retval None */ -__STATIC_INLINE void LL_DMAMUX_SetRequestGenPolarity(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel, uint32_t Polarity) +__STATIC_INLINE void LL_DMAMUX_SetRequestGenPolarity(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel, uint32_t Polarity) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1453,7 +1453,7 @@ __STATIC_INLINE void LL_DMAMUX_SetRequestGenPolarity(DMAMUX_Channel_TypeDef *DMA * @arg @ref LL_DMAMUX_REQ_GEN_POL_FALLING * @arg @ref LL_DMAMUX_REQ_GEN_POL_RISING_FALLING */ -__STATIC_INLINE uint32_t LL_DMAMUX_GetRequestGenPolarity(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +__STATIC_INLINE uint32_t LL_DMAMUX_GetRequestGenPolarity(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1477,7 +1477,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_GetRequestGenPolarity(DMAMUX_Channel_TypeDef * @param RequestNb This parameter must be a value between Min_Data = 1 and Max_Data = 32. * @retval None */ -__STATIC_INLINE void LL_DMAMUX_SetGenRequestNb(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel, uint32_t RequestNb) +__STATIC_INLINE void LL_DMAMUX_SetGenRequestNb(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel, uint32_t RequestNb) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1499,7 +1499,7 @@ __STATIC_INLINE void LL_DMAMUX_SetGenRequestNb(DMAMUX_Channel_TypeDef *DMAMUXx, * @arg @ref LL_DMAMUX_REQ_GEN_7 * @retval Between Min_Data = 1 and Max_Data = 32 */ -__STATIC_INLINE uint32_t LL_DMAMUX_GetGenRequestNb(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +__STATIC_INLINE uint32_t LL_DMAMUX_GetGenRequestNb(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1561,7 +1561,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_GetGenRequestNb(DMAMUX_Channel_TypeDef *DMAMU * @note (*) Availability depends on devices. * @retval None */ -__STATIC_INLINE void LL_DMAMUX_SetRequestSignalID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel, uint32_t RequestSignalID) +__STATIC_INLINE void LL_DMAMUX_SetRequestSignalID(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel, uint32_t RequestSignalID) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1607,7 +1607,7 @@ __STATIC_INLINE void LL_DMAMUX_SetRequestSignalID(DMAMUX_Channel_TypeDef *DMAMUX * @arg @ref LL_DMAMUX2_SYNC_EXTI0 * @arg @ref LL_DMAMUX2_SYNC_EXTI2 */ -__STATIC_INLINE uint32_t LL_DMAMUX_GetRequestSignalID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +__STATIC_INLINE uint32_t LL_DMAMUX_GetRequestSignalID(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1628,7 +1628,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_GetRequestSignalID(DMAMUX_Channel_TypeDef *DM * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO0(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO0(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1641,7 +1641,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO0(DMAMUX_Channel_TypeDef *DMAM * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO1(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO1(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1654,7 +1654,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO1(DMAMUX_Channel_TypeDef *DMAM * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO2(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO2(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1667,7 +1667,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO2(DMAMUX_Channel_TypeDef *DMAM * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO3(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO3(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1680,7 +1680,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO3(DMAMUX_Channel_TypeDef *DMAM * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO4(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO4(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1693,7 +1693,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO4(DMAMUX_Channel_TypeDef *DMAM * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO5(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO5(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1706,7 +1706,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO5(DMAMUX_Channel_TypeDef *DMAM * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO6(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO6(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1719,7 +1719,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO6(DMAMUX_Channel_TypeDef *DMAM * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO7(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO7(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1732,7 +1732,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO7(DMAMUX_Channel_TypeDef *DMAM * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO8(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO8(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1745,7 +1745,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO8(DMAMUX_Channel_TypeDef *DMAM * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO9(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO9(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1758,7 +1758,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO9(DMAMUX_Channel_TypeDef *DMAM * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO10(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO10(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1771,7 +1771,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO10(DMAMUX_Channel_TypeDef *DMA * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO11(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO11(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1784,7 +1784,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO11(DMAMUX_Channel_TypeDef *DMA * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO12(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO12(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1797,7 +1797,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO12(DMAMUX_Channel_TypeDef *DMA * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO13(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO13(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1810,7 +1810,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO13(DMAMUX_Channel_TypeDef *DMA * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO14(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO14(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1823,7 +1823,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO14(DMAMUX_Channel_TypeDef *DMA * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO15(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO15(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1836,7 +1836,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO15(DMAMUX_Channel_TypeDef *DMA * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO0(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO0(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1849,7 +1849,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO0(DMAMUX_Channel_TypeDef *DMA * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO1(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO1(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1862,7 +1862,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO1(DMAMUX_Channel_TypeDef *DMA * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO2(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO2(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1875,7 +1875,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO2(DMAMUX_Channel_TypeDef *DMA * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO3(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO3(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1888,7 +1888,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO3(DMAMUX_Channel_TypeDef *DMA * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO4(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO4(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1901,7 +1901,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO4(DMAMUX_Channel_TypeDef *DMA * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO5(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO5(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1914,7 +1914,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO5(DMAMUX_Channel_TypeDef *DMA * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO6(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO6(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1927,7 +1927,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO6(DMAMUX_Channel_TypeDef *DMA * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO7(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO7(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1940,7 +1940,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO7(DMAMUX_Channel_TypeDef *DMA * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO0(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO0(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1953,7 +1953,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO0(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO1(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO1(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1966,7 +1966,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO1(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO2(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO2(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1979,7 +1979,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO2(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO3(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO3(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -1992,7 +1992,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO3(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO4(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO4(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2005,7 +2005,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO4(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO5(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO5(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2018,7 +2018,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO5(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO6(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO6(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2031,7 +2031,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO6(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO7(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO7(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2044,7 +2044,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO7(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO8(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO8(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2057,7 +2057,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO8(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO9(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO9(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2070,7 +2070,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO9(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO10(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO10(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2083,7 +2083,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO10(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO11(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO11(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2096,7 +2096,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO11(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO12(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO12(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2109,7 +2109,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO12(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO13(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO13(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2122,7 +2122,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO13(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO14(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO14(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2135,7 +2135,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO14(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO15(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO15(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2148,7 +2148,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_SO15(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO0(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO0(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2161,7 +2161,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO0(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO1(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO1(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2174,7 +2174,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO1(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO2(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO2(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2187,7 +2187,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO2(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO3(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO3(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2200,7 +2200,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO3(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO4(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO4(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2213,7 +2213,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO4(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO5(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO5(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2226,7 +2226,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO5(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO6(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO6(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2239,7 +2239,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO6(DMAMUX_Channel_TypeDef *DMAMUXx) * @param DMAMUXx DMAMUXx DMAMUXx Instance * @retval None */ -__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO7(DMAMUX_Channel_TypeDef *DMAMUXx) +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO7(const DMAMUX_Channel_TypeDef *DMAMUXx) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2277,7 +2277,7 @@ __STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO7(DMAMUX_Channel_TypeDef *DMAMUXx) * @arg @ref LL_DMAMUX_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_DMAMUX_EnableIT_SO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +__STATIC_INLINE void LL_DMAMUX_EnableIT_SO(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2307,7 +2307,7 @@ __STATIC_INLINE void LL_DMAMUX_EnableIT_SO(DMAMUX_Channel_TypeDef *DMAMUXx, uint * @arg @ref LL_DMAMUX_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_DMAMUX_DisableIT_SO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +__STATIC_INLINE void LL_DMAMUX_DisableIT_SO(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2337,7 +2337,7 @@ __STATIC_INLINE void LL_DMAMUX_DisableIT_SO(DMAMUX_Channel_TypeDef *DMAMUXx, uin * @arg @ref LL_DMAMUX_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledIT_SO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledIT_SO(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2359,7 +2359,7 @@ __STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledIT_SO(DMAMUX_Channel_TypeDef *DMAMUX * @arg @ref LL_DMAMUX_REQ_GEN_7 * @retval None */ -__STATIC_INLINE void LL_DMAMUX_EnableIT_RGO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +__STATIC_INLINE void LL_DMAMUX_EnableIT_RGO(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2381,7 +2381,7 @@ __STATIC_INLINE void LL_DMAMUX_EnableIT_RGO(DMAMUX_Channel_TypeDef *DMAMUXx, uin * @arg @ref LL_DMAMUX_REQ_GEN_7 * @retval None */ -__STATIC_INLINE void LL_DMAMUX_DisableIT_RGO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +__STATIC_INLINE void LL_DMAMUX_DisableIT_RGO(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; @@ -2403,7 +2403,7 @@ __STATIC_INLINE void LL_DMAMUX_DisableIT_RGO(DMAMUX_Channel_TypeDef *DMAMUXx, ui * @arg @ref LL_DMAMUX_REQ_GEN_7 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledIT_RGO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledIT_RGO(const DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) { uint32_t dmamux_base_addr = (uint32_t)DMAMUXx; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_fmac.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_fmac.h index 8e92c3d4..5edb287d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_fmac.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_fmac.h @@ -38,7 +38,6 @@ extern "C" { */ /* Exported types ------------------------------------------------------------*/ - /* Exported constants --------------------------------------------------------*/ /** @defgroup FMAC_LL_Exported_Constants FMAC Exported Constants * @{ @@ -147,9 +146,7 @@ extern "C" { * @} */ - /* Exported functions --------------------------------------------------------*/ - /** @defgroup FMAC_LL_Exported_Functions FMAC Exported Functions * @{ */ @@ -1033,8 +1030,6 @@ __STATIC_INLINE void LL_FMAC_ConfigFunc(FMAC_TypeDef *FMACx, uint8_t Start, uint * @} */ - - #if defined(USE_FULL_LL_DRIVER) /** @defgroup FMAC_LL_EF_Init Initialization and de-initialization functions * @{ @@ -1042,7 +1037,6 @@ __STATIC_INLINE void LL_FMAC_ConfigFunc(FMAC_TypeDef *FMACx, uint8_t Start, uint ErrorStatus LL_FMAC_Init(FMAC_TypeDef *FMACx); ErrorStatus LL_FMAC_DeInit(const FMAC_TypeDef *FMACx); - /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_fmc.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_fmc.h index 3d34898e..7509bced 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_fmc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_fmc.h @@ -190,61 +190,62 @@ extern "C" { typedef struct { uint32_t NSBank; /*!< Specifies the NORSRAM memory device that will be used. - This parameter can be a value of @ref FMC_NORSRAM_Bank */ + This parameter can be a value of @ref FMC_NORSRAM_Bank */ uint32_t DataAddressMux; /*!< Specifies whether the address and data values are multiplexed on the data bus or not. - This parameter can be a value of @ref FMC_Data_Address_Bus_Multiplexing */ + This parameter can be a value of @ref FMC_Data_Address_Bus_Multiplexing*/ uint32_t MemoryType; /*!< Specifies the type of external memory attached to the corresponding memory device. - This parameter can be a value of @ref FMC_Memory_Type */ + This parameter can be a value of @ref FMC_Memory_Type */ uint32_t MemoryDataWidth; /*!< Specifies the external memory device width. - This parameter can be a value of @ref FMC_NORSRAM_Data_Width */ + This parameter can be a value of @ref FMC_NORSRAM_Data_Width */ uint32_t BurstAccessMode; /*!< Enables or disables the burst access mode for Flash memory, valid only with synchronous burst Flash memories. - This parameter can be a value of @ref FMC_Burst_Access_Mode */ + This parameter can be a value of @ref FMC_Burst_Access_Mode */ uint32_t WaitSignalPolarity; /*!< Specifies the wait signal polarity, valid only when accessing the Flash memory in burst mode. - This parameter can be a value of @ref FMC_Wait_Signal_Polarity */ + This parameter can be a value of @ref FMC_Wait_Signal_Polarity */ uint32_t WaitSignalActive; /*!< Specifies if the wait signal is asserted by the memory one clock cycle before the wait state or during the wait state, valid only when accessing memories in burst mode. - This parameter can be a value of @ref FMC_Wait_Timing */ + This parameter can be a value of @ref FMC_Wait_Timing */ - uint32_t WriteOperation; /*!< Enables or disables the write operation in the selected device by the FMC. - This parameter can be a value of @ref FMC_Write_Operation */ + uint32_t WriteOperation; /*!< Enables or disables the write operation in the selected device + by the FMC. + This parameter can be a value of @ref FMC_Write_Operation */ uint32_t WaitSignal; /*!< Enables or disables the wait state insertion via wait signal, valid for Flash memory access in burst mode. - This parameter can be a value of @ref FMC_Wait_Signal */ + This parameter can be a value of @ref FMC_Wait_Signal */ uint32_t ExtendedMode; /*!< Enables or disables the extended mode. - This parameter can be a value of @ref FMC_Extended_Mode */ + This parameter can be a value of @ref FMC_Extended_Mode */ uint32_t AsynchronousWait; /*!< Enables or disables wait signal during asynchronous transfers, valid only with asynchronous Flash memories. - This parameter can be a value of @ref FMC_AsynchronousWait */ + This parameter can be a value of @ref FMC_AsynchronousWait */ uint32_t WriteBurst; /*!< Enables or disables the write burst operation. - This parameter can be a value of @ref FMC_Write_Burst */ + This parameter can be a value of @ref FMC_Write_Burst */ uint32_t ContinuousClock; /*!< Enables or disables the FMC clock output to external memory devices. This parameter is only enabled through the FMC_BCR1 register, and don't care through FMC_BCR2..4 registers. - This parameter can be a value of @ref FMC_Continous_Clock */ + This parameter can be a value of @ref FMC_Continous_Clock */ uint32_t WriteFifo; /*!< Enables or disables the write FIFO used by the FMC controller. This parameter is only enabled through the FMC_BCR1 register, and don't care through FMC_BCR2..4 registers. - This parameter can be a value of @ref FMC_Write_FIFO */ + This parameter can be a value of @ref FMC_Write_FIFO */ uint32_t PageSize; /*!< Specifies the memory page size. - This parameter can be a value of @ref FMC_Page_Size */ + This parameter can be a value of @ref FMC_Page_Size */ } FMC_NORSRAM_InitTypeDef; /** @@ -288,7 +289,7 @@ typedef struct in NOR Flash memories with synchronous burst mode enable */ uint32_t AccessMode; /*!< Specifies the asynchronous access mode. - This parameter can be a value of @ref FMC_Access_Mode */ + This parameter can be a value of @ref FMC_Access_Mode */ } FMC_NORSRAM_TimingTypeDef; /** @@ -1056,11 +1057,11 @@ typedef struct * @{ */ HAL_StatusTypeDef FMC_NORSRAM_Init(FMC_NORSRAM_TypeDef *Device, - FMC_NORSRAM_InitTypeDef *Init); + const FMC_NORSRAM_InitTypeDef *Init); HAL_StatusTypeDef FMC_NORSRAM_Timing_Init(FMC_NORSRAM_TypeDef *Device, - FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank); + const FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank); HAL_StatusTypeDef FMC_NORSRAM_Extended_Timing_Init(FMC_NORSRAM_EXTENDED_TypeDef *Device, - FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank, + const FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank, uint32_t ExtendedMode); HAL_StatusTypeDef FMC_NORSRAM_DeInit(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_EXTENDED_TypeDef *ExDevice, uint32_t Bank); @@ -1086,11 +1087,11 @@ HAL_StatusTypeDef FMC_NORSRAM_WriteOperation_Disable(FMC_NORSRAM_TypeDef *Devic /** @defgroup FMC_LL_NAND_Private_Functions_Group1 NAND Initialization/de-initialization functions * @{ */ -HAL_StatusTypeDef FMC_NAND_Init(FMC_NAND_TypeDef *Device, FMC_NAND_InitTypeDef *Init); +HAL_StatusTypeDef FMC_NAND_Init(FMC_NAND_TypeDef *Device, const FMC_NAND_InitTypeDef *Init); HAL_StatusTypeDef FMC_NAND_CommonSpace_Timing_Init(FMC_NAND_TypeDef *Device, - FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank); + const FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank); HAL_StatusTypeDef FMC_NAND_AttributeSpace_Timing_Init(FMC_NAND_TypeDef *Device, - FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank); + const FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank); HAL_StatusTypeDef FMC_NAND_DeInit(FMC_NAND_TypeDef *Device, uint32_t Bank); /** * @} @@ -1101,7 +1102,7 @@ HAL_StatusTypeDef FMC_NAND_DeInit(FMC_NAND_TypeDef *Device, uint32_t Bank); */ HAL_StatusTypeDef FMC_NAND_ECC_Enable(FMC_NAND_TypeDef *Device, uint32_t Bank); HAL_StatusTypeDef FMC_NAND_ECC_Disable(FMC_NAND_TypeDef *Device, uint32_t Bank); -HAL_StatusTypeDef FMC_NAND_GetECC(FMC_NAND_TypeDef *Device, uint32_t *ECCval, uint32_t Bank, +HAL_StatusTypeDef FMC_NAND_GetECC(const FMC_NAND_TypeDef *Device, uint32_t *ECCval, uint32_t Bank, uint32_t Timeout); /** * @} @@ -1117,9 +1118,9 @@ HAL_StatusTypeDef FMC_NAND_GetECC(FMC_NAND_TypeDef *Device, uint32_t *ECCval, u /** @defgroup FMC_LL_SDRAM_Private_Functions_Group1 SDRAM Initialization/de-initialization functions * @{ */ -HAL_StatusTypeDef FMC_SDRAM_Init(FMC_SDRAM_TypeDef *Device, FMC_SDRAM_InitTypeDef *Init); +HAL_StatusTypeDef FMC_SDRAM_Init(FMC_SDRAM_TypeDef *Device, const FMC_SDRAM_InitTypeDef *Init); HAL_StatusTypeDef FMC_SDRAM_Timing_Init(FMC_SDRAM_TypeDef *Device, - FMC_SDRAM_TimingTypeDef *Timing, uint32_t Bank); + const FMC_SDRAM_TimingTypeDef *Timing, uint32_t Bank); HAL_StatusTypeDef FMC_SDRAM_DeInit(FMC_SDRAM_TypeDef *Device, uint32_t Bank); /** * @} @@ -1131,7 +1132,7 @@ HAL_StatusTypeDef FMC_SDRAM_DeInit(FMC_SDRAM_TypeDef *Device, uint32_t Bank); HAL_StatusTypeDef FMC_SDRAM_WriteProtection_Enable(FMC_SDRAM_TypeDef *Device, uint32_t Bank); HAL_StatusTypeDef FMC_SDRAM_WriteProtection_Disable(FMC_SDRAM_TypeDef *Device, uint32_t Bank); HAL_StatusTypeDef FMC_SDRAM_SendCommand(FMC_SDRAM_TypeDef *Device, - FMC_SDRAM_CommandTypeDef *Command, uint32_t Timeout); + const FMC_SDRAM_CommandTypeDef *Command, uint32_t Timeout); HAL_StatusTypeDef FMC_SDRAM_ProgramRefreshRate(FMC_SDRAM_TypeDef *Device, uint32_t RefreshRate); HAL_StatusTypeDef FMC_SDRAM_SetAutoRefreshNumber(FMC_SDRAM_TypeDef *Device, uint32_t AutoRefreshNumber); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_gpio.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_gpio.h index b51f9d3b..b099741d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_gpio.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_gpio.h @@ -309,7 +309,7 @@ __STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint3 * @arg @ref LL_GPIO_MODE_ALTERNATE * @arg @ref LL_GPIO_MODE_ANALOG */ -__STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin) +__STATIC_INLINE uint32_t LL_GPIO_GetPinMode(const GPIO_TypeDef *GPIOx, uint32_t Pin) { return (uint32_t)(READ_BIT(GPIOx->MODER, ((Pin * Pin) * GPIO_MODER_MODE0)) / (Pin * Pin)); } @@ -377,7 +377,7 @@ __STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t PinM * @arg @ref LL_GPIO_OUTPUT_PUSHPULL * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN */ -__STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin) +__STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(const GPIO_TypeDef *GPIOx, uint32_t Pin) { return (uint32_t)(READ_BIT(GPIOx->OTYPER, Pin) / Pin); } @@ -450,7 +450,7 @@ __STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint * @arg @ref LL_GPIO_SPEED_FREQ_HIGH * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH */ -__STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin) +__STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(const GPIO_TypeDef *GPIOx, uint32_t Pin) { return (uint32_t)(READ_BIT(GPIOx->OSPEEDR, ((Pin * Pin) * GPIO_OSPEEDR_OSPEED0)) / (Pin * Pin)); } @@ -515,7 +515,7 @@ __STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint3 * @arg @ref LL_GPIO_PULL_UP * @arg @ref LL_GPIO_PULL_DOWN */ -__STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin) +__STATIC_INLINE uint32_t LL_GPIO_GetPinPull(const GPIO_TypeDef *GPIOx, uint32_t Pin) { return (uint32_t)(READ_BIT(GPIOx->PUPDR, ((Pin * Pin) * GPIO_PUPDR_PUPD0)) / (Pin * Pin)); } @@ -591,7 +591,7 @@ __STATIC_INLINE void LL_GPIO_SetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin, uin * @arg @ref LL_GPIO_AF_14 * @arg @ref LL_GPIO_AF_15 */ -__STATIC_INLINE uint32_t LL_GPIO_GetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin) +__STATIC_INLINE uint32_t LL_GPIO_GetAFPin_0_7(const GPIO_TypeDef *GPIOx, uint32_t Pin) { return (uint32_t)(READ_BIT(GPIOx->AFR[0], ((((Pin * Pin) * Pin) * Pin) * GPIO_AFRL_AFSEL0)) / (((Pin * Pin) * Pin) * Pin)); @@ -669,7 +669,7 @@ __STATIC_INLINE void LL_GPIO_SetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin, ui * @arg @ref LL_GPIO_AF_14 * @arg @ref LL_GPIO_AF_15 */ -__STATIC_INLINE uint32_t LL_GPIO_GetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin) +__STATIC_INLINE uint32_t LL_GPIO_GetAFPin_8_15(const GPIO_TypeDef *GPIOx, uint32_t Pin) { return (uint32_t)(READ_BIT(GPIOx->AFR[1], (((((Pin >> 8U) * (Pin >> 8U)) * (Pin >> 8U)) * (Pin >> 8U)) * GPIO_AFRH_AFSEL8)) / ((((Pin >> 8U) * @@ -741,7 +741,7 @@ __STATIC_INLINE void LL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) * @arg @ref LL_GPIO_PIN_ALL * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMask) +__STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(const GPIO_TypeDef *GPIOx, uint32_t PinMask) { return ((READ_BIT(GPIOx->LCKR, PinMask) == (PinMask)) ? 1UL : 0UL); } @@ -752,7 +752,7 @@ __STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMa * @param GPIOx GPIO Port * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx) +__STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(const GPIO_TypeDef *GPIOx) { return ((READ_BIT(GPIOx->LCKR, GPIO_LCKR_LCKK) == (GPIO_LCKR_LCKK)) ? 1UL : 0UL); } @@ -771,7 +771,7 @@ __STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx) * @param GPIOx GPIO Port * @retval Input data register value of port */ -__STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx) +__STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(const GPIO_TypeDef *GPIOx) { return (uint32_t)(READ_REG(GPIOx->IDR)); } @@ -800,7 +800,7 @@ __STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx) * @arg @ref LL_GPIO_PIN_ALL * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) +__STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(const GPIO_TypeDef *GPIOx, uint32_t PinMask) { return ((READ_BIT(GPIOx->IDR, PinMask) == (PinMask)) ? 1UL : 0UL); } @@ -823,7 +823,7 @@ __STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortV * @param GPIOx GPIO Port * @retval Output data register value of port */ -__STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx) +__STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(const GPIO_TypeDef *GPIOx) { return (uint32_t)(READ_REG(GPIOx->ODR)); } @@ -852,7 +852,7 @@ __STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx) * @arg @ref LL_GPIO_PIN_ALL * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) +__STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet(const GPIO_TypeDef *GPIOx, uint32_t PinMask) { return ((READ_BIT(GPIOx->ODR, PinMask) == (PinMask)) ? 1UL : 0UL); } @@ -954,7 +954,7 @@ __STATIC_INLINE void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask) * @{ */ -ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx); +ErrorStatus LL_GPIO_DeInit(const GPIO_TypeDef *GPIOx); ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct); void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_hrtim.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_hrtim.h index d3f3608f..741d758b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_hrtim.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_hrtim.h @@ -1972,7 +1972,7 @@ __STATIC_INLINE void LL_HRTIM_ConfigADCTrig(HRTIM_TypeDef *HRTIMx, uint32_t ADCT { uint32_t shift = ((3U * ADCTrig) & 0x1FU); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.ADC1R) + - REG_OFFSET_TAB_ADCxR[ADCTrig])); + REG_OFFSET_TAB_ADCxR[ADCTrig])); MODIFY_REG(HRTIMx->sCommonRegs.CR1, (HRTIM_CR1_ADC1USRC << shift), (Update << shift)); WRITE_REG(*pReg, Src); } @@ -2247,7 +2247,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_GetADCTrigUpdate(const HRTIM_TypeDef *HRTIMx, __STATIC_INLINE void LL_HRTIM_SetADCTrigSrc(HRTIM_TypeDef *HRTIMx, uint32_t ADCTrig, uint32_t Src) { __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.ADC1R) + - REG_OFFSET_TAB_ADCxR[ADCTrig])); + REG_OFFSET_TAB_ADCxR[ADCTrig])); WRITE_REG(*pReg, Src); } @@ -2464,7 +2464,7 @@ __STATIC_INLINE void LL_HRTIM_SetADCTrigSrc(HRTIM_TypeDef *HRTIMx, uint32_t ADCT __STATIC_INLINE uint32_t LL_HRTIM_GetADCTrigSrc(const HRTIM_TypeDef *HRTIMx, uint32_t ADCTrig) { const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.ADC1R) + - REG_OFFSET_TAB_ADCxR[ADCTrig])); + REG_OFFSET_TAB_ADCxR[ADCTrig])); return (*pReg); } @@ -3138,7 +3138,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_EnablePushPullMode(HRTIM_TypeDef *HRTIMx, uint { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].TIMxCR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMCR_PSHPLL); } @@ -3158,7 +3158,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_DisablePushPullMode(HRTIM_TypeDef *HRTIMx, uin { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].TIMxCR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMCR_PSHPLL); } @@ -3178,7 +3178,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_IsEnabledPushPullMode(const HRTIM_TypeDef { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].TIMxCR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMCR_PSHPLL) == (HRTIM_TIMCR_PSHPLL)) ? 1UL : 0UL); } @@ -3209,7 +3209,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_SetCompareMode(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].TIMxCR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); uint32_t shift = (((uint32_t)POSITION_VAL(CompareUnit) - (uint32_t)POSITION_VAL(LL_HRTIM_COMPAREUNIT_2)) & 0x1FU); MODIFY_REG(* pReg, (HRTIM_TIMCR_DELCMP2 << shift), (Mode << shift)); } @@ -3238,7 +3238,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetCompareMode(const HRTIM_TypeDef *HRTIMx { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].TIMxCR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); uint32_t shift = (((uint32_t)POSITION_VAL(CompareUnit) - (uint32_t)POSITION_VAL(LL_HRTIM_COMPAREUNIT_2)) & 0x1FU); return (READ_BIT(*pReg, (HRTIM_TIMCR_DELCMP2 << shift)) >> shift); } @@ -3268,7 +3268,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_SetCounter(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MCNTR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(* pReg, HRTIM_MCNTR_MCNTR, Counter); } @@ -3290,7 +3290,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetCounter(const HRTIM_TypeDef *HRTIMx, ui { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MCNTR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_MCNTR_MCNTR)); } @@ -3313,7 +3313,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_SetPeriod(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MPER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(* pReg, HRTIM_MPER_MPER, Period); } @@ -3335,7 +3335,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetPeriod(const HRTIM_TypeDef *HRTIMx, uin { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MPER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_MPER_MPER)); } @@ -3358,7 +3358,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_SetRepetition(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MREP) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(* pReg, HRTIM_MREP_MREP, Repetition); } @@ -3380,7 +3380,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetRepetition(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MREP) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_MREP_MREP)); } @@ -3405,7 +3405,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_SetCompare1(HRTIM_TypeDef *HRTIMx, uint32_t Ti { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MCMP1R) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(* pReg, HRTIM_MCMP1R_MCMP1R, CompareValue); } @@ -3429,7 +3429,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetCompare1(const HRTIM_TypeDef *HRTIMx, u { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MCMP1R) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_MCMP1R_MCMP1R)); } @@ -3454,7 +3454,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_SetCompare2(HRTIM_TypeDef *HRTIMx, uint32_t Ti { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MCMP2R) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(* pReg, HRTIM_MCMP1R_MCMP2R, CompareValue); } @@ -3478,7 +3478,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetCompare2(const HRTIM_TypeDef *HRTIMx, u { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MCMP2R) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_MCMP1R_MCMP2R)); } @@ -3503,7 +3503,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_SetCompare3(HRTIM_TypeDef *HRTIMx, uint32_t Ti { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MCMP3R) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(* pReg, HRTIM_MCMP1R_MCMP3R, CompareValue); } @@ -3527,7 +3527,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetCompare3(const HRTIM_TypeDef *HRTIMx, u { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MCMP3R) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_MCMP1R_MCMP3R)); } @@ -3552,7 +3552,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_SetCompare4(HRTIM_TypeDef *HRTIMx, uint32_t Ti { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MCMP4R) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(* pReg, HRTIM_MCMP1R_MCMP4R, CompareValue); } @@ -3576,7 +3576,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetCompare4(const HRTIM_TypeDef *HRTIMx, u { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MCMP4R) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_MCMP1R_MCMP4R)); } @@ -3663,7 +3663,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_SetResetTrig(HRTIM_TypeDef *HRTIMx, uint32_t T { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].RSTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); WRITE_REG(*pReg, ResetTrig); } @@ -3743,7 +3743,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetResetTrig(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].RSTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_REG(*pReg)); } @@ -3763,7 +3763,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetCapture1(const HRTIM_TypeDef *HRTIMx, u { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].CPT1xR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_REG(*pReg)); } @@ -3783,7 +3783,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetCapture2(const HRTIM_TypeDef *HRTIMx, u { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].CPT2xR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_REG(*pReg)); } @@ -3871,7 +3871,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_SetCaptureTrig(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0U].CPT1xCR) + - REG_OFFSET_TAB_TIMER[iTimer] + (CaptureUnit * 4U))); + REG_OFFSET_TAB_TIMER[iTimer] + (CaptureUnit * 4U))); WRITE_REG(*pReg, CaptureTrig); } @@ -3957,7 +3957,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetCaptureTrig(const HRTIM_TypeDef *HRTIMx { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0U].CPT1xCR) + - REG_OFFSET_TAB_TIMER[iTimer] + (CaptureUnit * 4U))); + REG_OFFSET_TAB_TIMER[iTimer] + (CaptureUnit * 4U))); return (READ_REG(*pReg)); } @@ -3977,7 +3977,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_EnableDeadTime(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_OUTR_DTEN); } @@ -3997,7 +3997,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_DisableDeadTime(HRTIM_TypeDef *HRTIMx, uint32_ { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_OUTR_DTEN); } @@ -4017,7 +4017,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_IsEnabledDeadTime(const HRTIM_TypeDef *HRT { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_OUTR_DTEN) == (HRTIM_OUTR_DTEN)) ? 1UL : 0UL); } @@ -4062,7 +4062,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_SetDLYPRTMode(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(*pReg, HRTIM_OUTR_DLYPRT, DLYPRTMode); } @@ -4103,7 +4103,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetDLYPRTMode(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_OUTR_DLYPRT)); } @@ -4124,7 +4124,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_EnableDLYPRT(HRTIM_TypeDef *HRTIMx, uint32_t T { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_OUTR_DLYPRTEN); } @@ -4145,7 +4145,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_DisableDLYPRT(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_OUTR_DLYPRTEN); } @@ -4165,7 +4165,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_IsEnabledDLYPRT(const HRTIM_TypeDef *HRTIM { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_OUTR_DLYPRTEN) == (HRTIM_OUTR_DLYPRTEN)) ? 1UL : 0UL); } @@ -4195,7 +4195,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_EnableFault(HRTIM_TypeDef *HRTIMx, uint32_t Ti { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].FLTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, Faults); } @@ -4225,7 +4225,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_DisableFault(HRTIM_TypeDef *HRTIMx, uint32_t T { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].FLTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, Faults); } @@ -4255,7 +4255,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_IsEnabledFault(const HRTIM_TypeDef *HRTIMx { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].FLTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, Fault) == (Fault)) ? 1UL : 0UL); } @@ -4277,7 +4277,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_LockFault(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].FLTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_FLTR_FLTLCK); } @@ -4442,7 +4442,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetCurrentPushPullStatus(const HRTIM_TypeD { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_TIMISR_CPPSTAT)); } @@ -4464,7 +4464,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetIdlePushPullStatus(const HRTIM_TypeDef { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_TIMISR_IPPSTAT)); } @@ -4524,7 +4524,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_SetEventFilter(HRTIM_TypeDef *HRTIMx, uint32_t uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - POSITION_VAL(LL_HRTIM_TIMER_A)); uint32_t iEvent = (uint8_t)(POSITION_VAL(Event) - POSITION_VAL(LL_HRTIM_EVENT_1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].EEFxR1) + - REG_OFFSET_TAB_TIMER[iTimer] + REG_OFFSET_TAB_EECR[iEvent])); + REG_OFFSET_TAB_TIMER[iTimer] + REG_OFFSET_TAB_EECR[iEvent])); MODIFY_REG(*pReg, (HRTIM_EEFR1_EE1FLTR << REG_SHIFT_TAB_EExSRC[iEvent]), (Filter << REG_SHIFT_TAB_EExSRC[iEvent])); } @@ -4581,7 +4581,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetEventFilter(const HRTIM_TypeDef *HRTIMx uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - POSITION_VAL(LL_HRTIM_TIMER_A)); uint32_t iEvent = (uint8_t)(POSITION_VAL(Event) - POSITION_VAL(LL_HRTIM_EVENT_1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].EEFxR1) + - REG_OFFSET_TAB_TIMER[iTimer] + REG_OFFSET_TAB_EECR[iEvent])); + REG_OFFSET_TAB_TIMER[iTimer] + REG_OFFSET_TAB_EECR[iEvent])); return (READ_BIT(*pReg, (uint32_t)(HRTIM_EEFR1_EE1FLTR) << (REG_SHIFT_TAB_EExSRC[iEvent])) >> (REG_SHIFT_TAB_EExSRC[iEvent])); } @@ -4627,7 +4627,7 @@ __STATIC_INLINE void LL_HRTIM_TIM_SetEventLatchStatus(HRTIM_TypeDef *HRTIMx, uin uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - POSITION_VAL(LL_HRTIM_TIMER_A)); uint32_t iEvent = (uint8_t)(POSITION_VAL(Event) - POSITION_VAL(LL_HRTIM_EVENT_1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].EEFxR1) + - REG_OFFSET_TAB_TIMER[iTimer] + REG_OFFSET_TAB_EECR[iEvent])); + REG_OFFSET_TAB_TIMER[iTimer] + REG_OFFSET_TAB_EECR[iEvent])); MODIFY_REG(*pReg, (HRTIM_EEFR1_EE1LTCH << REG_SHIFT_TAB_EExSRC[iEvent]), (LatchStatus << REG_SHIFT_TAB_EExSRC[iEvent])); } @@ -4670,7 +4670,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_TIM_GetEventLatchStatus(const HRTIM_TypeDef *H uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - POSITION_VAL(LL_HRTIM_TIMER_A)); uint32_t iEvent = (uint8_t)(POSITION_VAL(Event) - POSITION_VAL(LL_HRTIM_EVENT_1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].EEFxR1) + - REG_OFFSET_TAB_TIMER[iTimer] + REG_OFFSET_TAB_EECR[iEvent])); + REG_OFFSET_TAB_TIMER[iTimer] + REG_OFFSET_TAB_EECR[iEvent])); return (READ_BIT(*pReg, (uint32_t)(HRTIM_EEFR1_EE1LTCH) << REG_SHIFT_TAB_EExSRC[iEvent]) >> (REG_SHIFT_TAB_EExSRC[iEvent])); } @@ -4704,7 +4704,7 @@ __STATIC_INLINE void LL_HRTIM_DT_Config(HRTIM_TypeDef *HRTIMx, uint32_t Timer, u { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].DTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(*pReg, HRTIM_DTR_SDTF | HRTIM_DTR_DTPRSC | HRTIM_DTR_SDTR, Configuration); } @@ -4733,7 +4733,7 @@ __STATIC_INLINE void LL_HRTIM_DT_SetPrescaler(HRTIM_TypeDef *HRTIMx, uint32_t Ti { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].DTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(*pReg, HRTIM_DTR_DTPRSC, Prescaler); } @@ -4761,7 +4761,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_DT_GetPrescaler(const HRTIM_TypeDef *HRTIMx, u { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].DTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_DTR_DTPRSC)); } @@ -4782,7 +4782,7 @@ __STATIC_INLINE void LL_HRTIM_DT_SetRisingValue(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].DTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(*pReg, HRTIM_DTR_DTR, RisingValue); } @@ -4802,7 +4802,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_DT_GetRisingValue(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].DTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_DTR_DTR)); } @@ -4825,7 +4825,7 @@ __STATIC_INLINE void LL_HRTIM_DT_SetRisingSign(HRTIM_TypeDef *HRTIMx, uint32_t T { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].DTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(*pReg, HRTIM_DTR_SDTR, RisingSign); } @@ -4847,7 +4847,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_DT_GetRisingSign(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].DTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_DTR_SDTR)); } @@ -4868,7 +4868,7 @@ __STATIC_INLINE void LL_HRTIM_DT_SetFallingValue(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].DTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(*pReg, HRTIM_DTR_DTF, FallingValue << HRTIM_DTR_DTF_Pos); } @@ -4888,7 +4888,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_DT_GetFallingValue(const HRTIM_TypeDef *HRTIMx { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].DTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_DTR_DTF)) >> HRTIM_DTR_DTF_Pos); } @@ -4911,7 +4911,7 @@ __STATIC_INLINE void LL_HRTIM_DT_SetFallingSign(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].DTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(*pReg, HRTIM_DTR_SDTF, FallingSign); } @@ -4933,7 +4933,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_DT_GetFallingSign(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].DTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_DTR_SDTF)); } @@ -4953,7 +4953,7 @@ __STATIC_INLINE void LL_HRTIM_DT_LockRising(const HRTIM_TypeDef *HRTIMx, uint32_ { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].DTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_DTR_DTRLK); } @@ -4973,7 +4973,7 @@ __STATIC_INLINE void LL_HRTIM_DT_LockRisingSign(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].DTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_DTR_DTRSLK); } @@ -4993,7 +4993,7 @@ __STATIC_INLINE void LL_HRTIM_DT_LockFalling(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].DTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_DTR_DTFLK); } @@ -5013,7 +5013,7 @@ __STATIC_INLINE void LL_HRTIM_DT_LockFallingSign(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].DTxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_DTR_DTFSLK); } @@ -5049,7 +5049,7 @@ __STATIC_INLINE void LL_HRTIM_CHP_Config(HRTIM_TypeDef *HRTIMx, uint32_t Timer, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].CHPxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(*pReg, HRTIM_CHPR_STRPW | HRTIM_CHPR_CARDTY | HRTIM_CHPR_CARFRQ, Configuration); } @@ -5089,7 +5089,7 @@ __STATIC_INLINE void LL_HRTIM_CHP_SetPrescaler(HRTIM_TypeDef *HRTIMx, uint32_t T { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].CHPxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(*pReg, HRTIM_CHPR_CARFRQ, Prescaler); } @@ -5125,7 +5125,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_CHP_GetPrescaler(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].CHPxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_CHPR_CARFRQ)); } @@ -5157,7 +5157,7 @@ __STATIC_INLINE void LL_HRTIM_CHP_SetDutyCycle(HRTIM_TypeDef *HRTIMx, uint32_t T { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].CHPxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(*pReg, HRTIM_CHPR_CARDTY, DutyCycle); } @@ -5185,7 +5185,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_CHP_GetDutyCycle(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].CHPxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_CHPR_CARDTY)); } @@ -5224,7 +5224,7 @@ __STATIC_INLINE void LL_HRTIM_CHP_SetPulseWidth(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].CHPxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); MODIFY_REG(*pReg, HRTIM_CHPR_STRPW, PulseWidth); } @@ -5260,7 +5260,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_CHP_GetPulseWidth(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_TACEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].CHPxR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return (READ_BIT(*pReg, HRTIM_CHPR_STRPW)); } @@ -5389,7 +5389,7 @@ __STATIC_INLINE void LL_HRTIM_OUT_SetOutputSetSrc(HRTIM_TypeDef *HRTIMx, uint32_ { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].SETx1R) + - REG_OFFSET_TAB_SETxR[iOutput])); + REG_OFFSET_TAB_SETxR[iOutput])); WRITE_REG(*pReg, SetSrc); } @@ -5509,7 +5509,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_OUT_GetOutputSetSrc(const HRTIM_TypeDef *HRTIM { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].SETx1R) + - REG_OFFSET_TAB_SETxR[iOutput])); + REG_OFFSET_TAB_SETxR[iOutput])); return (uint32_t) READ_REG(*pReg); } @@ -5630,7 +5630,7 @@ __STATIC_INLINE void LL_HRTIM_OUT_SetOutputResetSrc(HRTIM_TypeDef *HRTIMx, uint3 { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].RSTx1R) + - REG_OFFSET_TAB_SETxR[iOutput])); + REG_OFFSET_TAB_SETxR[iOutput])); WRITE_REG(*pReg, ResetSrc); } @@ -5750,7 +5750,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_OUT_GetOutputResetSrc(const HRTIM_TypeDef *HRT { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].RSTx1R) + - REG_OFFSET_TAB_SETxR[iOutput])); + REG_OFFSET_TAB_SETxR[iOutput])); return (uint32_t) READ_REG(*pReg); } @@ -5793,7 +5793,7 @@ __STATIC_INLINE void LL_HRTIM_OUT_Config(HRTIM_TypeDef *HRTIMx, uint32_t Output, { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_OUTxR[iOutput])); + REG_OFFSET_TAB_OUTxR[iOutput])); MODIFY_REG(*pReg, (HRTIM_OUT_CONFIG_MASK << REG_SHIFT_TAB_OUTxR[iOutput]), (Configuration << REG_SHIFT_TAB_OUTxR[iOutput])); } @@ -5823,7 +5823,7 @@ __STATIC_INLINE void LL_HRTIM_OUT_SetPolarity(HRTIM_TypeDef *HRTIMx, uint32_t Ou { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_OUTxR[iOutput])); + REG_OFFSET_TAB_OUTxR[iOutput])); MODIFY_REG(*pReg, (HRTIM_OUTR_POL1 << REG_SHIFT_TAB_OUTxR[iOutput]), (Polarity << REG_SHIFT_TAB_OUTxR[iOutput])); } @@ -5851,7 +5851,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_OUT_GetPolarity(const HRTIM_TypeDef *HRTIMx, u { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_OUTxR[iOutput])); + REG_OFFSET_TAB_OUTxR[iOutput])); return (READ_BIT(*pReg, (uint32_t)(HRTIM_OUTR_POL1) << REG_SHIFT_TAB_OUTxR[iOutput]) >> REG_SHIFT_TAB_OUTxR[iOutput]); } @@ -5881,7 +5881,7 @@ __STATIC_INLINE void LL_HRTIM_OUT_SetIdleMode(HRTIM_TypeDef *HRTIMx, uint32_t Ou { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_OUTxR[iOutput])); + REG_OFFSET_TAB_OUTxR[iOutput])); MODIFY_REG(*pReg, (HRTIM_OUTR_IDLM1 << (REG_SHIFT_TAB_OUTxR[iOutput])), (IdleMode << (REG_SHIFT_TAB_OUTxR[iOutput]))); } @@ -5909,7 +5909,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_OUT_GetIdleMode(const HRTIM_TypeDef *HRTIMx, u { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_OUTxR[iOutput])); + REG_OFFSET_TAB_OUTxR[iOutput])); return (READ_BIT(*pReg, (uint32_t)(HRTIM_OUTR_IDLM1) << REG_SHIFT_TAB_OUTxR[iOutput]) >> REG_SHIFT_TAB_OUTxR[iOutput]); } @@ -5940,7 +5940,7 @@ __STATIC_INLINE void LL_HRTIM_OUT_SetIdleLevel(HRTIM_TypeDef *HRTIMx, uint32_t O { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_OUTxR[iOutput])); + REG_OFFSET_TAB_OUTxR[iOutput])); MODIFY_REG(*pReg, (HRTIM_OUTR_IDLES1 << REG_SHIFT_TAB_OUTxR[iOutput]), (IdleLevel << REG_SHIFT_TAB_OUTxR[iOutput])); } @@ -5968,7 +5968,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_OUT_GetIdleLevel(const HRTIM_TypeDef *HRTIMx, { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_OUTxR[iOutput])); + REG_OFFSET_TAB_OUTxR[iOutput])); return (READ_BIT(*pReg, (uint32_t)(HRTIM_OUTR_IDLES1) << REG_SHIFT_TAB_OUTxR[iOutput]) >> REG_SHIFT_TAB_OUTxR[iOutput]); } @@ -6001,7 +6001,7 @@ __STATIC_INLINE void LL_HRTIM_OUT_SetFaultState(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_OUTxR[iOutput])); + REG_OFFSET_TAB_OUTxR[iOutput])); MODIFY_REG(*pReg, (HRTIM_OUTR_FAULT1 << REG_SHIFT_TAB_OUTxR[iOutput]), (FaultState << REG_SHIFT_TAB_OUTxR[iOutput])); } @@ -6031,7 +6031,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_OUT_GetFaultState(const HRTIM_TypeDef *HRTIMx, { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_OUTxR[iOutput])); + REG_OFFSET_TAB_OUTxR[iOutput])); return (READ_BIT(*pReg, (uint32_t)(HRTIM_OUTR_FAULT1) << REG_SHIFT_TAB_OUTxR[iOutput]) >> REG_SHIFT_TAB_OUTxR[iOutput]); } @@ -6061,7 +6061,7 @@ __STATIC_INLINE void LL_HRTIM_OUT_SetChopperMode(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_OUTxR[iOutput])); + REG_OFFSET_TAB_OUTxR[iOutput])); MODIFY_REG(*pReg, (HRTIM_OUTR_CHP1 << REG_SHIFT_TAB_OUTxR[iOutput]), (ChopperMode << REG_SHIFT_TAB_OUTxR[iOutput])); } @@ -6089,7 +6089,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_OUT_GetChopperMode(const HRTIM_TypeDef *HRTIMx { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_OUTxR[iOutput])); + REG_OFFSET_TAB_OUTxR[iOutput])); return (READ_BIT(*pReg, (uint32_t)(HRTIM_OUTR_CHP1) << REG_SHIFT_TAB_OUTxR[iOutput]) >> REG_SHIFT_TAB_OUTxR[iOutput]); } @@ -6119,7 +6119,7 @@ __STATIC_INLINE void LL_HRTIM_OUT_SetBMEntryMode(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_OUTxR[iOutput])); + REG_OFFSET_TAB_OUTxR[iOutput])); MODIFY_REG(*pReg, (HRTIM_OUTR_DIDL1 << REG_SHIFT_TAB_OUTxR[iOutput]), (BMEntryMode << REG_SHIFT_TAB_OUTxR[iOutput])); } @@ -6147,7 +6147,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_OUT_GetBMEntryMode(const HRTIM_TypeDef *HRTIMx { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].OUTxR) + - REG_OFFSET_TAB_OUTxR[iOutput])); + REG_OFFSET_TAB_OUTxR[iOutput])); return (READ_BIT(*pReg, (uint32_t)(HRTIM_OUTR_DIDL1) << REG_SHIFT_TAB_OUTxR[iOutput]) >> REG_SHIFT_TAB_OUTxR[iOutput]); } @@ -6176,7 +6176,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_OUT_GetDLYPRTOutStatus(const HRTIM_TypeDef *HR { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].TIMxISR) + - REG_OFFSET_TAB_OUTxR[iOutput])); + REG_OFFSET_TAB_OUTxR[iOutput])); return ((READ_BIT(*pReg, (uint32_t)(HRTIM_TIMISR_O1STAT) << REG_SHIFT_TAB_OxSTAT[iOutput]) >> REG_SHIFT_TAB_OxSTAT[iOutput]) >> HRTIM_TIMISR_O1STAT_Pos); } @@ -6214,7 +6214,7 @@ __STATIC_INLINE void LL_HRTIM_OUT_ForceLevel(HRTIM_TypeDef *HRTIMx, uint32_t Out uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].SETx1R) + - REG_OFFSET_TAB_SETxR[iOutput] + REG_OFFSET_TAB_OUT_LEVEL[OutputLevel])); + REG_OFFSET_TAB_SETxR[iOutput] + REG_OFFSET_TAB_OUT_LEVEL[OutputLevel])); SET_BIT(*pReg, HRTIM_SET1R_SST); } @@ -6242,7 +6242,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_OUT_GetLevel(const HRTIM_TypeDef *HRTIMx, uint { uint32_t iOutput = (uint8_t)(POSITION_VAL(Output) - POSITION_VAL(LL_HRTIM_OUTPUT_TA1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sTimerxRegs[0].TIMxISR) + - REG_OFFSET_TAB_OUTxR[iOutput])); + REG_OFFSET_TAB_OUTxR[iOutput])); return ((READ_BIT(*pReg, (uint32_t)(HRTIM_TIMISR_O1CPY) << REG_SHIFT_TAB_OxSTAT[iOutput]) >> REG_SHIFT_TAB_OxSTAT[iOutput]) >> HRTIM_TIMISR_O1CPY_Pos); } @@ -6323,7 +6323,7 @@ __STATIC_INLINE void LL_HRTIM_EE_Config(HRTIM_TypeDef *HRTIMx, uint32_t Event, u { uint32_t iEvent = (uint8_t)(POSITION_VAL(Event) - POSITION_VAL(LL_HRTIM_EVENT_1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.EECR1) + - REG_OFFSET_TAB_EECR[iEvent])); + REG_OFFSET_TAB_EECR[iEvent])); MODIFY_REG(*pReg, (HRTIM_EE_CONFIG_MASK << REG_SHIFT_TAB_EExSRC[iEvent]), (Configuration << REG_SHIFT_TAB_EExSRC[iEvent])); } @@ -6363,7 +6363,7 @@ __STATIC_INLINE void LL_HRTIM_EE_SetSrc(HRTIM_TypeDef *HRTIMx, uint32_t Event, u { uint32_t iEvent = (uint8_t)(POSITION_VAL(Event) - POSITION_VAL(LL_HRTIM_EVENT_1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.EECR1) + - REG_OFFSET_TAB_EECR[iEvent])); + REG_OFFSET_TAB_EECR[iEvent])); MODIFY_REG(*pReg, (HRTIM_EECR1_EE1SRC << REG_SHIFT_TAB_EExSRC[iEvent]), (Src << REG_SHIFT_TAB_EExSRC[iEvent])); } @@ -6401,7 +6401,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_EE_GetSrc(const HRTIM_TypeDef *HRTIMx, uint32_ { uint32_t iEvent = (uint8_t)(POSITION_VAL(Event) - POSITION_VAL(LL_HRTIM_EVENT_1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.EECR1) + - REG_OFFSET_TAB_EECR[iEvent])); + REG_OFFSET_TAB_EECR[iEvent])); return (READ_BIT(*pReg, (uint32_t)(HRTIM_EECR1_EE1SRC) << REG_SHIFT_TAB_EExSRC[iEvent]) >> REG_SHIFT_TAB_EExSRC[iEvent]); } @@ -6440,7 +6440,7 @@ __STATIC_INLINE void LL_HRTIM_EE_SetPolarity(HRTIM_TypeDef *HRTIMx, uint32_t Eve { uint32_t iEvent = (uint8_t)(POSITION_VAL(Event) - POSITION_VAL(LL_HRTIM_EVENT_1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.EECR1) + - REG_OFFSET_TAB_EECR[iEvent])); + REG_OFFSET_TAB_EECR[iEvent])); MODIFY_REG(*pReg, (HRTIM_EECR1_EE1POL << REG_SHIFT_TAB_EExSRC[iEvent]), (Polarity << REG_SHIFT_TAB_EExSRC[iEvent])); } @@ -6476,7 +6476,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_EE_GetPolarity(const HRTIM_TypeDef *HRTIMx, ui { uint32_t iEvent = (uint8_t)(POSITION_VAL(Event) - POSITION_VAL(LL_HRTIM_EVENT_1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.EECR1) + - REG_OFFSET_TAB_EECR[iEvent])); + REG_OFFSET_TAB_EECR[iEvent])); return (READ_BIT(*pReg, (uint32_t)(HRTIM_EECR1_EE1POL) << REG_SHIFT_TAB_EExSRC[iEvent]) >> REG_SHIFT_TAB_EExSRC[iEvent]); } @@ -6516,7 +6516,7 @@ __STATIC_INLINE void LL_HRTIM_EE_SetSensitivity(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iEvent = (uint8_t)(POSITION_VAL(Event) - POSITION_VAL(LL_HRTIM_EVENT_1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.EECR1) + - REG_OFFSET_TAB_EECR[iEvent])); + REG_OFFSET_TAB_EECR[iEvent])); MODIFY_REG(*pReg, (HRTIM_EECR1_EE1SNS << REG_SHIFT_TAB_EExSRC[iEvent]), (Sensitivity << REG_SHIFT_TAB_EExSRC[iEvent])); } @@ -6554,7 +6554,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_EE_GetSensitivity(const HRTIM_TypeDef *HRTIMx, { uint32_t iEvent = (uint8_t)(POSITION_VAL(Event) - POSITION_VAL(LL_HRTIM_EVENT_1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.EECR1) + - REG_OFFSET_TAB_EECR[iEvent])); + REG_OFFSET_TAB_EECR[iEvent])); return (READ_BIT(*pReg, (uint32_t)(HRTIM_EECR1_EE1SNS) << REG_SHIFT_TAB_EExSRC[iEvent]) >> REG_SHIFT_TAB_EExSRC[iEvent]); } @@ -6587,7 +6587,7 @@ __STATIC_INLINE void LL_HRTIM_EE_SetFastMode(HRTIM_TypeDef *HRTIMx, uint32_t Eve { uint32_t iEvent = (uint8_t)(POSITION_VAL(Event) - POSITION_VAL(LL_HRTIM_EVENT_1)); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.EECR1) + - REG_OFFSET_TAB_EECR[iEvent])); + REG_OFFSET_TAB_EECR[iEvent])); MODIFY_REG(*pReg, (HRTIM_EECR1_EE1FAST << REG_SHIFT_TAB_EExSRC[iEvent]), (FastMode << REG_SHIFT_TAB_EExSRC[iEvent])); } @@ -6618,7 +6618,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_EE_GetFastMode(const HRTIM_TypeDef *HRTIMx, ui { uint32_t iEvent = (uint8_t)(POSITION_VAL(Event) - POSITION_VAL(LL_HRTIM_EVENT_1)); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.EECR1) + - REG_OFFSET_TAB_EECR[iEvent])); + REG_OFFSET_TAB_EECR[iEvent])); return (READ_BIT(*pReg, (uint32_t)(HRTIM_EECR1_EE1FAST) << REG_SHIFT_TAB_EExSRC[iEvent]) >> REG_SHIFT_TAB_EExSRC[iEvent]); } @@ -6770,7 +6770,7 @@ __STATIC_INLINE void LL_HRTIM_FLT_Config(HRTIM_TypeDef *HRTIMx, uint32_t Fault, { uint32_t iFault = (uint8_t)POSITION_VAL(Fault); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.FLTINR1) + - REG_OFFSET_TAB_FLTINR[iFault])); + REG_OFFSET_TAB_FLTINR[iFault])); MODIFY_REG(*pReg, (HRTIM_FLT_CONFIG_MASK << REG_SHIFT_TAB_FLTxE[iFault]), (Configuration << REG_SHIFT_TAB_FLTxE[iFault])); } @@ -6799,7 +6799,7 @@ __STATIC_INLINE void LL_HRTIM_FLT_SetSrc(HRTIM_TypeDef *HRTIMx, uint32_t Fault, { uint32_t iFault = (uint8_t)POSITION_VAL(Fault); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.FLTINR1) + - REG_OFFSET_TAB_FLTINR[iFault])); + REG_OFFSET_TAB_FLTINR[iFault])); MODIFY_REG(*pReg, (HRTIM_FLTINR1_FLT1SRC << REG_SHIFT_TAB_FLTxE[iFault]), (Src << REG_SHIFT_TAB_FLTxE[iFault])); } @@ -6824,8 +6824,8 @@ __STATIC_INLINE void LL_HRTIM_FLT_SetSrc(HRTIM_TypeDef *HRTIMx, uint32_t Fault, __STATIC_INLINE uint32_t LL_HRTIM_FLT_GetSrc(const HRTIM_TypeDef *HRTIMx, uint32_t Fault) { uint32_t iFault = (uint8_t)POSITION_VAL(Fault); - __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.FLTINR1) + - REG_OFFSET_TAB_FLTINR[iFault])); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.FLTINR1) + + REG_OFFSET_TAB_FLTINR[iFault])); return (READ_BIT(*pReg, (HRTIM_FLTINR1_FLT1SRC << REG_SHIFT_TAB_FLTxE[iFault])) >> REG_SHIFT_TAB_FLTxE[iFault]); } @@ -6853,7 +6853,7 @@ __STATIC_INLINE void LL_HRTIM_FLT_SetPolarity(HRTIM_TypeDef *HRTIMx, uint32_t Fa { uint32_t iFault = (uint8_t)POSITION_VAL(Fault); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.FLTINR1) + - REG_OFFSET_TAB_FLTINR[iFault])); + REG_OFFSET_TAB_FLTINR[iFault])); MODIFY_REG(*pReg, (HRTIM_FLTINR1_FLT1P << REG_SHIFT_TAB_FLTxE[iFault]), (Polarity << REG_SHIFT_TAB_FLTxE[iFault])); } @@ -6878,8 +6878,8 @@ __STATIC_INLINE void LL_HRTIM_FLT_SetPolarity(HRTIM_TypeDef *HRTIMx, uint32_t Fa __STATIC_INLINE uint32_t LL_HRTIM_FLT_GetPolarity(const HRTIM_TypeDef *HRTIMx, uint32_t Fault) { uint32_t iFault = (uint8_t)POSITION_VAL(Fault); - __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.FLTINR1) + - REG_OFFSET_TAB_FLTINR[iFault])); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.FLTINR1) + + REG_OFFSET_TAB_FLTINR[iFault])); return (READ_BIT(*pReg, (HRTIM_FLTINR1_FLT1P << REG_SHIFT_TAB_FLTxE[iFault])) >> REG_SHIFT_TAB_FLTxE[iFault]); } @@ -6921,7 +6921,7 @@ __STATIC_INLINE void LL_HRTIM_FLT_SetFilter(HRTIM_TypeDef *HRTIMx, uint32_t Faul { uint32_t iFault = (uint8_t)POSITION_VAL(Fault); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.FLTINR1) + - REG_OFFSET_TAB_FLTINR[iFault])); + REG_OFFSET_TAB_FLTINR[iFault])); MODIFY_REG(*pReg, (HRTIM_FLTINR1_FLT1F << REG_SHIFT_TAB_FLTxE[iFault]), (Filter << REG_SHIFT_TAB_FLTxE[iFault])); } @@ -6960,8 +6960,8 @@ __STATIC_INLINE void LL_HRTIM_FLT_SetFilter(HRTIM_TypeDef *HRTIMx, uint32_t Faul __STATIC_INLINE uint32_t LL_HRTIM_FLT_GetFilter(const HRTIM_TypeDef *HRTIMx, uint32_t Fault) { uint32_t iFault = (uint8_t)POSITION_VAL(Fault); - __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.FLTINR1) + - REG_OFFSET_TAB_FLTINR[iFault])); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.FLTINR1) + + REG_OFFSET_TAB_FLTINR[iFault])); return (READ_BIT(*pReg, (HRTIM_FLTINR1_FLT1F << REG_SHIFT_TAB_FLTxE[iFault])) >> REG_SHIFT_TAB_FLTxE[iFault]); } @@ -7017,7 +7017,7 @@ __STATIC_INLINE void LL_HRTIM_FLT_Lock(HRTIM_TypeDef *HRTIMx, uint32_t Fault) { uint32_t iFault = (uint8_t)POSITION_VAL(Fault); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.FLTINR1) + - REG_OFFSET_TAB_FLTINR[iFault])); + REG_OFFSET_TAB_FLTINR[iFault])); SET_BIT(*pReg, (HRTIM_FLTINR1_FLT1LCK << REG_SHIFT_TAB_FLTxE[iFault])); } @@ -7041,7 +7041,7 @@ __STATIC_INLINE void LL_HRTIM_FLT_Enable(HRTIM_TypeDef *HRTIMx, uint32_t Fault) { uint32_t iFault = (uint8_t)POSITION_VAL(Fault); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.FLTINR1) + - REG_OFFSET_TAB_FLTINR[iFault])); + REG_OFFSET_TAB_FLTINR[iFault])); SET_BIT(*pReg, (HRTIM_FLTINR1_FLT1E << REG_SHIFT_TAB_FLTxE[iFault])); } @@ -7065,7 +7065,7 @@ __STATIC_INLINE void LL_HRTIM_FLT_Disable(HRTIM_TypeDef *HRTIMx, uint32_t Fault) { uint32_t iFault = (uint8_t)POSITION_VAL(Fault); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.FLTINR1) + - REG_OFFSET_TAB_FLTINR[iFault])); + REG_OFFSET_TAB_FLTINR[iFault])); CLEAR_BIT(*pReg, (HRTIM_FLTINR1_FLT1E << REG_SHIFT_TAB_FLTxE[iFault])); } @@ -7089,7 +7089,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_FLT_IsEnabled(const HRTIM_TypeDef *HRTIMx, uin { uint32_t iFault = (uint8_t)POSITION_VAL(Fault); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sCommonRegs.FLTINR1) + - REG_OFFSET_TAB_FLTINR[iFault])); + REG_OFFSET_TAB_FLTINR[iFault])); return (((READ_BIT(*pReg, (HRTIM_FLTINR1_FLT1E << REG_SHIFT_TAB_FLTxE[iFault])) >> REG_SHIFT_TAB_FLTxE[iFault]) == (HRTIM_IER_FLT1)) ? 1UL : 0UL); } @@ -7765,7 +7765,7 @@ __STATIC_INLINE void LL_HRTIM_ClearFlag_UPDATE(HRTIM_TypeDef *HRTIMx, uint32_t T { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MICR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MICR_MUPD); } @@ -7787,7 +7787,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsActiveFlag_UPDATE(const HRTIM_TypeDef *HRTIM { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MISR_MUPD) == (HRTIM_MISR_MUPD)) ? 1UL : 0UL); } @@ -7810,7 +7810,7 @@ __STATIC_INLINE void LL_HRTIM_ClearFlag_REP(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MICR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MICR_MREP); } @@ -7833,7 +7833,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsActiveFlag_REP(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MISR_MREP) == (HRTIM_MISR_MREP)) ? 1UL : 0UL); } @@ -7856,7 +7856,7 @@ __STATIC_INLINE void LL_HRTIM_ClearFlag_CMP1(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MICR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MICR_MCMP1); } @@ -7878,7 +7878,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsActiveFlag_CMP1(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MISR_MCMP1) == (HRTIM_MISR_MCMP1)) ? 1UL : 0UL); } @@ -7901,7 +7901,7 @@ __STATIC_INLINE void LL_HRTIM_ClearFlag_CMP2(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MICR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MICR_MCMP2); } @@ -7923,7 +7923,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsActiveFlag_CMP2(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MISR_MCMP2) == (HRTIM_MISR_MCMP2)) ? 1UL : 0UL); } @@ -7946,7 +7946,7 @@ __STATIC_INLINE void LL_HRTIM_ClearFlag_CMP3(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MICR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MICR_MCMP3); } @@ -7968,7 +7968,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsActiveFlag_CMP3(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MISR_MCMP3) == (HRTIM_MISR_MCMP3)) ? 1UL : 0UL); } @@ -7991,7 +7991,7 @@ __STATIC_INLINE void LL_HRTIM_ClearFlag_CMP4(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MICR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MICR_MCMP4); } @@ -8013,7 +8013,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsActiveFlag_CMP4(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MISR_MCMP4) == (HRTIM_MISR_MCMP4)) ? 1UL : 0UL); } @@ -8034,7 +8034,7 @@ __STATIC_INLINE void LL_HRTIM_ClearFlag_CPT1(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MICR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMICR_CPT1C); } @@ -8054,7 +8054,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsActiveFlag_CPT1(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMISR_CPT1) == (HRTIM_TIMISR_CPT1)) ? 1UL : 0UL); } @@ -8075,7 +8075,7 @@ __STATIC_INLINE void LL_HRTIM_ClearFlag_CPT2(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MICR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMICR_CPT2C); } @@ -8095,7 +8095,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsActiveFlag_CPT2(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMISR_CPT2) == (HRTIM_TIMISR_CPT2)) ? 1UL : 0UL); } @@ -8116,7 +8116,7 @@ __STATIC_INLINE void LL_HRTIM_ClearFlag_SET1(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MICR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMICR_SET1C); } @@ -8136,7 +8136,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsActiveFlag_SET1(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMISR_SET1) == (HRTIM_TIMISR_SET1)) ? 1UL : 0UL); } @@ -8157,7 +8157,7 @@ __STATIC_INLINE void LL_HRTIM_ClearFlag_RST1(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MICR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMICR_RST1C); } @@ -8177,7 +8177,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsActiveFlag_RST1(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMISR_RST1) == (HRTIM_TIMISR_RST1)) ? 1UL : 0UL); } @@ -8198,7 +8198,7 @@ __STATIC_INLINE void LL_HRTIM_ClearFlag_SET2(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MICR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMICR_SET2C); } @@ -8218,7 +8218,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsActiveFlag_SET2(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMISR_SET2) == (HRTIM_TIMISR_SET2)) ? 1UL : 0UL); } @@ -8239,7 +8239,7 @@ __STATIC_INLINE void LL_HRTIM_ClearFlag_RST2(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MICR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMICR_RST2C); } @@ -8259,7 +8259,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsActiveFlag_RST2(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMISR_RST2) == (HRTIM_TIMISR_RST2)) ? 1UL : 0UL); } @@ -8280,7 +8280,7 @@ __STATIC_INLINE void LL_HRTIM_ClearFlag_RST(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MICR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMICR_RSTC); } @@ -8300,7 +8300,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsActiveFlag_RST(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMISR_RST) == (HRTIM_TIMISR_RST)) ? 1UL : 0UL); } @@ -8321,7 +8321,7 @@ __STATIC_INLINE void LL_HRTIM_ClearFlag_DLYPRT(HRTIM_TypeDef *HRTIMx, uint32_t T { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MICR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMICR_DLYPRTC); } @@ -8341,7 +8341,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsActiveFlag_DLYPRT(const HRTIM_TypeDef *HRTIM { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MISR) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMISR_DLYPRT) == (HRTIM_TIMISR_DLYPRT)) ? 1UL : 0UL); } @@ -8636,7 +8636,7 @@ __STATIC_INLINE void LL_HRTIM_EnableIT_UPDATE(HRTIM_TypeDef *HRTIMx, uint32_t Ti { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MDIER_MUPDIE); } @@ -8658,7 +8658,7 @@ __STATIC_INLINE void LL_HRTIM_DisableIT_UPDATE(HRTIM_TypeDef *HRTIMx, uint32_t T { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_MDIER_MUPDIE); } @@ -8680,7 +8680,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledIT_UPDATE(const HRTIM_TypeDef *HRTIMx { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MDIER_MUPDIE) == (HRTIM_MDIER_MUPDIE)) ? 1UL : 0UL); } @@ -8703,7 +8703,7 @@ __STATIC_INLINE void LL_HRTIM_EnableIT_REP(HRTIM_TypeDef *HRTIMx, uint32_t Timer { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MDIER_MREPIE); } @@ -8725,7 +8725,7 @@ __STATIC_INLINE void LL_HRTIM_DisableIT_REP(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_MDIER_MREPIE); } @@ -8747,7 +8747,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledIT_REP(const HRTIM_TypeDef *HRTIMx, u { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MDIER_MREPIE) == (HRTIM_MDIER_MREPIE)) ? 1UL : 0UL); } @@ -8770,7 +8770,7 @@ __STATIC_INLINE void LL_HRTIM_EnableIT_CMP1(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MDIER_MCMP1IE); } @@ -8792,7 +8792,7 @@ __STATIC_INLINE void LL_HRTIM_DisableIT_CMP1(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_MDIER_MCMP1IE); } @@ -8814,7 +8814,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledIT_CMP1(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MDIER_MCMP1IE) == (HRTIM_MDIER_MCMP1IE)) ? 1UL : 0UL); } @@ -8837,7 +8837,7 @@ __STATIC_INLINE void LL_HRTIM_EnableIT_CMP2(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MDIER_MCMP2IE); } @@ -8859,7 +8859,7 @@ __STATIC_INLINE void LL_HRTIM_DisableIT_CMP2(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_MDIER_MCMP2IE); } @@ -8881,7 +8881,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledIT_CMP2(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MDIER_MCMP2IE) == (HRTIM_MDIER_MCMP2IE)) ? 1UL : 0UL); } @@ -8904,7 +8904,7 @@ __STATIC_INLINE void LL_HRTIM_EnableIT_CMP3(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MDIER_MCMP3IE); } @@ -8926,7 +8926,7 @@ __STATIC_INLINE void LL_HRTIM_DisableIT_CMP3(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_MDIER_MCMP3IE); } @@ -8948,7 +8948,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledIT_CMP3(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MDIER_MCMP3IE) == (HRTIM_MDIER_MCMP3IE)) ? 1UL : 0UL); } @@ -8971,7 +8971,7 @@ __STATIC_INLINE void LL_HRTIM_EnableIT_CMP4(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MDIER_MCMP4IE); } @@ -8993,7 +8993,7 @@ __STATIC_INLINE void LL_HRTIM_DisableIT_CMP4(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_MDIER_MCMP4IE); } @@ -9015,7 +9015,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledIT_CMP4(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MDIER_MCMP4IE) == (HRTIM_MDIER_MCMP4IE)) ? 1UL : 0UL); } @@ -9036,7 +9036,7 @@ __STATIC_INLINE void LL_HRTIM_EnableIT_CPT1(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_CPT1IE); } @@ -9056,7 +9056,7 @@ __STATIC_INLINE void LL_HRTIM_DisableIT_CPT1(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_CPT1IE); } @@ -9076,7 +9076,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledIT_CPT1(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_CPT1IE) == (HRTIM_TIMDIER_CPT1IE)) ? 1UL : 0UL); } @@ -9097,7 +9097,7 @@ __STATIC_INLINE void LL_HRTIM_EnableIT_CPT2(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_CPT2IE); } @@ -9117,7 +9117,7 @@ __STATIC_INLINE void LL_HRTIM_DisableIT_CPT2(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_CPT2IE); } @@ -9137,7 +9137,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledIT_CPT2(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_CPT2IE) == (HRTIM_TIMDIER_CPT2IE)) ? 1UL : 0UL); } @@ -9158,7 +9158,7 @@ __STATIC_INLINE void LL_HRTIM_EnableIT_SET1(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_SET1IE); } @@ -9178,7 +9178,7 @@ __STATIC_INLINE void LL_HRTIM_DisableIT_SET1(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_SET1IE); } @@ -9198,7 +9198,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledIT_SET1(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_SET1IE) == (HRTIM_TIMDIER_SET1IE)) ? 1UL : 0UL); } @@ -9219,7 +9219,7 @@ __STATIC_INLINE void LL_HRTIM_EnableIT_RST1(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_RST1IE); } @@ -9239,7 +9239,7 @@ __STATIC_INLINE void LL_HRTIM_DisableIT_RST1(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_RST1IE); } @@ -9259,7 +9259,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledIT_RST1(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_RST1IE) == (HRTIM_TIMDIER_RST1IE)) ? 1UL : 0UL); } @@ -9280,7 +9280,7 @@ __STATIC_INLINE void LL_HRTIM_EnableIT_SET2(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_SET2IE); } @@ -9300,7 +9300,7 @@ __STATIC_INLINE void LL_HRTIM_DisableIT_SET2(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_SET2IE); } @@ -9320,7 +9320,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledIT_SET2(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_SET2IE) == (HRTIM_TIMDIER_SET2IE)) ? 1UL : 0UL); } @@ -9341,7 +9341,7 @@ __STATIC_INLINE void LL_HRTIM_EnableIT_RST2(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_RST2IE); } @@ -9361,7 +9361,7 @@ __STATIC_INLINE void LL_HRTIM_DisableIT_RST2(HRTIM_TypeDef *HRTIMx, uint32_t Tim { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_RST2IE); } @@ -9381,7 +9381,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledIT_RST2(const HRTIM_TypeDef *HRTIMx, { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_RST2IE) == (HRTIM_TIMDIER_RST2IE)) ? 1UL : 0UL); } @@ -9402,7 +9402,7 @@ __STATIC_INLINE void LL_HRTIM_EnableIT_RST(HRTIM_TypeDef *HRTIMx, uint32_t Timer { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_RSTIE); } @@ -9422,7 +9422,7 @@ __STATIC_INLINE void LL_HRTIM_DisableIT_RST(HRTIM_TypeDef *HRTIMx, uint32_t Time { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_RSTIE); } @@ -9442,7 +9442,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledIT_RST(const HRTIM_TypeDef *HRTIMx, u { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_RSTIE) == (HRTIM_TIMDIER_RSTIE)) ? 1UL : 0UL); } @@ -9463,7 +9463,7 @@ __STATIC_INLINE void LL_HRTIM_EnableIT_DLYPRT(HRTIM_TypeDef *HRTIMx, uint32_t Ti { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_DLYPRTIE); } @@ -9483,7 +9483,7 @@ __STATIC_INLINE void LL_HRTIM_DisableIT_DLYPRT(HRTIM_TypeDef *HRTIMx, uint32_t T { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_DLYPRTIE); } @@ -9503,7 +9503,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledIT_DLYPRT(const HRTIM_TypeDef *HRTIMx { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_DLYPRTIE) == (HRTIM_TIMDIER_DLYPRTIE)) ? 1UL : 0UL); } @@ -9567,7 +9567,7 @@ __STATIC_INLINE void LL_HRTIM_EnableDMAReq_UPDATE(HRTIM_TypeDef *HRTIMx, uint32_ { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MDIER_MUPDDE); } @@ -9589,7 +9589,7 @@ __STATIC_INLINE void LL_HRTIM_DisableDMAReq_UPDATE(HRTIM_TypeDef *HRTIMx, uint32 { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_MDIER_MUPDDE); } @@ -9611,7 +9611,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledDMAReq_UPDATE(const HRTIM_TypeDef *HR { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MDIER_MUPDDE) == (HRTIM_MDIER_MUPDDE)) ? 1UL : 0UL); } @@ -9634,7 +9634,7 @@ __STATIC_INLINE void LL_HRTIM_EnableDMAReq_REP(HRTIM_TypeDef *HRTIMx, uint32_t T { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MDIER_MREPDE); } @@ -9656,7 +9656,7 @@ __STATIC_INLINE void LL_HRTIM_DisableDMAReq_REP(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_MDIER_MREPDE); } @@ -9678,7 +9678,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledDMAReq_REP(const HRTIM_TypeDef *HRTIM { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MDIER_MREPDE) == (HRTIM_MDIER_MREPDE)) ? 1UL : 0UL); } @@ -9701,7 +9701,7 @@ __STATIC_INLINE void LL_HRTIM_EnableDMAReq_CMP1(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MDIER_MCMP1DE); } @@ -9723,7 +9723,7 @@ __STATIC_INLINE void LL_HRTIM_DisableDMAReq_CMP1(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_MDIER_MCMP1DE); } @@ -9745,7 +9745,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledDMAReq_CMP1(const HRTIM_TypeDef *HRTI { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MDIER_MCMP1DE) == (HRTIM_MDIER_MCMP1DE)) ? 1UL : 0UL); } @@ -9768,7 +9768,7 @@ __STATIC_INLINE void LL_HRTIM_EnableDMAReq_CMP2(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MDIER_MCMP2DE); } @@ -9790,7 +9790,7 @@ __STATIC_INLINE void LL_HRTIM_DisableDMAReq_CMP2(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_MDIER_MCMP2DE); } @@ -9812,7 +9812,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledDMAReq_CMP2(const HRTIM_TypeDef *HRTI { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MDIER_MCMP2DE) == (HRTIM_MDIER_MCMP2DE)) ? 1UL : 0UL); } @@ -9835,7 +9835,7 @@ __STATIC_INLINE void LL_HRTIM_EnableDMAReq_CMP3(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MDIER_MCMP3DE); } @@ -9857,7 +9857,7 @@ __STATIC_INLINE void LL_HRTIM_DisableDMAReq_CMP3(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_MDIER_MCMP3DE); } @@ -9879,7 +9879,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledDMAReq_CMP3(const HRTIM_TypeDef *HRTI { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MDIER_MCMP3DE) == (HRTIM_MDIER_MCMP3DE)) ? 1UL : 0UL); } @@ -9902,7 +9902,7 @@ __STATIC_INLINE void LL_HRTIM_EnableDMAReq_CMP4(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_MDIER_MCMP4DE); } @@ -9924,7 +9924,7 @@ __STATIC_INLINE void LL_HRTIM_DisableDMAReq_CMP4(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_MDIER_MCMP4DE); } @@ -9946,7 +9946,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledDMAReq_CMP4(const HRTIM_TypeDef *HRTI { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_MDIER_MCMP4DE) == (HRTIM_MDIER_MCMP4DE)) ? 1UL : 0UL); } @@ -9967,7 +9967,7 @@ __STATIC_INLINE void LL_HRTIM_EnableDMAReq_CPT1(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_CPT1DE); } @@ -9987,7 +9987,7 @@ __STATIC_INLINE void LL_HRTIM_DisableDMAReq_CPT1(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_CPT1DE); } @@ -10007,7 +10007,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledDMAReq_CPT1(const HRTIM_TypeDef *HRTI { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_CPT1DE) == (HRTIM_TIMDIER_CPT1DE)) ? 1UL : 0UL); } @@ -10028,7 +10028,7 @@ __STATIC_INLINE void LL_HRTIM_EnableDMAReq_CPT2(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_CPT2DE); } @@ -10048,7 +10048,7 @@ __STATIC_INLINE void LL_HRTIM_DisableDMAReq_CPT2(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_CPT2DE); } @@ -10068,7 +10068,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledDMAReq_CPT2(const HRTIM_TypeDef *HRTI { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_CPT2DE) == (HRTIM_TIMDIER_CPT2DE)) ? 1UL : 0UL); } @@ -10089,7 +10089,7 @@ __STATIC_INLINE void LL_HRTIM_EnableDMAReq_SET1(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_SET1DE); } @@ -10109,7 +10109,7 @@ __STATIC_INLINE void LL_HRTIM_DisableDMAReq_SET1(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_SET1DE); } @@ -10129,7 +10129,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledDMAReq_SET1(const HRTIM_TypeDef *HRTI { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_SET1DE) == (HRTIM_TIMDIER_SET1DE)) ? 1UL : 0UL); } @@ -10150,7 +10150,7 @@ __STATIC_INLINE void LL_HRTIM_EnableDMAReq_RST1(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_RST1DE); } @@ -10170,7 +10170,7 @@ __STATIC_INLINE void LL_HRTIM_DisableDMAReq_RST1(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_RST1DE); } @@ -10190,7 +10190,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledDMAReq_RST1(const HRTIM_TypeDef *HRTI { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_RST1DE) == (HRTIM_TIMDIER_RST1DE)) ? 1UL : 0UL); } @@ -10211,7 +10211,7 @@ __STATIC_INLINE void LL_HRTIM_EnableDMAReq_SET2(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_SET2DE); } @@ -10231,7 +10231,7 @@ __STATIC_INLINE void LL_HRTIM_DisableDMAReq_SET2(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_SET2DE); } @@ -10251,7 +10251,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledDMAReq_SET2(const HRTIM_TypeDef *HRTI { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_SET2DE) == (HRTIM_TIMDIER_SET2DE)) ? 1UL : 0UL); } @@ -10272,7 +10272,7 @@ __STATIC_INLINE void LL_HRTIM_EnableDMAReq_RST2(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_RST2DE); } @@ -10292,7 +10292,7 @@ __STATIC_INLINE void LL_HRTIM_DisableDMAReq_RST2(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_RST2DE); } @@ -10312,7 +10312,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledDMAReq_RST2(const HRTIM_TypeDef *HRTI { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_RST2DE) == (HRTIM_TIMDIER_RST2DE)) ? 1UL : 0UL); } @@ -10333,7 +10333,7 @@ __STATIC_INLINE void LL_HRTIM_EnableDMAReq_RST(HRTIM_TypeDef *HRTIMx, uint32_t T { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_RSTDE); } @@ -10353,7 +10353,7 @@ __STATIC_INLINE void LL_HRTIM_DisableDMAReq_RST(HRTIM_TypeDef *HRTIMx, uint32_t { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_RSTDE); } @@ -10373,7 +10373,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledDMAReq_RST(const HRTIM_TypeDef *HRTIM { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_RSTDE) == (HRTIM_TIMDIER_RSTDE)) ? 1UL : 0UL); } @@ -10394,7 +10394,7 @@ __STATIC_INLINE void LL_HRTIM_EnableDMAReq_DLYPRT(HRTIM_TypeDef *HRTIMx, uint32_ { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); SET_BIT(*pReg, HRTIM_TIMDIER_DLYPRTDE); } @@ -10414,7 +10414,7 @@ __STATIC_INLINE void LL_HRTIM_DisableDMAReq_DLYPRT(HRTIM_TypeDef *HRTIMx, uint32 { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); CLEAR_BIT(*pReg, HRTIM_TIMDIER_DLYPRTDE); } @@ -10434,7 +10434,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledDMAReq_DLYPRT(const HRTIM_TypeDef *HR { uint32_t iTimer = (uint8_t)(POSITION_VAL(Timer) - HRTIM_MCR_MCEN_Pos); const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&HRTIMx->sMasterRegs.MDIER) + - REG_OFFSET_TAB_TIMER[iTimer])); + REG_OFFSET_TAB_TIMER[iTimer])); return ((READ_BIT(*pReg, HRTIM_TIMDIER_DLYPRTDE) == (HRTIM_TIMDIER_DLYPRTDE)) ? 1UL : 0UL); } @@ -10447,7 +10447,7 @@ __STATIC_INLINE uint32_t LL_HRTIM_IsEnabledDMAReq_DLYPRT(const HRTIM_TypeDef *HR /** @defgroup HRTIM_LL_LL_EF_Init In-initialization and de-initialization functions * @{ */ -ErrorStatus LL_HRTIM_DeInit(HRTIM_TypeDef* HRTIMx); +ErrorStatus LL_HRTIM_DeInit(const HRTIM_TypeDef *HRTIMx); /** * @} */ @@ -10473,4 +10473,3 @@ ErrorStatus LL_HRTIM_DeInit(HRTIM_TypeDef* HRTIMx); #endif /* STM32H7xx_LL_HRTIM_H */ - diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_hsem.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_hsem.h index cff88b5c..689b7e57 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_hsem.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_hsem.h @@ -163,7 +163,7 @@ extern "C" { * @param Semaphore Semaphore number. Value between Min_Data=0 and Max_Data=31 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_HSEM_IsSemaphoreLocked(HSEM_TypeDef *HSEMx, uint32_t Semaphore) +__STATIC_INLINE uint32_t LL_HSEM_IsSemaphoreLocked(const HSEM_TypeDef *HSEMx, uint32_t Semaphore) { return ((READ_BIT(HSEMx->R[Semaphore], HSEM_R_LOCK) == (HSEM_R_LOCK_Msk)) ? 1UL : 0UL); } @@ -178,7 +178,7 @@ __STATIC_INLINE uint32_t LL_HSEM_IsSemaphoreLocked(HSEM_TypeDef *HSEMx, uint32_t * @arg @ref LL_HSEM_COREID_CPU1 * @arg @ref LL_HSEM_COREID_CPU2 */ -__STATIC_INLINE uint32_t LL_HSEM_GetCoreId(HSEM_TypeDef *HSEMx, uint32_t Semaphore) +__STATIC_INLINE uint32_t LL_HSEM_GetCoreId(const HSEM_TypeDef *HSEMx, uint32_t Semaphore) { return (uint32_t)(READ_BIT(HSEMx->R[Semaphore], HSEM_R_COREID_Msk)); } @@ -190,7 +190,7 @@ __STATIC_INLINE uint32_t LL_HSEM_GetCoreId(HSEM_TypeDef *HSEMx, uint32_t Semapho * @param Semaphore Semaphore number. Value between Min_Data=0 and Max_Data=31 * @retval Process number. Value between Min_Data=0 and Max_Data=255 */ -__STATIC_INLINE uint32_t LL_HSEM_GetProcessId(HSEM_TypeDef *HSEMx, uint32_t Semaphore) +__STATIC_INLINE uint32_t LL_HSEM_GetProcessId(const HSEM_TypeDef *HSEMx, uint32_t Semaphore) { return (uint32_t)(READ_BIT(HSEMx->R[Semaphore], HSEM_R_PROCID_Msk)); } @@ -236,7 +236,7 @@ __STATIC_INLINE uint32_t LL_HSEM_2StepLock(HSEM_TypeDef *HSEMx, uint32_t Semapho * @param Semaphore Semaphore number. Value between Min_Data=0 and Max_Data=31 * @retval 1 lock fail, 0 lock successful or already locked by same core */ -__STATIC_INLINE uint32_t LL_HSEM_1StepLock(HSEM_TypeDef *HSEMx, uint32_t Semaphore) +__STATIC_INLINE uint32_t LL_HSEM_1StepLock(const HSEM_TypeDef *HSEMx, uint32_t Semaphore) { return ((HSEMx->RLR[Semaphore] != (HSEM_RLR_LOCK | LL_HSEM_COREID)) ? 1UL : 0UL); } @@ -261,7 +261,7 @@ __STATIC_INLINE void LL_HSEM_ReleaseLock(HSEM_TypeDef *HSEMx, uint32_t Semaphore * @param HSEMx HSEM Instance. * @param Semaphore Semaphore number. Value between Min_Data=0 and Max_Data=31 * @retval 0 semaphore is free, 1 semaphore is locked */ -__STATIC_INLINE uint32_t LL_HSEM_GetStatus(HSEM_TypeDef *HSEMx, uint32_t Semaphore) +__STATIC_INLINE uint32_t LL_HSEM_GetStatus(const HSEM_TypeDef *HSEMx, uint32_t Semaphore) { return ((HSEMx->R[Semaphore] != 0U) ? 1UL : 0UL); } @@ -284,7 +284,7 @@ __STATIC_INLINE void LL_HSEM_SetKey(HSEM_TypeDef *HSEMx, uint32_t key) * @param HSEMx HSEM Instance. * @retval key to unlock all semaphore from the same core */ -__STATIC_INLINE uint32_t LL_HSEM_GetKey(HSEM_TypeDef *HSEMx) +__STATIC_INLINE uint32_t LL_HSEM_GetKey(const HSEM_TypeDef *HSEMx) { return (uint32_t)(READ_BIT(HSEMx->KEYR, HSEM_KEYR_KEY) >> HSEM_KEYR_KEY_Pos); } @@ -450,7 +450,7 @@ __STATIC_INLINE void LL_HSEM_DisableIT_C1IER(HSEM_TypeDef *HSEMx, uint32_t Semap * depends on devices. * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_HSEM_IsEnabledIT_C1IER(HSEM_TypeDef *HSEMx, uint32_t SemaphoreMask) +__STATIC_INLINE uint32_t LL_HSEM_IsEnabledIT_C1IER(const HSEM_TypeDef *HSEMx, uint32_t SemaphoreMask) { return ((READ_BIT(HSEMx->C1IER, SemaphoreMask) == (SemaphoreMask)) ? 1UL : 0UL); } @@ -586,7 +586,7 @@ __STATIC_INLINE void LL_HSEM_DisableIT_C2IER(HSEM_TypeDef *HSEMx, uint32_t Semap * @arg @ref LL_HSEM_SEMAPHORE_ALL * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_HSEM_IsEnabledIT_C2IER(HSEM_TypeDef *HSEMx, uint32_t SemaphoreMask) +__STATIC_INLINE uint32_t LL_HSEM_IsEnabledIT_C2IER(const HSEM_TypeDef *HSEMx, uint32_t SemaphoreMask) { return ((READ_BIT(HSEMx->C2IER, SemaphoreMask) == (SemaphoreMask)) ? 1UL : 0UL); } @@ -689,7 +689,7 @@ __STATIC_INLINE void LL_HSEM_ClearFlag_C1ICR(HSEM_TypeDef *HSEMx, uint32_t Semap * depends on devices. * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_HSEM_IsActiveFlag_C1ISR(HSEM_TypeDef *HSEMx, uint32_t SemaphoreMask) +__STATIC_INLINE uint32_t LL_HSEM_IsActiveFlag_C1ISR(const HSEM_TypeDef *HSEMx, uint32_t SemaphoreMask) { return ((READ_BIT(HSEMx->C1ISR, SemaphoreMask) == (SemaphoreMask)) ? 1UL : 0UL); } @@ -736,7 +736,7 @@ __STATIC_INLINE uint32_t LL_HSEM_IsActiveFlag_C1ISR(HSEM_TypeDef *HSEMx, uint32_ * depends on devices. * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_HSEM_IsActiveFlag_C1MISR(HSEM_TypeDef *HSEMx, uint32_t SemaphoreMask) +__STATIC_INLINE uint32_t LL_HSEM_IsActiveFlag_C1MISR(const HSEM_TypeDef *HSEMx, uint32_t SemaphoreMask) { return ((READ_BIT(HSEMx->C1MISR, SemaphoreMask) == (SemaphoreMask)) ? 1UL : 0UL); } @@ -827,7 +827,7 @@ __STATIC_INLINE void LL_HSEM_ClearFlag_C2ICR(HSEM_TypeDef *HSEMx, uint32_t Semap * @arg @ref LL_HSEM_SEMAPHORE_ALL * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_HSEM_IsActiveFlag_C2ISR(HSEM_TypeDef *HSEMx, uint32_t SemaphoreMask) +__STATIC_INLINE uint32_t LL_HSEM_IsActiveFlag_C2ISR(const HSEM_TypeDef *HSEMx, uint32_t SemaphoreMask) { return ((READ_BIT(HSEMx->C2ISR, SemaphoreMask) == (SemaphoreMask)) ? 1UL : 0UL); } @@ -872,7 +872,7 @@ __STATIC_INLINE uint32_t LL_HSEM_IsActiveFlag_C2ISR(HSEM_TypeDef *HSEMx, uint32_ * @arg @ref LL_HSEM_SEMAPHORE_ALL * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_HSEM_IsActiveFlag_C2MISR(HSEM_TypeDef *HSEMx, uint32_t SemaphoreMask) +__STATIC_INLINE uint32_t LL_HSEM_IsActiveFlag_C2MISR(const HSEM_TypeDef *HSEMx, uint32_t SemaphoreMask) { return ((READ_BIT(HSEMx->C2MISR, SemaphoreMask) == (SemaphoreMask)) ? 1UL : 0UL); } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_iwdg.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_iwdg.h index d34acc26..743c9173 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_iwdg.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_iwdg.h @@ -208,7 +208,7 @@ __STATIC_INLINE void LL_IWDG_SetPrescaler(IWDG_TypeDef *IWDGx, uint32_t Prescale * @arg @ref LL_IWDG_PRESCALER_128 * @arg @ref LL_IWDG_PRESCALER_256 */ -__STATIC_INLINE uint32_t LL_IWDG_GetPrescaler(IWDG_TypeDef *IWDGx) +__STATIC_INLINE uint32_t LL_IWDG_GetPrescaler(const IWDG_TypeDef *IWDGx) { return (READ_REG(IWDGx->PR)); } @@ -231,7 +231,7 @@ __STATIC_INLINE void LL_IWDG_SetReloadCounter(IWDG_TypeDef *IWDGx, uint32_t Coun * @param IWDGx IWDG Instance * @retval Value between Min_Data=0 and Max_Data=0x0FFF */ -__STATIC_INLINE uint32_t LL_IWDG_GetReloadCounter(IWDG_TypeDef *IWDGx) +__STATIC_INLINE uint32_t LL_IWDG_GetReloadCounter(const IWDG_TypeDef *IWDGx) { return (READ_REG(IWDGx->RLR)); } @@ -254,7 +254,7 @@ __STATIC_INLINE void LL_IWDG_SetWindow(IWDG_TypeDef *IWDGx, uint32_t Window) * @param IWDGx IWDG Instance * @retval Value between Min_Data=0 and Max_Data=0x0FFF */ -__STATIC_INLINE uint32_t LL_IWDG_GetWindow(IWDG_TypeDef *IWDGx) +__STATIC_INLINE uint32_t LL_IWDG_GetWindow(const IWDG_TypeDef *IWDGx) { return (READ_REG(IWDGx->WINR)); } @@ -273,7 +273,7 @@ __STATIC_INLINE uint32_t LL_IWDG_GetWindow(IWDG_TypeDef *IWDGx) * @param IWDGx IWDG Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_PVU(IWDG_TypeDef *IWDGx) +__STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_PVU(const IWDG_TypeDef *IWDGx) { return ((READ_BIT(IWDGx->SR, IWDG_SR_PVU) == (IWDG_SR_PVU)) ? 1UL : 0UL); } @@ -284,7 +284,7 @@ __STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_PVU(IWDG_TypeDef *IWDGx) * @param IWDGx IWDG Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_RVU(IWDG_TypeDef *IWDGx) +__STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_RVU(const IWDG_TypeDef *IWDGx) { return ((READ_BIT(IWDGx->SR, IWDG_SR_RVU) == (IWDG_SR_RVU)) ? 1UL : 0UL); } @@ -295,7 +295,7 @@ __STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_RVU(IWDG_TypeDef *IWDGx) * @param IWDGx IWDG Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_WVU(IWDG_TypeDef *IWDGx) +__STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_WVU(const IWDG_TypeDef *IWDGx) { return ((READ_BIT(IWDGx->SR, IWDG_SR_WVU) == (IWDG_SR_WVU)) ? 1UL : 0UL); } @@ -308,7 +308,7 @@ __STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_WVU(IWDG_TypeDef *IWDGx) * @param IWDGx IWDG Instance * @retval State of bits (1 or 0). */ -__STATIC_INLINE uint32_t LL_IWDG_IsReady(IWDG_TypeDef *IWDGx) +__STATIC_INLINE uint32_t LL_IWDG_IsReady(const IWDG_TypeDef *IWDGx) { return ((READ_BIT(IWDGx->SR, IWDG_SR_PVU | IWDG_SR_RVU | IWDG_SR_WVU) == 0U) ? 1UL : 0UL); } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_lpuart.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_lpuart.h index fe66becb..2f362a4e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_lpuart.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_lpuart.h @@ -2605,6 +2605,21 @@ __STATIC_INLINE void LL_LPUART_RequestRxDataFlush(USART_TypeDef *LPUARTx) SET_BIT(LPUARTx->RQR, (uint16_t)USART_RQR_RXFRQ); } +/** + * @brief Request a Transmit data FIFO flush + * @note TXFRQ bit is set to flush the whole FIFO when FIFO mode is enabled. This + * also sets the flag TXFE (TXFIFO empty bit in the LPUART_ISR register). + * @note Macro IS_UART_FIFO_INSTANCE(USARTx) can be used to check whether or not + * FIFO mode feature is supported by the USARTx instance. + * @rmtoll RQR TXFRQ LL_LPUART_RequestTxDataFlush + * @param LPUARTx LPUART Instance + * @retval None + */ +__STATIC_INLINE void LL_LPUART_RequestTxDataFlush(USART_TypeDef *LPUARTx) +{ + SET_BIT(LPUARTx->RQR, (uint16_t)USART_RQR_TXFRQ); +} + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_mdma.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_mdma.h index 8b80c7d8..a55cb828 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_mdma.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_mdma.h @@ -688,7 +688,7 @@ typedef struct * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_EnableChannel(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_EnableChannel(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -718,7 +718,7 @@ __STATIC_INLINE void LL_MDMA_EnableChannel(MDMA_TypeDef *MDMAx, uint32_t Channel * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_DisableChannel(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_DisableChannel(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -748,7 +748,7 @@ __STATIC_INLINE void LL_MDMA_DisableChannel(MDMA_TypeDef *MDMAx, uint32_t Channe * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsEnabledChannel(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsEnabledChannel(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -778,7 +778,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsEnabledChannel(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_GenerateSWRequest(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_GenerateSWRequest(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -814,7 +814,7 @@ __STATIC_INLINE void LL_MDMA_GenerateSWRequest(MDMA_TypeDef *MDMAx, uint32_t Cha * @arg @ref LL_MDMA_BYTE_ENDIANNESS_PRESERVE or @ref LL_MDMA_BYTE_ENDIANNESS_EXCHANGE * @retval None */ -__STATIC_INLINE void LL_MDMA_ConfigXferEndianness(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Configuration) +__STATIC_INLINE void LL_MDMA_ConfigXferEndianness(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Configuration) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -848,7 +848,7 @@ __STATIC_INLINE void LL_MDMA_ConfigXferEndianness(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_WORD_ENDIANNESS_EXCHANGE * @retval None */ -__STATIC_INLINE void LL_MDMA_SetWordEndianness(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Endianness) +__STATIC_INLINE void LL_MDMA_SetWordEndianness(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Endianness) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -881,7 +881,7 @@ __STATIC_INLINE void LL_MDMA_SetWordEndianness(MDMA_TypeDef *MDMAx, uint32_t Cha * @arg @ref LL_MDMA_WORD_ENDIANNESS_EXCHANGE * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetWordEndianness(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetWordEndianness(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -914,7 +914,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetWordEndianness(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_HALFWORD_ENDIANNESS_EXCHANGE * @retval None */ -__STATIC_INLINE void LL_MDMA_SetHalfWordEndianness(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Endianness) +__STATIC_INLINE void LL_MDMA_SetHalfWordEndianness(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Endianness) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -947,7 +947,7 @@ __STATIC_INLINE void LL_MDMA_SetHalfWordEndianness(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_HALFWORD_ENDIANNESS_EXCHANGE * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetHalfWordEndianness(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetHalfWordEndianness(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -980,7 +980,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetHalfWordEndianness(MDMA_TypeDef *MDMAx, uint * @arg @ref LL_MDMA_BYTE_ENDIANNESS_EXCHANGE * @retval None */ -__STATIC_INLINE void LL_MDMA_SetByteEndianness(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Endianness) +__STATIC_INLINE void LL_MDMA_SetByteEndianness(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Endianness) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1013,7 +1013,7 @@ __STATIC_INLINE void LL_MDMA_SetByteEndianness(MDMA_TypeDef *MDMAx, uint32_t Cha * @arg @ref LL_MDMA_BYTE_ENDIANNESS_EXCHANGE * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetByteEndianness(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetByteEndianness(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1048,7 +1048,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetByteEndianness(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_PRIORITY_VERYHIGH * @retval None */ -__STATIC_INLINE void LL_MDMA_SetChannelPriorityLevel(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Priority) +__STATIC_INLINE void LL_MDMA_SetChannelPriorityLevel(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Priority) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1083,7 +1083,7 @@ __STATIC_INLINE void LL_MDMA_SetChannelPriorityLevel(MDMA_TypeDef *MDMAx, uint32 * @arg @ref LL_MDMA_PRIORITY_VERYHIGH * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetChannelPriorityLevel(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetChannelPriorityLevel(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1143,7 +1143,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetChannelPriorityLevel(MDMA_TypeDef *MDMAx, ui * @param BufferXferLength This parameter can be a value Between 0 to 0x0000007F * @retval None */ -__STATIC_INLINE void LL_MDMA_ConfigTransfer(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Configuration, uint32_t BufferXferLength) +__STATIC_INLINE void LL_MDMA_ConfigTransfer(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Configuration, uint32_t BufferXferLength) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1174,7 +1174,7 @@ __STATIC_INLINE void LL_MDMA_ConfigTransfer(MDMA_TypeDef *MDMAx, uint32_t Channe * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_EnableBufferableWrMode(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_EnableBufferableWrMode(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1204,7 +1204,7 @@ __STATIC_INLINE void LL_MDMA_EnableBufferableWrMode(MDMA_TypeDef *MDMAx, uint32_ * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_DisableBufferableWrMode(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_DisableBufferableWrMode(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1234,7 +1234,7 @@ __STATIC_INLINE void LL_MDMA_DisableBufferableWrMode(MDMA_TypeDef *MDMAx, uint32 * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsEnabledBufferableWrMode(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsEnabledBufferableWrMode(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1267,7 +1267,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsEnabledBufferableWrMode(MDMA_TypeDef *MDMAx, * @arg @ref LL_MDMA_REQUEST_MODE_SW * @retval None */ -__STATIC_INLINE void LL_MDMA_SetRequestMode(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t RequestMode) +__STATIC_INLINE void LL_MDMA_SetRequestMode(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t RequestMode) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1300,7 +1300,7 @@ __STATIC_INLINE void LL_MDMA_SetRequestMode(MDMA_TypeDef *MDMAx, uint32_t Channe * @arg @ref LL_MDMA_REQUEST_MODE_SW * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetRequestMode(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetRequestMode(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1335,7 +1335,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetRequestMode(MDMA_TypeDef *MDMAx, uint32_t Ch * @arg @ref LL_MDMA_FULL_TRANSFER * @retval None */ -__STATIC_INLINE void LL_MDMA_SetTriggerMode(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t TriggerMode) +__STATIC_INLINE void LL_MDMA_SetTriggerMode(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t TriggerMode) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1370,7 +1370,7 @@ __STATIC_INLINE void LL_MDMA_SetTriggerMode(MDMA_TypeDef *MDMAx, uint32_t Channe * @arg @ref LL_MDMA_FULL_TRANSFER * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetTriggerMode(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetTriggerMode(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1404,7 +1404,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetTriggerMode(MDMA_TypeDef *MDMAx, uint32_t Ch * @arg @ref LL_MDMA_DATAALIGN_LEFT * @retval None */ -__STATIC_INLINE void LL_MDMA_SetPaddingAlignment(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t PaddingAlignment) +__STATIC_INLINE void LL_MDMA_SetPaddingAlignment(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t PaddingAlignment) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1438,7 +1438,7 @@ __STATIC_INLINE void LL_MDMA_SetPaddingAlignment(MDMA_TypeDef *MDMAx, uint32_t C * @arg @ref LL_MDMA_DATAALIGN_LEFT * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetPaddingAlignment(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetPaddingAlignment(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1469,7 +1469,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetPaddingAlignment(MDMA_TypeDef *MDMAx, uint32 * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_EnablePacking(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_EnablePacking(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1499,7 +1499,7 @@ __STATIC_INLINE void LL_MDMA_EnablePacking(MDMA_TypeDef *MDMAx, uint32_t Channel * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_DisablePacking(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_DisablePacking(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1529,7 +1529,7 @@ __STATIC_INLINE void LL_MDMA_DisablePacking(MDMA_TypeDef *MDMAx, uint32_t Channe * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsEnabledPacking(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsEnabledPacking(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1560,7 +1560,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsEnabledPacking(MDMA_TypeDef *MDMAx, uint32_t * @param Length Between 0 to 0x0000007F * @retval None */ -__STATIC_INLINE void LL_MDMA_SetBufferTransferLength(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Length) +__STATIC_INLINE void LL_MDMA_SetBufferTransferLength(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Length) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1592,7 +1592,7 @@ __STATIC_INLINE void LL_MDMA_SetBufferTransferLength(MDMA_TypeDef *MDMAx, uint32 * @retval Between 0 to 0x0000007F * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetBufferTransferLength(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetBufferTransferLength(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1631,7 +1631,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetBufferTransferLength(MDMA_TypeDef *MDMAx, ui * @arg @ref LL_MDMA_DEST_BURST_128BEATS * @retval None */ -__STATIC_INLINE void LL_MDMA_SetDestinationBurstSize(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Dburst) +__STATIC_INLINE void LL_MDMA_SetDestinationBurstSize(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Dburst) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1670,7 +1670,7 @@ __STATIC_INLINE void LL_MDMA_SetDestinationBurstSize(MDMA_TypeDef *MDMAx, uint32 * @arg @ref LL_MDMA_DEST_BURST_128BEATS * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetDestinationBurstSize(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetDestinationBurstSize(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1709,7 +1709,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetDestinationBurstSize(MDMA_TypeDef *MDMAx, ui * @arg @ref LL_MDMA_SRC_BURST_128BEATS * @retval None */ -__STATIC_INLINE void LL_MDMA_SetSourceBurstSize(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Sburst) +__STATIC_INLINE void LL_MDMA_SetSourceBurstSize(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Sburst) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1748,7 +1748,7 @@ __STATIC_INLINE void LL_MDMA_SetSourceBurstSize(MDMA_TypeDef *MDMAx, uint32_t Ch * @arg @ref LL_MDMA_SRC_BURST_128BEATS * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetSourceBurstSize(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetSourceBurstSize(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1783,7 +1783,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetSourceBurstSize(MDMA_TypeDef *MDMAx, uint32_ * @arg @ref LL_MDMA_DEST_INC_OFFSET_DOUBLEWORD * @retval None */ -__STATIC_INLINE void LL_MDMA_SetDestinationIncSize(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t IncSize) +__STATIC_INLINE void LL_MDMA_SetDestinationIncSize(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t IncSize) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1818,7 +1818,7 @@ __STATIC_INLINE void LL_MDMA_SetDestinationIncSize(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_DEST_INC_OFFSET_DOUBLEWORD * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetDestinationIncSize(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetDestinationIncSize(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1853,7 +1853,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetDestinationIncSize(MDMA_TypeDef *MDMAx, uint * @arg @ref LL_MDMA_SRC_INC_OFFSET_DOUBLEWORD * @retval None */ -__STATIC_INLINE void LL_MDMA_SetSourceIncSize(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t IncSize) +__STATIC_INLINE void LL_MDMA_SetSourceIncSize(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t IncSize) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1888,7 +1888,7 @@ __STATIC_INLINE void LL_MDMA_SetSourceIncSize(MDMA_TypeDef *MDMAx, uint32_t Chan * @arg @ref LL_MDMA_SRC_INC_OFFSET_DOUBLEWORD * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetSourceIncSize(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetSourceIncSize(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1923,7 +1923,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetSourceIncSize(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_DEST_DATA_SIZE_DOUBLEWORD * @retval None */ -__STATIC_INLINE void LL_MDMA_SetDestinationDataSize(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t DestDataSize) +__STATIC_INLINE void LL_MDMA_SetDestinationDataSize(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t DestDataSize) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1958,7 +1958,7 @@ __STATIC_INLINE void LL_MDMA_SetDestinationDataSize(MDMA_TypeDef *MDMAx, uint32_ * @arg @ref LL_MDMA_DEST_DATA_SIZE_DOUBLEWORD * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetDestinationDataSize(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetDestinationDataSize(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -1993,7 +1993,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetDestinationDataSize(MDMA_TypeDef *MDMAx, uin * @arg @ref LL_MDMA_SRC_DATA_SIZE_DOUBLEWORD * @retval None */ -__STATIC_INLINE void LL_MDMA_SetSourceDataSize(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrcDataSize) +__STATIC_INLINE void LL_MDMA_SetSourceDataSize(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrcDataSize) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2028,7 +2028,7 @@ __STATIC_INLINE void LL_MDMA_SetSourceDataSize(MDMA_TypeDef *MDMAx, uint32_t Cha * @arg @ref LL_MDMA_SRC_DATA_SIZE_DOUBLEWORD * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetSourceDataSize(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetSourceDataSize(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2062,7 +2062,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetSourceDataSize(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_DEST_DECREMENT * @retval None */ -__STATIC_INLINE void LL_MDMA_SetDestinationIncMode(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t DestIncMode) +__STATIC_INLINE void LL_MDMA_SetDestinationIncMode(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t DestIncMode) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2096,7 +2096,7 @@ __STATIC_INLINE void LL_MDMA_SetDestinationIncMode(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_DEST_DECREMENT * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetDestinationIncMode(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetDestinationIncMode(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2130,7 +2130,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetDestinationIncMode(MDMA_TypeDef *MDMAx, uint * @arg @ref LL_MDMA_SRC_DECREMENT * @retval None */ -__STATIC_INLINE void LL_MDMA_SetSourceIncMode(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrcIncMode) +__STATIC_INLINE void LL_MDMA_SetSourceIncMode(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrcIncMode) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2164,7 +2164,7 @@ __STATIC_INLINE void LL_MDMA_SetSourceIncMode(MDMA_TypeDef *MDMAx, uint32_t Chan * @arg @ref LL_MDMA_SRC_DECREMENT * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetSourceIncMode(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetSourceIncMode(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2197,7 +2197,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetSourceIncMode(MDMA_TypeDef *MDMAx, uint32_t * @param BlkDataLength Between 0 to 0x00010000 * @retval None */ -__STATIC_INLINE void LL_MDMA_ConfigBlkCounters(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t BlockRepeatCount, uint32_t BlkDataLength) +__STATIC_INLINE void LL_MDMA_ConfigBlkCounters(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t BlockRepeatCount, uint32_t BlkDataLength) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2230,7 +2230,7 @@ __STATIC_INLINE void LL_MDMA_ConfigBlkCounters(MDMA_TypeDef *MDMAx, uint32_t Cha * @param BlkDataLength Between 0 to 0x00010000 * @retval None */ -__STATIC_INLINE void LL_MDMA_SetBlkDataLength(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t BlkDataLength) +__STATIC_INLINE void LL_MDMA_SetBlkDataLength(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t BlkDataLength) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2261,7 +2261,7 @@ __STATIC_INLINE void LL_MDMA_SetBlkDataLength(MDMA_TypeDef *MDMAx, uint32_t Chan * @retval Between 0 to 0x00010000 * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetBlkDataLength(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetBlkDataLength(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2292,7 +2292,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetBlkDataLength(MDMA_TypeDef *MDMAx, uint32_t * @param BlockRepeatCount Between 0 to 0x00000FFF * @retval None */ -__STATIC_INLINE void LL_MDMA_SetBlkRepeatCount(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t BlockRepeatCount) +__STATIC_INLINE void LL_MDMA_SetBlkRepeatCount(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t BlockRepeatCount) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2324,7 +2324,7 @@ __STATIC_INLINE void LL_MDMA_SetBlkRepeatCount(MDMA_TypeDef *MDMAx, uint32_t Cha * @retval Between 0 to 0x00000FFF * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetBlkRepeatCount(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetBlkRepeatCount(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2358,7 +2358,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetBlkRepeatCount(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_BLK_RPT_SRC_ADDR_INCREMENT or @ref LL_MDMA_BLK_RPT_SRC_ADDR_DECREMENT * @retval None */ -__STATIC_INLINE void LL_MDMA_ConfigBlkRepeatAddrUpdate(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Configuration) +__STATIC_INLINE void LL_MDMA_ConfigBlkRepeatAddrUpdate(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Configuration) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2393,7 +2393,7 @@ __STATIC_INLINE void LL_MDMA_ConfigBlkRepeatAddrUpdate(MDMA_TypeDef *MDMAx, uint * @arg @ref LL_MDMA_BLK_RPT_DEST_ADDR_DECREMENT * @retval None */ -__STATIC_INLINE void LL_MDMA_SetBlkRepeatDestAddrUpdate(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t DestAdrUpdateMode) +__STATIC_INLINE void LL_MDMA_SetBlkRepeatDestAddrUpdate(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t DestAdrUpdateMode) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2426,7 +2426,7 @@ __STATIC_INLINE void LL_MDMA_SetBlkRepeatDestAddrUpdate(MDMA_TypeDef *MDMAx, uin * @arg @ref LL_MDMA_BLK_RPT_DEST_ADDR_DECREMENT * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetBlkRepeatDestAddrUpdate(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetBlkRepeatDestAddrUpdate(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2459,7 +2459,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetBlkRepeatDestAddrUpdate(MDMA_TypeDef *MDMAx, * @arg @ref LL_MDMA_BLK_RPT_SRC_ADDR_DECREMENT * @retval None */ -__STATIC_INLINE void LL_MDMA_SetBlkRepeatSrcAddrUpdate(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrcAdrUpdateMode) +__STATIC_INLINE void LL_MDMA_SetBlkRepeatSrcAddrUpdate(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrcAdrUpdateMode) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2492,7 +2492,7 @@ __STATIC_INLINE void LL_MDMA_SetBlkRepeatSrcAddrUpdate(MDMA_TypeDef *MDMAx, uint * @arg @ref LL_MDMA_BLK_RPT_SRC_ADDR_DECREMENT * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetBlkRepeatSrcAddrUpdate(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetBlkRepeatSrcAddrUpdate(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2526,7 +2526,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetBlkRepeatSrcAddrUpdate(MDMA_TypeDef *MDMAx, * @param DstAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_MDMA_ConfigAddresses(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrcAddress, uint32_t DstAddress) +__STATIC_INLINE void LL_MDMA_ConfigAddresses(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrcAddress, uint32_t DstAddress) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2557,7 +2557,7 @@ __STATIC_INLINE void LL_MDMA_ConfigAddresses(MDMA_TypeDef *MDMAx, uint32_t Chann * @param SrcAddress Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_MDMA_SetSourceAddress(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrcAddress) +__STATIC_INLINE void LL_MDMA_SetSourceAddress(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrcAddress) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2588,7 +2588,7 @@ __STATIC_INLINE void LL_MDMA_SetSourceAddress(MDMA_TypeDef *MDMAx, uint32_t Chan * @retval Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetSourceAddress(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetSourceAddress(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2619,7 +2619,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetSourceAddress(MDMA_TypeDef *MDMAx, uint32_t * @param DestAddress Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_MDMA_SetDestinationAddress(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t DestAddress) +__STATIC_INLINE void LL_MDMA_SetDestinationAddress(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t DestAddress) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2650,7 +2650,7 @@ __STATIC_INLINE void LL_MDMA_SetDestinationAddress(MDMA_TypeDef *MDMAx, uint32_t * @retval Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetDestinationAddress(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetDestinationAddress(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2684,7 +2684,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetDestinationAddress(MDMA_TypeDef *MDMAx, uint * @param DestAdrUpdateValue Between Min_Data = 0 and Max_Data = 0x0000FFFF * @retval None */ -__STATIC_INLINE void LL_MDMA_ConfigBlkRptAddrUpdateValue(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrctAdrUpdateValue, uint32_t DestAdrUpdateValue) +__STATIC_INLINE void LL_MDMA_ConfigBlkRptAddrUpdateValue(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrctAdrUpdateValue, uint32_t DestAdrUpdateValue) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2716,7 +2716,7 @@ __STATIC_INLINE void LL_MDMA_ConfigBlkRptAddrUpdateValue(MDMA_TypeDef *MDMAx, ui * @param DestAdrUpdateValue Between 0 to 0x0000FFFF * @retval None */ -__STATIC_INLINE void LL_MDMA_SetBlkRptDestAddrUpdateValue(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t DestAdrUpdateValue) +__STATIC_INLINE void LL_MDMA_SetBlkRptDestAddrUpdateValue(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t DestAdrUpdateValue) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2748,7 +2748,7 @@ __STATIC_INLINE void LL_MDMA_SetBlkRptDestAddrUpdateValue(MDMA_TypeDef *MDMAx, u * @retval Between 0 to 0x0000FFFF * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetBlkRptDestAddrUpdateValue(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetBlkRptDestAddrUpdateValue(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2779,7 +2779,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetBlkRptDestAddrUpdateValue(MDMA_TypeDef *MDMA * @param SrcAdrUpdateValue Between 0 to 0x0000FFFF * @retval None */ -__STATIC_INLINE void LL_MDMA_SetBlkRptSrcAddrUpdateValue(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrcAdrUpdateValue) +__STATIC_INLINE void LL_MDMA_SetBlkRptSrcAddrUpdateValue(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrcAdrUpdateValue) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2810,7 +2810,7 @@ __STATIC_INLINE void LL_MDMA_SetBlkRptSrcAddrUpdateValue(MDMA_TypeDef *MDMAx, ui * @retval Between 0 to 0x0000FFFF * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetBlkRptSrcAddrUpdateValue(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetBlkRptSrcAddrUpdateValue(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2841,7 +2841,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetBlkRptSrcAddrUpdateValue(MDMA_TypeDef *MDMAx * @param LinkAddress Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_MDMA_SetLinkAddress(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t LinkAddress) +__STATIC_INLINE void LL_MDMA_SetLinkAddress(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t LinkAddress) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2872,7 +2872,7 @@ __STATIC_INLINE void LL_MDMA_SetLinkAddress(MDMA_TypeDef *MDMAx, uint32_t Channe * @retval Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetLinkAddress(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetLinkAddress(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2906,7 +2906,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetLinkAddress(MDMA_TypeDef *MDMAx, uint32_t Ch * @arg @ref LL_MDMA_SRC_BUS_SYSTEM_AXI or @ref LL_MDMA_SRC_BUS_AHB_TCM * @retval None */ -__STATIC_INLINE void LL_MDMA_ConfigBusSelection(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Configuration) +__STATIC_INLINE void LL_MDMA_ConfigBusSelection(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t Configuration) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2941,7 +2941,7 @@ __STATIC_INLINE void LL_MDMA_ConfigBusSelection(MDMA_TypeDef *MDMAx, uint32_t Ch * @arg @ref LL_MDMA_DEST_BUS_AHB_TCM * @retval None */ -__STATIC_INLINE void LL_MDMA_SetDestBusSelection(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t DestBus) +__STATIC_INLINE void LL_MDMA_SetDestBusSelection(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t DestBus) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -2974,7 +2974,7 @@ __STATIC_INLINE void LL_MDMA_SetDestBusSelection(MDMA_TypeDef *MDMAx, uint32_t C * @arg @ref LL_MDMA_DEST_BUS_AHB_TCM * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetDestBusSelection(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetDestBusSelection(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3007,7 +3007,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetDestBusSelection(MDMA_TypeDef *MDMAx, uint32 * @arg @ref LL_MDMA_SRC_BUS_AHB_TCM * @retval None */ -__STATIC_INLINE void LL_MDMA_SetSrcBusSelection(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrcBus) +__STATIC_INLINE void LL_MDMA_SetSrcBusSelection(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t SrcBus) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3040,7 +3040,7 @@ __STATIC_INLINE void LL_MDMA_SetSrcBusSelection(MDMA_TypeDef *MDMAx, uint32_t Ch * @arg @ref LL_MDMA_SRC_BUS_AHB_TCM * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetSrcBusSelection(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetSrcBusSelection(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3108,7 +3108,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetSrcBusSelection(MDMA_TypeDef *MDMAx, uint32_ * @note (*) Availability depends on devices. * @retval None */ -__STATIC_INLINE void LL_MDMA_SetHWTrigger(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t HWRequest) +__STATIC_INLINE void LL_MDMA_SetHWTrigger(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t HWRequest) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3176,7 +3176,7 @@ __STATIC_INLINE void LL_MDMA_SetHWTrigger(MDMA_TypeDef *MDMAx, uint32_t Channel, * @note (*) Availability depends on devices. * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetHWTrigger(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetHWTrigger(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3207,7 +3207,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetHWTrigger(MDMA_TypeDef *MDMAx, uint32_t Chan * @param MaskAddress Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_MDMA_SetMaskAddress(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t MaskAddress) +__STATIC_INLINE void LL_MDMA_SetMaskAddress(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t MaskAddress) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3238,7 +3238,7 @@ __STATIC_INLINE void LL_MDMA_SetMaskAddress(MDMA_TypeDef *MDMAx, uint32_t Channe * @retval Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetMaskAddress(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetMaskAddress(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3269,7 +3269,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetMaskAddress(MDMA_TypeDef *MDMAx, uint32_t Ch * @param MaskData Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_MDMA_SetMaskData(MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t MaskData) +__STATIC_INLINE void LL_MDMA_SetMaskData(const MDMA_TypeDef *MDMAx, uint32_t Channel, uint32_t MaskData) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3300,7 +3300,7 @@ __STATIC_INLINE void LL_MDMA_SetMaskData(MDMA_TypeDef *MDMAx, uint32_t Channel, * @retval Between 0 to 0xFFFFFFFF * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetMaskData(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetMaskData(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3333,7 +3333,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetMaskData(MDMA_TypeDef *MDMAx, uint32_t Chann * @arg @ref LL_MDMA_WRITE_ERROR * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetXferErrorDirection(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetXferErrorDirection(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3364,7 +3364,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetXferErrorDirection(MDMA_TypeDef *MDMAx, uint * @retval Between 0 to 0x0000007F * @retval None */ -__STATIC_INLINE uint32_t LL_MDMA_GetXferErrorLSBAddress(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_GetXferErrorLSBAddress(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3402,7 +3402,7 @@ __STATIC_INLINE uint32_t LL_MDMA_GetXferErrorLSBAddress(MDMA_TypeDef *MDMAx, uin * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_GI(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_GI(const MDMA_TypeDef *MDMAx, uint32_t Channel) { return ((READ_BIT(MDMAx->GISR0 ,(MDMA_GISR0_GIF0 << (Channel & 0x0000000FU)))==(MDMA_GISR0_GIF0 << (Channel & 0x0000000FU))) ? 1UL : 0UL); } @@ -3430,7 +3430,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_GI(MDMA_TypeDef *MDMAx, uint32_t C * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_TE(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_TE(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3460,7 +3460,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_TE(MDMA_TypeDef *MDMAx, uint32_t C * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_CTC(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_CTC(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3490,7 +3490,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_CTC(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_BRT(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_BRT(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3520,7 +3520,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_BRT(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_BT(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_BT(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3550,7 +3550,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_BT(MDMA_TypeDef *MDMAx, uint32_t C * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_TC(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_TC(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3580,7 +3580,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_TC(MDMA_TypeDef *MDMAx, uint32_t C * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_CRQA(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_CRQA(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3610,7 +3610,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_CRQA(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_BSE(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_BSE(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3640,7 +3640,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_BSE(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_ASE(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_ASE(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3670,7 +3670,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_ASE(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_TEMD(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_TEMD(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3700,7 +3700,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_TEMD(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_TELD(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_TELD(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3730,7 +3730,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsActiveFlag_TELD(MDMA_TypeDef *MDMAx, uint32_t * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_ClearFlag_TE(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_ClearFlag_TE(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3760,7 +3760,7 @@ __STATIC_INLINE void LL_MDMA_ClearFlag_TE(MDMA_TypeDef *MDMAx, uint32_t Channel) * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_ClearFlag_CTC(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_ClearFlag_CTC(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3790,7 +3790,7 @@ __STATIC_INLINE void LL_MDMA_ClearFlag_CTC(MDMA_TypeDef *MDMAx, uint32_t Channel * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_ClearFlag_BRT(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_ClearFlag_BRT(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3820,7 +3820,7 @@ __STATIC_INLINE void LL_MDMA_ClearFlag_BRT(MDMA_TypeDef *MDMAx, uint32_t Channel * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_ClearFlag_BT(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_ClearFlag_BT(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3850,7 +3850,7 @@ __STATIC_INLINE void LL_MDMA_ClearFlag_BT(MDMA_TypeDef *MDMAx, uint32_t Channel) * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_ClearFlag_TC(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_ClearFlag_TC(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3888,7 +3888,7 @@ __STATIC_INLINE void LL_MDMA_ClearFlag_TC(MDMA_TypeDef *MDMAx, uint32_t Channel) * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_EnableIT_TE(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_EnableIT_TE(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3918,7 +3918,7 @@ __STATIC_INLINE void LL_MDMA_EnableIT_TE(MDMA_TypeDef *MDMAx, uint32_t Channel) * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_EnableIT_CTC(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_EnableIT_CTC(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3948,7 +3948,7 @@ __STATIC_INLINE void LL_MDMA_EnableIT_CTC(MDMA_TypeDef *MDMAx, uint32_t Channel) * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_EnableIT_BRT(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_EnableIT_BRT(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -3978,7 +3978,7 @@ __STATIC_INLINE void LL_MDMA_EnableIT_BRT(MDMA_TypeDef *MDMAx, uint32_t Channel) * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_EnableIT_BT(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_EnableIT_BT(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -4008,7 +4008,7 @@ __STATIC_INLINE void LL_MDMA_EnableIT_BT(MDMA_TypeDef *MDMAx, uint32_t Channel) * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_EnableIT_TC(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_EnableIT_TC(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -4038,7 +4038,7 @@ __STATIC_INLINE void LL_MDMA_EnableIT_TC(MDMA_TypeDef *MDMAx, uint32_t Channel) * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_DisableIT_TE(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_DisableIT_TE(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -4068,7 +4068,7 @@ __STATIC_INLINE void LL_MDMA_DisableIT_TE(MDMA_TypeDef *MDMAx, uint32_t Channel) * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_DisableIT_CTC(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_DisableIT_CTC(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -4098,7 +4098,7 @@ __STATIC_INLINE void LL_MDMA_DisableIT_CTC(MDMA_TypeDef *MDMAx, uint32_t Channel * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_DisableIT_BRT(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_DisableIT_BRT(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -4128,7 +4128,7 @@ __STATIC_INLINE void LL_MDMA_DisableIT_BRT(MDMA_TypeDef *MDMAx, uint32_t Channel * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_DisableIT_BT(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_DisableIT_BT(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -4158,7 +4158,7 @@ __STATIC_INLINE void LL_MDMA_DisableIT_BT(MDMA_TypeDef *MDMAx, uint32_t Channel) * @arg @ref LL_MDMA_CHANNEL_15 * @retval None */ -__STATIC_INLINE void LL_MDMA_DisableIT_TC(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE void LL_MDMA_DisableIT_TC(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -4188,7 +4188,7 @@ __STATIC_INLINE void LL_MDMA_DisableIT_TC(MDMA_TypeDef *MDMAx, uint32_t Channel) * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsEnabledIT_TE(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsEnabledIT_TE(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -4218,7 +4218,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsEnabledIT_TE(MDMA_TypeDef *MDMAx, uint32_t Ch * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsEnabledIT_CTC(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsEnabledIT_CTC(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -4248,7 +4248,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsEnabledIT_CTC(MDMA_TypeDef *MDMAx, uint32_t C * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsEnabledIT_BRT(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsEnabledIT_BRT(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -4278,7 +4278,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsEnabledIT_BRT(MDMA_TypeDef *MDMAx, uint32_t C * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsEnabledIT_BT(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsEnabledIT_BT(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; @@ -4308,7 +4308,7 @@ __STATIC_INLINE uint32_t LL_MDMA_IsEnabledIT_BT(MDMA_TypeDef *MDMAx, uint32_t Ch * @arg @ref LL_MDMA_CHANNEL_15 * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_MDMA_IsEnabledIT_TC(MDMA_TypeDef *MDMAx, uint32_t Channel) +__STATIC_INLINE uint32_t LL_MDMA_IsEnabledIT_TC(const MDMA_TypeDef *MDMAx, uint32_t Channel) { uint32_t mdma_base_addr = (uint32_t)MDMAx; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_opamp.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_opamp.h index 03ab42c7..abd81e3e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_opamp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_opamp.h @@ -392,7 +392,7 @@ __STATIC_INLINE void LL_OPAMP_SetMode(OPAMP_TypeDef *OPAMPx, uint32_t Mode) * @arg @ref LL_OPAMP_MODE_FUNCTIONAL * @arg @ref LL_OPAMP_MODE_CALIBRATION */ -__STATIC_INLINE uint32_t LL_OPAMP_GetMode(OPAMP_TypeDef *OPAMPx) +__STATIC_INLINE uint32_t LL_OPAMP_GetMode(const OPAMP_TypeDef *OPAMPx) { return (uint32_t)(READ_BIT(OPAMPx->CSR, OPAMP_CSR_CALON)); } @@ -434,7 +434,7 @@ __STATIC_INLINE void LL_OPAMP_SetFunctionalMode(OPAMP_TypeDef *OPAMPx, uint32_t * @arg @ref LL_OPAMP_MODE_PGA_IO0_BIAS * @arg @ref LL_OPAMP_MODE_PGA_IO0_IO1_BIAS */ -__STATIC_INLINE uint32_t LL_OPAMP_GetFunctionalMode(OPAMP_TypeDef *OPAMPx) +__STATIC_INLINE uint32_t LL_OPAMP_GetFunctionalMode(const OPAMP_TypeDef *OPAMPx) { return (uint32_t)(READ_BIT(OPAMPx->CSR, OPAMP_CSR_PGGAIN_3 | OPAMP_CSR_PGGAIN_2 | OPAMP_CSR_VMSEL)); } @@ -469,7 +469,7 @@ __STATIC_INLINE void LL_OPAMP_SetPGAGain(OPAMP_TypeDef *OPAMPx, uint32_t PGAGain * @arg @ref LL_OPAMP_PGA_GAIN_8_OR_MINUS_7 * @arg @ref LL_OPAMP_PGA_GAIN_16_OR_MINUS_15 */ -__STATIC_INLINE uint32_t LL_OPAMP_GetPGAGain(OPAMP_TypeDef *OPAMPx) +__STATIC_INLINE uint32_t LL_OPAMP_GetPGAGain(const OPAMP_TypeDef *OPAMPx) { return (uint32_t)(READ_BIT(OPAMPx->CSR, OPAMP_CSR_PGGAIN_1 | OPAMP_CSR_PGGAIN_0)); } @@ -498,7 +498,7 @@ __STATIC_INLINE void LL_OPAMP_SetPowerMode(OPAMP_TypeDef *OPAMPx, uint32_t Power * @arg @ref LL_OPAMP_POWERMODE_NORMAL * @arg @ref LL_OPAMP_POWERMODE_HIGHSPEED */ -__STATIC_INLINE uint32_t LL_OPAMP_GetPowerMode(OPAMP_TypeDef *OPAMPx) +__STATIC_INLINE uint32_t LL_OPAMP_GetPowerMode(const OPAMP_TypeDef *OPAMPx) { uint32_t power_mode = (READ_BIT(OPAMPx->CSR, OPAMP_CSR_OPAHSM)); @@ -536,7 +536,7 @@ __STATIC_INLINE void LL_OPAMP_SetInputNonInverting(OPAMP_TypeDef *OPAMPx, uint32 * @arg @ref LL_OPAMP_INPUT_NONINVERT_DAC * @arg @ref LL_OPAMP_INPUT_NONINVERT_DAC2 (Only for OPAMP2) */ -__STATIC_INLINE uint32_t LL_OPAMP_GetInputNonInverting(OPAMP_TypeDef *OPAMPx) +__STATIC_INLINE uint32_t LL_OPAMP_GetInputNonInverting(const OPAMP_TypeDef *OPAMPx) { return (uint32_t)(READ_BIT(OPAMPx->CSR, OPAMP_CSR_VPSEL)); } @@ -572,7 +572,7 @@ __STATIC_INLINE void LL_OPAMP_SetInputInverting(OPAMP_TypeDef *OPAMPx, uint32_t * @arg @ref LL_OPAMP_INPUT_INVERT_IO1 * @arg @ref LL_OPAMP_INPUT_INVERT_CONNECT_NO */ -__STATIC_INLINE uint32_t LL_OPAMP_GetInputInverting(OPAMP_TypeDef *OPAMPx) +__STATIC_INLINE uint32_t LL_OPAMP_GetInputInverting(const OPAMP_TypeDef *OPAMPx) { uint32_t input_inverting = READ_BIT(OPAMPx->CSR, OPAMP_CSR_VMSEL); @@ -611,7 +611,7 @@ __STATIC_INLINE void LL_OPAMP_SetTrimmingMode(OPAMP_TypeDef *OPAMPx, uint32_t Tr * @arg @ref LL_OPAMP_TRIMMING_FACTORY * @arg @ref LL_OPAMP_TRIMMING_USER */ -__STATIC_INLINE uint32_t LL_OPAMP_GetTrimmingMode(OPAMP_TypeDef *OPAMPx) +__STATIC_INLINE uint32_t LL_OPAMP_GetTrimmingMode(const OPAMP_TypeDef *OPAMPx) { return (uint32_t)(READ_BIT(OPAMPx->CSR, OPAMP_CSR_USERTRIM)); } @@ -658,7 +658,7 @@ __STATIC_INLINE void LL_OPAMP_SetCalibrationSelection(OPAMP_TypeDef *OPAMPx, uin * using two trimming steps (one with each transistors differential * pair NMOS and PMOS) */ -__STATIC_INLINE uint32_t LL_OPAMP_GetCalibrationSelection(OPAMP_TypeDef *OPAMPx) +__STATIC_INLINE uint32_t LL_OPAMP_GetCalibrationSelection(const OPAMP_TypeDef *OPAMPx) { uint32_t CalibrationSelection = (uint32_t)(READ_BIT(OPAMPx->CSR, OPAMP_CSR_CALSEL)); @@ -675,7 +675,7 @@ __STATIC_INLINE uint32_t LL_OPAMP_GetCalibrationSelection(OPAMP_TypeDef *OPAMPx) * @param OPAMPx OPAMP instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_OPAMP_IsCalibrationOutputSet(OPAMP_TypeDef *OPAMPx) +__STATIC_INLINE uint32_t LL_OPAMP_IsCalibrationOutputSet(const OPAMP_TypeDef *OPAMPx) { return ((READ_BIT(OPAMPx->CSR, OPAMP_CSR_CALOUT) == OPAMP_CSR_CALOUT)?1UL:0UL); } @@ -728,7 +728,7 @@ __STATIC_INLINE void LL_OPAMP_SetTrimmingValue(OPAMP_TypeDef* OPAMPx, uint32_t P * @arg @ref LL_OPAMP_TRIMMING_PMOS * @retval 0x0...0x1F */ -__STATIC_INLINE uint32_t LL_OPAMP_GetTrimmingValue(OPAMP_TypeDef* OPAMPx, uint32_t PowerMode, uint32_t TransistorsDiffPair) +__STATIC_INLINE uint32_t LL_OPAMP_GetTrimmingValue(const OPAMP_TypeDef* OPAMPx, uint32_t PowerMode, uint32_t TransistorsDiffPair) { const __IO uint32_t *preg = __OPAMP_PTR_REG_OFFSET(OPAMPx->OTR, (PowerMode & OPAMP_POWERMODE_OTR_REGOFFSET_MASK)); @@ -779,7 +779,7 @@ __STATIC_INLINE void LL_OPAMP_Disable(OPAMP_TypeDef *OPAMPx) * @param OPAMPx OPAMP instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_OPAMP_IsEnabled(OPAMP_TypeDef *OPAMPx) +__STATIC_INLINE uint32_t LL_OPAMP_IsEnabled(const OPAMP_TypeDef *OPAMPx) { return ((READ_BIT(OPAMPx->CSR, OPAMP_CSR_OPAMPxEN) == (OPAMP_CSR_OPAMPxEN))?1UL:0UL); } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_rng.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_rng.h index 62039d0e..cf1ab84f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_rng.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_rng.h @@ -680,7 +680,7 @@ __STATIC_INLINE uint32_t LL_RNG_GetHealthConfig(RNG_TypeDef *RNGx) /** @defgroup RNG_LL_EF_Init Initialization and de-initialization functions * @{ */ -ErrorStatus LL_RNG_Init(RNG_TypeDef *RNGx, LL_RNG_InitTypeDef *RNG_InitStruct); +ErrorStatus LL_RNG_Init(RNG_TypeDef *RNGx, const LL_RNG_InitTypeDef *RNG_InitStruct); void LL_RNG_StructInit(LL_RNG_InitTypeDef *RNG_InitStruct); ErrorStatus LL_RNG_DeInit(const RNG_TypeDef *RNGx); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_rtc.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_rtc.h index 85e6fadd..c7c0084f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_rtc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_rtc.h @@ -903,7 +903,7 @@ __STATIC_INLINE void LL_RTC_SetHourFormat(RTC_TypeDef *RTCx, uint32_t HourFormat * @arg @ref LL_RTC_HOURFORMAT_24HOUR * @arg @ref LL_RTC_HOURFORMAT_AMPM */ -__STATIC_INLINE uint32_t LL_RTC_GetHourFormat(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_GetHourFormat(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->CR, RTC_CR_FMT)); } @@ -935,7 +935,7 @@ __STATIC_INLINE void LL_RTC_SetAlarmOutEvent(RTC_TypeDef *RTCx, uint32_t AlarmOu * @arg @ref LL_RTC_ALARMOUT_ALMB * @arg @ref LL_RTC_ALARMOUT_WAKEUP */ -__STATIC_INLINE uint32_t LL_RTC_GetAlarmOutEvent(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_GetAlarmOutEvent(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->CR, RTC_CR_OSEL)); } @@ -992,7 +992,7 @@ __STATIC_INLINE void LL_RTC_SetAlarmOutputType(RTC_TypeDef *RTCx, uint32_t Outpu * @arg @ref LL_RTC_ALARM_OUTPUTTYPE_OPENDRAIN * @arg @ref LL_RTC_ALARM_OUTPUTTYPE_PUSHPULL */ -__STATIC_INLINE uint32_t LL_RTC_GetAlarmOutputType(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_GetAlarmOutputType(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->OR, RTC_OR_ALARMOUTTYPE)); } @@ -1078,7 +1078,7 @@ __STATIC_INLINE void LL_RTC_SetOutputPolarity(RTC_TypeDef *RTCx, uint32_t Polari * @arg @ref LL_RTC_OUTPUTPOLARITY_PIN_HIGH * @arg @ref LL_RTC_OUTPUTPOLARITY_PIN_LOW */ -__STATIC_INLINE uint32_t LL_RTC_GetOutputPolarity(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_GetOutputPolarity(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->CR, RTC_CR_POL)); } @@ -1112,7 +1112,7 @@ __STATIC_INLINE void LL_RTC_DisableShadowRegBypass(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsShadowRegBypassEnabled(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsShadowRegBypassEnabled(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->CR, RTC_CR_BYPSHAD) == (RTC_CR_BYPSHAD)) ? 1UL : 0UL); } @@ -1173,7 +1173,7 @@ __STATIC_INLINE void LL_RTC_SetSynchPrescaler(RTC_TypeDef *RTCx, uint32_t SynchP * @param RTCx RTC Instance * @retval Value between Min_Data = 0 and Max_Data = 0x7F */ -__STATIC_INLINE uint32_t LL_RTC_GetAsynchPrescaler(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_GetAsynchPrescaler(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->PRER, RTC_PRER_PREDIV_A) >> RTC_PRER_PREDIV_A_Pos); } @@ -1184,7 +1184,7 @@ __STATIC_INLINE uint32_t LL_RTC_GetAsynchPrescaler(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval Value between Min_Data = 0 and Max_Data = 0x7FFF */ -__STATIC_INLINE uint32_t LL_RTC_GetSynchPrescaler(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_GetSynchPrescaler(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->PRER, RTC_PRER_PREDIV_S)); } @@ -1376,7 +1376,7 @@ __STATIC_INLINE void LL_RTC_TIME_SetFormat(RTC_TypeDef *RTCx, uint32_t TimeForma * @arg @ref LL_RTC_TIME_FORMAT_AM_OR_24 * @arg @ref LL_RTC_TIME_FORMAT_PM */ -__STATIC_INLINE uint32_t LL_RTC_TIME_GetFormat(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TIME_GetFormat(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TR, RTC_TR_PM)); } @@ -1411,7 +1411,7 @@ __STATIC_INLINE void LL_RTC_TIME_SetHour(RTC_TypeDef *RTCx, uint32_t Hours) * @param RTCx RTC Instance * @retval Value between Min_Data=0x01 and Max_Data=0x12 or between Min_Data=0x00 and Max_Data=0x23 */ -__STATIC_INLINE uint32_t LL_RTC_TIME_GetHour(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TIME_GetHour(const RTC_TypeDef *RTCx) { return (uint32_t)((READ_BIT(RTCx->TR, (RTC_TR_HT | RTC_TR_HU))) >> RTC_TR_HU_Pos); } @@ -1446,7 +1446,7 @@ __STATIC_INLINE void LL_RTC_TIME_SetMinute(RTC_TypeDef *RTCx, uint32_t Minutes) * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data=0x59 */ -__STATIC_INLINE uint32_t LL_RTC_TIME_GetMinute(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TIME_GetMinute(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TR, (RTC_TR_MNT | RTC_TR_MNU)) >> RTC_TR_MNU_Pos); } @@ -1481,7 +1481,7 @@ __STATIC_INLINE void LL_RTC_TIME_SetSecond(RTC_TypeDef *RTCx, uint32_t Seconds) * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data=0x59 */ -__STATIC_INLINE uint32_t LL_RTC_TIME_GetSecond(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TIME_GetSecond(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TR, (RTC_TR_ST | RTC_TR_SU)) >> RTC_TR_SU_Pos); } @@ -1535,7 +1535,7 @@ __STATIC_INLINE void LL_RTC_TIME_Config(RTC_TypeDef *RTCx, uint32_t Format12_24, * @param RTCx RTC Instance * @retval Combination of hours, minutes and seconds (Format: 0x00HHMMSS). */ -__STATIC_INLINE uint32_t LL_RTC_TIME_Get(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TIME_Get(const RTC_TypeDef *RTCx) { uint32_t temp; @@ -1575,7 +1575,7 @@ __STATIC_INLINE void LL_RTC_TIME_DisableDayLightStore(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_TIME_IsDayLightStoreEnabled(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TIME_IsDayLightStoreEnabled(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->CR, RTC_CR_BKP) == (RTC_CR_BKP)) ? 1UL : 0UL); } @@ -1617,7 +1617,7 @@ __STATIC_INLINE void LL_RTC_TIME_IncHour(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval Sub second value (number between 0 and 65535) */ -__STATIC_INLINE uint32_t LL_RTC_TIME_GetSubSecond(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TIME_GetSubSecond(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->SSR, RTC_SSR_SS)); } @@ -1674,7 +1674,7 @@ __STATIC_INLINE void LL_RTC_DATE_SetYear(RTC_TypeDef *RTCx, uint32_t Year) * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data=0x99 */ -__STATIC_INLINE uint32_t LL_RTC_DATE_GetYear(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_DATE_GetYear(const RTC_TypeDef *RTCx) { return (uint32_t)((READ_BIT(RTCx->DR, (RTC_DR_YT | RTC_DR_YU))) >> RTC_DR_YU_Pos); } @@ -1713,7 +1713,7 @@ __STATIC_INLINE void LL_RTC_DATE_SetWeekDay(RTC_TypeDef *RTCx, uint32_t WeekDay) * @arg @ref LL_RTC_WEEKDAY_SATURDAY * @arg @ref LL_RTC_WEEKDAY_SUNDAY */ -__STATIC_INLINE uint32_t LL_RTC_DATE_GetWeekDay(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_DATE_GetWeekDay(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->DR, RTC_DR_WDU) >> RTC_DR_WDU_Pos); } @@ -1767,7 +1767,7 @@ __STATIC_INLINE void LL_RTC_DATE_SetMonth(RTC_TypeDef *RTCx, uint32_t Month) * @arg @ref LL_RTC_MONTH_NOVEMBER * @arg @ref LL_RTC_MONTH_DECEMBER */ -__STATIC_INLINE uint32_t LL_RTC_DATE_GetMonth(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_DATE_GetMonth(const RTC_TypeDef *RTCx) { return (uint32_t)((READ_BIT(RTCx->DR, (RTC_DR_MT | RTC_DR_MU))) >> RTC_DR_MU_Pos); } @@ -1797,7 +1797,7 @@ __STATIC_INLINE void LL_RTC_DATE_SetDay(RTC_TypeDef *RTCx, uint32_t Day) * @param RTCx RTC Instance * @retval Value between Min_Data=0x01 and Max_Data=0x31 */ -__STATIC_INLINE uint32_t LL_RTC_DATE_GetDay(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_DATE_GetDay(const RTC_TypeDef *RTCx) { return (uint32_t)((READ_BIT(RTCx->DR, (RTC_DR_DT | RTC_DR_DU))) >> RTC_DR_DU_Pos); } @@ -1865,7 +1865,7 @@ __STATIC_INLINE void LL_RTC_DATE_Config(RTC_TypeDef *RTCx, uint32_t WeekDay, uin * @param RTCx RTC Instance * @retval Combination of WeekDay, Day, Month and Year (Format: 0xWWDDMMYY). */ -__STATIC_INLINE uint32_t LL_RTC_DATE_Get(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_DATE_Get(const RTC_TypeDef *RTCx) { uint32_t temp; @@ -1944,7 +1944,7 @@ __STATIC_INLINE void LL_RTC_ALMA_SetMask(RTC_TypeDef *RTCx, uint32_t Mask) * @arg @ref LL_RTC_ALMA_MASK_SECONDS * @arg @ref LL_RTC_ALMA_MASK_ALL */ -__STATIC_INLINE uint32_t LL_RTC_ALMA_GetMask(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMA_GetMask(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->ALRMAR, RTC_ALRMAR_MSK4 | RTC_ALRMAR_MSK3 | RTC_ALRMAR_MSK2 | RTC_ALRMAR_MSK1)); } @@ -1994,7 +1994,7 @@ __STATIC_INLINE void LL_RTC_ALMA_SetDay(RTC_TypeDef *RTCx, uint32_t Day) * @param RTCx RTC Instance * @retval Value between Min_Data=0x01 and Max_Data=0x31 */ -__STATIC_INLINE uint32_t LL_RTC_ALMA_GetDay(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMA_GetDay(const RTC_TypeDef *RTCx) { return (uint32_t)((READ_BIT(RTCx->ALRMAR, (RTC_ALRMAR_DT | RTC_ALRMAR_DU))) >> RTC_ALRMAR_DU_Pos); } @@ -2031,7 +2031,7 @@ __STATIC_INLINE void LL_RTC_ALMA_SetWeekDay(RTC_TypeDef *RTCx, uint32_t WeekDay) * @arg @ref LL_RTC_WEEKDAY_SATURDAY * @arg @ref LL_RTC_WEEKDAY_SUNDAY */ -__STATIC_INLINE uint32_t LL_RTC_ALMA_GetWeekDay(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMA_GetWeekDay(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->ALRMAR, RTC_ALRMAR_DU) >> RTC_ALRMAR_DU_Pos); } @@ -2058,7 +2058,7 @@ __STATIC_INLINE void LL_RTC_ALMA_SetTimeFormat(RTC_TypeDef *RTCx, uint32_t TimeF * @arg @ref LL_RTC_ALMA_TIME_FORMAT_AM * @arg @ref LL_RTC_ALMA_TIME_FORMAT_PM */ -__STATIC_INLINE uint32_t LL_RTC_ALMA_GetTimeFormat(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMA_GetTimeFormat(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->ALRMAR, RTC_ALRMAR_PM)); } @@ -2086,7 +2086,7 @@ __STATIC_INLINE void LL_RTC_ALMA_SetHour(RTC_TypeDef *RTCx, uint32_t Hours) * @param RTCx RTC Instance * @retval Value between Min_Data=0x01 and Max_Data=0x12 or between Min_Data=0x00 and Max_Data=0x23 */ -__STATIC_INLINE uint32_t LL_RTC_ALMA_GetHour(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMA_GetHour(const RTC_TypeDef *RTCx) { return (uint32_t)((READ_BIT(RTCx->ALRMAR, (RTC_ALRMAR_HT | RTC_ALRMAR_HU))) >> RTC_ALRMAR_HU_Pos); } @@ -2114,7 +2114,7 @@ __STATIC_INLINE void LL_RTC_ALMA_SetMinute(RTC_TypeDef *RTCx, uint32_t Minutes) * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data=0x59 */ -__STATIC_INLINE uint32_t LL_RTC_ALMA_GetMinute(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMA_GetMinute(const RTC_TypeDef *RTCx) { return (uint32_t)((READ_BIT(RTCx->ALRMAR, (RTC_ALRMAR_MNT | RTC_ALRMAR_MNU))) >> RTC_ALRMAR_MNU_Pos); } @@ -2142,7 +2142,7 @@ __STATIC_INLINE void LL_RTC_ALMA_SetSecond(RTC_TypeDef *RTCx, uint32_t Seconds) * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data=0x59 */ -__STATIC_INLINE uint32_t LL_RTC_ALMA_GetSecond(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMA_GetSecond(const RTC_TypeDef *RTCx) { return (uint32_t)((READ_BIT(RTCx->ALRMAR, (RTC_ALRMAR_ST | RTC_ALRMAR_SU))) >> RTC_ALRMAR_SU_Pos); } @@ -2214,7 +2214,7 @@ __STATIC_INLINE void LL_RTC_ALMA_SetSubSecondMask(RTC_TypeDef *RTCx, uint32_t Ma * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data=0xF */ -__STATIC_INLINE uint32_t LL_RTC_ALMA_GetSubSecondMask(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMA_GetSubSecondMask(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->ALRMASSR, RTC_ALRMASSR_MASKSS) >> RTC_ALRMASSR_MASKSS_Pos); } @@ -2237,7 +2237,7 @@ __STATIC_INLINE void LL_RTC_ALMA_SetSubSecond(RTC_TypeDef *RTCx, uint32_t Subsec * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data=0x7FFF */ -__STATIC_INLINE uint32_t LL_RTC_ALMA_GetSubSecond(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMA_GetSubSecond(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->ALRMASSR, RTC_ALRMASSR_SS)); } @@ -2310,7 +2310,7 @@ __STATIC_INLINE void LL_RTC_ALMB_SetMask(RTC_TypeDef *RTCx, uint32_t Mask) * @arg @ref LL_RTC_ALMB_MASK_SECONDS * @arg @ref LL_RTC_ALMB_MASK_ALL */ -__STATIC_INLINE uint32_t LL_RTC_ALMB_GetMask(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMB_GetMask(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->ALRMBR, RTC_ALRMBR_MSK4 | RTC_ALRMBR_MSK3 | RTC_ALRMBR_MSK2 | RTC_ALRMBR_MSK1)); } @@ -2360,7 +2360,7 @@ __STATIC_INLINE void LL_RTC_ALMB_SetDay(RTC_TypeDef *RTCx, uint32_t Day) * @param RTCx RTC Instance * @retval Value between Min_Data=0x01 and Max_Data=0x31 */ -__STATIC_INLINE uint32_t LL_RTC_ALMB_GetDay(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMB_GetDay(const RTC_TypeDef *RTCx) { return (uint32_t)((READ_BIT(RTCx->ALRMBR, (RTC_ALRMBR_DT | RTC_ALRMBR_DU))) >> RTC_ALRMBR_DU_Pos); } @@ -2397,7 +2397,7 @@ __STATIC_INLINE void LL_RTC_ALMB_SetWeekDay(RTC_TypeDef *RTCx, uint32_t WeekDay) * @arg @ref LL_RTC_WEEKDAY_SATURDAY * @arg @ref LL_RTC_WEEKDAY_SUNDAY */ -__STATIC_INLINE uint32_t LL_RTC_ALMB_GetWeekDay(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMB_GetWeekDay(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->ALRMBR, RTC_ALRMBR_DU) >> RTC_ALRMBR_DU_Pos); } @@ -2424,7 +2424,7 @@ __STATIC_INLINE void LL_RTC_ALMB_SetTimeFormat(RTC_TypeDef *RTCx, uint32_t TimeF * @arg @ref LL_RTC_ALMB_TIME_FORMAT_AM * @arg @ref LL_RTC_ALMB_TIME_FORMAT_PM */ -__STATIC_INLINE uint32_t LL_RTC_ALMB_GetTimeFormat(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMB_GetTimeFormat(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->ALRMBR, RTC_ALRMBR_PM)); } @@ -2452,7 +2452,7 @@ __STATIC_INLINE void LL_RTC_ALMB_SetHour(RTC_TypeDef *RTCx, uint32_t Hours) * @param RTCx RTC Instance * @retval Value between Min_Data=0x01 and Max_Data=0x12 or between Min_Data=0x00 and Max_Data=0x23 */ -__STATIC_INLINE uint32_t LL_RTC_ALMB_GetHour(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMB_GetHour(const RTC_TypeDef *RTCx) { return (uint32_t)((READ_BIT(RTCx->ALRMBR, (RTC_ALRMBR_HT | RTC_ALRMBR_HU))) >> RTC_ALRMBR_HU_Pos); } @@ -2480,7 +2480,7 @@ __STATIC_INLINE void LL_RTC_ALMB_SetMinute(RTC_TypeDef *RTCx, uint32_t Minutes) * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data=0x59 */ -__STATIC_INLINE uint32_t LL_RTC_ALMB_GetMinute(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMB_GetMinute(const RTC_TypeDef *RTCx) { return (uint32_t)((READ_BIT(RTCx->ALRMBR, (RTC_ALRMBR_MNT | RTC_ALRMBR_MNU))) >> RTC_ALRMBR_MNU_Pos); } @@ -2508,7 +2508,7 @@ __STATIC_INLINE void LL_RTC_ALMB_SetSecond(RTC_TypeDef *RTCx, uint32_t Seconds) * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data=0x59 */ -__STATIC_INLINE uint32_t LL_RTC_ALMB_GetSecond(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMB_GetSecond(const RTC_TypeDef *RTCx) { return (uint32_t)((READ_BIT(RTCx->ALRMBR, (RTC_ALRMBR_ST | RTC_ALRMBR_SU))) >> RTC_ALRMBR_SU_Pos); } @@ -2580,7 +2580,7 @@ __STATIC_INLINE void LL_RTC_ALMB_SetSubSecondMask(RTC_TypeDef *RTCx, uint32_t Ma * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data=0xF */ -__STATIC_INLINE uint32_t LL_RTC_ALMB_GetSubSecondMask(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMB_GetSubSecondMask(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->ALRMBSSR, RTC_ALRMBSSR_MASKSS) >> RTC_ALRMBSSR_MASKSS_Pos); } @@ -2603,7 +2603,7 @@ __STATIC_INLINE void LL_RTC_ALMB_SetSubSecond(RTC_TypeDef *RTCx, uint32_t Subsec * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data=0x7FFF */ -__STATIC_INLINE uint32_t LL_RTC_ALMB_GetSubSecond(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_ALMB_GetSubSecond(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->ALRMBSSR, RTC_ALRMBSSR_SS)); } @@ -2689,7 +2689,7 @@ __STATIC_INLINE void LL_RTC_TS_SetActiveEdge(RTC_TypeDef *RTCx, uint32_t Edge) * @arg @ref LL_RTC_TIMESTAMP_EDGE_RISING * @arg @ref LL_RTC_TIMESTAMP_EDGE_FALLING */ -__STATIC_INLINE uint32_t LL_RTC_TS_GetActiveEdge(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TS_GetActiveEdge(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->CR, RTC_CR_TSEDGE)); } @@ -2702,7 +2702,7 @@ __STATIC_INLINE uint32_t LL_RTC_TS_GetActiveEdge(RTC_TypeDef *RTCx) * @arg @ref LL_RTC_TS_TIME_FORMAT_AM * @arg @ref LL_RTC_TS_TIME_FORMAT_PM */ -__STATIC_INLINE uint32_t LL_RTC_TS_GetTimeFormat(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TS_GetTimeFormat(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TSTR, RTC_TSTR_PM)); } @@ -2715,7 +2715,7 @@ __STATIC_INLINE uint32_t LL_RTC_TS_GetTimeFormat(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval Value between Min_Data=0x01 and Max_Data=0x12 or between Min_Data=0x00 and Max_Data=0x23 */ -__STATIC_INLINE uint32_t LL_RTC_TS_GetHour(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TS_GetHour(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TSTR, RTC_TSTR_HT | RTC_TSTR_HU) >> RTC_TSTR_HU_Pos); } @@ -2728,7 +2728,7 @@ __STATIC_INLINE uint32_t LL_RTC_TS_GetHour(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data=0x59 */ -__STATIC_INLINE uint32_t LL_RTC_TS_GetMinute(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TS_GetMinute(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TSTR, RTC_TSTR_MNT | RTC_TSTR_MNU) >> RTC_TSTR_MNU_Pos); } @@ -2741,7 +2741,7 @@ __STATIC_INLINE uint32_t LL_RTC_TS_GetMinute(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data=0x59 */ -__STATIC_INLINE uint32_t LL_RTC_TS_GetSecond(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TS_GetSecond(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TSTR, RTC_TSTR_ST | RTC_TSTR_SU)); } @@ -2759,7 +2759,7 @@ __STATIC_INLINE uint32_t LL_RTC_TS_GetSecond(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval Combination of hours, minutes and seconds. */ -__STATIC_INLINE uint32_t LL_RTC_TS_GetTime(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TS_GetTime(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TSTR, RTC_TSTR_HT | RTC_TSTR_HU | RTC_TSTR_MNT | RTC_TSTR_MNU | RTC_TSTR_ST | RTC_TSTR_SU)); @@ -2778,7 +2778,7 @@ __STATIC_INLINE uint32_t LL_RTC_TS_GetTime(RTC_TypeDef *RTCx) * @arg @ref LL_RTC_WEEKDAY_SATURDAY * @arg @ref LL_RTC_WEEKDAY_SUNDAY */ -__STATIC_INLINE uint32_t LL_RTC_TS_GetWeekDay(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TS_GetWeekDay(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TSDR, RTC_TSDR_WDU) >> RTC_TSDR_WDU_Pos); } @@ -2803,7 +2803,7 @@ __STATIC_INLINE uint32_t LL_RTC_TS_GetWeekDay(RTC_TypeDef *RTCx) * @arg @ref LL_RTC_MONTH_NOVEMBER * @arg @ref LL_RTC_MONTH_DECEMBER */ -__STATIC_INLINE uint32_t LL_RTC_TS_GetMonth(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TS_GetMonth(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TSDR, RTC_TSDR_MT | RTC_TSDR_MU) >> RTC_TSDR_MU_Pos); } @@ -2816,7 +2816,7 @@ __STATIC_INLINE uint32_t LL_RTC_TS_GetMonth(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval Value between Min_Data=0x01 and Max_Data=0x31 */ -__STATIC_INLINE uint32_t LL_RTC_TS_GetDay(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TS_GetDay(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TSDR, RTC_TSDR_DT | RTC_TSDR_DU)); } @@ -2833,7 +2833,7 @@ __STATIC_INLINE uint32_t LL_RTC_TS_GetDay(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval Combination of Weekday, Day and Month */ -__STATIC_INLINE uint32_t LL_RTC_TS_GetDate(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TS_GetDate(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TSDR, RTC_TSDR_WDU | RTC_TSDR_MT | RTC_TSDR_MU | RTC_TSDR_DT | RTC_TSDR_DU)); } @@ -2844,7 +2844,7 @@ __STATIC_INLINE uint32_t LL_RTC_TS_GetDate(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data=0xFFFF */ -__STATIC_INLINE uint32_t LL_RTC_TS_GetSubSecond(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TS_GetSubSecond(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TSSSR, RTC_TSSSR_SS)); } @@ -3070,7 +3070,7 @@ __STATIC_INLINE void LL_RTC_TAMPER_SetPrecharge(RTC_TypeDef *RTCx, uint32_t Dura * @arg @ref LL_RTC_TAMPER_DURATION_4RTCCLK * @arg @ref LL_RTC_TAMPER_DURATION_8RTCCLK */ -__STATIC_INLINE uint32_t LL_RTC_TAMPER_GetPrecharge(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TAMPER_GetPrecharge(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TAMPCR, RTC_TAMPCR_TAMPPRCH)); } @@ -3101,7 +3101,7 @@ __STATIC_INLINE void LL_RTC_TAMPER_SetFilterCount(RTC_TypeDef *RTCx, uint32_t Fi * @arg @ref LL_RTC_TAMPER_FILTER_4SAMPLE * @arg @ref LL_RTC_TAMPER_FILTER_8SAMPLE */ -__STATIC_INLINE uint32_t LL_RTC_TAMPER_GetFilterCount(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TAMPER_GetFilterCount(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TAMPCR, RTC_TAMPCR_TAMPFLT)); } @@ -3140,7 +3140,7 @@ __STATIC_INLINE void LL_RTC_TAMPER_SetSamplingFreq(RTC_TypeDef *RTCx, uint32_t S * @arg @ref LL_RTC_TAMPER_SAMPLFREQDIV_512 * @arg @ref LL_RTC_TAMPER_SAMPLFREQDIV_256 */ -__STATIC_INLINE uint32_t LL_RTC_TAMPER_GetSamplingFreq(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_TAMPER_GetSamplingFreq(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->TAMPCR, RTC_TAMPCR_TAMPFREQ)); } @@ -3490,7 +3490,7 @@ __STATIC_INLINE void LL_RTC_WAKEUP_Disable(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_WAKEUP_IsEnabled(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_WAKEUP_IsEnabled(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->CR, RTC_CR_WUTE) == (RTC_CR_WUTE)) ? 1UL : 0UL); } @@ -3527,7 +3527,7 @@ __STATIC_INLINE void LL_RTC_WAKEUP_SetClock(RTC_TypeDef *RTCx, uint32_t WakeupCl * @arg @ref LL_RTC_WAKEUPCLOCK_CKSPRE * @arg @ref LL_RTC_WAKEUPCLOCK_CKSPRE_WUT */ -__STATIC_INLINE uint32_t LL_RTC_WAKEUP_GetClock(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_WAKEUP_GetClock(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->CR, RTC_CR_WUCKSEL)); } @@ -3551,7 +3551,7 @@ __STATIC_INLINE void LL_RTC_WAKEUP_SetAutoReload(RTC_TypeDef *RTCx, uint32_t Val * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data=0xFFFF */ -__STATIC_INLINE uint32_t LL_RTC_WAKEUP_GetAutoReload(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_WAKEUP_GetAutoReload(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->WUTR, RTC_WUTR_WUT)); } @@ -3656,7 +3656,7 @@ __STATIC_INLINE void LL_RTC_BAK_SetRegister(RTC_TypeDef *RTCx, uint32_t BackupRe * @arg @ref LL_RTC_BKP_DR31 * @retval Value between Min_Data=0x00 and Max_Data=0xFFFFFFFF */ -__STATIC_INLINE uint32_t LL_RTC_BAK_GetRegister(RTC_TypeDef *RTCx, uint32_t BackupRegister) +__STATIC_INLINE uint32_t LL_RTC_BAK_GetRegister(const RTC_TypeDef *RTCx, uint32_t BackupRegister) { uint32_t tmp; @@ -3707,7 +3707,7 @@ __STATIC_INLINE uint32_t LL_RTC_BAK_GetRegister(RTC_TypeDef *RTCx, uint32_t Back * @param Data Value between Min_Data=0x00 and Max_Data=0xFFFFFFFF * @retval None */ -__STATIC_INLINE void LL_RTC_BKP_SetRegister(TAMP_TypeDef *TAMPx, uint32_t BackupRegister, uint32_t Data) +__STATIC_INLINE void LL_RTC_BKP_SetRegister(const TAMP_TypeDef *TAMPx, uint32_t BackupRegister, uint32_t Data) { uint32_t tmp; @@ -3805,7 +3805,7 @@ __STATIC_INLINE void LL_RTC_CAL_SetOutputFreq(RTC_TypeDef *RTCx, uint32_t Freque * @arg @ref LL_RTC_CALIB_OUTPUT_1HZ * @arg @ref LL_RTC_CALIB_OUTPUT_512HZ */ -__STATIC_INLINE uint32_t LL_RTC_CAL_GetOutputFreq(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_CAL_GetOutputFreq(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->CR, RTC_CR_COE | RTC_CR_COSEL)); } @@ -3832,7 +3832,7 @@ __STATIC_INLINE void LL_RTC_CAL_SetPulse(RTC_TypeDef *RTCx, uint32_t Pulse) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_CAL_IsPulseInserted(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_CAL_IsPulseInserted(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->CALR, RTC_CALR_CALP) == (RTC_CALR_CALP)) ? 1UL : 0UL); } @@ -3865,7 +3865,7 @@ __STATIC_INLINE void LL_RTC_CAL_SetPeriod(RTC_TypeDef *RTCx, uint32_t Period) * @arg @ref LL_RTC_CALIB_PERIOD_16SEC * @arg @ref LL_RTC_CALIB_PERIOD_8SEC */ -__STATIC_INLINE uint32_t LL_RTC_CAL_GetPeriod(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_CAL_GetPeriod(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->CALR, RTC_CALR_CALW8 | RTC_CALR_CALW16)); } @@ -3890,7 +3890,7 @@ __STATIC_INLINE void LL_RTC_CAL_SetMinus(RTC_TypeDef *RTCx, uint32_t CalibMinus) * @param RTCx RTC Instance * @retval Value between Min_Data=0x00 and Max_Data= 0x1FF */ -__STATIC_INLINE uint32_t LL_RTC_CAL_GetMinus(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_CAL_GetMinus(const RTC_TypeDef *RTCx) { return (uint32_t)(READ_BIT(RTCx->CALR, RTC_CALR_CALM)); } @@ -3911,7 +3911,7 @@ __STATIC_INLINE uint32_t LL_RTC_CAL_GetMinus(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ITS(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ITS(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_ITSF) == (RTC_ISR_ITSF)) ? 1UL : 0UL); } @@ -3922,7 +3922,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ITS(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_RECALP(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_RECALP(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_RECALPF) == (RTC_ISR_RECALPF)) ? 1UL : 0UL); } @@ -3933,7 +3933,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_RECALP(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMP3(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMP3(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_TAMP3F) == (RTC_ISR_TAMP3F)) ? 1UL : 0UL); } @@ -3944,7 +3944,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMP3(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMP2(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMP2(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_TAMP2F) == (RTC_ISR_TAMP2F)) ? 1UL : 0UL); } @@ -3955,7 +3955,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMP2(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMP1(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMP1(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_TAMP1F) == (RTC_ISR_TAMP1F)) ? 1UL : 0UL); } @@ -3966,7 +3966,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMP1(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TSOV(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TSOV(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_TSOVF) == (RTC_ISR_TSOVF)) ? 1UL : 0UL); } @@ -3977,7 +3977,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TSOV(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TS(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TS(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_TSF) == (RTC_ISR_TSF)) ? 1UL : 0UL); } @@ -3988,7 +3988,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TS(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_WUT(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_WUT(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_WUTF) == (RTC_ISR_WUTF)) ? 1UL : 0UL); } @@ -3999,7 +3999,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_WUT(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALRB(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALRB(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_ALRBF) == (RTC_ISR_ALRBF)) ? 1UL : 0UL); } @@ -4010,7 +4010,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALRB(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALRA(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALRA(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_ALRAF) == (RTC_ISR_ALRAF)) ? 1UL : 0UL); } @@ -4120,7 +4120,7 @@ __STATIC_INLINE void LL_RTC_ClearFlag_ALRA(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_INIT(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_INIT(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_INITF) == (RTC_ISR_INITF)) ? 1UL : 0UL); } @@ -4131,7 +4131,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_INIT(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_RS(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_RS(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_RSF) == (RTC_ISR_RSF)) ? 1UL : 0UL); } @@ -4153,7 +4153,7 @@ __STATIC_INLINE void LL_RTC_ClearFlag_RS(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_INITS(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_INITS(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_INITS) == (RTC_ISR_INITS)) ? 1UL : 0UL); } @@ -4164,7 +4164,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_INITS(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_SHP(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_SHP(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_SHPF) == (RTC_ISR_SHPF)) ? 1UL : 0UL); } @@ -4175,7 +4175,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_SHP(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_WUTW(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_WUTW(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_WUTWF) == (RTC_ISR_WUTWF)) ? 1UL : 0UL); } @@ -4186,7 +4186,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_WUTW(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALRBW(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALRBW(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_ALRBWF) == (RTC_ISR_ALRBWF)) ? 1UL : 0UL); } @@ -4197,7 +4197,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALRBW(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALRAW(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALRAW(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->ISR, RTC_ISR_ALRAWF) == (RTC_ISR_ALRAWF)) ? 1UL : 0UL); } @@ -4801,7 +4801,7 @@ __STATIC_INLINE void LL_RTC_DisableIT_TAMP(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TS(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TS(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->CR, RTC_CR_TSIE) == (RTC_CR_TSIE)) ? 1UL : 0UL); } @@ -4812,7 +4812,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TS(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_WUT(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_WUT(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->CR, RTC_CR_WUTIE) == (RTC_CR_WUTIE)) ? 1UL : 0UL); } @@ -4823,7 +4823,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_WUT(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_ALRB(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_ALRB(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->CR, RTC_CR_ALRBIE) == (RTC_CR_ALRBIE)) ? 1UL : 0UL); } @@ -4834,7 +4834,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_ALRB(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_ALRA(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_ALRA(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->CR, RTC_CR_ALRAIE) == (RTC_CR_ALRAIE)) ? 1UL : 0UL); } @@ -4846,7 +4846,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_ALRA(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP3(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP3(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->TAMPCR, RTC_TAMPCR_TAMP3IE) == (RTC_TAMPCR_TAMP3IE)) ? 1UL : 0UL); } @@ -4857,7 +4857,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP3(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP2(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP2(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->TAMPCR, RTC_TAMPCR_TAMP2IE) == (RTC_TAMPCR_TAMP2IE)) ? 1UL : 0UL); @@ -4869,7 +4869,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP2(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP1(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP1(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->TAMPCR, RTC_TAMPCR_TAMP1IE) == (RTC_TAMPCR_TAMP1IE)) ? 1UL : 0UL); } @@ -4880,7 +4880,7 @@ __STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP1(RTC_TypeDef *RTCx) * @param RTCx RTC Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP(RTC_TypeDef *RTCx) +__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP(const RTC_TypeDef *RTCx) { return ((READ_BIT(RTCx->TAMPCR, RTC_TAMPCR_TAMPIE) == (RTC_TAMPCR_TAMPIE)) ? 1UL : 0UL); } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_sdmmc.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_sdmmc.h index 6e12084e..9887fe0e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_sdmmc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_sdmmc.h @@ -30,7 +30,7 @@ extern "C" { /** @addtogroup STM32H7xx_Driver * @{ */ - +#if defined (SDMMC1) || defined (SDMMC2) /** @addtogroup SDMMC_LL * @{ */ @@ -61,10 +61,10 @@ typedef struct uint32_t ClockDiv; /*!< Specifies the clock frequency of the SDMMC controller. This parameter can be a value between Min_Data = 0 and Max_Data = 1023 */ -#if (USE_SD_TRANSCEIVER != 0U) +#if (USE_SD_TRANSCEIVER != 0U) || (USE_SDIO_TRANSCEIVER != 0U) uint32_t TranceiverPresent; /*!< Specifies if there is a 1V8 Transceiver/Switcher. This parameter can be a value of @ref SDMMC_LL_TRANSCEIVER_PRESENT */ -#endif /* USE_SD_TRANSCEIVER */ +#endif /* USE_SD_TRANSCEIVER || USE_SDIO_TRANSCEIVER */ } SDMMC_InitTypeDef; @@ -160,84 +160,128 @@ typedef struct #define SDMMC_ERROR_DMA ((uint32_t)0x40000000U) /*!< Error while DMA transfer */ #define SDMMC_ERROR_TIMEOUT ((uint32_t)0x80000000U) /*!< Timeout error */ +/** + * @brief Masks for R5 Response + */ +/** this is the reserved for future use in spec RFU */ +#define SDMMC_SDIO_R5_ERROR ((uint32_t)0x00000400U) +/** Out of range error */ +#define SDMMC_SDIO_R5_OUT_OF_RANGE ((uint32_t)0x00000100U) +/** Invalid function number */ +#define SDMMC_SDIO_R5_INVALID_FUNCTION_NUMBER ((uint32_t)0x00000200U) +/** General or an unknown error */ +#define SDMMC_SDIO_R5_GENERAL_UNKNOWN_ERROR ((uint32_t)0x00000800U) +/** SDIO Card current state + * 00=DIS (card not selected) + * 01=CMD (data line free) + * 10=TRN (transfer on data lines) */ +#define SDMMC_SDIO_R5_IO_CURRENT_STATE ((uint32_t)0x00003000U) +/** Illegal command error */ +#define SDMMC_SDIO_R5_ILLEGAL_CMD ((uint32_t)0x00004000U) +/** CRC check of previous cmd failed */ +#define SDMMC_SDIO_R5_COM_CRC_FAILED ((uint32_t)0x00008000U) + +#define SDMMC_SDIO_R5_ERRORBITS (SDMMC_SDIO_R5_COM_CRC_FAILED | \ + SDMMC_SDIO_R5_ILLEGAL_CMD | \ + SDMMC_SDIO_R5_GENERAL_UNKNOWN_ERROR | \ + SDMMC_SDIO_R5_INVALID_FUNCTION_NUMBER | \ + SDMMC_SDIO_R5_OUT_OF_RANGE) +/** + * @brief SDIO_CMD53_MODE + */ +#define SDMMC_SDIO_MODE_BYTE 0x00U /*!< Byte Mode */ +#define SDMMC_SDIO_MODE_BLOCK 0x01U /*!< Block Mode */ + +/** + * @brief SDIO_CMD53_OP_CODE + */ +#define SDMMC_SDIO_NO_INC 0x00U /*!< No auto indentation */ +#define SDMMC_SDIO_AUTO_INC 0x01U /*!< Auto indentation */ + +/** + * @brief SDIO_CMD53_RAW + */ +#define SDMMC_SDIO_WO 0x00U /*!< Write only Flag */ +#define SDMMC_SDIO_RAW 0x01U /*!< Read after write Flag */ + /** * @brief SDMMC Commands Index */ -#define SDMMC_CMD_GO_IDLE_STATE ((uint8_t)0U) /*!< Resets the SD memory card. */ -#define SDMMC_CMD_SEND_OP_COND ((uint8_t)1U) /*!< Sends host capacity support information and activates the card's initialization process. */ -#define SDMMC_CMD_ALL_SEND_CID ((uint8_t)2U) /*!< Asks any card connected to the host to send the CID numbers on the CMD line. */ -#define SDMMC_CMD_SET_REL_ADDR ((uint8_t)3U) /*!< Asks the card to publish a new relative address (RCA). */ -#define SDMMC_CMD_SET_DSR ((uint8_t)4U) /*!< Programs the DSR of all cards. */ -#define SDMMC_CMD_SDMMC_SEN_OP_COND ((uint8_t)5U) /*!< Sends host capacity support information (HCS) and asks the accessed card to send its operating condition register (OCR) content in the response on the CMD line.*/ -#define SDMMC_CMD_HS_SWITCH ((uint8_t)6U) /*!< Checks switchable function (mode 0) and switch card function (mode 1). */ -#define SDMMC_CMD_SEL_DESEL_CARD ((uint8_t)7U) /*!< Selects the card by its own relative address and gets deselected by any other address */ -#define SDMMC_CMD_HS_SEND_EXT_CSD ((uint8_t)8U) /*!< Sends SD Memory Card interface condition, which includes host supply voltage information and asks the card whether card supports voltage. */ -#define SDMMC_CMD_SEND_CSD ((uint8_t)9U) /*!< Addressed card sends its card specific data (CSD) on the CMD line. */ -#define SDMMC_CMD_SEND_CID ((uint8_t)10U) /*!< Addressed card sends its card identification (CID) on the CMD line. */ -#define SDMMC_CMD_VOLTAGE_SWITCH ((uint8_t)11U) /*!< SD card Voltage switch to 1.8V mode. */ -#define SDMMC_CMD_STOP_TRANSMISSION ((uint8_t)12U) /*!< Forces the card to stop transmission. */ -#define SDMMC_CMD_SEND_STATUS ((uint8_t)13U) /*!< Addressed card sends its status register. */ -#define SDMMC_CMD_HS_BUSTEST_READ ((uint8_t)14U) /*!< Reserved */ -#define SDMMC_CMD_GO_INACTIVE_STATE ((uint8_t)15U) /*!< Sends an addressed card into the inactive state. */ -#define SDMMC_CMD_SET_BLOCKLEN ((uint8_t)16U) /*!< Sets the block length (in bytes for SDSC) for all following block commands (read, write, lock). Default block length is fixed to 512 Bytes. Not effective */ +#define SDMMC_CMD_GO_IDLE_STATE 0U /*!< Resets the SD memory card. */ +#define SDMMC_CMD_SEND_OP_COND 1U /*!< Sends host capacity support information and activates the card's initialization process. */ +#define SDMMC_CMD_ALL_SEND_CID 2U /*!< Asks any card connected to the host to send the CID numbers on the CMD line. */ +#define SDMMC_CMD_SET_REL_ADDR 3U /*!< Asks the card to publish a new relative address (RCA). */ +#define SDMMC_CMD_SET_DSR 4U /*!< Programs the DSR of all cards. */ +#define SDMMC_CMD_SDMMC_SEN_OP_COND 5U /*!< Sends host capacity support information (HCS) and asks the accessed card to send its operating condition register (OCR) content in the response on the CMD line.*/ +#define SDMMC_CMD_HS_SWITCH 6U /*!< Checks switchable function (mode 0) and switch card function (mode 1). */ +#define SDMMC_CMD_SEL_DESEL_CARD 7U /*!< Selects the card by its own relative address and gets deselected by any other address */ +#define SDMMC_CMD_HS_SEND_EXT_CSD 8U /*!< Sends SD Memory Card interface condition, which includes host supply voltage information and asks the card whether card supports voltage. */ +#define SDMMC_CMD_SEND_CSD 9U /*!< Addressed card sends its card specific data (CSD) on the CMD line. */ +#define SDMMC_CMD_SEND_CID 10U /*!< Addressed card sends its card identification (CID) on the CMD line. */ +#define SDMMC_CMD_VOLTAGE_SWITCH 11U /*!< SD card Voltage switch to 1.8V mode. */ +#define SDMMC_CMD_STOP_TRANSMISSION 12U /*!< Forces the card to stop transmission. */ +#define SDMMC_CMD_SEND_STATUS 13U /*!< Addressed card sends its status register. */ +#define SDMMC_CMD_HS_BUSTEST_READ 14U /*!< Reserved */ +#define SDMMC_CMD_GO_INACTIVE_STATE 15U /*!< Sends an addressed card into the inactive state. */ +#define SDMMC_CMD_SET_BLOCKLEN 16U /*!< Sets the block length (in bytes for SDSC) for all following block commands (read, write, lock). Default block length is fixed to 512 Bytes. Not effective */ /*!< for SDHS and SDXC. */ -#define SDMMC_CMD_READ_SINGLE_BLOCK ((uint8_t)17U) /*!< Reads single block of size selected by SET_BLOCKLEN in case of SDSC, and a block of fixed 512 bytes in case of SDHC and SDXC. */ -#define SDMMC_CMD_READ_MULT_BLOCK ((uint8_t)18U) /*!< Continuously transfers data blocks from card to host until interrupted by STOP_TRANSMISSION command. */ -#define SDMMC_CMD_HS_BUSTEST_WRITE ((uint8_t)19U) /*!< 64 bytes tuning pattern is sent for SDR50 and SDR104. */ -#define SDMMC_CMD_WRITE_DAT_UNTIL_STOP ((uint8_t)20U) /*!< Speed class control command. */ -#define SDMMC_CMD_SET_BLOCK_COUNT ((uint8_t)23U) /*!< Specify block count for CMD18 and CMD25. */ -#define SDMMC_CMD_WRITE_SINGLE_BLOCK ((uint8_t)24U) /*!< Writes single block of size selected by SET_BLOCKLEN in case of SDSC, and a block of fixed 512 bytes in case of SDHC and SDXC. */ -#define SDMMC_CMD_WRITE_MULT_BLOCK ((uint8_t)25U) /*!< Continuously writes blocks of data until a STOP_TRANSMISSION follows. */ -#define SDMMC_CMD_PROG_CID ((uint8_t)26U) /*!< Reserved for manufacturers. */ -#define SDMMC_CMD_PROG_CSD ((uint8_t)27U) /*!< Programming of the programmable bits of the CSD. */ -#define SDMMC_CMD_SET_WRITE_PROT ((uint8_t)28U) /*!< Sets the write protection bit of the addressed group. */ -#define SDMMC_CMD_CLR_WRITE_PROT ((uint8_t)29U) /*!< Clears the write protection bit of the addressed group. */ -#define SDMMC_CMD_SEND_WRITE_PROT ((uint8_t)30U) /*!< Asks the card to send the status of the write protection bits. */ -#define SDMMC_CMD_SD_ERASE_GRP_START ((uint8_t)32U) /*!< Sets the address of the first write block to be erased. (For SD card only). */ -#define SDMMC_CMD_SD_ERASE_GRP_END ((uint8_t)33U) /*!< Sets the address of the last write block of the continuous range to be erased. */ -#define SDMMC_CMD_ERASE_GRP_START ((uint8_t)35U) /*!< Sets the address of the first write block to be erased. Reserved for each command system set by switch function command (CMD6). */ -#define SDMMC_CMD_ERASE_GRP_END ((uint8_t)36U) /*!< Sets the address of the last write block of the continuous range to be erased. Reserved for each command system set by switch function command (CMD6). */ -#define SDMMC_CMD_ERASE ((uint8_t)38U) /*!< Reserved for SD security applications. */ -#define SDMMC_CMD_FAST_IO ((uint8_t)39U) /*!< SD card doesn't support it (Reserved). */ -#define SDMMC_CMD_GO_IRQ_STATE ((uint8_t)40U) /*!< SD card doesn't support it (Reserved). */ -#define SDMMC_CMD_LOCK_UNLOCK ((uint8_t)42U) /*!< Sets/resets the password or lock/unlock the card. The size of the data block is set by the SET_BLOCK_LEN command. */ -#define SDMMC_CMD_APP_CMD ((uint8_t)55U) /*!< Indicates to the card that the next command is an application specific command rather than a standard command. */ -#define SDMMC_CMD_GEN_CMD ((uint8_t)56U) /*!< Used either to transfer a data block to the card or to get a data block from the card for general purpose/application specific commands. */ -#define SDMMC_CMD_NO_CMD ((uint8_t)64U) /*!< No command */ +#define SDMMC_CMD_READ_SINGLE_BLOCK 17U /*!< Reads single block of size selected by SET_BLOCKLEN in case of SDSC, and a block of fixed 512 bytes in case of SDHC and SDXC. */ +#define SDMMC_CMD_READ_MULT_BLOCK 18U /*!< Continuously transfers data blocks from card to host until interrupted by STOP_TRANSMISSION command. */ +#define SDMMC_CMD_HS_BUSTEST_WRITE 19U /*!< 64 bytes tuning pattern is sent for SDR50 and SDR104. */ +#define SDMMC_CMD_WRITE_DAT_UNTIL_STOP 20U /*!< Speed class control command. */ +#define SDMMC_CMD_SET_BLOCK_COUNT 23U /*!< Specify block count for CMD18 and CMD25. */ +#define SDMMC_CMD_WRITE_SINGLE_BLOCK 24U /*!< Writes single block of size selected by SET_BLOCKLEN in case of SDSC, and a block of fixed 512 bytes in case of SDHC and SDXC. */ +#define SDMMC_CMD_WRITE_MULT_BLOCK 25U /*!< Continuously writes blocks of data until a STOP_TRANSMISSION follows. */ +#define SDMMC_CMD_PROG_CID 26U /*!< Reserved for manufacturers. */ +#define SDMMC_CMD_PROG_CSD 27U /*!< Programming of the programmable bits of the CSD. */ +#define SDMMC_CMD_SET_WRITE_PROT 28U /*!< Sets the write protection bit of the addressed group. */ +#define SDMMC_CMD_CLR_WRITE_PROT 29U /*!< Clears the write protection bit of the addressed group. */ +#define SDMMC_CMD_SEND_WRITE_PROT 30U /*!< Asks the card to send the status of the write protection bits. */ +#define SDMMC_CMD_SD_ERASE_GRP_START 32U /*!< Sets the address of the first write block to be erased. (For SD card only). */ +#define SDMMC_CMD_SD_ERASE_GRP_END 33U /*!< Sets the address of the last write block of the continuous range to be erased. */ +#define SDMMC_CMD_ERASE_GRP_START 35U /*!< Sets the address of the first write block to be erased. Reserved for each command system set by switch function command (CMD6). */ +#define SDMMC_CMD_ERASE_GRP_END 36U /*!< Sets the address of the last write block of the continuous range to be erased. Reserved for each command system set by switch function command (CMD6). */ +#define SDMMC_CMD_ERASE 38U /*!< Reserved for SD security applications. */ +#define SDMMC_CMD_FAST_IO 39U /*!< SD card doesn't support it (Reserved). */ +#define SDMMC_CMD_GO_IRQ_STATE 40U /*!< SD card doesn't support it (Reserved). */ +#define SDMMC_CMD_LOCK_UNLOCK 42U /*!< Sets/resets the password or lock/unlock the card. The size of the data block is set by the SET_BLOCK_LEN command. */ +#define SDMMC_CMD_APP_CMD 55U /*!< Indicates to the card that the next command is an application specific command rather than a standard command. */ +#define SDMMC_CMD_GEN_CMD 56U /*!< Used either to transfer a data block to the card or to get a data block from the card for general purpose/application specific commands. */ +#define SDMMC_CMD_NO_CMD 64U /*!< No command */ /** * @brief Following commands are SD Card Specific commands. * SDMMC_APP_CMD should be sent before sending these commands. */ -#define SDMMC_CMD_APP_SD_SET_BUSWIDTH ((uint8_t)6U) /*!< (ACMD6) Defines the data bus width to be used for data transfer. The allowed data bus widths are given in SCR register. */ -#define SDMMC_CMD_SD_APP_STATUS ((uint8_t)13U) /*!< (ACMD13) Sends the SD status. */ -#define SDMMC_CMD_SD_APP_SEND_NUM_WRITE_BLOCKS ((uint8_t)22U) /*!< (ACMD22) Sends the number of the written (without errors) write blocks. Responds with 32bit+CRC data block. */ -#define SDMMC_CMD_SD_APP_OP_COND ((uint8_t)41U) /*!< (ACMD41) Sends host capacity support information (HCS) and asks the accessed card to send its operating condition register (OCR) content in the response on the CMD line. */ -#define SDMMC_CMD_SD_APP_SET_CLR_CARD_DETECT ((uint8_t)42U) /*!< (ACMD42) Connect/Disconnect the 50 KOhm pull-up resistor on CD/DAT3 (pin 1) of the card */ -#define SDMMC_CMD_SD_APP_SEND_SCR ((uint8_t)51U) /*!< Reads the SD Configuration Register (SCR). */ -#define SDMMC_CMD_SDMMC_RW_DIRECT ((uint8_t)52U) /*!< For SD I/O card only, reserved for security specification. */ -#define SDMMC_CMD_SDMMC_RW_EXTENDED ((uint8_t)53U) /*!< For SD I/O card only, reserved for security specification. */ +#define SDMMC_CMD_APP_SD_SET_BUSWIDTH 6U /*!< (ACMD6) Defines the data bus width to be used for data transfer. The allowed data bus widths are given in SCR register. */ +#define SDMMC_CMD_SD_APP_STATUS 13U /*!< (ACMD13) Sends the SD status. */ +#define SDMMC_CMD_SD_APP_SEND_NUM_WRITE_BLOCKS 22U /*!< (ACMD22) Sends the number of the written (without errors) write blocks. Responds with 32bit+CRC data block. */ +#define SDMMC_CMD_SD_APP_OP_COND 41U /*!< (ACMD41) Sends host capacity support information (HCS) and asks the accessed card to send its operating condition register (OCR) content in the response on the CMD line. */ +#define SDMMC_CMD_SD_APP_SET_CLR_CARD_DETECT 42U /*!< (ACMD42) Connect/Disconnect the 50 KOhm pull-up resistor on CD/DAT3 (pin 1) of the card */ +#define SDMMC_CMD_SD_APP_SEND_SCR 51U /*!< Reads the SD Configuration Register (SCR). */ +#define SDMMC_CMD_SDMMC_RW_DIRECT 52U /*!< For SD I/O card only, reserved for security specification. */ +#define SDMMC_CMD_SDMMC_RW_EXTENDED 53U /*!< For SD I/O card only, reserved for security specification. */ /** * @brief Following commands are MMC Specific commands. */ -#define SDMMC_CMD_MMC_SLEEP_AWAKE ((uint8_t)5U) /*!< Toggle the device between Sleep state and Standby state. */ +#define SDMMC_CMD_MMC_SLEEP_AWAKE 5U /*!< Toggle the device between Sleep state and Standby state. */ /** * @brief Following commands are SD Card Specific security commands. * SDMMC_CMD_APP_CMD should be sent before sending these commands. */ -#define SDMMC_CMD_SD_APP_GET_MKB ((uint8_t)43U) -#define SDMMC_CMD_SD_APP_GET_MID ((uint8_t)44U) -#define SDMMC_CMD_SD_APP_SET_CER_RN1 ((uint8_t)45U) -#define SDMMC_CMD_SD_APP_GET_CER_RN2 ((uint8_t)46U) -#define SDMMC_CMD_SD_APP_SET_CER_RES2 ((uint8_t)47U) -#define SDMMC_CMD_SD_APP_GET_CER_RES1 ((uint8_t)48U) -#define SDMMC_CMD_SD_APP_SECURE_READ_MULTIPLE_BLOCK ((uint8_t)18U) -#define SDMMC_CMD_SD_APP_SECURE_WRITE_MULTIPLE_BLOCK ((uint8_t)25U) -#define SDMMC_CMD_SD_APP_SECURE_ERASE ((uint8_t)38U) -#define SDMMC_CMD_SD_APP_CHANGE_SECURE_AREA ((uint8_t)49U) -#define SDMMC_CMD_SD_APP_SECURE_WRITE_MKB ((uint8_t)48U) +#define SDMMC_CMD_SD_APP_GET_MKB 43U +#define SDMMC_CMD_SD_APP_GET_MID 44U +#define SDMMC_CMD_SD_APP_SET_CER_RN1 45U +#define SDMMC_CMD_SD_APP_GET_CER_RN2 46U +#define SDMMC_CMD_SD_APP_SET_CER_RES2 47U +#define SDMMC_CMD_SD_APP_GET_CER_RES1 48U +#define SDMMC_CMD_SD_APP_SECURE_READ_MULTIPLE_BLOCK 18U +#define SDMMC_CMD_SD_APP_SECURE_WRITE_MULTIPLE_BLOCK 25U +#define SDMMC_CMD_SD_APP_SECURE_ERASE 38U +#define SDMMC_CMD_SD_APP_CHANGE_SECURE_AREA 49U +#define SDMMC_CMD_SD_APP_SECURE_WRITE_MKB 48U /** * @brief Masks for errors Card Status R1 (OCR Register) @@ -291,9 +335,14 @@ typedef struct #define SDMMC_SINGLE_BUS_SUPPORT ((uint32_t)0x00010000U) #define SDMMC_CARD_LOCKED ((uint32_t)0x02000000U) -#ifndef SDMMC_DATATIMEOUT +#ifndef SDMMC_DATATIMEOUT /*Hardware Data Timeout (cycles) */ #define SDMMC_DATATIMEOUT ((uint32_t)0xFFFFFFFFU) #endif /* SDMMC_DATATIMEOUT */ + +#ifndef SDMMC_SWDATATIMEOUT /*Software Data Timeout (ms) */ +#define SDMMC_SWDATATIMEOUT ((uint32_t)0xFFFFFFFFU) +#endif /* SDMMC_SWDATATIMEOUT */ + #define SDMMC_0TO7BITS ((uint32_t)0x000000FFU) #define SDMMC_8TO15BITS ((uint32_t)0x0000FF00U) #define SDMMC_16TO23BITS ((uint32_t)0x00FF0000U) @@ -303,6 +352,8 @@ typedef struct #define SDMMC_HALFFIFO ((uint32_t)0x00000008U) #define SDMMC_HALFFIFOBYTES ((uint32_t)0x00000020U) +/* SDMMC FIFO Size */ +#define SDMMC_FIFO_SIZE 32U /** * @brief Command Class supported */ @@ -543,9 +594,11 @@ typedef struct * @{ */ #define SDMMC_TRANSFER_MODE_BLOCK ((uint32_t)0x00000000U) +#define SDMMC_TRANSFER_MODE_SDIO SDMMC_DCTRL_DTMODE_0 #define SDMMC_TRANSFER_MODE_STREAM SDMMC_DCTRL_DTMODE_1 #define IS_SDMMC_TRANSFER_MODE(MODE) (((MODE) == SDMMC_TRANSFER_MODE_BLOCK) || \ + ((MODE) == SDMMC_TRANSFER_MODE_SDIO) || \ ((MODE) == SDMMC_TRANSFER_MODE_STREAM)) /** * @} @@ -657,6 +710,82 @@ typedef struct * @} */ +/** @defgroup SDMMC_SDIO_CCCR_Registers + * @{ + */ +/*-------------------------------- CCCR0 ----------------------------------*/ +#define SDMMC_SDIO_CCCR0 0x000U /*!< SDIOS Card Common Control Register 0 */ +#define SDMMC_SDIO_CCCR0_SD_BYTE0 0x000U /*!< SDIOS Card Common Control Register 0 Byte 0 */ +#define SDMMC_SDIO_CCCR0_SD_BYTE1 0x001U /*!< SDIOS Card Common Control Register 0 Byte 1 */ +#define SDMMC_SDIO_CCCR0_SD_BYTE2 0x002U /*!< SDIOS Card Common Control Register 0 Byte 2 */ +#define SDMMC_SDIO_CCCR0_SD_BYTE3 0x003U /*!< SDIOS Card Common Control Register 0 Byte 3 */ + +/*-------------------------------- CCCR4 ----------------------------------*/ +#define SDMMC_SDIO_CCCR4 0x004U /*!< SDIOS Card Common Control Register 4 */ +#define SDMMC_SDIO_CCCR4_SD_BYTE0 0x004U /*!< SDIOS Card Common Control Register 4 Byte 0 */ +#define SDMMC_SDIO_CCCR4_SD_BYTE1 0x005U /*!< SDIOS Card Common Control Register 4 Byte 1 */ +#define SDMMC_SDIO_CCCR4_SD_BYTE2 0x006U /*!< SDIOS Card Common Control Register 4 Byte 2 */ +#define SDMMC_SDIO_CCCR4_SD_BYTE3 0x007U /*!< SDIOS Card Common Control Register 4 Byte 3 */ + +/*-------------------------------- CCCR8 ----------------------------------*/ +#define SDMMC_SDIO_CCCR8 0x008U /*!< SDIOS Card Common Control Register 8 */ +#define SDMMC_SDIO_CCCR8_SD_BYTE0 0x008U /*!< SDIOS Card Common Control Register 8 Byte 0 */ +#define SDMMC_SDIO_CCCR8_SD_BYTE1 0x009U /*!< SDIOS Card Common Control Register 8 Byte 1 */ +#define SDMMC_SDIO_CCCR8_SD_BYTE2 0x00AU /*!< SDIOS Card Common Control Register 8 Byte 2 */ +#define SDMMC_SDIO_CCCR8_SD_BYTE3 0x00BU /*!< SDIOS Card Common Control Register 8 Byte 3 */ + +/*-------------------------------- CCCR12 ---------------------------------*/ +#define SDMMC_SDIO_CCCR12 0x00CU /*!< SDIOS Card Common Control Register 12 */ +#define SDMMC_SDIO_CCCR12_SD_BYTE0 0x00CU /*!< SDIOS Card Common Control Register 12 Byte 0 */ +#define SDMMC_SDIO_CCCR12_SD_BYTE1 0x00DU /*!< SDIOS Card Common Control Register 12 Byte 1 */ +#define SDMMC_SDIO_CCCR12_SD_BYTE2 0x00EU /*!< SDIOS Card Common Control Register 12 Byte 2 */ +#define SDMMC_SDIO_CCCR12_SD_BYTE3 0x00FU /*!< SDIOS Card Common Control Register 12 Byte 3 */ + +/*-------------------------------- CCCR16 ---------------------------------*/ +#define SDMMC_SDIO_CCCR16 0x010U /*!< SDIOS Card Common Control Register 16 */ +#define SDMMC_SDIO_CCCR16_SD_BYTE0 0x010U /*!< SDIOS Card Common Control Register 16 Byte 0 */ +#define SDMMC_SDIO_CCCR16_SD_BYTE1 0x011U /*!< SDIOS Card Common Control Register 16 Byte 1 */ +#define SDMMC_SDIO_CCCR16_SD_BYTE2 0x012U /*!< SDIOS Card Common Control Register 16 Byte 2 */ +#define SDMMC_SDIO_CCCR16_SD_BYTE3 0x013U /*!< SDIOS Card Common Control Register 16 Byte 3 */ + +/*-------------------------------- CCCR20 ---------------------------------*/ +#define SDMMC_SDIO_CCCR20 0x014U /*!< SDIOS Card Common Control Register 20 */ +#define SDMMC_SDIO_CCCR20_SD_BYTE0 0x014U /*!< SDIOS Card Common Control Register 20 Byte 0 */ +#define SDMMC_SDIO_CCCR20_SD_BYTE1 0x015U /*!< SDIOS Card Common Control Register 20 Byte 1 */ +#define SDMMC_SDIO_CCCR20_SD_BYTE2 0x016U /*!< SDIOS Card Common Control Register 20 Byte 2 */ +#define SDMMC_SDIO_CCCR20_SD_BYTE3 0x017U /*!< SDIOS Card Common Control Register 20 Byte 3 */ + +/*-------------------------------- F1BR0 ----------------------------------*/ +#define SDMMC_SDIO_F1BR0 0x100U /*!< SDIOS Function 1 Basic Register 0 */ +#define SDMMC_SDIO_F1BR0_SD_BYTE0 0x100U /*!< SDIOS Function 1 Basic Register 0 Byte 0 */ +#define SDMMC_SDIO_F1BR0_SD_BYTE1 0x101U /*!< SDIOS Function 1 Basic Register 0 Byte 1 */ +#define SDMMC_SDIO_F1BR0_SD_BYTE2 0x102U /*!< SDIOS Function 1 Basic Register 0 Byte 2 */ +#define SDMMC_SDIO_F1BR0_SD_BYTE3 0x103U /*!< SDIOS Function 1 Basic Register 0 Byte 3 */ + +/*-------------------------------- F1BR8 ----------------------------------*/ +#define SDMMC_SDIO_F1BR8 0x108U /*!< SDIOS Function 1 Basic Register 8 */ +#define SDMMC_SDIO_F1BR8_SD_BYTE0 0x108U /*!< SDIOS Function 1 Basic Register 8 Byte 0 */ +#define SDMMC_SDIO_F1BR8_SD_BYTE1 0x109U /*!< SDIOS Function 1 Basic Register 8 Byte 1 */ +#define SDMMC_SDIO_F1BR8_SD_BYTE2 0x10AU /*!< SDIOS Function 1 Basic Register 8 Byte 2 */ +#define SDMMC_SDIO_F1BR8_SD_BYTE3 0x10BU /*!< SDIOS Function 1 Basic Register 8 Byte 3 */ + +/*-------------------------------- F1BR12 ---------------------------------*/ +#define SDMMC_SDIO_F1BR12 0x10CU /*!< SDIOS Function 1 Basic Register 12 */ +#define SDMMC_SDIO_F1BR12_SD_BYTE0 0x10CU /*!< SDIOS Function 1 Basic Register 12 Byte 0 */ +#define SDMMC_SDIO_F1BR12_SD_BYTE1 0x10DU /*!< SDIOS Function 1 Basic Register 12 Byte 1 */ +#define SDMMC_SDIO_F1BR12_SD_BYTE2 0x10EU /*!< SDIOS Function 1 Basic Register 12 Byte 2 */ +#define SDMMC_SDIO_F1BR12_SD_BYTE3 0x10FU /*!< SDIOS Function 1 Basic Register 12 Byte 3 */ + +/*-------------------------------- F1BR16 ---------------------------------*/ +#define SDMMC_SDIO_F1BR16 0x110U /*!< SDIOS Function 1 Basic Register 16 */ +#define SDMMC_SDIO_F1BR16_SD_BYTE0 0x110U /*!< SDIOS Function 1 Basic Register 16 Byte 0 */ +#define SDMMC_SDIO_F1BR16_SD_BYTE1 0x111U /*!< SDIOS Function 1 Basic Register 16 Byte 1 */ +#define SDMMC_SDIO_F1BR16_SD_BYTE2 0x112U /*!< SDIOS Function 1 Basic Register 16 Byte 2 */ +#define SDMMC_SDIO_F1BR16_SD_BYTE3 0x113U /*!< SDIOS Function 1 Basic Register 16 Byte 3 */ +/** + * @} + */ + /** * @} */ @@ -871,6 +1000,38 @@ typedef struct */ #define __SDMMC_GET_IT(__INSTANCE__, __INTERRUPT__) (((__INSTANCE__)->STA &(__INTERRUPT__)) == (__INTERRUPT__)) +/** + * @brief Checks the source of specified interrupt. + * @param __INSTANCE__ Pointer to SDMMC register base + * @param __INTERRUPT__ specifies the SDMMC interrupt source to check. + * This parameter can be one of the following values: + * @arg SDMMC_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDMMC_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDMMC_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDMMC_IT_DTIMEOUT: Data timeout interrupt + * @arg SDMMC_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDMMC_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDMMC_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDMMC_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDMMC_IT_DATAEND: Data end (data counter, DATACOUNT, is zero) interrupt + * @arg SDMMC_IT_DHOLD: Data transfer Hold interrupt + * @arg SDMMC_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt + * @arg SDMMC_IT_DABORT: Data transfer aborted by CMD12 interrupt + * @arg SDMMC_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt + * @arg SDMMC_IT_RXFIFOHF: Receive FIFO Half Full interrupt + * @arg SDMMC_IT_RXFIFOF: Receive FIFO full interrupt + * @arg SDMMC_IT_TXFIFOE: Transmit FIFO empty interrupt + * @arg SDMMC_IT_BUSYD0END: End of SDMMC_D0 Busy following a CMD response detected interrupt + * @arg SDMMC_IT_SDIOIT: SDIO interrupt received interrupt + * @arg SDMMC_IT_ACKFAIL: Boot Acknowledgment received interrupt + * @arg SDMMC_IT_ACKTIMEOUT: Boot Acknowledgment timeout interrupt + * @arg SDMMC_IT_VSWEND: Voltage switch critical timing section completion interrupt + * @arg SDMMC_IT_CKSTOP: SDMMC_CK stopped in Voltage switch procedure interrupt + * @arg SDMMC_IT_IDMABTC: IDMA buffer transfer complete interrupt + * @retval The new state of SDMMC_IT (SET or RESET). + */ +#define __SDMMC_GET_IT_SOURCE(__INSTANCE__, __INTERRUPT__) (((__HANDLE__)->Instance->STA & (__INTERRUPT__))) + /** * @brief Clears the SDMMC's interrupt pending bits. * @param __INSTANCE__ Pointer to SDMMC register base @@ -1009,7 +1170,7 @@ HAL_StatusTypeDef SDMMC_Init(SDMMC_TypeDef *SDMMCx, SDMMC_InitTypeDef Init); /** @addtogroup HAL_SDMMC_LL_Group2 * @{ */ -uint32_t SDMMC_ReadFIFO(SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_ReadFIFO(const SDMMC_TypeDef *SDMMCx); HAL_StatusTypeDef SDMMC_WriteFIFO(SDMMC_TypeDef *SDMMCx, uint32_t *pWriteData); /** * @} @@ -1022,17 +1183,17 @@ HAL_StatusTypeDef SDMMC_WriteFIFO(SDMMC_TypeDef *SDMMCx, uint32_t *pWriteData); HAL_StatusTypeDef SDMMC_PowerState_ON(SDMMC_TypeDef *SDMMCx); HAL_StatusTypeDef SDMMC_PowerState_Cycle(SDMMC_TypeDef *SDMMCx); HAL_StatusTypeDef SDMMC_PowerState_OFF(SDMMC_TypeDef *SDMMCx); -uint32_t SDMMC_GetPowerState(SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_GetPowerState(const SDMMC_TypeDef *SDMMCx); /* Command path state machine (CPSM) management functions */ -HAL_StatusTypeDef SDMMC_SendCommand(SDMMC_TypeDef *SDMMCx, SDMMC_CmdInitTypeDef *Command); -uint8_t SDMMC_GetCommandResponse(SDMMC_TypeDef *SDMMCx); -uint32_t SDMMC_GetResponse(SDMMC_TypeDef *SDMMCx, uint32_t Response); +HAL_StatusTypeDef SDMMC_SendCommand(SDMMC_TypeDef *SDMMCx, const SDMMC_CmdInitTypeDef *Command); +uint8_t SDMMC_GetCommandResponse(const SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_GetResponse(const SDMMC_TypeDef *SDMMCx, uint32_t Response); /* Data path state machine (DPSM) management functions */ -HAL_StatusTypeDef SDMMC_ConfigData(SDMMC_TypeDef *SDMMCx, SDMMC_DataInitTypeDef *Data); -uint32_t SDMMC_GetDataCounter(SDMMC_TypeDef *SDMMCx); -uint32_t SDMMC_GetFIFOCount(SDMMC_TypeDef *SDMMCx); +HAL_StatusTypeDef SDMMC_ConfigData(SDMMC_TypeDef *SDMMCx, const SDMMC_DataInitTypeDef *Data); +uint32_t SDMMC_GetDataCounter(const SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_GetFIFOCount(const SDMMC_TypeDef *SDMMCx); /* SDMMC Cards mode management functions */ HAL_StatusTypeDef SDMMC_SetSDMMCReadWaitMode(SDMMC_TypeDef *SDMMCx, uint32_t SDMMC_ReadWaitMode); @@ -1073,6 +1234,10 @@ uint32_t SDMMC_CmdVoltageSwitch(SDMMC_TypeDef *SDMMCx); uint32_t SDMMC_CmdOpCondition(SDMMC_TypeDef *SDMMCx, uint32_t Argument); uint32_t SDMMC_CmdSwitch(SDMMC_TypeDef *SDMMCx, uint32_t Argument); uint32_t SDMMC_CmdSendEXTCSD(SDMMC_TypeDef *SDMMCx, uint32_t Argument); +uint32_t SDMMC_CmdBlockCount(SDMMC_TypeDef *SDMMCx, uint32_t BlockCount); +uint32_t SDMMC_SDIO_CmdReadWriteDirect(SDMMC_TypeDef *SDMMCx, uint32_t Argument, uint8_t *pResponse); +uint32_t SDMMC_SDIO_CmdReadWriteExtended(SDMMC_TypeDef *SDMMCx, uint32_t Argument); +uint32_t SDMMC_CmdSendOperationcondition(SDMMC_TypeDef *SDMMCx, uint32_t Argument, uint32_t *pResp); /** * @} */ @@ -1084,6 +1249,8 @@ uint32_t SDMMC_CmdSendEXTCSD(SDMMC_TypeDef *SDMMCx, uint32_t Argument); uint32_t SDMMC_GetCmdResp1(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint32_t Timeout); uint32_t SDMMC_GetCmdResp2(SDMMC_TypeDef *SDMMCx); uint32_t SDMMC_GetCmdResp3(SDMMC_TypeDef *SDMMCx); +uint32_t SDMMC_GetCmdResp4(SDMMC_TypeDef *SDMMCx, uint32_t *pResp); +uint32_t SDMMC_GetCmdResp5(SDMMC_TypeDef *SDMMCx, uint8_t SDIO_CMD, uint8_t *pData); uint32_t SDMMC_GetCmdResp6(SDMMC_TypeDef *SDMMCx, uint8_t SD_CMD, uint16_t *pRCA); uint32_t SDMMC_GetCmdResp7(SDMMC_TypeDef *SDMMCx); /** @@ -1106,7 +1273,7 @@ uint32_t SDMMC_GetCmdResp7(SDMMC_TypeDef *SDMMCx); /** * @} */ - +#endif /* SDMMC1 || SDMMC2 */ /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_swpmi.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_swpmi.h index c2b31d60..06568c7b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_swpmi.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_swpmi.h @@ -63,24 +63,30 @@ typedef struct uint32_t VoltageClass; /*!< Specifies the SWP Voltage Class. This parameter can be a value of @ref SWPMI_LL_EC_VOLTAGE_CLASS - This feature can be modified afterwards using unitary function @ref LL_SWPMI_SetVoltageClass. */ + This feature can be modified afterwards using unitary + function @ref LL_SWPMI_SetVoltageClass. */ uint32_t BitRatePrescaler; /*!< Specifies the SWPMI bitrate prescaler. - This parameter must be a number between Min_Data=0 and Max_Data=255U. + This parameter must be a number between Min_Data=0 + and Max_Data=255U. - The value can be calculated thanks to helper macro @ref __LL_SWPMI_CALC_BITRATE_PRESCALER + The value can be calculated thanks to helper + macro @ref __LL_SWPMI_CALC_BITRATE_PRESCALER - This feature can be modified afterwards using unitary function @ref LL_SWPMI_SetBitRatePrescaler. */ + This feature can be modified afterwards using unitary + function @ref LL_SWPMI_SetBitRatePrescaler. */ uint32_t TxBufferingMode; /*!< Specifies the transmission buffering mode. This parameter can be a value of @ref SWPMI_LL_EC_SW_BUFFER_TX - This feature can be modified afterwards using unitary function @ref LL_SWPMI_SetTransmissionMode. */ + This feature can be modified afterwards using + unitary function @ref LL_SWPMI_SetTransmissionMode. */ uint32_t RxBufferingMode; /*!< Specifies the reception buffering mode. This parameter can be a value of @ref SWPMI_LL_EC_SW_BUFFER_RX - This feature can be modified afterwards using unitary function @ref LL_SWPMI_SetReceptionMode. */ + This feature can be modified afterwards using + unitary function @ref LL_SWPMI_SetReceptionMode. */ } LL_SWPMI_InitTypeDef; /** @@ -266,7 +272,7 @@ __STATIC_INLINE void LL_SWPMI_SetReceptionMode(SWPMI_TypeDef *SWPMIx, uint32_t R * @arg @ref LL_SWPMI_SW_BUFFER_RX_SINGLE * @arg @ref LL_SWPMI_SW_BUFFER_RX_MULTI */ -__STATIC_INLINE uint32_t LL_SWPMI_GetReceptionMode(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_GetReceptionMode(const SWPMI_TypeDef *SWPMIx) { return (uint32_t)(READ_BIT(SWPMIx->CR, SWPMI_CR_RXMODE)); } @@ -294,7 +300,7 @@ __STATIC_INLINE void LL_SWPMI_SetTransmissionMode(SWPMI_TypeDef *SWPMIx, uint32_ * @arg @ref LL_SWPMI_SW_BUFFER_TX_SINGLE * @arg @ref LL_SWPMI_SW_BUFFER_TX_MULTI */ -__STATIC_INLINE uint32_t LL_SWPMI_GetTransmissionMode(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_GetTransmissionMode(const SWPMI_TypeDef *SWPMIx) { return (uint32_t)(READ_BIT(SWPMIx->CR, SWPMI_CR_TXMODE)); } @@ -351,7 +357,7 @@ __STATIC_INLINE void LL_SWPMI_DisableTransceiver(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledTransceiver(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledTransceiver(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->CR, SWPMI_CR_SWPEN) == (SWPMI_CR_SWPEN)) ? 1UL : 0UL); } @@ -381,7 +387,7 @@ __STATIC_INLINE void LL_SWPMI_Activate(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsActivated(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsActivated(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->CR, SWPMI_CR_SWPACT) == (SWPMI_CR_SWPACT)) ? 1UL : 0UL); } @@ -428,7 +434,7 @@ __STATIC_INLINE void LL_SWPMI_SetBitRatePrescaler(SWPMI_TypeDef *SWPMIx, uint32_ * @param SWPMIx SWPMI Instance * @retval A number between Min_Data=0 and Max_Data=255U */ -__STATIC_INLINE uint32_t LL_SWPMI_GetBitRatePrescaler(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_GetBitRatePrescaler(const SWPMI_TypeDef *SWPMIx) { return (uint32_t)(READ_BIT(SWPMIx->BRR, SWPMI_BRR_BR)); } @@ -455,7 +461,7 @@ __STATIC_INLINE void LL_SWPMI_SetVoltageClass(SWPMI_TypeDef *SWPMIx, uint32_t Vo * @arg @ref LL_SWPMI_VOLTAGE_CLASS_C * @arg @ref LL_SWPMI_VOLTAGE_CLASS_B */ -__STATIC_INLINE uint32_t LL_SWPMI_GetVoltageClass(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_GetVoltageClass(const SWPMI_TypeDef *SWPMIx) { return (uint32_t)(READ_BIT(SWPMIx->OR, SWPMI_OR_CLASS)); } @@ -474,7 +480,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_GetVoltageClass(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_RXBF(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_RXBF(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->ISR, SWPMI_ISR_RXBFF) == (SWPMI_ISR_RXBFF)) ? 1UL : 0UL); } @@ -485,7 +491,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_RXBF(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_TXBE(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_TXBE(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->ISR, SWPMI_ISR_TXBEF) == (SWPMI_ISR_TXBEF)) ? 1UL : 0UL); } @@ -496,7 +502,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_TXBE(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_RXBER(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_RXBER(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->ISR, SWPMI_ISR_RXBERF) == (SWPMI_ISR_RXBERF)) ? 1UL : 0UL); } @@ -507,7 +513,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_RXBER(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_RXOVR(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_RXOVR(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->ISR, SWPMI_ISR_RXOVRF) == (SWPMI_ISR_RXOVRF)) ? 1UL : 0UL); } @@ -518,7 +524,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_RXOVR(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_TXUNR(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_TXUNR(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->ISR, SWPMI_ISR_TXUNRF) == (SWPMI_ISR_TXUNRF)) ? 1UL : 0UL); } @@ -530,7 +536,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_TXUNR(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_RXNE(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_RXNE(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->ISR, SWPMI_ISR_RXNE) == (SWPMI_ISR_RXNE)) ? 1UL : 0UL); } @@ -542,7 +548,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_RXNE(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_TXE(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_TXE(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->ISR, SWPMI_ISR_TXE) == (SWPMI_ISR_TXE)) ? 1UL : 0UL); } @@ -554,7 +560,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_TXE(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_TC(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_TC(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->ISR, SWPMI_ISR_TCF) == (SWPMI_ISR_TCF)) ? 1UL : 0UL); } @@ -566,7 +572,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_TC(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_SR(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_SR(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->ISR, SWPMI_ISR_SRF) == (SWPMI_ISR_SRF)) ? 1UL : 0UL); } @@ -577,7 +583,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_SR(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_SUSP(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_SUSP(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->ISR, SWPMI_ISR_SUSP) == (SWPMI_ISR_SUSP)) ? 1UL : 0UL); } @@ -588,7 +594,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_SUSP(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_DEACT(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_DEACT(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->ISR, SWPMI_ISR_DEACTF) == (SWPMI_ISR_DEACTF)) ? 1UL : 0UL); } @@ -599,7 +605,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_DEACT(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_RDYF(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsActiveFlag_RDYF(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->ISR, SWPMI_ISR_RDYF) == (SWPMI_ISR_RDYF)) ? 1UL : 0UL); } @@ -926,7 +932,7 @@ __STATIC_INLINE void LL_SWPMI_DisableIT_RXBF(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_RDY(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_RDY(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->IER, SWPMI_IER_RDYIE) == (SWPMI_IER_RDYIE)) ? 1UL : 0UL); } @@ -937,7 +943,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_RDY(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_SR(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_SR(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->IER, SWPMI_IER_SRIE) == (SWPMI_IER_SRIE)) ? 1UL : 0UL); } @@ -948,7 +954,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_SR(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_TC(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_TC(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->IER, SWPMI_IER_TCIE) == (SWPMI_IER_TCIE)) ? 1UL : 0UL); } @@ -959,7 +965,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_TC(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_TX(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_TX(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->IER, SWPMI_IER_TIE) == (SWPMI_IER_TIE)) ? 1UL : 0UL); } @@ -970,7 +976,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_TX(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_RX(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_RX(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->IER, SWPMI_IER_RIE) == (SWPMI_IER_RIE)) ? 1UL : 0UL); } @@ -981,7 +987,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_RX(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_TXUNR(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_TXUNR(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->IER, SWPMI_IER_TXUNRIE) == (SWPMI_IER_TXUNRIE)) ? 1UL : 0UL); } @@ -992,7 +998,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_TXUNR(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_RXOVR(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_RXOVR(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->IER, SWPMI_IER_RXOVRIE) == (SWPMI_IER_RXOVRIE)) ? 1UL : 0UL); } @@ -1003,7 +1009,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_RXOVR(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_RXBER(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_RXBER(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->IER, SWPMI_IER_RXBERIE) == (SWPMI_IER_RXBERIE)) ? 1UL : 0UL); } @@ -1014,7 +1020,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_RXBER(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_TXBE(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_TXBE(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->IER, SWPMI_IER_TXBEIE) == (SWPMI_IER_TXBEIE)) ? 1UL : 0UL); } @@ -1025,7 +1031,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_TXBE(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_RXBF(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledIT_RXBF(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->IER, SWPMI_IER_RXBFIE) == (SWPMI_IER_RXBFIE)) ? 1UL : 0UL); } @@ -1066,7 +1072,7 @@ __STATIC_INLINE void LL_SWPMI_DisableDMAReq_RX(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledDMAReq_RX(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledDMAReq_RX(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->CR, SWPMI_CR_RXDMA) == (SWPMI_CR_RXDMA)) ? 1UL : 0UL); } @@ -1099,7 +1105,7 @@ __STATIC_INLINE void LL_SWPMI_DisableDMAReq_TX(SWPMI_TypeDef *SWPMIx) * @param SWPMIx SWPMI Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledDMAReq_TX(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_IsEnabledDMAReq_TX(const SWPMI_TypeDef *SWPMIx) { return ((READ_BIT(SWPMIx->CR, SWPMI_CR_TXDMA) == (SWPMI_CR_TXDMA)) ? 1UL : 0UL); } @@ -1114,19 +1120,19 @@ __STATIC_INLINE uint32_t LL_SWPMI_IsEnabledDMAReq_TX(SWPMI_TypeDef *SWPMIx) * @arg @ref LL_SWPMI_DMA_REG_DATA_RECEIVE * @retval Address of data register */ -__STATIC_INLINE uint32_t LL_SWPMI_DMA_GetRegAddr(SWPMI_TypeDef *SWPMIx, uint32_t Direction) +__STATIC_INLINE uint32_t LL_SWPMI_DMA_GetRegAddr(const SWPMI_TypeDef *SWPMIx, uint32_t Direction) { uint32_t data_reg_addr; if (Direction == LL_SWPMI_DMA_REG_DATA_TRANSMIT) { /* return address of TDR register */ - data_reg_addr = (uint32_t)&(SWPMIx->TDR); + data_reg_addr = (uint32_t) &(SWPMIx->TDR); } else { /* return address of RDR register */ - data_reg_addr = (uint32_t)&(SWPMIx->RDR); + data_reg_addr = (uint32_t) &(SWPMIx->RDR); } return data_reg_addr; @@ -1146,7 +1152,7 @@ __STATIC_INLINE uint32_t LL_SWPMI_DMA_GetRegAddr(SWPMI_TypeDef *SWPMIx, uint32_t * @param SWPMIx SWPMI Instance * @retval Value between Min_Data=0x00 and Max_Data=0x1F */ -__STATIC_INLINE uint32_t LL_SWPMI_GetReceiveFrameLength(SWPMI_TypeDef *SWPMIx) +__STATIC_INLINE uint32_t LL_SWPMI_GetReceiveFrameLength(const SWPMI_TypeDef *SWPMIx) { return (uint32_t)(READ_BIT(SWPMIx->RFL, SWPMI_RFL_RFL)); } @@ -1210,8 +1216,8 @@ __STATIC_INLINE void LL_SWPMI_DisableTXBypass(SWPMI_TypeDef *SWPMIx) * @{ */ -ErrorStatus LL_SWPMI_DeInit(SWPMI_TypeDef *SWPMIx); -ErrorStatus LL_SWPMI_Init(SWPMI_TypeDef *SWPMIx, LL_SWPMI_InitTypeDef *SWPMI_InitStruct); +ErrorStatus LL_SWPMI_DeInit(const SWPMI_TypeDef *SWPMIx); +ErrorStatus LL_SWPMI_Init(SWPMI_TypeDef *SWPMIx, const LL_SWPMI_InitTypeDef *SWPMI_InitStruct); void LL_SWPMI_StructInit(LL_SWPMI_InitTypeDef *SWPMI_InitStruct); /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_wwdg.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_wwdg.h index eef033dd..a8625e96 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_wwdg.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/drivers/include/stm32h7xx_ll_wwdg.h @@ -135,7 +135,7 @@ __STATIC_INLINE void LL_WWDG_Enable(WWDG_TypeDef *WWDGx) * @param WWDGx WWDG Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_WWDG_IsEnabled(WWDG_TypeDef *WWDGx) +__STATIC_INLINE uint32_t LL_WWDG_IsEnabled(const WWDG_TypeDef *WWDGx) { return ((READ_BIT(WWDGx->CR, WWDG_CR_WDGA) == (WWDG_CR_WDGA)) ? 1UL : 0UL); } @@ -162,7 +162,7 @@ __STATIC_INLINE void LL_WWDG_SetCounter(WWDG_TypeDef *WWDGx, uint32_t Counter) * @param WWDGx WWDG Instance * @retval 7 bit Watchdog Counter value */ -__STATIC_INLINE uint32_t LL_WWDG_GetCounter(WWDG_TypeDef *WWDGx) +__STATIC_INLINE uint32_t LL_WWDG_GetCounter(const WWDG_TypeDef *WWDGx) { return (READ_BIT(WWDGx->CR, WWDG_CR_T)); } @@ -203,7 +203,7 @@ __STATIC_INLINE void LL_WWDG_SetPrescaler(WWDG_TypeDef *WWDGx, uint32_t Prescale * @arg @ref LL_WWDG_PRESCALER_64 * @arg @ref LL_WWDG_PRESCALER_128 */ -__STATIC_INLINE uint32_t LL_WWDG_GetPrescaler(WWDG_TypeDef *WWDGx) +__STATIC_INLINE uint32_t LL_WWDG_GetPrescaler(const WWDG_TypeDef *WWDGx) { return (READ_BIT(WWDGx->CFR, WWDG_CFR_WDGTB)); } @@ -235,7 +235,7 @@ __STATIC_INLINE void LL_WWDG_SetWindow(WWDG_TypeDef *WWDGx, uint32_t Window) * @param WWDGx WWDG Instance * @retval 7 bit Watchdog Window value */ -__STATIC_INLINE uint32_t LL_WWDG_GetWindow(WWDG_TypeDef *WWDGx) +__STATIC_INLINE uint32_t LL_WWDG_GetWindow(const WWDG_TypeDef *WWDGx) { return (READ_BIT(WWDGx->CFR, WWDG_CFR_W)); } @@ -256,7 +256,7 @@ __STATIC_INLINE uint32_t LL_WWDG_GetWindow(WWDG_TypeDef *WWDGx) * @param WWDGx WWDG Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_WWDG_IsActiveFlag_EWKUP(WWDG_TypeDef *WWDGx) +__STATIC_INLINE uint32_t LL_WWDG_IsActiveFlag_EWKUP(const WWDG_TypeDef *WWDGx) { return ((READ_BIT(WWDGx->SR, WWDG_SR_EWIF) == (WWDG_SR_EWIF)) ? 1UL : 0UL); } @@ -298,7 +298,7 @@ __STATIC_INLINE void LL_WWDG_EnableIT_EWKUP(WWDG_TypeDef *WWDGx) * @param WWDGx WWDG Instance * @retval State of bit (1 or 0). */ -__STATIC_INLINE uint32_t LL_WWDG_IsEnabledIT_EWKUP(WWDG_TypeDef *WWDGx) +__STATIC_INLINE uint32_t LL_WWDG_IsEnabledIT_EWKUP(const WWDG_TypeDef *WWDGx) { return ((READ_BIT(WWDGx->CFR, WWDG_CFR_EWI) == (WWDG_CFR_EWI)) ? 1UL : 0UL); } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h723xx.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h723xx.h index 4c8a9d0d..b139a388 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h723xx.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h723xx.h @@ -11785,101 +11785,198 @@ typedef struct /* */ /******************************************************************************/ /****************** Bits definition for GPIO_MODER register *****************/ -#define GPIO_MODER_MODE0_Pos (0U) -#define GPIO_MODER_MODE0_Msk (0x3UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000003 */ -#define GPIO_MODER_MODE0 GPIO_MODER_MODE0_Msk -#define GPIO_MODER_MODE0_0 (0x1UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000001 */ -#define GPIO_MODER_MODE0_1 (0x2UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000002 */ - -#define GPIO_MODER_MODE1_Pos (2U) -#define GPIO_MODER_MODE1_Msk (0x3UL << GPIO_MODER_MODE1_Pos) /*!< 0x0000000C */ -#define GPIO_MODER_MODE1 GPIO_MODER_MODE1_Msk -#define GPIO_MODER_MODE1_0 (0x1UL << GPIO_MODER_MODE1_Pos) /*!< 0x00000004 */ -#define GPIO_MODER_MODE1_1 (0x2UL << GPIO_MODER_MODE1_Pos) /*!< 0x00000008 */ - -#define GPIO_MODER_MODE2_Pos (4U) -#define GPIO_MODER_MODE2_Msk (0x3UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000030 */ -#define GPIO_MODER_MODE2 GPIO_MODER_MODE2_Msk -#define GPIO_MODER_MODE2_0 (0x1UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000010 */ -#define GPIO_MODER_MODE2_1 (0x2UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000020 */ - -#define GPIO_MODER_MODE3_Pos (6U) -#define GPIO_MODER_MODE3_Msk (0x3UL << GPIO_MODER_MODE3_Pos) /*!< 0x000000C0 */ -#define GPIO_MODER_MODE3 GPIO_MODER_MODE3_Msk -#define GPIO_MODER_MODE3_0 (0x1UL << GPIO_MODER_MODE3_Pos) /*!< 0x00000040 */ -#define GPIO_MODER_MODE3_1 (0x2UL << GPIO_MODER_MODE3_Pos) /*!< 0x00000080 */ - -#define GPIO_MODER_MODE4_Pos (8U) -#define GPIO_MODER_MODE4_Msk (0x3UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000300 */ -#define GPIO_MODER_MODE4 GPIO_MODER_MODE4_Msk -#define GPIO_MODER_MODE4_0 (0x1UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000100 */ -#define GPIO_MODER_MODE4_1 (0x2UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000200 */ - -#define GPIO_MODER_MODE5_Pos (10U) -#define GPIO_MODER_MODE5_Msk (0x3UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000C00 */ -#define GPIO_MODER_MODE5 GPIO_MODER_MODE5_Msk -#define GPIO_MODER_MODE5_0 (0x1UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000400 */ -#define GPIO_MODER_MODE5_1 (0x2UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000800 */ - -#define GPIO_MODER_MODE6_Pos (12U) -#define GPIO_MODER_MODE6_Msk (0x3UL << GPIO_MODER_MODE6_Pos) /*!< 0x00003000 */ -#define GPIO_MODER_MODE6 GPIO_MODER_MODE6_Msk -#define GPIO_MODER_MODE6_0 (0x1UL << GPIO_MODER_MODE6_Pos) /*!< 0x00001000 */ -#define GPIO_MODER_MODE6_1 (0x2UL << GPIO_MODER_MODE6_Pos) /*!< 0x00002000 */ - -#define GPIO_MODER_MODE7_Pos (14U) -#define GPIO_MODER_MODE7_Msk (0x3UL << GPIO_MODER_MODE7_Pos) /*!< 0x0000C000 */ -#define GPIO_MODER_MODE7 GPIO_MODER_MODE7_Msk -#define GPIO_MODER_MODE7_0 (0x1UL << GPIO_MODER_MODE7_Pos) /*!< 0x00004000 */ -#define GPIO_MODER_MODE7_1 (0x2UL << GPIO_MODER_MODE7_Pos) /*!< 0x00008000 */ - -#define GPIO_MODER_MODE8_Pos (16U) -#define GPIO_MODER_MODE8_Msk (0x3UL << GPIO_MODER_MODE8_Pos) /*!< 0x00030000 */ -#define GPIO_MODER_MODE8 GPIO_MODER_MODE8_Msk -#define GPIO_MODER_MODE8_0 (0x1UL << GPIO_MODER_MODE8_Pos) /*!< 0x00010000 */ -#define GPIO_MODER_MODE8_1 (0x2UL << GPIO_MODER_MODE8_Pos) /*!< 0x00020000 */ - -#define GPIO_MODER_MODE9_Pos (18U) -#define GPIO_MODER_MODE9_Msk (0x3UL << GPIO_MODER_MODE9_Pos) /*!< 0x000C0000 */ -#define GPIO_MODER_MODE9 GPIO_MODER_MODE9_Msk -#define GPIO_MODER_MODE9_0 (0x1UL << GPIO_MODER_MODE9_Pos) /*!< 0x00040000 */ -#define GPIO_MODER_MODE9_1 (0x2UL << GPIO_MODER_MODE9_Pos) /*!< 0x00080000 */ - -#define GPIO_MODER_MODE10_Pos (20U) -#define GPIO_MODER_MODE10_Msk (0x3UL << GPIO_MODER_MODE10_Pos) /*!< 0x00300000 */ -#define GPIO_MODER_MODE10 GPIO_MODER_MODE10_Msk -#define GPIO_MODER_MODE10_0 (0x1UL << GPIO_MODER_MODE10_Pos) /*!< 0x00100000 */ -#define GPIO_MODER_MODE10_1 (0x2UL << GPIO_MODER_MODE10_Pos) /*!< 0x00200000 */ - -#define GPIO_MODER_MODE11_Pos (22U) -#define GPIO_MODER_MODE11_Msk (0x3UL << GPIO_MODER_MODE11_Pos) /*!< 0x00C00000 */ -#define GPIO_MODER_MODE11 GPIO_MODER_MODE11_Msk -#define GPIO_MODER_MODE11_0 (0x1UL << GPIO_MODER_MODE11_Pos) /*!< 0x00400000 */ -#define GPIO_MODER_MODE11_1 (0x2UL << GPIO_MODER_MODE11_Pos) /*!< 0x00800000 */ - -#define GPIO_MODER_MODE12_Pos (24U) -#define GPIO_MODER_MODE12_Msk (0x3UL << GPIO_MODER_MODE12_Pos) /*!< 0x03000000 */ -#define GPIO_MODER_MODE12 GPIO_MODER_MODE12_Msk -#define GPIO_MODER_MODE12_0 (0x1UL << GPIO_MODER_MODE12_Pos) /*!< 0x01000000 */ -#define GPIO_MODER_MODE12_1 (0x2UL << GPIO_MODER_MODE12_Pos) /*!< 0x02000000 */ - -#define GPIO_MODER_MODE13_Pos (26U) -#define GPIO_MODER_MODE13_Msk (0x3UL << GPIO_MODER_MODE13_Pos) /*!< 0x0C000000 */ -#define GPIO_MODER_MODE13 GPIO_MODER_MODE13_Msk -#define GPIO_MODER_MODE13_0 (0x1UL << GPIO_MODER_MODE13_Pos) /*!< 0x04000000 */ -#define GPIO_MODER_MODE13_1 (0x2UL << GPIO_MODER_MODE13_Pos) /*!< 0x08000000 */ - -#define GPIO_MODER_MODE14_Pos (28U) -#define GPIO_MODER_MODE14_Msk (0x3UL << GPIO_MODER_MODE14_Pos) /*!< 0x30000000 */ -#define GPIO_MODER_MODE14 GPIO_MODER_MODE14_Msk -#define GPIO_MODER_MODE14_0 (0x1UL << GPIO_MODER_MODE14_Pos) /*!< 0x10000000 */ -#define GPIO_MODER_MODE14_1 (0x2UL << GPIO_MODER_MODE14_Pos) /*!< 0x20000000 */ - -#define GPIO_MODER_MODE15_Pos (30U) -#define GPIO_MODER_MODE15_Msk (0x3UL << GPIO_MODER_MODE15_Pos) /*!< 0xC0000000 */ -#define GPIO_MODER_MODE15 GPIO_MODER_MODE15_Msk -#define GPIO_MODER_MODE15_0 (0x1UL << GPIO_MODER_MODE15_Pos) /*!< 0x40000000 */ -#define GPIO_MODER_MODE15_1 (0x2UL << GPIO_MODER_MODE15_Pos) /*!< 0x80000000 */ +#define GPIO_MODER_MODER0_Pos (0U) +#define GPIO_MODER_MODER0_Msk (0x3UL << GPIO_MODER_MODER0_Pos) /*!< 0x00000003 */ +#define GPIO_MODER_MODER0 GPIO_MODER_MODER0_Msk +#define GPIO_MODER_MODER0_0 (0x1UL << GPIO_MODER_MODER0_Pos) /*!< 0x00000001 */ +#define GPIO_MODER_MODER0_1 (0x2UL << GPIO_MODER_MODER0_Pos) /*!< 0x00000002 */ + +#define GPIO_MODER_MODER1_Pos (2U) +#define GPIO_MODER_MODER1_Msk (0x3UL << GPIO_MODER_MODER1_Pos) /*!< 0x0000000C */ +#define GPIO_MODER_MODER1 GPIO_MODER_MODER1_Msk +#define GPIO_MODER_MODER1_0 (0x1UL << GPIO_MODER_MODER1_Pos) /*!< 0x00000004 */ +#define GPIO_MODER_MODER1_1 (0x2UL << GPIO_MODER_MODER1_Pos) /*!< 0x00000008 */ + +#define GPIO_MODER_MODER2_Pos (4U) +#define GPIO_MODER_MODER2_Msk (0x3UL << GPIO_MODER_MODER2_Pos) /*!< 0x00000030 */ +#define GPIO_MODER_MODER2 GPIO_MODER_MODER2_Msk +#define GPIO_MODER_MODER2_0 (0x1UL << GPIO_MODER_MODER2_Pos) /*!< 0x00000010 */ +#define GPIO_MODER_MODER2_1 (0x2UL << GPIO_MODER_MODER2_Pos) /*!< 0x00000020 */ + +#define GPIO_MODER_MODER3_Pos (6U) +#define GPIO_MODER_MODER3_Msk (0x3UL << GPIO_MODER_MODER3_Pos) /*!< 0x000000C0 */ +#define GPIO_MODER_MODER3 GPIO_MODER_MODER3_Msk +#define GPIO_MODER_MODER3_0 (0x1UL << GPIO_MODER_MODER3_Pos) /*!< 0x00000040 */ +#define GPIO_MODER_MODER3_1 (0x2UL << GPIO_MODER_MODER3_Pos) /*!< 0x00000080 */ + +#define GPIO_MODER_MODER4_Pos (8U) +#define GPIO_MODER_MODER4_Msk (0x3UL << GPIO_MODER_MODER4_Pos) /*!< 0x00000300 */ +#define GPIO_MODER_MODER4 GPIO_MODER_MODER4_Msk +#define GPIO_MODER_MODER4_0 (0x1UL << GPIO_MODER_MODER4_Pos) /*!< 0x00000100 */ +#define GPIO_MODER_MODER4_1 (0x2UL << GPIO_MODER_MODER4_Pos) /*!< 0x00000200 */ + +#define GPIO_MODER_MODER5_Pos (10U) +#define GPIO_MODER_MODER5_Msk (0x3UL << GPIO_MODER_MODER5_Pos) /*!< 0x00000C00 */ +#define GPIO_MODER_MODER5 GPIO_MODER_MODER5_Msk +#define GPIO_MODER_MODER5_0 (0x1UL << GPIO_MODER_MODER5_Pos) /*!< 0x00000400 */ +#define GPIO_MODER_MODER5_1 (0x2UL << GPIO_MODER_MODER5_Pos) /*!< 0x00000800 */ + +#define GPIO_MODER_MODER6_Pos (12U) +#define GPIO_MODER_MODER6_Msk (0x3UL << GPIO_MODER_MODER6_Pos) /*!< 0x00003000 */ +#define GPIO_MODER_MODER6 GPIO_MODER_MODER6_Msk +#define GPIO_MODER_MODER6_0 (0x1UL << GPIO_MODER_MODER6_Pos) /*!< 0x00001000 */ +#define GPIO_MODER_MODER6_1 (0x2UL << GPIO_MODER_MODER6_Pos) /*!< 0x00002000 */ + +#define GPIO_MODER_MODER7_Pos (14U) +#define GPIO_MODER_MODER7_Msk (0x3UL << GPIO_MODER_MODER7_Pos) /*!< 0x0000C000 */ +#define GPIO_MODER_MODER7 GPIO_MODER_MODER7_Msk +#define GPIO_MODER_MODER7_0 (0x1UL << GPIO_MODER_MODER7_Pos) /*!< 0x00004000 */ +#define GPIO_MODER_MODER7_1 (0x2UL << GPIO_MODER_MODER7_Pos) /*!< 0x00008000 */ + +#define GPIO_MODER_MODER8_Pos (16U) +#define GPIO_MODER_MODER8_Msk (0x3UL << GPIO_MODER_MODER8_Pos) /*!< 0x00030000 */ +#define GPIO_MODER_MODER8 GPIO_MODER_MODER8_Msk +#define GPIO_MODER_MODER8_0 (0x1UL << GPIO_MODER_MODER8_Pos) /*!< 0x00010000 */ +#define GPIO_MODER_MODER8_1 (0x2UL << GPIO_MODER_MODER8_Pos) /*!< 0x00020000 */ + +#define GPIO_MODER_MODER9_Pos (18U) +#define GPIO_MODER_MODER9_Msk (0x3UL << GPIO_MODER_MODER9_Pos) /*!< 0x000C0000 */ +#define GPIO_MODER_MODER9 GPIO_MODER_MODER9_Msk +#define GPIO_MODER_MODER9_0 (0x1UL << GPIO_MODER_MODER9_Pos) /*!< 0x00040000 */ +#define GPIO_MODER_MODER9_1 (0x2UL << GPIO_MODER_MODER9_Pos) /*!< 0x00080000 */ + +#define GPIO_MODER_MODER10_Pos (20U) +#define GPIO_MODER_MODER10_Msk (0x3UL << GPIO_MODER_MODER10_Pos) /*!< 0x00300000 */ +#define GPIO_MODER_MODER10 GPIO_MODER_MODER10_Msk +#define GPIO_MODER_MODER10_0 (0x1UL << GPIO_MODER_MODER10_Pos) /*!< 0x00100000 */ +#define GPIO_MODER_MODER10_1 (0x2UL << GPIO_MODER_MODER10_Pos) /*!< 0x00200000 */ + +#define GPIO_MODER_MODER11_Pos (22U) +#define GPIO_MODER_MODER11_Msk (0x3UL << GPIO_MODER_MODER11_Pos) /*!< 0x00C00000 */ +#define GPIO_MODER_MODER11 GPIO_MODER_MODER11_Msk +#define GPIO_MODER_MODER11_0 (0x1UL << GPIO_MODER_MODER11_Pos) /*!< 0x00400000 */ +#define GPIO_MODER_MODER11_1 (0x2UL << GPIO_MODER_MODER11_Pos) /*!< 0x00800000 */ + +#define GPIO_MODER_MODER12_Pos (24U) +#define GPIO_MODER_MODER12_Msk (0x3UL << GPIO_MODER_MODER12_Pos) /*!< 0x03000000 */ +#define GPIO_MODER_MODER12 GPIO_MODER_MODER12_Msk +#define GPIO_MODER_MODER12_0 (0x1UL << GPIO_MODER_MODER12_Pos) /*!< 0x01000000 */ +#define GPIO_MODER_MODER12_1 (0x2UL << GPIO_MODER_MODER12_Pos) /*!< 0x02000000 */ + +#define GPIO_MODER_MODER13_Pos (26U) +#define GPIO_MODER_MODER13_Msk (0x3UL << GPIO_MODER_MODER13_Pos) /*!< 0x0C000000 */ +#define GPIO_MODER_MODER13 GPIO_MODER_MODER13_Msk +#define GPIO_MODER_MODER13_0 (0x1UL << GPIO_MODER_MODER13_Pos) /*!< 0x04000000 */ +#define GPIO_MODER_MODER13_1 (0x2UL << GPIO_MODER_MODER13_Pos) /*!< 0x08000000 */ + +#define GPIO_MODER_MODER14_Pos (28U) +#define GPIO_MODER_MODER14_Msk (0x3UL << GPIO_MODER_MODER14_Pos) /*!< 0x30000000 */ +#define GPIO_MODER_MODER14 GPIO_MODER_MODER14_Msk +#define GPIO_MODER_MODER14_0 (0x1UL << GPIO_MODER_MODER14_Pos) /*!< 0x10000000 */ +#define GPIO_MODER_MODER14_1 (0x2UL << GPIO_MODER_MODER14_Pos) /*!< 0x20000000 */ + +#define GPIO_MODER_MODER15_Pos (30U) +#define GPIO_MODER_MODER15_Msk (0x3UL << GPIO_MODER_MODER15_Pos) /*!< 0xC0000000 */ +#define GPIO_MODER_MODER15 GPIO_MODER_MODER15_Msk +#define GPIO_MODER_MODER15_0 (0x1UL << GPIO_MODER_MODER15_Pos) /*!< 0x40000000 */ +#define GPIO_MODER_MODER15_1 (0x2UL << GPIO_MODER_MODER15_Pos) /*!< 0x80000000 */ + +/* Legacy Defines */ +#define GPIO_MODER_MODE0_Pos GPIO_MODER_MODER0_Pos +#define GPIO_MODER_MODE0_Msk GPIO_MODER_MODER0_Msk +#define GPIO_MODER_MODE0 GPIO_MODER_MODER0 +#define GPIO_MODER_MODE0_0 GPIO_MODER_MODER0_0 +#define GPIO_MODER_MODE0_1 GPIO_MODER_MODER0_1 + +#define GPIO_MODER_MODE1_Pos GPIO_MODER_MODER1_Pos +#define GPIO_MODER_MODE1_Msk GPIO_MODER_MODER1_Msk +#define GPIO_MODER_MODE1 GPIO_MODER_MODER1 +#define GPIO_MODER_MODE1_0 GPIO_MODER_MODER1_0 +#define GPIO_MODER_MODE1_1 GPIO_MODER_MODER1_1 + +#define GPIO_MODER_MODE2_Pos GPIO_MODER_MODER2_Pos +#define GPIO_MODER_MODE2_Msk GPIO_MODER_MODER2_Msk +#define GPIO_MODER_MODE2 GPIO_MODER_MODER2 +#define GPIO_MODER_MODE2_0 GPIO_MODER_MODER2_0 +#define GPIO_MODER_MODE2_1 GPIO_MODER_MODER2_1 + +#define GPIO_MODER_MODE3_Pos GPIO_MODER_MODER3_Pos +#define GPIO_MODER_MODE3_Msk GPIO_MODER_MODER3_Msk +#define GPIO_MODER_MODE3 GPIO_MODER_MODER3 +#define GPIO_MODER_MODE3_0 GPIO_MODER_MODER3_0 +#define GPIO_MODER_MODE3_1 GPIO_MODER_MODER3_1 + +#define GPIO_MODER_MODE4_Pos GPIO_MODER_MODER4_Pos +#define GPIO_MODER_MODE4_Msk GPIO_MODER_MODER4_Msk +#define GPIO_MODER_MODE4 GPIO_MODER_MODER4 +#define GPIO_MODER_MODE4_0 GPIO_MODER_MODER4_0 +#define GPIO_MODER_MODE4_1 GPIO_MODER_MODER4_1 + +#define GPIO_MODER_MODE5_Pos GPIO_MODER_MODER5_Pos +#define GPIO_MODER_MODE5_Msk GPIO_MODER_MODER5_Msk +#define GPIO_MODER_MODE5 GPIO_MODER_MODER5 +#define GPIO_MODER_MODE5_0 GPIO_MODER_MODER5_0 +#define GPIO_MODER_MODE5_1 GPIO_MODER_MODER5_1 + +#define GPIO_MODER_MODE6_Pos GPIO_MODER_MODER6_Pos +#define GPIO_MODER_MODE6_Msk GPIO_MODER_MODER6_Msk +#define GPIO_MODER_MODE6 GPIO_MODER_MODER6 +#define GPIO_MODER_MODE6_0 GPIO_MODER_MODER6_0 +#define GPIO_MODER_MODE6_1 GPIO_MODER_MODER6_1 + +#define GPIO_MODER_MODE7_Pos GPIO_MODER_MODER7_Pos +#define GPIO_MODER_MODE7_Msk GPIO_MODER_MODER7_Msk +#define GPIO_MODER_MODE7 GPIO_MODER_MODER7 +#define GPIO_MODER_MODE7_0 GPIO_MODER_MODER7_0 +#define GPIO_MODER_MODE7_1 GPIO_MODER_MODER7_1 + +#define GPIO_MODER_MODE8_Pos GPIO_MODER_MODER8_Pos +#define GPIO_MODER_MODE8_Msk GPIO_MODER_MODER8_Msk +#define GPIO_MODER_MODE8 GPIO_MODER_MODER8 +#define GPIO_MODER_MODE8_0 GPIO_MODER_MODER8_0 +#define GPIO_MODER_MODE8_1 GPIO_MODER_MODER8_1 + +#define GPIO_MODER_MODE9_Pos GPIO_MODER_MODER9_Pos +#define GPIO_MODER_MODE9_Msk GPIO_MODER_MODER9_Msk +#define GPIO_MODER_MODE9 GPIO_MODER_MODER9 +#define GPIO_MODER_MODE9_0 GPIO_MODER_MODER9_0 +#define GPIO_MODER_MODE9_1 GPIO_MODER_MODER9_1 + +#define GPIO_MODER_MODE10_Pos GPIO_MODER_MODER10_Po +#define GPIO_MODER_MODE10_Msk GPIO_MODER_MODER10_Ms +#define GPIO_MODER_MODE10 GPIO_MODER_MODER10 +#define GPIO_MODER_MODE10_0 GPIO_MODER_MODER10_0 +#define GPIO_MODER_MODE10_1 GPIO_MODER_MODER10_1 + +#define GPIO_MODER_MODE11_Pos GPIO_MODER_MODER11_Po +#define GPIO_MODER_MODE11_Msk GPIO_MODER_MODER11_Ms +#define GPIO_MODER_MODE11 GPIO_MODER_MODER11 +#define GPIO_MODER_MODE11_0 GPIO_MODER_MODER11_0 +#define GPIO_MODER_MODE11_1 GPIO_MODER_MODER11_1 + +#define GPIO_MODER_MODE12_Pos GPIO_MODER_MODER12_Po +#define GPIO_MODER_MODE12_Msk GPIO_MODER_MODER12_Ms +#define GPIO_MODER_MODE12 GPIO_MODER_MODER12 +#define GPIO_MODER_MODE12_0 GPIO_MODER_MODER12_0 +#define GPIO_MODER_MODE12_1 GPIO_MODER_MODER12_1 + +#define GPIO_MODER_MODE13_Pos GPIO_MODER_MODER13_Po +#define GPIO_MODER_MODE13_Msk GPIO_MODER_MODER13_Ms +#define GPIO_MODER_MODE13 GPIO_MODER_MODER13 +#define GPIO_MODER_MODE13_0 GPIO_MODER_MODER13_0 +#define GPIO_MODER_MODE13_1 GPIO_MODER_MODER13_1 + +#define GPIO_MODER_MODE14_Pos GPIO_MODER_MODER14_Po +#define GPIO_MODER_MODE14_Msk GPIO_MODER_MODER14_Ms +#define GPIO_MODER_MODE14 GPIO_MODER_MODER14 +#define GPIO_MODER_MODE14_0 GPIO_MODER_MODER14_0 +#define GPIO_MODER_MODE14_1 GPIO_MODER_MODER14_1 + +#define GPIO_MODER_MODE15_Pos GPIO_MODER_MODER15_Po +#define GPIO_MODER_MODE15_Msk GPIO_MODER_MODER15_Ms +#define GPIO_MODER_MODE15 GPIO_MODER_MODER15 +#define GPIO_MODER_MODE15_0 GPIO_MODER_MODER15_0 +#define GPIO_MODER_MODE15_1 GPIO_MODER_MODER15_1 /****************** Bits definition for GPIO_OTYPER register ****************/ #define GPIO_OTYPER_OT0_Pos (0U) @@ -21641,7 +21738,7 @@ typedef struct #define DBGMCU_APB1HFZ1_DBG_TIM23_Pos (24U) #define DBGMCU_APB1HFZ1_DBG_TIM23_Msk (0x1UL << DBGMCU_APB1HFZ1_DBG_TIM23_Pos) /*!< 0x01000000 */ #define DBGMCU_APB1HFZ1_DBG_TIM23 DBGMCU_APB1HFZ1_DBG_TIM23_Msk -#define DBGMCU_APB1HFZ1_DBG_TIM24_Pos (24U) +#define DBGMCU_APB1HFZ1_DBG_TIM24_Pos (25U) #define DBGMCU_APB1HFZ1_DBG_TIM24_Msk (0x1UL << DBGMCU_APB1HFZ1_DBG_TIM24_Pos) /*!< 0x02000000 */ #define DBGMCU_APB1HFZ1_DBG_TIM24 DBGMCU_APB1HFZ1_DBG_TIM24_Msk /******************** Bit definition for APB2FZ1 register ************/ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h725xx.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h725xx.h index 56eb3938..02749c7a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h725xx.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h725xx.h @@ -11786,101 +11786,198 @@ typedef struct /* */ /******************************************************************************/ /****************** Bits definition for GPIO_MODER register *****************/ -#define GPIO_MODER_MODE0_Pos (0U) -#define GPIO_MODER_MODE0_Msk (0x3UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000003 */ -#define GPIO_MODER_MODE0 GPIO_MODER_MODE0_Msk -#define GPIO_MODER_MODE0_0 (0x1UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000001 */ -#define GPIO_MODER_MODE0_1 (0x2UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000002 */ - -#define GPIO_MODER_MODE1_Pos (2U) -#define GPIO_MODER_MODE1_Msk (0x3UL << GPIO_MODER_MODE1_Pos) /*!< 0x0000000C */ -#define GPIO_MODER_MODE1 GPIO_MODER_MODE1_Msk -#define GPIO_MODER_MODE1_0 (0x1UL << GPIO_MODER_MODE1_Pos) /*!< 0x00000004 */ -#define GPIO_MODER_MODE1_1 (0x2UL << GPIO_MODER_MODE1_Pos) /*!< 0x00000008 */ - -#define GPIO_MODER_MODE2_Pos (4U) -#define GPIO_MODER_MODE2_Msk (0x3UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000030 */ -#define GPIO_MODER_MODE2 GPIO_MODER_MODE2_Msk -#define GPIO_MODER_MODE2_0 (0x1UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000010 */ -#define GPIO_MODER_MODE2_1 (0x2UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000020 */ - -#define GPIO_MODER_MODE3_Pos (6U) -#define GPIO_MODER_MODE3_Msk (0x3UL << GPIO_MODER_MODE3_Pos) /*!< 0x000000C0 */ -#define GPIO_MODER_MODE3 GPIO_MODER_MODE3_Msk -#define GPIO_MODER_MODE3_0 (0x1UL << GPIO_MODER_MODE3_Pos) /*!< 0x00000040 */ -#define GPIO_MODER_MODE3_1 (0x2UL << GPIO_MODER_MODE3_Pos) /*!< 0x00000080 */ - -#define GPIO_MODER_MODE4_Pos (8U) -#define GPIO_MODER_MODE4_Msk (0x3UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000300 */ -#define GPIO_MODER_MODE4 GPIO_MODER_MODE4_Msk -#define GPIO_MODER_MODE4_0 (0x1UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000100 */ -#define GPIO_MODER_MODE4_1 (0x2UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000200 */ - -#define GPIO_MODER_MODE5_Pos (10U) -#define GPIO_MODER_MODE5_Msk (0x3UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000C00 */ -#define GPIO_MODER_MODE5 GPIO_MODER_MODE5_Msk -#define GPIO_MODER_MODE5_0 (0x1UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000400 */ -#define GPIO_MODER_MODE5_1 (0x2UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000800 */ - -#define GPIO_MODER_MODE6_Pos (12U) -#define GPIO_MODER_MODE6_Msk (0x3UL << GPIO_MODER_MODE6_Pos) /*!< 0x00003000 */ -#define GPIO_MODER_MODE6 GPIO_MODER_MODE6_Msk -#define GPIO_MODER_MODE6_0 (0x1UL << GPIO_MODER_MODE6_Pos) /*!< 0x00001000 */ -#define GPIO_MODER_MODE6_1 (0x2UL << GPIO_MODER_MODE6_Pos) /*!< 0x00002000 */ - -#define GPIO_MODER_MODE7_Pos (14U) -#define GPIO_MODER_MODE7_Msk (0x3UL << GPIO_MODER_MODE7_Pos) /*!< 0x0000C000 */ -#define GPIO_MODER_MODE7 GPIO_MODER_MODE7_Msk -#define GPIO_MODER_MODE7_0 (0x1UL << GPIO_MODER_MODE7_Pos) /*!< 0x00004000 */ -#define GPIO_MODER_MODE7_1 (0x2UL << GPIO_MODER_MODE7_Pos) /*!< 0x00008000 */ - -#define GPIO_MODER_MODE8_Pos (16U) -#define GPIO_MODER_MODE8_Msk (0x3UL << GPIO_MODER_MODE8_Pos) /*!< 0x00030000 */ -#define GPIO_MODER_MODE8 GPIO_MODER_MODE8_Msk -#define GPIO_MODER_MODE8_0 (0x1UL << GPIO_MODER_MODE8_Pos) /*!< 0x00010000 */ -#define GPIO_MODER_MODE8_1 (0x2UL << GPIO_MODER_MODE8_Pos) /*!< 0x00020000 */ - -#define GPIO_MODER_MODE9_Pos (18U) -#define GPIO_MODER_MODE9_Msk (0x3UL << GPIO_MODER_MODE9_Pos) /*!< 0x000C0000 */ -#define GPIO_MODER_MODE9 GPIO_MODER_MODE9_Msk -#define GPIO_MODER_MODE9_0 (0x1UL << GPIO_MODER_MODE9_Pos) /*!< 0x00040000 */ -#define GPIO_MODER_MODE9_1 (0x2UL << GPIO_MODER_MODE9_Pos) /*!< 0x00080000 */ - -#define GPIO_MODER_MODE10_Pos (20U) -#define GPIO_MODER_MODE10_Msk (0x3UL << GPIO_MODER_MODE10_Pos) /*!< 0x00300000 */ -#define GPIO_MODER_MODE10 GPIO_MODER_MODE10_Msk -#define GPIO_MODER_MODE10_0 (0x1UL << GPIO_MODER_MODE10_Pos) /*!< 0x00100000 */ -#define GPIO_MODER_MODE10_1 (0x2UL << GPIO_MODER_MODE10_Pos) /*!< 0x00200000 */ - -#define GPIO_MODER_MODE11_Pos (22U) -#define GPIO_MODER_MODE11_Msk (0x3UL << GPIO_MODER_MODE11_Pos) /*!< 0x00C00000 */ -#define GPIO_MODER_MODE11 GPIO_MODER_MODE11_Msk -#define GPIO_MODER_MODE11_0 (0x1UL << GPIO_MODER_MODE11_Pos) /*!< 0x00400000 */ -#define GPIO_MODER_MODE11_1 (0x2UL << GPIO_MODER_MODE11_Pos) /*!< 0x00800000 */ - -#define GPIO_MODER_MODE12_Pos (24U) -#define GPIO_MODER_MODE12_Msk (0x3UL << GPIO_MODER_MODE12_Pos) /*!< 0x03000000 */ -#define GPIO_MODER_MODE12 GPIO_MODER_MODE12_Msk -#define GPIO_MODER_MODE12_0 (0x1UL << GPIO_MODER_MODE12_Pos) /*!< 0x01000000 */ -#define GPIO_MODER_MODE12_1 (0x2UL << GPIO_MODER_MODE12_Pos) /*!< 0x02000000 */ - -#define GPIO_MODER_MODE13_Pos (26U) -#define GPIO_MODER_MODE13_Msk (0x3UL << GPIO_MODER_MODE13_Pos) /*!< 0x0C000000 */ -#define GPIO_MODER_MODE13 GPIO_MODER_MODE13_Msk -#define GPIO_MODER_MODE13_0 (0x1UL << GPIO_MODER_MODE13_Pos) /*!< 0x04000000 */ -#define GPIO_MODER_MODE13_1 (0x2UL << GPIO_MODER_MODE13_Pos) /*!< 0x08000000 */ - -#define GPIO_MODER_MODE14_Pos (28U) -#define GPIO_MODER_MODE14_Msk (0x3UL << GPIO_MODER_MODE14_Pos) /*!< 0x30000000 */ -#define GPIO_MODER_MODE14 GPIO_MODER_MODE14_Msk -#define GPIO_MODER_MODE14_0 (0x1UL << GPIO_MODER_MODE14_Pos) /*!< 0x10000000 */ -#define GPIO_MODER_MODE14_1 (0x2UL << GPIO_MODER_MODE14_Pos) /*!< 0x20000000 */ - -#define GPIO_MODER_MODE15_Pos (30U) -#define GPIO_MODER_MODE15_Msk (0x3UL << GPIO_MODER_MODE15_Pos) /*!< 0xC0000000 */ -#define GPIO_MODER_MODE15 GPIO_MODER_MODE15_Msk -#define GPIO_MODER_MODE15_0 (0x1UL << GPIO_MODER_MODE15_Pos) /*!< 0x40000000 */ -#define GPIO_MODER_MODE15_1 (0x2UL << GPIO_MODER_MODE15_Pos) /*!< 0x80000000 */ +#define GPIO_MODER_MODER0_Pos (0U) +#define GPIO_MODER_MODER0_Msk (0x3UL << GPIO_MODER_MODER0_Pos) /*!< 0x00000003 */ +#define GPIO_MODER_MODER0 GPIO_MODER_MODER0_Msk +#define GPIO_MODER_MODER0_0 (0x1UL << GPIO_MODER_MODER0_Pos) /*!< 0x00000001 */ +#define GPIO_MODER_MODER0_1 (0x2UL << GPIO_MODER_MODER0_Pos) /*!< 0x00000002 */ + +#define GPIO_MODER_MODER1_Pos (2U) +#define GPIO_MODER_MODER1_Msk (0x3UL << GPIO_MODER_MODER1_Pos) /*!< 0x0000000C */ +#define GPIO_MODER_MODER1 GPIO_MODER_MODER1_Msk +#define GPIO_MODER_MODER1_0 (0x1UL << GPIO_MODER_MODER1_Pos) /*!< 0x00000004 */ +#define GPIO_MODER_MODER1_1 (0x2UL << GPIO_MODER_MODER1_Pos) /*!< 0x00000008 */ + +#define GPIO_MODER_MODER2_Pos (4U) +#define GPIO_MODER_MODER2_Msk (0x3UL << GPIO_MODER_MODER2_Pos) /*!< 0x00000030 */ +#define GPIO_MODER_MODER2 GPIO_MODER_MODER2_Msk +#define GPIO_MODER_MODER2_0 (0x1UL << GPIO_MODER_MODER2_Pos) /*!< 0x00000010 */ +#define GPIO_MODER_MODER2_1 (0x2UL << GPIO_MODER_MODER2_Pos) /*!< 0x00000020 */ + +#define GPIO_MODER_MODER3_Pos (6U) +#define GPIO_MODER_MODER3_Msk (0x3UL << GPIO_MODER_MODER3_Pos) /*!< 0x000000C0 */ +#define GPIO_MODER_MODER3 GPIO_MODER_MODER3_Msk +#define GPIO_MODER_MODER3_0 (0x1UL << GPIO_MODER_MODER3_Pos) /*!< 0x00000040 */ +#define GPIO_MODER_MODER3_1 (0x2UL << GPIO_MODER_MODER3_Pos) /*!< 0x00000080 */ + +#define GPIO_MODER_MODER4_Pos (8U) +#define GPIO_MODER_MODER4_Msk (0x3UL << GPIO_MODER_MODER4_Pos) /*!< 0x00000300 */ +#define GPIO_MODER_MODER4 GPIO_MODER_MODER4_Msk +#define GPIO_MODER_MODER4_0 (0x1UL << GPIO_MODER_MODER4_Pos) /*!< 0x00000100 */ +#define GPIO_MODER_MODER4_1 (0x2UL << GPIO_MODER_MODER4_Pos) /*!< 0x00000200 */ + +#define GPIO_MODER_MODER5_Pos (10U) +#define GPIO_MODER_MODER5_Msk (0x3UL << GPIO_MODER_MODER5_Pos) /*!< 0x00000C00 */ +#define GPIO_MODER_MODER5 GPIO_MODER_MODER5_Msk +#define GPIO_MODER_MODER5_0 (0x1UL << GPIO_MODER_MODER5_Pos) /*!< 0x00000400 */ +#define GPIO_MODER_MODER5_1 (0x2UL << GPIO_MODER_MODER5_Pos) /*!< 0x00000800 */ + +#define GPIO_MODER_MODER6_Pos (12U) +#define GPIO_MODER_MODER6_Msk (0x3UL << GPIO_MODER_MODER6_Pos) /*!< 0x00003000 */ +#define GPIO_MODER_MODER6 GPIO_MODER_MODER6_Msk +#define GPIO_MODER_MODER6_0 (0x1UL << GPIO_MODER_MODER6_Pos) /*!< 0x00001000 */ +#define GPIO_MODER_MODER6_1 (0x2UL << GPIO_MODER_MODER6_Pos) /*!< 0x00002000 */ + +#define GPIO_MODER_MODER7_Pos (14U) +#define GPIO_MODER_MODER7_Msk (0x3UL << GPIO_MODER_MODER7_Pos) /*!< 0x0000C000 */ +#define GPIO_MODER_MODER7 GPIO_MODER_MODER7_Msk +#define GPIO_MODER_MODER7_0 (0x1UL << GPIO_MODER_MODER7_Pos) /*!< 0x00004000 */ +#define GPIO_MODER_MODER7_1 (0x2UL << GPIO_MODER_MODER7_Pos) /*!< 0x00008000 */ + +#define GPIO_MODER_MODER8_Pos (16U) +#define GPIO_MODER_MODER8_Msk (0x3UL << GPIO_MODER_MODER8_Pos) /*!< 0x00030000 */ +#define GPIO_MODER_MODER8 GPIO_MODER_MODER8_Msk +#define GPIO_MODER_MODER8_0 (0x1UL << GPIO_MODER_MODER8_Pos) /*!< 0x00010000 */ +#define GPIO_MODER_MODER8_1 (0x2UL << GPIO_MODER_MODER8_Pos) /*!< 0x00020000 */ + +#define GPIO_MODER_MODER9_Pos (18U) +#define GPIO_MODER_MODER9_Msk (0x3UL << GPIO_MODER_MODER9_Pos) /*!< 0x000C0000 */ +#define GPIO_MODER_MODER9 GPIO_MODER_MODER9_Msk +#define GPIO_MODER_MODER9_0 (0x1UL << GPIO_MODER_MODER9_Pos) /*!< 0x00040000 */ +#define GPIO_MODER_MODER9_1 (0x2UL << GPIO_MODER_MODER9_Pos) /*!< 0x00080000 */ + +#define GPIO_MODER_MODER10_Pos (20U) +#define GPIO_MODER_MODER10_Msk (0x3UL << GPIO_MODER_MODER10_Pos) /*!< 0x00300000 */ +#define GPIO_MODER_MODER10 GPIO_MODER_MODER10_Msk +#define GPIO_MODER_MODER10_0 (0x1UL << GPIO_MODER_MODER10_Pos) /*!< 0x00100000 */ +#define GPIO_MODER_MODER10_1 (0x2UL << GPIO_MODER_MODER10_Pos) /*!< 0x00200000 */ + +#define GPIO_MODER_MODER11_Pos (22U) +#define GPIO_MODER_MODER11_Msk (0x3UL << GPIO_MODER_MODER11_Pos) /*!< 0x00C00000 */ +#define GPIO_MODER_MODER11 GPIO_MODER_MODER11_Msk +#define GPIO_MODER_MODER11_0 (0x1UL << GPIO_MODER_MODER11_Pos) /*!< 0x00400000 */ +#define GPIO_MODER_MODER11_1 (0x2UL << GPIO_MODER_MODER11_Pos) /*!< 0x00800000 */ + +#define GPIO_MODER_MODER12_Pos (24U) +#define GPIO_MODER_MODER12_Msk (0x3UL << GPIO_MODER_MODER12_Pos) /*!< 0x03000000 */ +#define GPIO_MODER_MODER12 GPIO_MODER_MODER12_Msk +#define GPIO_MODER_MODER12_0 (0x1UL << GPIO_MODER_MODER12_Pos) /*!< 0x01000000 */ +#define GPIO_MODER_MODER12_1 (0x2UL << GPIO_MODER_MODER12_Pos) /*!< 0x02000000 */ + +#define GPIO_MODER_MODER13_Pos (26U) +#define GPIO_MODER_MODER13_Msk (0x3UL << GPIO_MODER_MODER13_Pos) /*!< 0x0C000000 */ +#define GPIO_MODER_MODER13 GPIO_MODER_MODER13_Msk +#define GPIO_MODER_MODER13_0 (0x1UL << GPIO_MODER_MODER13_Pos) /*!< 0x04000000 */ +#define GPIO_MODER_MODER13_1 (0x2UL << GPIO_MODER_MODER13_Pos) /*!< 0x08000000 */ + +#define GPIO_MODER_MODER14_Pos (28U) +#define GPIO_MODER_MODER14_Msk (0x3UL << GPIO_MODER_MODER14_Pos) /*!< 0x30000000 */ +#define GPIO_MODER_MODER14 GPIO_MODER_MODER14_Msk +#define GPIO_MODER_MODER14_0 (0x1UL << GPIO_MODER_MODER14_Pos) /*!< 0x10000000 */ +#define GPIO_MODER_MODER14_1 (0x2UL << GPIO_MODER_MODER14_Pos) /*!< 0x20000000 */ + +#define GPIO_MODER_MODER15_Pos (30U) +#define GPIO_MODER_MODER15_Msk (0x3UL << GPIO_MODER_MODER15_Pos) /*!< 0xC0000000 */ +#define GPIO_MODER_MODER15 GPIO_MODER_MODER15_Msk +#define GPIO_MODER_MODER15_0 (0x1UL << GPIO_MODER_MODER15_Pos) /*!< 0x40000000 */ +#define GPIO_MODER_MODER15_1 (0x2UL << GPIO_MODER_MODER15_Pos) /*!< 0x80000000 */ + +/* Legacy Defines */ +#define GPIO_MODER_MODE0_Pos GPIO_MODER_MODER0_Pos +#define GPIO_MODER_MODE0_Msk GPIO_MODER_MODER0_Msk +#define GPIO_MODER_MODE0 GPIO_MODER_MODER0 +#define GPIO_MODER_MODE0_0 GPIO_MODER_MODER0_0 +#define GPIO_MODER_MODE0_1 GPIO_MODER_MODER0_1 + +#define GPIO_MODER_MODE1_Pos GPIO_MODER_MODER1_Pos +#define GPIO_MODER_MODE1_Msk GPIO_MODER_MODER1_Msk +#define GPIO_MODER_MODE1 GPIO_MODER_MODER1 +#define GPIO_MODER_MODE1_0 GPIO_MODER_MODER1_0 +#define GPIO_MODER_MODE1_1 GPIO_MODER_MODER1_1 + +#define GPIO_MODER_MODE2_Pos GPIO_MODER_MODER2_Pos +#define GPIO_MODER_MODE2_Msk GPIO_MODER_MODER2_Msk +#define GPIO_MODER_MODE2 GPIO_MODER_MODER2 +#define GPIO_MODER_MODE2_0 GPIO_MODER_MODER2_0 +#define GPIO_MODER_MODE2_1 GPIO_MODER_MODER2_1 + +#define GPIO_MODER_MODE3_Pos GPIO_MODER_MODER3_Pos +#define GPIO_MODER_MODE3_Msk GPIO_MODER_MODER3_Msk +#define GPIO_MODER_MODE3 GPIO_MODER_MODER3 +#define GPIO_MODER_MODE3_0 GPIO_MODER_MODER3_0 +#define GPIO_MODER_MODE3_1 GPIO_MODER_MODER3_1 + +#define GPIO_MODER_MODE4_Pos GPIO_MODER_MODER4_Pos +#define GPIO_MODER_MODE4_Msk GPIO_MODER_MODER4_Msk +#define GPIO_MODER_MODE4 GPIO_MODER_MODER4 +#define GPIO_MODER_MODE4_0 GPIO_MODER_MODER4_0 +#define GPIO_MODER_MODE4_1 GPIO_MODER_MODER4_1 + +#define GPIO_MODER_MODE5_Pos GPIO_MODER_MODER5_Pos +#define GPIO_MODER_MODE5_Msk GPIO_MODER_MODER5_Msk +#define GPIO_MODER_MODE5 GPIO_MODER_MODER5 +#define GPIO_MODER_MODE5_0 GPIO_MODER_MODER5_0 +#define GPIO_MODER_MODE5_1 GPIO_MODER_MODER5_1 + +#define GPIO_MODER_MODE6_Pos GPIO_MODER_MODER6_Pos +#define GPIO_MODER_MODE6_Msk GPIO_MODER_MODER6_Msk +#define GPIO_MODER_MODE6 GPIO_MODER_MODER6 +#define GPIO_MODER_MODE6_0 GPIO_MODER_MODER6_0 +#define GPIO_MODER_MODE6_1 GPIO_MODER_MODER6_1 + +#define GPIO_MODER_MODE7_Pos GPIO_MODER_MODER7_Pos +#define GPIO_MODER_MODE7_Msk GPIO_MODER_MODER7_Msk +#define GPIO_MODER_MODE7 GPIO_MODER_MODER7 +#define GPIO_MODER_MODE7_0 GPIO_MODER_MODER7_0 +#define GPIO_MODER_MODE7_1 GPIO_MODER_MODER7_1 + +#define GPIO_MODER_MODE8_Pos GPIO_MODER_MODER8_Pos +#define GPIO_MODER_MODE8_Msk GPIO_MODER_MODER8_Msk +#define GPIO_MODER_MODE8 GPIO_MODER_MODER8 +#define GPIO_MODER_MODE8_0 GPIO_MODER_MODER8_0 +#define GPIO_MODER_MODE8_1 GPIO_MODER_MODER8_1 + +#define GPIO_MODER_MODE9_Pos GPIO_MODER_MODER9_Pos +#define GPIO_MODER_MODE9_Msk GPIO_MODER_MODER9_Msk +#define GPIO_MODER_MODE9 GPIO_MODER_MODER9 +#define GPIO_MODER_MODE9_0 GPIO_MODER_MODER9_0 +#define GPIO_MODER_MODE9_1 GPIO_MODER_MODER9_1 + +#define GPIO_MODER_MODE10_Pos GPIO_MODER_MODER10_Po +#define GPIO_MODER_MODE10_Msk GPIO_MODER_MODER10_Ms +#define GPIO_MODER_MODE10 GPIO_MODER_MODER10 +#define GPIO_MODER_MODE10_0 GPIO_MODER_MODER10_0 +#define GPIO_MODER_MODE10_1 GPIO_MODER_MODER10_1 + +#define GPIO_MODER_MODE11_Pos GPIO_MODER_MODER11_Po +#define GPIO_MODER_MODE11_Msk GPIO_MODER_MODER11_Ms +#define GPIO_MODER_MODE11 GPIO_MODER_MODER11 +#define GPIO_MODER_MODE11_0 GPIO_MODER_MODER11_0 +#define GPIO_MODER_MODE11_1 GPIO_MODER_MODER11_1 + +#define GPIO_MODER_MODE12_Pos GPIO_MODER_MODER12_Po +#define GPIO_MODER_MODE12_Msk GPIO_MODER_MODER12_Ms +#define GPIO_MODER_MODE12 GPIO_MODER_MODER12 +#define GPIO_MODER_MODE12_0 GPIO_MODER_MODER12_0 +#define GPIO_MODER_MODE12_1 GPIO_MODER_MODER12_1 + +#define GPIO_MODER_MODE13_Pos GPIO_MODER_MODER13_Po +#define GPIO_MODER_MODE13_Msk GPIO_MODER_MODER13_Ms +#define GPIO_MODER_MODE13 GPIO_MODER_MODER13 +#define GPIO_MODER_MODE13_0 GPIO_MODER_MODER13_0 +#define GPIO_MODER_MODE13_1 GPIO_MODER_MODER13_1 + +#define GPIO_MODER_MODE14_Pos GPIO_MODER_MODER14_Po +#define GPIO_MODER_MODE14_Msk GPIO_MODER_MODER14_Ms +#define GPIO_MODER_MODE14 GPIO_MODER_MODER14 +#define GPIO_MODER_MODE14_0 GPIO_MODER_MODER14_0 +#define GPIO_MODER_MODE14_1 GPIO_MODER_MODER14_1 + +#define GPIO_MODER_MODE15_Pos GPIO_MODER_MODER15_Po +#define GPIO_MODER_MODE15_Msk GPIO_MODER_MODER15_Ms +#define GPIO_MODER_MODE15 GPIO_MODER_MODER15 +#define GPIO_MODER_MODE15_0 GPIO_MODER_MODER15_0 +#define GPIO_MODER_MODE15_1 GPIO_MODER_MODER15_1 /****************** Bits definition for GPIO_OTYPER register ****************/ #define GPIO_OTYPER_OT0_Pos (0U) @@ -21653,7 +21750,7 @@ typedef struct #define DBGMCU_APB1HFZ1_DBG_TIM23_Pos (24U) #define DBGMCU_APB1HFZ1_DBG_TIM23_Msk (0x1UL << DBGMCU_APB1HFZ1_DBG_TIM23_Pos) /*!< 0x01000000 */ #define DBGMCU_APB1HFZ1_DBG_TIM23 DBGMCU_APB1HFZ1_DBG_TIM23_Msk -#define DBGMCU_APB1HFZ1_DBG_TIM24_Pos (24U) +#define DBGMCU_APB1HFZ1_DBG_TIM24_Pos (25U) #define DBGMCU_APB1HFZ1_DBG_TIM24_Msk (0x1UL << DBGMCU_APB1HFZ1_DBG_TIM24_Pos) /*!< 0x02000000 */ #define DBGMCU_APB1HFZ1_DBG_TIM24 DBGMCU_APB1HFZ1_DBG_TIM24_Msk /******************** Bit definition for APB2FZ1 register ************/ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h730xx.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h730xx.h index 2b2cea29..6bab03e3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h730xx.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h730xx.h @@ -12039,101 +12039,198 @@ typedef struct /* */ /******************************************************************************/ /****************** Bits definition for GPIO_MODER register *****************/ -#define GPIO_MODER_MODE0_Pos (0U) -#define GPIO_MODER_MODE0_Msk (0x3UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000003 */ -#define GPIO_MODER_MODE0 GPIO_MODER_MODE0_Msk -#define GPIO_MODER_MODE0_0 (0x1UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000001 */ -#define GPIO_MODER_MODE0_1 (0x2UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000002 */ - -#define GPIO_MODER_MODE1_Pos (2U) -#define GPIO_MODER_MODE1_Msk (0x3UL << GPIO_MODER_MODE1_Pos) /*!< 0x0000000C */ -#define GPIO_MODER_MODE1 GPIO_MODER_MODE1_Msk -#define GPIO_MODER_MODE1_0 (0x1UL << GPIO_MODER_MODE1_Pos) /*!< 0x00000004 */ -#define GPIO_MODER_MODE1_1 (0x2UL << GPIO_MODER_MODE1_Pos) /*!< 0x00000008 */ - -#define GPIO_MODER_MODE2_Pos (4U) -#define GPIO_MODER_MODE2_Msk (0x3UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000030 */ -#define GPIO_MODER_MODE2 GPIO_MODER_MODE2_Msk -#define GPIO_MODER_MODE2_0 (0x1UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000010 */ -#define GPIO_MODER_MODE2_1 (0x2UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000020 */ - -#define GPIO_MODER_MODE3_Pos (6U) -#define GPIO_MODER_MODE3_Msk (0x3UL << GPIO_MODER_MODE3_Pos) /*!< 0x000000C0 */ -#define GPIO_MODER_MODE3 GPIO_MODER_MODE3_Msk -#define GPIO_MODER_MODE3_0 (0x1UL << GPIO_MODER_MODE3_Pos) /*!< 0x00000040 */ -#define GPIO_MODER_MODE3_1 (0x2UL << GPIO_MODER_MODE3_Pos) /*!< 0x00000080 */ - -#define GPIO_MODER_MODE4_Pos (8U) -#define GPIO_MODER_MODE4_Msk (0x3UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000300 */ -#define GPIO_MODER_MODE4 GPIO_MODER_MODE4_Msk -#define GPIO_MODER_MODE4_0 (0x1UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000100 */ -#define GPIO_MODER_MODE4_1 (0x2UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000200 */ - -#define GPIO_MODER_MODE5_Pos (10U) -#define GPIO_MODER_MODE5_Msk (0x3UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000C00 */ -#define GPIO_MODER_MODE5 GPIO_MODER_MODE5_Msk -#define GPIO_MODER_MODE5_0 (0x1UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000400 */ -#define GPIO_MODER_MODE5_1 (0x2UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000800 */ - -#define GPIO_MODER_MODE6_Pos (12U) -#define GPIO_MODER_MODE6_Msk (0x3UL << GPIO_MODER_MODE6_Pos) /*!< 0x00003000 */ -#define GPIO_MODER_MODE6 GPIO_MODER_MODE6_Msk -#define GPIO_MODER_MODE6_0 (0x1UL << GPIO_MODER_MODE6_Pos) /*!< 0x00001000 */ -#define GPIO_MODER_MODE6_1 (0x2UL << GPIO_MODER_MODE6_Pos) /*!< 0x00002000 */ - -#define GPIO_MODER_MODE7_Pos (14U) -#define GPIO_MODER_MODE7_Msk (0x3UL << GPIO_MODER_MODE7_Pos) /*!< 0x0000C000 */ -#define GPIO_MODER_MODE7 GPIO_MODER_MODE7_Msk -#define GPIO_MODER_MODE7_0 (0x1UL << GPIO_MODER_MODE7_Pos) /*!< 0x00004000 */ -#define GPIO_MODER_MODE7_1 (0x2UL << GPIO_MODER_MODE7_Pos) /*!< 0x00008000 */ - -#define GPIO_MODER_MODE8_Pos (16U) -#define GPIO_MODER_MODE8_Msk (0x3UL << GPIO_MODER_MODE8_Pos) /*!< 0x00030000 */ -#define GPIO_MODER_MODE8 GPIO_MODER_MODE8_Msk -#define GPIO_MODER_MODE8_0 (0x1UL << GPIO_MODER_MODE8_Pos) /*!< 0x00010000 */ -#define GPIO_MODER_MODE8_1 (0x2UL << GPIO_MODER_MODE8_Pos) /*!< 0x00020000 */ - -#define GPIO_MODER_MODE9_Pos (18U) -#define GPIO_MODER_MODE9_Msk (0x3UL << GPIO_MODER_MODE9_Pos) /*!< 0x000C0000 */ -#define GPIO_MODER_MODE9 GPIO_MODER_MODE9_Msk -#define GPIO_MODER_MODE9_0 (0x1UL << GPIO_MODER_MODE9_Pos) /*!< 0x00040000 */ -#define GPIO_MODER_MODE9_1 (0x2UL << GPIO_MODER_MODE9_Pos) /*!< 0x00080000 */ - -#define GPIO_MODER_MODE10_Pos (20U) -#define GPIO_MODER_MODE10_Msk (0x3UL << GPIO_MODER_MODE10_Pos) /*!< 0x00300000 */ -#define GPIO_MODER_MODE10 GPIO_MODER_MODE10_Msk -#define GPIO_MODER_MODE10_0 (0x1UL << GPIO_MODER_MODE10_Pos) /*!< 0x00100000 */ -#define GPIO_MODER_MODE10_1 (0x2UL << GPIO_MODER_MODE10_Pos) /*!< 0x00200000 */ - -#define GPIO_MODER_MODE11_Pos (22U) -#define GPIO_MODER_MODE11_Msk (0x3UL << GPIO_MODER_MODE11_Pos) /*!< 0x00C00000 */ -#define GPIO_MODER_MODE11 GPIO_MODER_MODE11_Msk -#define GPIO_MODER_MODE11_0 (0x1UL << GPIO_MODER_MODE11_Pos) /*!< 0x00400000 */ -#define GPIO_MODER_MODE11_1 (0x2UL << GPIO_MODER_MODE11_Pos) /*!< 0x00800000 */ - -#define GPIO_MODER_MODE12_Pos (24U) -#define GPIO_MODER_MODE12_Msk (0x3UL << GPIO_MODER_MODE12_Pos) /*!< 0x03000000 */ -#define GPIO_MODER_MODE12 GPIO_MODER_MODE12_Msk -#define GPIO_MODER_MODE12_0 (0x1UL << GPIO_MODER_MODE12_Pos) /*!< 0x01000000 */ -#define GPIO_MODER_MODE12_1 (0x2UL << GPIO_MODER_MODE12_Pos) /*!< 0x02000000 */ - -#define GPIO_MODER_MODE13_Pos (26U) -#define GPIO_MODER_MODE13_Msk (0x3UL << GPIO_MODER_MODE13_Pos) /*!< 0x0C000000 */ -#define GPIO_MODER_MODE13 GPIO_MODER_MODE13_Msk -#define GPIO_MODER_MODE13_0 (0x1UL << GPIO_MODER_MODE13_Pos) /*!< 0x04000000 */ -#define GPIO_MODER_MODE13_1 (0x2UL << GPIO_MODER_MODE13_Pos) /*!< 0x08000000 */ - -#define GPIO_MODER_MODE14_Pos (28U) -#define GPIO_MODER_MODE14_Msk (0x3UL << GPIO_MODER_MODE14_Pos) /*!< 0x30000000 */ -#define GPIO_MODER_MODE14 GPIO_MODER_MODE14_Msk -#define GPIO_MODER_MODE14_0 (0x1UL << GPIO_MODER_MODE14_Pos) /*!< 0x10000000 */ -#define GPIO_MODER_MODE14_1 (0x2UL << GPIO_MODER_MODE14_Pos) /*!< 0x20000000 */ - -#define GPIO_MODER_MODE15_Pos (30U) -#define GPIO_MODER_MODE15_Msk (0x3UL << GPIO_MODER_MODE15_Pos) /*!< 0xC0000000 */ -#define GPIO_MODER_MODE15 GPIO_MODER_MODE15_Msk -#define GPIO_MODER_MODE15_0 (0x1UL << GPIO_MODER_MODE15_Pos) /*!< 0x40000000 */ -#define GPIO_MODER_MODE15_1 (0x2UL << GPIO_MODER_MODE15_Pos) /*!< 0x80000000 */ +#define GPIO_MODER_MODER0_Pos (0U) +#define GPIO_MODER_MODER0_Msk (0x3UL << GPIO_MODER_MODER0_Pos) /*!< 0x00000003 */ +#define GPIO_MODER_MODER0 GPIO_MODER_MODER0_Msk +#define GPIO_MODER_MODER0_0 (0x1UL << GPIO_MODER_MODER0_Pos) /*!< 0x00000001 */ +#define GPIO_MODER_MODER0_1 (0x2UL << GPIO_MODER_MODER0_Pos) /*!< 0x00000002 */ + +#define GPIO_MODER_MODER1_Pos (2U) +#define GPIO_MODER_MODER1_Msk (0x3UL << GPIO_MODER_MODER1_Pos) /*!< 0x0000000C */ +#define GPIO_MODER_MODER1 GPIO_MODER_MODER1_Msk +#define GPIO_MODER_MODER1_0 (0x1UL << GPIO_MODER_MODER1_Pos) /*!< 0x00000004 */ +#define GPIO_MODER_MODER1_1 (0x2UL << GPIO_MODER_MODER1_Pos) /*!< 0x00000008 */ + +#define GPIO_MODER_MODER2_Pos (4U) +#define GPIO_MODER_MODER2_Msk (0x3UL << GPIO_MODER_MODER2_Pos) /*!< 0x00000030 */ +#define GPIO_MODER_MODER2 GPIO_MODER_MODER2_Msk +#define GPIO_MODER_MODER2_0 (0x1UL << GPIO_MODER_MODER2_Pos) /*!< 0x00000010 */ +#define GPIO_MODER_MODER2_1 (0x2UL << GPIO_MODER_MODER2_Pos) /*!< 0x00000020 */ + +#define GPIO_MODER_MODER3_Pos (6U) +#define GPIO_MODER_MODER3_Msk (0x3UL << GPIO_MODER_MODER3_Pos) /*!< 0x000000C0 */ +#define GPIO_MODER_MODER3 GPIO_MODER_MODER3_Msk +#define GPIO_MODER_MODER3_0 (0x1UL << GPIO_MODER_MODER3_Pos) /*!< 0x00000040 */ +#define GPIO_MODER_MODER3_1 (0x2UL << GPIO_MODER_MODER3_Pos) /*!< 0x00000080 */ + +#define GPIO_MODER_MODER4_Pos (8U) +#define GPIO_MODER_MODER4_Msk (0x3UL << GPIO_MODER_MODER4_Pos) /*!< 0x00000300 */ +#define GPIO_MODER_MODER4 GPIO_MODER_MODER4_Msk +#define GPIO_MODER_MODER4_0 (0x1UL << GPIO_MODER_MODER4_Pos) /*!< 0x00000100 */ +#define GPIO_MODER_MODER4_1 (0x2UL << GPIO_MODER_MODER4_Pos) /*!< 0x00000200 */ + +#define GPIO_MODER_MODER5_Pos (10U) +#define GPIO_MODER_MODER5_Msk (0x3UL << GPIO_MODER_MODER5_Pos) /*!< 0x00000C00 */ +#define GPIO_MODER_MODER5 GPIO_MODER_MODER5_Msk +#define GPIO_MODER_MODER5_0 (0x1UL << GPIO_MODER_MODER5_Pos) /*!< 0x00000400 */ +#define GPIO_MODER_MODER5_1 (0x2UL << GPIO_MODER_MODER5_Pos) /*!< 0x00000800 */ + +#define GPIO_MODER_MODER6_Pos (12U) +#define GPIO_MODER_MODER6_Msk (0x3UL << GPIO_MODER_MODER6_Pos) /*!< 0x00003000 */ +#define GPIO_MODER_MODER6 GPIO_MODER_MODER6_Msk +#define GPIO_MODER_MODER6_0 (0x1UL << GPIO_MODER_MODER6_Pos) /*!< 0x00001000 */ +#define GPIO_MODER_MODER6_1 (0x2UL << GPIO_MODER_MODER6_Pos) /*!< 0x00002000 */ + +#define GPIO_MODER_MODER7_Pos (14U) +#define GPIO_MODER_MODER7_Msk (0x3UL << GPIO_MODER_MODER7_Pos) /*!< 0x0000C000 */ +#define GPIO_MODER_MODER7 GPIO_MODER_MODER7_Msk +#define GPIO_MODER_MODER7_0 (0x1UL << GPIO_MODER_MODER7_Pos) /*!< 0x00004000 */ +#define GPIO_MODER_MODER7_1 (0x2UL << GPIO_MODER_MODER7_Pos) /*!< 0x00008000 */ + +#define GPIO_MODER_MODER8_Pos (16U) +#define GPIO_MODER_MODER8_Msk (0x3UL << GPIO_MODER_MODER8_Pos) /*!< 0x00030000 */ +#define GPIO_MODER_MODER8 GPIO_MODER_MODER8_Msk +#define GPIO_MODER_MODER8_0 (0x1UL << GPIO_MODER_MODER8_Pos) /*!< 0x00010000 */ +#define GPIO_MODER_MODER8_1 (0x2UL << GPIO_MODER_MODER8_Pos) /*!< 0x00020000 */ + +#define GPIO_MODER_MODER9_Pos (18U) +#define GPIO_MODER_MODER9_Msk (0x3UL << GPIO_MODER_MODER9_Pos) /*!< 0x000C0000 */ +#define GPIO_MODER_MODER9 GPIO_MODER_MODER9_Msk +#define GPIO_MODER_MODER9_0 (0x1UL << GPIO_MODER_MODER9_Pos) /*!< 0x00040000 */ +#define GPIO_MODER_MODER9_1 (0x2UL << GPIO_MODER_MODER9_Pos) /*!< 0x00080000 */ + +#define GPIO_MODER_MODER10_Pos (20U) +#define GPIO_MODER_MODER10_Msk (0x3UL << GPIO_MODER_MODER10_Pos) /*!< 0x00300000 */ +#define GPIO_MODER_MODER10 GPIO_MODER_MODER10_Msk +#define GPIO_MODER_MODER10_0 (0x1UL << GPIO_MODER_MODER10_Pos) /*!< 0x00100000 */ +#define GPIO_MODER_MODER10_1 (0x2UL << GPIO_MODER_MODER10_Pos) /*!< 0x00200000 */ + +#define GPIO_MODER_MODER11_Pos (22U) +#define GPIO_MODER_MODER11_Msk (0x3UL << GPIO_MODER_MODER11_Pos) /*!< 0x00C00000 */ +#define GPIO_MODER_MODER11 GPIO_MODER_MODER11_Msk +#define GPIO_MODER_MODER11_0 (0x1UL << GPIO_MODER_MODER11_Pos) /*!< 0x00400000 */ +#define GPIO_MODER_MODER11_1 (0x2UL << GPIO_MODER_MODER11_Pos) /*!< 0x00800000 */ + +#define GPIO_MODER_MODER12_Pos (24U) +#define GPIO_MODER_MODER12_Msk (0x3UL << GPIO_MODER_MODER12_Pos) /*!< 0x03000000 */ +#define GPIO_MODER_MODER12 GPIO_MODER_MODER12_Msk +#define GPIO_MODER_MODER12_0 (0x1UL << GPIO_MODER_MODER12_Pos) /*!< 0x01000000 */ +#define GPIO_MODER_MODER12_1 (0x2UL << GPIO_MODER_MODER12_Pos) /*!< 0x02000000 */ + +#define GPIO_MODER_MODER13_Pos (26U) +#define GPIO_MODER_MODER13_Msk (0x3UL << GPIO_MODER_MODER13_Pos) /*!< 0x0C000000 */ +#define GPIO_MODER_MODER13 GPIO_MODER_MODER13_Msk +#define GPIO_MODER_MODER13_0 (0x1UL << GPIO_MODER_MODER13_Pos) /*!< 0x04000000 */ +#define GPIO_MODER_MODER13_1 (0x2UL << GPIO_MODER_MODER13_Pos) /*!< 0x08000000 */ + +#define GPIO_MODER_MODER14_Pos (28U) +#define GPIO_MODER_MODER14_Msk (0x3UL << GPIO_MODER_MODER14_Pos) /*!< 0x30000000 */ +#define GPIO_MODER_MODER14 GPIO_MODER_MODER14_Msk +#define GPIO_MODER_MODER14_0 (0x1UL << GPIO_MODER_MODER14_Pos) /*!< 0x10000000 */ +#define GPIO_MODER_MODER14_1 (0x2UL << GPIO_MODER_MODER14_Pos) /*!< 0x20000000 */ + +#define GPIO_MODER_MODER15_Pos (30U) +#define GPIO_MODER_MODER15_Msk (0x3UL << GPIO_MODER_MODER15_Pos) /*!< 0xC0000000 */ +#define GPIO_MODER_MODER15 GPIO_MODER_MODER15_Msk +#define GPIO_MODER_MODER15_0 (0x1UL << GPIO_MODER_MODER15_Pos) /*!< 0x40000000 */ +#define GPIO_MODER_MODER15_1 (0x2UL << GPIO_MODER_MODER15_Pos) /*!< 0x80000000 */ + +/* Legacy Defines */ +#define GPIO_MODER_MODE0_Pos GPIO_MODER_MODER0_Pos +#define GPIO_MODER_MODE0_Msk GPIO_MODER_MODER0_Msk +#define GPIO_MODER_MODE0 GPIO_MODER_MODER0 +#define GPIO_MODER_MODE0_0 GPIO_MODER_MODER0_0 +#define GPIO_MODER_MODE0_1 GPIO_MODER_MODER0_1 + +#define GPIO_MODER_MODE1_Pos GPIO_MODER_MODER1_Pos +#define GPIO_MODER_MODE1_Msk GPIO_MODER_MODER1_Msk +#define GPIO_MODER_MODE1 GPIO_MODER_MODER1 +#define GPIO_MODER_MODE1_0 GPIO_MODER_MODER1_0 +#define GPIO_MODER_MODE1_1 GPIO_MODER_MODER1_1 + +#define GPIO_MODER_MODE2_Pos GPIO_MODER_MODER2_Pos +#define GPIO_MODER_MODE2_Msk GPIO_MODER_MODER2_Msk +#define GPIO_MODER_MODE2 GPIO_MODER_MODER2 +#define GPIO_MODER_MODE2_0 GPIO_MODER_MODER2_0 +#define GPIO_MODER_MODE2_1 GPIO_MODER_MODER2_1 + +#define GPIO_MODER_MODE3_Pos GPIO_MODER_MODER3_Pos +#define GPIO_MODER_MODE3_Msk GPIO_MODER_MODER3_Msk +#define GPIO_MODER_MODE3 GPIO_MODER_MODER3 +#define GPIO_MODER_MODE3_0 GPIO_MODER_MODER3_0 +#define GPIO_MODER_MODE3_1 GPIO_MODER_MODER3_1 + +#define GPIO_MODER_MODE4_Pos GPIO_MODER_MODER4_Pos +#define GPIO_MODER_MODE4_Msk GPIO_MODER_MODER4_Msk +#define GPIO_MODER_MODE4 GPIO_MODER_MODER4 +#define GPIO_MODER_MODE4_0 GPIO_MODER_MODER4_0 +#define GPIO_MODER_MODE4_1 GPIO_MODER_MODER4_1 + +#define GPIO_MODER_MODE5_Pos GPIO_MODER_MODER5_Pos +#define GPIO_MODER_MODE5_Msk GPIO_MODER_MODER5_Msk +#define GPIO_MODER_MODE5 GPIO_MODER_MODER5 +#define GPIO_MODER_MODE5_0 GPIO_MODER_MODER5_0 +#define GPIO_MODER_MODE5_1 GPIO_MODER_MODER5_1 + +#define GPIO_MODER_MODE6_Pos GPIO_MODER_MODER6_Pos +#define GPIO_MODER_MODE6_Msk GPIO_MODER_MODER6_Msk +#define GPIO_MODER_MODE6 GPIO_MODER_MODER6 +#define GPIO_MODER_MODE6_0 GPIO_MODER_MODER6_0 +#define GPIO_MODER_MODE6_1 GPIO_MODER_MODER6_1 + +#define GPIO_MODER_MODE7_Pos GPIO_MODER_MODER7_Pos +#define GPIO_MODER_MODE7_Msk GPIO_MODER_MODER7_Msk +#define GPIO_MODER_MODE7 GPIO_MODER_MODER7 +#define GPIO_MODER_MODE7_0 GPIO_MODER_MODER7_0 +#define GPIO_MODER_MODE7_1 GPIO_MODER_MODER7_1 + +#define GPIO_MODER_MODE8_Pos GPIO_MODER_MODER8_Pos +#define GPIO_MODER_MODE8_Msk GPIO_MODER_MODER8_Msk +#define GPIO_MODER_MODE8 GPIO_MODER_MODER8 +#define GPIO_MODER_MODE8_0 GPIO_MODER_MODER8_0 +#define GPIO_MODER_MODE8_1 GPIO_MODER_MODER8_1 + +#define GPIO_MODER_MODE9_Pos GPIO_MODER_MODER9_Pos +#define GPIO_MODER_MODE9_Msk GPIO_MODER_MODER9_Msk +#define GPIO_MODER_MODE9 GPIO_MODER_MODER9 +#define GPIO_MODER_MODE9_0 GPIO_MODER_MODER9_0 +#define GPIO_MODER_MODE9_1 GPIO_MODER_MODER9_1 + +#define GPIO_MODER_MODE10_Pos GPIO_MODER_MODER10_Po +#define GPIO_MODER_MODE10_Msk GPIO_MODER_MODER10_Ms +#define GPIO_MODER_MODE10 GPIO_MODER_MODER10 +#define GPIO_MODER_MODE10_0 GPIO_MODER_MODER10_0 +#define GPIO_MODER_MODE10_1 GPIO_MODER_MODER10_1 + +#define GPIO_MODER_MODE11_Pos GPIO_MODER_MODER11_Po +#define GPIO_MODER_MODE11_Msk GPIO_MODER_MODER11_Ms +#define GPIO_MODER_MODE11 GPIO_MODER_MODER11 +#define GPIO_MODER_MODE11_0 GPIO_MODER_MODER11_0 +#define GPIO_MODER_MODE11_1 GPIO_MODER_MODER11_1 + +#define GPIO_MODER_MODE12_Pos GPIO_MODER_MODER12_Po +#define GPIO_MODER_MODE12_Msk GPIO_MODER_MODER12_Ms +#define GPIO_MODER_MODE12 GPIO_MODER_MODER12 +#define GPIO_MODER_MODE12_0 GPIO_MODER_MODER12_0 +#define GPIO_MODER_MODE12_1 GPIO_MODER_MODER12_1 + +#define GPIO_MODER_MODE13_Pos GPIO_MODER_MODER13_Po +#define GPIO_MODER_MODE13_Msk GPIO_MODER_MODER13_Ms +#define GPIO_MODER_MODE13 GPIO_MODER_MODER13 +#define GPIO_MODER_MODE13_0 GPIO_MODER_MODER13_0 +#define GPIO_MODER_MODE13_1 GPIO_MODER_MODER13_1 + +#define GPIO_MODER_MODE14_Pos GPIO_MODER_MODER14_Po +#define GPIO_MODER_MODE14_Msk GPIO_MODER_MODER14_Ms +#define GPIO_MODER_MODE14 GPIO_MODER_MODER14 +#define GPIO_MODER_MODE14_0 GPIO_MODER_MODER14_0 +#define GPIO_MODER_MODE14_1 GPIO_MODER_MODER14_1 + +#define GPIO_MODER_MODE15_Pos GPIO_MODER_MODER15_Po +#define GPIO_MODER_MODE15_Msk GPIO_MODER_MODER15_Ms +#define GPIO_MODER_MODE15 GPIO_MODER_MODER15 +#define GPIO_MODER_MODE15_0 GPIO_MODER_MODER15_0 +#define GPIO_MODER_MODE15_1 GPIO_MODER_MODER15_1 /****************** Bits definition for GPIO_OTYPER register ****************/ #define GPIO_OTYPER_OT0_Pos (0U) @@ -22128,7 +22225,7 @@ typedef struct #define DBGMCU_APB1HFZ1_DBG_TIM23_Pos (24U) #define DBGMCU_APB1HFZ1_DBG_TIM23_Msk (0x1UL << DBGMCU_APB1HFZ1_DBG_TIM23_Pos) /*!< 0x01000000 */ #define DBGMCU_APB1HFZ1_DBG_TIM23 DBGMCU_APB1HFZ1_DBG_TIM23_Msk -#define DBGMCU_APB1HFZ1_DBG_TIM24_Pos (24U) +#define DBGMCU_APB1HFZ1_DBG_TIM24_Pos (25U) #define DBGMCU_APB1HFZ1_DBG_TIM24_Msk (0x1UL << DBGMCU_APB1HFZ1_DBG_TIM24_Pos) /*!< 0x02000000 */ #define DBGMCU_APB1HFZ1_DBG_TIM24 DBGMCU_APB1HFZ1_DBG_TIM24_Msk /******************** Bit definition for APB2FZ1 register ************/ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h730xxq.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h730xxq.h index 01c6a27f..4601a20b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h730xxq.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h730xxq.h @@ -12040,101 +12040,198 @@ typedef struct /* */ /******************************************************************************/ /****************** Bits definition for GPIO_MODER register *****************/ -#define GPIO_MODER_MODE0_Pos (0U) -#define GPIO_MODER_MODE0_Msk (0x3UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000003 */ -#define GPIO_MODER_MODE0 GPIO_MODER_MODE0_Msk -#define GPIO_MODER_MODE0_0 (0x1UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000001 */ -#define GPIO_MODER_MODE0_1 (0x2UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000002 */ - -#define GPIO_MODER_MODE1_Pos (2U) -#define GPIO_MODER_MODE1_Msk (0x3UL << GPIO_MODER_MODE1_Pos) /*!< 0x0000000C */ -#define GPIO_MODER_MODE1 GPIO_MODER_MODE1_Msk -#define GPIO_MODER_MODE1_0 (0x1UL << GPIO_MODER_MODE1_Pos) /*!< 0x00000004 */ -#define GPIO_MODER_MODE1_1 (0x2UL << GPIO_MODER_MODE1_Pos) /*!< 0x00000008 */ - -#define GPIO_MODER_MODE2_Pos (4U) -#define GPIO_MODER_MODE2_Msk (0x3UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000030 */ -#define GPIO_MODER_MODE2 GPIO_MODER_MODE2_Msk -#define GPIO_MODER_MODE2_0 (0x1UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000010 */ -#define GPIO_MODER_MODE2_1 (0x2UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000020 */ - -#define GPIO_MODER_MODE3_Pos (6U) -#define GPIO_MODER_MODE3_Msk (0x3UL << GPIO_MODER_MODE3_Pos) /*!< 0x000000C0 */ -#define GPIO_MODER_MODE3 GPIO_MODER_MODE3_Msk -#define GPIO_MODER_MODE3_0 (0x1UL << GPIO_MODER_MODE3_Pos) /*!< 0x00000040 */ -#define GPIO_MODER_MODE3_1 (0x2UL << GPIO_MODER_MODE3_Pos) /*!< 0x00000080 */ - -#define GPIO_MODER_MODE4_Pos (8U) -#define GPIO_MODER_MODE4_Msk (0x3UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000300 */ -#define GPIO_MODER_MODE4 GPIO_MODER_MODE4_Msk -#define GPIO_MODER_MODE4_0 (0x1UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000100 */ -#define GPIO_MODER_MODE4_1 (0x2UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000200 */ - -#define GPIO_MODER_MODE5_Pos (10U) -#define GPIO_MODER_MODE5_Msk (0x3UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000C00 */ -#define GPIO_MODER_MODE5 GPIO_MODER_MODE5_Msk -#define GPIO_MODER_MODE5_0 (0x1UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000400 */ -#define GPIO_MODER_MODE5_1 (0x2UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000800 */ - -#define GPIO_MODER_MODE6_Pos (12U) -#define GPIO_MODER_MODE6_Msk (0x3UL << GPIO_MODER_MODE6_Pos) /*!< 0x00003000 */ -#define GPIO_MODER_MODE6 GPIO_MODER_MODE6_Msk -#define GPIO_MODER_MODE6_0 (0x1UL << GPIO_MODER_MODE6_Pos) /*!< 0x00001000 */ -#define GPIO_MODER_MODE6_1 (0x2UL << GPIO_MODER_MODE6_Pos) /*!< 0x00002000 */ - -#define GPIO_MODER_MODE7_Pos (14U) -#define GPIO_MODER_MODE7_Msk (0x3UL << GPIO_MODER_MODE7_Pos) /*!< 0x0000C000 */ -#define GPIO_MODER_MODE7 GPIO_MODER_MODE7_Msk -#define GPIO_MODER_MODE7_0 (0x1UL << GPIO_MODER_MODE7_Pos) /*!< 0x00004000 */ -#define GPIO_MODER_MODE7_1 (0x2UL << GPIO_MODER_MODE7_Pos) /*!< 0x00008000 */ - -#define GPIO_MODER_MODE8_Pos (16U) -#define GPIO_MODER_MODE8_Msk (0x3UL << GPIO_MODER_MODE8_Pos) /*!< 0x00030000 */ -#define GPIO_MODER_MODE8 GPIO_MODER_MODE8_Msk -#define GPIO_MODER_MODE8_0 (0x1UL << GPIO_MODER_MODE8_Pos) /*!< 0x00010000 */ -#define GPIO_MODER_MODE8_1 (0x2UL << GPIO_MODER_MODE8_Pos) /*!< 0x00020000 */ - -#define GPIO_MODER_MODE9_Pos (18U) -#define GPIO_MODER_MODE9_Msk (0x3UL << GPIO_MODER_MODE9_Pos) /*!< 0x000C0000 */ -#define GPIO_MODER_MODE9 GPIO_MODER_MODE9_Msk -#define GPIO_MODER_MODE9_0 (0x1UL << GPIO_MODER_MODE9_Pos) /*!< 0x00040000 */ -#define GPIO_MODER_MODE9_1 (0x2UL << GPIO_MODER_MODE9_Pos) /*!< 0x00080000 */ - -#define GPIO_MODER_MODE10_Pos (20U) -#define GPIO_MODER_MODE10_Msk (0x3UL << GPIO_MODER_MODE10_Pos) /*!< 0x00300000 */ -#define GPIO_MODER_MODE10 GPIO_MODER_MODE10_Msk -#define GPIO_MODER_MODE10_0 (0x1UL << GPIO_MODER_MODE10_Pos) /*!< 0x00100000 */ -#define GPIO_MODER_MODE10_1 (0x2UL << GPIO_MODER_MODE10_Pos) /*!< 0x00200000 */ - -#define GPIO_MODER_MODE11_Pos (22U) -#define GPIO_MODER_MODE11_Msk (0x3UL << GPIO_MODER_MODE11_Pos) /*!< 0x00C00000 */ -#define GPIO_MODER_MODE11 GPIO_MODER_MODE11_Msk -#define GPIO_MODER_MODE11_0 (0x1UL << GPIO_MODER_MODE11_Pos) /*!< 0x00400000 */ -#define GPIO_MODER_MODE11_1 (0x2UL << GPIO_MODER_MODE11_Pos) /*!< 0x00800000 */ - -#define GPIO_MODER_MODE12_Pos (24U) -#define GPIO_MODER_MODE12_Msk (0x3UL << GPIO_MODER_MODE12_Pos) /*!< 0x03000000 */ -#define GPIO_MODER_MODE12 GPIO_MODER_MODE12_Msk -#define GPIO_MODER_MODE12_0 (0x1UL << GPIO_MODER_MODE12_Pos) /*!< 0x01000000 */ -#define GPIO_MODER_MODE12_1 (0x2UL << GPIO_MODER_MODE12_Pos) /*!< 0x02000000 */ - -#define GPIO_MODER_MODE13_Pos (26U) -#define GPIO_MODER_MODE13_Msk (0x3UL << GPIO_MODER_MODE13_Pos) /*!< 0x0C000000 */ -#define GPIO_MODER_MODE13 GPIO_MODER_MODE13_Msk -#define GPIO_MODER_MODE13_0 (0x1UL << GPIO_MODER_MODE13_Pos) /*!< 0x04000000 */ -#define GPIO_MODER_MODE13_1 (0x2UL << GPIO_MODER_MODE13_Pos) /*!< 0x08000000 */ - -#define GPIO_MODER_MODE14_Pos (28U) -#define GPIO_MODER_MODE14_Msk (0x3UL << GPIO_MODER_MODE14_Pos) /*!< 0x30000000 */ -#define GPIO_MODER_MODE14 GPIO_MODER_MODE14_Msk -#define GPIO_MODER_MODE14_0 (0x1UL << GPIO_MODER_MODE14_Pos) /*!< 0x10000000 */ -#define GPIO_MODER_MODE14_1 (0x2UL << GPIO_MODER_MODE14_Pos) /*!< 0x20000000 */ - -#define GPIO_MODER_MODE15_Pos (30U) -#define GPIO_MODER_MODE15_Msk (0x3UL << GPIO_MODER_MODE15_Pos) /*!< 0xC0000000 */ -#define GPIO_MODER_MODE15 GPIO_MODER_MODE15_Msk -#define GPIO_MODER_MODE15_0 (0x1UL << GPIO_MODER_MODE15_Pos) /*!< 0x40000000 */ -#define GPIO_MODER_MODE15_1 (0x2UL << GPIO_MODER_MODE15_Pos) /*!< 0x80000000 */ +#define GPIO_MODER_MODER0_Pos (0U) +#define GPIO_MODER_MODER0_Msk (0x3UL << GPIO_MODER_MODER0_Pos) /*!< 0x00000003 */ +#define GPIO_MODER_MODER0 GPIO_MODER_MODER0_Msk +#define GPIO_MODER_MODER0_0 (0x1UL << GPIO_MODER_MODER0_Pos) /*!< 0x00000001 */ +#define GPIO_MODER_MODER0_1 (0x2UL << GPIO_MODER_MODER0_Pos) /*!< 0x00000002 */ + +#define GPIO_MODER_MODER1_Pos (2U) +#define GPIO_MODER_MODER1_Msk (0x3UL << GPIO_MODER_MODER1_Pos) /*!< 0x0000000C */ +#define GPIO_MODER_MODER1 GPIO_MODER_MODER1_Msk +#define GPIO_MODER_MODER1_0 (0x1UL << GPIO_MODER_MODER1_Pos) /*!< 0x00000004 */ +#define GPIO_MODER_MODER1_1 (0x2UL << GPIO_MODER_MODER1_Pos) /*!< 0x00000008 */ + +#define GPIO_MODER_MODER2_Pos (4U) +#define GPIO_MODER_MODER2_Msk (0x3UL << GPIO_MODER_MODER2_Pos) /*!< 0x00000030 */ +#define GPIO_MODER_MODER2 GPIO_MODER_MODER2_Msk +#define GPIO_MODER_MODER2_0 (0x1UL << GPIO_MODER_MODER2_Pos) /*!< 0x00000010 */ +#define GPIO_MODER_MODER2_1 (0x2UL << GPIO_MODER_MODER2_Pos) /*!< 0x00000020 */ + +#define GPIO_MODER_MODER3_Pos (6U) +#define GPIO_MODER_MODER3_Msk (0x3UL << GPIO_MODER_MODER3_Pos) /*!< 0x000000C0 */ +#define GPIO_MODER_MODER3 GPIO_MODER_MODER3_Msk +#define GPIO_MODER_MODER3_0 (0x1UL << GPIO_MODER_MODER3_Pos) /*!< 0x00000040 */ +#define GPIO_MODER_MODER3_1 (0x2UL << GPIO_MODER_MODER3_Pos) /*!< 0x00000080 */ + +#define GPIO_MODER_MODER4_Pos (8U) +#define GPIO_MODER_MODER4_Msk (0x3UL << GPIO_MODER_MODER4_Pos) /*!< 0x00000300 */ +#define GPIO_MODER_MODER4 GPIO_MODER_MODER4_Msk +#define GPIO_MODER_MODER4_0 (0x1UL << GPIO_MODER_MODER4_Pos) /*!< 0x00000100 */ +#define GPIO_MODER_MODER4_1 (0x2UL << GPIO_MODER_MODER4_Pos) /*!< 0x00000200 */ + +#define GPIO_MODER_MODER5_Pos (10U) +#define GPIO_MODER_MODER5_Msk (0x3UL << GPIO_MODER_MODER5_Pos) /*!< 0x00000C00 */ +#define GPIO_MODER_MODER5 GPIO_MODER_MODER5_Msk +#define GPIO_MODER_MODER5_0 (0x1UL << GPIO_MODER_MODER5_Pos) /*!< 0x00000400 */ +#define GPIO_MODER_MODER5_1 (0x2UL << GPIO_MODER_MODER5_Pos) /*!< 0x00000800 */ + +#define GPIO_MODER_MODER6_Pos (12U) +#define GPIO_MODER_MODER6_Msk (0x3UL << GPIO_MODER_MODER6_Pos) /*!< 0x00003000 */ +#define GPIO_MODER_MODER6 GPIO_MODER_MODER6_Msk +#define GPIO_MODER_MODER6_0 (0x1UL << GPIO_MODER_MODER6_Pos) /*!< 0x00001000 */ +#define GPIO_MODER_MODER6_1 (0x2UL << GPIO_MODER_MODER6_Pos) /*!< 0x00002000 */ + +#define GPIO_MODER_MODER7_Pos (14U) +#define GPIO_MODER_MODER7_Msk (0x3UL << GPIO_MODER_MODER7_Pos) /*!< 0x0000C000 */ +#define GPIO_MODER_MODER7 GPIO_MODER_MODER7_Msk +#define GPIO_MODER_MODER7_0 (0x1UL << GPIO_MODER_MODER7_Pos) /*!< 0x00004000 */ +#define GPIO_MODER_MODER7_1 (0x2UL << GPIO_MODER_MODER7_Pos) /*!< 0x00008000 */ + +#define GPIO_MODER_MODER8_Pos (16U) +#define GPIO_MODER_MODER8_Msk (0x3UL << GPIO_MODER_MODER8_Pos) /*!< 0x00030000 */ +#define GPIO_MODER_MODER8 GPIO_MODER_MODER8_Msk +#define GPIO_MODER_MODER8_0 (0x1UL << GPIO_MODER_MODER8_Pos) /*!< 0x00010000 */ +#define GPIO_MODER_MODER8_1 (0x2UL << GPIO_MODER_MODER8_Pos) /*!< 0x00020000 */ + +#define GPIO_MODER_MODER9_Pos (18U) +#define GPIO_MODER_MODER9_Msk (0x3UL << GPIO_MODER_MODER9_Pos) /*!< 0x000C0000 */ +#define GPIO_MODER_MODER9 GPIO_MODER_MODER9_Msk +#define GPIO_MODER_MODER9_0 (0x1UL << GPIO_MODER_MODER9_Pos) /*!< 0x00040000 */ +#define GPIO_MODER_MODER9_1 (0x2UL << GPIO_MODER_MODER9_Pos) /*!< 0x00080000 */ + +#define GPIO_MODER_MODER10_Pos (20U) +#define GPIO_MODER_MODER10_Msk (0x3UL << GPIO_MODER_MODER10_Pos) /*!< 0x00300000 */ +#define GPIO_MODER_MODER10 GPIO_MODER_MODER10_Msk +#define GPIO_MODER_MODER10_0 (0x1UL << GPIO_MODER_MODER10_Pos) /*!< 0x00100000 */ +#define GPIO_MODER_MODER10_1 (0x2UL << GPIO_MODER_MODER10_Pos) /*!< 0x00200000 */ + +#define GPIO_MODER_MODER11_Pos (22U) +#define GPIO_MODER_MODER11_Msk (0x3UL << GPIO_MODER_MODER11_Pos) /*!< 0x00C00000 */ +#define GPIO_MODER_MODER11 GPIO_MODER_MODER11_Msk +#define GPIO_MODER_MODER11_0 (0x1UL << GPIO_MODER_MODER11_Pos) /*!< 0x00400000 */ +#define GPIO_MODER_MODER11_1 (0x2UL << GPIO_MODER_MODER11_Pos) /*!< 0x00800000 */ + +#define GPIO_MODER_MODER12_Pos (24U) +#define GPIO_MODER_MODER12_Msk (0x3UL << GPIO_MODER_MODER12_Pos) /*!< 0x03000000 */ +#define GPIO_MODER_MODER12 GPIO_MODER_MODER12_Msk +#define GPIO_MODER_MODER12_0 (0x1UL << GPIO_MODER_MODER12_Pos) /*!< 0x01000000 */ +#define GPIO_MODER_MODER12_1 (0x2UL << GPIO_MODER_MODER12_Pos) /*!< 0x02000000 */ + +#define GPIO_MODER_MODER13_Pos (26U) +#define GPIO_MODER_MODER13_Msk (0x3UL << GPIO_MODER_MODER13_Pos) /*!< 0x0C000000 */ +#define GPIO_MODER_MODER13 GPIO_MODER_MODER13_Msk +#define GPIO_MODER_MODER13_0 (0x1UL << GPIO_MODER_MODER13_Pos) /*!< 0x04000000 */ +#define GPIO_MODER_MODER13_1 (0x2UL << GPIO_MODER_MODER13_Pos) /*!< 0x08000000 */ + +#define GPIO_MODER_MODER14_Pos (28U) +#define GPIO_MODER_MODER14_Msk (0x3UL << GPIO_MODER_MODER14_Pos) /*!< 0x30000000 */ +#define GPIO_MODER_MODER14 GPIO_MODER_MODER14_Msk +#define GPIO_MODER_MODER14_0 (0x1UL << GPIO_MODER_MODER14_Pos) /*!< 0x10000000 */ +#define GPIO_MODER_MODER14_1 (0x2UL << GPIO_MODER_MODER14_Pos) /*!< 0x20000000 */ + +#define GPIO_MODER_MODER15_Pos (30U) +#define GPIO_MODER_MODER15_Msk (0x3UL << GPIO_MODER_MODER15_Pos) /*!< 0xC0000000 */ +#define GPIO_MODER_MODER15 GPIO_MODER_MODER15_Msk +#define GPIO_MODER_MODER15_0 (0x1UL << GPIO_MODER_MODER15_Pos) /*!< 0x40000000 */ +#define GPIO_MODER_MODER15_1 (0x2UL << GPIO_MODER_MODER15_Pos) /*!< 0x80000000 */ + +/* Legacy Defines */ +#define GPIO_MODER_MODE0_Pos GPIO_MODER_MODER0_Pos +#define GPIO_MODER_MODE0_Msk GPIO_MODER_MODER0_Msk +#define GPIO_MODER_MODE0 GPIO_MODER_MODER0 +#define GPIO_MODER_MODE0_0 GPIO_MODER_MODER0_0 +#define GPIO_MODER_MODE0_1 GPIO_MODER_MODER0_1 + +#define GPIO_MODER_MODE1_Pos GPIO_MODER_MODER1_Pos +#define GPIO_MODER_MODE1_Msk GPIO_MODER_MODER1_Msk +#define GPIO_MODER_MODE1 GPIO_MODER_MODER1 +#define GPIO_MODER_MODE1_0 GPIO_MODER_MODER1_0 +#define GPIO_MODER_MODE1_1 GPIO_MODER_MODER1_1 + +#define GPIO_MODER_MODE2_Pos GPIO_MODER_MODER2_Pos +#define GPIO_MODER_MODE2_Msk GPIO_MODER_MODER2_Msk +#define GPIO_MODER_MODE2 GPIO_MODER_MODER2 +#define GPIO_MODER_MODE2_0 GPIO_MODER_MODER2_0 +#define GPIO_MODER_MODE2_1 GPIO_MODER_MODER2_1 + +#define GPIO_MODER_MODE3_Pos GPIO_MODER_MODER3_Pos +#define GPIO_MODER_MODE3_Msk GPIO_MODER_MODER3_Msk +#define GPIO_MODER_MODE3 GPIO_MODER_MODER3 +#define GPIO_MODER_MODE3_0 GPIO_MODER_MODER3_0 +#define GPIO_MODER_MODE3_1 GPIO_MODER_MODER3_1 + +#define GPIO_MODER_MODE4_Pos GPIO_MODER_MODER4_Pos +#define GPIO_MODER_MODE4_Msk GPIO_MODER_MODER4_Msk +#define GPIO_MODER_MODE4 GPIO_MODER_MODER4 +#define GPIO_MODER_MODE4_0 GPIO_MODER_MODER4_0 +#define GPIO_MODER_MODE4_1 GPIO_MODER_MODER4_1 + +#define GPIO_MODER_MODE5_Pos GPIO_MODER_MODER5_Pos +#define GPIO_MODER_MODE5_Msk GPIO_MODER_MODER5_Msk +#define GPIO_MODER_MODE5 GPIO_MODER_MODER5 +#define GPIO_MODER_MODE5_0 GPIO_MODER_MODER5_0 +#define GPIO_MODER_MODE5_1 GPIO_MODER_MODER5_1 + +#define GPIO_MODER_MODE6_Pos GPIO_MODER_MODER6_Pos +#define GPIO_MODER_MODE6_Msk GPIO_MODER_MODER6_Msk +#define GPIO_MODER_MODE6 GPIO_MODER_MODER6 +#define GPIO_MODER_MODE6_0 GPIO_MODER_MODER6_0 +#define GPIO_MODER_MODE6_1 GPIO_MODER_MODER6_1 + +#define GPIO_MODER_MODE7_Pos GPIO_MODER_MODER7_Pos +#define GPIO_MODER_MODE7_Msk GPIO_MODER_MODER7_Msk +#define GPIO_MODER_MODE7 GPIO_MODER_MODER7 +#define GPIO_MODER_MODE7_0 GPIO_MODER_MODER7_0 +#define GPIO_MODER_MODE7_1 GPIO_MODER_MODER7_1 + +#define GPIO_MODER_MODE8_Pos GPIO_MODER_MODER8_Pos +#define GPIO_MODER_MODE8_Msk GPIO_MODER_MODER8_Msk +#define GPIO_MODER_MODE8 GPIO_MODER_MODER8 +#define GPIO_MODER_MODE8_0 GPIO_MODER_MODER8_0 +#define GPIO_MODER_MODE8_1 GPIO_MODER_MODER8_1 + +#define GPIO_MODER_MODE9_Pos GPIO_MODER_MODER9_Pos +#define GPIO_MODER_MODE9_Msk GPIO_MODER_MODER9_Msk +#define GPIO_MODER_MODE9 GPIO_MODER_MODER9 +#define GPIO_MODER_MODE9_0 GPIO_MODER_MODER9_0 +#define GPIO_MODER_MODE9_1 GPIO_MODER_MODER9_1 + +#define GPIO_MODER_MODE10_Pos GPIO_MODER_MODER10_Po +#define GPIO_MODER_MODE10_Msk GPIO_MODER_MODER10_Ms +#define GPIO_MODER_MODE10 GPIO_MODER_MODER10 +#define GPIO_MODER_MODE10_0 GPIO_MODER_MODER10_0 +#define GPIO_MODER_MODE10_1 GPIO_MODER_MODER10_1 + +#define GPIO_MODER_MODE11_Pos GPIO_MODER_MODER11_Po +#define GPIO_MODER_MODE11_Msk GPIO_MODER_MODER11_Ms +#define GPIO_MODER_MODE11 GPIO_MODER_MODER11 +#define GPIO_MODER_MODE11_0 GPIO_MODER_MODER11_0 +#define GPIO_MODER_MODE11_1 GPIO_MODER_MODER11_1 + +#define GPIO_MODER_MODE12_Pos GPIO_MODER_MODER12_Po +#define GPIO_MODER_MODE12_Msk GPIO_MODER_MODER12_Ms +#define GPIO_MODER_MODE12 GPIO_MODER_MODER12 +#define GPIO_MODER_MODE12_0 GPIO_MODER_MODER12_0 +#define GPIO_MODER_MODE12_1 GPIO_MODER_MODER12_1 + +#define GPIO_MODER_MODE13_Pos GPIO_MODER_MODER13_Po +#define GPIO_MODER_MODE13_Msk GPIO_MODER_MODER13_Ms +#define GPIO_MODER_MODE13 GPIO_MODER_MODER13 +#define GPIO_MODER_MODE13_0 GPIO_MODER_MODER13_0 +#define GPIO_MODER_MODE13_1 GPIO_MODER_MODER13_1 + +#define GPIO_MODER_MODE14_Pos GPIO_MODER_MODER14_Po +#define GPIO_MODER_MODE14_Msk GPIO_MODER_MODER14_Ms +#define GPIO_MODER_MODE14 GPIO_MODER_MODER14 +#define GPIO_MODER_MODE14_0 GPIO_MODER_MODER14_0 +#define GPIO_MODER_MODE14_1 GPIO_MODER_MODER14_1 + +#define GPIO_MODER_MODE15_Pos GPIO_MODER_MODER15_Po +#define GPIO_MODER_MODE15_Msk GPIO_MODER_MODER15_Ms +#define GPIO_MODER_MODE15 GPIO_MODER_MODER15 +#define GPIO_MODER_MODE15_0 GPIO_MODER_MODER15_0 +#define GPIO_MODER_MODE15_1 GPIO_MODER_MODER15_1 /****************** Bits definition for GPIO_OTYPER register ****************/ #define GPIO_OTYPER_OT0_Pos (0U) @@ -22140,7 +22237,7 @@ typedef struct #define DBGMCU_APB1HFZ1_DBG_TIM23_Pos (24U) #define DBGMCU_APB1HFZ1_DBG_TIM23_Msk (0x1UL << DBGMCU_APB1HFZ1_DBG_TIM23_Pos) /*!< 0x01000000 */ #define DBGMCU_APB1HFZ1_DBG_TIM23 DBGMCU_APB1HFZ1_DBG_TIM23_Msk -#define DBGMCU_APB1HFZ1_DBG_TIM24_Pos (24U) +#define DBGMCU_APB1HFZ1_DBG_TIM24_Pos (25U) #define DBGMCU_APB1HFZ1_DBG_TIM24_Msk (0x1UL << DBGMCU_APB1HFZ1_DBG_TIM24_Pos) /*!< 0x02000000 */ #define DBGMCU_APB1HFZ1_DBG_TIM24 DBGMCU_APB1HFZ1_DBG_TIM24_Msk /******************** Bit definition for APB2FZ1 register ************/ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h733xx.h b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h733xx.h index 21823273..8d9f1048 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h733xx.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/modules/hal/stm32/stm32cube/stm32h7xx/soc/stm32h733xx.h @@ -11981,7 +11981,7 @@ typedef struct #define FMC_SDCMR_MODE FMC_SDCMR_MODE_Msk /*! #include /* Common values */ -#define PICOS_IN_SEC 1000000000000 -#define BITS_PER_BYTE 8 +#define PICOS_IN_SEC 1000000000000 /* MMCM specific numbers */ #define CLKOUT_MAX 7 @@ -73,7 +73,7 @@ lcko->margin.exp = CLKOUT_MARGIN_EXP(N); /* Devicetree clkout defines */ -#define CLKOUT_EXIST(N) DT_NODE_HAS_STATUS(DT_NODELABEL(clk##N), okay) +#define CLKOUT_EXIST(N) DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(clk##N)) #define CLKOUT_ID(N) DT_REG_ADDR(DT_NODELABEL(clk##N)) #define CLKOUT_FREQ(N) DT_PROP(DT_NODELABEL(clk##N), \ litex_clock_frequency) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/clock_control/clock_control_nrf2_common.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/clock_control/clock_control_nrf2_common.h new file mode 100644 index 00000000..858698c3 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/clock_control/clock_control_nrf2_common.h @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_CLOCK_CONTROL_NRF2_COMMON_H_ +#define ZEPHYR_DRIVERS_CLOCK_CONTROL_NRF2_COMMON_H_ + +#include +#include +#include +#include +#include + +#define FLAGS_COMMON_BITS 10 + +struct clock_onoff { + struct onoff_manager mgr; + onoff_notify_fn notify; + uint8_t idx; +}; + +/** + * @brief Defines a type for specific clock configuration structure. + * + * @param type suffix added clock_config_ to form the type name. + * @param _onoff_cnt number of clock configuration options to be handled; + * for each one a separate onoff manager instance is used. + */ +#define STRUCT_CLOCK_CONFIG(type, _onoff_cnt) \ + struct clock_config_##type { \ + atomic_t flags; \ + uint32_t flags_snapshot; \ + struct k_work work; \ + uint8_t onoff_cnt; \ + struct clock_onoff onoff[_onoff_cnt]; \ + } + +/** + * @brief Initializes a clock configuration structure. + * + * @param clk_cfg pointer to the structure to be initialized. + * @param onoff_cnt number of clock configuration options handled + * handled by the structure. + * @param update_work_handler function that performs configuration update, + * called from the system work queue. + * + * @return 0 on success, negative value when onoff initialization fails. + */ +int clock_config_init(void *clk_cfg, uint8_t onoff_cnt, k_work_handler_t update_work_handler); + +/** + * @brief Starts a clock configuration update. + * + * This function is supposed to be called by a specific clock control driver + * from its update work handler. + * + * @param work pointer to the work item received by the update work handler. + * + * @return index of the clock configuration onoff option to be activated. + */ +uint8_t clock_config_update_begin(struct k_work *work); + +/** + * @brief Finalizes a clock configuration update. + * + * Notifies all relevant onoff managers about the update result. + * Only the first call after each clock_config_update_begin() performs + * the actual operation. Any further calls are simply no-ops. + * + * @param clk_cfg pointer to the clock configuration structure. + * @param status result to be passed to onoff managers. + */ +void clock_config_update_end(void *clk_cfg, int status); + +int api_nosys_on_off(const struct device *dev, clock_control_subsys_t sys); + +#endif /* ZEPHYR_DRIVERS_CLOCK_CONTROL_NRF2_COMMON_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/clock_control/clock_stm32_ll_common.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/clock_control/clock_stm32_ll_common.h index a97d0133..1988bb06 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/clock_control/clock_stm32_ll_common.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/clock_control/clock_stm32_ll_common.h @@ -27,9 +27,18 @@ #define z_pllr(v) LL_RCC_PLLR_DIV_ ## v #define pllr(v) z_pllr(v) +#if defined(RCC_PLLI2SCFGR_PLLI2SM) +/* Some stm32F4 devices have a dedicated PLL I2S with M divider */ #define z_plli2s_m(v) LL_RCC_PLLI2SM_DIV_ ## v +#else +/* Some stm32F4 devices (typ. stm32F401) have a dedicated PLL I2S with PLL M divider */ +#define z_plli2s_m(v) LL_RCC_PLLM_DIV_ ## v +#endif /* RCC_PLLI2SCFGR_PLLI2SM */ #define plli2sm(v) z_plli2s_m(v) +#define z_plli2s_q(v) LL_RCC_PLLI2SQ_DIV_ ## v +#define plli2sq(v) z_plli2s_q(v) + #define z_plli2s_r(v) LL_RCC_PLLI2SR_DIV_ ## v #define plli2sr(v) z_plli2s_r(v) @@ -50,6 +59,11 @@ void config_plli2s(void); #endif void config_enable_default_clocks(void); void config_regulator_voltage(uint32_t hclk_freq); +int enabled_clock(uint32_t src_clk); + +#if defined(STM32_CK48_ENABLED) +uint32_t get_ck48_frequency(void); +#endif /* functions exported to the soc power.c */ int stm32_clock_control_init(const struct device *dev); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/crypto/crypto_stm32_priv.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/crypto/crypto_stm32_priv.h index 374cc33b..e74b33be 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/crypto/crypto_stm32_priv.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/crypto/crypto_stm32_priv.h @@ -8,10 +8,17 @@ #ifndef ZEPHYR_DRIVERS_CRYPTO_CRYPTO_STM32_PRIV_H_ #define ZEPHYR_DRIVERS_CRYPTO_CRYPTO_STM32_PRIV_H_ +#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32l4_aes) +#define crypt_config_t CRYP_InitTypeDef +#else +#define crypt_config_t CRYP_ConfigTypeDef +#endif + /* Maximum supported key length is 256 bits */ #define CRYPTO_STM32_AES_MAX_KEY_LEN (256 / 8) struct crypto_stm32_config { + const struct reset_dt_spec reset; struct stm32_pclken pclken; }; @@ -22,7 +29,7 @@ struct crypto_stm32_data { }; struct crypto_stm32_session { - CRYP_ConfigTypeDef config; + crypt_config_t config; uint32_t key[CRYPTO_STM32_AES_MAX_KEY_LEN / sizeof(uint32_t)]; bool in_use; }; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/dmic/dmic.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/dmic/dmic.h index d690c0cd..9b7d8c03 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/dmic/dmic.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/dmic/dmic.h @@ -173,7 +173,7 @@ struct dai_intel_dmic { /* hardware parameters */ uint32_t reg_base; uint32_t shim_base; -#if defined(CONFIG_SOC_INTEL_ACE20_LNL) || defined(CONFIG_SOC_INTEL_ACE30_PTL) +#if defined(CONFIG_SOC_INTEL_ACE20_LNL) || defined(CONFIG_SOC_INTEL_ACE30) uint32_t hdamldmic_base; uint32_t vshim_base; #endif @@ -185,12 +185,13 @@ struct dai_intel_dmic { static inline int32_t sat_int32(int64_t x) { - if (x > INT32_MAX) + if (x > INT32_MAX) { return INT32_MAX; - else if (x < INT32_MIN) + } else if (x < INT32_MIN) { return INT32_MIN; - else + } else { return (int32_t)x; + } } /* Fractional multiplication with shift and saturation */ static inline int32_t q_multsr_sat_32x32(int32_t x, int32_t y, @@ -205,11 +206,13 @@ static inline int dmic_get_unmute_ramp_from_samplerate(int rate) time_ms = Q_MULTSR_32X32((int32_t)rate, LOGRAMP_TIME_COEF_Q15, 0, 15, 0) + LOGRAMP_TIME_OFFS_Q0; - if (time_ms > LOGRAMP_TIME_MAX_MS) + if (time_ms > LOGRAMP_TIME_MAX_MS) { return LOGRAMP_TIME_MAX_MS; + } - if (time_ms < LOGRAMP_TIME_MIN_MS) + if (time_ms < LOGRAMP_TIME_MIN_MS) { return LOGRAMP_TIME_MIN_MS; + } return time_ms; } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/dai-params-intel-ipc4.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/dai-params-intel-ipc4.h index a92f06d6..46acee04 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/dai-params-intel-ipc4.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/dai-params-intel-ipc4.h @@ -231,18 +231,27 @@ struct dai_intel_ipc4_ssp_config { uint32_t ssc1; uint32_t sscto; uint32_t sspsp; -#ifndef CONFIG_SOC_INTEL_ACE30_PTL uint32_t sstsa; uint32_t ssrsa; -#endif uint32_t ssc2; uint32_t sspsp2; uint32_t ssc3; uint32_t ssioc; -#ifdef CONFIG_SOC_INTEL_ACE30_PTL +} __packed; + +struct dai_intel_ipc4_ssp_config_ver_3_0 { + uint32_t ssc0; + uint32_t ssc1; + uint32_t sscto; + uint32_t sspsp; + uint32_t ssc2; + uint32_t sspsp2; + uint32_t ssc3; + uint32_t ssioc; + /* Specifies which time slots the DMA FIFO will receive from the SSP Interface*/ uint64_t ssmidytsa[I2SIPCMC]; + /* Specifies which time slots the DMA FIFO will transmit to the SSP Interface */ uint64_t ssmodytsa[I2SOPCMC]; -#endif } __packed; struct dai_intel_ipc4_ssp_mclk_config { @@ -260,7 +269,11 @@ struct dai_intel_ipc4_ssp_mclk_config_2 { } __packed; struct dai_intel_ipc4_ssp_driver_config { +#ifdef CONFIG_SOC_INTEL_ACE30 + struct dai_intel_ipc4_ssp_config_ver_3_0 i2s_config; +#else struct dai_intel_ipc4_ssp_config i2s_config; +#endif struct dai_intel_ipc4_ssp_mclk_config mclk_config; } __packed; @@ -320,7 +333,7 @@ struct dai_intel_ipc4_ssp_configuration_blob { struct dai_intel_ipc4_ssp_driver_config i2s_driver_config; /* optional configuration parameters */ - union dai_intel_ipc4_ssp_dma_control i2s_dma_control[0]; + FLEXIBLE_ARRAY_DECLARE(union dai_intel_ipc4_ssp_dma_control, i2s_dma_control); } __packed; #define SSP_BLOB_VER_1_5 0xee000105 @@ -340,4 +353,21 @@ struct dai_intel_ipc4_ssp_configuration_blob_ver_1_5 { struct dai_intel_ipc4_ssp_mclk_config_2 i2s_mclk_control; } __packed; +#define SSP_BLOB_VER_3_0 0xee000300 + +struct dai_intel_ipc4_ssp_configuration_blob_ver_3_0 { + union dai_intel_ipc4_gateway_attributes gw_attr; + + uint32_t version; + uint32_t size; + + /* TDM time slot mappings */ + uint32_t tdm_ts_group[DAI_INTEL_I2S_TDM_MAX_SLOT_MAP_COUNT]; + + /* i2s port configuration */ + struct dai_intel_ipc4_ssp_config_ver_3_0 i2s_ssp_config; + /* clock configuration parameters */ + struct dai_intel_ipc4_ssp_mclk_config_2 i2s_mclk_control; +} __packed; + #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp.h index 560b5d3d..d85a95aa 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp.h @@ -7,6 +7,24 @@ #ifndef __INTEL_DAI_DRIVER_SSP_H__ #define __INTEL_DAI_DRIVER_SSP_H__ +#define SSP_IP_VER_1_0 0x10000 /* cAVS */ +#define SSP_IP_VER_1_5 0x10500 /* ACE15 */ +#define SSP_IP_VER_2_0 0x20000 /* ACE20 */ +#define SSP_IP_VER_3_0 0x30000 /* ACE30 */ + +/* SSP IP version defined by CONFIG_SOC*/ +#if defined(CONFIG_SOC_SERIES_INTEL_ADSP_CAVS) +#define SSP_IP_VER SSP_IP_VER_1_0 +#elif defined(CONFIG_SOC_INTEL_ACE15_MTPM) +#define SSP_IP_VER SSP_IP_VER_1_5 +#elif defined(CONFIG_SOC_INTEL_ACE20_LNL) +#define SSP_IP_VER SSP_IP_VER_2_0 +#elif defined(CONFIG_SOC_INTEL_ACE30) +#define SSP_IP_VER SSP_IP_VER_3_0 +#else +#error "Unknown SSP IP" +#endif + #include #include #include "dai-params-intel-ipc3.h" @@ -52,13 +70,13 @@ #include "ssp_regs_v1.h" #elif defined(CONFIG_SOC_INTEL_ACE20_LNL) #include "ssp_regs_v2.h" -#elif defined(CONFIG_SOC_INTEL_ACE30_PTL) +#elif defined(CONFIG_SOC_INTEL_ACE30) #include "ssp_regs_v3.h" #else #error "Missing ssp definitions" #endif -#if CONFIG_INTEL_MN +#if SSP_IP_VER == SSP_IP_VER_1_0 /** \brief BCLKs can be driven by multiple sources - M/N or XTAL directly. * Even in the case of M/N, the actual clock source can be XTAL, * Audio cardinal clock (24.576) or 96 MHz PLL. @@ -86,7 +104,7 @@ struct dai_intel_ssp_mn { int mclk_rate[DAI_INTEL_SSP_NUM_MCLK]; int mclk_source_clock; -#if CONFIG_INTEL_MN +#if SSP_IP_VER == SSP_IP_VER_1_0 enum bclk_source bclk_sources[(CONFIG_DAI_INTEL_SSP_NUM_BASE + CONFIG_DAI_INTEL_SSP_NUM_EXT)]; int bclk_source_mn_clock; @@ -116,7 +134,7 @@ struct dai_intel_ssp_plat_data { uint32_t base; uint32_t ip_base; uint32_t shim_base; -#if defined(CONFIG_SOC_INTEL_ACE20_LNL) || defined(CONFIG_SOC_INTEL_ACE30_PTL) +#if SSP_IP_VER > SSP_IP_VER_1_5 uint32_t hdamlssp_base; uint32_t i2svss_base; #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp_regs_v1.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp_regs_v1.h index a821ab87..ba76de12 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp_regs_v1.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp_regs_v1.h @@ -215,7 +215,7 @@ #define I2SLCTL_SPA(x) BIT(0 + x) #define I2SLCTL_CPA(x) BIT(8 + x) -#define I2CLCTL_MLCS(x) DAI_INTEL_SSP_SET_BITS(30, 27, x) +#define I2CLCTL_MLCS(x) DAI_INTEL_SSP_SET_BITS(29, 27, x) #define SHIM_CLKCTL 0x78 #define SHIM_CLKCTL_I2SFDCGB(x) BIT(20 + x) #define SHIM_CLKCTL_I2SEFDCGB(x) BIT(18 + x) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp_regs_v2.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp_regs_v2.h index e2d1c826..72ff40b7 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp_regs_v2.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp_regs_v2.h @@ -218,7 +218,7 @@ #define PCMS0CM_OFFSET 0x16 #define PCMS1CM_OFFSET 0x1A -#define I2CLCTL_MLCS(x) DAI_INTEL_SSP_SET_BITS(30, 27, x) +#define I2CLCTL_MLCS(x) DAI_INTEL_SSP_SET_BITS(29, 27, x) #define SHIM_CLKCTL 0x78 #define SHIM_CLKCTL_I2SFDCGB(x) BIT(20 + x) #define SHIM_CLKCTL_I2SEFDCGB(x) BIT(18 + x) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp_regs_v3.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp_regs_v3.h index 5990404c..e11f5543 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp_regs_v3.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/intel/ssp/ssp_regs_v3.h @@ -215,7 +215,7 @@ #define I2SLCTL_SPA(x) BIT(16 + x) #define I2SLCTL_CPA(x) BIT(23 + x) -#define I2CLCTL_MLCS(x) DAI_INTEL_SSP_SET_BITS(30, 27, x) +#define I2CLCTL_MLCS(x) DAI_INTEL_SSP_SET_BITS(29, 27, x) #define SHIM_CLKCTL 0x78 #define SHIM_CLKCTL_I2SFDCGB(x) BIT(20 + x) #define SHIM_CLKCTL_I2SEFDCGB(x) BIT(18 + x) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/nxp/sai/sai.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/nxp/sai/sai.h index 2fa890e9..07042744 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/nxp/sai/sai.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dai/nxp/sai/sai.h @@ -38,7 +38,7 @@ LOG_MODULE_REGISTER(nxp_dai_sai); /* used to retrieve a clock's ID using its index generated via _SAI_CLOCK_INDEX_ARRAY */ #define _SAI_GET_CLOCK_ID(clock_idx, inst)\ - DT_INST_CLOCKS_CELL_BY_IDX(inst, clock_idx, name) + DT_INST_PHA_BY_IDX_OR(inst, clocks, clock_idx, name, 0x0) /* used to retrieve a clock's name using its index generated via _SAI_CLOCK_INDEX_ARRAY */ #define _SAI_GET_CLOCK_NAME(clock_idx, inst)\ @@ -210,6 +210,11 @@ LOG_MODULE_REGISTER(nxp_dai_sai); ((dir) == DAI_DIR_RX ? ((UINT_TO_I2S(regmap))->RCSR & (which)) : \ ((UINT_TO_I2S(regmap))->TCSR & (which))) +/* used to clear status flags */ +#define SAI_TX_RX_STATUS_CLEAR(dir, regmap, which) \ + ((dir) == DAI_DIR_RX ? SAI_RxClearStatusFlags(UINT_TO_I2S(regmap), which) \ + : SAI_TxClearStatusFlags(UINT_TO_I2S(regmap), which)) + /* used to retrieve the SYNC direction. Use this macro when you know for sure * you have 1 SYNC direction with 1 ASYNC direction. */ @@ -254,6 +259,7 @@ struct sai_data { struct sai_config { uint32_t regmap_phys; uint32_t regmap_size; + uint32_t irq; struct sai_clock_data clk_data; bool mclk_is_output; /* if the tx/rx-fifo-watermark properties are not specified, it's going diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9340.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9340.h index 50836b03..aaa0d2bf 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9340.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9340.h @@ -50,7 +50,7 @@ struct ili9340_regs { /* Initializer macro for ILI9340 registers. */ #define ILI9340_REGS_INIT(n) \ - static const struct ili9340_regs ili9xxx_regs_##n = { \ + static const struct ili9340_regs ili9340_regs_##n = { \ .gamset = DT_PROP(DT_INST(n, ilitek_ili9340), gamset), \ .frmctr1 = DT_PROP(DT_INST(n, ilitek_ili9340), frmctr1), \ .disctrl = DT_PROP(DT_INST(n, ilitek_ili9340), disctrl), \ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9341.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9341.h index 5ffd60fc..b46f6ba9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9341.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9341.h @@ -121,7 +121,7 @@ struct ili9341_regs { "ili9341: Error length frame rate control (IFCTL) register"); \ BUILD_ASSERT(DT_PROP_LEN(DT_INST(n, ilitek_ili9341), etmod) == ILI9341_ETMOD_LEN, \ "ili9341: Error length entry Mode Set (ETMOD) register"); \ - static const struct ili9341_regs ili9xxx_regs_##n = { \ + static const struct ili9341_regs ili9341_regs_##n = { \ .gamset = DT_PROP(DT_INST(n, ilitek_ili9341), gamset), \ .ifmode = DT_PROP(DT_INST(n, ilitek_ili9341), ifmode), \ .frmctr1 = DT_PROP(DT_INST(n, ilitek_ili9341), frmctr1), \ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9342c.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9342c.h index c5cc8fb5..d028248c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9342c.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9342c.h @@ -67,7 +67,7 @@ struct ili9342c_regs { /* Initializer macro for ILI9342C registers. */ #define ILI9342c_REGS_INIT(n) \ - static const struct ili9342c_regs ili9xxx_regs_##n = { \ + static const struct ili9342c_regs ili9342c_regs_##n = { \ .gamset = DT_PROP(DT_INST(n, ilitek_ili9342c), gamset), \ .ifmode = DT_PROP(DT_INST(n, ilitek_ili9342c), ifmode), \ .frmctr1 = DT_PROP(DT_INST(n, ilitek_ili9342c), frmctr1), \ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9488.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9488.h index 8cb9f37b..93d8be2d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9488.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ili9488.h @@ -44,7 +44,7 @@ struct ili9488_regs { /* Initializer macro for ILI9488 registers. */ #define ILI9488_REGS_INIT(n) \ - static const struct ili9488_regs ili9xxx_regs_##n = { \ + static const struct ili9488_regs ili9488_regs_##n = { \ .frmctr1 = DT_PROP(DT_INST(n, ilitek_ili9488), frmctr1), \ .disctrl = DT_PROP(DT_INST(n, ilitek_ili9488), disctrl), \ .pwctrl1 = DT_PROP(DT_INST(n, ilitek_ili9488), pwctrl1), \ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ist3931.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ist3931.h new file mode 100644 index 00000000..0b901aea --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_ist3931.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2024 Shen Xuyang + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef IST3931_DISPLAY_DRIVER_H__ +#define IST3931_DISPLAY_DRIVER_H__ + +#define IST3931_CMD_NOP 0xe3 +#define IST3931_CMD_IST_COMMAND_ENTRY 0x88 +#define IST3931_CMD_EXIT_ENTRY 0xe3 +#define IST3931_CMD_IST_COM_MAPPING 0x60 +#define IST3931_CMD_POWER_CONTROL 0x2c +#define IST3931_CMD_BIAS 0x30 +#define IST3931_CMD_CT 0xb1 +#define IST3931_CMD_FRAME_CONTROL 0xb2 +#define IST3931_CMD_SET_AX_ADD 0xc0 +#define IST3931_CMD_SET_AY_ADD_LSB 0x00 +#define IST3931_CMD_SET_AY_ADD_MSB 0x10 +#define IST3931_CMD_SET_START_LINE_LSB 0x40 +#define IST3931_CMD_SET_START_LINE_MSB 0x50 +#define IST3931_CMD_OSC_CONTROL 0x2a +#define IST3931_CMD_DRIVER_DISPLAY_CONTROL 0x60 +#define IST3931_CMD_SW_RESET 0x76 +#define IST3931_CMD_SET_DUTY_LSB 0x90 +#define IST3931_CMD_SET_DUTY_MSB 0xa0 +#define IST3931_CMD_DISPLAY_ON_OFF 0x3c +#define IST3931_CMD_SLEEP_MODE 0x38 + +#define IST3931_CMD_BYTE 0x80 +#define IST3931_DATA_BYTE 0xc0 +#define IST3931_RESET_DELAY 50 +#define IST3931_CMD_DELAY 10 +#define IST3931_RAM_WIDTH 144 +#define IST3931_RAM_HEIGHT 65 +#endif /* _ZEPHYR_DRIVERS_DISPLAY_IST3931_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_sdl_bottom.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_sdl_bottom.h index 54973777..16a6a2ce 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_sdl_bottom.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_sdl_bottom.h @@ -22,19 +22,20 @@ extern "C" { int sdl_display_init_bottom(uint16_t height, uint16_t width, uint16_t zoom_pct, bool use_accelerator, void **window, void **renderer, void **mutex, - void **texture, void **read_texture); -void sdl_display_write_bottom(const uint16_t height, const uint16_t width, - const uint16_t x, const uint16_t y, - void *renderer, void *mutex, void *texture, - uint8_t *buf, bool display_on); -int sdl_display_read_bottom(const uint16_t height, const uint16_t width, - const uint16_t x, const uint16_t y, - void *renderer, void *buf, uint16_t pitch, - void *mutex, void *texture, void **read_texture); -void sdl_display_blanking_off_bottom(void *renderer, void *texture); + void **texture, void **read_texture, void **background_texture, + uint32_t transparency_grid_color1, uint32_t transparency_grid_color2, + uint16_t transparency_grid_cell_size); +void sdl_display_write_bottom(const uint16_t height, const uint16_t width, const uint16_t x, + const uint16_t y, void *renderer, void *mutex, void *texture, + void *background_texture, uint8_t *buf, bool display_on, + bool frame_incomplete); +int sdl_display_read_bottom(const uint16_t height, const uint16_t width, const uint16_t x, + const uint16_t y, void *renderer, void *buf, uint16_t pitch, + void *mutex, void *texture, void *read_texture); +void sdl_display_blanking_off_bottom(void *renderer, void *texture, void *background_texture); void sdl_display_blanking_on_bottom(void *renderer); void sdl_display_cleanup_bottom(void **window, void **renderer, void **mutex, void **texture, - void **read_texture); + void **read_texture, void **background_texture); #ifdef __cplusplus } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_st7796s.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_st7796s.h index 7b0be000..43e4e2e4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_st7796s.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/display_st7796s.h @@ -16,6 +16,7 @@ #define ST7796S_CMD_RAMWR 0x2C /* Memory write */ #define ST7796S_CMD_DISPOFF 0x28 /* Display off */ #define ST7796S_CMD_DISPON 0x29 /* Display on */ +#define ST7796S_CMD_TEON 0x35 /* Tearing effect on */ #define ST7796S_CMD_MADCTL 0x36 /* Memory data access control */ #define ST7796S_CMD_COLMOD 0x3A /* Interface pixel format */ #define ST7796S_CMD_FRMCTR1 0xB1 /* Frame rate control 1 (normal mode) */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/ssd1306_regs.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/ssd1306_regs.h index 04092a88..c2982c1f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/ssd1306_regs.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/ssd1306_regs.h @@ -76,7 +76,11 @@ #define SSD1306_SET_PADS_HW_CONFIG 0xda /* double byte command */ #define SSD1306_SET_PADS_HW_SEQUENTIAL 0x02 -#define SSD1306_SET_PADS_HW_ALTERNATIVE 0x12 +#define SSD1306_SET_PADS_HW_ALTERNATIVE 0x12 + +#define SSD1306_SET_IREF_MODE 0xad +#define SSD1306_SET_IREF_MODE_INTERNAL 0x30 +#define SSD1306_SET_IREF_MODE_EXTERNAL 0x00 /* diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/ssd1327_regs.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/ssd1327_regs.h new file mode 100644 index 00000000..443a1375 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/display/ssd1327_regs.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2024 Savoir-faire Linux + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef __SSD1327_REGS_H__ +#define __SSD1327_REGS_H__ + +/* + * Fundamental Command Table + */ +#define SSD1327_SET_COLUMN_ADDR 0x15 +#define SSD1327_SET_ROW_ADDR 0x75 + +#define SSD1327_SET_CONTRAST_CTRL 0x81 + +#define SSD1327_SET_SEGMENT_MAP_REMAPED 0xa0 +#define SSD1327_SET_DISPLAY_START_LINE 0xa1 +#define SSD1327_SET_DISPLAY_OFFSET 0xa2 + +#define SSD1327_SET_NORMAL_DISPLAY 0xa4 +#define SSD1327_SET_ENTIRE_DISPLAY_ON 0xa5 +#define SSD1327_SET_ENTIRE_DISPLAY_OFF 0xa6 +#define SSD1327_SET_REVERSE_DISPLAY 0xa7 +#define SSD1327_SET_MULTIPLEX_RATIO 0xa8 + +#define SSD1327_DISPLAY_OFF 0xae +#define SSD1327_DISPLAY_ON 0xaf + +#define SSD1327_SET_FUNCTION_A 0xab +#define SSD1327_SET_PHASE_LENGTH 0xb1 +#define SSD1327_SET_OSC_FREQ 0xb3 +#define SSD1327_SET_PRECHARGE_PERIOD 0xb6 +#define SSD1327_FUNCTION_SELECTION_B 0xd5 + +#define SSD1327_LINEAR_LUT 0xb9 + +#define SSD1327_SET_PRECHARGE_VOLTAGE 0xbc +#define SSD1327_SET_VCOMH 0xbe + + +#define SSD1327_SET_COMMAND_LOCK 0xfd + +/* Time constant in ms */ +#define SSD1327_RESET_DELAY 10 + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_nxp_edma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_nxp_edma.h index 6f4ac669..52f65a76 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_nxp_edma.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_nxp_edma.h @@ -11,6 +11,8 @@ #include #include #include +#include +#include #include "fsl_edma_soc_rev2.h" @@ -54,12 +56,18 @@ LOG_MODULE_REGISTER(nxp_edma); 0, edma_isr, \ &channels_##inst[idx], 0) +#define _EDMA_CHANNEL_PD_DEVICE_OR_NULL(idx, inst) \ + COND_CODE_1(CONFIG_PM_DEVICE_POWER_DOMAIN, \ + (DEVICE_DT_GET_OR_NULL(DT_INST_PHANDLE_BY_IDX(inst, power_domains, idx))), \ + (NULL)) + /* used to declare a struct edma_channel by the non-explicit macro suite */ #define _EDMA_CHANNEL_DECLARE(idx, inst) \ { \ .id = DT_INST_PROP_BY_IDX(inst, valid_channels, idx), \ .dev = DEVICE_DT_INST_GET(inst), \ .irq = DT_INST_IRQN_BY_IDX(inst, idx), \ + .pd_dev = _EDMA_CHANNEL_PD_DEVICE_OR_NULL(idx, inst), \ } /* used to declare a struct edma_channel by the explicit macro suite */ @@ -68,6 +76,7 @@ LOG_MODULE_REGISTER(nxp_edma); .id = idx, \ .dev = DEVICE_DT_INST_GET(inst), \ .irq = DT_INST_IRQN_BY_IDX(inst, idx), \ + .pd_dev = _EDMA_CHANNEL_PD_DEVICE_OR_NULL(idx, inst), \ } /* used to create an array of channel IDs via the valid-channels property */ @@ -88,11 +97,6 @@ LOG_MODULE_REGISTER(nxp_edma); (_EDMA_CHANNEL_ARRAY_EXPLICIT(inst)), \ (_EDMA_CHANNEL_ARRAY(inst))) -#define EDMA_HAL_CFG_GET(inst) \ - COND_CODE_1(DT_NODE_HAS_PROP(DT_INST(inst, DT_DRV_COMPAT), hal_cfg_index), \ - (s_edmaConfigs[DT_INST_PROP(inst, hal_cfg_index)]), \ - (s_edmaConfigs[0])) - /* used to register edma_isr for all specified interrupts */ #define EDMA_CONNECT_INTERRUPTS(inst) \ FOR_EACH_FIXED_ARG(_EDMA_INT_CONNECT, (;), \ @@ -165,6 +169,10 @@ LOG_MODULE_REGISTER(nxp_edma); edma_chan_cyclic_produce(chan, size) :\ edma_chan_cyclic_consume(chan, size)) +#define EDMA_CHAN_IS_ACTIVE(data, chan)\ + (EDMA_ChannelRegRead((data)->hal_cfg, (chan)->id, EDMA_TCD_CH_CSR) &\ + EDMA_TCD_CH_CSR_ACTIVE_MASK) + enum channel_type { CHAN_TYPE_CONSUMER = 0, CHAN_TYPE_PRODUCER, @@ -176,6 +184,7 @@ enum channel_state { CHAN_STATE_STARTED, CHAN_STATE_STOPPED, CHAN_STATE_SUSPENDED, + CHAN_STATE_RELEASING, }; struct edma_channel { @@ -183,6 +192,8 @@ struct edma_channel { uint32_t id; /* pointer to device representing the EDMA instance, used by edma_isr */ const struct device *dev; + /* channel power domain device */ + const struct device *pd_dev; /* current state of the channel */ enum channel_state state; /* type of the channel (PRODUCER/CONSUMER) - only applicable to cyclic @@ -226,52 +237,49 @@ struct edma_config { bool contiguous_channels; }; -static inline int channel_change_state(struct edma_channel *chan, - enum channel_state next) +static inline bool channel_allows_transition(struct edma_channel *chan, + enum channel_state next) { enum channel_state prev = chan->state; - LOG_DBG("attempting to change state from %d to %d for channel %d", prev, next, chan->id); - /* validate transition */ switch (prev) { case CHAN_STATE_INIT: if (next != CHAN_STATE_CONFIGURED) { - return -EPERM; + return false; } break; case CHAN_STATE_CONFIGURED: if (next != CHAN_STATE_STARTED && - next != CHAN_STATE_CONFIGURED) { - return -EPERM; + next != CHAN_STATE_CONFIGURED && + next != CHAN_STATE_RELEASING) { + return false; } break; case CHAN_STATE_STARTED: if (next != CHAN_STATE_STOPPED && next != CHAN_STATE_SUSPENDED) { - return -EPERM; + return false; } break; case CHAN_STATE_STOPPED: - if (next != CHAN_STATE_CONFIGURED) { - return -EPERM; + if (next != CHAN_STATE_CONFIGURED && + next != CHAN_STATE_RELEASING) { + return false; } break; case CHAN_STATE_SUSPENDED: if (next != CHAN_STATE_STARTED && next != CHAN_STATE_STOPPED) { - return -EPERM; + return false; } break; default: LOG_ERR("invalid channel previous state: %d", prev); - return -EINVAL; + return false; } - /* transition OK, proceed */ - chan->state = next; - - return 0; + return true; } static inline int get_transfer_type(enum dma_channel_direction dir, uint32_t *type) @@ -417,6 +425,8 @@ static inline int edma_chan_cyclic_produce(struct edma_channel *chan, static inline void edma_dump_channel_registers(struct edma_data *data, uint32_t chan_id) { + uint32_t mux_reg; + LOG_DBG("dumping channel data for channel %d", chan_id); LOG_DBG("CH_CSR: 0x%x", @@ -431,8 +441,13 @@ static inline void edma_dump_channel_registers(struct edma_data *data, EDMA_ChannelRegRead(data->hal_cfg, chan_id, EDMA_TCD_CH_PRI)); if (EDMA_HAS_MUX(data->hal_cfg)) { - LOG_DBG("CH_MUX: 0x%x", - EDMA_ChannelRegRead(data->hal_cfg, chan_id, EDMA_TCD_CH_MUX)); + if (data->hal_cfg->flags & EDMA_HAS_MP_MUX_FLAG) { + mux_reg = EDMA_MP_CH_MUX; + } else { + mux_reg = EDMA_TCD_CH_MUX; + } + + LOG_DBG("CH_MUX: 0x%x", EDMA_ChannelRegRead(data->hal_cfg, chan_id, mux_reg)); } LOG_DBG("TCD_SADDR: 0x%x", @@ -507,6 +522,13 @@ static inline int set_slast_dlast(struct dma_config *dma_cfg, EDMA_ChannelRegWrite(data->hal_cfg, chan_id, EDMA_TCD_SLAST_SDA, slast); EDMA_ChannelRegWrite(data->hal_cfg, chan_id, EDMA_TCD_DLAST_SGA, dlast); + if (data->hal_cfg->flags & EDMA_HAS_64BIT_TCD_FLAG) { + EDMA_ChannelRegWrite(data->hal_cfg, chan_id, EDMA_TCD_SLAST_SDA_HIGH, + slast >= 0x0 ? 0x0 : 0xffffffff); + EDMA_ChannelRegWrite(data->hal_cfg, chan_id, EDMA_TCD_DLAST_SGA_HIGH, + dlast >= 0x0 ? 0x0 : 0xffffffff); + } + return 0; } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_stm32.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_stm32.h index 553e0983..54e7ac45 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_stm32.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_stm32.h @@ -52,7 +52,9 @@ uint32_t dma_stm32_slot_to_channel(uint32_t id); #endif typedef void (*dma_stm32_clear_flag_func)(DMA_TypeDef *DMAx); -#if !defined(CONFIG_SOC_SERIES_STM32G0X) +#if !defined(CONFIG_SOC_SERIES_STM32G0X) && \ + !defined(CONFIG_SOC_SERIES_STM32H7X) && \ + !defined(CONFIG_SOC_SERIES_STM32U0X) typedef uint32_t (*dma_stm32_check_flag_func)(DMA_TypeDef *DMAx); #else typedef uint32_t (*dma_stm32_check_flag_func)(const DMA_TypeDef *DMAx); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_stm32_bdma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_stm32_bdma.h index b25ebc80..ea6ee145 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_stm32_bdma.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_stm32_bdma.h @@ -28,6 +28,7 @@ struct bdma_stm32_channel { uint32_t dst_size; void *user_data; /* holds the client data */ dma_callback_t bdma_callback; + bool cyclic; }; struct bdma_stm32_data { @@ -52,7 +53,7 @@ uint32_t bdma_stm32_slot_to_channel(uint32_t id); #endif typedef void (*bdma_stm32_clear_flag_func)(BDMA_TypeDef *DMAx); -typedef uint32_t (*bdma_stm32_check_flag_func)(BDMA_TypeDef *DMAx); +typedef uint32_t (*bdma_stm32_check_flag_func)(const BDMA_TypeDef *DMAx); bool bdma_stm32_is_gi_active(BDMA_TypeDef *DMAx, uint32_t id); void bdma_stm32_clear_gi(BDMA_TypeDef *DMAx, uint32_t id); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_xilinx_axi_dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_xilinx_axi_dma.h new file mode 100644 index 00000000..05d33566 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dma/dma_xilinx_axi_dma.h @@ -0,0 +1,28 @@ +/** @file + * @brief Definitions and non-standard functions for Xilinx AXI DMA. + */ +/* + * Copyright (c) 2024 CISPA Helmholtz Center for Information Security gGmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef DMA_XILINX_AXI_DMA_H +#define DMA_XILINX_AXI_DMA_H + +#define XILINX_AXI_DMA_NUM_CHANNELS 2 +#define XILINX_AXI_DMA_TX_CHANNEL_NUM 0 +#define XILINX_AXI_DMA_RX_CHANNEL_NUM 1 + +#define XILINX_AXI_DMA_LINKED_CHANNEL_NO_CSUM_OFFLOAD 0x0 +#define XILINX_AXI_DMA_LINKED_CHANNEL_FULL_CSUM_OFFLOAD 0x1 + +#include +#include + +/** + * @brief Returns the size of the last RX transfer conducted by the DMA, based on the descriptor + * status. + */ +extern uint32_t dma_xilinx_axi_dma_last_received_frame_length(const struct device *dev); + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dp/swdp_ll_pin.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dp/swdp_ll_pin.h index 3044931a..48b4ea14 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dp/swdp_ll_pin.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/dp/swdp_ll_pin.h @@ -6,8 +6,9 @@ #include #include +#include -#if defined(CONFIG_SOC_SERIES_NRF52X) +#if defined(CONFIG_SOC_SERIES_NRF52X) || defined(CONFIG_SOC_SERIES_NRF53X) #define CPU_CLOCK 64000000U #else #define CPU_CLOCK CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/eeprom/eeprom_simulator_native.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/eeprom/eeprom_simulator_native.h new file mode 100644 index 00000000..ecd3071f --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/eeprom/eeprom_simulator_native.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef DRIVERS_EEPROM_EEPROM_SIMULATOR_NATIVE_H +#define DRIVERS_EEPROM_EEPROM_SIMULATOR_NATIVE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int eeprom_mock_init_native(bool eeprom_in_ram, char **mock_eeprom, unsigned int size, + int *eeprom_fd, const char *eeprom_file_path, unsigned int erase_value, + bool eeprom_erase_at_start); + +void eeprom_mock_cleanup_native(bool eeprom_in_ram, int eeprom_fd, char *mock_eeprom, + unsigned int size, const char *eeprom_file_path, + bool eeprom_rm_at_exit); + +#ifdef __cplusplus +} +#endif + +#endif /* DRIVERS_EEPROM_EEPROM_SIMULATOR_NATIVE_H */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/dwc_xgmac/eth_dwc_xgmac_priv.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/dwc_xgmac/eth_dwc_xgmac_priv.h new file mode 100644 index 00000000..0f9a3eca --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/dwc_xgmac/eth_dwc_xgmac_priv.h @@ -0,0 +1,690 @@ +/* + * Intel Hard Processor System 10 Giga bit TSN Ethernet Media Access controller (XGMAC) driver + * + * Driver private data declarations + * + * Copyright (c) 2024 Intel Corporation. + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef _ZEPHYR_DRIVERS_ETHERNET_ETH_DWC_XGMAC_PRIV_H_ +#define _ZEPHYR_DRIVERS_ETHERNET_ETH_DWC_XGMAC_PRIV_H_ + +#include +#include +#include +#include "../eth.h" + +#define SET_BIT 1 +#define RESET_BIT 0 + +#define READ_BIT(var, bit) ((var >> bit) & 1u) + +/* Offset addresses of the register sets in XGMAC + */ +#define XGMAC_CORE_BASE_ADDR_OFFSET (0x0000u) +#define XGMAC_MTL_BASE_ADDR_OFFSET (0x1000u) +#define XGMAC_MTL_TCQ_BASE_ADDR_OFFSET (0x1100u) +#define XGMAC_DMA_BASE_ADDR_OFFSET (0x3000u) +#define XGMAC_DMA_CHNL_BASE_ADDR_OFFSET (0x3100u) +#define XGMAC_DMA_CHNLx_BASE_ADDR_OFFSET(x) (XGMAC_DMA_CHNL_BASE_ADDR_OFFSET + (x * 0x80u)) +#define XGMAC_MTL_TCQx_BASE_ADDR_OFFSET(x) (XGMAC_MTL_TCQ_BASE_ADDR_OFFSET + (x * 0x80u)) +#define XGMAC_CORE_ADDRx_HIGH(x) (CORE_MAC_ADDRESS0_HIGH_OFST + (x) * 0x8) +#define XGMAC_CORE_ADDRx_LOW(x) (CORE_MAC_ADDRESS0_LOW_OFST + (x) * 0x8) + +#define XGMAC_DESC_OWNED_BY_DMA (1u) + +#define NUM_OF_RxQs_PER_DMA_MAP_REG (4u) +#define MTL_RXQ_DMA_MAP_Qx_MSK(q_pos) (~(0xffu << (q_pos * 8u))) +#define MTL_RXQ_DMA_MAP_QxDDMACH_SET(q_pos, value) ((value & 0x1u) << (8u * q_pos + 7u)) +#define MTL_RXQ_DMA_MAP_QxMDMACH_SET(q_pos, value) ((value & 0x7u) << (8u * q_pos)) + +#define NUM_OF_TCs_PER_TC_PRTY_MAP_REG (4u) +#define TC_PRTY_MAP_FEILD_SIZE_IN_BITS (8u) +#define MTL_TCx_PRTY_MAP_MSK(TCx_pos) (~(0xff << (TCx_pos * TC_PRTY_MAP_FEILD_SIZE_IN_BITS))) + +#define MTL_TCx_PRTY_MAP_PSTC_SET(TCx_pos, prio) ((prio & 0xff) << (8u * TCx_pos)) + +#define DMA_MODE_OFST (0x0) + +#define DMA_MODE_SWR_SET(value) ((value) & 0x00000001) + +#define DMA_MODE_SWR_SET_MSK (0x00000001) + +#define DMA_MODE_INTM_CLR_MSK (0xffffcfff) + +#define DMA_MODE_INTM_SET(value) (((value) << 12) & 0x00003000) + +#define DMA_SYSBUS_MODE_OFST (0x4) + +#define DMA_SYSBUS_MODE_RD_OSR_LMT_SET(value) (((value) << 16) & 0x001f0000) + +#define DMA_SYSBUS_MODE_WR_OSR_LMT_SET(value) (((value) << 24) & 0x1f000000) + +#define DMA_SYSBUS_MODE_AAL_SET(value) (((value) << 12) & 0x00001000) + +#define DMA_SYSBUS_MODE_EAME_SET(value) (((value) << 11) & 0x00000800) + +#define DMA_SYSBUS_MODE_BLEN4_SET(value) (((value) << 1) & 0x00000002) + +#define DMA_SYSBUS_MODE_BLEN8_SET(value) (((value) << 2) & 0x00000004) + +#define DMA_SYSBUS_MODE_BLEN16_SET(value) (((value) << 3) & 0x00000008) + +#define DMA_SYSBUS_MODE_BLEN32_SET(value) (((value) << 4) & 0x00000010) + +#define DMA_SYSBUS_MODE_BLEN64_SET(value) (((value) << 5) & 0x00000020) + +#define DMA_SYSBUS_MODE_BLEN128_SET(value) (((value) << 6) & 0x00000040) + +#define DMA_SYSBUS_MODE_BLEN256_SET(value) (((value) << 7) & 0x00000080) + +#define DMA_SYSBUS_MODE_UNDEF_SET(value) ((value) & 0x00000001) + +#define DMA_TX_EDMA_CONTROL_OFST (0x40) + +#define DMA_TX_EDMA_CONTROL_TDPS_SET(value) ((value) & 0x00000003) + +#define DMA_RX_EDMA_CONTROL_OFST (0x44) + +#define DMA_RX_EDMA_CONTROL_RDPS_SET(value) ((value) & 0x00000003) + +#define DMA_INTERRUPT_STATUS_OFST (0x8) + +#define DMA_CHx_STATUS_OFST (0x60) + +#define DMA_CHx_STATUS_TI_SET_MSK (0x00000001) + +#define DMA_CHx_STATUS_RI_SET_MSK (0x00000040) + +#define DMA_CHx_STATUS_TPS_SET_MSK (0x00000002) + +#define DMA_CHx_STATUS_TBU_SET_MSK (0x00000004) + +#define DMA_CHx_STATUS_RBU_SET_MSK (0x00000080) + +#define DMA_CHx_STATUS_RPS_SET_MSK (0x00000100) + +#define DMA_CHx_STATUS_DDE_SET_MSK (0x00000200) + +#define DMA_CHx_STATUS_FBE_SET_MSK (0x00001000) + +#define DMA_CHx_STATUS_CDE_SET_MSK (0x00002000) + +#define DMA_CHx_STATUS_AIS_SET_MSK (0x00004000) + +#define DMA_CHx_STATUS_NIS_SET_MSK (0x00008000) + +#define DMA_CHx_CONTROL_OFST (0x0) + +#define DMA_CHx_CONTROL_SPH_SET(value) (((value) << 24) & 0x01000000) + +#define DMA_CHx_CONTROL_PBLX8_SET(value) (((value) << 16) & 0x00010000) + +#define DMA_CHx_CONTROL_MSS_SET(value) ((value) & 0x00003fff) + +#define DMA_CHx_TX_CONTROL_OFST (0x4) + +#define DMA_CHx_TX_CONTROL_TXPBL_SET(value) (((value) << 16) & 0x003f0000) + +#define DMA_CHx_TX_CONTROL_TSE_SET(value) (((value) << 12) & 0x00001000) + +#define DMA_CHx_TX_CONTROL_RESERVED_OSP_SET(value) (((value) << 4) & 0x00000010) + +#define DMA_CHx_TX_CONTROL_ST_CLR_MSK (0xfffffffe) + +#define DMA_CHx_RX_CONTROL_OFST (0x8) + +#define DMA_CHx_RX_CONTROL_RPF_SET(value) (((value) << 31) & 0x80000000) + +#define DMA_CHx_RX_CONTROL_RXPBL_SET(value) (((value) << 16) & 0x003f0000) + +#define DMA_CHx_RX_CONTROL_RBSZ_SET(value) ((value << 1) & 0x00007ff0) + +#define DMA_CHx_RX_CONTROL_SR_CLR_MSK (0xfffffffe) + +#define DMA_CHx_TXDESC_LIST_HADDRESS_OFST (0x10) + +#define DMA_CHx_TXDESC_LIST_HADDRESS_TDESHA_SET(value) ((value) & 0x000000ff) + +#define DMA_CHx_TXDESC_LIST_LADDRESS_OFST (0x14) + +#define DMA_CHx_RXDESC_LIST_HADDRESS_OFST (0x18) + +#define DMA_CHx_RXDESC_LIST_LADDRESS_OFST (0x1c) + +#define DMA_CHx_TXDESC_TAIL_LPOINTER_OFST (0x24) + +#define DMA_CHx_TXDESC_TAIL_LPOINTER_TDT_SET(value) ((value) & 0xfffffff8) + +#define DMA_CHx_RXDESC_TAIL_LPOINTER_OFST (0x2c) + +#define DMA_CHx_RXDESC_TAIL_LPOINTER_RDT_SET(value) ((value) & 0xfffffff8) + +#define DMA_CHx_TX_CONTROL2_OFST (0x30) + +#define DMA_CHx_TX_CONTROL2_TDRL_SET(value) (((value) << 0) & 0x0000ffff) + +#define DMA_CHx_RX_CONTROL2_OFST (0x34) + +#define DMA_CHx_RX_CONTROL2_RDRL_SET(value) (((value) << 0) & 0x0000ffff) + +#define DMA_CHx_TX_CONTROL_ST_SET_MSK (0x00000001) + +#define DMA_CHx_RX_CONTROL_SR_SET_MSK (0x00000001) + +#define DMA_CHx_INTERRUPT_ENABLE_OFST (0x38) + +#define DMA_CHx_INTERRUPT_ENABLE_NIE_SET(value) (((value) << 15) & 0x00008000) + +#define DMA_CHx_INTERRUPT_ENABLE_AIE_SET(value) (((value) << 14) & 0x00004000) + +#define DMA_CHx_INTERRUPT_ENABLE_CDEE_SET(value) (((value) << 13) & 0x00002000) + +#define DMA_CHx_INTERRUPT_ENABLE_FBEE_SET(value) (((value) << 12) & 0x00001000) + +#define DMA_CHx_INTERRUPT_ENABLE_DDEE_SET(value) (((value) << 9) & 0x00000200) + +#define DMA_CHx_INTERRUPT_ENABLE_RSE_SET(value) (((value) << 8) & 0x00000100) + +#define DMA_CHx_INTERRUPT_ENABLE_RBUE_SET(value) (((value) << 7) & 0x00000080) + +#define DMA_CHx_INTERRUPT_ENABLE_RIE_SET(value) (((value) << 6) & 0x00000040) + +#define DMA_CHx_INTERRUPT_ENABLE_TBUE_SET(value) (((value) << 2) & 0x00000004) + +#define DMA_CHx_INTERRUPT_ENABLE_TXSE_SET(value) (((value) << 1) & 0x00000002) + +#define DMA_CHx_INTERRUPT_ENABLE_TIE_SET(value) (((value) << 0) & 0x00000001) + +#define MTL_OPERATION_MODE_OFST (0x0) + +#define MTL_OPERATION_MODE_ETSALG_SET(value) (((value) << 5) & 0x00000060) + +#define MTL_OPERATION_MODE_RAA_SET(value) (((value) << 2) & 0x00000004) + +#define MTL_TC_PRTY_MAP0_OFST (0x40) + +#define MTL_RXQ_DMA_MAP0_OFST (0x30) + +#define MTL_TCQx_MTL_TXQx_OPERATION_MODE_OFST (0x0) + +#define MTL_TCQx_MTL_TXQx_OPERATION_MODE_TQS_SET(value) (((value) << 16) & 0x007f0000) + +#define MTL_TCQx_MTL_TXQx_OPERATION_MODE_Q2TCMAP_SET(value) (((value) << 8) & 0x00000700) + +#define MTL_TCQx_MTL_TXQx_OPERATION_MODE_TTC_SET(value) (((value) << 4) & 0x00000070) + +#define MTL_TCQx_MTL_TXQx_OPERATION_MODE_TXQEN_SET(value) (((value) << 2) & 0x0000000c) + +#define MTL_TCQx_MTL_TXQx_OPERATION_MODE_TSF_SET(value) (((value) << 1) & 0x00000002) + +#define MTL_TCQx_MTC_TCx_ETS_CONTROL_OFST (0x10) + +#define MTL_TCQx_MTC_TCx_ETS_CONTROL_TSA_SET(value) (((value) << 0) & 0x00000003) + +#define MTL_TCQx_MTL_RXQx_OPERATION_MODE_OFST (0x40) + +#define MTL_TCQx_MTL_RXQx_OPERATION_MODE_RQS_SET(value) (((value) << 16) & 0x003f0000) + +#define MTL_TCQx_MTL_RXQx_OPERATION_MODE_EHFC_SET(value) (((value) << 7) & 0x00000080) + +#define MTL_TCQx_MTL_RXQx_OPERATION_MODE_DIS_TCP_EF_SET(value) (((value) << 6) & 0x00000040) + +#define MTL_TCQx_MTL_RXQx_OPERATION_MODE_RSF_SET(value) (((value) << 5) & 0x00000020) + +#define MTL_TCQx_MTL_RXQx_OPERATION_MODE_FEF_SET(value) (((value) << 4) & 0x00000010) + +#define MTL_TCQx_MTL_RXQx_OPERATION_MODE_FUF_SET(value) (((value) << 3) & 0x00000008) + +#define MTL_TCQx_MTL_RXQx_OPERATION_MODE_RTC_SET(value) (((value) << 0) & 0x00000003) + +#define MTL_INTERRUPT_STATUS_OFST (0x20) + +#define CORE_MAC_ADDRESSx_HIGH_SA_SET(value) (((value) << 30) & 0x40000000) + +#define CORE_MAC_ADDRESS1_HIGH_AE_SET_MSK (0x80000000) + +#define CORE_MAC_ADDRESS0_HIGH_OFST (0x300) + +#define CORE_MAC_ADDRESS0_LOW_OFST (0x304) + +#define CORE_MAC_TX_CONFIGURATION_OFST (0x0) + +#define CORE_MAC_TX_CONFIGURATION_SS_CLR_MSK (0x1fffffff) + +#define CORE_MAC_TX_CONFIGURATION_SS_SET(value) (((value) << 29) & 0xe0000000) + +#define CORE_MAC_TX_CONFIGURATION_JD_SET(value) (((value) << 16) & 0x00010000) + +#define CORE_MAC_RXQ_CTRL0_OFST (0xa0) + +#define CORE_MAC_RX_CONFIGURATION_OFST (0x4) + +#define CORE_MAC_RX_CONFIGURATION_GPSLCE_SET(value) (((value) << 6) & 0x00000040) + +#define CORE_MAC_RX_CONFIGURATION_WD_SET(value) (((value) << 7) & 0x00000080) + +#define CORE_MAC_RX_CONFIGURATION_JE_SET(value) (((value) << 8) & 0x00000100) + +#define CORE_MAC_RX_CONFIGURATION_ARPEN_SET(value) (((value) << 31) & 0x80000000) + +#define CORE_MAC_RX_CONFIGURATION_GPSL_SET(value) (((value) << 16) & 0x3fff0000) + +#define CORE_MAC_TX_CONFIGURATION_TE_SET(value) (((value) << 0) & 0x00000001) + +#define CORE_MAC_RX_CONFIGURATION_RE_SET(value) (((value) << 0) & 0x00000001) + +#define CORE_MAC_TX_CONFIGURATION_TE_CLR_MSK (0xfffffffe) + +#define CORE_MAC_TX_CONFIGURATION_SS_10MHZ (0x07) + +#define CORE_MAC_TX_CONFIGURATION_SS_100MHZ (0x04) + +#define CORE_MAC_TX_CONFIGURATION_SS_1000MHZ (0x03) + +#define CORE_MAC_TX_CONFIGURATION_SS_2500MHZ (0x06) + +#define CORE_MAC_RX_CONFIGURATION_RE_CLR_MSK (0xfffffffe) + +#define CORE_MAC_INTERRUPT_STATUS_OFST (0xb0) + +#define CORE_MAC_INTERRUPT_ENABLE_OFST (0xb4) + +#define CORE_MAC_INTERRUPT_ENABLE_LSIE_SET(value) (((value) << 0) & 0x00000001) + +#define CORE_MAC_PACKET_FILTER_OFST (0x8) + +#define CORE_MAC_PACKET_FILTER_IPFE_SET(value) (((value) << 20) & 0x00100000) + +#define CORE_MAC_PACKET_FILTER_HPF_SET(value) (((value) << 10) & 0x00000400) + +#define CORE_MAC_PACKET_FILTER_HMC_SET(value) (((value) << 2) & 0x00000004) + +#define CORE_MAC_PACKET_FILTER_HUC_SET(value) (((value) << 1) & 0x00000002) + +#define CORE_MAC_RX_CONFIGURATION_IPC_SET(value) (((value) << 9) & 0x00000200) + +#define CORE_MAC_ADDRESS1_HIGH_AE_CLR_MSK 0x7fffffff + +#define CORE_MAC_ADDRESS1_LOW_ADDRLO_SET_MSK 0xffffffff + +#define CORE_MAC_PACKET_FILTER_PR_CLR_MSK 0xfffffffe + +#define CORE_MAC_PACKET_FILTER_PR_SET(value) (((value) << 0) & 0x00000001) + +#define CORE_MAC_PACKET_FILTER_RA_SET(value) (((value) << 31) & 0x80000000) + +#define CORE_MAC_PACKET_FILTER_PM_SET(value) (((value) << 4) & 0x00000010) + +/* 0th index mac address is not used for L2 filtering */ +#define XGMAC_MAX_MAC_ADDR_COUNT (32u) +#define MAC_ADDR_BYTE_5 (5) +#define MAC_ADDR_BYTE_4 (4) +#define MAC_ADDR_BYTE_3 (3) +#define MAC_ADDR_BYTE_2 (2) +#define MAC_ADDR_BYTE_1 (1) +#define MAC_ADDR_BYTE_0 (0) +#define BIT_OFFSET_8 (8) +#define BIT_OFFSET_16 (16) +#define BIT_OFFSET_24 (24) + +#define XGMAC_RXQxEN_DCB (2u) /* RX queue enabled for Data Center Bridging or Generic */ +#define XGMAC_RXQxEN_SIZE_BITS (2u) +#define ETH_MAC_ADDRESS_SIZE (6u) /*Ethernet MAC address size 6 bytes */ + +#define XGMAC_TDES2_IOC BIT(31) +#define XGMAC_TDES3_OWN BIT(31) +#define XGMAC_TDES3_FD BIT(29) +#define XGMAC_TDES3_LD BIT(28) +#define XGMAC_TDES3_CS_EN_MSK (3u << 16u) + +#define XGMAC_RDES3_OWN BIT(31) +#define XGMAC_RDES3_IOC BIT(30) +#define XGMAC_RDES3_FD BIT(29) +#define XGMAC_RDES3_LD BIT(28) +#define XGMAC_RDES3_ES BIT(15) +#define XGMAC_RDES3_PL GENMASK(14, 0) + +#define RX_FRAGS_PER_DESC (2u) +#define XGMAC_POLLING_MODE (2u) +#define RX_FRAG_ONE (0u) +#define RX_FRAG_TWO (1u) + +#ifdef CONFIG_ETH_DWC_XGMAC_ARP_OFFLOAD +#define ETH_DWC_XGMAC_ARP_OFFLOAD (1u) +#else +#define ETH_DWC_XGMAC_ARP_OFFLOAD (0u) +#endif + +#define XGMAC_INTERRUPT_POLING_TIMEOUT_US (500u) + +#define ETH_DWC_XGMAC_RESET_STATUS_CHECK_RETRY_COUNT \ + (100) /* retry up to 100ms (1 x 100ms poll interval) */ +#define XGMAC_REG_SIZE_BYTES (4u) /*4 Bytes*/ +#define XGMAC_REG_SIZE_BITS (32u) /*4 Bytes*/ + +#define CHLCNT(n) DT_INST_PROP(n, num_dma_ch) +#define MAX_TX_RING(n) DT_INST_PROP(n, dma_ch_tdrl) +#define MAX_RX_RING(n) DT_INST_PROP(n, dma_ch_rdrl) + +typedef void (*eth_config_irq_t)(const struct device *port); +typedef void (*eth_enable_irq_t)(const struct device *port, bool en); + +/** + * @brief Transmit descriptor + */ +struct xgmac_dma_tx_desc { + /* First word of descriptor */ + uint32_t tdes0; + /* Second word of descriptor */ + uint32_t tdes1; + /* Third word of descriptor */ + uint32_t tdes2; + /* Fourth word of descriptor */ + uint32_t tdes3; +}; + +/** + * @brief Receive descriptor + * + */ +struct xgmac_dma_rx_desc { + /* First word of descriptor */ + uint32_t rdes0; + /* Second word of descriptor */ + uint32_t rdes1; + /* Third word of descriptor */ + uint32_t rdes2; + /* Fourth word of descriptor */ + uint32_t rdes3; +}; + +/** + * @brief TX DMA memory area buffer descriptor ring management structure. + * + * The DMA memory area buffer descriptor ring management structure + * is used to manage either the TX buffer descriptor array. + * It contains a pointer to the start of the descriptor array, a + * semaphore as a means of preventing concurrent access, a free entry + * counter as well as indices used to determine which BD shall be used + * or evaluated for the next TX operation. + */ +struct xgmac_dma_tx_desc_meta { + struct k_sem free_tx_descs_sem; + /* Concurrent modification protection */ + struct k_mutex ring_lock; + /* Index of the next BD to be used for TX */ + volatile uint16_t next_to_use; + /* Address of the first descriptor in the TX descriptor ring. This field will be + * updated in TX descriptor initialization and consumed by channel initialization. + */ + mem_addr_t desc_list_addr; + /* Address of the last descriptor in the TX descriptor ring. This field will be + * updated in TX descriptor initialization and consumed by channel initialization. + */ + volatile mem_addr_t desc_tail_addr; +}; +/** + * @brief RX DMA memory area buffer descriptor ring management structure. + * + * The DMA memory area buffer descriptor ring management structure + * is used to manage either the RX buffer descriptor array. + * It contains a pointer to the start of the descriptor array, a + * semaphore as a means of preventing concurrent access, a free entry + * counter as well as indices used to determine which BD shall be used + * or evaluated for the next RX operation. + */ +struct xgmac_dma_rx_desc_meta { + /* Index of the next BD to be read for RX */ + volatile uint16_t next_to_read; + /* Address of the first descriptor in the RX descriptor ring. this field will be + * updated in RX descriptor initialization and consumed by channel initialization + */ + mem_addr_t desc_list_addr; + /* Address of the last descriptor in the RX descriptor ring. this field will be + * updated in RX descriptor initialization and consumed by channel initialization + */ + volatile mem_addr_t desc_tail_addr; + struct net_pkt *rx_pkt; +}; + +struct xgmac_tx_cntxt { + int timeout; /*Time out in sleep intervals count*/ + /* TX packet queue ID */ + uint8_t q_id; + struct xgmac_dma_tx_desc_meta *descmeta; + struct xgmac_dma_tx_desc *tx_desc; + uint16_t pkt_desc_id; +}; + +struct xgmac_dma_cfg { + /* Software configured maximum number of AXI data writing requests */ + uint8_t wr_osr_lmt; + /* Software configured maximum number of AXI data reading requests */ + uint8_t rd_osr_lmt; + /* This field controls the threshold in the Descriptor cache after which + * the EDMA starts pre-fetching the TxDMA descriptors + */ + uint8_t edma_tdps; + /* This field controls the threshold in the Descriptor cache after which + * the EDMA starts pre-fetching the RxDMA descriptors + */ + uint8_t edma_rdps; + /* Mixed burst: AXI master can perform burst transfers that are equal to or + * less than the maximum allowed burst length programmed + */ + bool ubl; + /* burst length 4bytes */ + bool blen4; + /* burst length 8bytes */ + bool blen8; + /* burst length 16bytes */ + bool blen16; + /* burst length 32bytes */ + bool blen32; + /* burst length 64bytes */ + bool blen64; + /* burst length 128bytes */ + bool blen128; + /* burst length 256bytes */ + bool blen256; + /* Address-Aligned Beats. When this bit is set to 1, the AXI master performs + * address-aligned burst transfers on Read and Write channels + */ + bool aal; + /* Enhanced Address Mode Enable: e DMA engine uses either the 40- or 48-bit address, + * depending on the configuration. This bit is valid only when Address Width is greater than + * 32 + */ + bool eame; +}; + +struct xgmac_dma_chnl_config { + /* This field specifies the maximum segment size that should be used while + * segmenting the Transmit packet. not applicable when TSO is disabled + */ + uint16_t mss; + /* Transmit Descriptor Ring Length. This field sets the maximum number of Tx + * descriptors in the circular descriptor ring. The maximum number of descriptors + * is limited to 65536 descriptors + */ + uint16_t tdrl; + /* Receive Descriptor Ring Length. This field sets the maximum number of Rx + * descriptors in the circular descriptor ring. The maximum number of descriptors + * is limited to 65536 descriptors + */ + uint16_t rdrl; + /* Alternate Receive Buffer Size Indicates size for Buffer 1 when ARBS is + * programmed to a non-zero value (when split header feature is not enabled). + * When split header feature is enabled, ARBS indicates the buffer size for + * header data. It is recommended to use this field when split header feature is + * enabled. + */ + uint8_t arbs; + /* maximum receive burst length */ + uint8_t rxpbl; + /* maximum transmit burst length */ + uint8_t txpbl; + /* When this bit is set, the DMA splits the header and payload in + * the Receive path and stores into the buffer1 and buffer 2 respectively + */ + bool sph; + /* When this is set, the PBL value programmed in Tx_control is multiplied + * eight times + */ + bool pblx8; + /* TCP Segmentation Enabled.When this bit is set, the DMA performs the TCP + * segmentation for packets in Channel. not applicable when TSO is disabled + */ + bool tse; + /* Operate on Second Packet. When this bit is set, it instructs the DMA to process + * the second packet of the Transmit data even before closing the descriptor of the + * first packet. not applicable when edma is enabled + */ + bool osp; +}; + +struct xgmac_mtl_config { + /* Receive Arbitration Algorithm.This field is used to select the arbitration algorithm + * for the RX side. + * 0: Strict Priority (SP): Queue 0 has the lowest priority and the last queue has the + * highest priority. 1: Weighted Strict Priority (WSP) + */ + bool raa; + /* ETS Algorithm. This field selects the type of ETS algorithm to be applied for + * traffic classes whose transmission selection algorithm (TSA) is set to ETS: + * 0: WRR algorithm + * 1: WFQ algorithm + * 2: DWRR algorithm + */ + uint8_t etsalg; +}; + +struct xgmac_mac_config { + /* Giant Packet Size Limit + */ + uint32_t gpsl; + /* ARP offload is enabled/disabled. + */ + bool arp_offload_en; + /* jumbo packet is enabled/disabled. + */ + bool je; +}; + +struct xgmac_tcq_config { + /* Receive queue enabled for dynamic DMA channel selection when set, this bit indicates + * that each packet received in receive queue is routed to a DMA channel as decided in + * the MAC Receiver based on the DMA channel number programmed in the L3-L4 filter + * registers, RSS lookup table, the ethernet DA address registers or VLAN filter registers. + * When reset, this bit indicates that all packets received in receive queue are routed to + * the DMA Channel programmed in the rx_q_dma_chnl_sel field. + */ + uint8_t rx_q_ddma_en; + /* Receive Queue Mapped to DMA Channel. This field is valid when the rx_q_ddma_en field is + * reset + */ + uint8_t rx_q_dma_chnl_sel[CONFIG_ETH_XGMAC_MAX_QUEUES]; + /* Transmit Queue Size. This field indicates the size of the allocated Transmit queues in + * blocks of 256 bytes. Range 0 - 63 + */ + uint8_t tx_q_size[CONFIG_ETH_XGMAC_MAX_QUEUES]; + /* Queue to Traffic Class Mapping + * Range TC0 - TC7 -> 0 to 7 + */ + uint8_t q_to_tc_map[CONFIG_ETH_XGMAC_MAX_QUEUES]; + /* Transmit Threshold Control. These bits control the threshold level of the MTL TX Queue. + * Transmission starts when the packet size within the MTL TX Queue is larger than the + * threshold. In addition, full packets with length less than the threshold are also + * transmitted 0: 64 2: 96 3: 128 4: 192 5: 256 6: 384 7: 512 + */ + uint8_t ttc[CONFIG_ETH_XGMAC_MAX_QUEUES]; + /* Receive Queue Size. This field indicates the size of the allocated Receive queues in + * blocks of 256 bytes Range: 0 - 127 + */ + uint8_t rx_q_size[CONFIG_ETH_XGMAC_MAX_QUEUES]; + /* Transmit Store and Forward. When this bit is set, the transmission starts when a full + * packet resides in the MTL TX Queue. When this bit is set, the values specified in the TTC + * field are ignored + */ + uint8_t tsf_en; + /* Enable Hardware Flow Control. When this bit is set, the flow control signal operation, + * based on the fill-level of RX queue, is enabled + */ + uint8_t hfc_en; + /* Disable Dropping of TCP/IP Checksum Error Packets */ + uint8_t cs_err_pkt_drop_dis; + /* Receive Queue Store and Forward. When this bit is set, DWC_xgmac reads a packet from the + * RX queue only after the complete packet has been written to it, ignoring the RTC field of + * this register + */ + uint8_t rsf_en; + /* Forward Error Packets. When this bit is set, all packets except the runt error + * packets are forwarded to the application or DMA + */ + uint8_t fep_en; + /* Forward Undersized Good Packets. When this bit is set, the RX queue forwards the + * undersized good packets + */ + uint8_t fup_en; + /* Receive Queue Threshold Control. These bits control the threshold level of the MTL Rx + * queue in bytes 0: 64 2: 96 3: 128 + */ + uint8_t rtc[CONFIG_ETH_XGMAC_MAX_QUEUES]; + /* Priorities Mapped to Traffic Class. This field determines if the transmit queues + * associated with the traffic class should be blocked from transmitting for the specified + * pause time when a PFC packet is received with priorities matching the priorities + * programmed in this field + */ + uint8_t pstc[CONFIG_ETH_XGMAC_MAX_QUEUES]; + /* + * uint8_t slc; + * uint8_t cc; + * uint8_t cbs_en; + */ + + /* Transmission Selection Algorithm. This field is used to assign a transmission selection + * algorithm for this traffic class. + * 0: Strict priority + * 1: CBS + * 2: ETS + */ + uint8_t tsa[CONFIG_ETH_XGMAC_MAX_QUEUES]; +}; + +struct xgmac_irq_cntxt_data { + const struct device *dev; + /* + * DMA interrupt status value + */ + volatile uint32_t dma_interrupt_sts; + /* + * Array pointer all dma channel interrupt status registers values + */ + volatile uint32_t *dma_chnl_interrupt_sts; + /* + * MTL interrupt status register value + */ + volatile uint32_t mtl_interrupt_sts; + /* + * MAC interrupt status register value + */ + volatile uint32_t mac_interrupt_sts; +}; + +/** + * @brief Link speed configuration enumeration type. + * + * Enumeration type for link speed indication, contains 'link down' + * plus all link speeds supported by the controller (10/100/1000). + */ +enum eth_dwc_xgmac_link_speed { + /* The values of this enum are consecutively numbered */ + LINK_DOWN = 0, + LINK_10MBIT = 10, + LINK_100MBIT = 100, + LINK_1GBIT = 1000 +}; + +#endif /* _ZEPHYR_DRIVERS_ETHERNET_ETH_DWC_XGMAC_PRIV_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_enc28j60_priv.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_enc28j60_priv.h index 5b63ddab..2f2eb4ff 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_enc28j60_priv.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_enc28j60_priv.h @@ -141,7 +141,6 @@ #define ENC28J60_BIT_MICMD_MIIRD (0x01) #define ENC28J60_BIT_MISTAT_BUSY (0x01) #define ENC28J60_BIT_ESTAT_CLKRDY (0x01) -#define ENC28J60_BIT_MACON1_MARXEN (0x01) #define ENC28J60_BIT_MACON1_RXPAUS (0x04) #define ENC28J60_BIT_MACON1_TXPAUS (0x08) #define ENC28J60_BIT_MACON1_MARXEN (0x01) @@ -151,7 +150,6 @@ #define ENC28J60_BIT_ECON1_TXRTS (0x08) #define ENC28J60_BIT_ECON1_RXEN (0x04) #define ENC28J60_BIT_ECON2_PKTDEC (0x40) -#define ENC28J60_BIT_EIR_PKTIF (0x40) #define ENC28J60_BIT_EIE_TXIE (0x08) #define ENC28J60_BIT_EIE_PKTIE (0x40) #define ENC28J60_BIT_EIE_LINKIE (0x10) @@ -166,7 +164,7 @@ #define ENC28J60_BIT_ESTAT_TXABRT (0x02) #define ENC28J60_BIT_ESTAT_LATECOL (0x10) #define ENC28J60_BIT_PHCON1_PDPXMD (0x0100) -#define ENC28J60_BIT_PHCON2_HDLDIS (0x0001) +#define ENC28J60_BIT_PHCON2_HDLDIS (0x0100) #define ENC28J60_BIT_PHSTAT2_LSTAT (0x0400) #define ENC28J60_BIT_PHIE_PGEIE (0x0002) #define ENC28J60_BIT_PHIE_PLNKIE (0x0010) @@ -227,6 +225,7 @@ struct eth_enc28j60_config { uint8_t full_duplex; int32_t timeout; uint8_t hw_rx_filter; + bool random_mac; }; struct eth_enc28j60_runtime { @@ -239,6 +238,7 @@ struct eth_enc28j60_runtime { struct k_sem tx_rx_sem; struct k_sem int_sem; bool iface_initialized : 1; + bool iface_carrier_on_init : 1; }; #endif /*_ENC28J60_*/ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_lan865x_priv.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_lan865x_priv.h index 8f1b7675..1ba84bd9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_lan865x_priv.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_lan865x_priv.h @@ -28,6 +28,9 @@ #define LAN865x_MAC_NCR_RXEN BIT(2) #define LAN865x_MAC_NCFGR MMS_REG(0x1, 0x001) #define LAN865x_MAC_NCFGR_CAF BIT(4) +#define LAN865x_MAC_NCFGR_MTIHEN BIT(6) +#define LAN865x_MAC_HRB MMS_REG(0x1, 0x020) +#define LAN865x_MAC_HRT MMS_REG(0x1, 0x021) #define LAN865x_MAC_SAB1 MMS_REG(0x1, 0x022) #define LAN865x_MAC_SAB2 MMS_REG(0x1, 0x024) #define LAN865x_MAC_SAT2 MMS_REG(0x1, 0x025) @@ -78,4 +81,14 @@ struct lan865x_data { k_tid_t tid_int; }; +static inline void lan865x_update_dev_cfg_array(oa_mem_map_t *cfg, uint8_t size, + uint32_t addr, uint16_t val) +{ + for (uint8_t i = 0; i < size; i++) { + if (cfg[i].address == addr) { + cfg[i].value = val; + } + } +} + #endif /* ETH_LAN865X_PRIV_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_lan9250_priv.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_lan9250_priv.h new file mode 100644 index 00000000..b6379216 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_lan9250_priv.h @@ -0,0 +1,333 @@ +/* LAN9250 Stand-alone Ethernet Controller with SPI + * + * Copyright (c) 2024 Mario Paja + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include + +#ifndef _LAN9250_ +#define _LAN9250_ + +#define LAN9250_DEFAULT_NUMOF_RETRIES 3U +#define LAN9250_PHY_TIMEOUT 2000 +#define LAN9250_MAC_TIMEOUT 2000 +#define LAN9250_RESET_TIMEOUT 5000 + +#define LAN9250_ALIGN(v) (((v) + 3) & (~3)) + +/* SPI instructions */ +#define LAN9250_SPI_INSTR_WRITE 0x02 +#define LAN9250_SPI_INSTR_READ 0x03 + +/* TX command 'A' format */ +#define LAN9250_TX_CMD_A_INT_ON_COMP 0x80000000 +#define LAN9250_TX_CMD_A_BUFFER_ALIGN_4B 0x00000000 +#define LAN9250_TX_CMD_A_START_OFFSET_0B 0x00000000 +#define LAN9250_TX_CMD_A_FIRST_SEG 0x00002000 +#define LAN9250_TX_CMD_A_LAST_SEG 0x00001000 + +/* TX command 'B' format */ +#define LAN9250_TX_CMD_B_PACKET_TAG 0xFFFF0000 + +/* RX status format */ +#define LAN9250_RX_STS_PACKET_LEN 0x3FFF0000 + +/* LAN9250 System registers */ +#define LAN9250_RX_DATA_FIFO 0x0000 +#define LAN9250_TX_DATA_FIFO 0x0020 +#define LAN9250_RX_STATUS_FIFO 0x0040 +#define LAN9250_TX_STATUS_FIFO 0x0048 +#define LAN9250_ID_REV 0x0050 +#define LAN9250_IRQ_CFG 0x0054 +#define LAN9250_INT_STS 0x0058 +#define LAN9250_INT_EN 0x005C +#define LAN9250_BYTE_TEST 0x0064 +#define LAN9250_FIFO_INT 0x0068 +#define LAN9250_RX_CFG 0x006C +#define LAN9250_TX_CFG 0x0070 +#define LAN9250_HW_CFG 0x0074 +#define LAN9250_RX_FIFO_INF 0x007C +#define LAN9250_TX_FIFO_INF 0x0080 +#define LAN9250_PMT_CTRL 0x0084 +#define LAN9250_MAC_CSR_CMD 0x00A4 +#define LAN9250_MAC_CSR_DATA 0x00A8 +#define LAN9250_AFC_CFG 0x00AC +#define LAN9250_RESET_CTL 0x01F8 + +/* LAN9250 Host MAC registers */ +#define LAN9250_HMAC_CR 0x01 +#define LAN9250_HMAC_ADDRH 0x02 +#define LAN9250_HMAC_ADDRL 0x03 +#define LAN9250_HMAC_MII_ACC 0x06 +#define LAN9250_HMAC_MII_DATA 0x07 + +/* LAN9250 PHY registers */ +#define LAN9250_PHY_BASIC_CONTROL 0x00 +#define LAN9250_PHY_AN_ADV 0x04 +#define LAN9250_PHY_SPECIAL_MODES 0x12 +#define LAN9250_PHY_SPECIAL_CONTROL_STAT_IND 0x1B +#define LAN9250_PHY_INTERRUPT_SOURCE 0x1D +#define LAN9250_PHY_INTERRUPT_MASK 0x1E +#define LAN9250_PHY_SPECIAL_CONTROL_STATUS 0x1F + +/* Interrupt Configuration register */ +#define LAN9250_IRQ_CFG_INT_DEAS 0xFF000000 +#define LAN9250_IRQ_CFG_INT_DEAS_10US 0x01000000 +#define LAN9250_IRQ_CFG_INT_DEAS_100US 0x0A000000 +#define LAN9250_IRQ_CFG_INT_DEAS_1MS 0x64000000 +#define LAN9250_IRQ_CFG_INT_DEAS_CLR 0x00004000 +#define LAN9250_IRQ_CFG_INT_DEAS_STS 0x00002000 +#define LAN9250_IRQ_CFG_IRQ_INT 0x00001000 +#define LAN9250_IRQ_CFG_IRQ_EN 0x00000100 +#define LAN9250_IRQ_CFG_IRQ_POL 0x00000010 +#define LAN9250_IRQ_CFG_IRQ_POL_LOW 0x00000000 +#define LAN9250_IRQ_CFG_IRQ_POL_HIGH 0x00000010 +#define LAN9250_IRQ_CFG_IRQ_CLK_SELECT 0x00000002 +#define LAN9250_IRQ_CFG_IRQ_TYPE 0x00000001 +#define LAN9250_IRQ_CFG_IRQ_TYPE_OD 0x00000000 +#define LAN9250_IRQ_CFG_IRQ_TYPE_PP 0x00000001 + +/* INTERRUPT STATUS REGISTER (INT_STS) */ +#define LAN9250_INT_STS_SW_INT 0x80000000 +#define LAN9250_INT_STS_READY 0x40000000 +#define LAN9250_INT_STS_1588_EVNT 0x20000000 +#define LAN9250_INT_STS_PHY_INT 0x04000000 +#define LAN9250_INT_STS_TXSTOP_INT 0x02000000 +#define LAN9250_INT_STS_RXSTOP_INT 0x01000000 +#define LAN9250_INT_STS_RXDFH_INT 0x00800000 +#define LAN9250_INT_STS_TX_IOC 0x00200000 +#define LAN9250_INT_STS_RXD_INT 0x00100000 +#define LAN9250_INT_STS_GPT_INT 0x00080000 +#define LAN9250_INT_STS_PME_INT 0x00020000 +#define LAN9250_INT_STS_TXSO 0x00010000 +#define LAN9250_INT_STS_RWT 0x00008000 +#define LAN9250_INT_STS_RXE 0x00004000 +#define LAN9250_INT_STS_TXE 0x00002000 +#define LAN9250_INT_STS_GPIO 0x00001000 +#define LAN9250_INT_STS_TDFO 0x00000400 +#define LAN9250_INT_STS_TDFA 0x00000200 +#define LAN9250_INT_STS_TSFF 0x00000100 +#define LAN9250_INT_STS_TSFL 0x00000080 +#define LAN9250_INT_STS_RXDF_INT 0x00000040 +#define LAN9250_INT_STS_RSFF 0x00000010 +#define LAN9250_INT_STS_RSFL 0x00000008 + +/* INTERRUPT ENABLE REGISTER (INT_EN) */ +#define LAN9250_INT_EN_SW_INT_EN 0x80000000 +#define LAN9250_INT_EN_READY_EN 0x40000000 +#define LAN9250_INT_EN_1588_EVNT_EN 0x20000000 +#define LAN9250_INT_EN_PHY_INT_EN 0x04000000 +#define LAN9250_INT_EN_TXSTOP_INT_EN 0x02000000 +#define LAN9250_INT_EN_RXSTOP_INT_EN 0x01000000 +#define LAN9250_INT_EN_RXDFH_INT_EN 0x00800000 +#define LAN9250_INT_EN_TIOC_INT_EN 0x00200000 +#define LAN9250_INT_EN_RXD_INT_EN 0x00100000 +#define LAN9250_INT_EN_GPT_INT_EN 0x00080000 +#define LAN9250_INT_EN_PME_INT_EN 0x00020000 +#define LAN9250_INT_EN_TXSO_EN 0x00010000 +#define LAN9250_INT_EN_RWT_INT_EN 0x00008000 +#define LAN9250_INT_EN_RXE_INT_EN 0x00004000 +#define LAN9250_INT_EN_TXE_INT_EN 0x00002000 +#define LAN9250_INT_EN_GPIO_EN 0x00001000 +#define LAN9250_INT_EN_TDFO_EN 0x00000400 +#define LAN9250_INT_EN_TDFA_EN 0x00000200 +#define LAN9250_INT_EN_TSFF_EN 0x00000100 +#define LAN9250_INT_EN_TSFL_EN 0x00000080 +#define LAN9250_INT_EN_RXDF_INT_EN 0x00000040 +#define LAN9250_INT_EN_RSFF_EN 0x00000010 +#define LAN9250_INT_EN_RSFL_EN 0x00000008 + +/* Byte Order Test register */ +#define LAN9250_BYTE_TEST_DEFAULT 0x87654321 +#define BOTR_MASK 0xffffffff + +/* FIFO Level Interrupt register */ +#define LAN9250_FIFO_INT_TX_DATA_AVAILABLE_LEVEL 0xFF000000 +#define LAN9250_FIFO_INT_TX_STATUS_LEVEL 0x00FF0000 +#define LAN9250_FIFO_INT_RX_STATUS_LEVEL 0x000000FF + +/* TRANSMIT CONFIGURATION REGISTER (TX_CFG) */ +#define LAN9250_TX_CFG_TXS_DUMP 0x00008000 +#define LAN9250_TX_CFG_TXD_DUMP 0x00004000 +#define LAN9250_TX_CFG_TXSAO 0x00000004 +#define LAN9250_TX_CFG_TX_ON 0x00000002 +#define LAN9250_TX_CFG_STOP_TX 0x00000001 + +/* HARDWARE CONFIGURATION REGISTER (HW_CFG) */ +#define LAN9250_HW_CFG_DEVICE_READY 0x08000000 +#define LAN9250_HW_CFG_AMDIX_EN_STRAP_STATE 0x02000000 +#define LAN9250_HW_CFG_MBO 0x00100000 +#define LAN9250_HW_CFG_TX_FIF_SZ 0x000F0000 +#define LAN9250_HW_CFG_TX_FIF_SZ_2KB 0x00020000 +#define LAN9250_HW_CFG_TX_FIF_SZ_3KB 0x00030000 +#define LAN9250_HW_CFG_TX_FIF_SZ_4KB 0x00040000 +#define LAN9250_HW_CFG_TX_FIF_SZ_5KB 0x00050000 +#define LAN9250_HW_CFG_TX_FIF_SZ_6KB 0x00060000 +#define LAN9250_HW_CFG_TX_FIF_SZ_7KB 0x00070000 +#define LAN9250_HW_CFG_TX_FIF_SZ_8KB 0x00080000 +#define LAN9250_HW_CFG_TX_FIF_SZ_9KB 0x00090000 +#define LAN9250_HW_CFG_TX_FIF_SZ_10KB 0x000A0000 +#define LAN9250_HW_CFG_TX_FIF_SZ_11KB 0x000B0000 +#define LAN9250_HW_CFG_TX_FIF_SZ_12KB 0x000C0000 +#define LAN9250_HW_CFG_TX_FIF_SZ_13KB 0x000D0000 +#define LAN9250_HW_CFG_TX_FIF_SZ_14KB 0x000E0000 + +/* RX FIFO Information register */ +#define LAN9250_RX_FIFO_INF_RXSUSED 0x00FF0000 +#define LAN9250_RX_FIFO_INF_RXDUSED 0x0000FFFF + +/* TX FIFO Information register */ +#define LAN9250_TX_FIFO_INF_TXSUSED 0x00FF0000 +#define LAN9250_TX_FIFO_INF_TXFREE 0x0000FFFF + +/* Power Management Control Register (PMT_CTRL) */ +#define LAN9250_PMT_CTRL_PM_MODE 0xE0000000 +#define LAN9250_PMT_CTRL_PM_SLEEP_EN 0x10000000 +#define LAN9250_PMT_CTRL_PM_WAKE 0x08000000 +#define LAN9250_PMT_CTRL_LED_DIS 0x04000000 +#define LAN9250_PMT_CTRL_1588_DIS 0x02000000 +#define LAN9250_PMT_CTRL_1588_TSU_DIS 0x00400000 +#define LAN9250_PMT_CTRL_HMAC_DIS 0x00080000 +#define LAN9250_PMT_CTRL_HMAC_SYS_ONLY_DIS 0x00040000 +#define LAN9250_PMT_CTRL_ED_STS 0x00010000 +#define LAN9250_PMT_CTRL_ED_EN 0x00004000 +#define LAN9250_PMT_CTRL_WOL_EN 0x00000200 +#define LAN9250_PMT_CTRL_PME_TYPE 0x00000040 +#define LAN9250_PMT_CTRL_WOL_STS 0x00000020 +#define LAN9250_PMT_CTRL_PME_IND 0x00000008 +#define LAN9250_PMT_CTRL_PME_POL 0x00000004 +#define LAN9250_PMT_CTRL_PME_EN 0x00000002 +#define LAN9250_PMT_CTRL_READY 0x00000001 + +/* HOST MAC CSR INTERFACE COMMAND REGISTER (MAC_CSR_CMD) */ +#define LAN9250_MAC_CSR_CMD_BUSY 0x80000000 +#define LAN9250_MAC_CSR_CMD_WRITE 0x00000000 +#define LAN9250_MAC_CSR_CMD_READ 0x40000000 +#define LAN9250_MAC_CSR_CMD_ADDR 0x000000FF + +/* Reset Control Register (RESET_CTL) */ +#define LAN9250_RESET_CTL_HMAC_RST 0x00000020 +#define LAN9250_RESET_CTL_PHY_RST 0x00000002 +#define LAN9250_RESET_CTL_DIGITAL_RST 0x00000001 + +/* HOST MAC CONTROL REGISTER (HMAC_CR) */ +#define LAN9250_HMAC_CR_RXALL 0x80000000 +#define LAN9250_HMAC_CR_HMAC_EEE_ENABLE 0x02000000 +#define LAN9250_HMAC_CR_RCVOWN 0x00800000 +#define LAN9250_HMAC_CR_LOOPBK 0x00200000 +#define LAN9250_HMAC_CR_FDPX 0x00100000 +#define LAN9250_HMAC_CR_MCPAS 0x00080000 +#define LAN9250_HMAC_CR_PRMS 0x00040000 +#define LAN9250_HMAC_CR_INVFILT 0x00020000 +#define LAN9250_HMAC_CR_PASSBAD 0x00010000 +#define LAN9250_HMAC_CR_HO 0x00008000 +#define LAN9250_HMAC_CR_HPFILT 0x00002000 +#define LAN9250_HMAC_CR_BCAST 0x00000800 +#define LAN9250_HMAC_CR_DISRTY 0x00000400 +#define LAN9250_HMAC_CR_PADSTR 0x00000100 +#define LAN9250_HMAC_CR_BOLMT 0x000000C0 +#define LAN9250_HMAC_CR_BOLMT_10_BITS 0x00000000 +#define LAN9250_HMAC_CR_BOLMT_8_BITS 0x00000040 +#define LAN9250_HMAC_CR_BOLMT_4_BITS 0x00000080 +#define LAN9250_HMAC_CR_BOLMT_1_BIT 0x000000C0 +#define LAN9250_HMAC_CR_DFCHK 0x00000020 +#define LAN9250_HMAC_CR_TXEN 0x00000008 +#define LAN9250_HMAC_CR_RXEN 0x00000004 + +/* HOST MAC MII ACCESS REGISTER (HMAC_MII_ACC) */ +#define LAN9250_HMAC_MII_ACC_PHY_ADDR 0x0000F800 +#define LAN9250_HMAC_MII_ACC_PHY_ADDR_DEFAULT 0x00000800 +#define LAN9250_HMAC_MII_ACC_MIIRINDA 0x000007C0 +#define LAN9250_HMAC_MII_ACC_MIIW_R 0x00000002 +#define LAN9250_HMAC_MII_ACC_MIIBZY 0x00000001 + +/* PHY Basic Control Register (PHY_BASIC_CONTROL) */ +#define LAN9250_PHY_BASIC_CONTROL_PHY_SRST 0x8000 +#define LAN9250_PHY_BASIC_CONTROL_PHY_LOOPBACK 0x4000 +#define LAN9250_PHY_BASIC_CONTROL_PHY_SPEED_SEL_LSB 0x2000 +#define LAN9250_PHY_BASIC_CONTROL_PHY_AN 0x1000 +#define LAN9250_PHY_BASIC_CONTROL_PHY_PWR_DWN 0x0800 +#define LAN9250_PHY_BASIC_CONTROL_PHY_RST_AN 0x0200 +#define LAN9250_PHY_BASIC_CONTROL_PHY_DUPLEX 0x0100 +#define LAN9250_PHY_BASIC_CONTROL_PHY_COL_TEST 0x0080 + +/* PHY Auto-Negotiation Advertisement Register (PHY_AN_ADV) */ +#define LAN9250_PHY_AN_ADV_NEXT_PAGE 0x8000 +#define LAN9250_PHY_AN_ADV_REMOTE_FAULT 0x2000 +#define LAN9250_PHY_AN_ADV_EXTENDED_NEXT_PAGE 0x1000 +#define LAN9250_PHY_AN_ADV_ASYM_PAUSE 0x0800 +#define LAN9250_PHY_AN_ADV_SYM_PAUSE 0x0400 +#define LAN9250_PHY_AN_ADV_100BTX_FD 0x0100 +#define LAN9250_PHY_AN_ADV_100BTX_HD 0x0080 +#define LAN9250_PHY_AN_ADV_10BT_FD 0x0040 +#define LAN9250_PHY_AN_ADV_10BT_HD 0x0020 +#define LAN9250_PHY_AN_ADV_SELECTOR 0x001F +#define LAN9250_PHY_AN_ADV_SELECTOR_DEFAULT 0x0001 + +/* PHY Mode Control/Status Register (PHY_MODE_CONTROL_STATUS) */ +#define LAN9250_PHY_MODE_CONTROL_STATUS_EDPWRDOWN 0x2000 +#define LAN9250_PHY_MODE_CONTROL_STATUS_ALTINT 0x0040 +#define LAN9250_PHY_MODE_CONTROL_STATUS_ENERGYON 0x0002 + +/* PHY Special Control/Status Indication Register (PHY_SPECIAL_CONTROL_STAT_IND) */ +#define LAN9250_PHY_SPECIAL_CONTROL_STAT_IND_AMDIXCTRL 0x8000 +#define LAN9250_PHY_SPECIAL_CONTROL_STAT_IND_AMDIXEN 0x4000 +#define LAN9250_PHY_SPECIAL_CONTROL_STAT_IND_AMDIXSTATE 0x2000 +#define LAN9250_PHY_SPECIAL_CONTROL_STAT_IND_SQEOFF 0x0800 +#define LAN9250_PHY_SPECIAL_CONTROL_STAT_IND_FEFI_EN 0x0020 +#define LAN9250_PHY_SPECIAL_CONTROL_STAT_IND_XPOL 0x0010 + +/* PHY Interrupt Source Flags Register (PHY_INTERRUPT_SOURCE) */ +#define LAN9250_PHY_INTERRUPT_SOURCE_LINK_UP 0x0200 +#define LAN9250_PHY_INTERRUPT_SOURCE_ENERGYON 0x0080 +#define LAN9250_PHY_INTERRUPT_SOURCE_AN_COMPLETE 0x0040 +#define LAN9250_PHY_INTERRUPT_SOURCE_REMOTE_FAULT 0x0020 +#define LAN9250_PHY_INTERRUPT_SOURCE_LINK_DOWN 0x0010 +#define LAN9250_PHY_INTERRUPT_SOURCE_AN_LP_ACK 0x0008 +#define LAN9250_PHY_INTERRUPT_SOURCE_PARALLEL_DETECT_FAULT 0x0004 +#define LAN9250_PHY_INTERRUPT_SOURCE_AN_PAGE_RECEIVED 0x0002 + +/* PHY Interrupt Mask Register (PHY_INTERRUPT_MASK) */ +#define LAN9250_PHY_INTERRUPT_MASK_LINK_UP 0x0200 +#define LAN9250_PHY_INTERRUPT_MASK_ENERGYON 0x0080 +#define LAN9250_PHY_INTERRUPT_MASK_AN_COMPLETE 0x0040 +#define LAN9250_PHY_INTERRUPT_MASK_REMOTE_FAULT 0x0020 +#define LAN9250_PHY_INTERRUPT_MASK_LINK_DOWN 0x0010 +#define LAN9250_PHY_INTERRUPT_MASK_AN_LP_ACK 0x0008 +#define LAN9250_PHY_INTERRUPT_MASK_PARALLEL_DETECT_FAULT 0x0004 +#define LAN9250_PHY_INTERRUPT_MASK_AN_PAGE_RECEIVED 0x0002 + +/* Chip ID and Revision register */ +#define LAN9250_ID_REV_CHIP_ID 0xFFFF0000 +#define LAN9250_ID_REV_CHIP_ID_DEFAULT 0x92500000 +#define LAN9250_ID_REV_CHIP_REV 0x0000FFFF + +struct lan9250_config { + struct spi_dt_spec spi; + struct gpio_dt_spec interrupt; + struct gpio_dt_spec reset; + uint8_t full_duplex; + int32_t timeout; +}; + +struct lan9250_runtime { + struct net_if *iface; + const struct device *dev; + + K_KERNEL_STACK_MEMBER(thread_stack, CONFIG_ETH_LAN9250_RX_THREAD_STACK_SIZE); + k_tid_t tid_int; + struct k_thread thread; + + uint8_t mac_address[6]; + struct gpio_callback gpio_cb; + struct k_sem tx_rx_sem; + struct k_sem int_sem; + uint8_t buf[NET_ETH_MAX_FRAME_SIZE]; + struct k_mutex lock; +}; + +#endif /*_LAN9250_*/ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_nxp_imx_netc_priv.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_nxp_imx_netc_priv.h new file mode 100644 index 00000000..f09e718f --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_nxp_imx_netc_priv.h @@ -0,0 +1,121 @@ +/* + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_ETHERNET_ETH_NXP_IMX_NETC_PRIV_H_ +#define ZEPHYR_DRIVERS_ETHERNET_ETH_NXP_IMX_NETC_PRIV_H_ + +#include "fsl_netc_endpoint.h" +#include "fsl_msgintr.h" + +/* Buffer and descriptor alignment */ +#define NETC_BD_ALIGN 128 +#define NETC_BUFF_ALIGN 64 +#define NETC_RX_RING_BUF_SIZE_ALIGN \ + SDK_SIZEALIGN(CONFIG_ETH_NXP_IMX_RX_RING_BUF_SIZE, NETC_BUFF_ALIGN) + +/* MSIX definitions */ +#define NETC_TX_MSIX_ENTRY_IDX 0 +#define NETC_RX_MSIX_ENTRY_IDX 1 +#define NETC_MSIX_ENTRY_NUM 2 + +#define NETC_MSIX_EVENTS_COUNT NETC_MSIX_ENTRY_NUM +#define NETC_TX_INTR_MSG_DATA_START 0 +#define NETC_RX_INTR_MSG_DATA_START 16 +#define NETC_DRV_MAX_INST_SUPPORT 16 + +/* MSGINTR */ +#define NETC_MSGINTR_CHANNEL 0 + +#if (CONFIG_ETH_NXP_IMX_MSGINTR == 1) +#define NETC_MSGINTR MSGINTR1 +#define NETC_MSGINTR_IRQ MSGINTR1_IRQn +#elif (CONFIG_ETH_NXP_IMX_MSGINTR == 2) +#define NETC_MSGINTR MSGINTR2 +#define NETC_MSGINTR_IRQ MSGINTR2_IRQn +#else +#error "Current CONFIG_ETH_NXP_IMX_MSGINTR not support" +#endif + +/* Timeout for various operations */ +#define NETC_TIMEOUT K_MSEC(20) + +/* Helper macros to convert from Zephyr PHY speed to NETC speed/duplex types */ +#define PHY_TO_NETC_SPEED(x) \ + (PHY_LINK_IS_SPEED_1000M(x) \ + ? kNETC_MiiSpeed1000M \ + : (PHY_LINK_IS_SPEED_100M(x) ? kNETC_MiiSpeed100M : kNETC_MiiSpeed10M)) + +#define PHY_TO_NETC_DUPLEX_MODE(x) \ + (PHY_LINK_IS_FULL_DUPLEX(x) ? kNETC_MiiFullDuplex : kNETC_MiiHalfDuplex) + +/* Helper function to generate an Ethernet MAC address for a given ENETC instance */ +#define FREESCALE_OUI_B0 0x00 +#define FREESCALE_OUI_B1 0x04 +#define FREESCALE_OUI_B2 0x9f + +#define _NETC_GENERATE_MAC_ADDRESS_RANDOM \ + gen_random_mac(mac_addr, FREESCALE_OUI_B0, FREESCALE_OUI_B1, FREESCALE_OUI_B2) + +#define _NETC_GENERATE_MAC_ADDRESS_UNIQUE(n) \ + do { \ + uint32_t id = 0x001100; \ + \ + mac_addr[0] = FREESCALE_OUI_B0; \ + mac_addr[1] = FREESCALE_OUI_B1; \ + /* Set MAC address locally administered bit (LAA) */ \ + mac_addr[2] = FREESCALE_OUI_B2 | 0x02; \ + mac_addr[3] = (id >> 16) & 0xff; \ + mac_addr[4] = (id >> 8) & 0xff; \ + mac_addr[5] = (id + n) & 0xff; \ + } while (0) + +#define NETC_GENERATE_MAC_ADDRESS(n) \ + static void netc_eth##n##_generate_mac(uint8_t mac_addr[6]) \ + { \ + COND_CODE_1(DT_INST_PROP(n, zephyr_random_mac_address), \ + (_NETC_GENERATE_MAC_ADDRESS_RANDOM), \ + (COND_CODE_0(DT_INST_NODE_HAS_PROP(n, local_mac_address), \ + (_NETC_GENERATE_MAC_ADDRESS_UNIQUE(n)), \ + (ARG_UNUSED(mac_addr))))); \ + } + +struct netc_eth_config { + uint16_t si_idx; + const struct device *phy_dev; + void (*generate_mac)(uint8_t *mac_addr); + void (*bdr_init)(netc_bdr_config_t *bdr_config, netc_rx_bdr_config_t *rx_bdr_config, + netc_tx_bdr_config_t *tx_bdr_config); + const struct pinctrl_dev_config *pincfg; + uint8_t tx_intr_msg_data; + uint8_t rx_intr_msg_data; +}; + +typedef uint8_t rx_buffer_t[NETC_RX_RING_BUF_SIZE_ALIGN]; + +struct netc_eth_data { + ep_handle_t handle; + struct net_if *iface; + uint8_t mac_addr[6]; + /* TX */ + struct k_mutex tx_mutex; + netc_tx_frame_info_t tx_info; + uint8_t *tx_buff; + volatile bool tx_done; + /* RX */ + struct k_sem rx_sem; + struct k_thread rx_thread; + + K_KERNEL_STACK_MEMBER(rx_thread_stack, CONFIG_ETH_NXP_IMX_RX_THREAD_STACK_SIZE); + uint8_t *rx_frame; +}; + +int netc_eth_init_common(const struct device *dev); +int netc_eth_tx(const struct device *dev, struct net_pkt *pkt); +enum ethernet_hw_caps netc_eth_get_capabilities(const struct device *dev); +int netc_eth_set_config(const struct device *dev, enum ethernet_config_type type, + const struct ethernet_config *config); + +#endif /* ZEPHYR_DRIVERS_ETHERNET_ETH_NXP_IMX_NETC_PRIV_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_nxp_s32_netc_priv.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_nxp_s32_netc_priv.h index e259b67c..760522b5 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_nxp_s32_netc_priv.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_nxp_s32_netc_priv.h @@ -1,5 +1,5 @@ /* - * Copyright 2022-2023 NXP + * Copyright 2022-2024 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -99,7 +99,7 @@ #define _CONCAT3(a, b, c) DT_CAT3(a, b, c) struct nxp_s32_eth_msix { - void (*handler)(uint8_t chan, const uint32_t *buf, uint8_t buf_size); + void (*handler)(uint8_t chan, const uint32 *buf, uint8_t buf_size); struct mbox_dt_spec mbox_spec; }; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_stm32_hal_priv.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_stm32_hal_priv.h index 9502537a..4aef0389 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_stm32_hal_priv.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/eth_stm32_hal_priv.h @@ -50,10 +50,9 @@ struct eth_stm32_hal_dev_data { const struct device *clock; struct k_mutex tx_mutex; struct k_sem rx_int_sem; -#if defined(CONFIG_SOC_SERIES_STM32H7X) || defined(CONFIG_SOC_SERIES_STM32H5X) || \ - defined(CONFIG_ETH_STM32_HAL_API_V2) +#if defined(CONFIG_ETH_STM32_HAL_API_V2) struct k_sem tx_int_sem; -#endif /* CONFIG_SOC_SERIES_STM32H7X || CONFIG_SOC_SERIES_STM32H5X || CONFIG_ETH_STM32_HAL_API_V2*/ +#endif /* CONFIG_ETH_STM32_HAL_API_V2 */ K_KERNEL_STACK_MEMBER(rx_thread_stack, CONFIG_ETH_STM32_HAL_RX_THREAD_STACK_SIZE); struct k_thread rx_thread; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/oa_tc6.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/oa_tc6.h index 0918e138..c61e0359 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/oa_tc6.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/oa_tc6.h @@ -113,8 +113,9 @@ struct oa_tc6 { }; typedef struct { - uint32_t address; - uint32_t value; + uint8_t mms; + uint8_t address; + uint16_t value; } oa_mem_map_t; /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/phy/phy_dm8806_priv.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/phy/phy_dm8806_priv.h new file mode 100644 index 00000000..4c4a292c --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ethernet/phy/phy_dm8806_priv.h @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2024 Robert Slawinski + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* Port 0~4 PHY Control Register. */ +#define PORTX_PHY_CONTROL_REGISTER 0x0u +/* 10 Mbit/s transfer with half duplex mask. */ +#define MODE_10_BASET_HALF_DUPLEX 0x0u +/* 10 Mbit/s transfer with full duplex mask. */ +#define MODE_10_BASET_FULL_DUPLEX 0x100u +/* 100 Mbit/s transfer with half duplex mask. */ +#define MODE_100_BASET_HALF_DUPLEX 0x2000u +/* 100 Mbit/s transfer with full duplex mask. */ +#define MODE_100_BASET_FULL_DUPLEX 0x2100u +/* Duplex mode ability offset. */ +#define DUPLEX_MODE (1 << 8) +/* Power down mode offset. */ +#define POWER_DOWN (1 << 11) +/* Auto negotiation mode offset. */ +#define AUTO_NEGOTIATION (1 << 12) +/* Link speed selection offset. */ +#define LINK_SPEED (1 << 13) + +/* Port 0~4 Status Data Register. */ +#define PORTX_SWITCH_STATUS 0x10u +/* 10 Mbit/s transfer speed with half duplex. */ +#define SPEED_10MBPS_HALF_DUPLEX 0x00u +/* 10 Mbit/s transfer speed with full duplex. */ +#define SPEED_10MBPS_FULL_DUPLEX 0x01u +/* 100 Mbit/s transfer speed with half duplex. */ +#define SPEED_100MBPS_HALF_DUPLEX 0x02u +/* 100 Mbit/s transfer speed with full duplex. */ +#define SPEED_100MBPS_FULL_DUPLEX 0x03u +/* Speed and duplex mode status offset. */ +#define SPEED_AND_DUPLEX_OFFSET 0x01u +/* Speed and duplex mode staus mask. */ +#define SPEED_AND_DUPLEX_MASK 0x07u +/* Link status mask. */ +#define LINK_STATUS_MASK 0x1u + +/* Switch Engine Registers */ +/* Address Table Control And Status Register PHY Address */ +#define ADDR_TAB_CTRL_STAT_PHY_ADDR 0x15u +/* Address Table Control And Status Register Register SAddress */ +#define ADDR_TAB_CTRL_STAT_REG_ADDR 0x10u + +/* Address Table Access bussy flag offset */ +#define ATB_S_OFFSET 0xf +/* Address Table Command Result flag offset */ +#define ATB_CR_OFFSET 0xd +/* Address Table Command Result flag mask */ +#define ATB_CR_MASK 0x3 + +/* Unicast Address Table Index*/ +#define UNICAST_ADDR_TAB (1 << 0 | 1 << 1) +/* Multicast Address Table Index*/ +#define MULTICAST_ADDR_TAB (1 << 0) +/* IGMP Table Index*/ +#define IGMP_ADDR_TAB (1 << 1) + +/* Read a entry with sequence number of address table */ +#define ATB_CMD_READ (1 << 2 | 1 << 3 | 1 << 4) +/* Write a entry with MAC address */ +#define ATB_CMD_WRITE (1 << 2) +/* Delete a entry with MAC address */ +#define ATB_CMD_DELETE (1 << 3) +/* Search a entry with MAC address */ +#define ATB_CMD_SEARCH (1 << 2 | 1 << 3) +/* Clear one or more than one entries with Port or FID */ +#define ATB_CMD_CLEAR (1 << 4) + +/* Address Table Data 0 PHY Address */ +#define ADDR_TAB_DATA0_PHY_ADDR 0x15u +/* Address Table Data 0 Register Address */ +#define ADDR_TAB_DATA0_REG_ADDR 0x11u +/* Port number or port map mask*/ +#define ATB_PORT_MASK 0x1f + +/* Address Table Data 1 PHY Address */ +#define ADDR_TAB_DATA1_PHY_ADDR 0x15u +/* Address Table Data 1 Register Address */ +#define ADDR_TAB_DATA1_REG_ADDR 0x12u + +/* Address Table Data 2 PHY Address */ +#define ADDR_TAB_DATA2_PHY_ADDR 0x15u +/* Address Table Data 2 Register Address */ +#define ADDR_TAB_DATA2_REG_ADDR 0x13u + +/* Address Table Data 3 PHY Address */ +#define ADDR_TAB_DATA3_PHY_ADDR 0x15u +/* Address Table Data 3 Register Address */ +#define ADDR_TAB_DATA3_REG_ADDR 0x14u + +/* Address Table Data 4 PHY Address */ +#define ADDR_TAB_DATA4_PHY_ADDR 0x15u +/* Address Table Data 4 Register Address */ +#define ADDR_TAB_DATA4_REG_ADDR 0x15u + +/* WoL Control Register PHY Address */ +#define WOLL_CTRL_REG_PHY_ADDR 0x15u +/* WoL Control Register Register Address */ +#define WOLL_CTRL_REG_REG_ADDR 0x1bu + +/* PHY address 0x18h */ +#define PHY_ADDRESS_18H 0x18u + +/* Interrupt Status Register PHY Address. */ +#define INT_STAT_PHY_ADDR 0x18u +/* Interrupt Status Register Register Address. */ +#define INT_STAT_REG_ADDR 0x18u + +/* Interrupt Mask & Control Register PHY Address. */ +#define INT_MASK_CTRL_PHY_ADDR 0x18u +/* Interrupt Mask & Control Register Register Address. */ +#define INT_MASK_CTRL_REG_ADDR 0x19u + +#define PORT5_MAC_CONTROL 0x15u +/* Port 5 Force Speed control bit */ +#define P5_SPEED_100M ~BIT(0) +/* Port 5 Force Duplex control bit */ +#define P5_FULL_DUPLEX ~BIT(1) +/* Port 5 Force Link control bit. Only available in force mode. */ +#define P5_FORCE_LINK_ON ~BIT(2) +/* Port 5 Force Mode Enable control bit. Only available for + * MII/RevMII/RMII + */ +#define P5_EN_FORCE BIT(3) +/* Bit 4 is reserved and should not be use */ +/* Port 5 50MHz Clock Output Enable control bit. Only available when Port 5 + * be configured as RMII + */ +#define P5_50M_CLK_OUT_ENABLE BIT(5) +/* Port 5 Clock Source Selection control bit. Only available when Port 5 + * is configured as RMII + */ +#define P5_50M_INT_CLK_SOURCE BIT(6) +/* Port 5 Output Pin Slew Rate. */ +#define P5_NORMAL_SLEW_RATE ~BIT(7) +/* IRQ and LED Control Register. */ +#define IRQ_LED_CONTROL 0x17u +/* LED mode 0: + * LNK_LED: + * 100M link fail - LED off + * 100M link ok and no TX/RX activity - LED on + * 100M link ok and TX/RX activity - LED blinking + * SPD_LED: + * No colision: - LED off + * Colision: - LED blinking + * FDX_LED: + * 10M link fail - LED off + * 10M link ok and no TX/RX activity - LED on + * 10M link ok and TX/RX activity - LED blinking + */ +#define LED_MODE_0 ~(BIT(0) | BIT(1)) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/firmware/scmi/mailbox.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/firmware/scmi/mailbox.h new file mode 100644 index 00000000..4e758d8e --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/firmware/scmi/mailbox.h @@ -0,0 +1,117 @@ +/* + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef _ZEPHYR_DRIVERS_FIRMWARE_SCMI_MAILBOX_H_ +#define _ZEPHYR_DRIVERS_FIRMWARE_SCMI_MAILBOX_H_ + +#include +#include +#include +#include +#include + +#define DT_DRV_COMPAT arm_scmi + +/* get a `struct device` for a protocol's shared memory area */ +#define _SCMI_MBOX_SHMEM_BY_IDX(node_id, idx) \ + COND_CODE_1(DT_PROP_HAS_IDX(node_id, shmem, idx), \ + (DEVICE_DT_GET(DT_PROP_BY_IDX(node_id, shmem, idx))), \ + (NULL)) + +/* get the name of mailbox channel's private data */ +#define _SCMI_MBOX_CHAN_NAME(proto, idx)\ + CONCAT(SCMI_TRANSPORT_CHAN_NAME(proto, idx), _, priv) + +/* fetch a mailbox channel's doorbell */ +#define _SCMI_MBOX_CHAN_DBELL(node_id, name) \ + COND_CODE_1(DT_PROP_HAS_NAME(node_id, mboxes, name), \ + (MBOX_DT_SPEC_GET(node_id, name)), \ + ({ })) + +/* define private data for a protocol TX channel */ +#define _SCMI_MBOX_CHAN_DEFINE_PRIV_TX(node_id, proto) \ + static struct scmi_mbox_channel _SCMI_MBOX_CHAN_NAME(proto, 0) =\ + { \ + .shmem = _SCMI_MBOX_SHMEM_BY_IDX(node_id, 0), \ + .tx = _SCMI_MBOX_CHAN_DBELL(node_id, tx), \ + .tx_reply = _SCMI_MBOX_CHAN_DBELL(node_id, tx_reply), \ + } + +/* + * Define a mailbox channel. This does two things: + * 1) Define the mandatory `struct scmi_channel` structure + * 2) Define the mailbox-specific private data for said + * channel (i.e: a struct scmi_mbox_channel) + */ +#define _SCMI_MBOX_CHAN_DEFINE(node_id, proto, idx) \ + _SCMI_MBOX_CHAN_DEFINE_PRIV_TX(node_id, proto); \ + DT_SCMI_TRANSPORT_CHAN_DEFINE(node_id, idx, proto, \ + &(_SCMI_MBOX_CHAN_NAME(proto, idx))); \ + +/* + * Optionally define a mailbox channel for a protocol. This is optional + * because a protocol might not have a dedicated channel. + */ +#define _SCMI_MBOX_CHAN_DEFINE_OPTIONAL(node_id, proto, idx) \ + COND_CODE_1(DT_PROP_HAS_IDX(node_id, shmem, idx), \ + (_SCMI_MBOX_CHAN_DEFINE(node_id, proto, idx)), \ + ()) + +/* define a TX channel for a protocol node. This is preferred over + * _SCMI_MBOX_CHAN_DEFINE_OPTIONAL() since support for RX channels + * might be added later on. This macro is supposed to also define + * the RX channel + */ +#define SCMI_MBOX_PROTO_CHAN_DEFINE(node_id)\ + _SCMI_MBOX_CHAN_DEFINE_OPTIONAL(node_id, DT_REG_ADDR(node_id), 0) + +/* define and validate base protocol TX channel */ +#define DT_INST_SCMI_MBOX_BASE_CHAN_DEFINE(inst) \ + BUILD_ASSERT(DT_INST_PROP_LEN(inst, mboxes) != 1 || \ + (DT_INST_PROP_HAS_IDX(inst, shmem, 0) && \ + DT_INST_PROP_HAS_NAME(inst, mboxes, tx)), \ + "bad bidirectional channel description"); \ + \ + BUILD_ASSERT(DT_INST_PROP_LEN(inst, mboxes) != 2 || \ + (DT_INST_PROP_HAS_NAME(inst, mboxes, tx) && \ + DT_INST_PROP_HAS_NAME(inst, mboxes, tx_reply)), \ + "bad unidirectional channel description"); \ + \ + BUILD_ASSERT(DT_INST_PROP_LEN(inst, shmem) == 1, \ + "bad SHMEM count"); \ + \ + BUILD_ASSERT(DT_INST_PROP_LEN(inst, mboxes) <= 2, \ + "bad mbox count"); \ + \ + _SCMI_MBOX_CHAN_DEFINE(DT_INST(inst, DT_DRV_COMPAT), SCMI_PROTOCOL_BASE, 0) + +/* + * Define the mailbox-based transport layer. What this does is: + * + * 1) Goes through all protocol nodes (children of the `scmi` node) + * and creates a `struct scmi_channel` and its associated + * `struct scmi_mbox_channel` if the protocol has a dedicated channel. + * + * 2) Creates aforementioned structures for the base protocol + * (identified by the `scmi` node) + * + * 3) "registers" the driver via `DT_INST_SCMI_TRANSPORT_DEFINE()`. + */ +#define DT_INST_SCMI_MAILBOX_DEFINE(inst, level, prio, api) \ + DT_INST_FOREACH_CHILD_STATUS_OKAY(inst, SCMI_MBOX_PROTO_CHAN_DEFINE) \ + DT_INST_SCMI_MBOX_BASE_CHAN_DEFINE(inst) \ + DT_INST_SCMI_TRANSPORT_DEFINE(inst, NULL, NULL, NULL, level, prio, api) + +struct scmi_mbox_channel { + /* SHMEM area bound to the channel */ + const struct device *shmem; + /* TX dbell */ + struct mbox_dt_spec tx; + /* TX reply dbell */ + struct mbox_dt_spec tx_reply; +}; + +#endif /* _ZEPHYR_DRIVERS_FIRMWARE_SCMI_MAILBOX_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/flash_hp_ra.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/flash_hp_ra.h index a2c208c8..968c74c4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/flash_hp_ra.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/flash_hp_ra.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2024 Renesas Electronics Corporation + * * SPDX-License-Identifier: Apache-2.0 */ @@ -11,54 +12,33 @@ #include #include -#if DT_PROP(DT_INST(0, soc_nv_flash), write_block_size) -#define FLASH_RA_WRITE_BLOCK_SIZE DT_PROP(DT_INST(0, soc_nv_flash), write_block_size) -#else -#error Flash write block size not available -/* Flash Write block size is extracted from device tree */ -/* as flash node property 'write-block-size' */ -#endif - -#if defined(CONFIG_DUAL_BANK_MODE) -#define SOC_NV_FLASH_SIZE 0x2F8000 -#else -#define SOC_NV_FLASH_SIZE DT_REG_SIZE(DT_INST(0, soc_nv_flash)) -#endif - -#define VECTOR_NUMBER_FCU_FRDYI ((IRQn_Type) 0) /* FCU FRDYI (Flash ready interrupt) */ -#define VECTOR_NUMBER_FCU_FIFERR ((IRQn_Type) 1) /* FCU FIFERR (Flash access error interrupt) */ - -struct flash_hp_ra_data { - struct st_flash_hp_instance_ctrl flash_ctrl; - struct st_flash_cfg fsp_config; -}; - -struct flash_hp_ra_config { - struct flash_parameters flash_ra_parameters; -}; +#define CHECK_EQ(val1, val2) ((val1) == (val2) ? 1 : 0) +#define GET_SIZE(COND, value, default_value) ((COND) ? (value) : (default_value)) #define FLASH_HP_BANK2_OFFSET \ (BSP_FEATURE_FLASH_HP_CF_DUAL_BANK_START - BSP_FEATURE_FLASH_CODE_FLASH_START) #define FLASH_HP_CF_BLOCK_8KB_SIZE BSP_FEATURE_FLASH_HP_CF_REGION0_BLOCK_SIZE #define FLASH_HP_CF_BLOCK_32KB_SIZE BSP_FEATURE_FLASH_HP_CF_REGION1_BLOCK_SIZE +#define FLASH_HP_DF_BLOCK_SIZE BSP_FEATURE_FLASH_HP_DF_BLOCK_SIZE +#define FLASH_HP_DF_START BSP_FEATURE_FLASH_DATA_FLASH_START -#define FLASH_HP_CF_BLOCK_8KB_LOW_START (0) -#define FLASH_HP_CF_BLOCK_8KB_LOW_END (7) +#define FLASH_HP_CF_BLOCK_8KB_LOW_START (0) +#define FLASH_HP_CF_BLOCK_8KB_LOW_END (7) #define FLASH_HP_CF_BLOCK_8KB_HIGH_START (70) #define FLASH_HP_CF_BLOCK_8KB_HIGH_END (77) -#define FLASH_HP_CF_BLOCK_32KB_LINEAR_START (8) +#define FLASH_HP_CF_BLOCK_32KB_LINEAR_START (8) #define FLASH_HP_CF_BLOCK_32KB_DUAL_LOW_START (8) #define FLASH_HP_CF_BLOCK_32KB_DUAL_HIGH_START (78) -#if defined(CONFIG_SOC_R7FA8M1AHECBD) || defined(CONFIG_SOC_R7FA8D1BHECBD) \ -|| defined(CONFIG_SOC_R7FA8T1AHECBD) -#define FLASH_RESERVED_AREA_NUM (33) -#define FLASH_HP_CF_BLOCK_32KB_LINEAR_END (68) -#define FLASH_HP_CF_BLOCK_32KB_DUAL_LOW_END (36) -#define FLASH_HP_CF_BLOCK_32KB_DUAL_HIGH_END (106) +#if defined(CONFIG_SOC_R7FA8M1AHECBD) || defined(CONFIG_SOC_R7FA8D1BHECBD) || \ + defined(CONFIG_SOC_R7FA8T1AHECBD) +#define FLASH_RESERVED_AREA_NUM (33) +#define FLASH_HP_CF_BLOCK_32KB_LINEAR_END (68) +#define FLASH_HP_CF_BLOCK_32KB_DUAL_LOW_END (36) +#define FLASH_HP_CF_BLOCK_32KB_DUAL_HIGH_END (106) #endif #if defined(CONFIG_FLASH_EX_OP_ENABLED) @@ -68,24 +48,46 @@ struct flash_hp_ra_config { #define FLASH_HP_FCU_CONFIG_SET_PBPS (0x1300A1E0U) #define FLASH_HP_FCU_CONFIG_SET_PBPS_SEC (0x0300A260U) +#endif /* CONFIG_FLASH_EX_OP_ENABLED */ /* Zero based offset into g_configuration_area_data[] for BPS */ #define FLASH_HP_FCU_CONFIG_SET_BPS_OFFSET (0U) +enum flash_region { + CODE_FLASH, + DATA_FLASH, +}; + +typedef void (*irq_config_func_t)(const struct device *dev); + +struct flash_hp_ra_controller { + struct st_flash_hp_instance_ctrl flash_ctrl; + struct k_sem ctrl_sem; + struct st_flash_cfg fsp_config; +}; + +struct flash_hp_ra_controller_config { + irq_config_func_t irq_config; +}; + +struct flash_hp_ra_data { + struct flash_hp_ra_controller *controller; + enum flash_region FlashRegion; + uint32_t area_address; + uint32_t area_size; +}; + +struct flash_hp_ra_config { + struct flash_parameters flash_ra_parameters; +}; + +struct event_flash { + volatile bool erase_complete; + volatile bool write_complete; +}; + #if defined(CONFIG_FLASH_RA_WRITE_PROTECT) -int flash_ra_block_protect_set(const struct device *dev, - const struct flash_ra_ex_write_protect_in_t *request); -int flash_ra_block_protect_get(const struct device *dev, - struct flash_ra_ex_write_protect_out_t *response); int flash_ra_ex_op_write_protect(const struct device *dev, const uintptr_t in, void *out); #endif /*CONFIG_FLASH_RA_WRITE_PROTECT*/ -fsp_err_t R_FLASH_HP_BlockProtectSet(flash_ctrl_t *const p_api_ctrl, uint8_t *bps_val_ns, - uint8_t *bps_val_sec, uint8_t *bps_val_sel, - uint8_t *pbps_val_ns, uint8_t *pbps_val_sec, uint32_t size); -fsp_err_t R_FLASH_HP_BlockProtectGet(flash_ctrl_t *const p_api_ctrl, uint32_t *bps_val_ns, - uint32_t *bps_val_sec, uint8_t *bps_val_sel, - uint8_t *pbps_val_ns, uint8_t *pbps_val_sec, uint32_t *size); -#endif - #endif /* ZEPHYR_DRIVERS_FLASH_RA_HP_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/flash_stm32.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/flash_stm32.h index ca08b7e1..48e75145 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/flash_stm32.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/flash_stm32.h @@ -10,6 +10,7 @@ #define ZEPHYR_DRIVERS_FLASH_FLASH_STM32_H_ #include +#include "stm32_hsem.h" #if DT_NODE_HAS_PROP(DT_INST(0, st_stm32_flash_controller), clocks) || \ DT_NODE_HAS_PROP(DT_INST(0, st_stm32h7_flash_controller), clocks) @@ -271,6 +272,40 @@ static inline bool flash_stm32_range_exists(const struct device *dev, } #endif /* CONFIG_FLASH_PAGE_LAYOUT */ + +#if defined(CONFIG_MULTITHREADING) || defined(CONFIG_STM32H7_DUAL_CORE) +/* + * This is named flash_stm32_sem_take instead of flash_stm32_lock (and + * similarly for flash_stm32_sem_give) to avoid confusion with locking + * actual flash pages. + */ + +static inline void _flash_stm32_sem_take(const struct device *dev) +{ + k_sem_take(&FLASH_STM32_PRIV(dev)->sem, K_FOREVER); + z_stm32_hsem_lock(CFG_HW_FLASH_SEMID, HSEM_LOCK_WAIT_FOREVER); +} + +static inline void _flash_stm32_sem_give(const struct device *dev) +{ + z_stm32_hsem_unlock(CFG_HW_FLASH_SEMID); + k_sem_give(&FLASH_STM32_PRIV(dev)->sem); +} + +#define flash_stm32_sem_init(dev) k_sem_init(&FLASH_STM32_PRIV(dev)->sem, 1, 1) +#define flash_stm32_sem_take(dev) _flash_stm32_sem_take(dev) +#define flash_stm32_sem_give(dev) _flash_stm32_sem_give(dev) +#else +#define flash_stm32_sem_init(dev) +#define flash_stm32_sem_take(dev) +#define flash_stm32_sem_give(dev) +#endif /* CONFIG_MULTITHREADING */ + +#ifdef CONFIG_FLASH_EX_OP_ENABLED +int flash_stm32_ex_op(const struct device *dev, uint16_t code, + const uintptr_t in, void *out); +#endif /* CONFIG_FLASH_EX_OP_ENABLED */ + static inline bool flash_stm32_valid_write(off_t offset, uint32_t len) { return ((offset % FLASH_STM32_WRITE_BLOCK_SIZE == 0) && @@ -311,22 +346,14 @@ int flash_stm32_get_wp_sectors(const struct device *dev, uint32_t *protected_sectors); #endif #if defined(CONFIG_FLASH_STM32_READOUT_PROTECTION) +uint8_t flash_stm32_get_rdp_level(const struct device *dev); -int flash_stm32_update_rdp(const struct device *dev, bool enable, - bool permanent); - -int flash_stm32_get_rdp(const struct device *dev, bool *enabled, - bool *permanent); +void flash_stm32_set_rdp_level(const struct device *dev, uint8_t level); #endif -/* Flash extended operations */ -#if defined(CONFIG_FLASH_STM32_WRITE_PROTECT) -int flash_stm32_ex_op_sector_wp(const struct device *dev, const uintptr_t in, - void *out); -#endif -#if defined(CONFIG_FLASH_STM32_READOUT_PROTECTION) -int flash_stm32_ex_op_rdp(const struct device *dev, const uintptr_t in, - void *out); +#if defined(CONFIG_FLASH_STM32_BLOCK_REGISTERS) +int flash_stm32_control_register_disable(const struct device *dev); +int flash_stm32_option_bytes_disable(const struct device *dev); #endif #endif /* ZEPHYR_DRIVERS_FLASH_FLASH_STM32_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/jesd216.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/jesd216.h index facd11a3..7395cfb3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/jesd216.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/jesd216.h @@ -129,6 +129,8 @@ static inline uint32_t jesd216_sfdp_magic(const struct jesd216_sfdp_header *hp) * the standard. Rather than pre-define layouts to access to all * potential fields this header provides functions for specific fields * known to be important, such as density and erase command support. + * + * Must be aligned to a DWORD (32-bit) address according to JESD216F. */ struct jesd216_bfp { uint32_t dw1; @@ -141,7 +143,7 @@ struct jesd216_bfp { uint32_t dw8; uint32_t dw9; uint32_t dw10[]; -} __packed; +} __aligned(4); /* Provide a few word-specific flags and bitfield ranges for values * that an application or driver might expect to want to extract. @@ -529,4 +531,15 @@ int jesd216_bfp_decode_dw16(const struct jesd216_param_header *php, const struct jesd216_bfp *bfp, struct jesd216_bfp_dw16 *res); +/* JESD216D-01 section 6.6: 4-Byte Address Instruction Parameter */ +#define JESD216_SFDP_4B_ADDR_DW1_1S_1S_1S_READ_13_SUP BIT(0) +#define JESD216_SFDP_4B_ADDR_DW1_1S_1S_1S_FAST_READ_0C_SUP BIT(1) +#define JESD216_SFDP_4B_ADDR_DW1_1S_1S_2_FAST_READ_3C_SUP BIT(2) +#define JESD216_SFDP_4B_ADDR_DW1_1S_2S_2S_FAST_READ_BC_SUP BIT(3) +#define JESD216_SFDP_4B_ADDR_DW1_1S_1S_4S_FAST_READ_6C_SUP BIT(4) +#define JESD216_SFDP_4B_ADDR_DW1_1S_4S_4_FAST_READ_EC_SUP BIT(5) +#define JESD216_SFDP_4B_ADDR_DW1_1S_1S_1S_PP_12_SUP BIT(6) +#define JESD216_SFDP_4B_ADDR_DW1_1S_1S_4S_PP_34_SUP BIT(7) +#define JESD216_SFDP_4B_ADDR_DW1_1S_4S_4S_PP_3E_SUP BIT(8) + #endif /* ZEPHYR_DRIVERS_FLASH_JESD216_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/spi_nor.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/spi_nor.h index 5f38c982..a918e0a9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/spi_nor.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/flash/spi_nor.h @@ -39,6 +39,7 @@ #define SPI_NOR_CMD_SE_4B 0x21 /* Sector erase 4 byte address*/ #define SPI_NOR_CMD_BE_32K 0x52 /* Block erase 32KB */ #define SPI_NOR_CMD_BE 0xD8 /* Block erase */ +#define SPI_NOR_CMD_BE_4B 0xDC /* Block erase 4 byte address*/ #define SPI_NOR_CMD_CE 0xC7 /* Chip erase */ #define SPI_NOR_CMD_RDID 0x9F /* Read JEDEC ID */ #define SPI_NOR_CMD_ULBPR 0x98 /* Global Block Protection Unlock */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/fpga/fpga_ice40_common.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/fpga/fpga_ice40_common.h new file mode 100644 index 00000000..55faf0ee --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/fpga/fpga_ice40_common.h @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2022 Meta + * Copyright (c) 2024 SILA Embedded Solutions GmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_SUBSYS_FPGA_FPGA_ICE40_COMMON_H_ +#define ZEPHYR_SUBSYS_FPGA_FPGA_ICE40_COMMON_H_ + +#include +#include +#include +#include +#include +#include + +/* + * Values in Hz, intentionally to be comparable with the spi-max-frequency + * property from DT bindings in spi-device.yaml. + */ +#define FPGA_ICE40_SPI_HZ_MIN 1000000 +#define FPGA_ICE40_SPI_HZ_MAX 25000000 + +#define FPGA_ICE40_CRESET_DELAY_US_MIN 1 /* 200ns absolute minimum */ +#define FPGA_ICE40_CONFIG_DELAY_US_MIN 1200 +#define FPGA_ICE40_LEADING_CLOCKS_MIN 8 +#define FPGA_ICE40_TRAILING_CLOCKS_MIN 49 + +#define FPGA_ICE40_CONFIG_DEFINE(inst, derived_config_) \ + BUILD_ASSERT(DT_INST_PROP(inst, spi_max_frequency) >= FPGA_ICE40_SPI_HZ_MIN); \ + BUILD_ASSERT(DT_INST_PROP(inst, spi_max_frequency) <= FPGA_ICE40_SPI_HZ_MAX); \ + BUILD_ASSERT(DT_INST_PROP(inst, config_delay_us) >= FPGA_ICE40_CONFIG_DELAY_US_MIN); \ + BUILD_ASSERT(DT_INST_PROP(inst, config_delay_us) <= UINT16_MAX); \ + BUILD_ASSERT(DT_INST_PROP(inst, creset_delay_us) >= FPGA_ICE40_CRESET_DELAY_US_MIN); \ + BUILD_ASSERT(DT_INST_PROP(inst, creset_delay_us) <= UINT16_MAX); \ + BUILD_ASSERT(DT_INST_PROP(inst, leading_clocks) >= FPGA_ICE40_LEADING_CLOCKS_MIN); \ + BUILD_ASSERT(DT_INST_PROP(inst, leading_clocks) <= UINT8_MAX); \ + BUILD_ASSERT(DT_INST_PROP(inst, trailing_clocks) >= FPGA_ICE40_TRAILING_CLOCKS_MIN); \ + BUILD_ASSERT(DT_INST_PROP(inst, trailing_clocks) <= UINT8_MAX); \ + \ + static const struct fpga_ice40_config fpga_ice40_config_##inst = { \ + .bus = SPI_DT_SPEC_INST_GET(inst, \ + SPI_OP_MODE_MASTER | SPI_MODE_CPOL | SPI_MODE_CPHA | \ + SPI_WORD_SET(8) | SPI_TRANSFER_MSB, \ + 0), \ + .creset = GPIO_DT_SPEC_INST_GET(inst, creset_gpios), \ + .cdone = GPIO_DT_SPEC_INST_GET(inst, cdone_gpios), \ + .config_delay_us = DT_INST_PROP(inst, config_delay_us), \ + .creset_delay_us = DT_INST_PROP(inst, creset_delay_us), \ + .leading_clocks = DT_INST_PROP(inst, leading_clocks), \ + .trailing_clocks = DT_INST_PROP(inst, trailing_clocks), \ + .derived_config = derived_config_, \ + } + +struct fpga_ice40_data { + uint32_t crc; + /* simply use crc32 as info */ + char info[2 * sizeof(uint32_t) + 1]; + bool on; + bool loaded; + struct k_spinlock lock; +}; + +struct fpga_ice40_config { + struct spi_dt_spec bus; + struct gpio_dt_spec cdone; + struct gpio_dt_spec creset; + uint16_t creset_delay_us; + uint16_t config_delay_us; + uint8_t leading_clocks; + uint8_t trailing_clocks; + const void *derived_config; +}; + +void fpga_ice40_crc_to_str(uint32_t crc, char *s); +enum FPGA_status fpga_ice40_get_status(const struct device *dev); +int fpga_ice40_on(const struct device *dev); +int fpga_ice40_off(const struct device *dev); +int fpga_ice40_reset(const struct device *dev); +const char *fpga_ice40_get_info(const struct device *dev); +int fpga_ice40_init(const struct device *dev); + +#endif /* ZEPHYR_SUBSYS_FPGA_FPGA_ICE40_COMMON_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gnss/gnss_u_blox_protocol/gnss_u_blox_protocol_defines.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gnss/gnss_u_blox_protocol/gnss_u_blox_protocol_defines.h index 870f3f48..977081a4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gnss/gnss_u_blox_protocol/gnss_u_blox_protocol_defines.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gnss/gnss_u_blox_protocol/gnss_u_blox_protocol_defines.h @@ -32,12 +32,12 @@ enum ubx_dynamic_model { UBX_DYN_MODEL_PORTABLE = 0, UBX_DYN_MODEL_STATIONARY = 2, UBX_DYN_MODEL_PEDESTRIAN = 3, - UBX_DYN_MODEL_AUTOMOTIV = 4, + UBX_DYN_MODEL_AUTOMOTIVE = 4, UBX_DYN_MODEL_SEA = 5, - UBX_DYN_MODEL_AIRBONE1G = 6, - UBX_DYN_MODEL_AIRBONE2G = 7, - UBX_DYN_MODEL_AIRBONE4G = 8, - UBX_DYN_MODEL_WIRST = 9, + UBX_DYN_MODEL_AIRBORNE1G = 6, + UBX_DYN_MODEL_AIRBORNE2G = 7, + UBX_DYN_MODEL_AIRBORNE4G = 8, + UBX_DYN_MODEL_WRIST = 9, UBX_DYN_MODEL_BIKE = 10, }; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_grgpio.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_grgpio.h new file mode 100644 index 00000000..6a3958f7 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_grgpio.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2023 Frontgrade Gaisler AB + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_DRIVERS_GPIO_GPIO_GRGPIO_H_ +#define ZEPHYR_DRIVERS_GPIO_GPIO_GRGPIO_H_ + +struct grgpio_regs { + uint32_t data; /* 0x00 I/O port data register */ + uint32_t output; /* 0x04 I/O port output register */ + uint32_t dir; /* 0x08 I/O port direction register */ + uint32_t imask; /* 0x0C Interrupt mask register */ + uint32_t ipol; /* 0x10 Interrupt polarity register */ + uint32_t iedge; /* 0x14 Interrupt edge register */ + uint32_t bypass; /* 0x18 Bypass register */ + uint32_t cap; /* 0x1C Capability register */ + uint32_t irqmap[4]; /* 0x20 - 0x2C Interrupt map registers */ + uint32_t res_30; /* 0x30 Reserved */ + uint32_t res_34; /* 0x34 Reserved */ + uint32_t res_38; /* 0x38 Reserved */ + uint32_t res_3C; /* 0x3C Reserved */ + uint32_t iavail; /* 0x40 Interrupt available register */ + uint32_t iflag; /* 0x44 Interrupt flag register */ + uint32_t res_48; /* 0x48 Reserved */ + uint32_t pulse; /* 0x4C Pulse register */ + uint32_t res_50; /* 0x50 Reserved */ + uint32_t output_or; /* 0x54 I/O port output register, logical-OR */ + uint32_t dir_or; /* 0x58 I/O port dir. register, logical-OR */ + uint32_t imask_or; /* 0x5C Interrupt mask register, logical-OR */ + uint32_t res_60; /* 0x60 Reserved */ + uint32_t output_and; /* 0x64 I/O port output register, logical-AND */ + uint32_t dir_and; /* 0x68 I/O port dir. register, logical-AND */ + uint32_t imask_and; /* 0x6C Interrupt mask register, logical-AND */ + uint32_t res_70; /* 0x70 Reserved */ + uint32_t output_xor; /* 0x74 I/O port output register, logical-XOR */ + uint32_t dir_xor; /* 0x78 I/O port dir. register, logical-XOR */ + uint32_t imask_xor; /* 0x7C Interrupt mask register, logical-XOR */ +}; + +#define GRGPIO_CAP_PU_BIT 18 +#define GRGPIO_CAP_IER_BIT 17 +#define GRGPIO_CAP_IFL_BIT 16 +#define GRGPIO_CAP_IRQGEN_BIT 8 +#define GRGPIO_CAP_NLINES_BIT 0 + +#define GRGPIO_CAP_PU (0x1 << GRGPIO_CAP_PU_BIT) +#define GRGPIO_CAP_IER (0x1 << GRGPIO_CAP_IER_BIT) +#define GRGPIO_CAP_IFL (0x1 << GRGPIO_CAP_IFL_BIT) +#define GRGPIO_CAP_IRQGEN (0x1f << GRGPIO_CAP_IRQGEN_BIT) +#define GRGPIO_CAP_NLINES (0x1f << GRGPIO_CAP_NLINES_BIT) + +#endif /* ZEPHYR_DRIVERS_GPIO_GPIO_GRGPIO_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_max14906.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_max14906.h new file mode 100644 index 00000000..647088f5 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_max14906.h @@ -0,0 +1,321 @@ +/* + * Copyright (c) 2024 Analog Devices Inc. + * Copyright (c) 2024 Baylibre SAS + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_GPIO_GPIO_MAX14906_H_ +#define ZEPHYR_DRIVERS_GPIO_GPIO_MAX14906_H_ + +#define MAX14906_FAULT2_ENABLES 5 +#define MAX14906_CHANNELS 4 +#define MAX14916_CHANNELS 8 +#define MAX149x6_MAX_PKT_SIZE 3 + +#define MAX14906_SETOUT_REG 0x0 +#define MAX14906_SETLED_REG 0x1 +#define MAX14906_DOILEVEL_REG 0x2 +#define MAX14906_INT_REG 0x3 +#define MAX14906_OVR_LD_REG 0x4 +#define MAX14906_OPN_WIR_FLT_REG 0x5 +#define MAX14906_SHT_VDD_FLT_REG 0x6 +#define MAX14906_GLOB_ERR_REG 0x7 +#define MAX14906_OPN_WR_EN_REG 0x8 +#define MAX14906_SHT_VDD_EN_REG 0x9 +#define MAX14906_CONFIG1_REG 0xA +#define MAX14906_CONFIG2_REG 0xB +#define MAX14906_CONFIG_DI_REG 0xC +#define MAX14906_CONFIG_DO_REG 0xD +#define MAX14906_CONFIG_CURR_LIM 0xE +#define MAX14906_CONFIG_MASK 0xF + +#define MAX149x6_CHIP_ADDR_MASK GENMASK(7, 6) +#define MAX149x6_ADDR_MASK GENMASK(4, 1) +#define MAX149x6_RW_MASK BIT(0) + +/* DoiLevel register */ +#define MAX14906_DOI_LEVEL_MASK(x) BIT(x) + +/* SetOUT register */ +#define MAX14906_HIGHO_MASK(x) BIT(x) + +#define MAX14906_DO_MASK(x) (GENMASK(1, 0) << (2 * (x))) +#define MAX14906_CH_DIR_MASK(x) BIT((x) + 4) +#define MAX14906_CH(x) (x) +#define MAX14906_IEC_TYPE_MASK BIT(7) +#define MAX14906_CL_MASK(x) (GENMASK(1, 0) << (2 * (x))) + +/** + * @brief Hardwired device address + */ +enum max149x6_spi_addr { + MAX14906_ADDR_0, /* A0=0, A1=0 */ + MAX14906_ADDR_1, /* A0=1, A1=0 */ + MAX14906_ADDR_2, /* A0=0, A1=1 */ + MAX14906_ADDR_3, /* A0=1, A1=1 */ +}; + +enum max14906_iec_type { + MAX14906_TYPE_1_3, + MAX14906_TYPE_2, +}; + +/** + * @brief Channel configuration options. + */ +enum max14906_function { + MAX14906_OUT, + MAX14906_IN, + MAX14906_HIGH_Z +}; + +/** + * @brief Configuration options for the output driver (on each channel). + */ +enum max14906_do_mode { + MAX14906_HIGH_SIDE, + MAX14906_HIGH_SIDE_INRUSH, + MAX14906_PUSH_PULL_CLAMP, + MAX14906_PUSH_PULL +}; + +/** + * @brief Current limit options for output channels. + */ +enum max14906_cl { + MAX14906_CL_600, + MAX14906_CL_130, + MAX14906_CL_300, + MAX14906_CL_1200, +}; + +union max14906_doi_level { + uint8_t reg_raw; + struct { + uint8_t VDDOK_FAULT1: 1; /* BIT0 */ + uint8_t VDDOK_FAULT2: 1; + uint8_t VDDOK_FAULT3: 1; + uint8_t VDDOK_FAULT4: 1; + uint8_t SAFE_DAMAGE_F1: 1; + uint8_t SAFE_DAMAGE_F2: 1; + uint8_t SAFE_DAMAGE_F3: 1; + uint8_t SAFE_DAMAGE_F4: 1; /* BIT7 */ + } reg_bits; +}; + +union max14906_interrupt { + uint8_t reg_raw; + struct { + uint8_t OVER_LD_FAULT: 1; /* BIT0 */ + uint8_t CURR_LIM: 1; + uint8_t OW_OFF_FAULT: 1; + uint8_t ABOVE_VDD_FAULT: 1; + uint8_t SHT_VDD_FAULT: 1; + uint8_t DE_MAG_FAULT: 1; + uint8_t SUPPLY_ERR: 1; + uint8_t COM_ERR: 1; /* BIT7 */ + } reg_bits; +}; + +union max14906_ovr_ld_chf { + uint8_t reg_raw; + struct { + uint8_t OVL1: 1; /* BIT0 */ + uint8_t OVL2: 1; + uint8_t OVL3: 1; + uint8_t OVL4: 1; + uint8_t CL1: 1; + uint8_t CL2: 1; + uint8_t CL3: 1; + uint8_t CL4: 1; /* BIT7 */ + } reg_bits; +}; + +union max14906_opn_wir_chf { + uint8_t reg_raw; + struct { + uint8_t OW_OFF1: 1; /* BIT0 */ + uint8_t OW_OFF2: 1; + uint8_t OW_OFF3: 1; + uint8_t OW_OFF4: 1; + uint8_t ABOVE_VDD1: 1; + uint8_t ABOVE_VDD2: 1; + uint8_t ABOVE_VDD3: 1; + uint8_t ABOVE_VDD4: 1; /* BIT7 */ + } reg_bits; +}; + +union max14906_sht_vdd_chf { + uint8_t reg_raw; + struct { + uint8_t SHVDD1: 1; /* BIT0 */ + uint8_t SHVDD2: 1; + uint8_t SHVDD3: 1; + uint8_t SHVDD4: 1; + uint8_t VDDOV1: 1; + uint8_t VDDOV2: 1; + uint8_t VDDOV3: 1; + uint8_t VDDOV4: 1; /* BIT7 */ + } reg_bits; +}; + +union max14906_global_err { + uint8_t reg_raw; + struct { + uint8_t VINT_UV: 1; /* BIT0 */ + uint8_t V5_UVLO: 1; + uint8_t VDD_LOW: 1; + uint8_t VDD_WARN: 1; + uint8_t VDD_UVLO: 1; + uint8_t THRMSHUTD: 1; + uint8_t LOSSGND: 1; + uint8_t WDOG_ERR: 1; /* BIT7 */ + } reg_bits; +}; + +union max14906_opn_wr_en { + uint8_t reg_raw; + struct { + uint8_t OW_OFF_EN1: 1; /* BIT0 */ + uint8_t OW_OFF_EN2: 1; + uint8_t OW_OFF_EN3: 1; + uint8_t OW_OFF_EN4: 1; + uint8_t GDRV_EN1: 1; + uint8_t GDRV_EN2: 1; + uint8_t GDRV_EN3: 1; + uint8_t GDRV_EN4: 1; /* BIT7 */ + } reg_bits; +}; + +union max14906_sht_vdd_en { + uint8_t reg_raw; + struct { + uint8_t SH_VDD_EN1: 1; /* BIT0 */ + uint8_t SH_VDD_EN2: 1; + uint8_t SH_VDD_EN3: 1; + uint8_t SH_VDD_EN4: 1; + uint8_t VDD_OV_EN1: 1; + uint8_t VDD_OV_EN2: 1; + uint8_t VDD_OV_EN3: 1; + uint8_t VDD_OV_EN4: 1; /* BIT7 */ + } reg_bits; +}; + +union max14906_config_di { + uint8_t reg_raw; + struct { + uint8_t OVL_BLANK: 2; /* BIT0 */ + uint8_t OVL_STRETCH_EN: 1; + uint8_t ABOVE_VDD_PROT_EN: 1; + uint8_t VDD_FAULT_SEL: 1; + uint8_t VDD_FAULT_DIS: 1; + uint8_t RESERVED: 1; + uint8_t TYP_2_DI: 1; /* BIT7 */ + } reg_bits; +}; + +union max14906_config_do { + uint8_t reg_raw; + struct { + uint8_t DO_MODE1: 2; /* BIT0 */ + uint8_t DO_MODE2: 2; + uint8_t DO_MODE3: 2; + uint8_t DO_MODE4: 2; /* BIT7 */ + } reg_bits; +}; + +union max14906_config_curr_lim { + uint8_t reg_raw; + struct { + uint8_t CL1: 2; /* BIT0 */ + uint8_t CL2: 2; + uint8_t CL3: 2; + uint8_t CL4: 2; /* BIT7 */ + } reg_bits; +}; + +union max14906_mask { + uint8_t reg_raw; + struct { + uint8_t OVER_LD_M: 1; /* BIT0 */ + uint8_t CURR_LIM_M: 1; + uint8_t OW_OFF_M: 1; + uint8_t ABOVE_VDD_M: 1; + uint8_t SHT_VDD_M: 1; + uint8_t VDD_OK_M: 1; + uint8_t SUPPLY_ERR_M: 1; + uint8_t COM_ERR_M: 1; /* BIT7 */ + } reg_bits; +}; + +union max14906_config1 { + uint8_t reg_raw; + struct { + uint8_t FLED_SET: 1; /* BIT0 */ + uint8_t SLED_SET: 1; + uint8_t FLED_STRETCH: 2; + uint8_t FFILTER_EN: 1; + uint8_t FILTER_LONG: 1; + uint8_t FLATCH_EN: 1; + uint8_t LED_CURR_LIM: 1; /* BIT7 */ + } reg_bits; +}; + +union max14906_config2 { + uint8_t reg_raw; + struct { + uint8_t VDD_ON_THR: 1; /* BIT0 */ + uint8_t SYNCH_WD_EN: 1; + uint8_t SHT_VDD_THR: 2; + uint8_t OW_OFF_CS: 2; + uint8_t WD_TO: 2; /* BIT7 */ + } reg_bits; +}; + +/* Config1 register Enable/Disable SLED */ +#define MAX149x6_SLED_MASK BIT(1) +/* Config1 register Enable/Disable FLED */ +#define MAX149x6_FLED_MASK BIT(0) + +#define MAX149x6_ENABLE 1 +#define MAX149x6_DISABLE 0 + +struct max149x6_config { + struct spi_dt_spec spi; + struct gpio_dt_spec fault_gpio; + struct gpio_dt_spec ready_gpio; + struct gpio_dt_spec sync_gpio; + struct gpio_dt_spec en_gpio; + bool crc_en; + union max14906_config1 config1; + union max14906_config2 config2; + union max14906_config_curr_lim curr_lim; + union max14906_config_di config_do; + union max14906_config_do config_di; + enum max149x6_spi_addr spi_addr; + uint8_t pkt_size; +}; + +#define max14906_config max149x6_config + +struct max14906_data { + struct gpio_driver_data common; + struct { + union max14906_doi_level doi_level; + union max14906_ovr_ld_chf ovr_ld; + union max14906_opn_wir_chf opn_wir; + union max14906_sht_vdd_chf sht_vdd; + } chan; + struct { + union max14906_opn_wr_en opn_wr_en; + union max14906_sht_vdd_en sht_vdd_en; + } chan_en; + struct { + union max14906_interrupt interrupt; + union max14906_global_err glob_err; + union max14906_mask mask; + } glob; +}; + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_max14916.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_max14916.h new file mode 100644 index 00000000..bcc842b2 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_max14916.h @@ -0,0 +1,200 @@ +/* + * Copyright (c) 2024 Analog Devices Inc. + * Copyright (c) 2024 Baylibre SAS + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_GPIO_GPIO_MAX14916_H_ +#define ZEPHYR_DRIVERS_GPIO_GPIO_MAX14916_H_ + +#define MAX14906_ENABLE 1 +#define MAX14906_DISABLE 0 + +#define MAX149x6_MAX_PKT_SIZE 3 + +#define MAX14916_CHANNELS 8 + +#define MAX14916_SETOUT_REG 0x0 +#define MAX14916_SET_FLED_REG 0x1 +#define MAX14916_SET_SLED_REG 0x2 +#define MAX14916_INT_REG 0x3 +#define MAX14916_OVR_LD_REG 0x4 +#define MAX14916_CURR_LIM_REG 0x5 +#define MAX14916_OW_OFF_FLT_REG 0x6 +#define MAX14916_OW_ON_FLT_REG 0x7 +#define MAX14916_SHT_VDD_FLT_REG 0x8 +#define MAX14916_GLOB_ERR_REG 0x9 +#define MAX14916_OW_OFF_EN_REG 0xA +#define MAX14916_OW_ON_EN_REG 0xB +#define MAX14916_SHT_VDD_EN_REG 0xC +#define MAX14916_CONFIG1_REG 0xD +#define MAX14916_CONFIG2_REG 0xE +#define MAX14916_CONFIG_MASK 0xF + +#define MAX149x6_CHIP_ADDR_MASK GENMASK(7, 6) +#define MAX149x6_ADDR_MASK GENMASK(4, 1) +#define MAX149x6_RW_MASK BIT(0) + +/* DoiLevel register */ +#define MAX149x6_DOI_LEVEL_MASK(x) BIT(x) + +/* SetOUT register */ +#define MAX14906_HIGHO_MASK(x) BIT(x) + +#define MAX14906_DO_MASK(x) (GENMASK(1, 0) << (2 * (x))) +#define MAX14906_CH_DIR_MASK(x) BIT((x) + 4) +#define MAX14906_CH(x) (x) +#define MAX14906_IEC_TYPE_MASK BIT(7) +#define MAX14906_CL_MASK(x) (GENMASK(1, 0) << (2 * (x))) + +/* Config1 register */ +#define MAX14906_SLED_MASK BIT(1) +#define MAX14906_FLED_MASK BIT(0) + +#define MAX14906_CHAN_MASK_LSB(x) BIT(x) +#define MAX14906_CHAN_MASK_MSB(x) BIT((x) + 4) + +enum max149x6_spi_addr { + MAX14906_ADDR_0, /* A0=0, A1=0 */ + MAX14906_ADDR_1, /* A0=1, A1=0 */ + MAX14906_ADDR_2, /* A0=0, A1=1 */ + MAX14906_ADDR_3, /* A0=1, A1=1 */ +}; + +enum max14916_fled_time { + MAX14916_FLED_TIME_DISABLED, + MAX14916_FLED_TIME_1S, + MAX14916_FLED_TIME_2S, + MAX14916_FLED_TIME_3S +}; + +enum max14916_sled_state { + MAX14916_SLED_OFF, + MAX14916_SLED_ON +}; + +enum max14916_wd { + MAX14916_WD_DISABLED, + MAX14916_WD_200MS, + MAX14916_WD_600MS, + MAX14916_WD_1200MS +}; + +enum max14916_ow_off_cs { + MAX14916_OW_OFF_CS_20UA, + MAX14916_OW_OFF_CS_100UA, + MAX14916_OW_OFF_CS_300UA, + MAX14916_OW_OFF_CS_600UA +}; + +enum max14916_sht_vdd_thr { + MAX14916_SHT_VDD_THR_9V, + MAX14916_SHT_VDD_THR_10V, + MAX14916_SHT_VDD_THR_12V, + MAX14916_SHT_VDD_THR_14V +}; + +union max14916_interrupt { + uint8_t reg_raw; + struct { + uint8_t OVER_LD_FLT: 1; /* BIT0 */ + uint8_t CURR_LIM: 1; + uint8_t OW_OFF_FLT: 1; + uint8_t OW_ON_FLT: 1; + uint8_t SHT_VDD_FLT: 1; + uint8_t DE_MAG_FLT: 1; + uint8_t SUPPLY_ERR: 1; + uint8_t COM_ERR: 1; /* BIT7 */ + } reg_bits; +}; + +union max14916_config1 { + uint8_t reg_raw; + struct { + uint8_t FLED_SET: 1; /* BIT0 */ + uint8_t SLED_SET: 1; + uint8_t FLED_STRETCH: 2; + uint8_t FFILTER_EN: 1; + uint8_t FILTER_LONG: 1; + uint8_t FLATCH_EN: 1; + uint8_t LED_CURR_LIM: 1; /* BIT7 */ + } reg_bits; +}; + +union max14916_config2 { + uint8_t reg_raw; + struct { + uint8_t VDD_ON_THR: 1; /* BIT0 */ + uint8_t SYNCH_WD_EN: 1; + uint8_t SHT_VDD_THR: 2; + uint8_t OW_OFF_CS: 2; + uint8_t WD_TO: 2; /* BIT7 */ + } reg_bits; +}; + +union max14916_mask { + uint8_t reg_raw; + struct { + uint8_t OVER_LD_M: 1; /* BIT0 */ + uint8_t CURR_LIM_M: 1; + uint8_t OW_OFF_M: 1; + uint8_t OW_ON_M: 1; + uint8_t SHT_VDD_M: 1; + uint8_t VDD_OK_M: 1; + uint8_t SUPPLY_ERR_M: 1; + uint8_t COM_ERR_M: 1; /* BIT7 */ + } reg_bits; +}; + +union max14916_global_err { + uint8_t reg_raw; + struct { + uint8_t VINT_UV: 1; /* BIT0 */ + uint8_t VA_UVLO: 1; + uint8_t VDD_BAD: 1; + uint8_t VDD_WARN: 1; + uint8_t VDD_UVLO: 1; + uint8_t THRMSHUTD: 1; + uint8_t SYNC_ERR: 1; + uint8_t WDOG_ERR: 1; /* BIT7 */ + } reg_bits; +}; + +struct max149x6_config { + struct spi_dt_spec spi; + struct gpio_dt_spec fault_gpio; + struct gpio_dt_spec ready_gpio; + struct gpio_dt_spec sync_gpio; + struct gpio_dt_spec en_gpio; + bool crc_en; + union max14916_config1 config1; + union max14916_config2 config2; + enum max149x6_spi_addr spi_addr; + uint8_t pkt_size; +}; + +#define max14916_config max149x6_config + +struct max14916_data { + struct gpio_driver_data common; + struct { + uint8_t ovr_ld; + uint8_t curr_lim; + uint8_t ow_off; + uint8_t ow_on; + uint8_t sht_vdd; + } chan; + struct { + uint8_t ow_off_en; + uint8_t ow_on_en; + uint8_t sht_vdd_en; + } chan_en; + struct { + union max14916_interrupt interrupt; + union max14916_global_err glob_err; + union max14916_mask mask; + } glob; +}; + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_max149x6.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_max149x6.h new file mode 100644 index 00000000..3266a219 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_max149x6.h @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2024 Analog Devices Inc. + * Copyright (c) 2024 Baylibre SAS + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_GPIO_GPIO_MAX149X6_H_ +#define ZEPHYR_DRIVERS_GPIO_GPIO_MAX149X6_H_ + +#define MAX149x6_READ 0 +#define MAX149x6_WRITE 1 + +#define MAX149X6_GET_BIT(val, i) (0x1 & ((val) >> (i))) +#define PRINT_ERR_BIT(bit1, bit2) \ + if ((bit1) & (bit2)) \ + LOG_ERR("[%s] %d", #bit1, bit1) +#define PRINT_ERR(bit) \ + if (bit) \ + LOG_ERR("[DIAG] [%s] %d\n", #bit, bit) +#define PRINT_INF(bit) LOG_INFO("[%s] %d\n", #bit, bit) +#define LOG_DIAG(...) Z_LOG(LOG_LEVEL_ERR, __VA_ARGS__) + +/** + * @brief Compute the CRC5 value for an array of bytes when writing to MAX149X6 + * @param data - array of data to encode + * @param encode - action to be performed - true(encode), false(decode) + * @return the resulted CRC5 + */ +static uint8_t max149x6_crc(uint8_t *data, bool encode) +{ + uint8_t crc5_start = 0x1f; + uint8_t crc5_poly = 0x15; + uint8_t crc5_result = crc5_start; + uint8_t extra_byte = 0x00; + uint8_t data_bit; + uint8_t result_bit; + int i; + + /* + * This is a custom implementation of a CRC5 algorithm, detailed here: + * https://www.analog.com/en/app-notes/how-to-program-the-max14906-quadchannel- + * industrial-digital-output-digital-input.html + */ + + for (i = (encode) ? 0 : 2; i < 8; i++) { + data_bit = (data[0] >> (7 - i)) & 0x01; + result_bit = (crc5_result & 0x10) >> 4; + if (data_bit ^ result_bit) { + crc5_result = crc5_poly ^ ((crc5_result << 1) & 0x1f); + } else { + crc5_result = (crc5_result << 1) & 0x1f; + } + } + + for (i = 0; i < 8; i++) { + data_bit = (data[1] >> (7 - i)) & 0x01; + result_bit = (crc5_result & 0x10) >> 4; + if (data_bit ^ result_bit) { + crc5_result = crc5_poly ^ ((crc5_result << 1) & 0x1f); + } else { + crc5_result = (crc5_result << 1) & 0x1f; + } + } + + for (i = 0; i < 3; i++) { + data_bit = (extra_byte >> (7 - i)) & 0x01; + result_bit = (crc5_result & 0x10) >> 4; + if (data_bit ^ result_bit) { + crc5_result = crc5_poly ^ ((crc5_result << 1) & 0x1f); + } else { + crc5_result = (crc5_result << 1) & 0x1f; + } + } + + return crc5_result; +} + +/* + * @brief Register read/write function for MAX149x6 + * + * @param dev - MAX149x6 device config. + * @param addr - Register value to which data is written. + * @param val - Value which is to be written to requested register. + * @return 0 in case of success, negative error code otherwise. + */ +static int max149x6_reg_transceive(const struct device *dev, uint8_t addr, uint8_t val, + uint8_t *rx_diag_buff, uint8_t rw) +{ + uint8_t crc; + int ret; + + uint8_t local_rx_buff[MAX149x6_MAX_PKT_SIZE] = {0}; + uint8_t local_tx_buff[MAX149x6_MAX_PKT_SIZE] = {0}; + + const struct max149x6_config *config = dev->config; + + struct spi_buf tx_buf = { + .buf = &local_tx_buff, + .len = config->pkt_size, + }; + const struct spi_buf_set tx = {.buffers = &tx_buf, .count = 1}; + + struct spi_buf rx_buf = { + .buf = &local_rx_buff, + .len = config->pkt_size, + }; + const struct spi_buf_set rx = {.buffers = &rx_buf, .count = 1}; + + if (config->crc_en & 0) { + rx_buf.len++; + } + + local_tx_buff[0] = FIELD_PREP(MAX149x6_ADDR_MASK, addr) | + FIELD_PREP(MAX149x6_CHIP_ADDR_MASK, config->spi_addr) | + FIELD_PREP(MAX149x6_RW_MASK, rw & 0x1); + local_tx_buff[1] = val; + + /* If CRC enabled calculate it */ + if (config->crc_en) { + local_tx_buff[2] = max149x6_crc(&local_tx_buff[0], true); + } + + /* write cmd & read resp at once */ + ret = spi_transceive_dt(&config->spi, &tx, &rx); + + if (ret) { + LOG_ERR("Err spi_transcieve_dt [%d]\n", ret); + return ret; + } + + /* if CRC enabled check readed */ + if (config->crc_en) { + crc = max149x6_crc(&local_rx_buff[0], false); + if (crc != (local_rx_buff[2] & 0x1F)) { + LOG_ERR("READ CRC ERR (%d)-(%d)\n", crc, (local_rx_buff[2] & 0x1F)); + return -EINVAL; + } + } + + if (rx_diag_buff != NULL) { + rx_diag_buff[0] = local_rx_buff[0]; + } + + /* In case of write we are getting 2 diagnostic bytes - byte0 & byte1 + * and pass them to diag buffer to be parsed in next stage + */ + if ((MAX149x6_WRITE == rw) && (rx_diag_buff != NULL)) { + rx_diag_buff[1] = local_rx_buff[1]; + } else { + ret = local_rx_buff[1]; + } + + return ret; +} + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_mcp23xxx.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_mcp23xxx.h index b741cc95..4be6378d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_mcp23xxx.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_mcp23xxx.h @@ -61,6 +61,7 @@ struct mcp23xxx_config { struct gpio_dt_spec gpio_reset; uint8_t ngpios; + bool is_open_drain; mcp23xxx_read_port_regs read_fn; mcp23xxx_write_port_regs write_fn; mcp23xxx_bus_is_ready bus_fn; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_renesas_rz.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_renesas_rz.h new file mode 100644 index 00000000..6980450f --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_renesas_rz.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_GPIO_RENESAS_RZ_H_ +#define ZEPHYR_DRIVERS_GPIO_RENESAS_RZ_H_ + +#include +#include "r_ioport.h" + +#define GPIO_RZ_IOPORT_P_REG_BASE_GET (&R_GPIO->P_20) +#define GPIO_RZ_IOPORT_PM_REG_BASE_GET (&R_GPIO->PM_20) + +#define GPIO_RZ_REG_OFFSET(port, pin) (port + (pin / 4)) + +#define GPIO_RZ_P_VALUE_GET(value, pin) ((value >> pin) & 1U) +#define GPIO_RZ_PM_VALUE_GET(value, pin) ((value >> (pin * 2)) & 3U) + +#define GPIO_RZ_MAX_PORT_NUM 19 +#define GPIO_RZ_MAX_TINT_NUM 32 + +#define GPIO_RZ_TINT_IRQ_OFFSET 429 +#define GPIO_RZ_TINT_IRQ_GET(tint_num) (tint_num + GPIO_RZ_TINT_IRQ_OFFSET) + +#define GPIO_RZ_TINT_EDGE_RISING 0x0 +#define GPIO_RZ_TINT_EDGE_FALLING 0x1 +#define GPIO_RZ_TINT_LEVEL_HIGH 0x2 +#define GPIO_RZ_TINT_LEVEL_LOW 0x3 + +#define GPIO_RZ_TSSR_VAL(port, pin) (0x80 | (gpio_rz_int[port] + pin)) +#define GPIO_RZ_TSSR_OFFSET(irq) ((irq % 4) * 8) +#define GPIO_RZ_TITSR_OFFSET(irq) ((irq % 16) * 2) + +#define GPIO_RZ_PIN_CONFIGURE_GET_FILTER(flag) (((flags >> RZG3S_GPIO_FILTER_SHIFT) & 0x1F) << 19U) +#define GPIO_RZ_PIN_CONFIGURE_GET_DRIVE_ABILITY(flag) \ + (((flag >> RZG3S_GPIO_IOLH_SHIFT) & 0x3) << 10U) + +#define GPIO_RZ_PIN_CONFIGURE_INT_ENABLE IOPORT_CFG_TINT_ENABLE +#define GPIO_RZ_PIN_CONFIGURE_INT_DISABLE (~(IOPORT_CFG_TINT_ENABLE)) +#define GPIO_RZ_PIN_CONFIGURE_INPUT_OUTPUT_RESET (~(0x3 << 2)) + +static const uint8_t gpio_rz_int[GPIO_RZ_MAX_PORT_NUM] = {0, 4, 9, 13, 17, 23, 28, 33, 38, 43, + 47, 52, 56, 58, 63, 66, 70, 72, 76}; +#endif /* ZEPHYR_DRIVERS_GPIO_RENESAS_RZ_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_rt1718s.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_rt1718s.h index 3a1c9897..faba3cdb 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_rt1718s.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_rt1718s.h @@ -155,8 +155,9 @@ static inline int rt1718s_reg_burst_write(const struct device *dev, uint8_t star static inline int rt1718s_reg_update(const struct device *dev, uint8_t reg_addr, uint8_t reg_val, uint8_t new_val) { - if (reg_val == new_val) + if (reg_val == new_val) { return 0; + } return rt1718s_reg_write_byte(dev, reg_addr, new_val); } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_stm32.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_stm32.h index 9aa83a54..65b6bcc9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_stm32.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/gpio/gpio_stm32.h @@ -259,6 +259,8 @@ struct gpio_stm32_data { const struct device *dev; /* user ISR cb */ sys_slist_t cb; + /* keep track of pins that are connected and need GPIO clock to be enabled */ + uint32_t pin_has_clock_enabled; }; /** @@ -271,6 +273,6 @@ struct gpio_stm32_data { * * @return 0 on success, negative errno code on failure */ -int gpio_stm32_configure(const struct device *dev, int pin, int conf, int func); +int gpio_stm32_configure(const struct device *dev, gpio_pin_t pin, uint32_t conf, uint32_t func); #endif /* ZEPHYR_DRIVERS_GPIO_GPIO_STM32_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_dw.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_dw.h index c25246bb..004cbb0a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_dw.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_dw.h @@ -26,73 +26,64 @@ BUILD_ASSERT(IS_ENABLED(CONFIG_PCIE), "DW I2C in DT needs CONFIG_PCIE"); extern "C" { #endif -#define I2C_DW_MAGIC_KEY 0x44570140 - +#define I2C_DW_MAGIC_KEY 0x44570140 typedef void (*i2c_isr_cb_t)(const struct device *port); - -#define IC_ACTIVITY (1 << 0) -#define IC_ENABLE_BIT (1 << 0) - +#define IC_ACTIVITY (1 << 0) +#define IC_ENABLE_BIT (1 << 0) /* dev->state values from IC_DATA_CMD Data transfer mode settings (bit 8) */ -#define I2C_DW_STATE_READY (0) -#define I2C_DW_CMD_SEND (1 << 0) -#define I2C_DW_CMD_RECV (1 << 1) -#define I2C_DW_CMD_ERROR (1 << 2) -#define I2C_DW_BUSY (1 << 3) - +#define I2C_DW_STATE_READY (0) +#define I2C_DW_CMD_SEND (1 << 0) +#define I2C_DW_CMD_RECV (1 << 1) +#define I2C_DW_CMD_ERROR (1 << 2) +#define I2C_DW_BUSY (1 << 3) -#define DW_ENABLE_TX_INT_I2C_MASTER (DW_INTR_STAT_TX_OVER | \ - DW_INTR_STAT_TX_EMPTY | \ - DW_INTR_STAT_TX_ABRT | \ - DW_INTR_STAT_STOP_DET) -#define DW_ENABLE_RX_INT_I2C_MASTER (DW_INTR_STAT_RX_UNDER | \ - DW_INTR_STAT_RX_OVER | \ - DW_INTR_STAT_RX_FULL | \ - DW_INTR_STAT_STOP_DET) +#define DW_ENABLE_TX_INT_I2C_MASTER \ + (DW_INTR_STAT_TX_OVER | DW_INTR_STAT_TX_EMPTY | DW_INTR_STAT_TX_ABRT | \ + DW_INTR_STAT_STOP_DET) +#define DW_ENABLE_RX_INT_I2C_MASTER \ + (DW_INTR_STAT_RX_UNDER | DW_INTR_STAT_RX_OVER | DW_INTR_STAT_RX_FULL | \ + DW_INTR_STAT_STOP_DET) -#define DW_ENABLE_TX_INT_I2C_SLAVE (DW_INTR_STAT_RD_REQ | \ - DW_INTR_STAT_TX_ABRT | \ - DW_INTR_STAT_STOP_DET) -#define DW_ENABLE_RX_INT_I2C_SLAVE (DW_INTR_STAT_RX_FULL | \ - DW_INTR_STAT_STOP_DET) - -#define DW_DISABLE_ALL_I2C_INT 0x00000000 +#define DW_ENABLE_TX_INT_I2C_SLAVE \ + (DW_INTR_STAT_RD_REQ | DW_INTR_STAT_TX_ABRT | DW_INTR_STAT_STOP_DET) +#define DW_ENABLE_RX_INT_I2C_SLAVE (DW_INTR_STAT_RX_FULL | DW_INTR_STAT_STOP_DET) +#define DW_DISABLE_ALL_I2C_INT 0x00000000 /* IC_CON Low count and high count default values */ -/* TODO verify values for high and fast speed */ -#define I2C_STD_HCNT (CONFIG_I2C_DW_CLOCK_SPEED * 4) -#define I2C_STD_LCNT (CONFIG_I2C_DW_CLOCK_SPEED * 5) -#define I2C_FS_HCNT ((CONFIG_I2C_DW_CLOCK_SPEED * 6) / 8) -#define I2C_FS_LCNT ((CONFIG_I2C_DW_CLOCK_SPEED * 7) / 8) -#define I2C_HS_HCNT ((CONFIG_I2C_DW_CLOCK_SPEED * 6) / 8) -#define I2C_HS_LCNT ((CONFIG_I2C_DW_CLOCK_SPEED * 7) / 8) +/* TODO verify values for high speed */ +#define I2C_STD_HCNT (CONFIG_I2C_DW_CLOCK_SPEED * 4) +#define I2C_STD_LCNT (CONFIG_I2C_DW_CLOCK_SPEED * 5) +#define I2C_FS_HCNT ((CONFIG_I2C_DW_CLOCK_SPEED * 6) / 8) +#define I2C_FS_LCNT ((CONFIG_I2C_DW_CLOCK_SPEED * 7) / 8) +#define I2C_FSP_HCNT ((CONFIG_I2C_DW_CLOCK_SPEED * 2) / 8) +#define I2C_FSP_LCNT ((CONFIG_I2C_DW_CLOCK_SPEED * 2) / 8) +#define I2C_HS_HCNT ((CONFIG_I2C_DW_CLOCK_SPEED * 6) / 8) +#define I2C_HS_LCNT ((CONFIG_I2C_DW_CLOCK_SPEED * 7) / 8) /* * DesignWare speed values don't directly translate from the Zephyr speed * selections in include/i2c.h so here we do a little translation */ -#define I2C_DW_SPEED_STANDARD 0x1 -#define I2C_DW_SPEED_FAST 0x2 -#define I2C_DW_SPEED_FAST_PLUS 0x2 -#define I2C_DW_SPEED_HIGH 0x3 - +#define I2C_DW_SPEED_STANDARD 0x1 +#define I2C_DW_SPEED_FAST 0x2 +#define I2C_DW_SPEED_FAST_PLUS 0x2 +#define I2C_DW_SPEED_HIGH 0x3 /* * These values have been randomly selected. It would be good to test different * watermark levels for performance capabilities */ -#define I2C_DW_TX_WATERMARK 2 -#define I2C_DW_RX_WATERMARK 7 - +#define I2C_DW_TX_WATERMARK 2 +#define I2C_DW_RX_WATERMARK 7 struct i2c_dw_rom_config { DEVICE_MMIO_ROM; - i2c_isr_cb_t config_func; - uint32_t bitrate; + i2c_isr_cb_t config_func; + uint32_t bitrate; #if defined(CONFIG_PINCTRL) const struct pinctrl_dev_config *pcfg; @@ -112,21 +103,21 @@ struct i2c_dw_rom_config { struct i2c_dw_dev_config { DEVICE_MMIO_RAM; - struct k_sem device_sync_sem; - struct k_mutex bus_mutex; + struct k_sem device_sync_sem; + struct k_mutex bus_mutex; uint32_t app_config; - uint8_t *xfr_buf; - uint32_t xfr_len; - uint32_t rx_pending; + uint8_t *xfr_buf; + uint32_t xfr_len; + uint32_t rx_pending; - uint16_t hcnt; - uint16_t lcnt; + uint16_t hcnt; + uint16_t lcnt; - volatile uint8_t state; /* last direction of transfer */ - uint8_t request_bytes; - uint8_t xfr_flags; - bool support_hs_mode; + volatile uint8_t state; /* last direction of transfer */ + uint8_t request_bytes; + uint8_t xfr_flags; + bool support_hs_mode; #ifdef CONFIG_I2C_DW_LPSS_DMA uintptr_t phy_addr; uintptr_t base_addr; @@ -137,39 +128,39 @@ struct i2c_dw_dev_config { struct i2c_target_config *slave_cfg; }; -#define Z_REG_READ(__sz) sys_read##__sz +#define Z_REG_READ(__sz) sys_read##__sz #define Z_REG_WRITE(__sz) sys_write##__sz -#define Z_REG_SET_BIT sys_set_bit -#define Z_REG_CLEAR_BIT sys_clear_bit -#define Z_REG_TEST_BIT sys_test_bit - -#define DEFINE_MM_REG_READ(__reg, __off, __sz) \ - static inline uint32_t read_##__reg(uint32_t addr) \ - { \ - return Z_REG_READ(__sz)(addr + __off); \ +#define Z_REG_SET_BIT sys_set_bit +#define Z_REG_CLEAR_BIT sys_clear_bit +#define Z_REG_TEST_BIT sys_test_bit + +#define DEFINE_MM_REG_READ(__reg, __off, __sz) \ + static inline uint32_t read_##__reg(uint32_t addr) \ + { \ + return Z_REG_READ(__sz)(addr + __off); \ } -#define DEFINE_MM_REG_WRITE(__reg, __off, __sz) \ - static inline void write_##__reg(uint32_t data, uint32_t addr) \ - { \ - Z_REG_WRITE(__sz)(data, addr + __off); \ +#define DEFINE_MM_REG_WRITE(__reg, __off, __sz) \ + static inline void write_##__reg(uint32_t data, uint32_t addr) \ + { \ + Z_REG_WRITE(__sz)(data, addr + __off); \ } -#define DEFINE_SET_BIT_OP(__reg_bit, __reg_off, __bit) \ - static inline void set_bit_##__reg_bit(uint32_t addr) \ - { \ - Z_REG_SET_BIT(addr + __reg_off, __bit); \ +#define DEFINE_SET_BIT_OP(__reg_bit, __reg_off, __bit) \ + static inline void set_bit_##__reg_bit(uint32_t addr) \ + { \ + Z_REG_SET_BIT(addr + __reg_off, __bit); \ } -#define DEFINE_CLEAR_BIT_OP(__reg_bit, __reg_off, __bit) \ - static inline void clear_bit_##__reg_bit(uint32_t addr) \ - { \ - Z_REG_CLEAR_BIT(addr + __reg_off, __bit); \ +#define DEFINE_CLEAR_BIT_OP(__reg_bit, __reg_off, __bit) \ + static inline void clear_bit_##__reg_bit(uint32_t addr) \ + { \ + Z_REG_CLEAR_BIT(addr + __reg_off, __bit); \ } -#define DEFINE_TEST_BIT_OP(__reg_bit, __reg_off, __bit) \ - static inline int test_bit_##__reg_bit(uint32_t addr) \ - { \ - return Z_REG_TEST_BIT(addr + __reg_off, __bit); \ +#define DEFINE_TEST_BIT_OP(__reg_bit, __reg_off, __bit) \ + static inline int test_bit_##__reg_bit(uint32_t addr) \ + { \ + return Z_REG_TEST_BIT(addr + __reg_off, __bit); \ } #ifdef __cplusplus diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_dw_registers.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_dw_registers.h index 6b2a11df..117fcb19 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_dw_registers.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_dw_registers.h @@ -14,154 +14,154 @@ extern "C" { /* IC_CON bits */ union ic_con_register { - uint32_t raw; + uint32_t raw; struct { - uint32_t master_mode : 1 __packed; - uint32_t speed : 2 __packed; - uint32_t addr_slave_10bit : 1 __packed; - uint32_t addr_master_10bit : 1 __packed; - uint32_t restart_en : 1 __packed; - uint32_t slave_disable : 1 __packed; - uint32_t stop_det : 1 __packed; - uint32_t tx_empty_ctl : 1 __packed; - uint32_t rx_fifo_full : 1 __packed; + uint32_t master_mode: 1 __packed; + uint32_t speed: 2 __packed; + uint32_t addr_slave_10bit: 1 __packed; + uint32_t addr_master_10bit: 1 __packed; + uint32_t restart_en: 1 __packed; + uint32_t slave_disable: 1 __packed; + uint32_t stop_det: 1 __packed; + uint32_t tx_empty_ctl: 1 __packed; + uint32_t rx_fifo_full: 1 __packed; } bits; }; /* IC_DATA_CMD bits */ -#define IC_DATA_CMD_DAT_MASK 0xFF -#define IC_DATA_CMD_CMD BIT(8) -#define IC_DATA_CMD_STOP BIT(9) -#define IC_DATA_CMD_RESTART BIT(10) +#define IC_DATA_CMD_DAT_MASK 0xFF +#define IC_DATA_CMD_CMD BIT(8) +#define IC_DATA_CMD_STOP BIT(9) +#define IC_DATA_CMD_RESTART BIT(10) /* DesignWare Interrupt bits positions */ -#define DW_INTR_STAT_RX_UNDER BIT(0) -#define DW_INTR_STAT_RX_OVER BIT(1) -#define DW_INTR_STAT_RX_FULL BIT(2) -#define DW_INTR_STAT_TX_OVER BIT(3) -#define DW_INTR_STAT_TX_EMPTY BIT(4) -#define DW_INTR_STAT_RD_REQ BIT(5) -#define DW_INTR_STAT_TX_ABRT BIT(6) -#define DW_INTR_STAT_RX_DONE BIT(7) -#define DW_INTR_STAT_ACTIVITY BIT(8) -#define DW_INTR_STAT_STOP_DET BIT(9) -#define DW_INTR_STAT_START_DET BIT(10) -#define DW_INTR_STAT_GEN_CALL BIT(11) -#define DW_INTR_STAT_RESTART_DET BIT(12) -#define DW_INTR_STAT_MST_ON_HOLD BIT(13) - -#define DW_INTR_MASK_RX_UNDER BIT(0) -#define DW_INTR_MASK_RX_OVER BIT(1) -#define DW_INTR_MASK_RX_FULL BIT(2) -#define DW_INTR_MASK_TX_OVER BIT(3) -#define DW_INTR_MASK_TX_EMPTY BIT(4) -#define DW_INTR_MASK_RD_REQ BIT(5) -#define DW_INTR_MASK_TX_ABRT BIT(6) -#define DW_INTR_MASK_RX_DONE BIT(7) -#define DW_INTR_MASK_ACTIVITY BIT(8) -#define DW_INTR_MASK_STOP_DET BIT(9) -#define DW_INTR_MASK_START_DET BIT(10) -#define DW_INTR_MASK_GEN_CALL BIT(11) -#define DW_INTR_MASK_RESTART_DET BIT(12) -#define DW_INTR_MASK_MST_ON_HOLD BIT(13) -#define DW_INTR_MASK_RESET 0x000008ff +#define DW_INTR_STAT_RX_UNDER BIT(0) +#define DW_INTR_STAT_RX_OVER BIT(1) +#define DW_INTR_STAT_RX_FULL BIT(2) +#define DW_INTR_STAT_TX_OVER BIT(3) +#define DW_INTR_STAT_TX_EMPTY BIT(4) +#define DW_INTR_STAT_RD_REQ BIT(5) +#define DW_INTR_STAT_TX_ABRT BIT(6) +#define DW_INTR_STAT_RX_DONE BIT(7) +#define DW_INTR_STAT_ACTIVITY BIT(8) +#define DW_INTR_STAT_STOP_DET BIT(9) +#define DW_INTR_STAT_START_DET BIT(10) +#define DW_INTR_STAT_GEN_CALL BIT(11) +#define DW_INTR_STAT_RESTART_DET BIT(12) +#define DW_INTR_STAT_MST_ON_HOLD BIT(13) + +#define DW_INTR_MASK_RX_UNDER BIT(0) +#define DW_INTR_MASK_RX_OVER BIT(1) +#define DW_INTR_MASK_RX_FULL BIT(2) +#define DW_INTR_MASK_TX_OVER BIT(3) +#define DW_INTR_MASK_TX_EMPTY BIT(4) +#define DW_INTR_MASK_RD_REQ BIT(5) +#define DW_INTR_MASK_TX_ABRT BIT(6) +#define DW_INTR_MASK_RX_DONE BIT(7) +#define DW_INTR_MASK_ACTIVITY BIT(8) +#define DW_INTR_MASK_STOP_DET BIT(9) +#define DW_INTR_MASK_START_DET BIT(10) +#define DW_INTR_MASK_GEN_CALL BIT(11) +#define DW_INTR_MASK_RESTART_DET BIT(12) +#define DW_INTR_MASK_MST_ON_HOLD BIT(13) +#define DW_INTR_MASK_RESET 0x000008ff union ic_interrupt_register { - uint32_t raw; + uint32_t raw; struct { - uint32_t rx_under : 1 __packed; - uint32_t rx_over : 1 __packed; - uint32_t rx_full : 1 __packed; - uint32_t tx_over : 1 __packed; - uint32_t tx_empty : 1 __packed; - uint32_t rd_req : 1 __packed; - uint32_t tx_abrt : 1 __packed; - uint32_t rx_done : 1 __packed; - uint32_t activity : 1 __packed; - uint32_t stop_det : 1 __packed; - uint32_t start_det : 1 __packed; - uint32_t gen_call : 1 __packed; - uint32_t restart_det : 1 __packed; - uint32_t mst_on_hold : 1 __packed; - uint32_t reserved : 2 __packed; + uint32_t rx_under: 1 __packed; + uint32_t rx_over: 1 __packed; + uint32_t rx_full: 1 __packed; + uint32_t tx_over: 1 __packed; + uint32_t tx_empty: 1 __packed; + uint32_t rd_req: 1 __packed; + uint32_t tx_abrt: 1 __packed; + uint32_t rx_done: 1 __packed; + uint32_t activity: 1 __packed; + uint32_t stop_det: 1 __packed; + uint32_t start_det: 1 __packed; + uint32_t gen_call: 1 __packed; + uint32_t restart_det: 1 __packed; + uint32_t mst_on_hold: 1 __packed; + uint32_t reserved: 2 __packed; } bits; }; /* IC_TAR */ union ic_tar_register { - uint32_t raw; + uint32_t raw; struct { - uint32_t ic_tar : 10 __packed; - uint32_t gc_or_start : 1 __packed; - uint32_t special : 1 __packed; - uint32_t ic_10bitaddr_master : 1 __packed; - uint32_t reserved : 3 __packed; + uint32_t ic_tar: 10 __packed; + uint32_t gc_or_start: 1 __packed; + uint32_t special: 1 __packed; + uint32_t ic_10bitaddr_master: 1 __packed; + uint32_t reserved: 3 __packed; } bits; }; /* IC_COMP_PARAM_1 */ union ic_comp_param_1_register { - uint32_t raw; + uint32_t raw; struct { - uint32_t apb_data_width : 2 __packed; - uint32_t max_speed_mode : 2 __packed; - uint32_t hc_count_values : 1 __packed; - uint32_t intr_io : 1 __packed; - uint32_t has_dma : 1 __packed; - uint32_t add_encoded_params : 1 __packed; - uint32_t rx_buffer_depth : 8 __packed; - uint32_t tx_buffer_depth : 8 __packed; - uint32_t reserved : 7 __packed; + uint32_t apb_data_width: 2 __packed; + uint32_t max_speed_mode: 2 __packed; + uint32_t hc_count_values: 1 __packed; + uint32_t intr_io: 1 __packed; + uint32_t has_dma: 1 __packed; + uint32_t add_encoded_params: 1 __packed; + uint32_t rx_buffer_depth: 8 __packed; + uint32_t tx_buffer_depth: 8 __packed; + uint32_t reserved: 7 __packed; } bits; }; -#define DW_IC_REG_CON (0x00) -#define DW_IC_REG_TAR (0x04) -#define DW_IC_REG_SAR (0x08) -#define DW_IC_REG_DATA_CMD (0x10) -#define DW_IC_REG_SS_SCL_HCNT (0x14) -#define DW_IC_REG_SS_SCL_LCNT (0x18) -#define DW_IC_REG_FS_SCL_HCNT (0x1C) -#define DW_IC_REG_FS_SCL_LCNT (0x20) -#define DW_IC_REG_HS_SCL_HCNT (0x24) -#define DW_IC_REG_HS_SCL_LCNT (0x28) -#define DW_IC_REG_INTR_STAT (0x2C) -#define DW_IC_REG_INTR_MASK (0x30) -#define DW_IC_REG_RX_TL (0x38) -#define DW_IC_REG_TX_TL (0x3C) -#define DW_IC_REG_CLR_INTR (0x40) -#define DW_IC_REG_CLR_RX_UNDER (0x44) -#define DW_IC_REG_CLR_RX_OVER (0x48) -#define DW_IC_REG_CLR_TX_OVER (0x4c) -#define DW_IC_REG_CLR_RD_REQ (0x50) -#define DW_IC_REG_CLR_TX_ABRT (0x54) -#define DW_IC_REG_CLR_RX_DONE (0x58) -#define DW_IC_REG_CLR_ACTIVITY (0x5c) -#define DW_IC_REG_CLR_STOP_DET (0x60) -#define DW_IC_REG_CLR_START_DET (0x64) -#define DW_IC_REG_CLR_GEN_CALL (0x68) -#define DW_IC_REG_ENABLE (0x6C) -#define DW_IC_REG_STATUS (0x70) -#define DW_IC_REG_TXFLR (0x74) -#define DW_IC_REG_RXFLR (0x78) -#define DW_IC_REG_DMA_CR (0x88) -#define DW_IC_REG_TDLR (0x8C) -#define DW_IC_REG_RDLR (0x90) -#define DW_IC_REG_FS_SPKLEN (0xA0) -#define DW_IC_REG_HS_SPKLEN (0xA4) -#define DW_IC_REG_COMP_PARAM_1 (0xF4) -#define DW_IC_REG_COMP_TYPE (0xFC) - -#define IDMA_REG_INTR_STS 0xAE8 -#define IDMA_TX_RX_CHAN_MASK 0x3 +#define DW_IC_REG_CON (0x00) +#define DW_IC_REG_TAR (0x04) +#define DW_IC_REG_SAR (0x08) +#define DW_IC_REG_DATA_CMD (0x10) +#define DW_IC_REG_SS_SCL_HCNT (0x14) +#define DW_IC_REG_SS_SCL_LCNT (0x18) +#define DW_IC_REG_FS_SCL_HCNT (0x1C) +#define DW_IC_REG_FS_SCL_LCNT (0x20) +#define DW_IC_REG_HS_SCL_HCNT (0x24) +#define DW_IC_REG_HS_SCL_LCNT (0x28) +#define DW_IC_REG_INTR_STAT (0x2C) +#define DW_IC_REG_INTR_MASK (0x30) +#define DW_IC_REG_RX_TL (0x38) +#define DW_IC_REG_TX_TL (0x3C) +#define DW_IC_REG_CLR_INTR (0x40) +#define DW_IC_REG_CLR_RX_UNDER (0x44) +#define DW_IC_REG_CLR_RX_OVER (0x48) +#define DW_IC_REG_CLR_TX_OVER (0x4c) +#define DW_IC_REG_CLR_RD_REQ (0x50) +#define DW_IC_REG_CLR_TX_ABRT (0x54) +#define DW_IC_REG_CLR_RX_DONE (0x58) +#define DW_IC_REG_CLR_ACTIVITY (0x5c) +#define DW_IC_REG_CLR_STOP_DET (0x60) +#define DW_IC_REG_CLR_START_DET (0x64) +#define DW_IC_REG_CLR_GEN_CALL (0x68) +#define DW_IC_REG_ENABLE (0x6C) +#define DW_IC_REG_STATUS (0x70) +#define DW_IC_REG_TXFLR (0x74) +#define DW_IC_REG_RXFLR (0x78) +#define DW_IC_REG_DMA_CR (0x88) +#define DW_IC_REG_TDLR (0x8C) +#define DW_IC_REG_RDLR (0x90) +#define DW_IC_REG_FS_SPKLEN (0xA0) +#define DW_IC_REG_HS_SPKLEN (0xA4) +#define DW_IC_REG_COMP_PARAM_1 (0xF4) +#define DW_IC_REG_COMP_TYPE (0xFC) + +#define IDMA_REG_INTR_STS 0xAE8 +#define IDMA_TX_RX_CHAN_MASK 0x3 /* CON Bit */ -#define DW_IC_CON_MASTER_MODE_BIT (0) +#define DW_IC_CON_MASTER_MODE_BIT (0) /* DMA control bits */ -#define DW_IC_DMA_RX_ENABLE BIT(0) -#define DW_IC_DMA_TX_ENABLE BIT(1) -#define DW_IC_DMA_ENABLE (BIT(0) | BIT(1)) +#define DW_IC_DMA_RX_ENABLE BIT(0) +#define DW_IC_DMA_TX_ENABLE BIT(1) +#define DW_IC_DMA_ENABLE (BIT(0) | BIT(1)) DEFINE_TEST_BIT_OP(con_master_mode, DW_IC_REG_CON, DW_IC_CON_MASTER_MODE_BIT) DEFINE_MM_REG_WRITE(con, DW_IC_REG_CON, 32) @@ -179,14 +179,12 @@ DEFINE_MM_REG_WRITE(fs_scl_lcnt, DW_IC_REG_FS_SCL_LCNT, 32) DEFINE_MM_REG_WRITE(hs_scl_hcnt, DW_IC_REG_HS_SCL_HCNT, 32) DEFINE_MM_REG_WRITE(hs_scl_lcnt, DW_IC_REG_HS_SCL_LCNT, 32) - - DEFINE_MM_REG_READ(intr_stat, DW_IC_REG_INTR_STAT, 32) -#define DW_IC_INTR_STAT_TX_ABRT_BIT (6) +#define DW_IC_INTR_STAT_TX_ABRT_BIT (6) DEFINE_TEST_BIT_OP(intr_stat_tx_abrt, DW_IC_REG_INTR_STAT, DW_IC_INTR_STAT_TX_ABRT_BIT) DEFINE_MM_REG_WRITE(intr_mask, DW_IC_REG_INTR_MASK, 32) -#define DW_IC_INTR_MASK_TX_EMPTY_BIT (4) +#define DW_IC_INTR_MASK_TX_EMPTY_BIT (4) DEFINE_CLEAR_BIT_OP(intr_mask_tx_empty, DW_IC_REG_INTR_MASK, DW_IC_INTR_MASK_TX_EMPTY_BIT) DEFINE_SET_BIT_OP(intr_mask_tx_empty, DW_IC_REG_INTR_MASK, DW_IC_INTR_MASK_TX_EMPTY_BIT) @@ -205,14 +203,13 @@ DEFINE_MM_REG_READ(clr_rx_done, DW_IC_REG_CLR_RX_DONE, 32) DEFINE_MM_REG_READ(clr_rd_req, DW_IC_REG_CLR_RD_REQ, 32) DEFINE_MM_REG_READ(clr_activity, DW_IC_REG_CLR_ACTIVITY, 32) -#define DW_IC_ENABLE_EN_BIT (0) +#define DW_IC_ENABLE_EN_BIT (0) DEFINE_CLEAR_BIT_OP(enable_en, DW_IC_REG_ENABLE, DW_IC_ENABLE_EN_BIT) DEFINE_SET_BIT_OP(enable_en, DW_IC_REG_ENABLE, DW_IC_ENABLE_EN_BIT) - -#define DW_IC_STATUS_ACTIVITY_BIT (0) -#define DW_IC_STATUS_TFNT_BIT (1) -#define DW_IC_STATUS_RFNE_BIT (3) +#define DW_IC_STATUS_ACTIVITY_BIT (0) +#define DW_IC_STATUS_TFNT_BIT (1) +#define DW_IC_STATUS_RFNE_BIT (3) DEFINE_TEST_BIT_OP(status_activity, DW_IC_REG_STATUS, DW_IC_STATUS_ACTIVITY_BIT) DEFINE_TEST_BIT_OP(status_tfnt, DW_IC_REG_STATUS, DW_IC_STATUS_TFNT_BIT) DEFINE_TEST_BIT_OP(status_rfne, DW_IC_REG_STATUS, DW_IC_STATUS_RFNE_BIT) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_nrfx_twi_common.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_nrfx_twi_common.h index a8925d3f..a3e9847b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_nrfx_twi_common.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_nrfx_twi_common.h @@ -22,7 +22,8 @@ extern "C" { : I2C_NRFX_TWI_INVALID_FREQUENCY) #define I2C(idx) DT_NODELABEL(i2c##idx) #define I2C_FREQUENCY(idx) \ - I2C_NRFX_TWI_FREQUENCY(DT_PROP(I2C(idx), clock_frequency)) + I2C_NRFX_TWI_FREQUENCY(DT_PROP_OR(I2C(idx), clock_frequency, \ + I2C_BITRATE_STANDARD)) struct i2c_nrfx_twi_common_data { uint32_t dev_config; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_nrfx_twim_common.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_nrfx_twim_common.h new file mode 100644 index 00000000..ba7fa72f --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/i2c/i2c_nrfx_twim_common.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2024, Croxel Inc + * Copyright (c) 2024, Embeint Inc + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_I2C_I2C_NRFX_TWIM_COMMON_H_ +#define ZEPHYR_DRIVERS_I2C_I2C_NRFX_TWIM_COMMON_H_ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define I2C_NRFX_TWIM_INVALID_FREQUENCY ((nrf_twim_frequency_t)-1) +#define I2C_NRFX_TWIM_FREQUENCY(bitrate) \ + (bitrate == I2C_BITRATE_STANDARD ? NRF_TWIM_FREQ_100K \ + : bitrate == 250000 ? NRF_TWIM_FREQ_250K \ + : bitrate == I2C_BITRATE_FAST \ + ? NRF_TWIM_FREQ_400K \ + : IF_ENABLED(NRF_TWIM_HAS_1000_KHZ_FREQ, \ + (bitrate == I2C_BITRATE_FAST_PLUS ? NRF_TWIM_FREQ_1000K :)) \ + I2C_NRFX_TWIM_INVALID_FREQUENCY) + +#define I2C(idx) DT_NODELABEL(i2c##idx) +#define I2C_HAS_PROP(idx, prop) DT_NODE_HAS_PROP(I2C(idx), prop) +#define I2C_FREQUENCY(idx) I2C_NRFX_TWIM_FREQUENCY(DT_PROP_OR(I2C(idx), clock_frequency, \ + I2C_BITRATE_STANDARD)) + +struct i2c_nrfx_twim_common_config { + nrfx_twim_t twim; + nrfx_twim_config_t twim_config; + nrfx_twim_evt_handler_t event_handler; + uint16_t msg_buf_size; + void (*irq_connect)(void); + const struct pinctrl_dev_config *pcfg; + uint8_t *msg_buf; + uint16_t max_transfer_size; +}; + +int i2c_nrfx_twim_common_init(const struct device *dev); +int i2c_nrfx_twim_configure(const struct device *dev, uint32_t i2c_config); +int i2c_nrfx_twim_recover_bus(const struct device *dev); +int i2c_nrfx_twim_msg_transfer(const struct device *dev, uint8_t flags, uint8_t *buf, + size_t buf_len, uint16_t i2c_addr); + +#ifdef CONFIG_PM_DEVICE +int twim_nrfx_pm_action(const struct device *dev, enum pm_device_action action); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_DRIVERS_I2C_I2C_NRFX_TWIM_COMMON_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ieee802154/ieee802154_cc13xx_cc26xx.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ieee802154/ieee802154_cc13xx_cc26xx.h index 185e445a..4d4ee458 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ieee802154/ieee802154_cc13xx_cc26xx.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/ieee802154/ieee802154_cc13xx_cc26xx.h @@ -80,7 +80,15 @@ struct ieee802154_cc13xx_cc26xx_data { volatile rfc_CMD_IEEE_CSMA_t cmd_ieee_csma; volatile rfc_CMD_IEEE_TX_t cmd_ieee_tx; volatile rfc_CMD_IEEE_RX_ACK_t cmd_ieee_rx_ack; +#if defined(CONFIG_SOC_CC1352R) || defined(CONFIG_SOC_CC2652R) || \ + defined(CONFIG_SOC_CC1352R7) || defined(CONFIG_SOC_CC2652R7) volatile rfc_CMD_RADIO_SETUP_t cmd_radio_setup; +#elif defined(CONFIG_SOC_CC1352P) || defined(CONFIG_SOC_CC2652P) || \ + defined(CONFIG_SOC_CC1352P7) || defined(CONFIG_SOC_CC2652P7) + volatile rfc_CMD_RADIO_SETUP_PA_t cmd_radio_setup; +#else + BUILD_ASSERT(false, "unknown model"); +#endif /* CONFIG_SOC_CCxx52x */ volatile int16_t saved_cmdhandle; }; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/modem/modem_context.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/modem/modem_context.h index de76b0a4..8c75e24a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/modem/modem_context.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/modem/modem_context.h @@ -15,7 +15,7 @@ #define ZEPHYR_INCLUDE_DRIVERS_MODEM_MODEM_CONTEXT_H_ #include -#include +#include #include #include #include diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/mspi/mspi_ambiq.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/mspi/mspi_ambiq.h index 7cfe07b6..b289f190 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/mspi/mspi_ambiq.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/mspi/mspi_ambiq.h @@ -47,6 +47,9 @@ enum mspi_ambiq_timing_param { MSPI_AMBIQ_SET_RXDQSDLYEXT = BIT(7), }; +#define MSPI_PORT(n) ((DT_REG_ADDR(DT_INST_BUS(n)) - MSPI0_BASE) / \ + (DT_REG_SIZE(DT_INST_BUS(n)) * 4)) + #define TIMING_CFG_GET_RX_DUMMY(cfg) \ { \ mspi_timing_cfg *timing = (mspi_timing_cfg *)cfg; \ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/net/nsos.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/net/nsos.h index f1e2f12e..9b901d91 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/net/nsos.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/net/nsos.h @@ -14,17 +14,22 @@ #define NSOS_MID_PF_UNSPEC 0 /**< Unspecified protocol family. */ #define NSOS_MID_PF_INET 1 /**< IP protocol family version 4. */ #define NSOS_MID_PF_INET6 2 /**< IP protocol family version 6. */ +#define NSOS_MID_PF_UNIX 6 /**< Unix protocol. */ +#define NSOS_MID_PF_PACKET 3 /**< Packet family. */ /* Address families. */ #define NSOS_MID_AF_UNSPEC NSOS_MID_PF_UNSPEC /**< Unspecified address family. */ #define NSOS_MID_AF_INET NSOS_MID_PF_INET /**< IP protocol family version 4. */ #define NSOS_MID_AF_INET6 NSOS_MID_PF_INET6 /**< IP protocol family version 6. */ +#define NSOS_MID_AF_UNIX NSOS_MID_PF_UNIX /**< Unix protocol. */ +#define NSOS_MID_AF_PACKET NSOS_MID_PF_PACKET /**< Packet family. */ /** Protocol numbers from IANA/BSD */ enum nsos_mid_net_ip_protocol { NSOS_MID_IPPROTO_IP = 0, /**< IP protocol (pseudo-val for setsockopt() */ NSOS_MID_IPPROTO_ICMP = 1, /**< ICMP protocol */ NSOS_MID_IPPROTO_IGMP = 2, /**< IGMP protocol */ + NSOS_MID_IPPROTO_ETH_P_ALL = 3, /**< Every packet. from linux if_ether.h */ NSOS_MID_IPPROTO_IPIP = 4, /**< IPIP tunnels */ NSOS_MID_IPPROTO_TCP = 6, /**< TCP protocol */ NSOS_MID_IPPROTO_UDP = 17, /**< UDP protocol */ @@ -63,10 +68,28 @@ struct nsos_mid_sockaddr_in6 { uint32_t sin6_scope_id; /* Set of interfaces for a scope */ }; +#define UNIX_PATH_MAX 108 +struct nsos_mid_sockaddr_un { + sa_family_t sun_family; /* AF_UNIX */ + char sun_path[UNIX_PATH_MAX]; /* pathname */ +}; + +struct nsos_mid_sockaddr_ll { + sa_family_t sll_family; /**< Always AF_PACKET */ + uint16_t sll_protocol; /**< Physical-layer protocol */ + int sll_ifindex; /**< Interface number */ + uint16_t sll_hatype; /**< ARP hardware type */ + uint8_t sll_pkttype; /**< Packet type */ + uint8_t sll_halen; /**< Length of address */ + uint8_t sll_addr[8]; /**< Physical-layer address, big endian */ +}; + struct nsos_mid_sockaddr_storage { union { struct nsos_mid_sockaddr_in sockaddr_in; struct nsos_mid_sockaddr_in6 sockaddr_in6; + struct nsos_mid_sockaddr_un sockaddr_un; + struct nsos_mid_sockaddr_ll sockaddr_ll; }; }; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/net/slip.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/net/slip.h index 94c5c853..554cf395 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/net/slip.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/net/slip.h @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl345/adxl345.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl345/adxl345.h index 35412ac7..4fc55d30 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl345/adxl345.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl345/adxl345.h @@ -7,9 +7,19 @@ #ifndef ZEPHYR_DRIVERS_SENSOR_ADX345_ADX345_H_ #define ZEPHYR_DRIVERS_SENSOR_ADX345_ADX345_H_ +#include #include #include #include +#include +#include + +#ifdef CONFIG_ADXL345_STREAM +#include +#endif /* CONFIG_ADXL345_STREAM */ + +#define DT_DRV_COMPAT adi_adxl345 + #if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) #include #endif @@ -23,14 +33,21 @@ #define ADXL345_READ_CMD 0x80 #define ADXL345_MULTIBYTE_FLAG 0x40 +#define ADXL345_REG_READ(x) ((x & 0xFF) | ADXL345_READ_CMD) + +#define SAMPLE_SIZE 6 +#define SAMPLE_MASK 0x3F +#define SAMPLE_NUM 0x1F + /* Registers */ -#define ADXL345_DEVICE_ID_REG 0x00 -#define ADXL345_RATE_REG 0x2c -#define ADXL345_POWER_CTL_REG 0x2d -#define ADXL345_DATA_FORMAT_REG 0x31 -#define ADXL345_X_AXIS_DATA_0_REG 0x32 -#define ADXL345_FIFO_CTL_REG 0x38 -#define ADXL345_FIFO_STATUS_REG 0x39 +#define ADXL345_DEVICE_ID_REG 0x00 +#define ADXL345_RATE_REG 0x2c +#define ADXL345_POWER_CTL_REG 0x2d +#define ADXL345_DATA_FORMAT_REG 0x31 +#define ADXL345_DATA_FORMAT_FULL_RES 0x08 +#define ADXL345_X_AXIS_DATA_0_REG 0x32 +#define ADXL345_FIFO_CTL_REG 0x38 +#define ADXL345_FIFO_STATUS_REG 0x39 #define ADXL345_PART_ID 0xe5 @@ -42,19 +59,148 @@ #define ADXL345_ENABLE_MEASURE_BIT (1 << 3) #define ADXL345_FIFO_STREAM_MODE (1 << 7) #define ADXL345_FIFO_COUNT_MASK 0x3f +#define ADXL345_COMPLEMENT_MASK(x) GENMASK(15, (x)) #define ADXL345_COMPLEMENT 0xfc00 #define ADXL345_MAX_FIFO_SIZE 32 +#define ADXL345_INT_ENABLE 0x2Eu +#define ADXL345_INT_MAP 0x2Fu +#define ADXL345_INT_SOURCE 0x30u + +/* ADXL345_STATUS_1 */ +#define ADXL345_STATUS_DOUBLE_TAP(x) (((x) >> 5) & 0x1) +#define ADXL345_STATUS_SINGLE_TAP(x) (((x) >> 6) & 0x1) +#define ADXL345_STATUS_DATA_RDY(x) (((x) >> 7) & 0x1) + +/* ADXL345_INT_MAP */ +#define ADXL345_INT_MAP_OVERRUN_MSK BIT(0) +#define ADXL345_INT_MAP_OVERRUN_MODE(x) (((x) & 0x1) << 0) +#define ADXL345_INT_MAP_WATERMARK_MSK BIT(1) +#define ADXL345_INT_MAP_WATERMARK_MODE(x) (((x) & 0x1) << 1) +#define ADXL345_INT_MAP_FREE_FALL_MSK BIT(2) +#define ADXL345_INT_MAP_FREE_FALL_MODE(x) (((x) & 0x1) << 2) +#define ADXL345_INT_MAP_INACT_MSK BIT(3) +#define ADXL345_INT_MAP_INACT_MODE(x) (((x) & 0x1) << 3) +#define ADXL345_INT_MAP_ACT_MSK BIT(4) +#define ADXL345_INT_MAP_ACT_MODE(x) (((x) & 0x1) << 4) +#define ADXL345_INT_MAP_DOUBLE_TAP_MSK BIT(5) +#define ADXL345_INT_MAP_DOUBLE_TAP_MODE(x) (((x) & 0x1) << 5) +#define ADXL345_INT_MAP_SINGLE_TAP_MSK BIT(6) +#define ADXL345_INT_MAP_SINGLE_TAP_MODE(x) (((x) & 0x1) << 6) +#define ADXL345_INT_MAP_DATA_RDY_MSK BIT(7) +#define ADXL345_INT_MAP_DATA_RDY_MODE(x) (((x) & 0x1) << 7) + +/* POWER_CTL */ +#define ADXL345_POWER_CTL_WAKEUP_4HZ BIT(0) +#define ADXL345_POWER_CTL_WAKEUP_4HZ_MODE(x) (((x) & 0x1) << 0) +#define ADXL345_POWER_CTL_WAKEUP_2HZ BIT(1) +#define ADXL345_POWER_CTL_WAKEUP_2HZ_MODE(x) (((x) & 0x1) << 1) +#define ADXL345_POWER_CTL_SLEEP BIT(2) +#define ADXL345_POWER_CTL_SLEEP_MODE(x) (((x) & 0x1) << 2) +#define ADXL345_POWER_CTL_MEASURE_MSK GENMASK(3, 3) +#define ADXL345_POWER_CTL_MEASURE_MODE(x) (((x) & 0x1) << 3) +#define ADXL345_POWER_CTL_STANDBY_MODE(x) (((x) & 0x0) << 3) + +/* ADXL345_FIFO_CTL */ +#define ADXL345_FIFO_CTL_MODE_MSK GENMASK(7, 6) +#define ADXL345_FIFO_CTL_MODE_MODE(x) (((x) & 0x3) << 6) +#define ADXL345_FIFO_CTL_TRIGGER_MSK BIT(5) +#define ADXL345_FIFO_CTL_TRIGGER_MODE(x) (((x) & 0x1) << 5) +#define ADXL345_FIFO_CTL_SAMPLES_MSK BIT(0) +#define ADXL345_FIFO_CTL_SAMPLES_MODE(x) ((x) & 0x1F) + +#define ADXL345_ODR_MSK GENMASK(3, 0) +#define ADXL345_ODR_MODE(x) ((x) & 0xF) + +enum adxl345_odr { + ADXL345_ODR_12HZ = 0x7, + ADXL345_ODR_25HZ, + ADXL345_ODR_50HZ, + ADXL345_ODR_100HZ, + ADXL345_ODR_200HZ, + ADXL345_ODR_400HZ +}; + +enum adxl345_fifo_trigger { + ADXL345_INT1, + ADXL345_INT2 +}; + +enum adxl345_fifo_mode { + ADXL345_FIFO_BYPASSED, + ADXL345_FIFO_OLD_SAVED, + ADXL345_FIFO_STREAMED, + ADXL345_FIFO_TRIGGERED +}; + +struct adxl345_fifo_config { + enum adxl345_fifo_mode fifo_mode; + enum adxl345_fifo_trigger fifo_trigger; + uint16_t fifo_samples; +}; + +enum adxl345_op_mode { + ADXL345_STANDBY, + ADXL345_MEASURE +}; + struct adxl345_dev_data { unsigned int sample_number; - int16_t bufx[ADXL345_MAX_FIFO_SIZE]; int16_t bufy[ADXL345_MAX_FIFO_SIZE]; int16_t bufz[ADXL345_MAX_FIFO_SIZE]; + struct adxl345_fifo_config fifo_config; + uint8_t is_full_res; + uint8_t selected_range; +#ifdef CONFIG_ADXL345_TRIGGER + struct gpio_callback gpio_cb; + + sensor_trigger_handler_t th_handler; + const struct sensor_trigger *th_trigger; + sensor_trigger_handler_t drdy_handler; + const struct sensor_trigger *drdy_trigger; + const struct device *dev; + +#if defined(CONFIG_ADXL345_TRIGGER_OWN_THREAD) + K_KERNEL_STACK_MEMBER(thread_stack, CONFIG_ADXL345_THREAD_STACK_SIZE); + struct k_sem gpio_sem; + struct k_thread thread; +#elif defined(CONFIG_ADXL345_TRIGGER_GLOBAL_THREAD) + struct k_work work; +#endif +#endif /* CONFIG_ADXL345_TRIGGER */ +#ifdef CONFIG_ADXL345_STREAM + struct rtio_iodev_sqe *sqe; + struct rtio *rtio_ctx; + struct rtio_iodev *iodev; + uint8_t status1; + uint8_t fifo_ent[1]; + uint64_t timestamp; + struct rtio *r_cb; + uint8_t fifo_watermark_irq; + uint8_t fifo_samples; + uint16_t fifo_total_bytes; +#endif /* CONFIG_ADXL345_STREAM */ }; +struct adxl345_fifo_data { + uint8_t is_fifo: 1; + uint8_t is_full_res: 1; + uint8_t selected_range: 2; + uint8_t sample_set_size: 4; + uint8_t int_status; + uint16_t accel_odr: 4; + uint16_t fifo_byte_count: 12; + uint64_t timestamp; +} __attribute__((__packed__)); + struct adxl345_sample { +#ifdef CONFIG_ADXL345_STREAM + uint8_t is_fifo: 1; + uint8_t res: 7; +#endif /* CONFIG_ADXL345_STREAM */ + uint8_t selected_range; int16_t x; int16_t y; int16_t z; @@ -77,6 +223,58 @@ struct adxl345_dev_config { const union adxl345_bus bus; adxl345_bus_is_ready_fn bus_is_ready; adxl345_reg_access_fn reg_access; + enum adxl345_odr odr; + bool op_mode; + struct adxl345_fifo_config fifo_config; +#ifdef CONFIG_ADXL345_TRIGGER + struct gpio_dt_spec interrupt; +#endif }; +void adxl345_submit_stream(const struct device *dev, struct rtio_iodev_sqe *iodev_sqe); +void adxl345_stream_irq_handler(const struct device *dev); + +#ifdef CONFIG_ADXL345_TRIGGER +int adxl345_get_status(const struct device *dev, + uint8_t *status, uint16_t *fifo_entries); + +int adxl345_trigger_set(const struct device *dev, + const struct sensor_trigger *trig, + sensor_trigger_handler_t handler); + +int adxl345_init_interrupt(const struct device *dev); + +#endif /* CONFIG_ADXL345_TRIGGER */ + +int adxl345_reg_write_mask(const struct device *dev, + uint8_t reg_addr, + uint8_t mask, + uint8_t data); + +int adxl345_reg_access(const struct device *dev, uint8_t cmd, uint8_t addr, + uint8_t *data, size_t len); + +int adxl345_reg_write(const struct device *dev, uint8_t addr, uint8_t *data, + uint8_t len); + +int adxl345_reg_read(const struct device *dev, uint8_t addr, uint8_t *data, + uint8_t len); + +int adxl345_reg_write_byte(const struct device *dev, uint8_t addr, uint8_t val); + +int adxl345_reg_read_byte(const struct device *dev, uint8_t addr, uint8_t *buf); + +int adxl345_set_op_mode(const struct device *dev, enum adxl345_op_mode op_mode); +#ifdef CONFIG_SENSOR_ASYNC_API +int adxl345_read_sample(const struct device *dev, struct adxl345_sample *sample); +void adxl345_submit(const struct device *dev, struct rtio_iodev_sqe *iodev_sqe); +int adxl345_get_decoder(const struct device *dev, const struct sensor_decoder_api **decoder); +void adxl345_accel_convert(struct sensor_value *val, int16_t sample); +#endif /* CONFIG_SENSOR_ASYNC_API */ + +#ifdef CONFIG_ADXL345_STREAM +int adxl345_configure_fifo(const struct device *dev, enum adxl345_fifo_mode mode, + enum adxl345_fifo_trigger trigger, uint16_t fifo_samples); +size_t adxl345_get_packet_size(const struct adxl345_dev_config *cfg); +#endif /* CONFIG_ADXL345_STREAM */ #endif /* ZEPHYR_DRIVERS_SENSOR_ADX345_ADX345_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl362/adxl362.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl362/adxl362.h index ac41a2ff..1959833e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl362/adxl362.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl362/adxl362.h @@ -11,13 +11,14 @@ #include #include #include +#include #define ADXL362_SLAVE_ID 1 /* ADXL362 communication commands */ #define ADXL362_WRITE_REG 0x0A #define ADXL362_READ_REG 0x0B -#define ADXL362_WRITE_FIFO 0x0D +#define ADXL362_READ_FIFO 0x0D /* Registers */ #define ADXL362_REG_DEVID_AD 0x00 @@ -160,6 +161,8 @@ #define ADXL362_STATUS_CHECK_DATA_READY(x) (((x) >> 0) & 0x1) #define ADXL362_STATUS_CHECK_INACT(x) (((x) >> 5) & 0x1) #define ADXL362_STATUS_CHECK_ACTIVITY(x) (((x) >> 4) & 0x1) +#define ADXL362_STATUS_CHECK_FIFO_OVR(x) (((x) >> 3) & 0x1) +#define ADXL362_STATUS_CHECK_FIFO_WTR(x) (((x) >> 2) & 0x1) /* ADXL362 scale factors from specifications */ #define ADXL362_ACCEL_2G_LSB_PER_G 1000 @@ -171,6 +174,12 @@ #define ADXL362_TEMP_BIAS_LSB 350 #define ADXL362_TEMP_BIAS_TEST_CONDITION 25 +/* ADXL362 check fifo sample header */ +#define ADXL362_FIFO_HDR_CHECK_ACCEL_X(x) ((((x) & 0xC000) >> 14) == 0x00) +#define ADXL362_FIFO_HDR_CHECK_ACCEL_Y(x) ((((x) & 0xC000) >> 14) == 0x01) +#define ADXL362_FIFO_HDR_CHECK_ACCEL_Z(x) ((((x) & 0xC000) >> 14) == 0x02) +#define ADXL362_FIFO_HDR_CHECK_TEMP(x) ((((x) & 0xC000) >> 14) == 0x03) + struct adxl362_config { struct spi_dt_spec bus; #if defined(CONFIG_ADXL362_TRIGGER) @@ -192,6 +201,11 @@ struct adxl362_data { } __packed; int16_t temp; uint8_t selected_range; + uint8_t accel_odr; + + uint8_t fifo_mode; + uint8_t en_temp_read; + uint16_t water_mark_lvl; #if defined(CONFIG_ADXL362_TRIGGER) const struct device *dev; @@ -213,8 +227,45 @@ struct adxl362_data { struct k_work work; #endif #endif /* CONFIG_ADXL362_TRIGGER */ +#ifdef CONFIG_ADXL362_STREAM + uint8_t status; + uint8_t fifo_ent[2]; + struct rtio_iodev_sqe *sqe; + struct rtio *rtio_ctx; + struct rtio_iodev *iodev; + uint64_t timestamp; + struct rtio *r_cb; + uint8_t fifo_full_irq: 1; + uint8_t fifo_wmark_irq: 1; + uint8_t res: 6; +#endif /* CONFIG_ADXL362_STREAM */ }; +struct adxl362_sample_data { +#ifdef CONFIG_ADXL362_STREAM + uint8_t is_fifo: 1; + uint8_t res: 7; +#endif /*CONFIG_ADXL362_STREAM*/ + uint8_t selected_range; + int16_t acc_x; + int16_t acc_y; + int16_t acc_z; + int16_t temp; +}; + +struct adxl362_fifo_data { + uint8_t is_fifo: 1; + uint8_t has_tmp: 1; + uint8_t selected_range: 3; + uint8_t accel_odr: 3; + uint8_t int_status; + uint16_t fifo_byte_count; + uint64_t timestamp; +} __attribute__((__packed__)); + +BUILD_ASSERT(sizeof(struct adxl362_fifo_data) % 4 == 0, + "adxl362_fifo_data struct should be word aligned"); + #if defined(CONFIG_ADXL362_ACCEL_RANGE_RUNTIME) ||\ defined(CONFIG_ADXL362_ACCEL_RANGE_2G) # define ADXL362_DEFAULT_RANGE_ACC ADXL362_RANGE_2G @@ -239,6 +290,10 @@ struct adxl362_data { # define ADXL362_DEFAULT_ODR_ACC ADXL362_ODR_400_HZ #endif +void adxl362_submit_stream(const struct device *dev, struct rtio_iodev_sqe *iodev_sqe); +void adxl362_stream_irq_handler(const struct device *dev); +int adxl362_fifo_read(const struct device *dev, void *buff, size_t length); + #ifdef CONFIG_ADXL362_TRIGGER int adxl362_reg_write_mask(const struct device *dev, uint8_t reg_addr, uint8_t mask, uint8_t data); @@ -258,4 +313,21 @@ int adxl362_set_interrupt_mode(const struct device *dev, uint8_t mode); int adxl362_clear_data_ready(const struct device *dev); #endif /* CONFIG_ADT7420_TRIGGER */ +#ifdef CONFIG_SENSOR_ASYNC_API +int adxl362_rtio_fetch(const struct device *dev, + struct adxl362_sample_data *sample_data); +void adxl362_submit(const struct device *dev, struct rtio_iodev_sqe *iodev_sqe); +int adxl362_get_decoder(const struct device *dev, const struct sensor_decoder_api **decoder); +void adxl362_accel_convert(struct sensor_value *val, int accel, + int range); +void adxl362_temp_convert(struct sensor_value *val, int temp); +#endif /* CONFIG_SENSOR_ASYNC_API */ + +#ifdef CONFIG_ADXL362_STREAM +int adxl362_fifo_setup(const struct device *dev, uint8_t mode, + uint16_t water_mark_lvl, uint8_t en_temp_read); +#endif /* CONFIG_ADXL362_STREAM */ + +int adxl362_reg_access(const struct device *dev, uint8_t cmd, + uint8_t reg_addr, void *data, size_t length); #endif /* ZEPHYR_DRIVERS_SENSOR_ADXL362_ADXL362_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl367/adxl367.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl367/adxl367.h index 8cef4742..a8d28a6a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl367/adxl367.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl367/adxl367.h @@ -14,13 +14,34 @@ #include #include +#define DT_DRV_COMPAT adi_adxl367 #if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) -#include +#define ADXL367_BUS_SPI #endif /* DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) */ +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) +#define ADXL367_BUS_I2C +#endif /* DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) */ +#undef DT_DRV_COMPAT +#define DT_DRV_COMPAT adi_adxl366 +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) +#define ADXL367_BUS_SPI +#endif /* DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) */ #if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) -#include +#define ADXL367_BUS_I2C #endif /* DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) */ +#undef DT_DRV_COMPAT + +#ifdef ADXL367_BUS_SPI +#include +#endif /* ADXL367_BUS_SPI */ + +#ifdef ADXL367_BUS_I2C +#include +#endif /* ADXL367_BUS_I2C */ + +#define ADXL367_CHIP_ID 0 +#define ADXL366_CHIP_ID 1 /* * ADXL367 registers definition @@ -102,6 +123,7 @@ #define ADXL367_TO_REG(x) ((x) >> 1) #define ADXL367_SPI_WRITE_REG 0x0Au #define ADXL367_SPI_READ_REG 0x0Bu +#define ADXL367_SPI_READ_FIFO 0x0Du #define ADXL367_ABSOLUTE 0x00 #define ADXL367_REFERENCED 0x01 @@ -201,10 +223,19 @@ /* Max change = 270mg. Sensitivity = 4LSB / mg */ #define ADXL367_SELF_TEST_MAX (270 * 100 / 25) +/* ADXL367 get fifo sample header */ +#define ADXL367_FIFO_HDR_GET_ACCEL_AXIS(x) (((x) & 0xC000) >> 14) +#define ADXL367_FIFO_HDR_CHECK_TEMP(x) ((((x) & 0xC000) >> 14) == 0x3) + +/* ADXL362 scale factors from specifications */ +#define ADXL367_ACCEL_2G_LSB_PER_G 4000 +#define ADXL367_ACCEL_4G_LSB_PER_G 2000 +#define ADXL367_ACCEL_8G_LSB_PER_G 1000 + enum adxl367_axis { - ADXL367_X_AXIS, - ADXL367_Y_AXIS, - ADXL367_Z_AXIS + ADXL367_X_AXIS = 0x0, + ADXL367_Y_AXIS = 0x1, + ADXL367_Z_AXIS = 0x2 }; enum adxl367_op_mode { @@ -279,6 +310,16 @@ struct adxl367_xyz_accel_data { int16_t x; int16_t y; int16_t z; + enum adxl367_range range; +}; + +struct adxl367_sample_data { +#ifdef CONFIG_ADXL367_STREAM + uint8_t is_fifo: 1; + uint8_t res: 7; +#endif /*CONFIG_ADXL367_STREAM*/ + struct adxl367_xyz_accel_data xyz; + int16_t raw_temp; }; struct adxl367_transfer_function { @@ -316,15 +357,29 @@ struct adxl367_data { struct k_work work; #endif #endif /* CONFIG_ADXL367_TRIGGER */ +#ifdef CONFIG_ADXL367_STREAM + uint8_t status; + uint8_t fifo_ent[2]; + struct rtio_iodev_sqe *sqe; + struct rtio *rtio_ctx; + struct rtio_iodev *iodev; + uint64_t timestamp; + struct rtio *r_cb; + uint8_t fifo_full_irq: 1; + uint8_t fifo_wmark_irq: 1; + uint8_t res: 6; + enum adxl367_odr odr; + uint8_t pwr_reg; +#endif /* CONFIG_ADXL367_STREAM */ }; struct adxl367_dev_config { -#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) +#ifdef ADXL367_BUS_I2C struct i2c_dt_spec i2c; -#endif -#if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) +#endif /* ADXL367_BUS_I2C */ +#ifdef ADXL367_BUS_SPI struct spi_dt_spec spi; -#endif +#endif /* ADXL367_BUS_SPI */ int (*bus_init)(const struct device *dev); #ifdef CONFIG_ADXL367_TRIGGER @@ -347,8 +402,30 @@ struct adxl367_dev_config { uint16_t inactivity_time; uint8_t activity_time; + uint8_t chip_id; }; +struct adxl367_fifo_data { + uint8_t is_fifo: 1; + uint8_t res: 7; + uint8_t packet_size; + uint8_t fifo_read_mode; + uint8_t has_tmp: 1; + uint8_t has_adc: 1; + uint8_t has_x: 1; + uint8_t has_y: 1; + uint8_t has_z: 1; + uint8_t res1: 3; + uint8_t int_status; + uint8_t accel_odr: 4; + uint8_t range: 4; + uint16_t fifo_byte_count; + uint64_t timestamp; +} __attribute__((__packed__)); + +BUILD_ASSERT(sizeof(struct adxl367_fifo_data) % 4 == 0, + "adxl367_fifo_data struct should be word aligned"); + int adxl367_spi_init(const struct device *dev); int adxl367_i2c_init(const struct device *dev); int adxl367_trigger_set(const struct device *dev, @@ -356,5 +433,29 @@ int adxl367_trigger_set(const struct device *dev, sensor_trigger_handler_t handler); int adxl367_init_interrupt(const struct device *dev); +void adxl367_submit_stream(const struct device *dev, struct rtio_iodev_sqe *iodev_sqe); +void adxl367_stream_irq_handler(const struct device *dev); + +#ifdef CONFIG_SENSOR_ASYNC_API +void adxl367_submit(const struct device *dev, struct rtio_iodev_sqe *iodev_sqe); +int adxl367_get_decoder(const struct device *dev, const struct sensor_decoder_api **decoder); +int adxl367_get_accel_data(const struct device *dev, + struct adxl367_xyz_accel_data *accel_data); +int adxl367_get_temp_data(const struct device *dev, int16_t *raw_temp); +void adxl367_accel_convert(struct sensor_value *val, int16_t value, + enum adxl367_range range); +void adxl367_temp_convert(struct sensor_value *val, int16_t value); +#endif /* CONFIG_SENSOR_ASYNC_API */ + +#ifdef CONFIG_ADXL367_STREAM +int adxl367_fifo_setup(const struct device *dev, + enum adxl367_fifo_mode mode, + enum adxl367_fifo_format format, + enum adxl367_fifo_read_mode read_mode, + uint8_t sets_nb); +int adxl367_set_op_mode(const struct device *dev, + enum adxl367_op_mode op_mode); +size_t adxl367_get_packet_size(const struct adxl367_dev_config *cfg); +#endif /* CONFIG_ADXL367_STREAM */ #endif /* ZEPHYR_DRIVERS_SENSOR_ADXL367_ADXL367_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl372/adxl372.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl372/adxl372.h index 13b4d934..a3f93ceb 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl372/adxl372.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/adi/adxl372/adxl372.h @@ -14,6 +14,12 @@ #include #include +#ifdef CONFIG_ADXL372_STREAM +#include +#endif /* CONFIG_ADXL372_STREAM */ + +#define DT_DRV_COMPAT adi_adxl372 + #if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) #include #endif /* DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) */ @@ -281,6 +287,10 @@ struct adxl372_activity_threshold { }; struct adxl372_xyz_accel_data { +#ifdef CONFIG_ADXL372_STREAM + uint8_t is_fifo: 1; + uint8_t res: 7; +#endif /* CONFIG_ADXL372_STREAM */ int16_t x; int16_t y; int16_t z; @@ -319,6 +329,16 @@ struct adxl372_data { struct k_work work; #endif #endif /* CONFIG_ADXL372_TRIGGER */ +#ifdef CONFIG_ADXL372_STREAM + struct rtio_iodev_sqe *sqe; + struct rtio *rtio_ctx; + struct rtio_iodev *iodev; + uint8_t status1; + uint8_t fifo_ent[2]; + uint64_t timestamp; + uint8_t fifo_full_irq; + uint8_t pwr_reg; +#endif /* CONFIG_ADXL372_STREAM */ }; struct adxl372_dev_config { @@ -358,9 +378,27 @@ struct adxl372_dev_config { uint8_t int2_config; }; +struct adxl372_fifo_data { + uint8_t is_fifo: 1; + uint8_t sample_set_size: 4; + uint8_t has_x: 1; + uint8_t has_y: 1; + uint8_t has_z: 1; + uint8_t int_status; + uint16_t accel_odr: 4; + uint16_t fifo_byte_count: 12; + uint64_t timestamp; +} __attribute__((__packed__)); + +BUILD_ASSERT(sizeof(struct adxl372_fifo_data) % 4 == 0, + "adxl372_fifo_data struct should be word aligned"); + int adxl372_spi_init(const struct device *dev); int adxl372_i2c_init(const struct device *dev); +void adxl372_submit_stream(const struct device *dev, struct rtio_iodev_sqe *iodev_sqe); +void adxl372_stream_irq_handler(const struct device *dev); + #ifdef CONFIG_ADXL372_TRIGGER int adxl372_get_status(const struct device *dev, uint8_t *status1, uint8_t *status2, uint16_t *fifo_entries); @@ -372,4 +410,19 @@ int adxl372_trigger_set(const struct device *dev, int adxl372_init_interrupt(const struct device *dev); #endif /* CONFIG_ADXL372_TRIGGER */ +#ifdef CONFIG_SENSOR_ASYNC_API +int adxl372_get_accel_data(const struct device *dev, bool maxpeak, + struct adxl372_xyz_accel_data *accel_data); +void adxl372_submit(const struct device *dev, struct rtio_iodev_sqe *iodev_sqe); +int adxl372_get_decoder(const struct device *dev, const struct sensor_decoder_api **decoder); +void adxl372_accel_convert(struct sensor_value *val, int16_t sample); +#endif /* CONFIG_SENSOR_ASYNC_API */ + +#ifdef CONFIG_ADXL372_STREAM +int adxl372_configure_fifo(const struct device *dev, enum adxl372_fifo_mode mode, + enum adxl372_fifo_format format, uint16_t fifo_samples); +size_t adxl372_get_packet_size(const struct adxl372_dev_config *cfg); +int adxl372_set_op_mode(const struct device *dev, enum adxl372_op_mode op_mode); +#endif /* CONFIG_ADXL372_STREAM */ + #endif /* ZEPHYR_DRIVERS_SENSOR_ADXL372_ADXL372_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/apds9253/apds9253.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/apds9253/apds9253.h new file mode 100644 index 00000000..9fbe4a43 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/apds9253/apds9253.h @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2017 Intel Corporation + * Copyright (c) 2018 PHYTEC Messtechnik GmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_SENSOR_APDS9253_APDS9253_H_ +#define ZEPHYR_DRIVERS_SENSOR_APDS9253_APDS9253_H_ + +#include + +#define APDS9253_MAIN_CTRL_REG 0x00 +#define APDS9253_MAIN_CTRL_REG_MASK GENMASK(5, 0) +#define APDS9253_MAIN_CTRL_SAI_LS BIT(5) +#define APDS9253_MAIN_CTRL_SW_RESET BIT(4) +#define APDS9253_MAIN_CTRL_RGB_MODE BIT(2) +#define APDS9253_MAIN_CTRL_LS_EN BIT(1) + +#define APDS9253_LS_MEAS_RATE_REG 0x04 +#define APDS9253_LS_MEAS_RATE_RES_MASK GENMASK(6, 4) +#define APDS9253_LS_MEAS_RATE_RES_20BIT_400MS 0 +#define APDS9253_LS_MEAS_RATE_RES_19BIT_200MS BIT(4) +#define APDS9253_LS_MEAS_RATE_RES_18BIT_100MS BIT(5) /* default */ +#define APDS9253_LS_MEAS_RATE_RES_17BIT_50MS (BIT(5) | BIT(4)) +#define APDS9253_LS_MEAS_RATE_RES_16BIT_25MS BIT(6) +#define APDS9253_LS_MEAS_RATE_RES_13_3MS (BIT(6) | BIT(4)) +#define APDS9253_LS_MEAS_RATE_MES_MASK GENMASK(2, 0) +#define APDS9253_LS_MEAS_RATE_MES_2000MS (BIT(2) | BIT(1) | BIT(0)) +#define APDS9253_LS_MEAS_RATE_MES_1000MS (BIT(2) | BIT(0)) +#define APDS9253_LS_MEAS_RATE_MES_500MS BIT(2) +#define APDS9253_LS_MEAS_RATE_MES_200MS (BIT(1) | BIT(0)) +#define APDS9253_LS_MEAS_RATE_MES_100MS BIT(1) /* default */ +#define APDS9253_LS_MEAS_RATE_MES_50MS BIT(0) +#define APDS9253_LS_MEAS_RATE_MES_25MS 0 + +#define APDS9253_LS_GAIN_REG 0x05 +#define APDS9253_LS_GAIN_MASK GENMASK(2, 0) +#define APDS9253_LS_GAIN_RANGE_18 BIT(2) +#define APDS9253_LS_GAIN_RANGE_9 (BIT(1) | BIT(0)) +#define APDS9253_LS_GAIN_RANGE_6 BIT(1) +#define APDS9253_LS_GAIN_RANGE_3 BIT(0) /* default */ +#define APDS9253_LS_GAIN_RANGE_1 0 + +#define APDS9253_PART_ID 0x06 +#define APDS9253_DEVICE_PART_ID 0xC0 +#define APDS9253_PART_ID_REV_MASK GENMASK(3, 0) +#define APDS9253_PART_ID_ID_MASK GENMASK(7, 4) + +#define APDS9253_MAIN_STATUS_REG 0x07 +#define APDS9253_MAIN_STATUS_POWER_ON BIT(5) +#define APDS9253_MAIN_STATUS_LS_INTERRUPT BIT(4) +#define APDS9253_MAIN_STATUS_LS_STATUS BIT(3) + +/* Channels data */ +#define APDS9253_LS_DATA_BASE 0x0A +#define APDS9253_LS_DATA_IR_0 0x0A +#define APDS9253_LS_DATA_IR_1 0x0B +#define APDS9253_LS_DATA_IR_2 0x0C +#define APDS9253_LS_DATA_GREEN_0 0x0D +#define APDS9253_LS_DATA_GREEN_1 0x0E +#define APDS9253_LS_DATA_GREEN_2 0x0F +#define APDS9253_LS_DATA_BLUE_0 0x10 +#define APDS9253_LS_DATA_BLUE_1 0x11 +#define APDS9253_LS_DATA_BLUE_2 0x12 +#define APDS9253_LS_DATA_RED_0 0x13 +#define APDS9253_LS_DATA_RED_1 0x14 +#define APDS9253_LS_DATA_RED_2 0x15 + +#define APDS9253_INT_CFG 0x19 +#define APDS9253_INT_CFG_LS_INT_SEL_IR 0 +#define APDS9253_INT_CFG_LS_INT_SEL_ALS BIT(4) /* default */ +#define APDS9253_INT_CFG_LS_INT_SEL_RED BIT(5) +#define APDS9253_INT_CFG_LS_INT_SEL_BLUE (BIT(5) | BIT(4)) +#define APDS9253_INT_CFG_LS_VAR_MODE_EN BIT(3) +#define APDS9253_INT_CFG_LS_INT_MODE_EN BIT(3) + +#define APDS9253_INT_PST 0x1A +#define APDS9253_LS_THRES_UP_0 0x21 +#define APDS9253_LS_THRES_UP_1 0x22 +#define APDS9253_LS_THRES_UP_2 0x23 +#define APDS9253_LS_THRES_LOW_0 0x24 +#define APDS9253_LS_THRES_LOW_1 0x25 +#define APDS9253_LS_THRES_LOW_2 0x26 +#define APDS9253_LS_THRES_VAR 0x27 +#define APDS9253_DK_CNT_STOR 0x29 + +struct apds9253_config { + struct i2c_dt_spec i2c; + struct gpio_dt_spec int_gpio; + uint8_t ls_gain; + uint8_t ls_rate; + uint8_t ls_resolution; + bool interrupt_enabled; +}; + +struct apds9253_data { + struct gpio_callback gpio_cb; + struct k_work work; + const struct device *dev; + uint32_t sample_crgb[4]; + uint8_t pdata; + struct k_sem data_sem; +}; + +#endif /* ZEPHYR_DRIVERS_SENSOR_APDS9253_APDS9253_H_*/ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/asahi_kasei/akm09918c/akm09918c.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/asahi_kasei/akm09918c/akm09918c.h index a4b35c64..f8a4f5c7 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/asahi_kasei/akm09918c/akm09918c.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/asahi_kasei/akm09918c/akm09918c.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2023 Google LLC + * Copyright (c) 2024 Florian Weber * SPDX-License-Identifier: Apache-2.0 */ @@ -34,6 +35,13 @@ struct akm09918c_data { int16_t y_sample; int16_t z_sample; uint8_t mode; +#ifdef CONFIG_SENSOR_ASYNC_API + struct akm09918c_async_fetch_ctx { + struct rtio_iodev_sqe *iodev_sqe; + uint64_t timestamp; + struct k_work_delayable async_fetch_work; + } work_ctx; +#endif }; struct akm09918c_config { @@ -74,22 +82,23 @@ static inline void akm09918c_reg_to_hz(uint8_t reg, struct sensor_value *val) break; } } +int akm09918c_start_measurement(const struct device *dev, enum sensor_channel chan); +int akm09918c_fetch_measurement(const struct device *dev, int16_t *x, int16_t *y, int16_t *z); /* * RTIO types */ struct akm09918c_decoder_header { uint64_t timestamp; -} __attribute__((__packed__)); +} __packed; struct akm09918c_encoded_data { struct akm09918c_decoder_header header; int16_t readings[3]; }; -int akm09918c_sample_fetch_helper(const struct device *dev, enum sensor_channel chan, int16_t *x, - int16_t *y, int16_t *z); +void akm09918_async_fetch(struct k_work *work); int akm09918c_get_decoder(const struct device *dev, const struct sensor_decoder_api **decoder); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bme280/bme280.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bme280/bme280.h index b386e623..62fbefec 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bme280/bme280.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bme280/bme280.h @@ -32,10 +32,9 @@ union bme280_bus { }; typedef int (*bme280_bus_check_fn)(const union bme280_bus *bus); -typedef int (*bme280_reg_read_fn)(const union bme280_bus *bus, - uint8_t start, uint8_t *buf, int size); -typedef int (*bme280_reg_write_fn)(const union bme280_bus *bus, - uint8_t reg, uint8_t val); +typedef int (*bme280_reg_read_fn)(const union bme280_bus *bus, uint8_t start, uint8_t *buf, + int size); +typedef int (*bme280_reg_write_fn)(const union bme280_bus *bus, uint8_t reg, uint8_t val); struct bme280_bus_io { bme280_bus_check_fn check; @@ -44,8 +43,7 @@ struct bme280_bus_io { }; #if BME280_BUS_SPI -#define BME280_SPI_OPERATION (SPI_WORD_SET(8) | SPI_TRANSFER_MSB | \ - SPI_MODE_CPOL | SPI_MODE_CPHA) +#define BME280_SPI_OPERATION (SPI_WORD_SET(8) | SPI_TRANSFER_MSB | SPI_MODE_CPOL | SPI_MODE_CPHA) extern const struct bme280_bus_io bme280_bus_io_spi; #endif @@ -53,28 +51,28 @@ extern const struct bme280_bus_io bme280_bus_io_spi; extern const struct bme280_bus_io bme280_bus_io_i2c; #endif -#define BME280_REG_PRESS_MSB 0xF7 -#define BME280_REG_COMP_START 0x88 -#define BME280_REG_HUM_COMP_PART1 0xA1 -#define BME280_REG_HUM_COMP_PART2 0xE1 -#define BME280_REG_ID 0xD0 -#define BME280_REG_CONFIG 0xF5 -#define BME280_REG_CTRL_MEAS 0xF4 -#define BME280_REG_CTRL_HUM 0xF2 -#define BME280_REG_STATUS 0xF3 -#define BME280_REG_RESET 0xE0 - -#define BMP280_CHIP_ID_SAMPLE_1 0x56 -#define BMP280_CHIP_ID_SAMPLE_2 0x57 -#define BMP280_CHIP_ID_MP 0x58 -#define BME280_CHIP_ID 0x60 -#define BME280_MODE_SLEEP 0x00 -#define BME280_MODE_FORCED 0x01 -#define BME280_MODE_NORMAL 0x03 -#define BME280_SPI_3W_DISABLE 0x00 -#define BME280_CMD_SOFT_RESET 0xB6 -#define BME280_STATUS_MEASURING 0x08 -#define BME280_STATUS_IM_UPDATE 0x01 +#define BME280_REG_PRESS_MSB 0xF7 +#define BME280_REG_COMP_START 0x88 +#define BME280_REG_HUM_COMP_PART1 0xA1 +#define BME280_REG_HUM_COMP_PART2 0xE1 +#define BME280_REG_ID 0xD0 +#define BME280_REG_CONFIG 0xF5 +#define BME280_REG_CTRL_MEAS 0xF4 +#define BME280_REG_CTRL_HUM 0xF2 +#define BME280_REG_STATUS 0xF3 +#define BME280_REG_RESET 0xE0 + +#define BMP280_CHIP_ID_SAMPLE_1 0x56 +#define BMP280_CHIP_ID_SAMPLE_2 0x57 +#define BMP280_CHIP_ID_MP 0x58 +#define BME280_CHIP_ID 0x60 +#define BME280_MODE_SLEEP 0x00 +#define BME280_MODE_FORCED 0x01 +#define BME280_MODE_NORMAL 0x03 +#define BME280_SPI_3W_DISABLE 0x00 +#define BME280_CMD_SOFT_RESET 0xB6 +#define BME280_STATUS_MEASURING 0x08 +#define BME280_STATUS_IM_UPDATE 0x01 #if defined CONFIG_BME280_MODE_NORMAL #define BME280_MODE BME280_MODE_NORMAL @@ -83,82 +81,86 @@ extern const struct bme280_bus_io bme280_bus_io_i2c; #endif #if defined CONFIG_BME280_TEMP_OVER_1X -#define BME280_TEMP_OVER (1 << 5) +#define BME280_TEMP_OVER (1 << 5) #elif defined CONFIG_BME280_TEMP_OVER_2X -#define BME280_TEMP_OVER (2 << 5) +#define BME280_TEMP_OVER (2 << 5) #elif defined CONFIG_BME280_TEMP_OVER_4X -#define BME280_TEMP_OVER (3 << 5) +#define BME280_TEMP_OVER (3 << 5) #elif defined CONFIG_BME280_TEMP_OVER_8X -#define BME280_TEMP_OVER (4 << 5) +#define BME280_TEMP_OVER (4 << 5) #elif defined CONFIG_BME280_TEMP_OVER_16X -#define BME280_TEMP_OVER (5 << 5) +#define BME280_TEMP_OVER (5 << 5) #endif #if defined CONFIG_BME280_PRESS_OVER_1X -#define BME280_PRESS_OVER (1 << 2) +#define BME280_PRESS_OVER (1 << 2) #elif defined CONFIG_BME280_PRESS_OVER_2X -#define BME280_PRESS_OVER (2 << 2) +#define BME280_PRESS_OVER (2 << 2) #elif defined CONFIG_BME280_PRESS_OVER_4X -#define BME280_PRESS_OVER (3 << 2) +#define BME280_PRESS_OVER (3 << 2) #elif defined CONFIG_BME280_PRESS_OVER_8X -#define BME280_PRESS_OVER (4 << 2) +#define BME280_PRESS_OVER (4 << 2) #elif defined CONFIG_BME280_PRESS_OVER_16X -#define BME280_PRESS_OVER (5 << 2) +#define BME280_PRESS_OVER (5 << 2) #endif #if defined CONFIG_BME280_HUMIDITY_OVER_1X -#define BME280_HUMIDITY_OVER 1 +#define BME280_HUMIDITY_OVER 1 #elif defined CONFIG_BME280_HUMIDITY_OVER_2X -#define BME280_HUMIDITY_OVER 2 +#define BME280_HUMIDITY_OVER 2 #elif defined CONFIG_BME280_HUMIDITY_OVER_4X -#define BME280_HUMIDITY_OVER 3 +#define BME280_HUMIDITY_OVER 3 #elif defined CONFIG_BME280_HUMIDITY_OVER_8X -#define BME280_HUMIDITY_OVER 4 +#define BME280_HUMIDITY_OVER 4 #elif defined CONFIG_BME280_HUMIDITY_OVER_16X -#define BME280_HUMIDITY_OVER 5 +#define BME280_HUMIDITY_OVER 5 #endif #if defined CONFIG_BME280_STANDBY_05MS -#define BME280_STANDBY 0 +#define BME280_STANDBY 0 #elif defined CONFIG_BME280_STANDBY_62MS -#define BME280_STANDBY (1 << 5) +#define BME280_STANDBY (1 << 5) #elif defined CONFIG_BME280_STANDBY_125MS -#define BME280_STANDBY (2 << 5) +#define BME280_STANDBY (2 << 5) #elif defined CONFIG_BME280_STANDBY_250MS -#define BME280_STANDBY (3 << 5) +#define BME280_STANDBY (3 << 5) #elif defined CONFIG_BME280_STANDBY_500MS -#define BME280_STANDBY (4 << 5) +#define BME280_STANDBY (4 << 5) #elif defined CONFIG_BME280_STANDBY_1000MS -#define BME280_STANDBY (5 << 5) +#define BME280_STANDBY (5 << 5) #elif defined CONFIG_BME280_STANDBY_2000MS -#define BME280_STANDBY (6 << 5) +#define BME280_STANDBY (6 << 5) #elif defined CONFIG_BME280_STANDBY_4000MS -#define BME280_STANDBY (7 << 5) +#define BME280_STANDBY (7 << 5) #endif #if defined CONFIG_BME280_FILTER_OFF -#define BME280_FILTER 0 +#define BME280_FILTER 0 #elif defined CONFIG_BME280_FILTER_2 -#define BME280_FILTER (1 << 2) +#define BME280_FILTER (1 << 2) #elif defined CONFIG_BME280_FILTER_4 -#define BME280_FILTER (2 << 2) +#define BME280_FILTER (2 << 2) #elif defined CONFIG_BME280_FILTER_8 -#define BME280_FILTER (3 << 2) +#define BME280_FILTER (3 << 2) #elif defined CONFIG_BME280_FILTER_16 -#define BME280_FILTER (4 << 2) +#define BME280_FILTER (4 << 2) #endif -#define BME280_CTRL_MEAS_VAL (BME280_PRESS_OVER | \ - BME280_TEMP_OVER | \ - BME280_MODE) -#define BME280_CONFIG_VAL (BME280_STANDBY | \ - BME280_FILTER | \ - BME280_SPI_3W_DISABLE) +#define BME280_CTRL_MEAS_VAL (BME280_PRESS_OVER | BME280_TEMP_OVER | BME280_MODE) +#define BME280_CONFIG_VAL (BME280_STANDBY | BME280_FILTER | BME280_SPI_3W_DISABLE) +#define BME280_CTRL_MEAS_OFF_VAL (BME280_PRESS_OVER | BME280_TEMP_OVER | BME280_MODE_SLEEP) -#define BME280_CTRL_MEAS_OFF_VAL (BME280_PRESS_OVER | \ - BME280_TEMP_OVER | \ - BME280_MODE_SLEEP) +/* Convert to Q15.16 */ +#define BME280_TEMP_CONV 100 +#define BME280_TEMP_SHIFT 16 +/* Treat UQ24.8 as Q23.8 + * Need to divide by 1000 to convert to kPa + */ +#define BME280_PRESS_CONV_KPA 1000 +#define BME280_PRESS_SHIFT 23 +/* Treat UQ22.10 as Q21.10 */ +#define BME280_HUM_SHIFT 21 struct bme280_reading { /* Compensated values. */ @@ -221,11 +223,9 @@ int bme280_get_decoder(const struct device *dev, const struct sensor_decoder_api void bme280_submit(const struct device *dev, struct rtio_iodev_sqe *iodev_sqe); -int bme280_sample_fetch(const struct device *dev, - enum sensor_channel chan); +int bme280_sample_fetch(const struct device *dev, enum sensor_channel chan); -int bme280_sample_fetch_helper(const struct device *dev, - enum sensor_channel chan, +int bme280_sample_fetch_helper(const struct device *dev, enum sensor_channel chan, struct bme280_reading *reading); #endif /* ZEPHYR_DRIVERS_SENSOR_BME280_BME280_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bme680/bme680.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bme680/bme680.h index a0f63fc4..6a4a4aef 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bme680/bme680.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bme680/bme680.h @@ -196,6 +196,7 @@ struct bme680_data { uint8_t res_heat_range; int8_t res_heat_val; int8_t range_sw_err; + bool has_read_compensation; /* Calculated sensor values. */ int32_t calc_temp; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmi08x/bmi08x.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmi08x/bmi08x.h index 6b8b33f8..83926126 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmi08x/bmi08x.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmi08x/bmi08x.h @@ -427,7 +427,7 @@ enum bmi08x_odr { #define BMI08X_GYR_SCALE(range_dps) ((2 * range_dps * SENSOR_PI) / 180LL / 65536LL) /* report of data sync is selected */ -#define BMI08X_ACCEL_DATA_SYNC_EN(inst) DT_NODE_HAS_STATUS(DT_INST_PHANDLE(inst, data_sync), okay) +#define BMI08X_ACCEL_DATA_SYNC_EN(inst) DT_NODE_HAS_STATUS_OKAY(DT_INST_PHANDLE(inst, data_sync)) /* Macro used for compile time optimization to compile in/out code used for data-sync * if at least 1 bmi08x has data-sync enabled */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmm150/bmm150.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmm150/bmm150.h index 47fb3f73..c606d92a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmm150/bmm150.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmm150/bmm150.h @@ -225,6 +225,8 @@ enum bmm150_presets { int bmm150_trigger_mode_init(const struct device *dev); +int bmm150_trigger_mode_power_ctrl(const struct device *dev, bool enable); + int bmm150_trigger_set(const struct device *dev, const struct sensor_trigger *trig, sensor_trigger_handler_t handler); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmp180/bmp180.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmp180/bmp180.h new file mode 100644 index 00000000..4893f6ad --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmp180/bmp180.h @@ -0,0 +1,49 @@ +/* Bosch BMP180 pressure sensor + * + * Copyright (c) 2024 Chris Ruehl + * + * SPDX-License-Identifier: Apache-2.0 + * + * Datasheet: + * https://www.mouser.hk/datasheet/2/783/BST-BMP180-DS000-1509579.pdf + */ +#ifndef ZEPHYR_DRIVER_SENSORS_BMP180_H +#define ZEPHYR_DRIVER_SENSORS_BMP180_H + +/* Registers */ +#define BMP180_REG_CHIPID 0xD0 +#define BMP180_REG_CMD 0xE0 +#define BMP180_REG_MEAS_CTRL 0xF4 +#define BMP180_REG_MSB 0xF6 +#define BMP180_REG_LSB 0xF7 +#define BMP180_REG_XLSB 0xF8 +#define BMP180_REG_CALIB0 0xAA +#define BMP180_REG_CALIB21 0xBF + +/* BMP180_REG_CHIPID */ +#define BMP180_CHIP_ID 0x55 + +/* BMP180_REG_STATUS */ +#define BMP180_STATUS_CMD_RDY BIT(5) + +/* BMP180_REG_CMD */ +#define BMP180_CMD_SOFT_RESET 0xB6 +#define BMP180_CMD_GET_TEMPERATURE 0x2E +#define BMP180_CMD_GET_OSS0_PRESS 0x34 +#define BMP180_CMD_GET_OSS1_PRESS 0x74 /* 0x34 | OSR<<6 */ +#define BMP180_CMD_GET_OSS2_PRESS 0xB4 +#define BMP180_CMD_GET_OSS3_PRESS 0xF4 + +/* command result waiting time in ms */ +#define BMP180_CMD_GET_TEMP_DELAY 3 +#define BMP180_CMD_GET_OSS0_DELAY 3 +#define BMP180_CMD_GET_OSS1_DELAY 6 +#define BMP180_CMD_GET_OSS2_DELAY 12 +#define BMP180_CMD_GET_OSS3_DELAY 24 + +#define BMP180_ULTRALOWPOWER 0x00 /* oversampling 1x */ +#define BMP180_STANDARD 0x01 /* oversampling 2x */ +#define BMP180_HIGHRES 0x02 /* oversampling 4x */ +#define BMP180_ULTRAHIGH 0x03 /* oversampling 8x */ + +#endif /* ZEPHYR_DRIVER_SENSORS_BMP180_H */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmp388/bmp388.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmp388/bmp388.h index 0cc96083..22c74813 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmp388/bmp388.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/bosch/bmp388/bmp388.h @@ -8,8 +8,8 @@ * https://www.bosch-sensortec.com/media/boschsensortec/downloads/datasheets/bst-bmp388-ds001.pdf */ -#ifndef __BMP388_H -#define __BMP388_H +#ifndef ZEPHYR_BMP388_H +#define ZEPHYR_BMP388_H #include #include @@ -19,16 +19,29 @@ #include #include -#define DT_DRV_COMPAT bosch_bmp388 - +#define DT_DRV_COMPAT bosch_bmp388 #define BMP388_BUS_SPI DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) #define BMP388_BUS_I2C DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) +#undef DT_DRV_COMPAT + +#define DT_DRV_COMPAT bosch_bmp390 +#define BMP390_BUS_SPI DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) +#define BMP390_BUS_I2C DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) +#undef DT_DRV_COMPAT + +#if defined(BMP388_BUS_SPI) || defined(BMP390_BUS_SPI) +#define BMP3XX_USE_SPI_BUS +#endif + +#if defined(BMP388_BUS_I2C) || defined(BMP390_BUS_I2C) +#define BMP3XX_USE_I2C_BUS +#endif union bmp388_bus { -#if BMP388_BUS_SPI +#ifdef BMP3XX_USE_SPI_BUS struct spi_dt_spec spi; #endif -#if BMP388_BUS_I2C +#ifdef BMP3XX_USE_I2C_BUS struct i2c_dt_spec i2c; #endif }; @@ -45,13 +58,13 @@ struct bmp388_bus_io { bmp388_reg_write_fn write; }; -#if BMP388_BUS_SPI +#ifdef BMP3XX_USE_SPI_BUS #define BMP388_SPI_OPERATION (SPI_WORD_SET(8) | SPI_TRANSFER_MSB | \ SPI_MODE_CPOL | SPI_MODE_CPHA) extern const struct bmp388_bus_io bmp388_bus_io_spi; #endif -#if BMP388_BUS_I2C +#ifdef BMP3XX_USE_I2C_BUS extern const struct bmp388_bus_io bmp388_bus_io_i2c; #endif @@ -176,6 +189,7 @@ struct bmp388_data { uint8_t odr; uint8_t osr_pressure; uint8_t osr_temp; + uint8_t chip_id; struct bmp388_cal_data cal; #if defined(CONFIG_BMP388_TRIGGER) @@ -212,4 +226,4 @@ int bmp388_reg_field_update(const struct device *dev, uint8_t mask, uint8_t val); -#endif /* __BMP388_H */ +#endif /* ZEPHYR_BMP388_H */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/jedec/jc42/jc42.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/jedec/jc42/jc42.h new file mode 100644 index 00000000..03108044 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/jedec/jc42/jc42.h @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2019 Peter Bigot Consulting, LLC + * Copyright (c) 2016 Intel Corporation + * Copyright (c) 2024 Vogl Electronic GmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_SENSOR_JEDEC_JC42_H_ +#define ZEPHYR_DRIVERS_SENSOR_JEDEC_JC42_H_ + +#include + +#include +#include +#include +#include +#include +#include + +#define JC42_REG_CONFIG 0x01 +#define JC42_REG_UPPER_LIMIT 0x02 +#define JC42_REG_LOWER_LIMIT 0x03 +#define JC42_REG_CRITICAL 0x04 +#define JC42_REG_TEMP_AMB 0x05 + +/* 16 bits control configuration and state. + * + * * Bit 0 controls alert signal output mode + * * Bit 1 controls interrupt polarity + * * Bit 2 disables upper and lower threshold checking + * * Bit 3 enables alert signal output + * * Bit 4 records alert status + * * Bit 5 records interrupt status + * * Bit 6 locks the upper/lower window registers + * * Bit 7 locks the critical register + * * Bit 8 enters shutdown mode + * * Bits 9-10 control threshold hysteresis + */ +#define JC42_CFG_ALERT_MODE_INT BIT(0) +#define JC42_CFG_ALERT_ENA BIT(3) +#define JC42_CFG_ALERT_STATE BIT(4) +#define JC42_CFG_INT_CLEAR BIT(5) + +/* 16 bits are used for temperature and state encoding: + * * Bits 0..11 encode the temperature in a 2s complement signed value + * in Celsius with 1/16 Cel resolution + * * Bit 12 is set to indicate a negative temperature + * * Bit 13 is set to indicate a temperature below the lower threshold + * * Bit 14 is set to indicate a temperature above the upper threshold + * * Bit 15 is set to indicate a temperature above the critical threshold + */ +#define JC42_TEMP_SCALE_CEL 16 /* signed */ +#define JC42_TEMP_SIGN_BIT BIT(12) +#define JC42_TEMP_ABS_MASK ((uint16_t)(JC42_TEMP_SIGN_BIT - 1U)) +#define JC42_TEMP_LWR_BIT BIT(13) +#define JC42_TEMP_UPR_BIT BIT(14) +#define JC42_TEMP_CRT_BIT BIT(15) + +#define JC42_REG_RESOLUTION 0x08 + +struct jc42_data { + uint16_t reg_val; + +#ifdef CONFIG_JC42_TRIGGER + struct gpio_callback alert_cb; + + const struct device *dev; + + const struct sensor_trigger *trig; + sensor_trigger_handler_t trigger_handler; +#endif + +#ifdef CONFIG_JC42_TRIGGER_OWN_THREAD + struct k_sem sem; +#endif + +#ifdef CONFIG_JC42_TRIGGER_GLOBAL_THREAD + struct k_work work; +#endif +}; + +struct jc42_config { + struct i2c_dt_spec i2c; + uint8_t resolution; +#ifdef CONFIG_JC42_TRIGGER + struct gpio_dt_spec int_gpio; +#endif /* CONFIG_JC42_TRIGGER */ +}; + +int jc42_reg_read(const struct device *dev, uint8_t reg, uint16_t *val); +int jc42_reg_write_16bit(const struct device *dev, uint8_t reg, uint16_t val); +int jc42_reg_write_8bit(const struct device *dev, uint8_t reg, uint8_t val); + +#ifdef CONFIG_JC42_TRIGGER +int jc42_attr_set(const struct device *dev, enum sensor_channel chan, enum sensor_attribute attr, + const struct sensor_value *val); +int jc42_trigger_set(const struct device *dev, const struct sensor_trigger *trig, + sensor_trigger_handler_t handler); +int jc42_setup_interrupt(const struct device *dev); +#endif /* CONFIG_JC42_TRIGGER */ + +/* Encode a signed temperature in scaled Celsius to the format used in + * register values. + */ +static inline uint16_t jc42_temp_reg_from_signed(int temp) +{ + /* Get the 12-bit 2s complement value */ + uint16_t rv = temp & JC42_TEMP_ABS_MASK; + + if (temp < 0) { + rv |= JC42_TEMP_SIGN_BIT; + } + return rv; +} + +/* Decode a register temperature value to a signed temperature in + * scaled Celsius. + */ +static inline int jc42_temp_signed_from_reg(uint16_t reg) +{ + int rv = reg & JC42_TEMP_ABS_MASK; + + if (reg & JC42_TEMP_SIGN_BIT) { + /* Convert 12-bit 2s complement to signed negative + * value. + */ + rv = -(1U + (rv ^ JC42_TEMP_ABS_MASK)); + } + return rv; +} + +#endif /* ZEPHYR_DRIVERS_SENSOR_JEDEC_JC42_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/maxim/max31865/max31865.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/maxim/max31865/max31865.h index 1b8681bf..d5279533 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/maxim/max31865/max31865.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/maxim/max31865/max31865.h @@ -71,7 +71,7 @@ LOG_MODULE_REGISTER(MAX31865, CONFIG_SENSOR_LOG_LEVEL); * For under zero, taken from * https://www.analog.com/media/en/technical-documentation/application-notes/AN709_0.pdf */ -static const float A[6] = {-242.02, 2.2228, 2.5859e-3, 4.8260e-6, 2.8183e-8, 1.5243e-10}; +static const double RTD_C[6] = {-242.02, 2.2228, 2.5859e-3, 4.8260e-6, 2.8183e-8, 1.5243e-10}; struct max31865_data { double temperature; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/memsic/mc3419/mc3419.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/memsic/mc3419/mc3419.h new file mode 100644 index 00000000..e7165c8c --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/memsic/mc3419/mc3419.h @@ -0,0 +1,105 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright (c) 2023 Linumiz + */ + +#ifndef ZEPHYR_DRIVERS_SENSOR_MC3419_H_ +#define ZEPHYR_DRIVERS_SENSOR_MC3419_H_ + +#include +#include +#include +#include +#include + +/* Registers */ +#define MC3419_REG_INT_CTRL 0x06 +#define MC3419_REG_OP_MODE 0x07 +#define MC3419_REG_SAMPLE_RATE 0x08 +#define MC3419_REG_MOTION_CTRL 0x09 +#define MC3419_REG_XOUT_L 0x0D +#define MC3419_REG_YOUT_L 0x0F +#define MC3419_REG_ZOUT_L 0x11 +#define MC3419_REG_STATUS 0x13 +#define MC3419_REG_INT_STATUS 0x14 +#define MC3419_REG_RANGE_SELECT_CTRL 0x20 +#define MC3419_REG_SAMPLE_RATE_2 0x30 +#define MC3419_REG_COMM_CTRL 0x31 +#define MC3419_REG_ANY_MOTION_THRES 0x43 + +#define MC3419_RANGE_MASK GENMASK(6, 4) +#define MC3419_LPF_MASK GENMASK(3, 0) +#define MC3419_DATA_READY_MASK BIT(7) +#define MC3419_ANY_MOTION_MASK BIT(2) +#define MC3419_INT_CLEAR 0x00 +#define MC3419_INT_ROUTE 0x10 + +#define MC3419_ANY_MOTION_THRESH_MAX 0x7FFF +#define MC3419_SAMPLE_SIZE 3 +#define MC3419_SAMPLE_READ_SIZE (MC3419_SAMPLE_SIZE * (sizeof(int16_t))) + +#define SENSOR_GRAIN_VALUE (61LL / 1000.0) +#define SENSOR_GRAVITY_DOUBLE (SENSOR_G / 1000000.0) +#define MC3419_BASE_ODR_VAL 0x10 + +#define MC3419_TRIG_DATA_READY 0 +#define MC3419_TRIG_ANY_MOTION 1 +#define MC3419_TRIG_SIZE 2 + +enum mc3419_op_mode { + MC3419_MODE_STANDBY = 0x00, + MC3419_MODE_WAKE = 0x01 +}; + +struct mc3419_odr_map { + int16_t freq; + int16_t mfreq; +}; + +enum mc3419_accl_range { + MC3419_ACCl_RANGE_2G, + MC3419_ACCl_RANGE_4G, + MC3419_ACCl_RANGE_8G, + MC3419_ACCl_RANGE_16G, + MC3419_ACCl_RANGE_12G, + MC3419_ACCL_RANGE_END +}; + +struct mc3419_config { + struct i2c_dt_spec i2c; +#if defined(CONFIG_MC3419_TRIGGER) + struct gpio_dt_spec int_gpio; + bool int_cfg; +#endif + uint8_t lpf_fc_sel; + uint8_t decimation_rate; +}; + +struct mc3419_driver_data { + double sensitivity; + struct k_sem sem; + int16_t samples[MC3419_SAMPLE_SIZE]; +#if defined(CONFIG_MC3419_TRIGGER) + const struct device *gpio_dev; + struct gpio_callback gpio_cb; + sensor_trigger_handler_t handler[MC3419_TRIG_SIZE]; + const struct sensor_trigger *trigger[MC3419_TRIG_SIZE]; +#if defined(CONFIG_MC3419_TRIGGER_OWN_THREAD) + K_KERNEL_STACK_MEMBER(thread_stack, CONFIG_MC3419_THREAD_STACK_SIZE); + struct k_thread thread; + struct k_sem trig_sem; +#else + struct k_work work; +#endif +#endif +}; + +#if defined(CONFIG_MC3419_TRIGGER) +int mc3419_trigger_init(const struct device *dev); +int mc3419_configure_trigger(const struct device *dev, + const struct sensor_trigger *trig, + sensor_trigger_handler_t handler); +#endif + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/memsic/mmc56x3/mmc56x3.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/memsic/mmc56x3/mmc56x3.h new file mode 100644 index 00000000..71372c20 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/memsic/mmc56x3/mmc56x3.h @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2024 Intel Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_SENSOR_MMC56X3_MMC56X3_H_ +#define ZEPHYR_DRIVERS_SENSOR_MMC56X3_MMC56X3_H_ + +#include +#include +#include +#include +#include +#include +#include + +#define DT_DRV_COMPAT memsic_mmc56x3 + +#define MMC56X3_BUS_I2C DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) + +union mmc56x3_bus { + struct i2c_dt_spec i2c; +}; + +typedef int (*mmc56x3_bus_check_fn)(const union mmc56x3_bus *bus); +typedef int (*mmc56x3_reg_read_fn)(const union mmc56x3_bus *bus, uint8_t start, uint8_t *buf, + int size); +typedef int (*mmc56x3_reg_write_fn)(const union mmc56x3_bus *bus, uint8_t reg, uint8_t val); +typedef int (*mmc56x3_raw_read_fn)(const union mmc56x3_bus *bus, uint8_t *buf, size_t size); +typedef int (*mmc56x3_raw_write_fn)(const union mmc56x3_bus *bus, uint8_t *buf, size_t size); + +struct mmc56x3_bus_io { + mmc56x3_bus_check_fn check; + mmc56x3_reg_read_fn read; + mmc56x3_reg_write_fn write; + mmc56x3_raw_read_fn raw_read; + mmc56x3_raw_write_fn raw_write; +}; + +extern const struct mmc56x3_bus_io mmc56x3_bus_io_i2c; + +#define MMC56X3_REG_TEMP 0x09 +#define MMC56X3_CHIP_ID 0x10 +#define MMC56X3_REG_STATUS 0x18 +#define MMC56X3_REG_INTERNAL_ODR 0x1a +#define MMC56X3_REG_INTERNAL_CTRL_0 0x1b +#define MMC56X3_REG_INTERNAL_CTRL_1 0x1c +#define MMC56X3_REG_INTERNAL_CTRL_2 0x1d +#define MMC56X3_REG_ID 0x39 + +#define MMC56X3_CMD_RESET 0x10 +#define MMC56X3_CMD_SET 0x08 +#define MMC56X3_CMD_SW_RESET 0x80 +#define MMC56X3_CMD_TAKE_MEAS_M 0x01 +#define MMC56X3_CMD_TAKE_MEAS_T 0x02 +#define MMC56X3_CMD_AUTO_SELF_RESET_EN 0x20 +#define MMC56X3_CMD_CMM_FREQ_EN 0x80 +#define MMC56X3_CMD_CMM_EN 0x10 +#define MMC56X3_CMD_HPOWER 0x80 + +#define MMC56X3_STATUS_MEAS_M_DONE 0x80 +#define MMC56X3_STATUS_MEAS_T_DONE 0x40 + +#define MMC56X3_REG_MAGN_X_OUT_0 0x00 +/* Range is -30 to 30, sensitivity of raw 20-bit reading is + * 16384 = 1 Gauss. To convert raw reading to + * Q5.26 with range -32 to 32, + * reading * (1/16384) * pow(2, 31)/32 + * = reading * 4096 + */ +#define MMC56X3_MAGN_CONV_Q5_26_20B 4096 +/* 1/16384 */ +#define MMC56X3_MAGN_GAUSS_RES 0.000061035 +/* To convert reading to Q7.24 with range -128, 128, + * (BASE + reading * RES) * pow(2, 31)/128 + * = BASE * pow(2, 31)/128 + reading * RES * pow(2, 31)/128 + * CONV_BASE = BASE * pow(2, 31)/128 + * CONV_RES = RES * pow(2, 31)/128 + * = CONV_BASE + reading * CONV_RES + */ +#define MMC56X3_TEMP_BASE -75 +#define MMC56X3_TEMP_RES 0.8 +#define MMC56X3_TEMP_CONV_Q7_24_BASE -1258291200 +#define MMC56X3_TEMP_CONV_Q7_24_RES 13421773 + +#define MMC56X3_MAGN_SHIFT 5 +#define MMC56X3_TEMP_SHIFT 7 + +#ifdef __cplusplus +extern "C" { +#endif + +struct mmc56x3_config { + uint16_t magn_odr; + bool bw0; + bool bw1; + bool auto_sr; +}; + +struct mmc56x3_data { + struct mmc56x3_config config; + + uint8_t ctrl0_cache; + uint8_t ctrl1_cache; + uint8_t ctrl2_cache; + + uint32_t temp; + int32_t magn_x; + int32_t magn_y; + int32_t magn_z; +}; + +struct mmc56x3_dev_config { + union mmc56x3_bus bus; + const struct mmc56x3_bus_io *bus_io; +}; + +struct mmc56x3_decoder_header { + uint64_t timestamp; +} __attribute__((__packed__)); + +struct mmc56x3_encoded_data { + struct mmc56x3_decoder_header header; + struct { + /** Set if `temp` has data */ + uint8_t has_temp: 1; + /** Set if `magn_x` has data */ + uint8_t has_magn_x: 1; + /** Set if `magn_y` has data */ + uint8_t has_magn_y: 1; + /** Set if `magn_z` has data */ + uint8_t has_magn_z: 1; + } __attribute__((__packed__)); + struct mmc56x3_data data; +}; + +int mmc56x3_get_decoder(const struct device *dev, const struct sensor_decoder_api **decoder); + +void mmc56x3_submit(const struct device *dev, struct rtio_iodev_sqe *iodev_sqe); + +int mmc56x3_sample_fetch(const struct device *dev, enum sensor_channel chan); + +int mmc56x3_sample_fetch_helper(const struct device *dev, enum sensor_channel chan, + struct mmc56x3_data *data); + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_DRIVERS_SENSOR_MMC56X3_MMC56X3_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ntc_thermistor/ntc_thermistor.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ntc_thermistor/ntc_thermistor.h index 3a202d3b..b500aa38 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ntc_thermistor/ntc_thermistor.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ntc_thermistor/ntc_thermistor.h @@ -7,6 +7,7 @@ #ifndef NTC_THERMISTOR_H #define NTC_THERMISTOR_H +#include #include struct ntc_compensation { @@ -21,30 +22,32 @@ struct ntc_type { struct ntc_config { bool connected_positive; - uint32_t pullup_uv; + uint32_t pullup_mv; uint32_t pullup_ohm; uint32_t pulldown_ohm; struct ntc_type type; }; /** - * @brief Converts ohm to temperature in milli centigrade + * @brief Converts ohm to temperature in milli centigrade. * - * @param type: Pointer to ntc_type table info - * @param ohm: Read resistance of NTC thermistor + * @param[in] type Pointer to ntc_type table info + * @param[in] ohm Read resistance of NTC thermistor * - * @return temperature in milli centigrade + * @return Temperature in milli centigrade */ int32_t ntc_get_temp_mc(const struct ntc_type *type, unsigned int ohm); /** - * @brief Calculate the resistance read from NTC Thermistor + * @brief Calculate the resistance read from NTC thermistor. * - * @param cfg: NTC Thermistor configuration - * @sample_mv: Measured voltage in mV + * @param[in] cfg NTC thermistor configuration + * @param[in] sample_value Measured voltage relative to `sample_value_max` + * @param[in] sample_value_max Maximum of `sample_value` * * @return Thermistor resistance */ -uint32_t ntc_get_ohm_of_thermistor(const struct ntc_config *cfg, int sample_mv); +uint32_t ntc_get_ohm_of_thermistor(const struct ntc_config *cfg, int sample_value, + int sample_value_max); #endif /* NTC_THERMISTOR_H */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/nxp/fxls8974/fxls8974.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/nxp/fxls8974/fxls8974.h new file mode 100644 index 00000000..e01cc78f --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/nxp/fxls8974/fxls8974.h @@ -0,0 +1,204 @@ +/* + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) +#include +#endif + +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) +#include +#endif +#include +#include + +#define FXLS8974_BUS_I2C (1<<0) +#define FXLS8974_BUS_SPI (1<<1) +#define FXLS8974_REG_OUTXLSB 0x04 +#define FXLS8974_REG_OUTTEMP 0x01 +#define FXLS8974_REG_WHOAMI 0x13 +#define FXLS8974_REG_CTRLREG1 0x15 +#define FXLS8974_REG_CTRLREG2 0x16 +#define FXLS8974_REG_CTRLREG3 0x17 +#define FXLS8974_REG_CTRLREG4 0x18 +#define FXLS8974_REG_CTRLREG5 0x19 + +#define WHOAMI_ID_FXLS8974 0x86 + +#define FXLS8974_CTRLREG1_ACTIVE_MASK 0x01 +#define FXLS8974_CTRLREG1_RST_MASK 0x80 +#define FXLS8974_CTRLREG1_FSR_MASK 0x06 +#define FXLS8974_CTRLREG1_FSR_2G 0x00 +#define FXLS8974_CTRLREG1_FSR_4G 0x02 +#define FXLS8974_CTRLREG1_FSR_8G 0x04 +#define FXLS8974_CTRLREG1_FSR_16G 0x06 + +#define FXLS8974_CTRLREG2_WAKE_PM_MASK 0xC0 +#define FXLS8974_CTRLREG2_SLEEP_PM_MASK 0x30 + +#define FXLS8974_CTRLREG3_WAKE_ODR_MASK 0xF0 +#define FXLS8974_CTRLREG3_SLEEP_ODR_MASK 0x0F + +#define FXLS8974_CTRLREG3_ODR_RATE_3200 0x00 +#define FXLS8974_CTRLREG3_ODR_RATE_1600 0x01 +#define FXLS8974_CTRLREG3_ODR_RATE_800 0x02 +#define FXLS8974_CTRLREG3_ODR_RATE_400 0x03 +#define FXLS8974_CTRLREG3_ODR_RATE_200 0x04 +#define FXLS8974_CTRLREG3_ODR_RATE_100 0x05 +#define FXLS8974_CTRLREG3_ODR_RATE_50 0x06 +#define FXLS8974_CTRLREG3_ODR_RATE_25 0x07 +#define FXLS8974_CTRLREG3_ODR_RATE_12_5 0x08 +#define FXLS8974_CTRLREG3_ODR_RATE_6_25 0x09 +#define FXLS8974_CTRLREG3_ODR_RATE_3_125 0x0A +#define FXLS8974_CTRLREG3_ODR_RATE_1_563 0x0B +#define FXLS8974_CTRLREG3_ODR_RATE_0_781 0x0C + +#define FXLS8974_CTRLREG4_INT_POL_HIGH 0x01 + +#define FXLS8974_INTREG_EN 0x20 +#define FXLS8974_INT_PIN_SEL_REG 0x21 + +#define FXLS8974_DATA_ACCEL_X_OFFSET 0 +#define FXLS8974_DATA_ACCEL_Y_OFFSET FXLS8974_BYTES_PER_CHANNEL_NORMAL +#define FXLS8974_DATA_ACCEL_Z_OFFSET 2*FXLS8974_BYTES_PER_CHANNEL_NORMAL +#define FXLS8974_DATA_TEMP_OFFSET 3*FXLS8974_BYTES_PER_CHANNEL_NORMAL +#define FXLS8974_ZERO_TEMP 25 + +#define FXLS8974_MAX_NUM_CHANNELS 4 +#define FXLS8974_MAX_ACCEL_CHANNELS 3 +#define FXLS8974_MAX_TEMP_CHANNELS 1 + +#define FXLS8974_BYTES_PER_CHANNEL_NORMAL 2 +#define FXLS8974_BYTES_PER_CHANNEL_FAST 1 + +#define FXLS8974_MAX_ACCEL_BYTES (FXLS8974_MAX_ACCEL_CHANNELS*2) +#define FXLS8974_MAX_NUM_BYTES (FXLS8974_MAX_ACCEL_BYTES + FXLS8974_MAX_TEMP_CHANNELS) + +#define FXLS8974_DRDY_MASK 0x80 + +enum fxls8974_active { + FXLS8974_ACTIVE_OFF = 0, + FXLS8974_ACTIVE_ON, +}; + +enum fxls8974_wake { + FXLS8974_WAKE = 0, + FXLS8974_SLEEP, +}; + +enum fxls8974_channel { + FXLS8974_CHANNEL_ACCEL_X = 0, + FXLS8974_CHANNEL_ACCEL_Y, + FXLS8974_CHANNEL_ACCEL_Z, + FXLS8974_CHANNEL_TEMP, +}; + +struct fxls8974_io_ops { + int (*read)(const struct device *dev, + uint8_t reg, + void *data, + size_t length); + int (*byte_read)(const struct device *dev, + uint8_t reg, + uint8_t *byte); + int (*byte_write)(const struct device *dev, + uint8_t reg, + uint8_t byte); + int (*reg_field_update)(const struct device *dev, + uint8_t reg, + uint8_t mask, + uint8_t val); +}; + +union fxls8974_bus_cfg { +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) + struct spi_dt_spec spi; +#endif + +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) + struct i2c_dt_spec i2c; +#endif +}; + +struct fxls8974_config { + const union fxls8974_bus_cfg bus_cfg; + const struct fxls8974_io_ops *ops; + struct gpio_dt_spec reset_gpio; + uint8_t range; + uint8_t inst_on_bus; +#ifdef CONFIG_FXLS8974_TRIGGER + struct gpio_dt_spec int_gpio; +#endif + +}; + +struct fxls8974_data { + struct k_sem sem; + int16_t raw[FXLS8974_MAX_NUM_CHANNELS]; + uint8_t whoami; +#ifdef CONFIG_FXLS8974_TRIGGER + const struct device *dev; + struct gpio_callback gpio_cb; + sensor_trigger_handler_t drdy_handler; + const struct sensor_trigger *drdy_trig; +#endif +#ifdef CONFIG_FXLS8974_TRIGGER_OWN_THREAD + K_KERNEL_STACK_MEMBER(thread_stack, CONFIG_FXLS8974_THREAD_STACK_SIZE); + struct k_thread thread; + struct k_sem trig_sem; +#endif +#ifdef CONFIG_FXLS8974_TRIGGER_GLOBAL_THREAD + struct k_work work; +#endif +}; + +int fxls8974_get_active(const struct device *dev, enum fxls8974_active *active); +int fxls8974_set_active(const struct device *dev, enum fxls8974_active active); + +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) +int fxls8974_byte_write_spi(const struct device *dev, + uint8_t reg, + uint8_t byte); + +int fxls8974_byte_read_spi(const struct device *dev, + uint8_t reg, + uint8_t *byte); + +int fxls8974_reg_field_update_spi(const struct device *dev, + uint8_t reg, + uint8_t mask, + uint8_t val); + +int fxls8974_read_spi(const struct device *dev, + uint8_t reg, + void *data, + size_t length); +#endif +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) +int fxls8974_byte_write_i2c(const struct device *dev, + uint8_t reg, + uint8_t byte); + +int fxls8974_byte_read_i2c(const struct device *dev, + uint8_t reg, + uint8_t *byte); + +int fxls8974_reg_field_update_i2c(const struct device *dev, + uint8_t reg, + uint8_t mask, + uint8_t val); + +int fxls8974_read_i2c(const struct device *dev, + uint8_t reg, + void *data, + size_t length); +#endif +#if CONFIG_FXLS8974_TRIGGER +int fxls8974_trigger_init(const struct device *dev); +int fxls8974_trigger_set(const struct device *dev, + const struct sensor_trigger *trig, + sensor_trigger_handler_t handler); +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/nxp/p3t1755/p3t1755.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/nxp/p3t1755/p3t1755.h new file mode 100644 index 00000000..b2ba329f --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/nxp/p3t1755/p3t1755.h @@ -0,0 +1,71 @@ +/* + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_SENSOR_P3T1755_P3T1755_H_ +#define ZEPHYR_DRIVERS_SENSOR_P3T1755_P3T1755_H_ + +#include + +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) +#include +#endif /* DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) */ + +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i3c) +#include +#endif /* DT_ANY_INST_ON_BUS_STATUS_OKAY(i3c) */ + +#include + +#define P3T1755_BUS_I2C (1<<0) +#define P3T1755_BUS_I3C (1<<1) +/* Registers. */ +#define P3T1755_TEMPERATURE_REG (0x00U) +#define P3T1755_CONFIG_REG (0x01U) + +#define P3T1755_TEMPERATURE_REG_SHIFT (0x04U) +#define P3T1755_TEMPERATURE_SCALE 62500 +#define P3T1755_TEMPERATURE_SIGN_BIT BIT(12) +#define P3T1755_TEMPERATURE_ABS_MASK ((uint16_t)(P3T1755_TEMPERATURE_SIGN_BIT - 1U)) + +#define P3T1755_CONFIG_REG_OS BIT(7) +#define P3T1755_CONFIG_REG_SD BIT(0) + +struct p3t1755_io_ops { + int (*read)(const struct device *dev, uint8_t reg, uint8_t *byte, uint8_t len); + int (*write)(const struct device *dev, uint8_t reg, uint8_t *byte, uint8_t len); +}; + +union p3t1755_bus_cfg { +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) + const struct i2c_dt_spec i2c; +#endif +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i3c) + struct i3c_device_desc **i3c; +#endif +}; + +struct p3t1755_config { + const union p3t1755_bus_cfg bus_cfg; + const struct p3t1755_io_ops ops; +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i3c) + struct { + const struct device *bus; + const struct i3c_device_id dev_id; + } i3c; +#endif + bool oneshot_mode; + uint8_t inst_on_bus; +}; + +struct p3t1755_data { + int16_t sample; + uint8_t config_reg; +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i3c) + struct i3c_device_desc *i3c_dev; +#endif +}; + +#endif /* ZEPHYR_DRIVERS_SENSOR_P3T1755_P3T1755_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/renesas/isl29035/isl29035.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/renesas/isl29035/isl29035.h new file mode 100644 index 00000000..e77a9d2e --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/renesas/isl29035/isl29035.h @@ -0,0 +1,153 @@ +/* sensor_isl29035.h - header file for ISL29035 light sensor driver */ + +/* + * Copyright (c) 2016 Intel Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_SENSOR_ISL29035_ISL29035_H_ +#define ZEPHYR_DRIVERS_SENSOR_ISL29035_ISL29035_H_ + +#include +#include +#include +#include +#include + +#define ISL29035_COMMAND_I_REG 0x00 +#define ISL29035_OPMODE_SHIFT 5 +#define ISL29035_OPMODE_MASK (7 << ISL29035_OPMODE_SHIFT) +#define ISL29035_INT_BIT_SHIFT 2 +#define ISL29035_INT_BIT_MASK (1 << ISL29035_INT_BIT_SHIFT) +#define ISL29035_INT_PRST_SHIFT 0 +#define ISL29035_INT_PRST_MASK (3 << ISL29035_INT_BIT_SHIFT) + +#define ISL29035_OPMODE_OFF 0 +#define ISL29035_OPMODE_ALS_ONCE 1 +#define ISL29035_OPMODE_IR_ONCE 2 +#define ISL29035_OPMODE_ALS_CONT 5 +#define ISL29035_OPMODE_IR_CONT 6 + +#define ISL29035_COMMAND_II_REG 0x01 +#define ISL29035_LUX_RANGE_SHIFT 0 +#define ISL29035_LUX_RANGE_MASK (3 << ISL29035_LUX_RANGE_SHIFT) +#define ISL29035_ADC_RES_SHIFT 2 +#define ISL29035_ADC_RES_MASK (3 << ISL29035_ADC_RES_SHIFT) + +#define ISL29035_DATA_LSB_REG 0x02 +#define ISL29035_DATA_MSB_REG 0x03 +#define ISL29035_INT_LT_LSB_REG 0x04 +#define ISL29035_INT_LT_MSB_REG 0x05 +#define ISL29035_INT_HT_LSB_REG 0x06 +#define ISL29035_INT_HT_MSB_REG 0x07 + +#define ISL29035_ID_REG 0x0F +#define ISL29035_BOUT_SHIFT 7 +#define ISL29035_BOUT_MASK (1 << ISL29035_BOUT_SHIFT) +#define ISL29035_ID_SHIFT 3 +#define ISL29035_ID_MASK (3 << ISL29035_ID_SHIFT) + +#if CONFIG_ISL29035_MODE_ALS + #define ISL29035_ACTIVE_OPMODE ISL29035_OPMODE_ALS_CONT + #define ISL29035_ACTIVE_CHAN SENSOR_CHAN_LIGHT +#elif CONFIG_ISL29035_MODE_IR + #define ISL29035_ACTIVE_OPMODE ISL29035_OPMODE_IR_CONT + #define ISL29035_ACTIVE_CHAN SENSOR_CHAN_IR +#endif + +#define ISL29035_ACTIVE_OPMODE_BITS \ + (ISL29035_ACTIVE_OPMODE << ISL29035_OPMODE_SHIFT) + +#if CONFIG_ISL29035_LUX_RANGE_1K + #define ISL29035_LUX_RANGE_IDX 0 + #define ISL29035_LUX_RANGE 1000 +#elif CONFIG_ISL29035_LUX_RANGE_4K + #define ISL29035_LUX_RANGE_IDX 1 + #define ISL29035_LUX_RANGE 4000 +#elif CONFIG_ISL29035_LUX_RANGE_16K + #define ISL29035_LUX_RANGE_IDX 2 + #define ISL29035_LUX_RANGE 16000 +#elif CONFIG_ISL29035_LUX_RANGE_64K + #define ISL29035_LUX_RANGE_IDX 3 + #define ISL29035_LUX_RANGE 64000 +#endif + +#define ISL29035_LUX_RANGE_BITS \ + (ISL29035_LUX_RANGE_IDX << ISL29035_LUX_RANGE_SHIFT) + +#if CONFIG_ISL29035_INTEGRATION_TIME_26 + #define ISL29035_ADC_RES_IDX 3 +#elif CONFIG_ISL29035_INTEGRATION_TIME_410 + #define ISL29035_ADC_RES_IDX 2 +#elif CONFIG_ISL29035_INTEGRATION_TIME_6500 + #define ISL29035_ADC_RES_IDX 1 +#elif CONFIG_ISL29035_INTEGRATION_TIME_105K + #define ISL29035_ADC_RES_IDX 0 +#endif + +#define ISL29035_ADC_RES_BITS \ + (ISL29035_ADC_RES_IDX << ISL29035_ADC_RES_SHIFT) + +#define ISL29035_ADC_DATA_BITS (16 - 4 * ISL29035_ADC_RES_IDX) +#define ISL29035_ADC_DATA_MASK (0xFFFF >> (16 - ISL29035_ADC_DATA_BITS)) + +#if CONFIG_ISL29035_INT_PERSIST_1 + #define ISL29035_INT_PRST_IDX 0 + #define ISL29035_INT_PRST_CYCLES 1 +#elif CONFIG_ISL29035_INT_PERSIST_4 + #define ISL29035_INT_PRST_IDX 1 + #define ISL29035_INT_PRST_CYCLES 4 +#elif CONFIG_ISL29035_INT_PERSIST_8 + #define ISL29035_INT_PRST_IDX 2 + #define ISL29035_INT_PRST_CYCLES 8 +#elif CONFIG_ISL29035_INT_PERSIST_16 + #define ISL29035_INT_PRST_IDX 3 + #define ISL29035_INT_PRST_CYCLES 16 +#endif + +#define ISL29035_INT_PRST_BITS \ + (ISL29035_INT_PRST_IDX << ISL29035_INT_PRST_SHIFT) + +struct isl29035_driver_data { + uint16_t data_sample; + +#if CONFIG_ISL29035_TRIGGER + const struct device *dev; + struct gpio_callback gpio_cb; + + const struct sensor_trigger *th_trigger; + sensor_trigger_handler_t th_handler; + +#if defined(CONFIG_ISL29035_TRIGGER_OWN_THREAD) + K_KERNEL_STACK_MEMBER(thread_stack, CONFIG_ISL29035_THREAD_STACK_SIZE); + struct k_thread thread; + struct k_sem gpio_sem; +#elif defined(CONFIG_ISL29035_TRIGGER_GLOBAL_THREAD) + struct k_work work; +#endif + +#endif /* CONFIG_ISL29035_TRIGGER */ +}; + +struct isl29035_config { + struct i2c_dt_spec i2c; +#if CONFIG_ISL29035_TRIGGER + struct gpio_dt_spec int_gpio; +#endif +}; + +#ifdef CONFIG_ISL29035_TRIGGER +int isl29035_attr_set(const struct device *dev, + enum sensor_channel chan, + enum sensor_attribute attr, + const struct sensor_value *val); + +int isl29035_trigger_set(const struct device *dev, + const struct sensor_trigger *trig, + sensor_trigger_handler_t handler); + +int isl29035_init_interrupt(const struct device *dev); +#endif + +#endif /* ZEPHYR_DRIVERS_SENSOR_ISL29035_ISL29035_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/sensirion/scd4x/scd4x.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/sensirion/scd4x/scd4x.h new file mode 100644 index 00000000..3955d202 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/sensirion/scd4x/scd4x.h @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2024 Jan Fäh + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_SENSOR_SCD4X_SCD4X_H_ +#define ZEPHYR_DRIVERS_SENSOR_SCD4X_SCD4X_H_ + +#include + +#define SCD4X_CMD_REINIT 0 +#define SCD4X_CMD_START_PERIODIC_MEASUREMENT 1 +#define SCD4X_CMD_STOP_PERIODIC_MEASUREMENT 2 +#define SCD4X_CMD_READ_MEASUREMENT 3 +#define SCD4X_CMD_SET_TEMPERATURE_OFFSET 4 +#define SCD4X_CMD_GET_TEMPERATURE_OFFSET 5 +#define SCD4X_CMD_SET_SENSOR_ALTITUDE 6 +#define SCD4X_CMD_GET_SENSOR_ALTITUDE 7 +#define SCD4X_CMD_SET_AMBIENT_PRESSURE 8 +#define SCD4X_CMD_GET_AMBIENT_PRESSURE 9 +#define SCD4X_CMD_FORCED_RECALIB 10 +#define SCD4X_CMD_SET_AUTOMATIC_CALIB_ENABLE 11 +#define SCD4X_CMD_GET_AUTOMATIC_CALIB_ENABLE 12 +#define SCD4X_CMD_LOW_POWER_PERIODIC_MEASUREMENT 13 +#define SCD4X_CMD_GET_DATA_READY_STATUS 14 +#define SCD4X_CMD_PERSIST_SETTINGS 15 +#define SCD4X_CMD_SELF_TEST 16 +#define SCD4X_CMD_FACTORY_RESET 17 +#define SCD4X_CMD_MEASURE_SINGLE_SHOT 18 +#define SCD4X_CMD_MEASURE_SINGLE_SHOT_RHT 19 +#define SCD4X_CMD_POWER_DOWN 10 +#define SCD4X_CMD_WAKE_UP 21 +#define SCD4X_CMD_SET_SELF_CALIB_INITIAL_PERIOD 22 +#define SCD4X_CMD_GET_SELF_CALIB_INITIAL_PERIOD 23 +#define SCD4X_CMD_SET_SELF_CALIB_STANDARD_PERIOD 24 +#define SCD4X_CMD_GET_SELF_CALIB_STANDARD_PERIOD 25 + +#define SCD4X_CRC_POLY 0x31 +#define SCD4X_CRC_INIT 0xFF + +#define SCD4X_STARTUP_TIME_MS 30 + +#define SCD4X_TEMPERATURE_OFFSET_IDX_MAX 20 +#define SCD4X_SENSOR_ALTITUDE_IDX_MAX 3000 +#define SCD4X_AMBIENT_PRESSURE_IDX_MAX 1200 +#define SCD4X_BOOL_IDX_MAX 1 + +#define SCD4X_MAX_TEMP 175 +#define SCD4X_MIN_TEMP -45 + +enum scd4x_model_t { + SCD4X_MODEL_SCD40, + SCD4X_MODEL_SCD41, +}; + +enum scd4x_mode_t { + SCD4X_MODE_NORMAL, + SCD4X_MODE_LOW_POWER, + SCD4X_MODE_SINGLE_SHOT, +}; + +struct scd4x_config { + struct i2c_dt_spec bus; + enum scd4x_model_t model; + enum scd4x_mode_t mode; +}; + +struct scd4x_data { + uint16_t temp_sample; + uint16_t humi_sample; + uint16_t co2_sample; +}; + +struct cmds_t { + uint16_t cmd; + uint16_t cmd_duration_ms; +}; + +const struct cmds_t scd4x_cmds[] = { + {0x3646, 30}, {0x21B1, 0}, {0x3F86, 500}, {0xEC05, 1}, {0x241D, 1}, {0x2318, 1}, + {0x2427, 1}, {0x2322, 1}, {0xE000, 1}, {0xE000, 1}, {0x362F, 400}, {0x2416, 1}, + {0x2313, 1}, {0x21AC, 0}, {0xE4B8, 1}, {0x3615, 800}, {0x3639, 10000}, {0x3632, 1200}, + {0x219D, 5000}, {0x2196, 50}, {0x36E0, 1}, {0x36F6, 30}, {0x2445, 1}, {0x2340, 1}, + {0x244E, 1}, {0x234B, 1}, +}; + +#endif /* ZEPHYR_DRIVERS_SENSOR_SCD4X_SCD4X_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/sensirion/sht4x/sht4x.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/sensirion/sht4x/sht4x.h index 35a11d2f..6409bea2 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/sensirion/sht4x/sht4x.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/sensirion/sht4x/sht4x.h @@ -41,7 +41,7 @@ static const uint8_t measure_cmd[3] = { }; static const uint16_t measure_wait_us[3] = { - 1700, 4500, 8200 + 1600, 4500, 8300 }; /* diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lis2dux12/lis2dux12.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lis2dux12/lis2dux12.h index 82a2a693..7d0d85f3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lis2dux12/lis2dux12.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lis2dux12/lis2dux12.h @@ -51,9 +51,11 @@ struct lis2dux12_data { int sample_y; int sample_z; float gain; + uint8_t range; + uint8_t odr; #ifdef CONFIG_LIS2DUX12_ENABLE_TEMP - int sample_temp; + float sample_temp; #endif #ifdef CONFIG_LIS2DUX12_TRIGGER diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lis2dw12/lis2dw12.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lis2dw12/lis2dw12.h index d5231219..6f9011a4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lis2dw12/lis2dw12.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lis2dw12/lis2dw12.h @@ -58,6 +58,11 @@ #define LIS2DW12_SHIFT_PM1 4 #define LIS2DW12_SHIFT_PMOTHER 2 +/* shift value for 12 bit resolution */ +#define LIS2DW12_SHIFT_TEMP 4 +/* Temperature 12 bit scale factor in uC = 1000000/16 as 1 LSB = C/16 */ +#define LIS2DW12_TEMP_SCALE_FACTOR 62500 + /** * struct lis2dw12_device_config - lis2dw12 hw configuration * @bus_name: Pointer to bus master identifier. @@ -92,18 +97,24 @@ struct lis2dw12_device_config { uint8_t tap_latency; uint8_t tap_quiet; #endif /* CONFIG_LIS2DW12_TAP */ +#ifdef CONFIG_LIS2DW12_SLEEP + uint8_t sleep_duration; +#endif #ifdef CONFIG_LIS2DW12_FREEFALL uint8_t freefall_duration; uint8_t freefall_threshold; #endif /* CONFIG_LIS2DW12_FREEFALL */ -#ifdef CONFIG_LIS2DW12_THRESHOLD +#ifdef CONFIG_LIS2DW12_WAKEUP uint8_t wakeup_duration; -#endif /* CONFIG_LIS2DW12_THRESHOLD */ +#endif /* CONFIG_LIS2DW12_WAKEUP */ #endif /* CONFIG_LIS2DW12_TRIGGER */ }; /* sensor data */ struct lis2dw12_data { + /* temperature raw data */ + int16_t temp; + /* accelerometer raw data */ int16_t acc[3]; /* save sensitivity */ @@ -123,10 +134,14 @@ struct lis2dw12_data { sensor_trigger_handler_t double_tap_handler; const struct sensor_trigger *double_tap_trig; #endif /* CONFIG_LIS2DW12_TAP */ -#ifdef CONFIG_LIS2DW12_THRESHOLD - sensor_trigger_handler_t threshold_handler; - const struct sensor_trigger *threshold_trig; -#endif /* CONFIG_LIS2DW12_THRESHOLD */ +#ifdef CONFIG_LIS2DW12_WAKEUP + sensor_trigger_handler_t motion_handler; + const struct sensor_trigger *motion_trig; +#endif /* CONFIG_LIS2DW12_WAKEUP */ +#ifdef CONFIG_LIS2DW12_SLEEP + sensor_trigger_handler_t stationary_handler; + const struct sensor_trigger *stationary_trig; +#endif #ifdef CONFIG_LIS2DW12_FREEFALL sensor_trigger_handler_t freefall_handler; const struct sensor_trigger *freefall_trig; @@ -148,4 +163,9 @@ int lis2dw12_trigger_set(const struct device *dev, sensor_trigger_handler_t handler); #endif /* CONFIG_LIS2DW12_TRIGGER */ +/* LIS2DW12 specific channels */ +enum sensor_channel_lis2dw12 { + SENSOR_CHAN_LIS2DW12_INT_STATUS = SENSOR_CHAN_PRIV_START, +}; + #endif /* ZEPHYR_DRIVERS_SENSOR_LIS2DW12_LIS2DW12_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lps2xdf/ilps22qs.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lps2xdf/ilps22qs.h new file mode 100644 index 00000000..eb2488ee --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lps2xdf/ilps22qs.h @@ -0,0 +1,23 @@ +/* ST Microelectronics ILPS22QS pressure and temperature sensor + * + * Copyright (c) 2023-2024 STMicroelectronics + * Copyright (c) 2023 PHYTEC Messtechnik GmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +#include "ilps22qs_reg.h" + +#include + +#ifndef ZEPHYR_DRIVERS_SENSOR_ILPS22QS_ILPS22QS_H_ +#define ZEPHYR_DRIVERS_SENSOR_ILPS22QS_ILPS22QS_H_ + +extern const struct lps2xdf_chip_api st_ilps22qs_chip_api; + +int st_ilps22qs_init(const struct device *dev); + +#endif /* ZEPHYR_DRIVERS_SENSOR_ILPS22QS_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lps2xdf/lps2xdf.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lps2xdf/lps2xdf.h index 10a38a5a..34137d0a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lps2xdf/lps2xdf.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lps2xdf/lps2xdf.h @@ -4,10 +4,6 @@ * Copyright (c) 2023 PHYTEC Messtechnik GmbH * * SPDX-License-Identifier: Apache-2.0 - * - * Datasheets: - * https://www.st.com/resource/en/datasheet/lps22df.pdf - * https://www.st.com/resource/en/datasheet/lps28dfw.pdf */ #ifndef ZEPHYR_DRIVERS_SENSOR_LPS2XDF_LPS2XDF_H_ @@ -16,6 +12,10 @@ #include #include +#if DT_HAS_COMPAT_STATUS_OKAY(st_ilps22qs) +#include "ilps22qs_reg.h" +#endif + #if DT_HAS_COMPAT_STATUS_OKAY(st_lps28dfw) #include "lps28dfw_reg.h" #endif @@ -32,6 +32,7 @@ #define LPS2XDF_SWRESET_WAIT_TIME_US 50 #if (DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lps22df, i3c) || \ + DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_ilps22qs, i3c) || \ DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lps28dfw, i3c)) #define ON_I3C_BUS(cfg) (cfg->i3c.bus != NULL) #else @@ -40,8 +41,9 @@ typedef int32_t (*api_lps2xdf_mode_set_odr_raw)(const struct device *dev, uint8_t odr); typedef int32_t (*api_lps2xdf_sample_fetch)(const struct device *dev, enum sensor_channel chan); -typedef void (*api_lps2xdf_handle_interrupt)(const struct device *dev); #ifdef CONFIG_LPS2XDF_TRIGGER +typedef int (*api_lps2xdf_config_interrupt)(const struct device *dev); +typedef void (*api_lps2xdf_handle_interrupt)(const struct device *dev); typedef int (*api_lps2xdf_trigger_set)(const struct device *dev, const struct sensor_trigger *trig, sensor_trigger_handler_t handler); @@ -50,8 +52,9 @@ typedef int (*api_lps2xdf_trigger_set)(const struct device *dev, struct lps2xdf_chip_api { api_lps2xdf_mode_set_odr_raw mode_set_odr_raw; api_lps2xdf_sample_fetch sample_fetch; - api_lps2xdf_handle_interrupt handle_interrupt; #ifdef CONFIG_LPS2XDF_TRIGGER + api_lps2xdf_config_interrupt config_interrupt; + api_lps2xdf_handle_interrupt handle_interrupt; api_lps2xdf_trigger_set trigger_set; #endif }; @@ -60,6 +63,7 @@ struct lps2xdf_chip_api { enum sensor_variant { DEVICE_VARIANT_LPS22DF = 0, DEVICE_VARIANT_LPS28DFW = 1, + DEVICE_VARIANT_ILPS22QS = 2, }; @@ -67,13 +71,16 @@ struct lps2xdf_config { stmdev_ctx_t ctx; union { #if (DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lps22df, i2c) || \ + DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_ilps22qs, i2c) || \ DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lps28dfw, i2c)) const struct i2c_dt_spec i2c; #endif -#if DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lps22df, spi) +#if (DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lps22df, spi) ||\ + DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_ilps22qs, spi)) const struct spi_dt_spec spi; #endif #if (DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lps22df, i3c) || \ + DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_ilps22qs, i3c) || \ DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lps28dfw, i3c)) struct i3c_device_desc **i3c; #endif @@ -89,6 +96,7 @@ struct lps2xdf_config { #endif #if (DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lps22df, i3c) || \ + DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_ilps22qs, i3c) || \ DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lps28dfw, i3c)) struct { const struct device *bus; @@ -120,12 +128,15 @@ struct lps2xdf_data { #endif /* CONFIG_LPS2XDF_TRIGGER */ #if (DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lps22df, i3c) || \ + DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_ilps22qs, i3c) || \ DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lps28dfw, i3c)) struct i3c_device_desc *i3c_dev; #endif }; #ifdef CONFIG_LPS2XDF_TRIGGER +int lps2xdf_config_int(const struct device *dev); + int lps2xdf_trigger_set(const struct device *dev, const struct sensor_trigger *trig, sensor_trigger_handler_t handler); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dso/lsm6dso.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dso/lsm6dso.h index c7f7279d..a721f024 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dso/lsm6dso.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dso/lsm6dso.h @@ -19,13 +19,15 @@ #include #include "lsm6dso_reg.h" -#if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) +#if DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lsm6dso, spi) || \ + DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lsm6dso32, spi) #include -#endif /* DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) */ +#endif -#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) +#if DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lsm6dso, i2c) || \ + DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lsm6dso32, i2c) #include -#endif /* DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) */ +#endif #define LSM6DSO_EN_BIT 0x01 #define LSM6DSO_DIS_BIT 0x00 @@ -39,10 +41,12 @@ struct lsm6dso_config { stmdev_ctx_t ctx; union { -#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) +#if DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lsm6dso, i2c) || \ + DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lsm6dso32, i2c) const struct i2c_dt_spec i2c; #endif -#if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) +#if DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lsm6dso, spi) || \ + DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(st_lsm6dso32, spi) const struct spi_dt_spec spi; #endif } stmemsc_cfg; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dsv16x/lsm6dsv16x.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dsv16x/lsm6dsv16x.h index 76132f74..79daeb47 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dsv16x/lsm6dsv16x.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dsv16x/lsm6dsv16x.h @@ -35,6 +35,9 @@ /* Gyro sensor sensitivity grain is 4.375 udps/LSB */ #define GAIN_UNIT_G (4375LL) +int lsm6dsv16x_calc_accel_gain(uint8_t fs); +int lsm6dsv16x_calc_gyro_gain(uint8_t fs); + struct lsm6dsv16x_config { stmdev_ctx_t ctx; union { @@ -52,6 +55,12 @@ struct lsm6dsv16x_config { uint8_t gyro_odr; uint8_t gyro_range; uint8_t drdy_pulsed; +#ifdef CONFIG_LSM6DSV16X_STREAM + uint8_t fifo_wtm; + uint8_t accel_batch : 4; + uint8_t gyro_batch : 4; + uint8_t temp_batch : 2; +#endif #ifdef CONFIG_LSM6DSV16X_TRIGGER const struct gpio_dt_spec int1_gpio; const struct gpio_dt_spec int2_gpio; @@ -98,6 +107,21 @@ struct lsm6dsv16x_data { uint8_t gyro_freq; uint8_t gyro_fs; +#ifdef CONFIG_LSM6DSV16X_STREAM + struct rtio_iodev_sqe *streaming_sqe; + struct rtio *rtio_ctx; + struct rtio_iodev *iodev; + uint64_t fifo_timestamp; + uint8_t fifo_status[2]; + uint16_t fifo_count; + uint8_t fifo_irq; + uint8_t accel_batch_odr : 4; + uint8_t gyro_batch_odr : 4; + uint8_t temp_batch_odr : 2; + uint8_t bus_type : 1; /* I2C is 0, SPI is 1 */ + uint8_t reserved : 5; +#endif + #ifdef CONFIG_LSM6DSV16X_TRIGGER struct gpio_dt_spec *drdy_gpio; @@ -119,6 +143,19 @@ struct lsm6dsv16x_data { #endif /* CONFIG_LSM6DSV16X_TRIGGER */ }; +#ifdef CONFIG_LSM6DSV16X_STREAM +#define BUS_I2C 0 +#define BUS_SPI 1 + +static inline uint8_t lsm6dsv16x_bus_reg(struct lsm6dsv16x_data *data, uint8_t x) +{ + return (data->bus_type == BUS_SPI) ? x | 0x80 : x; +} + +#define LSM6DSV16X_FIFO_ITEM_LEN 7 +#define LSM6DSV16X_FIFO_SIZE(x) (x * LSM6DSV16X_FIFO_ITEM_LEN) +#endif + #if defined(CONFIG_LSM6DSV16X_SENSORHUB) int lsm6dsv16x_shub_init(const struct device *dev); int lsm6dsv16x_shub_fetch_external_devs(const struct device *dev); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dsv16x/lsm6dsv16x_decoder.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dsv16x/lsm6dsv16x_decoder.h new file mode 100644 index 00000000..1a02af51 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dsv16x/lsm6dsv16x_decoder.h @@ -0,0 +1,54 @@ +/* ST Microelectronics LSM6DSV16X 6-axis IMU sensor driver + * + * Copyright (c) 2023 Google LLC + * Copyright (c) 2024 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_SENSOR_LSM6DSV16X_DECODER_H_ +#define ZEPHYR_DRIVERS_SENSOR_LSM6DSV16X_DECODER_H_ + +#include +#include + +struct lsm6dsv16x_decoder_header { + uint64_t timestamp; + uint8_t is_fifo: 1; + uint8_t gyro_fs: 4; + uint8_t accel_fs: 2; + uint8_t reserved: 1; +} __attribute__((__packed__)); + +struct lsm6dsv16x_fifo_data { + struct lsm6dsv16x_decoder_header header; + uint8_t int_status; + uint16_t gyro_odr: 4; + uint16_t accel_odr: 4; + uint16_t fifo_count: 11; + uint16_t reserved_1: 5; + uint16_t gyro_batch_odr: 4; + uint16_t accel_batch_odr: 4; + uint16_t temp_batch_odr: 4; + uint16_t reserved_2: 4; +} __attribute__((__packed__)); + +struct lsm6dsv16x_rtio_data { + struct lsm6dsv16x_decoder_header header; + struct { + uint8_t has_accel: 1; /* set if accel channel has data */ + uint8_t has_gyro: 1; /* set if gyro channel has data */ + uint8_t has_temp: 1; /* set if temp channel has data */ + uint8_t reserved: 5; + } __attribute__((__packed__)); + int16_t acc[3]; + int16_t gyro[3]; + int16_t temp; +}; + +int lsm6dsv16x_encode(const struct device *dev, const struct sensor_chan_spec *const channels, + const size_t num_channels, uint8_t *buf); + +int lsm6dsv16x_get_decoder(const struct device *dev, const struct sensor_decoder_api **decoder); + +#endif /* ZEPHYR_DRIVERS_SENSOR_LSM6DSV16X_DECODER_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dsv16x/lsm6dsv16x_rtio.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dsv16x/lsm6dsv16x_rtio.h new file mode 100644 index 00000000..9aa838dd --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm6dsv16x/lsm6dsv16x_rtio.h @@ -0,0 +1,20 @@ +/* ST Microelectronics LSM6DSV16X 6-axis IMU sensor driver + * + * Copyright (c) 2023 Google LLC + * Copyright (c) 2024 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_SENSOR_LSM6DSV16X_RTIO_H_ +#define ZEPHYR_DRIVERS_SENSOR_LSM6DSV16X_RTIO_H_ + +#include +#include + +void lsm6dsv16x_submit(const struct device *sensor, struct rtio_iodev_sqe *iodev_sqe); + +void lsm6dsv16x_submit_stream(const struct device *sensor, struct rtio_iodev_sqe *iodev_sqe); +void lsm6dsv16x_stream_irq_handler(const struct device *dev); + +#endif /* ZEPHYR_DRIVERS_SENSOR_LSM6DSV16X_RTIO_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm9ds1/lsm9ds1.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm9ds1/lsm9ds1.h new file mode 100644 index 00000000..a0dde319 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/st/lsm9ds1/lsm9ds1.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2024 Bootlin + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_SENSOR_LSM9DS1_LSM9DS1_H_ +#define ZEPHYR_DRIVERS_SENSOR_LSM9DS1_LSM9DS1_H_ + +#include "lsm9ds1_reg.h" + +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) +#include +#endif /* DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) */ + +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) +#include +#endif /* DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) */ + +#define GAIN_UNIT_XL (61LL) +#define GAIN_UNIT_G (8750LL) + +#define TEMP_OFFSET 25 /* raw output of zero indicate 25°C */ +#define TEMP_SENSITIVITY 16 /* 16 LSB / °C */ + +#define GYRO_ODR_MASK 0x7 + +struct lsm9ds1_config { + stmdev_ctx_t ctx; + union { +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) + const struct i2c_dt_spec i2c; +#endif +#if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) + const struct spi_dt_spec spi; +#endif + } stmemsc_cfg; + uint8_t accel_range; + uint8_t gyro_range; + uint8_t imu_odr; +}; + +struct lsm9ds1_data { + int16_t acc[3]; + uint32_t acc_gain; + int16_t gyro[3]; + uint32_t gyro_gain; + + uint16_t accel_odr; + uint16_t gyro_odr; +#if defined(CONFIG_LSM9DS1_ENABLE_TEMP) + int16_t temp_sample; +#endif +}; + +#endif /* ZEPHYR_DRIVERS_SENSOR_LSM9DS1_LSM9DS1_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/tdk/icm42670/icm42670.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/tdk/icm42670/icm42670.h index e3ca851b..43adc3ef 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/tdk/icm42670/icm42670.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/tdk/icm42670/icm42670.h @@ -11,8 +11,45 @@ #include #include #include +#include #include +#define ICM42670_BUS_SPI DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(invensense_icm42670, spi) +#define ICM42670_BUS_I2C DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(invensense_icm42670, i2c) + +union icm42670_bus { +#if ICM42670_BUS_SPI + struct spi_dt_spec spi; +#endif +#if ICM42670_BUS_I2C + struct i2c_dt_spec i2c; +#endif +}; + +typedef int (*icm42670_bus_check_fn)(const union icm42670_bus *bus); +typedef int (*icm42670_reg_read_fn)(const union icm42670_bus *bus, + uint16_t reg, uint8_t *data, size_t size); +typedef int (*icm42670_reg_write_fn)(const union icm42670_bus *bus, + uint16_t reg, uint8_t data); + +typedef int (*icm42670_reg_update_fn)(const union icm42670_bus *bus, + uint16_t reg, uint8_t mask, uint8_t data); + +struct icm42670_bus_io { + icm42670_bus_check_fn check; + icm42670_reg_read_fn read; + icm42670_reg_write_fn write; + icm42670_reg_update_fn update; +}; + +#if ICM42670_BUS_SPI +extern const struct icm42670_bus_io icm42670_bus_io_spi; +#endif + +#if ICM42670_BUS_I2C +extern const struct icm42670_bus_io icm42670_bus_io_i2c; +#endif + struct icm42670_data { int16_t accel_x; int16_t accel_y; @@ -45,7 +82,8 @@ struct icm42670_data { }; struct icm42670_config { - struct spi_dt_spec spi; + union icm42670_bus bus; + const struct icm42670_bus_io *bus_io; struct gpio_dt_spec gpio_int; }; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/tdk/icm42688/icm42688.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/tdk/icm42688/icm42688.h index 95f0167e..410f0f98 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/tdk/icm42688/icm42688.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/tdk/icm42688/icm42688.h @@ -417,7 +417,7 @@ int icm42688_read_all(const struct device *dev, uint8_t data[14]); static inline void icm42688_accel_g(struct icm42688_cfg *cfg, int32_t in, int32_t *out_g, uint32_t *out_ug) { - int32_t sensitivity = 0; /* value equivalent for 1g */ + int32_t sensitivity; switch (cfg->accel_fs) { case ICM42688_DT_ACCEL_FS_2: @@ -432,6 +432,8 @@ static inline void icm42688_accel_g(struct icm42688_cfg *cfg, int32_t in, int32_ case ICM42688_DT_ACCEL_FS_16: sensitivity = 2048; break; + default: + CODE_UNREACHABLE; } /* Whole g's */ @@ -452,7 +454,7 @@ static inline void icm42688_accel_g(struct icm42688_cfg *cfg, int32_t in, int32_ static inline void icm42688_gyro_dps(const struct icm42688_cfg *cfg, int32_t in, int32_t *out_dps, uint32_t *out_udps) { - int64_t sensitivity = 0; /* value equivalent for 10x gyro reading deg/s */ + int64_t sensitivity; switch (cfg->gyro_fs) { case ICM42688_DT_GYRO_FS_2000: @@ -479,6 +481,8 @@ static inline void icm42688_gyro_dps(const struct icm42688_cfg *cfg, int32_t in, case ICM42688_DT_GYRO_FS_15_625: sensitivity = 20972; break; + default: + CODE_UNREACHABLE; } int32_t in10 = in * 10; @@ -502,7 +506,7 @@ static inline void icm42688_gyro_dps(const struct icm42688_cfg *cfg, int32_t in, static inline void icm42688_accel_ms(const struct icm42688_cfg *cfg, int32_t in, int32_t *out_ms, int32_t *out_ums) { - int64_t sensitivity = 0; /* value equivalent for 1g */ + int64_t sensitivity; switch (cfg->accel_fs) { case ICM42688_DT_ACCEL_FS_2: @@ -517,6 +521,8 @@ static inline void icm42688_accel_ms(const struct icm42688_cfg *cfg, int32_t in, case ICM42688_DT_ACCEL_FS_16: sensitivity = 2048; break; + default: + CODE_UNREACHABLE; } /* Convert to micrometers/s^2 */ @@ -540,7 +546,7 @@ static inline void icm42688_accel_ms(const struct icm42688_cfg *cfg, int32_t in, static inline void icm42688_gyro_rads(const struct icm42688_cfg *cfg, int32_t in, int32_t *out_rads, int32_t *out_urads) { - int64_t sensitivity = 0; /* value equivalent for 10x gyro reading deg/s */ + int64_t sensitivity; switch (cfg->gyro_fs) { case ICM42688_DT_GYRO_FS_2000: @@ -567,6 +573,8 @@ static inline void icm42688_gyro_rads(const struct icm42688_cfg *cfg, int32_t in case ICM42688_DT_GYRO_FS_15_625: sensitivity = 20972; break; + default: + CODE_UNREACHABLE; } int64_t in10_rads = (int64_t)in * SENSOR_PI * 10LL; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/ina23x/ina230.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/ina23x/ina230.h index 407c0dd3..1e01283f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/ina23x/ina230.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/ina23x/ina230.h @@ -23,14 +23,16 @@ #include #endif -#define INA230_REG_CONFIG 0x00 -#define INA230_REG_SHUNT_VOLT 0x01 -#define INA230_REG_BUS_VOLT 0x02 -#define INA230_REG_POWER 0x03 -#define INA230_REG_CURRENT 0x04 -#define INA230_REG_CALIB 0x05 -#define INA230_REG_MASK 0x06 -#define INA230_REG_ALERT 0x07 +#define INA230_REG_CONFIG 0x00 +#define INA230_REG_SHUNT_VOLT 0x01 +#define INA230_REG_BUS_VOLT 0x02 +#define INA230_REG_POWER 0x03 +#define INA230_REG_CURRENT 0x04 +#define INA230_REG_CALIB 0x05 +#define INA230_REG_MASK 0x06 +#define INA230_REG_ALERT 0x07 +#define INA236_REG_MANUFACTURER_ID 0x3E +#define INA236_REG_DEVICE_ID 0x3F struct ina230_data { const struct device *dev; @@ -43,7 +45,7 @@ struct ina230_data { struct k_work work; sensor_trigger_handler_t handler_alert; const struct sensor_trigger *trig_alert; -#endif /* CONFIG_INA230_TRIGGER */ +#endif /* CONFIG_INA230_TRIGGER */ }; struct ina230_config { @@ -51,17 +53,18 @@ struct ina230_config { uint16_t config; uint32_t current_lsb; uint16_t cal; + uint8_t power_scale; + uint32_t uv_lsb; #ifdef CONFIG_INA230_TRIGGER bool trig_enabled; uint16_t mask; const struct gpio_dt_spec alert_gpio; uint16_t alert_limit; -#endif /* CONFIG_INA230_TRIGGER */ +#endif /* CONFIG_INA230_TRIGGER */ }; int ina230_trigger_mode_init(const struct device *dev); -int ina230_trigger_set(const struct device *dev, - const struct sensor_trigger *trig, +int ina230_trigger_set(const struct device *dev, const struct sensor_trigger *trig, sensor_trigger_handler_t handler); #endif /* ZEPHYR_DRIVERS_SENSOR_INA23X_INA230_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/tmag5273/tmag5273.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/tmag5273/tmag5273.h index cf878a7a..76cc84a9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/tmag5273/tmag5273.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/tmag5273/tmag5273.h @@ -195,10 +195,13 @@ /* Register DEVICE_ID */ #define TMAG5273_VER_POS 0 -#define TMAG5273_VER_MSK GENMASK(1, 0) +#define TMAG3001_VER_POS 2 +#define TMAG5273_VER_MSK GENMASK(3, 0) #define TMAG5273_VER_TMAG5273X1 (1 << TMAG5273_VER_POS) #define TMAG5273_VER_TMAG5273X2 (2 << TMAG5273_VER_POS) +#define TMAG5273_VER_TMAG3001X1 (0 << TMAG3001_VER_POS) +#define TMAG5273_VER_TMAG3001X2 (2 << TMAG3001_VER_POS) /* Register CONV_STATUS */ #define TMAG5273_SET_COUNT_POS 5 @@ -242,6 +245,10 @@ #define TMAG5273_MEAS_RANGE_HIGH_MT_VER1 80 #define TMAG5273_MEAS_RANGE_LOW_MT_VER2 133 #define TMAG5273_MEAS_RANGE_HIGH_MT_VER2 266 +#define TMAG3001_MEAS_RANGE_LOW_MT_VER1 40 +#define TMAG3001_MEAS_RANGE_HIGH_MT_VER1 80 +#define TMAG3001_MEAS_RANGE_LOW_MT_VER2 120 +#define TMAG3001_MEAS_RANGE_HIGH_MT_VER2 240 #define TMAG5273_TEMPERATURE_T_SENS_T0 25 #define TMAG5273_TEMPERATURE_T_ADC_T0 17508 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/tmp1075/tmp1075.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/tmp1075/tmp1075.h new file mode 100644 index 00000000..930df939 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/tmp1075/tmp1075.h @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2024 Arrow Electronics. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_SENSOR_TMP1075_TMP1075_H_ +#define ZEPHYR_DRIVERS_SENSOR_TMP1075_TMP1075_H_ + +#include +#include +#include +#include + +/* Extended resolution is not supported on TMP1075 */ +#define TMP1075_DATA_NORMAL_SHIFT 4 +#define uCELSIUS_IN_CELSIUS 1000000 + +#define TMP1075_REG_TEMPERATURE 0x00 +#define TMP1075_REG_CONFIG 0x01 +#define TMP1075_REG_TLOW 0x02 +#define TMP1075_REG_THIGH 0x03 + +/* Scale in micro degrees Celsius -> 0.0625°C per ADC bit resolution */ +#define TMP1075_TEMP_SCALE 62500 + +/* Macro to set or clear the TMP1075_OS (One-shot conversion mode) bit based on a boolean value */ +#define TMP1075_SET_ONE_SHOT_CONVERSION(reg, enable) \ + ((reg) = ((reg) & ~(1 << 15)) | ((enable) << 15)) + +/* Macro to set the TMP1075_R (Conversion rate) bits */ +#define TMP1075_SET_CONVERSION_RATE(reg, rate) ((reg) |= ((rate) << 13)) + +/* Macro to set the TMP1075_F (Consecutive fault measurements) bits */ +#define TMP1075_SET_CONSECUTIVE_FAULT_MEASUREMENTS(reg, faults) ((reg) |= ((faults) << 11)) + +/* Macro to set or clear the TMP1075_POL (Polarity of output pin) bit based on a boolean value */ +#define TMP1075_SET_ALERT_PIN_POLARITY(reg, activeHigh) \ + ((reg) = ((reg) & ~(1 << 10)) | ((activeHigh) << 10)) + +/* Macro to set or clear the TMP1075_TM (ALERT pin function) bit based on a boolean value */ +#define TMP1075_SET_ALERT_PIN_FUNCTION(reg, interruptMode) \ + ((reg) = ((reg) & ~(1 << 9)) | ((interruptMode) << 9)) + +/* Macro to set or clear the TMP1075_SD (Shutdown mode) bit based on a boolean value */ +#define TMP1075_SET_SHUTDOWN_MODE(reg, shutdown) ((reg) = ((reg) & ~(1 << 8)) | ((shutdown) << 8)) + +struct tmp1075_data { + const struct device *tmp1075_dev; + int16_t sample; + uint16_t config_reg; + const struct sensor_trigger *temp_alert_trigger; + sensor_trigger_handler_t temp_alert_handler; + struct gpio_callback temp_alert_gpio_cb; + bool over_threshold; +}; + +struct tmp1075_config { + const struct i2c_dt_spec bus; + const struct gpio_dt_spec alert_gpio; + uint8_t cr; + uint8_t cf; + bool alert_pol: 1; + bool one_shot: 1; + bool interrupt_mode: 1; + bool shutdown_mode: 1; +}; + +int tmp1075_trigger_set(const struct device *dev, const struct sensor_trigger *trig, + sensor_trigger_handler_t handler); + +void tmp1075_trigger_handle_alert(const struct device *port, struct gpio_callback *cb, + gpio_port_pins_t pins); + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/tmp116/tmp116.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/tmp116/tmp116.h index 97263af5..6211d9a7 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/tmp116/tmp116.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/ti/tmp116/tmp116.h @@ -7,6 +7,8 @@ #ifndef ZEPHYR_DRIVERS_SENSOR_TMP116_TMP116_H_ #define ZEPHYR_DRIVERS_SENSOR_TMP116_TMP116_H_ +#include + #define TMP116_REG_TEMP 0x0 #define TMP116_REG_CFGR 0x1 #define TMP116_REG_HIGH_LIM 0x2 @@ -25,10 +27,21 @@ #define TMP116_DEVICE_ID 0x1116 #define TMP117_DEVICE_ID 0x0117 +#define TMP116_CFGR_AVG (BIT(5) | BIT(6)) +#define TMP116_CFGR_CONV (BIT(7) | BIT(8) | BIT(9)) +#define TMP116_CFGR_MODE (BIT(10) | BIT(11)) #define TMP116_CFGR_DATA_READY BIT(13) #define TMP116_EEPROM_UL_UNLOCK BIT(15) #define TMP116_EEPROM_UL_BUSY BIT(14) +#define TMP116_AVG_1_SAMPLE 0 +#define TMP116_AVG_8_SAMPLES BIT(5) +#define TMP116_AVG_32_SAMPLES BIT(6) +#define TMP116_AVG_64_SAMPLES (BIT(5) | BIT(6)) +#define TMP116_MODE_CONTINUOUS 0 +#define TMP116_MODE_SHUTDOWN BIT(10) +#define TMP116_MODE_ONE_SHOT (BIT(10) | BIT(11)) + struct tmp116_data { uint16_t sample; uint16_t id; @@ -36,6 +49,7 @@ struct tmp116_data { struct tmp116_dev_config { struct i2c_dt_spec bus; + uint16_t odr; }; #endif /* ZEPHYR_DRIVERS_SENSOR_TMP116_TMP116_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/vishay/vcnl36825t/vcnl36825t.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/vishay/vcnl36825t/vcnl36825t.h index e157b14c..beb8a0a9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/vishay/vcnl36825t/vcnl36825t.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/vishay/vcnl36825t/vcnl36825t.h @@ -56,7 +56,10 @@ #define VCNL36825T_PS_MPS_POS 12 #define VCNL36825T_PS_IT_POS 14 -#define VCNL36825T_PS_ST_MSK GENMASK(0, 0) +#define VCNL36825T_PS_ST_MSK GENMASK(0, 0) +#define VCNL36825T_PS_SMART_PERS_MSK GENMASK(1, 1) +#define VCNL36825T_PS_INT_MSK GENMASK(3, 2) +#define VCNL36825T_PS_PERS_MSK GENMASK(5, 4) #define VCNL36825T_PS_ST_START (0 << VCNL36825T_PS_ST_POS) #define VCNL36825T_PS_ST_STOP (1 << VCNL36825T_PS_ST_POS) @@ -65,9 +68,9 @@ #define VCNL36825T_PS_SMART_PERS_ENABLED (1 << VCNL36825T_PS_PS_SMART_PERS_POS) #define VCNL36825T_PS_INT_DISABLE (0 << VCNL36825T_PS_INT_POS) -#define VCNL36825T_PS_INT_THDH_PERS_LATCHED (1 << VCNL36825T_PS_INT_POS) -#define VCNL36825T_PS_INT_THDH_FIRST_LATCHED (2 << VCNL36825T_PS_INT_POS) -#define VCNL36825T_PS_INT_ENABLED (3 << VCNL36825T_PS_INT_POS) +#define VCNL36825T_PS_INT_MODE_LOGIC_HIGH_LOW (1 << VCNL36825T_PS_INT_POS) +#define VCNL36825T_PS_INT_MODE_FIRST_HIGH (2 << VCNL36825T_PS_INT_POS) +#define VCNL36825T_PS_INT_MODE_NORMAL (3 << VCNL36825T_PS_INT_POS) #define VCNL36825T_PS_PERS_1 (0 << VCNL36825T_PS_PERS_POS) #define VCNL36825T_PS_PERS_2 (1 << VCNL36825T_PS_PERS_POS) @@ -105,6 +108,7 @@ #define VCNL36825T_PS_SC_POS 13 #define VCNL36825T_PS_TRIG_MSK GENMASK(5, 5) +#define VCNL36825T_PS_AF_MSK GENMASK(6, 6) #define VCNL36825T_PS_SP_INT_DISABLED (0 << VCNL36825T_PS_SP_INT_POS) #define VCNL36825T_PS_SP_INT_ENABLED (1 << VCNL36825T_PS_SP_INT_POS) @@ -140,6 +144,8 @@ #define VCNL36825T_PS_LPEN_POS 8 #define VCNL36825T_PS_LPPER_POS 9 +#define VCNL36825T_PS_LPEN_MSK GENMASK(8, 8) + #define VCNL36825T_PS_AC_INT_DISABLED (0 << VCNL36825T_PS_AC_INT_POS) #define VCNL36825T_PS_AC_INT_ENABLED (1 << VCNL36825T_PS_AC_INT_POS) @@ -206,21 +212,36 @@ #define VCNL36825T_AC_SUN_MSK GENMASK(14, 14) #define VCNL36825T_AC_BUSY_MSK GENMASK(15, 15) -/* --- */ - #define VCNL36825T_PS_PERIOD_VALUE_MAX_MS 80 #define VCNL36825T_PS_LPPER_VALUE_MIN_MS 40 +/* see application note "Designing the VCNL36825T Into an Application": power up takes 2500 us */ +#define VCNL36825T_POWER_UP_US 2500 + #define VCNL36825T_FORCED_FACTOR_TIME_TO_TRIGGER 0.5 #define VCNL36825T_FORCED_FACTOR_DC_KILL_AMBIENT 3 #define VCNL36825T_FORCED_FACTOR_MEASUREMENT 1 #define VCNL36825T_FORCED_FACTOR_SHUTDOWN 1 -#define VCNL36825T_FORCED_FACTOR_SCALE 10 +#define VCNL36825T_FORCED_FACTOR_SCALE 10 + +/* necessary time to wait before data of a "forced" measurement is available */ #define VCNL36825T_FORCED_FACTOR_SUM \ ((VCNL36825T_FORCED_FACTOR_TIME_TO_TRIGGER + VCNL36825T_FORCED_FACTOR_DC_KILL_AMBIENT + \ VCNL36825T_FORCED_FACTOR_MEASUREMENT + VCNL36825T_FORCED_FACTOR_SHUTDOWN) * \ VCNL36825T_FORCED_FACTOR_SCALE) +#ifdef CONFIG_PM_DEVICE + +#define VCNL36825T_FORCED_WAKEUP_DELAY_MAX_US 1000 +#define VCNL36825T_FORCED_FACTOR_WAKEUP_DELAY 10 + +/* necessary wait time before data for a "forced" measurement is available AFTER the device slept */ +#define VCNL36825T_FORCED_FACTOR_WAKEUP_SUM \ + (VCNL36825T_FORCED_FACTOR_SUM + \ + (VCNL36825T_FORCED_FACTOR_WAKEUP_DELAY * VCNL36825T_FORCED_FACTOR_SCALE)) + +#endif + enum vcnl36825t_operation_mode { VCNL36825T_OPERATION_MODE_AUTO, VCNL36825T_OPERATION_MODE_FORCE, @@ -263,6 +284,12 @@ enum vcnl38625t_laser_current { VCNL36825T_LASER_CURRENT_20MS, }; +enum vcnl36825t_int_mode { + VCNL36825T_INT_MODE_NORMAL, + VCNL36825T_INT_MODE_FIRST_HIGH, + VCNL36825T_INT_MODE_LOGIC_HIGH_LOW, +}; + struct vcnl36825t_config { struct i2c_dt_spec i2c; @@ -279,12 +306,60 @@ struct vcnl36825t_config { enum vcnl38625t_laser_current laser_current; bool high_dynamic_output; bool sunlight_cancellation; + +#if CONFIG_VCNL36825T_TRIGGER + struct gpio_dt_spec int_gpio; + enum vcnl36825t_int_mode int_mode; + uint8_t int_proximity_count; + bool int_smart_persistence; +#endif }; struct vcnl36825t_data { uint16_t proximity; - int meas_timeout_us; /** wait time for finished measurement for "forced" operation mode */ + unsigned int meas_timeout_us; /** wait time for finished measurement in "forced"-mode */ + +#ifdef CONFIG_PM_DEVICE + unsigned int meas_timeout_running_us; + unsigned int meas_timeout_wakeup_us; +#endif + +#if CONFIG_VCNL36825T_TRIGGER + const struct device *dev; + const struct gpio_dt_spec *int_gpio; + + const struct sensor_trigger *int_trigger; + sensor_trigger_handler_t int_handler; + + struct gpio_callback int_gpio_handler; + +#if CONFIG_VCNL36825T_TRIGGER_OWN_THREAD + K_KERNEL_STACK_MEMBER(int_thread_stack, CONFIG_VCNL36825T_THREAD_STACK_SIZE); + struct k_thread int_thread; + struct k_sem int_gpio_sem; +#elif CONFIG_VCNL36825T_TRIGGER_GLOBAL_THREAD + struct k_work int_work; +#endif +#endif }; +int vcnl36825t_read(const struct i2c_dt_spec *spec, uint8_t reg_addr, uint16_t *value); + +int vcnl36825t_write(const struct i2c_dt_spec *spec, uint8_t reg_addr, uint16_t value); + +int vcnl36825t_update(const struct i2c_dt_spec *spec, uint8_t reg_addr, uint16_t mask, + uint16_t value); + +#if CONFIG_VCNL36825T_TRIGGER +int vcnl36825t_trigger_init(const struct device *dev); + +int vcnl36825t_trigger_set(const struct device *dev, const struct sensor_trigger *trig, + sensor_trigger_handler_t handler); + +int vcnl36825t_trigger_attr_set(const struct device *dev, enum sensor_channel chan, + enum sensor_attribute attr, const struct sensor_value *val); + +#endif + #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/wsen/wsen_hids_2525020210002/wsen_hids_2525020210002.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/wsen/wsen_hids_2525020210002/wsen_hids_2525020210002.h new file mode 100644 index 00000000..64fba2d4 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/sensor/wsen/wsen_hids_2525020210002/wsen_hids_2525020210002.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2024 Würth Elektronik eiSos GmbH & Co. KG + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_SENSOR_WSEN_HIDS_2525020210002_WSEN_HIDS_2525020210002_H_ +#define ZEPHYR_DRIVERS_SENSOR_WSEN_HIDS_2525020210002_WSEN_HIDS_2525020210002_H_ + +#include +#include + +#include + +#include "WSEN_HIDS_2525020210002_hal.h" + +#include +#include + +struct hids_2525020210002_data { + /* WE sensor interface configuration */ + WE_sensorInterface_t sensor_interface; + + /* Last humidity sample */ + int32_t humidity; + + /* Last temperature sample */ + int32_t temperature; + + hids_2525020210002_precision_t sensor_precision; + + hids_2525020210002_heater_t sensor_heater; +}; + +struct hids_2525020210002_config { + union { + const struct i2c_dt_spec i2c; + } bus_cfg; + + const hids_2525020210002_precision_t precision; + + const hids_2525020210002_heater_t heater; +}; + +#endif /* ZEPHYR_DRIVERS_SENSOR_WSEN_HIDS_2525020210002_WSEN_HIDS_2525020210002_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/serial/uart_lpc11u6x.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/serial/uart_lpc11u6x.h index 8951945e..257846cb 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/serial/uart_lpc11u6x.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/serial/uart_lpc11u6x.h @@ -199,20 +199,20 @@ struct lpc11u6x_uartx_shared_irq { }; #if CONFIG_UART_INTERRUPT_DRIVEN && \ - (DT_NODE_HAS_STATUS(DT_NODELABEL(uart1), okay) || \ - DT_NODE_HAS_STATUS(DT_NODELABEL(uart4), okay)) + (DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(uart1)) || \ + DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(uart4))) static void lpc11u6x_uartx_isr_config_1(const struct device *dev); #endif /* CONFIG_UART_INTERRUPT_DRIVEN && - * (DT_NODE_HAS_STATUS(DT_NODELABEL(uart2), okay) || - * DT_NODE_HAS_STATUS(DT_NODELABEL(uart3), okay)) + * (DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(uart2)) || + * DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(uart3))) */ #if CONFIG_UART_INTERRUPT_DRIVEN && \ - (DT_NODE_HAS_STATUS(DT_NODELABEL(uart2), okay) || \ - DT_NODE_HAS_STATUS(DT_NODELABEL(uart3), okay)) + (DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(uart2)) || \ + DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(uart3))) static void lpc11u6x_uartx_isr_config_2(const struct device *dev); #endif /* CONFIG_UART_INTERRUPT_DRIVEN && - * (DT_NODE_HAS_STATUS(DT_NODELABEL(uart2), okay) || - * DT_NODE_HAS_STATUS(DT_NODELABEL(uart3), okay)) + * (DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(uart2)) || + * DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(uart3))) */ #endif /* ZEPHYR_DRIVERS_SERIAL_UART_LPC11U6X_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/serial/uart_pl011_ambiq.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/serial/uart_pl011_ambiq.h index 62d6d929..5efb0e5e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/serial/uart_pl011_ambiq.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/serial/uart_pl011_ambiq.h @@ -9,8 +9,11 @@ #include #include +#include +#include #include "uart_pl011_registers.h" +#include #define PWRCTRL_MAX_WAIT_US 5 @@ -50,6 +53,113 @@ static inline int clk_enable_ambiq_uart(const struct device *dev, uint32_t clk) return pl011_ambiq_clk_set(dev, clk); } +#ifdef CONFIG_PM_DEVICE + +/* Register status record. + * The register status will be preserved to this variable before entering sleep mode, + * and they will be restored after wake up. + */ +typedef struct { + bool bValid; + uint32_t regILPR; + uint32_t regIBRD; + uint32_t regFBRD; + uint32_t regLCRH; + uint32_t regCR; + uint32_t regIFLS; + uint32_t regIER; +} uart_register_state_t; +static uart_register_state_t sRegState[AM_REG_UART_NUM_MODULES]; + +static int uart_ambiq_pm_action(const struct device *dev, enum pm_device_action action) +{ + int key; + + /*Uart module number*/ + uint32_t ui32Module = ((uint32_t)get_uart(dev) == UART0_BASE) ? 0 : 1; + + /*Uart Power module*/ + am_hal_pwrctrl_periph_e eUARTPowerModule = + ((am_hal_pwrctrl_periph_e)(AM_HAL_PWRCTRL_PERIPH_UART0 + ui32Module)); + + /*Uart register status*/ + uart_register_state_t *pRegisterStatus = &sRegState[ui32Module]; + + /* Decode the requested power state and update UART operation accordingly.*/ + switch (action) { + + /* Turn on the UART. */ + case PM_DEVICE_ACTION_RESUME: + + /* Make sure we don't try to restore an invalid state.*/ + if (!pRegisterStatus->bValid) { + return -EPERM; + } + + /*The resume and suspend actions may be executed back-to-back, + * so we add a busy wait here for stabilization. + */ + k_busy_wait(100); + + /* Enable power control.*/ + am_hal_pwrctrl_periph_enable(eUARTPowerModule); + + /* Restore UART registers*/ + key = irq_lock(); + + UARTn(ui32Module)->ILPR = pRegisterStatus->regILPR; + UARTn(ui32Module)->IBRD = pRegisterStatus->regIBRD; + UARTn(ui32Module)->FBRD = pRegisterStatus->regFBRD; + UARTn(ui32Module)->LCRH = pRegisterStatus->regLCRH; + UARTn(ui32Module)->CR = pRegisterStatus->regCR; + UARTn(ui32Module)->IFLS = pRegisterStatus->regIFLS; + UARTn(ui32Module)->IER = pRegisterStatus->regIER; + pRegisterStatus->bValid = false; + + irq_unlock(key); + + return 0; + case PM_DEVICE_ACTION_SUSPEND: + + while ((get_uart(dev)->fr & PL011_FR_BUSY) != 0) + ; + + /* Preserve UART registers*/ + key = irq_lock(); + + pRegisterStatus->regILPR = UARTn(ui32Module)->ILPR; + pRegisterStatus->regIBRD = UARTn(ui32Module)->IBRD; + pRegisterStatus->regFBRD = UARTn(ui32Module)->FBRD; + pRegisterStatus->regLCRH = UARTn(ui32Module)->LCRH; + pRegisterStatus->regCR = UARTn(ui32Module)->CR; + pRegisterStatus->regIFLS = UARTn(ui32Module)->IFLS; + pRegisterStatus->regIER = UARTn(ui32Module)->IER; + pRegisterStatus->bValid = true; + + irq_unlock(key); + + /* Clear all interrupts before sleeping as having a pending UART + * interrupt burns power. + */ + UARTn(ui32Module)->IEC = 0xFFFFFFFF; + + /* If the user is going to sleep, certain bits of the CR register + * need to be 0 to be low power and have the UART shut off. + * Since the user either wishes to retain state which takes place + * above or the user does not wish to retain state, it is acceptable + * to set the entire CR register to 0. + */ + UARTn(ui32Module)->CR = 0; + + /* Disable power control.*/ + am_hal_pwrctrl_periph_disable(eUARTPowerModule); + return 0; + default: + return -ENOTSUP; + } +} +#endif /* CONFIG_PM_DEVICE */ + /* Problem: writes to power configure register takes some time to take effective. * Solution: Check device's power status to ensure that register has taken effective. * Note: busy wait is not allowed to use here due to UART is initiated before timer starts. @@ -57,7 +167,8 @@ static inline int clk_enable_ambiq_uart(const struct device *dev, uint32_t clk) #if defined(CONFIG_SOC_SERIES_APOLLO3X) #define DEVPWRSTATUS_OFFSET 0x10 #define HCPA_MASK 0x4 -#define AMBIQ_UART_DEFINE(n) \ +#define AMBIQ_UART_DEFINE(n) \ + PM_DEVICE_DT_INST_DEFINE(n, uart_ambiq_pm_action); \ static int pwr_on_ambiq_uart_##n(void) \ { \ uint32_t addr = DT_REG_ADDR(DT_INST_PHANDLE(n, ambiq_pwrcfg)) + \ @@ -75,6 +186,7 @@ static inline int clk_enable_ambiq_uart(const struct device *dev, uint32_t clk) #else #define DEVPWRSTATUS_OFFSET 0x4 #define AMBIQ_UART_DEFINE(n) \ + PM_DEVICE_DT_INST_DEFINE(n, uart_ambiq_pm_action); \ static int pwr_on_ambiq_uart_##n(void) \ { \ uint32_t addr = DT_REG_ADDR(DT_INST_PHANDLE(n, ambiq_pwrcfg)) + \ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/serial/uart_pl011_registers.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/serial/uart_pl011_registers.h index 7340dd90..6f559d00 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/serial/uart_pl011_registers.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/serial/uart_pl011_registers.h @@ -37,9 +37,9 @@ struct pl011_regs { }; static inline -volatile struct pl011_regs *const get_uart(const struct device *dev) +volatile struct pl011_regs *get_uart(const struct device *dev) { - return (volatile struct pl011_regs *const)DEVICE_MMIO_GET(dev); + return (volatile struct pl011_regs *)DEVICE_MMIO_GET(dev); } #define PL011_BIT_MASK(x, y) (((2 << x) - 1) << y) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_andes_atcspi200.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_andes_atcspi200.h index e498105f..2790a466 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_andes_atcspi200.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_andes_atcspi200.h @@ -10,6 +10,7 @@ LOG_MODULE_REGISTER(spi_atcspi200); #include "spi_context.h" #include #include +#include #ifdef CONFIG_ANDES_SPI_DMA_MODE #include diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_context.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_context.h index 1aed4117..b7ade2c3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_context.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_context.h @@ -30,6 +30,10 @@ struct spi_context { const struct spi_config *owner; const struct gpio_dt_spec *cs_gpios; size_t num_cs_gpios; + + /* how to test if the config changed? */ + uint32_t config_frequency; + spi_operation_t config_operation; struct k_sem lock; struct k_sem sync; @@ -78,7 +82,7 @@ struct spi_context { static inline bool spi_context_configured(struct spi_context *ctx, const struct spi_config *config) { - return !!(ctx->config == config); + return !!((ctx->config == config) && (ctx->config_frequency == config->frequency) && (ctx->config_operation == config->operation)); } static inline bool spi_context_is_slave(struct spi_context *ctx) @@ -321,6 +325,10 @@ void spi_context_buffers_setup(struct spi_context *ctx, (void *)ctx->rx_buf, ctx->rx_len); } +/* + * Note: dfs is the number of bytes needed to store a data frame, + * while len is the number of data frames sent. + */ static ALWAYS_INLINE void spi_context_update_tx(struct spi_context *ctx, uint8_t dfs, uint32_t len) { @@ -361,6 +369,10 @@ bool spi_context_tx_buf_on(struct spi_context *ctx) return !!(ctx->tx_buf && ctx->tx_len); } +/* + * Note: dfs is the number of bytes needed to store a data frame, + * while len is the number of data frames received. + */ static ALWAYS_INLINE void spi_context_update_rx(struct spi_context *ctx, uint8_t dfs, uint32_t len) { diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_esp32_spim.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_esp32_spim.h index 03da08f6..414e31bb 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_esp32_spim.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_esp32_spim.h @@ -30,6 +30,8 @@ struct spi_esp32_config { int duty_cycle; int input_delay_ns; int irq_source; + int irq_priority; + int irq_flags; const struct pinctrl_dev_config *pcfg; clock_control_subsys_t clock_subsys; bool use_iomux; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_litex_common.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_litex_common.h new file mode 100644 index 00000000..14a52b0a --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_litex_common.h @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2024 Vogl Electronic GmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include +#include +#include +#include + +#include "spi_context.h" +#include + +static inline uint8_t get_dfs_value(const struct spi_config *config) +{ + switch (SPI_WORD_SIZE_GET(config->operation)) { + case 8: + return 1; + case 16: + return 2; + case 24: + return 3; + case 32: + return 4; + default: + return 1; + } +} + +static inline void litex_spi_tx_put(uint8_t len, uint32_t *txd, const uint8_t *tx_buf) +{ + switch (len) { + case 4: + *txd = sys_get_be32(tx_buf); + break; + case 3: + *txd = sys_get_be24(tx_buf); + break; + case 2: + *txd = sys_get_be16(tx_buf); + break; + default: + *txd = *tx_buf; + break; + } +} + +static inline void litex_spi_rx_put(uint8_t len, uint32_t *rxd, uint8_t *rx_buf) +{ + switch (len) { + case 4: + sys_put_be32(*rxd, rx_buf); + break; + case 3: + sys_put_be24(*rxd, rx_buf); + break; + case 2: + sys_put_be16(*rxd, rx_buf); + break; + default: + *rx_buf = *rxd; + break; + } +} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_ll_stm32.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_ll_stm32.h index d0f6ac46..f37f0b46 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_ll_stm32.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_ll_stm32.h @@ -218,27 +218,18 @@ static inline void ll_func_set_fifo_threshold_16bit(SPI_TypeDef *spi) static inline void ll_func_disable_spi(SPI_TypeDef *spi) { -#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32h7_spi) - if (LL_SPI_IsActiveMasterTransfer(spi)) { - LL_SPI_SuspendMasterTransfer(spi); - while (LL_SPI_IsActiveMasterTransfer(spi)) { - /* NOP */ - } +#if DT_HAS_COMPAT_STATUS_OKAY(st_stm32_spi_fifo) + /* Flush RX buffer */ + while (ll_func_rx_is_not_empty(spi)) { + (void) LL_SPI_ReceiveData8(spi); } +#endif /* DT_HAS_COMPAT_STATUS_OKAY(st_stm32_spi_fifo) */ LL_SPI_Disable(spi); + while (LL_SPI_IsEnabled(spi)) { /* NOP */ } - - /* Flush RX buffer */ - while (LL_SPI_IsActiveFlag_RXP(spi)) { - (void)LL_SPI_ReceiveData8(spi); - } - LL_SPI_ClearFlag_SUSP(spi); -#else - LL_SPI_Disable(spi); -#endif /* st_stm32h7_spi */ } #endif /* ZEPHYR_DRIVERS_SPI_SPI_LL_STM32_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_nxp_s32.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_nxp_s32.h index 68f0943b..4f6fe6a9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_nxp_s32.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_nxp_s32.h @@ -7,6 +7,7 @@ #define ZEPHYR_DRIVERS_SPI_SPI_NXP_S32_H_ #include +#include #include #define LOG_LEVEL CONFIG_SPI_LOG_LEVEL diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_sifive.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_sifive.h index 6cb63137..255f76c9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_sifive.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/spi/spi_sifive.h @@ -12,6 +12,7 @@ #include #include #include +#include #include #define SPI_CFG(dev) ((struct spi_sifive_cfg *) ((dev)->config)) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/adi_tmc/adi_tmc5xxx_common.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/adi_tmc/adi_tmc5xxx_common.h new file mode 100644 index 00000000..7eafe623 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/adi_tmc/adi_tmc5xxx_common.h @@ -0,0 +1,51 @@ +/** + * @file drivers/stepper/adi_tmc/adi_tmc5xxx_common.h + * + * @brief Common TMC5xxx stepper controller driver definitions + */ + +/** + * SPDX-FileCopyrightText: Copyright (c) 2024 Jilay Sandeep Pandya + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_STEPPER_ADI_TMC_ADI_TMC5XXX_COMMON_H_ +#define ZEPHYR_DRIVERS_STEPPER_ADI_TMC_ADI_TMC5XXX_COMMON_H_ + +#include "adi_tmc_reg.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @name TMC5xxx module functions + * @anchor TMC5XXX_FUNCTIONS + * + * @{ + */ + +/** + * @brief Calculate the velocity in full clock cycles from the velocity in Hz + * + * @param velocity_hz Velocity in Hz + * @param clock_frequency Clock frequency in Hz + * + * @return Calculated velocity in full clock cycles + */ +static inline uint32_t tmc5xxx_calculate_velocity_from_hz_to_fclk(uint64_t velocity_hz, + uint32_t clock_frequency) +{ + __ASSERT_NO_MSG(clock_frequency); + return (velocity_hz << TMC5XXX_CLOCK_FREQ_SHIFT) / clock_frequency; +} + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_DRIVERS_STEPPER_ADI_TMC_ADI_TMC5XXX_COMMON_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/adi_tmc/adi_tmc_reg.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/adi_tmc/adi_tmc_reg.h new file mode 100644 index 00000000..eff9f86c --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/adi_tmc/adi_tmc_reg.h @@ -0,0 +1,151 @@ +/** + * @file drivers/stepper/adi/tmc_reg.h + * + * @brief TMC Registers + * + */ + +/* + * SPDX-FileCopyrightText: Copyright (c) 2024 Carl Zeiss Meditec AG + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_STEPPER_ADI_TMC_REG_H_ +#define ZEPHYR_DRIVERS_STEPPER_ADI_TMC_REG_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** Common Registers for TMC5041 and TMC51XX */ +#if defined(CONFIG_STEPPER_ADI_TMC5041) + +#define TMC5XXX_WRITE_BIT 0x80U +#define TMC5XXX_ADDRESS_MASK 0x7FU + + #define TMC5XXX_CLOCK_FREQ_SHIFT 24 + +#define TMC5XXX_GCONF 0x00 +#define TMC5XXX_GSTAT 0x01 + +#define TMC5XXX_RAMPMODE_POSITIONING_MODE 0 +#define TMC5XXX_RAMPMODE_POSITIVE_VELOCITY_MODE 1 +#define TMC5XXX_RAMPMODE_NEGATIVE_VELOCITY_MODE 2 +#define TMC5XXX_RAMPMODE_HOLD_MODE 3 + +#define TMC5XXX_SG_MIN_VALUE -64 +#define TMC5XXX_SG_MAX_VALUE 63 +#define TMC5XXX_SW_MODE_SG_STOP_ENABLE BIT(10) + +#define TMC5XXX_COOLCONF_SG2_THRESHOLD_VALUE_SHIFT 16 + +#define TMC5XXX_IHOLD_MASK GENMASK(4, 0) +#define TMC5XXX_IHOLD_SHIFT 0 +#define TMC5XXX_IHOLD(n) (((n) << TMC5XXX_IHOLD_SHIFT) & TMC5XXX_IHOLD_MASK) + +#define TMC5XXX_IRUN_MASK GENMASK(12, 8) +#define TMC5XXX_IRUN_SHIFT 8 +#define TMC5XXX_IRUN(n) (((n) << TMC5XXX_IRUN_SHIFT) & TMC5XXX_IRUN_MASK) + +#define TMC5XXX_IHOLDDELAY_MASK GENMASK(19, 16) +#define TMC5XXX_IHOLDDELAY_SHIFT 16 +#define TMC5XXX_IHOLDDELAY(n) (((n) << TMC5XXX_IHOLDDELAY_SHIFT) & TMC5XXX_IHOLDDELAY_MASK) + +#define TMC5XXX_CHOPCONF_DRV_ENABLE_MASK GENMASK(3, 0) +#define TMC5XXX_CHOPCONF_MRES_MASK GENMASK(27, 24) +#define TMC5XXX_CHOPCONF_MRES_SHIFT 24 + +#define TMC5XXX_RAMPSTAT_INT_MASK GENMASK(7, 4) +#define TMC5XXX_RAMPSTAT_INT_SHIFT 4 + +#define TMC5XXX_RAMPSTAT_POS_REACHED_EVENT_MASK BIT(7) +#define TMC5XXX_POS_REACHED_EVENT \ + (TMC5XXX_RAMPSTAT_POS_REACHED_EVENT_MASK >> TMC5XXX_RAMPSTAT_INT_SHIFT) + +#define TMC5XXX_RAMPSTAT_STOP_SG_EVENT_MASK BIT(6) +#define TMC5XXX_STOP_SG_EVENT \ + (TMC5XXX_RAMPSTAT_STOP_SG_EVENT_MASK >> TMC5XXX_RAMPSTAT_INT_SHIFT) + +#define TMC5XXX_RAMPSTAT_STOP_RIGHT_EVENT_MASK BIT(5) +#define TMC5XXX_STOP_RIGHT_EVENT \ + (TMC5XXX_RAMPSTAT_STOP_RIGHT_EVENT_MASK >> TMC5XXX_RAMPSTAT_INT_SHIFT) + +#define TMC5XXX_RAMPSTAT_STOP_LEFT_EVENT_MASK BIT(4) +#define TMC5XXX_STOP_LEFT_EVENT \ + (TMC5XXX_RAMPSTAT_STOP_LEFT_EVENT_MASK >> TMC5XXX_RAMPSTAT_INT_SHIFT) + +#define TMC5XXX_DRV_STATUS_STST_BIT BIT(31) +#define TMC5XXX_DRV_STATUS_SG_RESULT_MASK GENMASK(9, 0) +#define TMC5XXX_DRV_STATUS_SG_STATUS_MASK BIT(24) +#define TMC5XXX_DRV_STATUS_SG_STATUS_SHIFT 24 + +#endif + +#ifdef CONFIG_STEPPER_ADI_TMC5041 + +#define TMC5041_MOTOR_ADDR(m) (0x20 << (m)) +#define TMC5041_MOTOR_ADDR_DRV(m) ((m) << 4) +#define TMC5041_MOTOR_ADDR_PWM(m) ((m) << 3) + +/** + * @name TMC5041 module registers + * @anchor TMC5041_REGISTERS + * + * @{ + */ + +#define TMC5041_GCONF_POSCMP_ENABLE_SHIFT 3 +#define TMC5041_GCONF_TEST_MODE_SHIFT 7 +#define TMC5041_GCONF_SHAFT_SHIFT(n) ((n) ? 8 : 9) +#define TMC5041_LOCK_GCONF_SHIFT 10 + +#define TMC5041_PWMCONF(motor) (0x10 | TMC5041_MOTOR_ADDR_PWM(motor)) +#define TMC5041_PWM_STATUS(motor) (0x11 | TMC5041_MOTOR_ADDR_PWM(motor)) + +#define TMC5041_RAMPMODE(motor) (0x00 | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_XACTUAL(motor) (0x01 | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_VACTUAL(motor) (0x02 | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_VSTART(motor) (0x03 | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_A1(motor) (0x04 | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_V1(motor) (0x05 | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_AMAX(motor) (0x06 | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_VMAX(motor) (0x07 | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_DMAX(motor) (0x08 | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_D1(motor) (0x0A | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_VSTOP(motor) (0x0B | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_TZEROWAIT(motor) (0x0C | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_XTARGET(motor) (0x0D | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_IHOLD_IRUN(motor) (0x10 | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_VCOOLTHRS(motor) (0x11 | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_VHIGH(motor) (0x12 | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_SWMODE(motor) (0x14 | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_RAMPSTAT(motor) (0x15 | TMC5041_MOTOR_ADDR(motor)) +#define TMC5041_XLATCH(motor) (0x16 | TMC5041_MOTOR_ADDR(motor)) + +#define TMC5041_MSLUT0(motor) (0x60 | TMC5041_MOTOR_ADDR_DRV(motor)) +#define TMC5041_MSLUT1(motor) (0x61 | TMC5041_MOTOR_ADDR_DRV(motor)) +#define TMC5041_MSLUT2(motor) (0x62 | TMC5041_MOTOR_ADDR_DRV(motor)) +#define TMC5041_MSLUT3(motor) (0x63 | TMC5041_MOTOR_ADDR_DRV(motor)) +#define TMC5041_MSLUT4(motor) (0x64 | TMC5041_MOTOR_ADDR_DRV(motor)) +#define TMC5041_MSLUT5(motor) (0x65 | TMC5041_MOTOR_ADDR_DRV(motor)) +#define TMC5041_MSLUT6(motor) (0x66 | TMC5041_MOTOR_ADDR_DRV(motor)) +#define TMC5041_MSLUT7(motor) (0x67 | TMC5041_MOTOR_ADDR_DRV(motor)) +#define TMC5041_MSLUTSEL(motor) (0x68 | TMC5041_MOTOR_ADDR_DRV(motor)) +#define TMC5041_MSLUTSTART(motor) (0x69 | TMC5041_MOTOR_ADDR_DRV(motor)) +#define TMC5041_MSCNT(motor) (0x6A | TMC5041_MOTOR_ADDR_DRV(motor)) +#define TMC5041_MSCURACT(motor) (0x6B | TMC5041_MOTOR_ADDR_DRV(motor)) +#define TMC5041_CHOPCONF(motor) (0x6C | TMC5041_MOTOR_ADDR_DRV(motor)) +#define TMC5041_COOLCONF(motor) (0x6D | TMC5041_MOTOR_ADDR_DRV(motor)) +#define TMC5041_DRVSTATUS(motor) (0x6F | TMC5041_MOTOR_ADDR_DRV(motor)) + +#endif + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_DRIVERS_STEPPER_ADI_TMC_REG_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/adi_tmc/adi_tmc_spi.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/adi_tmc/adi_tmc_spi.h new file mode 100644 index 00000000..c228b619 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/adi_tmc/adi_tmc_spi.h @@ -0,0 +1,63 @@ +/** + * @file drivers/stepper/adi/stepper.h + * + * @brief Private API for Trinamic SPI bus + * + */ + +/* + * SPDX-FileCopyrightText: Copyright (c) 2024 Carl Zeiss Meditec AG + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_STEPPER_ADI_TMC_SPI_H_ +#define ZEPHYR_DRIVERS_STEPPER_ADI_TMC_SPI_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief TMC SPI INTERFACE + * @ingroup io_priv_interfaces + * @{ + * + */ + +#include + +/** + * @brief Read a register from the TMC module using the SPI Bus. + * + * @param bus SPI DT information of the bus. + * @param read_address_mask Address Mask for read operation. + * @param register_address Register. + * @param data Pointer to read value. + * + * @return a value from spi_transceive(). + */ +int tmc_spi_read_register(const struct spi_dt_spec *bus, const uint8_t read_address_mask, + const uint8_t register_address, uint32_t *data); + +/** + * @brief Write into a register in the TMC module using the SPI Bus. + * + * @param bus SPI DT information of the bus. + * @param write_bit Write bit for write operation. + * @param register_address Register. + * @param data Value to be written in the register. + * + * @return a value from spi_transceive(). + */ +int tmc_spi_write_register(const struct spi_dt_spec *bus, const uint8_t write_bit, + const uint8_t register_address, const uint32_t data); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_DRIVERS_STEPPER_ADI_TMC_SPI_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/step_dir_stepper_common.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/step_dir_stepper_common.h new file mode 100644 index 00000000..e1cfa773 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/stepper/step_dir_stepper_common.h @@ -0,0 +1,191 @@ +/* + * Copyright 2024 Fabian Blatz + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVER_STEPPER_STEP_DIR_STEPPER_COMMON_H_ +#define ZEPHYR_DRIVER_STEPPER_STEP_DIR_STEPPER_COMMON_H_ + +/** + * @brief Stepper Driver APIs + * @defgroup step_dir_stepper Stepper Driver APIs + * @ingroup io_interfaces + * @{ + */ + +#include +#include +#include + +/** + * @brief Common step direction stepper config. + * + * This structure **must** be placed first in the driver's config structure. + */ +struct step_dir_stepper_common_config { + const struct gpio_dt_spec step_pin; + const struct gpio_dt_spec dir_pin; + bool dual_edge; +}; + +/** + * @brief Initialize common step direction stepper config from devicetree instance. + * + * @param node_id The devicetree node identifier. + */ +#define STEP_DIR_STEPPER_DT_COMMON_CONFIG_INIT(node_id) \ + { \ + .step_pin = GPIO_DT_SPEC_GET(node_id, step_gpios), \ + .dir_pin = GPIO_DT_SPEC_GET(node_id, dir_gpios), \ + .dual_edge = DT_PROP_OR(node_id, dual_edge_step, false), \ + } + +/** + * @brief Initialize common step direction stepper config from devicetree instance. + * @param inst Instance. + */ +#define STEP_DIR_STEPPER_DT_INST_COMMON_CONFIG_INIT(inst) \ + STEP_DIR_STEPPER_DT_COMMON_CONFIG_INIT(DT_DRV_INST(inst)) + +/** + * @brief Common step direction stepper data. + * + * This structure **must** be placed first in the driver's data structure. + */ +struct step_dir_stepper_common_data { + const struct device *dev; + struct k_spinlock lock; + enum stepper_direction direction; + enum stepper_run_mode run_mode; + struct k_work_delayable stepper_dwork; + int32_t actual_position; + uint32_t delay_in_us; + int32_t step_count; + stepper_event_callback_t callback; + void *event_cb_user_data; +}; + +/** + * @brief Initialize common step direction stepper data from devicetree instance. + * + * @param node_id The devicetree node identifier. + */ +#define STEP_DIR_STEPPER_DT_COMMON_DATA_INIT(node_id) \ + { \ + .dev = DEVICE_DT_GET(node_id), \ + } + +/** + * @brief Initialize common step direction stepper data from devicetree instance. + * @param inst Instance. + */ +#define STEP_DIR_STEPPER_DT_INST_COMMON_DATA_INIT(inst) \ + STEP_DIR_STEPPER_DT_COMMON_DATA_INIT(DT_DRV_INST(inst)) + +/** + * @brief Validate the offset of the common data structures. + * + * @param config Name of the config structure. + * @param data Name of the data structure. + */ +#define STEP_DIR_STEPPER_STRUCT_CHECK(config, data) \ + BUILD_ASSERT(offsetof(config, common) == 0, \ + "struct step_dir_stepper_common_config must be placed first"); \ + BUILD_ASSERT(offsetof(data, common) == 0, \ + "struct step_dir_stepper_common_data must be placed first"); + +/** + * @brief Common function to initialize a step direction stepper device at init time. + * + * This function must be called at the end of the device init function. + * + * @param dev Step direction stepper device instance. + * + * @retval 0 If initialized successfully. + * @retval -errno Negative errno in case of failure. + */ +int step_dir_stepper_common_init(const struct device *dev); + +/** + * @brief Move the stepper motor by a given number of micro_steps. + * + * @param dev Pointer to the device structure. + * @param micro_steps Number of micro_steps to move. Can be positive or negative. + * @return 0 on success, or a negative error code on failure. + */ +int step_dir_stepper_common_move_by(const struct device *dev, const int32_t micro_steps); + +/** + * @brief Set the maximum velocity in micro_steps per second. + * + * @param dev Pointer to the device structure. + * @param velocity Maximum velocity in micro_steps per second. + * @return 0 on success, or a negative error code on failure. + */ +int step_dir_stepper_common_set_max_velocity(const struct device *dev, const uint32_t velocity); + +/** + * @brief Set the reference position of the stepper motor. + * + * @param dev Pointer to the device structure. + * @param value The reference position value to set. + * @return 0 on success, or a negative error code on failure. + */ +int step_dir_stepper_common_set_reference_position(const struct device *dev, const int32_t value); + +/** + * @brief Get the actual (reference) position of the stepper motor. + * + * @param dev Pointer to the device structure. + * @param value Pointer to a variable where the position value will be stored. + * @return 0 on success, or a negative error code on failure. + */ +int step_dir_stepper_common_get_actual_position(const struct device *dev, int32_t *value); + +/** + * @brief Set the absolute target position of the stepper motor. + * + * @param dev Pointer to the device structure. + * @param value The target position to set. + * @return 0 on success, or a negative error code on failure. + */ +int step_dir_stepper_common_move_to(const struct device *dev, const int32_t value); + +/** + * @brief Check if the stepper motor is still moving. + * + * @param dev Pointer to the device structure. + * @param is_moving Pointer to a boolean where the movement status will be stored. + * @return 0 on success, or a negative error code on failure. + */ +int step_dir_stepper_common_is_moving(const struct device *dev, bool *is_moving); + +/** + * @brief Run the stepper with a given velocity in a given direction. + * + * @param dev Pointer to the device structure. + * @param direction The direction of movement (positive or negative). + * @param velocity The velocity in micro_steps per second. + * @return 0 on success, or a negative error code on failure. + */ +int step_dir_stepper_common_run(const struct device *dev, const enum stepper_direction direction, + const uint32_t velocity); + +/** + * @brief Set a callback function for stepper motor events. + * + * This function sets a user-defined callback that will be invoked when a stepper motor event + * occurs. + * + * @param dev Pointer to the device structure. + * @param callback The callback function to set. + * @param user_data Pointer to user-defined data that will be passed to the callback. + * @return 0 on success, or a negative error code on failure. + */ +int step_dir_stepper_common_set_event_callback(const struct device *dev, + stepper_event_callback_t callback, void *user_data); + +/** @} */ + +#endif /* ZEPHYR_DRIVER_STEPPER_STEP_DIR_STEPPER_COMMON_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/common/usb_dwc2_hw.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/common/usb_dwc2_hw.h index 88d32a91..fcb35489 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/common/usb_dwc2_hw.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/common/usb_dwc2_hw.h @@ -110,13 +110,12 @@ struct usb_dwc2_reg { volatile uint32_t reserved5[16]; struct usb_dwc2_in_ep in_ep[16]; struct usb_dwc2_out_ep out_ep[16]; + volatile uint32_t reserved6[64]; + volatile uint32_t pcgcctl; }; -/* - * With the maximum number of supported endpoints, register map - * of the controller must be equal to 0x0D00. - */ -BUILD_ASSERT(sizeof(struct usb_dwc2_reg) == 0x0D00); +/* The last register (PCGCCTL) must be at offset 0xE00. */ +BUILD_ASSERT(offsetof(struct usb_dwc2_reg, pcgcctl) == 0x0E00); /* * GET_FIELD/SET_FIELD macros below are intended to be used to define functions @@ -242,6 +241,7 @@ USB_DWC2_SET_FIELD_DEFINE(grstctl_txfnum, GRSTCTL_TXFNUM) #define USB_DWC2_GINTSTS_FETSUSP BIT(USB_DWC2_GINTSTS_FETSUSP_POS) #define USB_DWC2_GINTSTS_INCOMPIP_POS 21UL #define USB_DWC2_GINTSTS_INCOMPIP BIT(USB_DWC2_GINTSTS_INCOMPIP_POS) +#define USB_DWC2_GINTSTS_INCOMPISOOUT USB_DWC2_GINTSTS_INCOMPIP #define USB_DWC2_GINTSTS_INCOMPISOIN_POS 20UL #define USB_DWC2_GINTSTS_INCOMPISOIN BIT(USB_DWC2_GINTSTS_INCOMPISOIN_POS) #define USB_DWC2_GINTSTS_OEPINT_POS 19UL @@ -350,8 +350,27 @@ USB_DWC2_GET_FIELD_AND_IDX_DEFINE(ghwcfg1_epdir, GHWCFG1_EPDIR) /* GHWCFG2 register */ #define USB_DWC2_GHWCFG2 0x0048UL +#define USB_DWC2_GHWCFG2_TKNQDEPTH_POS 26UL +#define USB_DWC2_GHWCFG2_TKNQDEPTH_MASK (0x1FUL << USB_DWC2_GHWCFG2_TKNQDEPTH_POS) +#define USB_DWC2_GHWCFG2_PTXQDEPTH_POS 24UL +#define USB_DWC2_GHWCFG2_PTXQDEPTH_MASK (0x3UL << USB_DWC2_GHWCFG2_PTXQDEPTH_POS) +#define USB_DWC2_GHWCFG2_PTXQDEPTH_QUE16 3 +#define USB_DWC2_GHWCFG2_PTXQDEPTH_QUE8 2 +#define USB_DWC2_GHWCFG2_PTXQDEPTH_QUE4 1 +#define USB_DWC2_GHWCFG2_PTXQDEPTH_QUE2 0 +#define USB_DWC2_GHWCFG2_NPTXQDEPTH_POS 22UL +#define USB_DWC2_GHWCFG2_NPTXQDEPTH_MASK (0x3UL << USB_DWC2_GHWCFG2_NPTXQDEPTH_POS) +#define USB_DWC2_GHWCFG2_NPTXQDEPTH_EIGHT 2 +#define USB_DWC2_GHWCFG2_NPTXQDEPTH_FOUR 1 +#define USB_DWC2_GHWCFG2_NPTXQDEPTH_TWO 0 +#define USB_DWC2_GHWCFG2_MULTIPROCINTRPT_POS 20UL +#define USB_DWC2_GHWCFG2_MULTIPROCINTRPT BIT(USB_DWC2_GHWCFG2_MULTIPROCINTRPT_POS) #define USB_DWC2_GHWCFG2_DYNFIFOSIZING_POS 19UL #define USB_DWC2_GHWCFG2_DYNFIFOSIZING BIT(USB_DWC2_GHWCFG2_DYNFIFOSIZING_POS) +#define USB_DWC2_GHWCFG2_PERIOSUPPORT_POS 18UL +#define USB_DWC2_GHWCFG2_PERIOSUPPORT BIT(USB_DWC2_GHWCFG2_PERIOSUPPORT_POS) +#define USB_DWC2_GHWCFG2_NUMHSTCHNL_POS 14UL +#define USB_DWC2_GHWCFG2_NUMHSTCHNL_MASK (0xFUL << USB_DWC2_GHWCFG2_NUMHSTCHNL_POS) #define USB_DWC2_GHWCFG2_NUMDEVEPS_POS 10UL #define USB_DWC2_GHWCFG2_NUMDEVEPS_MASK (0xFUL << USB_DWC2_GHWCFG2_NUMDEVEPS_POS) #define USB_DWC2_GHWCFG2_FSPHYTYPE_POS 8UL @@ -366,6 +385,8 @@ USB_DWC2_GET_FIELD_AND_IDX_DEFINE(ghwcfg1_epdir, GHWCFG1_EPDIR) #define USB_DWC2_GHWCFG2_HSPHYTYPE_ULPI 2 #define USB_DWC2_GHWCFG2_HSPHYTYPE_UTMIPLUS 1 #define USB_DWC2_GHWCFG2_HSPHYTYPE_NO_HS 0 +#define USB_DWC2_GHWCFG2_SINGPNT_POS 5UL +#define USB_DWC2_GHWCFG2_SINGPNT BIT(USB_DWC2_GHWCFG2_SINGPNT_POS) #define USB_DWC2_GHWCFG2_OTGARCH_POS 3UL #define USB_DWC2_GHWCFG2_OTGARCH_MASK (0x3UL << USB_DWC2_GHWCFG2_OTGARCH_POS) #define USB_DWC2_GHWCFG2_OTGARCH_INTERNALDMA 2 @@ -381,6 +402,10 @@ USB_DWC2_GET_FIELD_AND_IDX_DEFINE(ghwcfg1_epdir, GHWCFG1_EPDIR) #define USB_DWC2_GHWCFG2_OTGMODE_SRPOTG 1 #define USB_DWC2_GHWCFG2_OTGMODE_HNPSRP 0 +USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_tknqdepth, GHWCFG2_TKNQDEPTH) +USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_ptxqdepth, GHWCFG2_PTXQDEPTH) +USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_nptxqdepth, GHWCFG2_NPTXQDEPTH) +USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_numhstchnl, GHWCFG2_NUMHSTCHNL) USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_numdeveps, GHWCFG2_NUMDEVEPS) USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_fsphytype, GHWCFG2_FSPHYTYPE) USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_hsphytype, GHWCFG2_HSPHYTYPE) @@ -393,10 +418,20 @@ USB_DWC2_GET_FIELD_DEFINE(ghwcfg2_otgmode, GHWCFG2_OTGMODE) #define USB_DWC2_GHWCFG3_DFIFODEPTH_MASK (0xFFFFUL << USB_DWC2_GHWCFG3_DFIFODEPTH_POS) #define USB_DWC2_GHWCFG3_LPMMODE_POS 15UL #define USB_DWC2_GHWCFG3_LPMMODE BIT(USB_DWC2_GHWCFG3_LPMMODE_POS) +#define USB_DWC2_GHWCFG3_BCSUPPORT_POS 14UL +#define USB_DWC2_GHWCFG3_BCSUPPORT BIT(USB_DWC2_GHWCFG3_BCSUPPORT_POS) +#define USB_DWC2_GHWCFG3_HSICMODE_POS 13UL +#define USB_DWC2_GHWCFG3_HSICMODE BIT(USB_DWC2_GHWCFG3_HSICMODE_POS) +#define USB_DWC2_GHWCFG3_ADPSUPPORT_POS 12UL +#define USB_DWC2_GHWCFG3_ADPSUPPORT BIT(USB_DWC2_GHWCFG3_ADPSUPPORT_POS) +#define USB_DWC2_GHWCFG3_RSTTYPE_POS 11UL +#define USB_DWC2_GHWCFG3_RSTTYPE BIT(USB_DWC2_GHWCFG3_RSTTYPE_POS) #define USB_DWC2_GHWCFG3_OPTFEATURE_POS 10UL #define USB_DWC2_GHWCFG3_OPTFEATURE BIT(USB_DWC2_GHWCFG3_OPTFEATURE_POS) #define USB_DWC2_GHWCFG3_VNDCTLSUPT_POS 9UL #define USB_DWC2_GHWCFG3_VNDCTLSUPT BIT(USB_DWC2_GHWCFG3_VNDCTLSUPT_POS) +#define USB_DWC2_GHWCFG3_I2CINTSEL_POS 8UL +#define USB_DWC2_GHWCFG3_I2CINTSEL BIT(USB_DWC2_GHWCFG3_I2CINTSEL) #define USB_DWC2_GHWCFG3_OTGEN_POS 7UL #define USB_DWC2_GHWCFG3_OTGEN BIT(USB_DWC2_GHWCFG3_OTGEN_POS) #define USB_DWC2_GHWCFG3_PKTSIZEWIDTH_POS 4UL @@ -429,14 +464,46 @@ USB_DWC2_GET_FIELD_DEFINE(ghwcfg3_xfersizewidth, GHWCFG3_XFERSIZEWIDTH) /* GHWCFG4 register */ #define USB_DWC2_GHWCFG4 0x0050UL +#define USB_DWC2_GHWCFG4_DESCDMA_POS 31UL +#define USB_DWC2_GHWCFG4_DESCDMA BIT(USB_DWC2_GHWCFG4_DESCDMA_POS) +#define USB_DWC2_GHWCFG4_DESCDMAENABLED_POS 30UL +#define USB_DWC2_GHWCFG4_DESCDMAENABLED BIT(USB_DWC2_GHWCFG4_DESCDMAENABLED_POS) #define USB_DWC2_GHWCFG4_INEPS_POS 26UL #define USB_DWC2_GHWCFG4_INEPS_MASK (0xFUL << USB_DWC2_GHWCFG4_INEPS_POS) #define USB_DWC2_GHWCFG4_DEDFIFOMODE_POS 25UL #define USB_DWC2_GHWCFG4_DEDFIFOMODE BIT(USB_DWC2_GHWCFG4_DEDFIFOMODE_POS) +#define USB_DWC2_GHWCFG4_SESSENDFLTR_POS 24UL +#define USB_DWC2_GHWCFG4_SESSENDFLTR BIT(USB_DWC2_GHWCFG4_SESSENDFLTR_POS) +#define USB_DWC2_GHWCFG4_BVALIDFLTR_POS 23UL +#define USB_DWC2_GHWCFG4_BVALIDFLTR BIT(USB_DWC2_GHWCFG4_BVALIDFLTR_POS) +#define USB_DWC2_GHWCFG4_AVALIDFLTR_POS 22UL +#define USB_DWC2_GHWCFG4_AVALIDFLTR BIT(USB_DWC2_GHWCFG4_AVALIDFLTR_POS) +#define USB_DWC2_GHWCFG4_VBUSVALIDFLTR_POS 21UL +#define USB_DWC2_GHWCFG4_VBUSVALIDFLTR BIT(USB_DWC2_GHWCFG4_VBUSVALIDFLTR_POS) +#define USB_DWC2_GHWCFG4_IDDGFLTR_POS 20UL +#define USB_DWC2_GHWCFG4_IDDGFLTR BIT(USB_DWC2_GHWCFG4_IDDGFLTR_POS) #define USB_DWC2_GHWCFG4_NUMCTLEPS_POS 16UL #define USB_DWC2_GHWCFG4_NUMCTLEPS_MASK (0xFUL << USB_DWC2_GHWCFG4_NUMCTLEPS_POS) #define USB_DWC2_GHWCFG4_PHYDATAWIDTH_POS 14UL #define USB_DWC2_GHWCFG4_PHYDATAWIDTH_MASK (0x3UL << USB_DWC2_GHWCFG4_PHYDATAWIDTH_POS) +#define USB_DWC2_GHWCFG4_ENHANCEDLPMSUPT_POS 13UL +#define USB_DWC2_GHWCFG4_ENHANCEDLPMSUPT BIT(USB_DWC2_GHWCFG4_ENHANCEDLPMSUPT_POS) +#define USB_DWC2_GHWCFG4_ACGSUPT_POS 12UL +#define USB_DWC2_GHWCFG4_ACGSUPT BIT(USB_DWC2_GHWCFG4_ACGSUPT_POS) +#define USB_DWC2_GHWCFG4_IPGISOCSUPT_POS 11UL +#define USB_DWC2_GHWCFG4_IPGISOCSUPT BIT(USB_DWC2_GHWCFG4_IPGISOCSUPT_POS) +#define USB_DWC2_GHWCFG4_SERVINTFLOW_POS 10UL +#define USB_DWC2_GHWCFG4_SERVINTFLOW BIT(USB_DWC2_GHWCFG4_SERVINTFLOW_POS) +#define USB_DWC2_GHWCFG4_ENHANCEDLPMSUPT1_POS 9UL +#define USB_DWC2_GHWCFG4_ENHANCEDLPMSUPT1 BIT(USB_DWC2_GHWCFG4_ENHANCEDLPMSUPT1_POS) +#define USB_DWC2_GHWCFG4_EXT_HIBERNATION_POS 7UL +#define USB_DWC2_GHWCFG4_EXT_HIBERNATION BIT(USB_DWC2_GHWCFG4_EXT_HIBERNATION_POS) +#define USB_DWC2_GHWCFG4_HIBERNATION_POS 6UL +#define USB_DWC2_GHWCFG4_HIBERNATION BIT(USB_DWC2_GHWCFG4_HIBERNATION_POS) +#define USB_DWC2_GHWCFG4_AHBFREQ_POS 5UL +#define USB_DWC2_GHWCFG4_AHBFREQ BIT(USB_DWC2_GHWCFG4_AHBFREQ_POS) +#define USB_DWC2_GHWCFG4_PARTIALPWRDN_POS 4UL +#define USB_DWC2_GHWCFG4_PARTIALPWRDN BIT(USB_DWC2_GHWCFG4_PARTIALPWRDN_POS) #define USB_DWC2_GHWCFG4_NUMDEVPERIOEPS_POS 0UL #define USB_DWC2_GHWCFG4_NUMDEVPERIOEPS_MASK (0xFUL << USB_DWC2_GHWCFG4_NUMDEVPERIOEPS_POS) @@ -445,6 +512,130 @@ USB_DWC2_GET_FIELD_DEFINE(ghwcfg4_numctleps, GHWCFG4_NUMCTLEPS) USB_DWC2_GET_FIELD_DEFINE(ghwcfg4_phydatawidth, GHWCFG4_PHYDATAWIDTH) USB_DWC2_GET_FIELD_DEFINE(ghwcfg4_numdevperioeps, GHWCFG4_NUMDEVPERIOEPS) +/* LPM Config Register */ +#define USB_DWC2_GLPMCFG 0x0054UL +#define USB_DWC2_GLPMCFG_LPM_RESTORESLPSTS_POS 29UL +#define USB_DWC2_GLPMCFG_LPM_RESTORESLPSTS BIT(USB_DWC2_GLPMCFG_LPM_RESTORESLPSTS_POS) +#define USB_DWC2_GLPMCFG_LPM_ENBESL_POS 28UL +#define USB_DWC2_GLPMCFG_LPM_ENBESL BIT(USB_DWC2_GLPMCFG_LPM_ENBESL_POS) +#define USB_DWC2_GLPMCFG_LPM_RETRYCNT_STS_POS 25UL +#define USB_DWC2_GLPMCFG_LPM_RETRYCNT_STS_MASK (0x7UL << USB_DWC2_GLPMCFG_LPM_RETRYCNT_STS_POS) +#define USB_DWC2_GLPMCFG_SNDLPM_POS 24UL +#define USB_DWC2_GLPMCFG_SNDLPM BIT(USB_DWC2_GLPMCFG_SNDLPM_POS) +/* Host mode LPM Retry Count and LPM Channel Index */ +#define USB_DWC2_GLPMCFG_LPM_RETRY_CNT_POS 21UL +#define USB_DWC2_GLPMCFG_LPM_RETRY_CNT_MASK (0x7UL << USB_DWC2_GLPMCFG_LPM_RETRY_CNT_POS) +#define USB_DWC2_GLPMCFG_LPM_CHNL_INDX_POS 17UL +#define USB_DWC2_GLPMCFG_LPM_CHNL_INDX_MASK (0xFUL << USB_DWC2_GLPMCFG_LPM_CHNL_INDX_POS) +/* Device mode LPM Accept Control */ +#define USB_DWC2_GLPMCFG_LPM_ACK_BULK_POS 23UL +#define USB_DWC2_GLPMCFG_LPM_ACK_BULK BIT(USB_DWC2_GLPMCFG_LPM_ACK_BULK_POS) +#define USB_DWC2_GLPMCFG_LPM_ACK_ISO_POS 22UL +#define USB_DWC2_GLPMCFG_LPM_ACK_ISO BIT(USB_DWC2_GLPMCFG_LPM_ACK_ISO_POS) +#define USB_DWC2_GLPMCFG_LPM_NYET_CTRL_POS 21UL +#define USB_DWC2_GLPMCFG_LPM_NYET_CTRL BIT(USB_DWC2_GLPMCFG_LPM_NYET_CTRL_POS) +#define USB_DWC2_GLPMCFG_LPM_ACK_INTR_POS 20UL +#define USB_DWC2_GLPMCFG_LPM_ACK_INTR BIT(USB_DWC2_GLPMCFG_LPM_ACK_INTR_POS) +#define USB_DWC2_GLPMCFG_L1RESUMEOK_POS 16UL +#define USB_DWC2_GLPMCFG_L1RESUMEOK BIT(USB_DWC2_GLPMCFG_L1RESUMEOK_POS) +#define USB_DWC2_GLPMCFG_SLPSTS_POS 15UL +#define USB_DWC2_GLPMCFG_SLPSTS BIT(USB_DWC2_GLPMCFG_SLPSTS_POS) +#define USB_DWC2_GLPMCFG_COREL1RES_POS 13UL +#define USB_DWC2_GLPMCFG_COREL1RES_MASK (0x3UL << USB_DWC2_GLPMCFG_COREL1RES_POS) +#define USB_DWC2_GLPMCFG_COREL1RES_ERROR 0 +#define USB_DWC2_GLPMCFG_COREL1RES_STALL 1 +#define USB_DWC2_GLPMCFG_COREL1RES_NYET 2 +#define USB_DWC2_GLPMCFG_COREL1RES_ACK 3 +#define USB_DWC2_GLPMCFG_HIRD_THRES_POS 8UL +#define USB_DWC2_GLPMCFG_HIRD_THRES_MASK (0x1FUL << USB_DWC2_GLPMCFG_HIRD_THRES_POS) +#define USB_DWC2_GLPMCFG_ENBLSLPM_POS 7UL +#define USB_DWC2_GLPMCFG_ENBLSLPM BIT(USB_DWC2_GLPMCFG_ENBLSLPM_POS) +#define USB_DWC2_GLPMCFG_BREMOTEWAKE_POS 6UL +#define USB_DWC2_GLPMCFG_BREMOTEWAKE BIT(USB_DWC2_GLPMCFG_BREMOTEWAKE_POS) +#define USB_DWC2_GLPMCFG_HIRD_POS 2UL +#define USB_DWC2_GLPMCFG_HIRD_MASK (0xFUL << USB_DWC2_GLPMCFG_HIRD_POS) +#define USB_DWC2_GLPMCFG_APPL1RES_POS 1UL +#define USB_DWC2_GLPMCFG_APPL1RES BIT(USB_DWC2_GLPMCFG_APPL1RES_POS) +#define USB_DWC2_GLPMCFG_LPMCAP_POS 0UL +#define USB_DWC2_GLPMCFG_LPMCAP BIT(USB_DWC2_GLPMCFG_LPMCAP_POS) + +USB_DWC2_GET_FIELD_DEFINE(glpmcfg_lpm_retrycnt_sts, GLPMCFG_LPM_RETRYCNT_STS) +USB_DWC2_GET_FIELD_DEFINE(glpmcfg_lpm_retry_cnt, GLPMCFG_LPM_RETRY_CNT) +USB_DWC2_GET_FIELD_DEFINE(glpmcfg_lpm_chnl_indx, GLPMCFG_LPM_CHNL_INDX) +USB_DWC2_GET_FIELD_DEFINE(glpmcfg_corel1res, GLPMCFG_COREL1RES) +USB_DWC2_GET_FIELD_DEFINE(glpmcfg_hird_thres, GLPMCFG_HIRD_THRES) +USB_DWC2_GET_FIELD_DEFINE(glpmcfg_hird, GLPMCFG_HIRD) +USB_DWC2_SET_FIELD_DEFINE(glpmcfg_lpm_retry_cnt, GLPMCFG_LPM_RETRY_CNT) +USB_DWC2_SET_FIELD_DEFINE(glpmcfg_lpm_chnl_indx, GLPMCFG_LPM_CHNL_INDX) +USB_DWC2_SET_FIELD_DEFINE(glpmcfg_hird_thres, GLPMCFG_HIRD_THRES) +USB_DWC2_SET_FIELD_DEFINE(glpmcfg_hird, GLPMCFG_HIRD) + +/* Global Power Down Register */ +#define USB_DWC2_GPWRDN 0x0058UL +#define USB_DWC2_GPWRDN_MULTVALIDBC_POS 24UL +#define USB_DWC2_GPWRDN_MULTVALIDBC_MASK (0x1FUL << USB_DWC2_GPWRDN_MULTVALIDBC_POS) +#define USB_DWC2_GPWRDN_MULTVALIDBC_RID_0 0 +#define USB_DWC2_GPWRDN_MULTVALIDBC_RID_C 1 +#define USB_DWC2_GPWRDN_MULTVALIDBC_RID_B 2 +#define USB_DWC2_GPWRDN_MULTVALIDBC_RID_A 4 +#define USB_DWC2_GPWRDN_MULTVALIDBC_RID_GND 8 +#define USB_DWC2_GPWRDN_MULTVALIDBC_RID_A_GND 12 +#define USB_DWC2_GPWRDN_MULTVALIDBC_RID_FLOAT 16 +#define USB_DWC2_GPWRDN_MULTVALIDBC_RID_C_FLOAT 17 +#define USB_DWC2_GPWRDN_MULTVALIDBC_RID_B_FLOAT 18 +#define USB_DWC2_GPWRDN_MULTVALIDBC_RID_1 31 +#define USB_DWC2_GPWRDN_BSESSVLD_POS 22UL +#define USB_DWC2_GPWRDN_BSESSVLD BIT(USB_DWC2_GPWRDN_BSESSVLD_POS) +#define USB_DWC2_GPWRDN_IDDIG_POS 21UL +#define USB_DWC2_GPWRDN_IDDIG BIT(USB_DWC2_GPWRDN_IDDIG_POS) +#define USB_DWC2_GPWRDN_LINESTATE_POS 19UL +#define USB_DWC2_GPWRDN_LINESTATE_MASK (0x3UL << USB_DWC2_GPWRDN_LINESTATE_POS) +#define USB_DWC2_GPWRDN_LINESTATE_DM0DP0 0 +#define USB_DWC2_GPWRDN_LINESTATE_DM0DP1 1 +#define USB_DWC2_GPWRDN_LINESTATE_DM1DP0 2 +#define USB_DWC2_GPWRDN_LINESTATE_NOT_DEFINED 3 +#define USB_DWC2_GPWRDN_STSCHNGINTMSK_POS 18UL +#define USB_DWC2_GPWRDN_STSCHNGINTMSK BIT(USB_DWC2_GPWRDN_STSCHNGINTMSK_POS) +#define USB_DWC2_GPWRDN_STSCHNGINT_POS 17UL +#define USB_DWC2_GPWRDN_STSCHNGINT BIT(USB_DWC2_GPWRDN_STSCHNGINT_POS) +#define USB_DWC2_GPWRDN_SRPDETECTMSK_POS 16UL +#define USB_DWC2_GPWRDN_SRPDETECTMSK BIT(USB_DWC2_GPWRDN_SRPDETECTMSK_POS) +#define USB_DWC2_GPWRDN_SRPDETECT_POS 15UL +#define USB_DWC2_GPWRDN_SRPDETECT BIT(USB_DWC2_GPWRDN_SRPDETECT_POS) +#define USB_DWC2_GPWRDN_CONNDETMSK_POS 14UL +#define USB_DWC2_GPWRDN_CONNDETMSK BIT(USB_DWC2_GPWRDN_CONNDETMSK_POS) +#define USB_DWC2_GPWRDN_CONNECTDET_POS 13UL +#define USB_DWC2_GPWRDN_CONNECTDET BIT(USB_DWC2_GPWRDN_CONNECTDET_POS) +#define USB_DWC2_GPWRDN_DISCONNECTDETECTMSK_POS 12UL +#define USB_DWC2_GPWRDN_DISCONNECTDETECTMSK BIT(USB_DWC2_GPWRDN_DISCONNECTDETECTMSK_POS) +#define USB_DWC2_GPWRDN_DISCONNECTDETECT_POS 11UL +#define USB_DWC2_GPWRDN_DISCONNECTDETECT BIT(USB_DWC2_GPWRDN_DISCONNECTDETECT_POS) +#define USB_DWC2_GPWRDN_RESETDETMSK_POS 10UL +#define USB_DWC2_GPWRDN_RESETDETMSK BIT(USB_DWC2_GPWRDN_RESETDETMSK_POS) +#define USB_DWC2_GPWRDN_RESETDETECTED_POS 9UL +#define USB_DWC2_GPWRDN_RESETDETECTED BIT(USB_DWC2_GPWRDN_RESETDETECTED_POS) +#define USB_DWC2_GPWRDN_LINESTAGECHANGEMSK_POS 8UL +#define USB_DWC2_GPWRDN_LINESTAGECHANGEMSK BIT(USB_DWC2_GPWRDN_LINESTAGECHANGEMSK_POS) +#define USB_DWC2_GPWRDN_LNSTSCHNG_POS 7UL +#define USB_DWC2_GPWRDN_LNSTSCHNG BIT(USB_DWC2_GPWRDN_LNSTSCHNG_POS) +#define USB_DWC2_GPWRDN_DISABLEVBUS_POS 6UL +#define USB_DWC2_GPWRDN_DISABLEVBUS BIT(USB_DWC2_GPWRDN_DISABLEVBUS_POS) +#define USB_DWC2_GPWRDN_PWRDNSWTCH_POS 5UL +#define USB_DWC2_GPWRDN_PWRDNSWTCH BIT(USB_DWC2_GPWRDN_PWRDNSWTCH_POS) +#define USB_DWC2_GPWRDN_PWRDNRST_N_POS 4UL +#define USB_DWC2_GPWRDN_PWRDNRST_N BIT(USB_DWC2_GPWRDN_PWRDNRST_N_POS) +#define USB_DWC2_GPWRDN_PWRDNCLMP_POS 3UL +#define USB_DWC2_GPWRDN_PWRDNCLMP BIT(USB_DWC2_GPWRDN_PWRDNCLMP_POS) +#define USB_DWC2_GPWRDN_RESTORE_POS 2UL +#define USB_DWC2_GPWRDN_RESTORE BIT(USB_DWC2_GPWRDN_RESTORE_POS) +#define USB_DWC2_GPWRDN_PMUACTV_POS 1UL +#define USB_DWC2_GPWRDN_PMUACTV BIT(USB_DWC2_GPWRDN_PMUACTV_POS) +#define USB_DWC2_GPWRDN_PMUINTSEL_POS 0UL +#define USB_DWC2_GPWRDN_PMUINTSEL BIT(USB_DWC2_GPWRDN_PMUINTSEL_POS) + +USB_DWC2_GET_FIELD_DEFINE(gpwrdn_multvalidbc, GPWRDN_MULTVALIDBC) +USB_DWC2_GET_FIELD_DEFINE(gpwrdn_linestate, GPWRDN_LINESTATE) + /* GDFIFOCFG register */ #define USB_DWC2_GDFIFOCFG 0x005CUL #define USB_DWC2_GDFIFOCFG_EPINFOBASEADDR_POS 16UL @@ -565,13 +756,23 @@ USB_DWC2_SET_FIELD_DEFINE(dctl_tstctl, DCTL_TSTCTL) /* Device status register */ #define USB_DWC2_DSTS 0x0808UL +#define USB_DWC2_DSTS_DEVLNSTS_POS 22UL +#define USB_DWC2_DSTS_DEVLNSTS_MASK (0x3UL << USB_DWC2_DSTS_DEVLNSTS_POS) +#define USB_DWC2_DSTS_SOFFN_POS 8UL +#define USB_DWC2_DSTS_SOFFN_MASK (0x3FFFUL << USB_DWC2_DSTS_SOFFN_POS) +#define USB_DWC2_DSTS_ERRTICERR_POS 3UL +#define USB_DWC2_DSTS_ERRTICERR BIT(USB_DWC2_DSTS_ERRTICERR_POS) #define USB_DWC2_DSTS_ENUMSPD_POS 1UL #define USB_DWC2_DSTS_ENUMSPD_MASK (0x3UL << USB_DWC2_DSTS_ENUMSPD_POS) #define USB_DWC2_DSTS_ENUMSPD_HS3060 0 #define USB_DWC2_DSTS_ENUMSPD_FS3060 1 #define USB_DWC2_DSTS_ENUMSPD_LS6 2 #define USB_DWC2_DSTS_ENUMSPD_FS48 3 +#define USB_DWC2_DSTS_SUSPSTS_POS 0UL +#define USB_DWC2_DSTS_SUSPSTS BIT(USB_DWC2_DSTS_SUSPSTS_POS) +USB_DWC2_GET_FIELD_DEFINE(dsts_devlnsts, DSTS_DEVLNSTS) +USB_DWC2_GET_FIELD_DEFINE(dsts_soffn, DSTS_SOFFN) USB_DWC2_GET_FIELD_DEFINE(dsts_enumspd, DSTS_ENUMSPD) /* Device all endpoints interrupt registers */ @@ -622,8 +823,10 @@ USB_DWC2_SET_FIELD_DEFINE(dthrctl_txthrlen, DTHRCTL_TXTHRLEN) #define USB_DWC2_DEPCTL_EPDIS BIT(USB_DWC2_DEPCTL_EPDIS_POS) #define USB_DWC2_DEPCTL_SETD1PID_POS 29UL #define USB_DWC2_DEPCTL_SETD1PID BIT(USB_DWC2_DEPCTL_SETD1PID_POS) +#define USB_DWC2_DEPCTL_SETODDFR USB_DWC2_DEPCTL_SETD1PID #define USB_DWC2_DEPCTL_SETD0PID_POS 28UL #define USB_DWC2_DEPCTL_SETD0PID BIT(USB_DWC2_DEPCTL_SETD0PID_POS) +#define USB_DWC2_DEPCTL_SETEVENFR USB_DWC2_DEPCTL_SETD0PID #define USB_DWC2_DEPCTL_SNAK_POS 27UL #define USB_DWC2_DEPCTL_SNAK BIT(USB_DWC2_DEPCTL_SNAK_POS) #define USB_DWC2_DEPCTL_CNAK_POS 26UL @@ -730,40 +933,91 @@ USB_DWC2_SET_FIELD_DEFINE(depctl_mps, DEPCTL_MPS) #define USB_DWC2_DOEPINT_XFERCOMPL_POS 0UL #define USB_DWC2_DOEPINT_XFERCOMPL BIT(USB_DWC2_DOEPINT_XFERCOMPL_POS) -/* - * Device IN/OUT control endpoint transfer size register - */ +/* Device IN control endpoint transfer size register */ #define USB_DWC2_DIEPTSIZ0 0x0910UL +#define USB_DWC2_DIEPTSIZ0_PKTCNT_POS 19UL +#define USB_DWC2_DIEPTSIZ0_PKTCNT_MASK (0x3UL << USB_DWC2_DIEPTSIZ0_PKTCNT_POS) +#define USB_DWC2_DIEPTSIZ0_XFERSIZE_POS 0UL +#define USB_DWC2_DIEPTSIZ0_XFERSIZE_MASK 0x7FUL + +USB_DWC2_GET_FIELD_DEFINE(dieptsiz0_pktcnt, DIEPTSIZ0_PKTCNT) +USB_DWC2_GET_FIELD_DEFINE(dieptsiz0_xfersize, DIEPTSIZ0_XFERSIZE) + +/* Device OUT control endpoint transfer size register */ #define USB_DWC2_DOEPTSIZ0 0x0B10UL #define USB_DWC2_DOEPTSIZ0_SUPCNT_POS 29UL #define USB_DWC2_DOEPTSIZ0_SUPCNT_MASK (0x3UL << USB_DWC2_DOEPTSIZ0_SUPCNT_POS) #define USB_DWC2_DOEPTSIZ0_PKTCNT_POS 19UL #define USB_DWC2_DOEPTSIZ0_PKTCNT_MASK (0x1UL << USB_DWC2_DOEPTSIZ0_PKTCNT_POS) -#define USB_DWC2_DIEPTSIZ0_PKTCNT_POS 19UL -#define USB_DWC2_DIEPTSIZ0_PKTCNT_MASK (0x3UL << USB_DWC2_DIEPTSIZ0_PKTCNT_POS) -#define USB_DWC2_DEPTSIZ0_XFERSIZE_POS 0UL -#define USB_DWC2_DEPTSIZ0_XFERSIZE_MASK 0x7FUL +#define USB_DWC2_DOEPTSIZ0_XFERSIZE_POS 0UL +#define USB_DWC2_DOEPTSIZ0_XFERSIZE_MASK 0x7FUL USB_DWC2_GET_FIELD_DEFINE(doeptsiz0_supcnt, DOEPTSIZ0_SUPCNT) USB_DWC2_GET_FIELD_DEFINE(doeptsiz0_pktcnt, DOEPTSIZ0_PKTCNT) -USB_DWC2_GET_FIELD_DEFINE(doeptsiz0_xfersize, DEPTSIZ0_XFERSIZE) -USB_DWC2_GET_FIELD_DEFINE(dieptsiz0_pktcnt, DIEPTSIZ0_PKTCNT) -USB_DWC2_GET_FIELD_DEFINE(dieptsiz0_xfersize, DEPTSIZ0_XFERSIZE) +USB_DWC2_GET_FIELD_DEFINE(doeptsiz0_xfersize, DOEPTSIZ0_XFERSIZE) /* - * Device IN/OUT endpoint transfer size register - * IN at offsets 0x0910 + (0x20 * n), n = 1 .. x, - * OUT at offsets 0x0B10 + (0x20 * n), n = 1 .. x + * Device IN endpoint transfer size register + * at offsets 0x0910 + (0x20 * n), n = 1 .. x + */ +#define USB_DWC2_DIEPTSIZN_MC_POS 29UL +#define USB_DWC2_DIEPTSIZN_MC_MASK (0x3UL << USB_DWC2_DIEPTSIZN_MC_POS) +#define USB_DWC2_DIEPTSIZN_PKTCNT_POS 19UL +#define USB_DWC2_DIEPTSIZN_PKTCNT_MASK (0x3FFUL << USB_DWC2_DIEPTSIZN_PKTCNT_POS) +#define USB_DWC2_DIEPTSIZN_XFERSIZE_POS 0UL +#define USB_DWC2_DIEPTSIZN_XFERSIZE_MASK 0x7FFFFUL + +USB_DWC2_GET_FIELD_DEFINE(dieptsizn_mc, DIEPTSIZN_MC) +USB_DWC2_GET_FIELD_DEFINE(dieptsizn_pktcnt, DIEPTSIZN_PKTCNT) +USB_DWC2_GET_FIELD_DEFINE(dieptsizn_xfersize, DIEPTSIZN_XFERSIZE) +USB_DWC2_SET_FIELD_DEFINE(dieptsizn_mc, DIEPTSIZN_MC) +USB_DWC2_SET_FIELD_DEFINE(dieptsizn_pktcnt, DIEPTSIZN_PKTCNT) +USB_DWC2_SET_FIELD_DEFINE(dieptsizn_xfersize, DIEPTSIZN_XFERSIZE) + +/* + * Device OUT endpoint transfer size register + * at offsets 0x0B10 + (0x20 * n), n = 1 .. x */ -#define USB_DWC2_DEPTSIZN_PKTCNT_POS 19UL -#define USB_DWC2_DEPTSIZN_PKTCNT_MASK (0x3FFUL << USB_DWC2_DEPTSIZN_PKTCNT_POS) -#define USB_DWC2_DEPTSIZN_XFERSIZE_POS 0UL -#define USB_DWC2_DEPTSIZN_XFERSIZE_MASK 0x7FFFFUL - -USB_DWC2_GET_FIELD_DEFINE(deptsizn_pktcnt, DEPTSIZN_PKTCNT) -USB_DWC2_GET_FIELD_DEFINE(deptsizn_xfersize, DEPTSIZN_XFERSIZE) -USB_DWC2_SET_FIELD_DEFINE(deptsizn_pktcnt, DEPTSIZN_PKTCNT) -USB_DWC2_SET_FIELD_DEFINE(deptsizn_xfersize, DEPTSIZN_XFERSIZE) +#define USB_DWC2_DOEPTSIZN_RXDPID_POS 29UL +#define USB_DWC2_DOEPTSIZN_RXDPID_MASK (0x3UL << USB_DWC2_DOEPTSIZN_RXDPID_POS) +#define USB_DWC2_DOEPTSIZN_RXDPID_MDATA 3 +#define USB_DWC2_DOEPTSIZN_RXDPID_DATA1 2 +#define USB_DWC2_DOEPTSIZN_RXDPID_DATA2 1 +#define USB_DWC2_DOEPTSIZN_RXDPID_DATA0 0 +#define USB_DWC2_DOEPTSIZN_PKTCNT_POS 19UL +#define USB_DWC2_DOEPTSIZN_PKTCNT_MASK (0x3FFUL << USB_DWC2_DOEPTSIZN_PKTCNT_POS) +#define USB_DWC2_DOEPTSIZN_XFERSIZE_POS 0UL +#define USB_DWC2_DOEPTSIZN_XFERSIZE_MASK 0x7FFFFUL + +USB_DWC2_GET_FIELD_DEFINE(doeptsizn_rxdpid, DOEPTSIZN_RXDPID) +USB_DWC2_GET_FIELD_DEFINE(doeptsizn_pktcnt, DOEPTSIZN_PKTCNT) +USB_DWC2_GET_FIELD_DEFINE(doeptsizn_xfersize, DOEPTSIZN_XFERSIZE) +USB_DWC2_SET_FIELD_DEFINE(doeptsizn_pktcnt, DOEPTSIZN_PKTCNT) +USB_DWC2_SET_FIELD_DEFINE(doeptsizn_xfersize, DOEPTSIZN_XFERSIZE) + +/* Power and Clock Gating Control Register */ +#define USB_DWC2_PCGCCTL 0x0E00UL +#define USB_DWC2_PCGCCTL_RESTOREVALUE_POS 14UL +#define USB_DWC2_PCGCCTL_RESTOREVALUE_MASK (0x3FFFFUL << USB_DWC2_PCGCCTL_RESTOREVALUE_POS) +#define USB_DWC2_PCGCCTL_ESSREGRESTORED_POS 13UL +#define USB_DWC2_PCGCCTL_ESSREGRESTORED BIT(USB_DWC2_PCGCCTL_ESSREGRESTORED_POS) +#define USB_DWC2_PCGCCTL_RESTOREMODE_POS 9UL +#define USB_DWC2_PCGCCTL_RESTOREMODE BIT(USB_DWC2_PCGCCTL_RESTOREMODE_POS) +#define USB_DWC2_PCGCCTL_L1SUSPENDED_POS 7UL +#define USB_DWC2_PCGCCTL_L1SUSPENDED BIT(USB_DWC2_PCGCCTL_L1SUSPENDED_POS) +#define USB_DWC2_PCGCCTL_PHYSLEEP_POS 6UL +#define USB_DWC2_PCGCCTL_PHYSLEEP BIT(USB_DWC2_PCGCCTL_PHYSLEEP_POS) +#define USB_DWC2_PCGCCTL_ENBL_L1GATING_POS 5UL +#define USB_DWC2_PCGCCTL_ENBL_L1GATING BIT(USB_DWC2_PCGCCTL_ENBL_L1GATING_POS) +#define USB_DWC2_PCGCCTL_RSTPDWNMODULE_POS 3UL +#define USB_DWC2_PCGCCTL_RSTPDWNMODULE BIT(USB_DWC2_PCGCCTL_RSTPDWNMODULE_POS) +#define USB_DWC2_PCGCCTL_GATEHCLK_POS 1UL +#define USB_DWC2_PCGCCTL_GATEHCLK BIT(USB_DWC2_PCGCCTL_GATEHCLK_POS) +#define USB_DWC2_PCGCCTL_STOPPCLK_POS 0UL +#define USB_DWC2_PCGCCTL_STOPPCLK BIT(USB_DWC2_PCGCCTL_STOPPCLK_POS) + +USB_DWC2_GET_FIELD_DEFINE(pcgcctl_restorevalue, PCGCCTL_RESTOREVALUE) +USB_DWC2_SET_FIELD_DEFINE(pcgcctl_restorevalue, PCGCCTL_RESTOREVALUE) /* * Device IN/OUT endpoint transfer size register diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/udc/udc_common.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/udc/udc_common.h index 76614ac8..19cad23b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/udc/udc_common.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/udc/udc_common.h @@ -325,7 +325,7 @@ bool udc_ctrl_stage_is_status_in(const struct device *dev); * * @param[in] dev Pointer to device struct of the driver instance * - * @return true if stage is Data Stage IN + * @return true if stage is Data Stage OUT */ bool udc_ctrl_stage_is_status_out(const struct device *dev); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/udc/udc_dwc2.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/udc/udc_dwc2.h index 07cd71bc..87e71f81 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/udc/udc_dwc2.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/udc/udc_dwc2.h @@ -30,6 +30,10 @@ struct dwc2_vendor_quirks { int (*caps)(const struct device *dev); /* Called while waiting for bits that require PHY to be clocked */ int (*is_phy_clk_off)(const struct device *dev); + /* Called after hibernation entry sequence */ + int (*post_hibernation_entry)(const struct device *dev); + /* Called before hibernation exit sequence */ + int (*pre_hibernation_exit)(const struct device *dev); }; /* Driver configuration per instance */ @@ -72,5 +76,7 @@ DWC2_QUIRK_FUNC_DEFINE(shutdown) DWC2_QUIRK_FUNC_DEFINE(irq_clear) DWC2_QUIRK_FUNC_DEFINE(caps) DWC2_QUIRK_FUNC_DEFINE(is_phy_clk_off) +DWC2_QUIRK_FUNC_DEFINE(post_hibernation_entry) +DWC2_QUIRK_FUNC_DEFINE(pre_hibernation_exit) #endif /* ZEPHYR_DRIVERS_USB_UDC_DWC2_H */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/udc/udc_dwc2_vendor_quirks.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/udc/udc_dwc2_vendor_quirks.h index 57ff4c4d..f45404c2 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/udc/udc_dwc2_vendor_quirks.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb/udc/udc_dwc2_vendor_quirks.h @@ -121,7 +121,8 @@ DT_INST_FOREACH_STATUS_OKAY(QUIRK_STM32F4_FSOTG_DEFINE) * On USBHS, we cannot access the DWC2 register until VBUS is detected and * valid. If the user tries to force usbd_enable() and the corresponding * udc_enable() without a "VBUS ready" notification, the event wait will block - * until a valid VBUS signal is detected. + * until a valid VBUS signal is detected or until the + * CONFIG_UDC_DWC2_USBHS_VBUS_READY_TIMEOUT timeout expires. */ static K_EVENT_DEFINE(usbhs_events); #define USBHS_VBUS_READY BIT(0) @@ -182,15 +183,27 @@ static inline int usbhs_enable_nrfs_service(const struct device *dev) static inline int usbhs_enable_core(const struct device *dev) { NRF_USBHS_Type *wrapper = USBHS_DT_WRAPPER_REG_ADDR(0); + k_timeout_t timeout = K_FOREVER; + + #if CONFIG_NRFS_HAS_VBUS_DETECTOR_SERVICE + if (CONFIG_UDC_DWC2_USBHS_VBUS_READY_TIMEOUT) { + timeout = K_MSEC(CONFIG_UDC_DWC2_USBHS_VBUS_READY_TIMEOUT); + } + #endif if (!k_event_wait(&usbhs_events, USBHS_VBUS_READY, false, K_NO_WAIT)) { LOG_WRN("VBUS is not ready, block udc_enable()"); - k_event_wait(&usbhs_events, USBHS_VBUS_READY, false, K_FOREVER); + if (!k_event_wait(&usbhs_events, USBHS_VBUS_READY, false, timeout)) { + return -ETIMEDOUT; + } } wrapper->ENABLE = USBHS_ENABLE_PHY_Msk | USBHS_ENABLE_CORE_Msk; wrapper->TASKS_START = 1UL; + /* Wait for clock to start to avoid hang on too early register read */ + k_busy_wait(1); + /* Enable interrupts */ wrapper->INTENSET = 1UL; @@ -249,6 +262,36 @@ static inline int usbhs_is_phy_clk_off(const struct device *dev) return !k_event_test(&usbhs_events, USBHS_VBUS_READY); } +static inline int usbhs_post_hibernation_entry(const struct device *dev) +{ + const struct udc_dwc2_config *const config = dev->config; + struct usb_dwc2_reg *const base = config->base; + NRF_USBHS_Type *wrapper = USBHS_DT_WRAPPER_REG_ADDR(0); + + sys_set_bits((mem_addr_t)&base->pcgcctl, USB_DWC2_PCGCCTL_GATEHCLK); + + sys_write32(0x87, (mem_addr_t)wrapper + 0xC80); + sys_write32(0x87, (mem_addr_t)wrapper + 0xC84); + sys_write32(1, (mem_addr_t)wrapper + 0x004); + + return 0; +} + +static inline int usbhs_pre_hibernation_exit(const struct device *dev) +{ + const struct udc_dwc2_config *const config = dev->config; + struct usb_dwc2_reg *const base = config->base; + NRF_USBHS_Type *wrapper = USBHS_DT_WRAPPER_REG_ADDR(0); + + sys_clear_bits((mem_addr_t)&base->pcgcctl, USB_DWC2_PCGCCTL_GATEHCLK); + + wrapper->TASKS_START = 1; + sys_write32(0, (mem_addr_t)wrapper + 0xC80); + sys_write32(0, (mem_addr_t)wrapper + 0xC84); + + return 0; +} + #define QUIRK_NRF_USBHS_DEFINE(n) \ struct dwc2_vendor_quirks dwc2_vendor_quirks_##n = { \ .init = usbhs_enable_nrfs_service, \ @@ -258,6 +301,8 @@ static inline int usbhs_is_phy_clk_off(const struct device *dev) .irq_clear = usbhs_irq_clear, \ .caps = usbhs_init_caps, \ .is_phy_clk_off = usbhs_is_phy_clk_off, \ + .post_hibernation_entry = usbhs_post_hibernation_entry, \ + .pre_hibernation_exit = usbhs_pre_hibernation_exit, \ }; DT_INST_FOREACH_STATUS_OKAY(QUIRK_NRF_USBHS_DEFINE) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb_c/tcpc/ps8xxx_priv.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb_c/tcpc/ps8xxx_priv.h new file mode 100644 index 00000000..ed03a4d5 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb_c/tcpc/ps8xxx_priv.h @@ -0,0 +1,18 @@ +/* + * Copyright 2024 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/* Note: The Product ID will read as 0x8803 if the firmware has malfunctioned in 8705, 8755 and + * 8805. Also the Product ID can be invalid if chip is before or during the power-up and + * initialization process. + */ +#define PS8705_PRODUCT_ID 0x8705 +#define PS8745_PRODUCT_ID 0x8745 +#define PS8751_PRODUCT_ID 0x8751 +#define PS8755_PRODUCT_ID 0x8755 +#define PS8805_PRODUCT_ID 0x8805 +#define PS8815_PRODUCT_ID 0x8815 + +/** PS8815 only - vendor specific register for firmware version */ +#define PS8815_REG_FW_VER 0x82 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb_c/tcpc/ucpd_numaker.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb_c/tcpc/ucpd_numaker.h new file mode 100644 index 00000000..81d6939c --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/usb_c/tcpc/ucpd_numaker.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_USBC_TCPC_UCPD_NUMAKER_H_ +#define ZEPHYR_DRIVERS_USBC_TCPC_UCPD_NUMAKER_H_ + +#include +#include + +/* TCPC exported for PPC */ +int numaker_tcpc_ppc_is_dead_battery_mode(const struct device *dev); +int numaker_tcpc_ppc_exit_dead_battery_mode(const struct device *dev); +int numaker_tcpc_ppc_is_vbus_source(const struct device *dev); +int numaker_tcpc_ppc_is_vbus_sink(const struct device *dev); +int numaker_tcpc_ppc_set_snk_ctrl(const struct device *dev, bool enable); +int numaker_tcpc_ppc_set_src_ctrl(const struct device *dev, bool enable); +int numaker_tcpc_ppc_set_vbus_discharge(const struct device *dev, bool enable); +int numaker_tcpc_ppc_is_vbus_present(const struct device *dev); +int numaker_tcpc_ppc_set_event_handler(const struct device *dev, usbc_ppc_event_cb_t handler, + void *data); +int numaker_tcpc_ppc_dump_regs(const struct device *dev); + +/* TCPC exported for VBUS */ +bool numaker_tcpc_vbus_check_level(const struct device *dev, enum tc_vbus_level level); +int numaker_tcpc_vbus_measure(const struct device *dev, int *vbus_meas); +int numaker_tcpc_vbus_discharge(const struct device *dev, bool enable); +int numaker_tcpc_vbus_enable(const struct device *dev, bool enable); + +#endif /* ZEPHYR_DRIVERS_USBC_TCPC_UCPD_NUMAKER_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/watchdog/wdt_dw.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/watchdog/wdt_dw.h index d3af812d..c28ac8d3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/watchdog/wdt_dw.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/watchdog/wdt_dw.h @@ -326,10 +326,11 @@ static inline void dw_wdt_response_mode_set(const uint32_t base, const bool mode { uint32_t control = sys_read32(base + WDT_CR); - if (mode) + if (mode) { control |= WDT_CR_RMOD; - else + } else { control &= ~WDT_CR_RMOD; + } sys_write32(control, base + WDT_CR); } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/eswifi/eswifi.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/eswifi/eswifi.h index 54bf00f0..0bf4fddb 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/eswifi/eswifi.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/eswifi/eswifi.h @@ -92,9 +92,9 @@ static inline int eswifi_request(struct eswifi_dev *eswifi, char *cmd, static inline void eswifi_lock(struct eswifi_dev *eswifi) { /* Nested locking */ - if (atomic_get(&eswifi->mutex_owner) != (atomic_t)(uintptr_t)_current) { + if (atomic_get(&eswifi->mutex_owner) != (atomic_t)(uintptr_t)arch_current_thread()) { k_mutex_lock(&eswifi->mutex, K_FOREVER); - atomic_set(&eswifi->mutex_owner, (atomic_t)(uintptr_t)_current); + atomic_set(&eswifi->mutex_owner, (atomic_t)(uintptr_t)arch_current_thread()); eswifi->mutex_depth = 1; } else { eswifi->mutex_depth++; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/infineon/airoc_whd_hal_common.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/infineon/airoc_whd_hal_common.h new file mode 100644 index 00000000..588073d5 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/infineon/airoc_whd_hal_common.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2023 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include +#include + +/** Defines the amount of stack memory available for the wifi thread. */ +#if !defined(CY_WIFI_THREAD_STACK_SIZE) +#define CY_WIFI_THREAD_STACK_SIZE (5120) +#endif + +/** Defines the priority of the thread that services wifi packets. Legal values are defined by the + * RTOS being used. + */ +#if !defined(CY_WIFI_THREAD_PRIORITY) +#define CY_WIFI_THREAD_PRIORITY (CY_RTOS_PRIORITY_HIGH) +#endif + +/** Defines the country this will operate in for wifi initialization parameters. See the + * wifi-host-driver's whd_country_code_t for legal options. + */ +#if !defined(CY_WIFI_COUNTRY) +#define CY_WIFI_COUNTRY (WHD_COUNTRY_AUSTRALIA) +#endif + +/** Defines the priority of the interrupt that handles out-of-band notifications from the wifi + * chip. Legal values are defined by the MCU running this code. + */ +#if !defined(CY_WIFI_OOB_INTR_PRIORITY) +#define CY_WIFI_OOB_INTR_PRIORITY (2) +#endif + +/** Defines whether to use the out-of-band pin to allow the WIFI chip to wake up the MCU. */ +#if defined(CY_WIFI_HOST_WAKE_SW_FORCE) +#define CY_USE_OOB_INTR (CY_WIFI_HOST_WAKE_SW_FORCE) +#else +#define CY_USE_OOB_INTR (1u) +#endif /* defined(CY_WIFI_HOST_WAKE_SW_FORCE) */ + +#define CY_WIFI_HOST_WAKE_IRQ_EVENT GPIO_INT_TRIG_LOW +#define DEFAULT_OOB_PIN (0) +#define WLAN_POWER_UP_DELAY_MS (250) +#define WLAN_CBUCK_DISCHARGE_MS (10) + +extern whd_resource_source_t resource_ops; + +int airoc_wifi_power_on(const struct device *dev); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/infineon/airoc_wifi.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/infineon/airoc_wifi.h index 1bf688e5..8b308e36 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/infineon/airoc_wifi.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/infineon/airoc_wifi.h @@ -6,16 +6,44 @@ */ #include -#include -#include #include #include + +#ifdef CONFIG_AIROC_WIFI_BUS_SDIO +#include +#include +#endif +#ifdef CONFIG_AIROC_WIFI_BUS_SPI +#include +#endif + #include +#define DT_DRV_COMPAT infineon_airoc_wifi + +#if DT_PROP(DT_DRV_INST(0), spi_data_irq_shared) +#define SPI_DATA_IRQ_SHARED +#include + +#define PINCTRL_STATE_HOST_WAKE PINCTRL_STATE_PRIV_START +#endif + +#if defined(CONFIG_AIROC_WIFI_BUS_SPI) +#define AIROC_WIFI_SPI_OPERATION (SPI_WORD_SET(DT_PROP_OR(DT_DRV_INST(0), spi_word_size, 8)) \ + | (DT_PROP(DT_DRV_INST(0), spi_half_duplex) \ + ? SPI_HALF_DUPLEX : SPI_FULL_DUPLEX) \ + | SPI_TRANSFER_MSB) +#endif + struct airoc_wifi_data { +#if defined(CONFIG_AIROC_WIFI_BUS_SDIO) struct sd_card card; struct sdio_func sdio_func1; struct sdio_func sdio_func2; +#endif +#if defined(SPI_DATA_IRQ_SHARED) + uint8_t prev_irq_state; +#endif struct net_if *iface; bool second_interface_init; bool is_ap_up; @@ -34,11 +62,26 @@ struct airoc_wifi_data { uint8_t frame_buf[NET_ETH_MAX_FRAME_SIZE]; }; +union airoc_wifi_bus { +#if defined(CONFIG_AIROC_WIFI_BUS_SDIO) + const struct device *bus_sdio; +#endif +#if defined(CONFIG_AIROC_WIFI_BUS_SPI) + const struct spi_dt_spec bus_spi; +#endif +}; + struct airoc_wifi_config { - const struct device *sdhc_dev; + const union airoc_wifi_bus bus_dev; struct gpio_dt_spec wifi_reg_on_gpio; struct gpio_dt_spec wifi_host_wake_gpio; struct gpio_dt_spec wifi_dev_wake_gpio; +#if defined(CONFIG_AIROC_WIFI_BUS_SPI) + struct gpio_dt_spec bus_select_gpio; +#if defined(SPI_DATA_IRQ_SHARED) + const struct pinctrl_dev_config *pcfg; +#endif +#endif }; /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/infineon/cybsp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/infineon/cybsp.h index dfa23ffb..ef371244 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/infineon/cybsp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/infineon/cybsp.h @@ -5,4 +5,15 @@ * SPDX-License-Identifier: Apache-2.0 */ -/* This is enpty/stub file used in WHD */ +/* required by whd_* header files. */ + +/* See cybsp_types.h, which is usually required by this file, but not available */ +/* here unless we pull in board-specific headers from the upstream driver. */ +#define CYBSP_SDIO_INTERFACE (0) +#define CYBSP_SPI_INTERFACE (1) + +#ifdef CONFIG_AIROC_WIFI_BUS_SDIO +#define CYBSP_WIFI_INTERFACE_TYPE CYBSP_SDIO_INTERFACE +#elif CONFIG_AIROC_WIFI_BUS_SPI +#define CYBSP_WIFI_INTERFACE_TYPE CYBSP_SPI_INTERFACE +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/coex.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/coex.h new file mode 100644 index 00000000..969a4c96 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/coex.h @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @brief Header containing Coexistence APIs. + */ + +#ifndef __COEX_H__ +#define __COEX_H__ + +#include + +/* Indicates WLAN frequency band of operation */ +enum nrf_wifi_pta_wlan_op_band { + NRF_WIFI_PTA_WLAN_OP_BAND_2_4_GHZ = 0, + NRF_WIFI_PTA_WLAN_OP_BAND_5_GHZ, + NRF_WIFI_PTA_WLAN_OP_BAND_NONE = 0xFF +}; + +/** + * @function nrf_wifi_coex_config_pta(enum nrf_wifi_pta_wlan_op_band wlan_band, + * bool separate_antennas, bool is_sr_protocol_ble) + * + * @brief Function used to configure PTA tables of coexistence hardware. + * + * @param[in] enum nrf_wifi_pta_wlan_op_band wlan_band + * @param[in] separate_antennas + * Indicates whether separate antenans are used or not. + * @param[in] is_sr_protocol_ble + * Indicates if SR protocol is Bluetooth LE or not. + * @return Returns status of configuration. + * Returns zero upon successful configuration. + * Returns non-zero upon unsuccessful configuration. + */ +int nrf_wifi_coex_config_pta(enum nrf_wifi_pta_wlan_op_band wlan_band, bool separate_antennas, + bool is_sr_protocol_ble); + +#if defined(CONFIG_NRF70_SR_COEX_RF_SWITCH) || defined(__DOXYGEN__) +/** + * @function nrf_wifi_config_sr_switch(bool separate_antennas) + * + * @brief Function used to configure SR side switch (nRF5340 side switch in nRF7002 DK). + * + * @param[in] separate_antennas + * Indicates whether separate antenans are used or not. + * + * @return Returns status of configuration. + * Returns zero upon successful configuration. + * Returns non-zero upon unsuccessful configuration. + */ +int nrf_wifi_config_sr_switch(bool separate_antennas); +#endif /* CONFIG_NRF70_SR_COEX_RF_SWITCH */ + +/** + * @function nrf_wifi_coex_config_non_pta(bool separate_antennas) + * + * @brief Function used to configure non-PTA registers of coexistence hardware. + * + * @param[in] separate_antennas + * Indicates whether separate antenans are used or not. + * @param[in] is_sr_protocol_ble + * Indicates if SR protocol is Bluetooth LE or not. + * + * @return Returns status of configuration. + * Returns zero upon successful configuration. + * Returns non-zero upon unsuccessful configuration. + */ +int nrf_wifi_coex_config_non_pta(bool separate_antennas, bool is_sr_protocol_ble); + +/** + * @function nrf_wifi_coex_hw_reset(void) + * + * @brief Function used to reset coexistence hardware. + * + * @return Returns status of configuration. + * Returns zero upon successful configuration. + * Returns non-zero upon unsuccessful configuration. + */ +int nrf_wifi_coex_hw_reset(void); + +#endif /* __COEX_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/coex_struct.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/coex_struct.h new file mode 100644 index 00000000..a6695b47 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/coex_struct.h @@ -0,0 +1,182 @@ +/** + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @brief Structures and related enumerations used in Coexistence. + */ + +#ifndef __COEX_STRUCT_H__ +#define __COEX_STRUCT_H__ + +#include +#include + +/* Max size of message buffer (exchanged between host and MAC). This is in "bytes" */ +#define MAX_MESSAGE_BUF_SIZE 320 +/* Number of elements in coex_ch_configuration other than configbuf[] */ +#define NUM_ELEMENTS_EXCL_CONFIGBUF 4 +/* Each configuration value is of type uint32_t */ +#define MAX_NUM_CONFIG_VALUES ((MAX_MESSAGE_BUF_SIZE-\ + (NUM_ELEMENTS_EXCL_CONFIGBUF*sizeof(uint32_t)))>>2) +/* Number of elements in coex_sr_traffic_info other than sr_traffic_info[] */ +#define NUM_ELEMENTS_EXCL_SRINFOBUF 1 +/* Each SR Traffic Info is of type uint32_t */ +#define MAX_SR_TRAFFIC_BUF_SIZE 32 + +enum { + /** Used two different values for AGGREGATION module because offset from base is + * beyond supported message buffer size for WAIT_STATE_1_TIME register + */ + COEX_HARDWARE = 1, + MAC_CTRL, + MAC_CTRL_AGG_WAIT_STATE_1_TIME, + MAC_CTRL_AGG, + MAC_CTRL_DEAGG, + WLAN_CTRL, +}; + +/* IDs of different messages posted from Coexistence Driver to Coexistence Manager */ +enum { + /* To insturct Coexistence Manager to collect and post SR traffic information */ + COLLECT_SR_TRAFFIC_INFO = 1, + /* To insturct Coexistence Manager to allocate a priority window to SR */ + ALLOCATE_PTI_WINDOW, + /* To do configuration of hardware related to coexistence */ + HW_CONFIGURATION, + /* To start allocating periodic priority windows to Wi-Fi and SR */ + ALLOCATE_PPW, + /* To start allocating virtual priority windows to Wi-Fi */ + ALLOCATE_VPW, + /* To configure CM SW parameters */ + SW_CONFIGURATION, + /* To control sheliak side switch */ + UPDATE_SWITCH_CONFIG +}; + +/* ID(s) of different messages posted from Coexistence Manager to Coexistence Driver */ +enum { + /* To post SR traffic information */ + SR_TRAFFIC_INFO = 1 +}; + +/** + * struct coex_collect_sr_traffic_info - Message from CD to CM to request SR traffic info. + * @message_id: Indicates message ID. This is to be set to COLLECT_SR_TRAFFIC_INFO. + * @num_sets_requested: Indicates the number of sets of duration and periodicity to be collected. + * + * Message from CD to CM to request SR traffic information. + */ +struct coex_collect_sr_traffic_info { + uint32_t message_id; + uint32_t num_sets_requested; +}; + +/** + * struct coex_ch_configuration -Message from CD to CM to configure CH. + * @message_id: Indicates message ID. This is to be set to HW_CONFIGURATION. + * @num_reg_to_config: Indicates the number of registers to be configured. + * @hw_to_config: Indicates the hardware block that is to be configured. + * @hw_block_base_addr: Base address of the hardware block to be configured. + * @configbuf: Configuration buffer that holds packed offset and configuration value. + * + * Message from CD to CM to configure CH + */ +struct coex_ch_configuration { + uint32_t message_id; + uint32_t num_reg_to_config; + uint32_t hw_to_config; + uint32_t hw_block_base_addr; + uint32_t configbuf[MAX_NUM_CONFIG_VALUES]; +}; + +/** + * struct coex_allocate_pti_window - Message to CM to request a priority window. + * @message_id: Indicates message ID. This is to be set to ALLOCATE_PTI_WINDOW. + * @device_req_window: Indicates device requesting a priority window. + * @window_start_or_end: Indicates if request is posted to START or END a priority window. + * @imp_of_request: Indicates importance of activity for which the window is requested. + * @can_be_deferred: activity of Wi-Fi/SR, for which window is requested can be deferred or not. + * + * Message to CM to request a priority window + */ +struct coex_allocate_pti_window { + uint32_t message_id; + uint32_t device_req_window; + uint32_t window_start_or_end; + uint32_t imp_of_request; + uint32_t can_be_deferred; +}; + +/** + * struct coex_allocate_ppw - Message from CD to CM to allocate Periodic Priority Windows. + * @message_id: Indicates message ID. This is to be set to ALLOCATE_PPW. + * @start_or_stop: Indiates start or stop allocation of PPWs. + * @first_pti_window: Indicates first priority window in the series of PPWs. + * @ps_mechanism: Indicates recommended powersave mechanism for Wi-Fi's downlink. + * @wifi_window_duration: Indicates duration of Wi-Fi priority window. + * @sr_window_duration: Indicates duration of SR priority window. + * + * Message from CD to CM to allocate Periodic Priority Windows. + */ +struct coex_allocate_ppw { + uint32_t message_id; + uint32_t start_or_stop; + uint32_t first_pti_window; + uint32_t ps_mechanism; + uint32_t wifi_window_duration; + uint32_t sr_window_duration; +}; + +/** + * struct coex_allocate_vpw - Message from CD to CM to allocate Virtual Priority Windows. + * @message_id: Indicates message ID. This is to be set to ALLOCATE_VPW. + * @start_or_stop: Indicates start or stop allocation of VPWs. + * @wifi_window_duration: Indicates duration of Wi-Fi virtual priority window. + * @ps_mechanism: Indicates recommended powersave mechanism for Wi-Fi's downlink. + * + * Message from CD to CM to allocate Virtual Priority Windows. + */ +struct coex_allocate_vpw { + uint32_t message_id; + uint32_t start_or_stop; + uint32_t wifi_window_duration; + uint32_t ps_mechanism; +}; + +/** + * struct coex_config_cm_params - Message from CD to CM to configure CM parameters + * @message_id: Indicates message ID. This is to be set to SW_CONFIGURATION. + * @first_isr_trigger_period: microseconds . used to trigger the ISR mechanism. + * @sr_window_poll_periodicity_vpw: microseconds. This is used to poll through SR window. + * that comes after Wi-Fi window ends and next SR activity starts, in the case of VPWs. + * @lead_time_from_end_of_wlan_win: microseconds. Lead time from the end of Wi-Fi window. + * (to inform AP that Wi-Fi is entering powersave) in the case of PPW and VPW generation. + * @sr_window_poll_count_threshold: This is equal to "Wi-Fi contention timeout. + * threshold"/sr_window_poll_periodicity_vpw. + * + * Message from CD to CM to configure CM parameters. + */ +struct coex_config_cm_params { + uint32_t message_id; + uint32_t first_isr_trigger_period; + uint32_t sr_window_poll_periodicity_vpw; + uint32_t lead_time_from_end_of_wlan_win; + uint32_t sr_window_poll_count_threshold; +}; + +/** + * struct coex_sr_traffic_info - Message from CM to CD to post SR traffic information. + * @message_id: Indicates message ID. This is to be set to SR_TRAFFIC_INFO. + * @sr_traffic_info: Traffic information buffer. + * + * Message from CM to CD to post SR traffic inforamtion + */ +struct coex_sr_traffic_info { + uint32_t message_id; + uint32_t sr_traffic_info[MAX_SR_TRAFFIC_BUF_SIZE]; +}; + +#endif /* __COEX_STRUCT_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/fmac_main.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/fmac_main.h new file mode 100644 index 00000000..de678006 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/fmac_main.h @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @brief Header containing FMAC interface specific declarations for the + * Zephyr OS layer of the Wi-Fi driver. + */ + +#ifndef __ZEPHYR_FMAC_MAIN_H__ +#define __ZEPHYR_FMAC_MAIN_H__ + +#include + +#include + +#include +#include +#ifndef CONFIG_NRF70_RADIO_TEST +#include +#include +#ifdef CONFIG_NETWORKING +#include +#endif /* CONFIG_NETWORKING */ +#ifdef CONFIG_NRF70_STA_MODE +#include +#endif /* CONFIG_NRF70_STA_MODE */ +#endif /* !CONFIG_NRF70_RADIO_TEST */ + +#include +#include + +#define NRF70_DRIVER_VERSION "1."KERNEL_VERSION_STRING + +#ifndef CONFIG_NRF70_OFFLOADED_RAW_TX +#ifndef CONFIG_NRF70_RADIO_TEST +struct nrf_wifi_vif_ctx_zep { + const struct device *zep_dev_ctx; + struct net_if *zep_net_if_ctx; + void *supp_drv_if_ctx; + void *rpu_ctx_zep; + unsigned char vif_idx; + struct k_mutex vif_lock; + + scan_result_cb_t disp_scan_cb; + bool scan_in_progress; + int scan_type; + uint16_t max_bss_cnt; + unsigned int scan_res_cnt; + struct k_work_delayable scan_timeout_work; + + struct net_eth_addr mac_addr; + int if_type; + char ifname[16]; + enum nrf_wifi_fmac_if_op_state if_op_state; + bool set_if_event_received; + int set_if_status; +#ifdef CONFIG_NET_STATISTICS_ETHERNET + struct net_stats_eth eth_stats; +#endif /* CONFIG_NET_STATISTICS_ETHERNET */ +#ifdef CONFIG_NRF70_STA_MODE + unsigned int assoc_freq; + enum nrf_wifi_fmac_if_carr_state if_carr_state; + struct wpa_signal_info *signal_info; + struct wpa_conn_info *conn_info; + struct zep_wpa_supp_dev_callbk_fns supp_callbk_fns; + unsigned char twt_flows_map; + unsigned char twt_flow_in_progress_map; + struct wifi_ps_config *ps_info; + bool ps_config_info_evnt; + bool authorized; + bool cookie_resp_received; +#ifdef CONFIG_NRF70_DATA_TX + struct k_work nrf_wifi_net_iface_work; +#endif /* CONFIG_NRF70_DATA_TX */ + unsigned long rssi_record_timestamp_us; + signed short rssi; +#endif /* CONFIG_NRF70_STA_MODE */ +#ifdef CONFIG_NRF70_AP_MODE + int inactive_time_sec; +#endif /* CONFIG_NRF70_AP_MODE */ +#ifdef CONFIG_NRF_WIFI_RPU_RECOVERY + struct k_work nrf_wifi_rpu_recovery_work; +#endif /* CONFIG_NRF_WIFI_RPU_RECOVERY */ + int rts_threshold_value; +}; + +struct nrf_wifi_vif_ctx_map { + const char *ifname; + struct nrf_wifi_vif_ctx_zep *vif_ctx; +}; +#endif /* !CONFIG_NRF70_RADIO_TEST */ + +struct nrf_wifi_ctx_zep { + void *drv_priv_zep; + void *rpu_ctx; +#ifdef CONFIG_NRF70_RADIO_TEST + struct rpu_conf_params conf_params; + bool rf_test_run; + unsigned char rf_test; +#else /* CONFIG_NRF70_RADIO_TEST */ + struct nrf_wifi_vif_ctx_zep vif_ctx_zep[MAX_NUM_VIFS]; +#ifdef CONFIG_NRF70_UTIL + struct rpu_conf_params conf_params; +#endif /* CONFIG_NRF70_UTIL */ +#endif /* CONFIG_NRF70_RADIO_TEST */ + unsigned char *extended_capa, *extended_capa_mask; + unsigned int extended_capa_len; + struct k_mutex rpu_lock; +#ifdef CONFIG_NRF_WIFI_RPU_RECOVERY + bool rpu_recovery_in_progress; + unsigned long last_rpu_recovery_time_ms; + unsigned int rpu_recovery_retries; + int rpu_recovery_success; + int rpu_recovery_failure; +#endif /* CONFIG_NRF_WIFI_RPU_RECOVERY */ +}; + +struct nrf_wifi_drv_priv_zep { + struct nrf_wifi_fmac_priv *fmac_priv; + /* TODO: Replace with a linked list to handle unlimited RPUs */ + struct nrf_wifi_ctx_zep rpu_ctx_zep; +}; + +extern struct nrf_wifi_drv_priv_zep rpu_drv_priv_zep; + +void nrf_wifi_scan_timeout_work(struct k_work *work); + +void configure_tx_pwr_settings(struct nrf_wifi_tx_pwr_ctrl_params *tx_pwr_ctrl_params, + struct nrf_wifi_tx_pwr_ceil_params *tx_pwr_ceil_params); +void configure_board_dep_params(struct nrf_wifi_board_params *board_params); +void set_tx_pwr_ceil_default(struct nrf_wifi_tx_pwr_ceil_params *pwr_ceil_params); +const char *nrf_wifi_get_drv_version(void); +enum nrf_wifi_status nrf_wifi_fmac_dev_add_zep(struct nrf_wifi_drv_priv_zep *drv_priv_zep); +enum nrf_wifi_status nrf_wifi_fmac_dev_rem_zep(struct nrf_wifi_drv_priv_zep *drv_priv_zep); +struct nrf_wifi_vif_ctx_zep *nrf_wifi_get_vif_ctx(struct net_if *iface); +#ifdef CONFIG_NRF_WIFI_RPU_RECOVERY +void nrf_wifi_rpu_recovery_cb(void *vif_ctx, + void *event_data, + unsigned int event_len); +#endif /* CONFIG_NRF_WIFI_RPU_RECOVERY */ +#endif /* !CONFIG_NRF70_OFFLOADED_RAW_TX */ +#ifdef CONFIG_NRF_WIFI_BUILD_ONLY_MODE +inline enum nrf_wifi_status nrf_wifi_fw_load(void *rpu_ctx) +{ + (void)rpu_ctx; + + return NRF_WIFI_STATUS_SUCCESS; +} +#else +enum nrf_wifi_status nrf_wifi_fw_load(void *rpu_ctx); +#endif /* CONFIG_NRF_WIFI_BUILD_ONLY_MODE */ +#endif /* __ZEPHYR_FMAC_MAIN_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/net_if.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/net_if.h new file mode 100644 index 00000000..8d97802b --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/net_if.h @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @brief Header containing network stack interface specific declarations for + * the Zephyr OS layer of the Wi-Fi driver. + */ + +#ifndef __ZEPHYR_NET_IF_H__ +#define __ZEPHYR_NET_IF_H__ +#include +#include +#include +#include +#include +#include + +#define UNICAST_MASK GENMASK(7, 1) +#define LOCAL_BIT BIT(1) + +void nrf_wifi_if_init_zep(struct net_if *iface); + +int nrf_wifi_if_start_zep(const struct device *dev); + +int nrf_wifi_if_stop_zep(const struct device *dev); + +int nrf_wifi_if_set_config_zep(const struct device *dev, + enum ethernet_config_type type, + const struct ethernet_config *config); + +int nrf_wifi_if_get_config_zep(const struct device *dev, + enum ethernet_config_type type, + struct ethernet_config *config); + +enum ethernet_hw_caps nrf_wifi_if_caps_get(const struct device *dev); + +int nrf_wifi_if_send(const struct device *dev, + struct net_pkt *pkt); + +void nrf_wifi_if_rx_frm(void *os_vif_ctx, + void *frm); + +#if defined(CONFIG_NRF70_RAW_DATA_RX) || defined(CONFIG_NRF70_PROMISC_DATA_RX) +void nrf_wifi_if_sniffer_rx_frm(void *os_vif_ctx, + void *frm, + struct raw_rx_pkt_header *raw_rx_hdr, + bool pkt_free); +#endif /* CONFIG_NRF70_RAW_DATA_RX || CONFIG_NRF70_PROMISC_DATA_RX */ + +enum nrf_wifi_status nrf_wifi_if_carr_state_chg(void *os_vif_ctx, + enum nrf_wifi_fmac_if_carr_state carr_state); + +int nrf_wifi_stats_get(const struct device *dev, + struct net_stats_wifi *stats); + +struct net_stats_eth *nrf_wifi_eth_stats_get(const struct device *dev); + +void nrf_wifi_set_iface_event_handler(void *os_vif_ctx, + struct nrf_wifi_umac_event_set_interface *event, + unsigned int event_len); + +int nrf_wifi_stats_reset(const struct device *dev); +#endif /* __ZEPHYR_NET_IF_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/wifi_mgmt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/wifi_mgmt.h new file mode 100644 index 00000000..e2aa91ca --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/wifi_mgmt.h @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @brief Header containing WiFi management operation implementations + * for the Zephyr OS. + */ + +#ifndef __ZEPHYR_WIFI_MGMT_H__ +#define __ZEPHYR_WIFI_MGMT_H__ +#include + +#include +#include + +#include "osal_api.h" + +/** Filter setting defines for sniffer mode. */ +#define WIFI_MGMT_DATA_CTRL_FILTER_SETTING 0xE +#define WIFI_ALL_FILTER_SETTING 0xF + +struct twt_interval_float { + unsigned short mantissa; + unsigned char exponent; +}; + +int nrf_wifi_set_power_save(const struct device *dev, + struct wifi_ps_params *params); + +int nrf_wifi_set_twt(const struct device *dev, + struct wifi_twt_params *twt_params); + +void nrf_wifi_event_proc_twt_setup_zep(void *vif_ctx, + struct nrf_wifi_umac_cmd_config_twt *twt_setup_info, + unsigned int event_len); + +void nrf_wifi_event_proc_twt_teardown_zep(void *vif_ctx, + struct nrf_wifi_umac_cmd_teardown_twt *twt_teardown_info, + unsigned int event_len); + +void nrf_wifi_event_proc_twt_sleep_zep(void *vif_ctx, + struct nrf_wifi_umac_event_twt_sleep *twt_sleep_info, + unsigned int event_len); + +int nrf_wifi_twt_teardown_flows(struct nrf_wifi_vif_ctx_zep *vif_ctx_zep, + unsigned char start_flow_id, unsigned char end_flow_id); + +int nrf_wifi_get_power_save_config(const struct device *dev, + struct wifi_ps_config *ps_config); + +void nrf_wifi_event_proc_get_power_save_info(void *vif_ctx, + struct nrf_wifi_umac_event_power_save_info *ps_info, + unsigned int event_len); + +#ifdef CONFIG_NRF70_SYSTEM_WITH_RAW_MODES +int nrf_wifi_mode(const struct device *dev, + struct wifi_mode_info *mode); +#endif + +#if defined(CONFIG_NRF70_RAW_DATA_TX) || defined(CONFIG_NRF70_RAW_DATA_RX) +int nrf_wifi_channel(const struct device *dev, + struct wifi_channel_info *channel); +#endif /* CONFIG_NRF70_RAW_DATA_TX || CONFIG_NRF70_RAW_DATA_RX */ + +#if defined(CONFIG_NRF70_RAW_DATA_RX) || defined(CONFIG_NRF70_PROMISC_DATA_RX) +int nrf_wifi_filter(const struct device *dev, + struct wifi_filter_info *filter); +#endif /* CONFIG_NRF70_RAW_DATA_RX || CONFIG_NRF70_PROMISC_DATA_RX */ + +int nrf_wifi_set_rts_threshold(const struct device *dev, + unsigned int rts_threshold); + +int nrf_wifi_get_rts_threshold(const struct device *dev, + unsigned int *rts_threshold); +#endif /* __ZEPHYR_WIFI_MGMT_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/wifi_mgmt_scan.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/wifi_mgmt_scan.h new file mode 100644 index 00000000..e97f9293 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/wifi_mgmt_scan.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @brief Header containing display scan specific declarations for the + * Zephyr OS layer of the Wi-Fi driver. + */ + +#ifndef __ZEPHYR_DISP_SCAN_H__ +#define __ZEPHYR_DISP_SCAN_H__ +#include +#include + +#include "osal_api.h" +int nrf_wifi_disp_scan_zep(const struct device *dev, struct wifi_scan_params *params, + scan_result_cb_t cb); + +enum nrf_wifi_status nrf_wifi_disp_scan_res_get_zep(struct nrf_wifi_vif_ctx_zep *vif_ctx_zep); + +void nrf_wifi_event_proc_disp_scan_res_zep(void *vif_ctx, + struct nrf_wifi_umac_event_new_scan_display_results *scan_res, + unsigned int event_len, + bool is_last); + +#ifdef CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS +void nrf_wifi_rx_bcn_prb_resp_frm(void *vif_ctx, + void *frm, + unsigned short frequency, + signed short signal); +#endif /* CONFIG_WIFI_MGMT_RAW_SCAN_RESULTS */ +#endif /* __ZEPHYR_DISP_SCAN_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/wpa_supp_if.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/wpa_supp_if.h new file mode 100644 index 00000000..c543644e --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/inc/wpa_supp_if.h @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @brief Header containing WPA supplicant interface specific declarations for + * the Zephyr OS layer of the Wi-Fi driver. + */ + +#ifndef __ZEPHYR_WPA_SUPP_IF_H__ +#define __ZEPHYR_WPA_SUPP_IF_H__ + + +#define RPU_RESP_EVENT_TIMEOUT 5000 +#ifdef CONFIG_NRF70_STA_MODE +#include + +void *nrf_wifi_wpa_supp_dev_init(void *supp_drv_if_ctx, const char *iface_name, + struct zep_wpa_supp_dev_callbk_fns *supp_callbk_fns); + +void nrf_wifi_wpa_supp_dev_deinit(void *if_priv); + +int nrf_wifi_wpa_supp_scan2(void *if_priv, struct wpa_driver_scan_params *params); + +int nrf_wifi_wpa_supp_scan_abort(void *if_priv); + +int nrf_wifi_wpa_supp_scan_results_get(void *if_priv); + +int nrf_wifi_wpa_supp_deauthenticate(void *if_priv, const char *addr, unsigned short reason_code); + +int nrf_wifi_wpa_supp_authenticate(void *if_priv, struct wpa_driver_auth_params *params, + struct wpa_bss *curr_bss); + +int nrf_wifi_wpa_supp_associate(void *if_priv, struct wpa_driver_associate_params *params); + +int nrf_wifi_wpa_set_supp_port(void *if_priv, int authorized, char *bssid); + +int nrf_wifi_wpa_supp_signal_poll(void *if_priv, struct wpa_signal_info *si, + unsigned char *bssid); + +int nrf_wifi_nl80211_send_mlme(void *if_priv, const u8 *data, size_t data_len, int noack, + unsigned int freq, int no_cck, int offchanok, unsigned int wait_time, + int cookie); + +int nrf_wifi_supp_get_wiphy(void *if_priv); + +int nrf_wifi_supp_register_frame(void *if_priv, + u16 type, const u8 *match, size_t match_len, + bool multicast); + +int nrf_wifi_wpa_supp_set_key(void *if_priv, + const unsigned char *ifname, + enum wpa_alg alg, + const unsigned char *addr, + int key_idx, + int set_tx, + const unsigned char *seq, + size_t seq_len, + const unsigned char *key, + size_t key_len, + enum key_flag key_flag); + +void nrf_wifi_wpa_supp_event_proc_scan_start(void *if_priv); + +void nrf_wifi_wpa_supp_event_proc_scan_done(void *if_priv, + struct nrf_wifi_umac_event_trigger_scan *scan_done_event, + unsigned int event_len, + int aborted); + +void nrf_wifi_wpa_supp_event_proc_scan_res(void *if_priv, + struct nrf_wifi_umac_event_new_scan_results *scan_res, + unsigned int event_len, + bool more_res); + +void nrf_wifi_wpa_supp_event_proc_auth_resp(void *if_priv, + struct nrf_wifi_umac_event_mlme *auth_resp, + unsigned int event_len); + +void nrf_wifi_wpa_supp_event_proc_assoc_resp(void *if_priv, + struct nrf_wifi_umac_event_mlme *assoc_resp, + unsigned int event_len); + +void nrf_wifi_wpa_supp_event_proc_deauth(void *if_priv, + struct nrf_wifi_umac_event_mlme *deauth, + unsigned int event_len); + +void nrf_wifi_wpa_supp_event_proc_disassoc(void *if_priv, + struct nrf_wifi_umac_event_mlme *disassoc, + unsigned int event_len); + +void nrf_wifi_wpa_supp_event_proc_get_sta(void *if_priv, + struct nrf_wifi_umac_event_new_station *info, + unsigned int event_len); + +void nrf_wifi_wpa_supp_event_proc_get_if(void *if_priv, + struct nrf_wifi_interface_info *info, + unsigned int event_len); + +void nrf_wifi_wpa_supp_event_mgmt_tx_status(void *if_priv, + struct nrf_wifi_umac_event_mlme *mlme_event, + unsigned int event_len); + + +void nrf_wifi_wpa_supp_event_proc_unprot_mgmt(void *if_priv, + struct nrf_wifi_umac_event_mlme *unprot_mgmt, + unsigned int event_len); + +void nrf_wifi_wpa_supp_event_get_wiphy(void *if_priv, + struct nrf_wifi_event_get_wiphy *get_wiphy, + unsigned int event_len); + +void nrf_wifi_wpa_supp_event_mgmt_rx_callbk_fn(void *if_priv, + struct nrf_wifi_umac_event_mlme *mgmt_rx_event, + unsigned int event_len); + +int nrf_wifi_supp_get_capa(void *if_priv, struct wpa_driver_capa *capa); + +void nrf_wifi_wpa_supp_event_mac_chgd(void *if_priv); +int nrf_wifi_supp_get_conn_info(void *if_priv, struct wpa_conn_info *info); + +void nrf_wifi_supp_event_proc_get_conn_info(void *os_vif_ctx, + struct nrf_wifi_umac_event_conn_info *info, + unsigned int event_len); +int nrf_wifi_supp_set_country(void *if_priv, const char *alpha2); +int nrf_wifi_supp_get_country(void *if_priv, char *alpha2); + +#endif /* CONFIG_NRF70_STA_MODE */ +#ifdef CONFIG_NRF70_AP_MODE +int nrf_wifi_wpa_supp_init_ap(void *if_priv, struct wpa_driver_associate_params *params); +int nrf_wifi_wpa_supp_start_ap(void *if_priv, struct wpa_driver_ap_params *params); +int nrf_wifi_wpa_supp_change_beacon(void *if_priv, struct wpa_driver_ap_params *params); +int nrf_wifi_wpa_supp_stop_ap(void *if_priv); +int nrf_wifi_wpa_supp_deinit_ap(void *if_priv); +int nrf_wifi_wpa_supp_sta_add(void *if_priv, struct hostapd_sta_add_params *params); +int nrf_wifi_wpa_supp_sta_remove(void *if_priv, const u8 *addr); +int nrf_wifi_supp_register_mgmt_frame(void *if_priv, + u16 frame_type, size_t match_len, const u8 *match); +int nrf_wifi_wpa_supp_sta_set_flags(void *if_priv, const u8 *addr, + unsigned int total_flags, unsigned int flags_or, + unsigned int flags_and); +int nrf_wifi_wpa_supp_sta_get_inact_sec(void *if_priv, const u8 *addr); +#endif /* CONFIG_NRF70_AP_MODE */ +#endif /* __ZEPHYR_WPA_SUPP_IF_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/off_raw_tx/inc/off_raw_tx.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/off_raw_tx/inc/off_raw_tx.h new file mode 100644 index 00000000..1cb6e258 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/off_raw_tx/inc/off_raw_tx.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @brief File containing internal structures for the offloaded raw TX feature in the driver. + */ + +#include "fmac_structs_common.h" +#include "osal_api.h" + +struct nrf_wifi_ctx_zep { + void *drv_priv_zep; + void *rpu_ctx; + uint8_t mac_addr[6]; +}; + + +struct nrf_wifi_off_raw_tx_drv_priv { + struct nrf_wifi_fmac_priv *fmac_priv; + /* TODO: Replace with a linked list to handle unlimited RPUs */ + struct nrf_wifi_ctx_zep rpu_ctx_zep; + struct k_spinlock lock; +}; + +enum nrf_wifi_status nrf_wifi_fw_load(void *rpu_ctx); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/src/wifi_util.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/src/wifi_util.h new file mode 100644 index 00000000..2ab188ef --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nrf_wifi/src/wifi_util.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* @file + * @brief nRF Wi-Fi radio-test mode shell module + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct nrf_wifi_ctx_zep_rt { + struct nrf_wifi_fmac_priv *fmac_priv; + struct rpu_conf_params conf_params; +}; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nxp/nxp_wifi_drv.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nxp/nxp_wifi_drv.h new file mode 100644 index 00000000..d4c1620e --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/drivers/wifi/nxp/nxp_wifi_drv.h @@ -0,0 +1,83 @@ +/** + * Copyright 2023-2024 NXP + * SPDX-License-Identifier: Apache-2.0 + * + * @file nxp_wifi_drv.h + * Shim layer between wifi driver connection manager and zephyr + * Wi-Fi L2 layer + */ + +#ifndef ZEPHYR_DRIVERS_WIFI_NNP_WIFI_DRV_H_ +#define ZEPHYR_DRIVERS_WIFI_NXP_WIFI_DRV_H_ + +#include +#include +#ifdef CONFIG_SDIO_STACK +#include +#include +#endif +#include +#include +#include + +#include "wlan_bt_fw.h" +#include "wlan.h" +#include "wm_net.h" +#if defined(CONFIG_NXP_WIFI_SHELL) +#include "wifi_shell.h" +#endif +#if defined(CONFIG_WIFI_NM_WPA_SUPPLICANT) +#include "wifi_nxp.h" +#include "rtos_wpa_supp_if.h" +#endif + +#define MAX_DATA_SIZE 1600 + +#define NXP_WIFI_SYNC_TIMEOUT_MS K_FOREVER + +#define NXP_WIFI_UAP_NETWORK_NAME "uap-network" + +#define NXP_WIFI_STA_NETWORK_NAME "sta-network" + +#define NXP_WIFI_EVENT_BIT(event) (1 << event) + +#define NXP_WIFI_SYNC_INIT_GROUP \ + NXP_WIFI_EVENT_BIT(WLAN_REASON_INITIALIZED) | \ + NXP_WIFI_EVENT_BIT(WLAN_REASON_INITIALIZATION_FAILED) + +#define NXP_WIFI_SYNC_PS_GROUP \ + NXP_WIFI_EVENT_BIT(WLAN_REASON_PS_ENTER) | NXP_WIFI_EVENT_BIT(WLAN_REASON_PS_EXIT) + +enum nxp_wifi_ret { + NXP_WIFI_RET_SUCCESS, + NXP_WIFI_RET_FAIL, + NXP_WIFI_RET_NOT_FOUND, + NXP_WIFI_RET_AUTH_FAILED, + NXP_WIFI_RET_ADDR_FAILED, + NXP_WIFI_RET_NOT_CONNECTED, + NXP_WIFI_RET_NOT_READY, + NXP_WIFI_RET_TIMEOUT, + NXP_WIFI_RET_BAD_PARAM, +}; + +enum nxp_wifi_state { + NXP_WIFI_NOT_INITIALIZED, + NXP_WIFI_INITIALIZED, + NXP_WIFI_STARTED, +}; + +struct nxp_wifi_dev { + struct net_if *iface; + scan_result_cb_t scan_cb; + struct k_mutex mutex; +}; + +int nxp_wifi_wlan_event_callback(enum wlan_event_reason reason, void *data); + +#if defined(CONFIG_NXP_WIFI_SHELL) +void nxp_wifi_shell_register(struct nxp_wifi_dev *dev); +#else +#define nxp_wifi_shell_register(dev) +#endif + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/syscall_list.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/syscall_list.h index 74704a43..bdea1cac 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/syscall_list.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/syscall_list.h @@ -17,547 +17,563 @@ #define K_SYSCALL_DMA_START 11 #define K_SYSCALL_DMA_STOP 12 #define K_SYSCALL_DMA_SUSPEND 13 -#define K_SYSCALL_FLASH_ERASE 14 -#define K_SYSCALL_FLASH_EX_OP 15 -#define K_SYSCALL_FLASH_FILL 16 -#define K_SYSCALL_FLASH_FLATTEN 17 -#define K_SYSCALL_FLASH_GET_PAGE_COUNT 18 -#define K_SYSCALL_FLASH_GET_PAGE_INFO_BY_IDX 19 -#define K_SYSCALL_FLASH_GET_PAGE_INFO_BY_OFFS 20 -#define K_SYSCALL_FLASH_GET_PARAMETERS 21 -#define K_SYSCALL_FLASH_GET_WRITE_BLOCK_SIZE 22 -#define K_SYSCALL_FLASH_READ 23 -#define K_SYSCALL_FLASH_READ_JEDEC_ID 24 -#define K_SYSCALL_FLASH_SFDP_READ 25 -#define K_SYSCALL_FLASH_WRITE 26 -#define K_SYSCALL_GPIO_GET_PENDING_INT 27 -#define K_SYSCALL_GPIO_PIN_CONFIGURE 28 -#define K_SYSCALL_GPIO_PIN_GET_CONFIG 29 -#define K_SYSCALL_GPIO_PIN_INTERRUPT_CONFIGURE 30 -#define K_SYSCALL_GPIO_PORT_CLEAR_BITS_RAW 31 -#define K_SYSCALL_GPIO_PORT_GET_DIRECTION 32 -#define K_SYSCALL_GPIO_PORT_GET_RAW 33 -#define K_SYSCALL_GPIO_PORT_SET_BITS_RAW 34 -#define K_SYSCALL_GPIO_PORT_SET_MASKED_RAW 35 -#define K_SYSCALL_GPIO_PORT_TOGGLE_BITS 36 -#define K_SYSCALL_HWINFO_CLEAR_RESET_CAUSE 37 -#define K_SYSCALL_HWINFO_GET_DEVICE_EUI64 38 -#define K_SYSCALL_HWINFO_GET_DEVICE_ID 39 -#define K_SYSCALL_HWINFO_GET_RESET_CAUSE 40 -#define K_SYSCALL_HWINFO_GET_SUPPORTED_RESET_CAUSE 41 -#define K_SYSCALL_I2C_CONFIGURE 42 -#define K_SYSCALL_I2C_GET_CONFIG 43 -#define K_SYSCALL_I2C_RECOVER_BUS 44 -#define K_SYSCALL_I2C_TARGET_DRIVER_REGISTER 45 -#define K_SYSCALL_I2C_TARGET_DRIVER_UNREGISTER 46 -#define K_SYSCALL_I2C_TRANSFER 47 -#define K_SYSCALL_K_BUSY_WAIT 48 -#define K_SYSCALL_K_CONDVAR_BROADCAST 49 -#define K_SYSCALL_K_CONDVAR_INIT 50 -#define K_SYSCALL_K_CONDVAR_SIGNAL 51 -#define K_SYSCALL_K_CONDVAR_WAIT 52 -#define K_SYSCALL_K_EVENT_CLEAR 53 -#define K_SYSCALL_K_EVENT_INIT 54 -#define K_SYSCALL_K_EVENT_POST 55 -#define K_SYSCALL_K_EVENT_SET 56 -#define K_SYSCALL_K_EVENT_SET_MASKED 57 -#define K_SYSCALL_K_EVENT_WAIT 58 -#define K_SYSCALL_K_EVENT_WAIT_ALL 59 -#define K_SYSCALL_K_FLOAT_DISABLE 60 -#define K_SYSCALL_K_FLOAT_ENABLE 61 -#define K_SYSCALL_K_FUTEX_WAIT 62 -#define K_SYSCALL_K_FUTEX_WAKE 63 -#define K_SYSCALL_K_IS_PREEMPT_THREAD 64 -#define K_SYSCALL_K_MSGQ_ALLOC_INIT 65 -#define K_SYSCALL_K_MSGQ_GET 66 -#define K_SYSCALL_K_MSGQ_GET_ATTRS 67 -#define K_SYSCALL_K_MSGQ_NUM_FREE_GET 68 -#define K_SYSCALL_K_MSGQ_NUM_USED_GET 69 -#define K_SYSCALL_K_MSGQ_PEEK 70 -#define K_SYSCALL_K_MSGQ_PEEK_AT 71 -#define K_SYSCALL_K_MSGQ_PURGE 72 -#define K_SYSCALL_K_MSGQ_PUT 73 -#define K_SYSCALL_K_MUTEX_INIT 74 -#define K_SYSCALL_K_MUTEX_LOCK 75 -#define K_SYSCALL_K_MUTEX_UNLOCK 76 -#define K_SYSCALL_K_OBJECT_ACCESS_GRANT 77 -#define K_SYSCALL_K_OBJECT_ALLOC 78 -#define K_SYSCALL_K_OBJECT_ALLOC_SIZE 79 -#define K_SYSCALL_K_OBJECT_RELEASE 80 -#define K_SYSCALL_K_PIPE_ALLOC_INIT 81 -#define K_SYSCALL_K_PIPE_BUFFER_FLUSH 82 -#define K_SYSCALL_K_PIPE_FLUSH 83 -#define K_SYSCALL_K_PIPE_GET 84 -#define K_SYSCALL_K_PIPE_PUT 85 -#define K_SYSCALL_K_PIPE_READ_AVAIL 86 -#define K_SYSCALL_K_PIPE_WRITE_AVAIL 87 -#define K_SYSCALL_K_POLL 88 -#define K_SYSCALL_K_POLL_SIGNAL_CHECK 89 -#define K_SYSCALL_K_POLL_SIGNAL_INIT 90 -#define K_SYSCALL_K_POLL_SIGNAL_RAISE 91 -#define K_SYSCALL_K_POLL_SIGNAL_RESET 92 -#define K_SYSCALL_K_QUEUE_ALLOC_APPEND 93 -#define K_SYSCALL_K_QUEUE_ALLOC_PREPEND 94 -#define K_SYSCALL_K_QUEUE_CANCEL_WAIT 95 -#define K_SYSCALL_K_QUEUE_GET 96 -#define K_SYSCALL_K_QUEUE_INIT 97 -#define K_SYSCALL_K_QUEUE_IS_EMPTY 98 -#define K_SYSCALL_K_QUEUE_PEEK_HEAD 99 -#define K_SYSCALL_K_QUEUE_PEEK_TAIL 100 -#define K_SYSCALL_K_SCHED_CURRENT_THREAD_QUERY 101 -#define K_SYSCALL_K_SEM_COUNT_GET 102 -#define K_SYSCALL_K_SEM_GIVE 103 -#define K_SYSCALL_K_SEM_INIT 104 -#define K_SYSCALL_K_SEM_RESET 105 -#define K_SYSCALL_K_SEM_TAKE 106 -#define K_SYSCALL_K_SLEEP 107 -#define K_SYSCALL_K_STACK_ALLOC_INIT 108 -#define K_SYSCALL_K_STACK_POP 109 -#define K_SYSCALL_K_STACK_PUSH 110 -#define K_SYSCALL_K_STR_OUT 111 -#define K_SYSCALL_K_THREAD_ABORT 112 -#define K_SYSCALL_K_THREAD_CREATE 113 -#define K_SYSCALL_K_THREAD_CUSTOM_DATA_GET 114 -#define K_SYSCALL_K_THREAD_CUSTOM_DATA_SET 115 -#define K_SYSCALL_K_THREAD_DEADLINE_SET 116 -#define K_SYSCALL_K_THREAD_JOIN 117 -#define K_SYSCALL_K_THREAD_NAME_COPY 118 -#define K_SYSCALL_K_THREAD_NAME_SET 119 -#define K_SYSCALL_K_THREAD_PRIORITY_GET 120 -#define K_SYSCALL_K_THREAD_PRIORITY_SET 121 -#define K_SYSCALL_K_THREAD_RESUME 122 -#define K_SYSCALL_K_THREAD_STACK_ALLOC 123 -#define K_SYSCALL_K_THREAD_STACK_FREE 124 -#define K_SYSCALL_K_THREAD_STACK_SPACE_GET 125 -#define K_SYSCALL_K_THREAD_START 126 -#define K_SYSCALL_K_THREAD_SUSPEND 127 -#define K_SYSCALL_K_THREAD_TIMEOUT_EXPIRES_TICKS 128 -#define K_SYSCALL_K_THREAD_TIMEOUT_REMAINING_TICKS 129 -#define K_SYSCALL_K_TIMER_EXPIRES_TICKS 130 -#define K_SYSCALL_K_TIMER_REMAINING_TICKS 131 -#define K_SYSCALL_K_TIMER_START 132 -#define K_SYSCALL_K_TIMER_STATUS_GET 133 -#define K_SYSCALL_K_TIMER_STATUS_SYNC 134 -#define K_SYSCALL_K_TIMER_STOP 135 -#define K_SYSCALL_K_TIMER_USER_DATA_GET 136 -#define K_SYSCALL_K_TIMER_USER_DATA_SET 137 -#define K_SYSCALL_K_UPTIME_TICKS 138 -#define K_SYSCALL_K_USLEEP 139 -#define K_SYSCALL_K_WAKEUP 140 -#define K_SYSCALL_K_YIELD 141 -#define K_SYSCALL_LLEXT_GET_FN_TABLE 142 -#define K_SYSCALL_LOG_BUFFERED_CNT 143 -#define K_SYSCALL_LOG_FILTER_SET 144 -#define K_SYSCALL_LOG_FRONTEND_FILTER_SET 145 -#define K_SYSCALL_LOG_PANIC 146 -#define K_SYSCALL_LOG_PROCESS 147 -#define K_SYSCALL_PWM_CAPTURE_CYCLES 148 -#define K_SYSCALL_PWM_DISABLE_CAPTURE 149 -#define K_SYSCALL_PWM_ENABLE_CAPTURE 150 -#define K_SYSCALL_PWM_GET_CYCLES_PER_SEC 151 -#define K_SYSCALL_PWM_SET_CYCLES 152 -#define K_SYSCALL_RESET_LINE_ASSERT 153 -#define K_SYSCALL_RESET_LINE_DEASSERT 154 -#define K_SYSCALL_RESET_LINE_TOGGLE 155 -#define K_SYSCALL_RESET_STATUS 156 -#define K_SYSCALL_SPI_RELEASE 157 -#define K_SYSCALL_SPI_TRANSCEIVE 158 -#define K_SYSCALL_SYS_CACHE_DATA_FLUSH_AND_INVD_RANGE 159 -#define K_SYSCALL_SYS_CACHE_DATA_FLUSH_RANGE 160 -#define K_SYSCALL_SYS_CACHE_DATA_INVD_RANGE 161 -#define K_SYSCALL_SYS_CLOCK_HW_CYCLES_PER_SEC_RUNTIME_GET 162 -#define K_SYSCALL_UART_CONFIGURE 163 -#define K_SYSCALL_UART_CONFIG_GET 164 -#define K_SYSCALL_UART_DRV_CMD 165 -#define K_SYSCALL_UART_ERR_CHECK 166 -#define K_SYSCALL_UART_IRQ_ERR_DISABLE 167 -#define K_SYSCALL_UART_IRQ_ERR_ENABLE 168 -#define K_SYSCALL_UART_IRQ_IS_PENDING 169 -#define K_SYSCALL_UART_IRQ_RX_DISABLE 170 -#define K_SYSCALL_UART_IRQ_RX_ENABLE 171 -#define K_SYSCALL_UART_IRQ_TX_DISABLE 172 -#define K_SYSCALL_UART_IRQ_TX_ENABLE 173 -#define K_SYSCALL_UART_IRQ_UPDATE 174 -#define K_SYSCALL_UART_LINE_CTRL_GET 175 -#define K_SYSCALL_UART_LINE_CTRL_SET 176 -#define K_SYSCALL_UART_POLL_IN 177 -#define K_SYSCALL_UART_POLL_IN_U16 178 -#define K_SYSCALL_UART_POLL_OUT 179 -#define K_SYSCALL_UART_POLL_OUT_U16 180 -#define K_SYSCALL_UART_RX_DISABLE 181 -#define K_SYSCALL_UART_RX_ENABLE 182 -#define K_SYSCALL_UART_RX_ENABLE_U16 183 -#define K_SYSCALL_UART_TX 184 -#define K_SYSCALL_UART_TX_ABORT 185 -#define K_SYSCALL_UART_TX_U16 186 -#define K_SYSCALL_ZEPHYR_FPUTC 187 -#define K_SYSCALL_ZEPHYR_FWRITE 188 -#define K_SYSCALL_ZEPHYR_READ_STDIN 189 -#define K_SYSCALL_ZEPHYR_WRITE_STDOUT 190 -#define K_SYSCALL_Z_LOG_MSG_SIMPLE_CREATE_0 191 -#define K_SYSCALL_Z_LOG_MSG_SIMPLE_CREATE_1 192 -#define K_SYSCALL_Z_LOG_MSG_SIMPLE_CREATE_2 193 -#define K_SYSCALL_Z_LOG_MSG_STATIC_CREATE 194 -#define K_SYSCALL_Z_SYS_MUTEX_KERNEL_LOCK 195 -#define K_SYSCALL_Z_SYS_MUTEX_KERNEL_UNLOCK 196 -#define K_SYSCALL_BAD 197 -#define K_SYSCALL_LIMIT 198 +#define K_SYSCALL_ENTROPY_GET_ENTROPY 14 +#define K_SYSCALL_FLASH_COPY 15 +#define K_SYSCALL_FLASH_ERASE 16 +#define K_SYSCALL_FLASH_EX_OP 17 +#define K_SYSCALL_FLASH_FILL 18 +#define K_SYSCALL_FLASH_FLATTEN 19 +#define K_SYSCALL_FLASH_GET_PAGE_COUNT 20 +#define K_SYSCALL_FLASH_GET_PAGE_INFO_BY_IDX 21 +#define K_SYSCALL_FLASH_GET_PAGE_INFO_BY_OFFS 22 +#define K_SYSCALL_FLASH_GET_PARAMETERS 23 +#define K_SYSCALL_FLASH_GET_SIZE 24 +#define K_SYSCALL_FLASH_GET_WRITE_BLOCK_SIZE 25 +#define K_SYSCALL_FLASH_READ 26 +#define K_SYSCALL_FLASH_READ_JEDEC_ID 27 +#define K_SYSCALL_FLASH_SFDP_READ 28 +#define K_SYSCALL_FLASH_WRITE 29 +#define K_SYSCALL_GPIO_GET_PENDING_INT 30 +#define K_SYSCALL_GPIO_PIN_CONFIGURE 31 +#define K_SYSCALL_GPIO_PIN_GET_CONFIG 32 +#define K_SYSCALL_GPIO_PIN_INTERRUPT_CONFIGURE 33 +#define K_SYSCALL_GPIO_PORT_CLEAR_BITS_RAW 34 +#define K_SYSCALL_GPIO_PORT_GET_DIRECTION 35 +#define K_SYSCALL_GPIO_PORT_GET_RAW 36 +#define K_SYSCALL_GPIO_PORT_SET_BITS_RAW 37 +#define K_SYSCALL_GPIO_PORT_SET_MASKED_RAW 38 +#define K_SYSCALL_GPIO_PORT_TOGGLE_BITS 39 +#define K_SYSCALL_HWINFO_CLEAR_RESET_CAUSE 40 +#define K_SYSCALL_HWINFO_GET_DEVICE_EUI64 41 +#define K_SYSCALL_HWINFO_GET_DEVICE_ID 42 +#define K_SYSCALL_HWINFO_GET_RESET_CAUSE 43 +#define K_SYSCALL_HWINFO_GET_SUPPORTED_RESET_CAUSE 44 +#define K_SYSCALL_I2C_CONFIGURE 45 +#define K_SYSCALL_I2C_GET_CONFIG 46 +#define K_SYSCALL_I2C_RECOVER_BUS 47 +#define K_SYSCALL_I2C_TARGET_DRIVER_REGISTER 48 +#define K_SYSCALL_I2C_TARGET_DRIVER_UNREGISTER 49 +#define K_SYSCALL_I2C_TRANSFER 50 +#define K_SYSCALL_K_BUSY_WAIT 51 +#define K_SYSCALL_K_CONDVAR_BROADCAST 52 +#define K_SYSCALL_K_CONDVAR_INIT 53 +#define K_SYSCALL_K_CONDVAR_SIGNAL 54 +#define K_SYSCALL_K_CONDVAR_WAIT 55 +#define K_SYSCALL_K_EVENT_CLEAR 56 +#define K_SYSCALL_K_EVENT_INIT 57 +#define K_SYSCALL_K_EVENT_POST 58 +#define K_SYSCALL_K_EVENT_SET 59 +#define K_SYSCALL_K_EVENT_SET_MASKED 60 +#define K_SYSCALL_K_EVENT_WAIT 61 +#define K_SYSCALL_K_EVENT_WAIT_ALL 62 +#define K_SYSCALL_K_FLOAT_DISABLE 63 +#define K_SYSCALL_K_FLOAT_ENABLE 64 +#define K_SYSCALL_K_FUTEX_WAIT 65 +#define K_SYSCALL_K_FUTEX_WAKE 66 +#define K_SYSCALL_K_IS_PREEMPT_THREAD 67 +#define K_SYSCALL_K_MSGQ_ALLOC_INIT 68 +#define K_SYSCALL_K_MSGQ_GET 69 +#define K_SYSCALL_K_MSGQ_GET_ATTRS 70 +#define K_SYSCALL_K_MSGQ_NUM_FREE_GET 71 +#define K_SYSCALL_K_MSGQ_NUM_USED_GET 72 +#define K_SYSCALL_K_MSGQ_PEEK 73 +#define K_SYSCALL_K_MSGQ_PEEK_AT 74 +#define K_SYSCALL_K_MSGQ_PURGE 75 +#define K_SYSCALL_K_MSGQ_PUT 76 +#define K_SYSCALL_K_MUTEX_INIT 77 +#define K_SYSCALL_K_MUTEX_LOCK 78 +#define K_SYSCALL_K_MUTEX_UNLOCK 79 +#define K_SYSCALL_K_OBJECT_ACCESS_GRANT 80 +#define K_SYSCALL_K_OBJECT_ALLOC 81 +#define K_SYSCALL_K_OBJECT_ALLOC_SIZE 82 +#define K_SYSCALL_K_OBJECT_RELEASE 83 +#define K_SYSCALL_K_PIPE_ALLOC_INIT 84 +#define K_SYSCALL_K_PIPE_BUFFER_FLUSH 85 +#define K_SYSCALL_K_PIPE_FLUSH 86 +#define K_SYSCALL_K_PIPE_GET 87 +#define K_SYSCALL_K_PIPE_PUT 88 +#define K_SYSCALL_K_PIPE_READ_AVAIL 89 +#define K_SYSCALL_K_PIPE_WRITE_AVAIL 90 +#define K_SYSCALL_K_POLL 91 +#define K_SYSCALL_K_POLL_SIGNAL_CHECK 92 +#define K_SYSCALL_K_POLL_SIGNAL_INIT 93 +#define K_SYSCALL_K_POLL_SIGNAL_RAISE 94 +#define K_SYSCALL_K_POLL_SIGNAL_RESET 95 +#define K_SYSCALL_K_QUEUE_ALLOC_APPEND 96 +#define K_SYSCALL_K_QUEUE_ALLOC_PREPEND 97 +#define K_SYSCALL_K_QUEUE_CANCEL_WAIT 98 +#define K_SYSCALL_K_QUEUE_GET 99 +#define K_SYSCALL_K_QUEUE_INIT 100 +#define K_SYSCALL_K_QUEUE_IS_EMPTY 101 +#define K_SYSCALL_K_QUEUE_PEEK_HEAD 102 +#define K_SYSCALL_K_QUEUE_PEEK_TAIL 103 +#define K_SYSCALL_K_SCHED_CURRENT_THREAD_QUERY 104 +#define K_SYSCALL_K_SEM_COUNT_GET 105 +#define K_SYSCALL_K_SEM_GIVE 106 +#define K_SYSCALL_K_SEM_INIT 107 +#define K_SYSCALL_K_SEM_RESET 108 +#define K_SYSCALL_K_SEM_TAKE 109 +#define K_SYSCALL_K_SLEEP 110 +#define K_SYSCALL_K_STACK_ALLOC_INIT 111 +#define K_SYSCALL_K_STACK_POP 112 +#define K_SYSCALL_K_STACK_PUSH 113 +#define K_SYSCALL_K_STR_OUT 114 +#define K_SYSCALL_K_THREAD_ABORT 115 +#define K_SYSCALL_K_THREAD_CREATE 116 +#define K_SYSCALL_K_THREAD_CUSTOM_DATA_GET 117 +#define K_SYSCALL_K_THREAD_CUSTOM_DATA_SET 118 +#define K_SYSCALL_K_THREAD_DEADLINE_SET 119 +#define K_SYSCALL_K_THREAD_JOIN 120 +#define K_SYSCALL_K_THREAD_NAME_COPY 121 +#define K_SYSCALL_K_THREAD_NAME_SET 122 +#define K_SYSCALL_K_THREAD_PRIORITY_GET 123 +#define K_SYSCALL_K_THREAD_PRIORITY_SET 124 +#define K_SYSCALL_K_THREAD_RESUME 125 +#define K_SYSCALL_K_THREAD_STACK_ALLOC 126 +#define K_SYSCALL_K_THREAD_STACK_FREE 127 +#define K_SYSCALL_K_THREAD_STACK_SPACE_GET 128 +#define K_SYSCALL_K_THREAD_SUSPEND 129 +#define K_SYSCALL_K_THREAD_TIMEOUT_EXPIRES_TICKS 130 +#define K_SYSCALL_K_THREAD_TIMEOUT_REMAINING_TICKS 131 +#define K_SYSCALL_K_TIMER_EXPIRES_TICKS 132 +#define K_SYSCALL_K_TIMER_REMAINING_TICKS 133 +#define K_SYSCALL_K_TIMER_START 134 +#define K_SYSCALL_K_TIMER_STATUS_GET 135 +#define K_SYSCALL_K_TIMER_STATUS_SYNC 136 +#define K_SYSCALL_K_TIMER_STOP 137 +#define K_SYSCALL_K_TIMER_USER_DATA_GET 138 +#define K_SYSCALL_K_TIMER_USER_DATA_SET 139 +#define K_SYSCALL_K_UPTIME_TICKS 140 +#define K_SYSCALL_K_USLEEP 141 +#define K_SYSCALL_K_WAKEUP 142 +#define K_SYSCALL_K_YIELD 143 +#define K_SYSCALL_LLEXT_GET_FN_TABLE 144 +#define K_SYSCALL_LOG_BUFFERED_CNT 145 +#define K_SYSCALL_LOG_FILTER_SET 146 +#define K_SYSCALL_LOG_FRONTEND_FILTER_SET 147 +#define K_SYSCALL_LOG_PANIC 148 +#define K_SYSCALL_LOG_PROCESS 149 +#define K_SYSCALL_PWM_CAPTURE_CYCLES 150 +#define K_SYSCALL_PWM_DISABLE_CAPTURE 151 +#define K_SYSCALL_PWM_ENABLE_CAPTURE 152 +#define K_SYSCALL_PWM_GET_CYCLES_PER_SEC 153 +#define K_SYSCALL_PWM_SET_CYCLES 154 +#define K_SYSCALL_RESET_LINE_ASSERT 155 +#define K_SYSCALL_RESET_LINE_DEASSERT 156 +#define K_SYSCALL_RESET_LINE_TOGGLE 157 +#define K_SYSCALL_RESET_STATUS 158 +#define K_SYSCALL_SPI_RELEASE 159 +#define K_SYSCALL_SPI_TRANSCEIVE 160 +#define K_SYSCALL_SYS_CACHE_DATA_FLUSH_AND_INVD_RANGE 161 +#define K_SYSCALL_SYS_CACHE_DATA_FLUSH_RANGE 162 +#define K_SYSCALL_SYS_CACHE_DATA_INVD_RANGE 163 +#define K_SYSCALL_SYS_CLOCK_HW_CYCLES_PER_SEC_RUNTIME_GET 164 +#define K_SYSCALL_SYS_CSRAND_GET 165 +#define K_SYSCALL_SYS_RAND_GET 166 +#define K_SYSCALL_UART_CONFIGURE 167 +#define K_SYSCALL_UART_CONFIG_GET 168 +#define K_SYSCALL_UART_DRV_CMD 169 +#define K_SYSCALL_UART_ERR_CHECK 170 +#define K_SYSCALL_UART_IRQ_ERR_DISABLE 171 +#define K_SYSCALL_UART_IRQ_ERR_ENABLE 172 +#define K_SYSCALL_UART_IRQ_IS_PENDING 173 +#define K_SYSCALL_UART_IRQ_RX_DISABLE 174 +#define K_SYSCALL_UART_IRQ_RX_ENABLE 175 +#define K_SYSCALL_UART_IRQ_TX_DISABLE 176 +#define K_SYSCALL_UART_IRQ_TX_ENABLE 177 +#define K_SYSCALL_UART_IRQ_UPDATE 178 +#define K_SYSCALL_UART_LINE_CTRL_GET 179 +#define K_SYSCALL_UART_LINE_CTRL_SET 180 +#define K_SYSCALL_UART_POLL_IN 181 +#define K_SYSCALL_UART_POLL_IN_U16 182 +#define K_SYSCALL_UART_POLL_OUT 183 +#define K_SYSCALL_UART_POLL_OUT_U16 184 +#define K_SYSCALL_UART_RX_DISABLE 185 +#define K_SYSCALL_UART_RX_ENABLE 186 +#define K_SYSCALL_UART_RX_ENABLE_U16 187 +#define K_SYSCALL_UART_TX 188 +#define K_SYSCALL_UART_TX_ABORT 189 +#define K_SYSCALL_UART_TX_U16 190 +#define K_SYSCALL_ZEPHYR_FPUTC 191 +#define K_SYSCALL_ZEPHYR_FWRITE 192 +#define K_SYSCALL_ZEPHYR_READ_STDIN 193 +#define K_SYSCALL_ZEPHYR_WRITE_STDOUT 194 +#define K_SYSCALL_Z_LOG_MSG_SIMPLE_CREATE_0 195 +#define K_SYSCALL_Z_LOG_MSG_SIMPLE_CREATE_1 196 +#define K_SYSCALL_Z_LOG_MSG_SIMPLE_CREATE_2 197 +#define K_SYSCALL_Z_LOG_MSG_STATIC_CREATE 198 +#define K_SYSCALL_Z_SYS_MUTEX_KERNEL_LOCK 199 +#define K_SYSCALL_Z_SYS_MUTEX_KERNEL_UNLOCK 200 +#define K_SYSCALL_BAD 201 +#define K_SYSCALL_LIMIT 202 /* Following syscalls are not used in image */ -#define K_SYSCALL_ATOMIC_ADD 199 -#define K_SYSCALL_ATOMIC_AND 200 -#define K_SYSCALL_ATOMIC_CAS 201 -#define K_SYSCALL_ATOMIC_NAND 202 -#define K_SYSCALL_ATOMIC_OR 203 -#define K_SYSCALL_ATOMIC_PTR_CAS 204 -#define K_SYSCALL_ATOMIC_PTR_SET 205 -#define K_SYSCALL_ATOMIC_SET 206 -#define K_SYSCALL_ATOMIC_SUB 207 -#define K_SYSCALL_ATOMIC_XOR 208 -#define K_SYSCALL_AUXDISPLAY_BACKLIGHT_GET 209 -#define K_SYSCALL_AUXDISPLAY_BACKLIGHT_SET 210 -#define K_SYSCALL_AUXDISPLAY_BRIGHTNESS_GET 211 -#define K_SYSCALL_AUXDISPLAY_BRIGHTNESS_SET 212 -#define K_SYSCALL_AUXDISPLAY_CAPABILITIES_GET 213 -#define K_SYSCALL_AUXDISPLAY_CLEAR 214 -#define K_SYSCALL_AUXDISPLAY_CURSOR_POSITION_GET 215 -#define K_SYSCALL_AUXDISPLAY_CURSOR_POSITION_SET 216 -#define K_SYSCALL_AUXDISPLAY_CURSOR_SET_ENABLED 217 -#define K_SYSCALL_AUXDISPLAY_CURSOR_SHIFT_SET 218 -#define K_SYSCALL_AUXDISPLAY_CUSTOM_CHARACTER_SET 219 -#define K_SYSCALL_AUXDISPLAY_CUSTOM_COMMAND 220 -#define K_SYSCALL_AUXDISPLAY_DISPLAY_OFF 221 -#define K_SYSCALL_AUXDISPLAY_DISPLAY_ON 222 -#define K_SYSCALL_AUXDISPLAY_DISPLAY_POSITION_GET 223 -#define K_SYSCALL_AUXDISPLAY_DISPLAY_POSITION_SET 224 -#define K_SYSCALL_AUXDISPLAY_IS_BUSY 225 -#define K_SYSCALL_AUXDISPLAY_POSITION_BLINKING_SET_ENABLED 226 -#define K_SYSCALL_AUXDISPLAY_WRITE 227 -#define K_SYSCALL_BBRAM_CHECK_INVALID 228 -#define K_SYSCALL_BBRAM_CHECK_POWER 229 -#define K_SYSCALL_BBRAM_CHECK_STANDBY_POWER 230 -#define K_SYSCALL_BBRAM_GET_SIZE 231 -#define K_SYSCALL_BBRAM_READ 232 -#define K_SYSCALL_BBRAM_WRITE 233 -#define K_SYSCALL_BC12_SET_RESULT_CB 234 -#define K_SYSCALL_BC12_SET_ROLE 235 -#define K_SYSCALL_CAN_ADD_RX_FILTER_MSGQ 236 -#define K_SYSCALL_CAN_CALC_TIMING 237 -#define K_SYSCALL_CAN_CALC_TIMING_DATA 238 -#define K_SYSCALL_CAN_GET_BITRATE_MAX 239 -#define K_SYSCALL_CAN_GET_BITRATE_MIN 240 -#define K_SYSCALL_CAN_GET_CAPABILITIES 241 -#define K_SYSCALL_CAN_GET_CORE_CLOCK 242 -#define K_SYSCALL_CAN_GET_MAX_FILTERS 243 -#define K_SYSCALL_CAN_GET_MODE 244 -#define K_SYSCALL_CAN_GET_STATE 245 -#define K_SYSCALL_CAN_GET_TIMING_DATA_MAX 246 -#define K_SYSCALL_CAN_GET_TIMING_DATA_MIN 247 -#define K_SYSCALL_CAN_GET_TIMING_MAX 248 -#define K_SYSCALL_CAN_GET_TIMING_MIN 249 -#define K_SYSCALL_CAN_GET_TRANSCEIVER 250 -#define K_SYSCALL_CAN_RECOVER 251 -#define K_SYSCALL_CAN_REMOVE_RX_FILTER 252 -#define K_SYSCALL_CAN_SEND 253 -#define K_SYSCALL_CAN_SET_BITRATE 254 -#define K_SYSCALL_CAN_SET_BITRATE_DATA 255 -#define K_SYSCALL_CAN_SET_MODE 256 -#define K_SYSCALL_CAN_SET_TIMING 257 -#define K_SYSCALL_CAN_SET_TIMING_DATA 258 -#define K_SYSCALL_CAN_START 259 -#define K_SYSCALL_CAN_STATS_GET_ACK_ERRORS 260 -#define K_SYSCALL_CAN_STATS_GET_BIT0_ERRORS 261 -#define K_SYSCALL_CAN_STATS_GET_BIT1_ERRORS 262 -#define K_SYSCALL_CAN_STATS_GET_BIT_ERRORS 263 -#define K_SYSCALL_CAN_STATS_GET_CRC_ERRORS 264 -#define K_SYSCALL_CAN_STATS_GET_FORM_ERRORS 265 -#define K_SYSCALL_CAN_STATS_GET_RX_OVERRUNS 266 -#define K_SYSCALL_CAN_STATS_GET_STUFF_ERRORS 267 -#define K_SYSCALL_CAN_STOP 268 -#define K_SYSCALL_CHARGER_CHARGE_ENABLE 269 -#define K_SYSCALL_CHARGER_GET_PROP 270 -#define K_SYSCALL_CHARGER_SET_PROP 271 -#define K_SYSCALL_COUNTER_CANCEL_CHANNEL_ALARM 272 -#define K_SYSCALL_COUNTER_GET_FREQUENCY 273 -#define K_SYSCALL_COUNTER_GET_GUARD_PERIOD 274 -#define K_SYSCALL_COUNTER_GET_MAX_TOP_VALUE 275 -#define K_SYSCALL_COUNTER_GET_NUM_OF_CHANNELS 276 -#define K_SYSCALL_COUNTER_GET_PENDING_INT 277 -#define K_SYSCALL_COUNTER_GET_TOP_VALUE 278 -#define K_SYSCALL_COUNTER_GET_VALUE 279 -#define K_SYSCALL_COUNTER_GET_VALUE_64 280 -#define K_SYSCALL_COUNTER_IS_COUNTING_UP 281 -#define K_SYSCALL_COUNTER_SET_CHANNEL_ALARM 282 -#define K_SYSCALL_COUNTER_SET_GUARD_PERIOD 283 -#define K_SYSCALL_COUNTER_SET_TOP_VALUE 284 -#define K_SYSCALL_COUNTER_START 285 -#define K_SYSCALL_COUNTER_STOP 286 -#define K_SYSCALL_COUNTER_TICKS_TO_US 287 -#define K_SYSCALL_COUNTER_US_TO_TICKS 288 -#define K_SYSCALL_DAC_CHANNEL_SETUP 289 -#define K_SYSCALL_DAC_WRITE_VALUE 290 -#define K_SYSCALL_DEVMUX_SELECT_GET 291 -#define K_SYSCALL_DEVMUX_SELECT_SET 292 -#define K_SYSCALL_EEPROM_GET_SIZE 293 -#define K_SYSCALL_EEPROM_READ 294 -#define K_SYSCALL_EEPROM_WRITE 295 -#define K_SYSCALL_EMUL_FUEL_GAUGE_IS_BATTERY_CUTOFF 296 -#define K_SYSCALL_EMUL_FUEL_GAUGE_SET_BATTERY_CHARGING 297 -#define K_SYSCALL_ENTROPY_GET_ENTROPY 298 -#define K_SYSCALL_ESPI_CONFIG 299 -#define K_SYSCALL_ESPI_FLASH_ERASE 300 -#define K_SYSCALL_ESPI_GET_CHANNEL_STATUS 301 -#define K_SYSCALL_ESPI_READ_FLASH 302 -#define K_SYSCALL_ESPI_READ_LPC_REQUEST 303 -#define K_SYSCALL_ESPI_READ_REQUEST 304 -#define K_SYSCALL_ESPI_RECEIVE_OOB 305 -#define K_SYSCALL_ESPI_RECEIVE_VWIRE 306 -#define K_SYSCALL_ESPI_SAF_ACTIVATE 307 -#define K_SYSCALL_ESPI_SAF_CONFIG 308 -#define K_SYSCALL_ESPI_SAF_FLASH_ERASE 309 -#define K_SYSCALL_ESPI_SAF_FLASH_READ 310 -#define K_SYSCALL_ESPI_SAF_FLASH_UNSUCCESS 311 -#define K_SYSCALL_ESPI_SAF_FLASH_WRITE 312 -#define K_SYSCALL_ESPI_SAF_GET_CHANNEL_STATUS 313 -#define K_SYSCALL_ESPI_SAF_SET_PROTECTION_REGIONS 314 -#define K_SYSCALL_ESPI_SEND_OOB 315 -#define K_SYSCALL_ESPI_SEND_VWIRE 316 -#define K_SYSCALL_ESPI_WRITE_FLASH 317 -#define K_SYSCALL_ESPI_WRITE_LPC_REQUEST 318 -#define K_SYSCALL_ESPI_WRITE_REQUEST 319 -#define K_SYSCALL_FLASH_SIMULATOR_GET_MEMORY 320 -#define K_SYSCALL_FUEL_GAUGE_BATTERY_CUTOFF 321 -#define K_SYSCALL_FUEL_GAUGE_GET_BUFFER_PROP 322 -#define K_SYSCALL_FUEL_GAUGE_GET_PROP 323 -#define K_SYSCALL_FUEL_GAUGE_GET_PROPS 324 -#define K_SYSCALL_FUEL_GAUGE_SET_PROP 325 -#define K_SYSCALL_FUEL_GAUGE_SET_PROPS 326 -#define K_SYSCALL_GNSS_GET_ENABLED_SYSTEMS 327 -#define K_SYSCALL_GNSS_GET_FIX_RATE 328 -#define K_SYSCALL_GNSS_GET_NAVIGATION_MODE 329 -#define K_SYSCALL_GNSS_GET_PERIODIC_CONFIG 330 -#define K_SYSCALL_GNSS_GET_SUPPORTED_SYSTEMS 331 -#define K_SYSCALL_GNSS_SET_ENABLED_SYSTEMS 332 -#define K_SYSCALL_GNSS_SET_FIX_RATE 333 -#define K_SYSCALL_GNSS_SET_NAVIGATION_MODE 334 -#define K_SYSCALL_GNSS_SET_PERIODIC_CONFIG 335 -#define K_SYSCALL_HWSPINLOCK_GET_MAX_ID 336 -#define K_SYSCALL_HWSPINLOCK_LOCK 337 -#define K_SYSCALL_HWSPINLOCK_TRYLOCK 338 -#define K_SYSCALL_HWSPINLOCK_UNLOCK 339 -#define K_SYSCALL_I2S_BUF_READ 340 -#define K_SYSCALL_I2S_BUF_WRITE 341 -#define K_SYSCALL_I2S_CONFIGURE 342 -#define K_SYSCALL_I2S_TRIGGER 343 -#define K_SYSCALL_I3C_DO_CCC 344 -#define K_SYSCALL_I3C_TRANSFER 345 -#define K_SYSCALL_IPM_COMPLETE 346 -#define K_SYSCALL_IPM_MAX_DATA_SIZE_GET 347 -#define K_SYSCALL_IPM_MAX_ID_VAL_GET 348 -#define K_SYSCALL_IPM_SEND 349 -#define K_SYSCALL_IPM_SET_ENABLED 350 -#define K_SYSCALL_IVSHMEM_ENABLE_INTERRUPTS 351 -#define K_SYSCALL_IVSHMEM_GET_ID 352 -#define K_SYSCALL_IVSHMEM_GET_MAX_PEERS 353 -#define K_SYSCALL_IVSHMEM_GET_MEM 354 -#define K_SYSCALL_IVSHMEM_GET_OUTPUT_MEM_SECTION 355 -#define K_SYSCALL_IVSHMEM_GET_PROTOCOL 356 -#define K_SYSCALL_IVSHMEM_GET_RW_MEM_SECTION 357 -#define K_SYSCALL_IVSHMEM_GET_STATE 358 -#define K_SYSCALL_IVSHMEM_GET_VECTORS 359 -#define K_SYSCALL_IVSHMEM_INT_PEER 360 -#define K_SYSCALL_IVSHMEM_REGISTER_HANDLER 361 -#define K_SYSCALL_IVSHMEM_SET_STATE 362 -#define K_SYSCALL_KSCAN_CONFIG 363 -#define K_SYSCALL_KSCAN_DISABLE_CALLBACK 364 -#define K_SYSCALL_KSCAN_ENABLE_CALLBACK 365 -#define K_SYSCALL_K_MEM_PAGING_HISTOGRAM_BACKING_STORE_PAGE_IN_GET 366 -#define K_SYSCALL_K_MEM_PAGING_HISTOGRAM_BACKING_STORE_PAGE_OUT_GET 367 -#define K_SYSCALL_K_MEM_PAGING_HISTOGRAM_EVICTION_GET 368 -#define K_SYSCALL_K_MEM_PAGING_STATS_GET 369 -#define K_SYSCALL_K_MEM_PAGING_THREAD_STATS_GET 370 -#define K_SYSCALL_LED_BLINK 371 -#define K_SYSCALL_LED_GET_INFO 372 -#define K_SYSCALL_LED_OFF 373 -#define K_SYSCALL_LED_ON 374 -#define K_SYSCALL_LED_SET_BRIGHTNESS 375 -#define K_SYSCALL_LED_SET_CHANNEL 376 -#define K_SYSCALL_LED_SET_COLOR 377 -#define K_SYSCALL_LED_WRITE_CHANNELS 378 -#define K_SYSCALL_MAXIM_DS3231_GET_SYNCPOINT 379 -#define K_SYSCALL_MAXIM_DS3231_REQ_SYNCPOINT 380 -#define K_SYSCALL_MBOX_MAX_CHANNELS_GET 381 -#define K_SYSCALL_MBOX_MTU_GET 382 -#define K_SYSCALL_MBOX_SEND 383 -#define K_SYSCALL_MBOX_SET_ENABLED 384 -#define K_SYSCALL_MDIO_BUS_DISABLE 385 -#define K_SYSCALL_MDIO_BUS_ENABLE 386 -#define K_SYSCALL_MDIO_READ 387 -#define K_SYSCALL_MDIO_READ_C45 388 -#define K_SYSCALL_MDIO_WRITE 389 -#define K_SYSCALL_MDIO_WRITE_C45 390 -#define K_SYSCALL_MSPI_CONFIG 391 -#define K_SYSCALL_MSPI_DEV_CONFIG 392 -#define K_SYSCALL_MSPI_GET_CHANNEL_STATUS 393 -#define K_SYSCALL_MSPI_SCRAMBLE_CONFIG 394 -#define K_SYSCALL_MSPI_TIMING_CONFIG 395 -#define K_SYSCALL_MSPI_TRANSCEIVE 396 -#define K_SYSCALL_MSPI_XIP_CONFIG 397 -#define K_SYSCALL_NET_ADDR_NTOP 398 -#define K_SYSCALL_NET_ADDR_PTON 399 -#define K_SYSCALL_NET_ETH_GET_PTP_CLOCK_BY_INDEX 400 -#define K_SYSCALL_NET_IF_GET_BY_INDEX 401 -#define K_SYSCALL_NET_IF_IPV4_ADDR_ADD_BY_INDEX 402 -#define K_SYSCALL_NET_IF_IPV4_ADDR_LOOKUP_BY_INDEX 403 -#define K_SYSCALL_NET_IF_IPV4_ADDR_RM_BY_INDEX 404 -#define K_SYSCALL_NET_IF_IPV4_SET_GW_BY_INDEX 405 -#define K_SYSCALL_NET_IF_IPV4_SET_NETMASK_BY_ADDR_BY_INDEX 406 -#define K_SYSCALL_NET_IF_IPV4_SET_NETMASK_BY_INDEX 407 -#define K_SYSCALL_NET_IF_IPV6_ADDR_ADD_BY_INDEX 408 -#define K_SYSCALL_NET_IF_IPV6_ADDR_LOOKUP_BY_INDEX 409 -#define K_SYSCALL_NET_IF_IPV6_ADDR_RM_BY_INDEX 410 -#define K_SYSCALL_NET_SOCKET_SERVICE_REGISTER 411 -#define K_SYSCALL_NRF_QSPI_NOR_XIP_ENABLE 412 -#define K_SYSCALL_PECI_CONFIG 413 -#define K_SYSCALL_PECI_DISABLE 414 -#define K_SYSCALL_PECI_ENABLE 415 -#define K_SYSCALL_PECI_TRANSFER 416 -#define K_SYSCALL_PS2_CONFIG 417 -#define K_SYSCALL_PS2_DISABLE_CALLBACK 418 -#define K_SYSCALL_PS2_ENABLE_CALLBACK 419 -#define K_SYSCALL_PS2_READ 420 -#define K_SYSCALL_PS2_WRITE 421 -#define K_SYSCALL_PTP_CLOCK_GET 422 -#define K_SYSCALL_RETAINED_MEM_CLEAR 423 -#define K_SYSCALL_RETAINED_MEM_READ 424 -#define K_SYSCALL_RETAINED_MEM_SIZE 425 -#define K_SYSCALL_RETAINED_MEM_WRITE 426 -#define K_SYSCALL_RTC_ALARM_GET_SUPPORTED_FIELDS 427 -#define K_SYSCALL_RTC_ALARM_GET_TIME 428 -#define K_SYSCALL_RTC_ALARM_IS_PENDING 429 -#define K_SYSCALL_RTC_ALARM_SET_CALLBACK 430 -#define K_SYSCALL_RTC_ALARM_SET_TIME 431 -#define K_SYSCALL_RTC_GET_CALIBRATION 432 -#define K_SYSCALL_RTC_GET_TIME 433 -#define K_SYSCALL_RTC_SET_CALIBRATION 434 -#define K_SYSCALL_RTC_SET_TIME 435 -#define K_SYSCALL_RTC_UPDATE_SET_CALLBACK 436 -#define K_SYSCALL_RTIO_CQE_COPY_OUT 437 -#define K_SYSCALL_RTIO_CQE_GET_MEMPOOL_BUFFER 438 -#define K_SYSCALL_RTIO_RELEASE_BUFFER 439 -#define K_SYSCALL_RTIO_SQE_CANCEL 440 -#define K_SYSCALL_RTIO_SQE_COPY_IN_GET_HANDLES 441 -#define K_SYSCALL_RTIO_SUBMIT 442 -#define K_SYSCALL_SDHC_CARD_BUSY 443 -#define K_SYSCALL_SDHC_CARD_PRESENT 444 -#define K_SYSCALL_SDHC_DISABLE_INTERRUPT 445 -#define K_SYSCALL_SDHC_ENABLE_INTERRUPT 446 -#define K_SYSCALL_SDHC_EXECUTE_TUNING 447 -#define K_SYSCALL_SDHC_GET_HOST_PROPS 448 -#define K_SYSCALL_SDHC_HW_RESET 449 -#define K_SYSCALL_SDHC_REQUEST 450 -#define K_SYSCALL_SDHC_SET_IO 451 -#define K_SYSCALL_SENSOR_ATTR_GET 452 -#define K_SYSCALL_SENSOR_ATTR_SET 453 -#define K_SYSCALL_SENSOR_CHANNEL_GET 454 -#define K_SYSCALL_SENSOR_GET_DECODER 455 -#define K_SYSCALL_SENSOR_RECONFIGURE_READ_IODEV 456 -#define K_SYSCALL_SENSOR_SAMPLE_FETCH 457 -#define K_SYSCALL_SENSOR_SAMPLE_FETCH_CHAN 458 -#define K_SYSCALL_SIP_SUPERVISORY_CALL 459 -#define K_SYSCALL_SIP_SVC_PLAT_ASYNC_RES_REQ 460 -#define K_SYSCALL_SIP_SVC_PLAT_ASYNC_RES_RES 461 -#define K_SYSCALL_SIP_SVC_PLAT_FORMAT_TRANS_ID 462 -#define K_SYSCALL_SIP_SVC_PLAT_FREE_ASYNC_MEMORY 463 -#define K_SYSCALL_SIP_SVC_PLAT_FUNC_ID_VALID 464 -#define K_SYSCALL_SIP_SVC_PLAT_GET_ERROR_CODE 465 -#define K_SYSCALL_SIP_SVC_PLAT_GET_TRANS_IDX 466 -#define K_SYSCALL_SIP_SVC_PLAT_UPDATE_TRANS_ID 467 -#define K_SYSCALL_SMBUS_BLOCK_PCALL 468 -#define K_SYSCALL_SMBUS_BLOCK_READ 469 -#define K_SYSCALL_SMBUS_BLOCK_WRITE 470 -#define K_SYSCALL_SMBUS_BYTE_DATA_READ 471 -#define K_SYSCALL_SMBUS_BYTE_DATA_WRITE 472 -#define K_SYSCALL_SMBUS_BYTE_READ 473 -#define K_SYSCALL_SMBUS_BYTE_WRITE 474 -#define K_SYSCALL_SMBUS_CONFIGURE 475 -#define K_SYSCALL_SMBUS_GET_CONFIG 476 -#define K_SYSCALL_SMBUS_HOST_NOTIFY_REMOVE_CB 477 -#define K_SYSCALL_SMBUS_PCALL 478 -#define K_SYSCALL_SMBUS_QUICK 479 -#define K_SYSCALL_SMBUS_SMBALERT_REMOVE_CB 480 -#define K_SYSCALL_SMBUS_WORD_DATA_READ 481 -#define K_SYSCALL_SMBUS_WORD_DATA_WRITE 482 -#define K_SYSCALL_SYSCON_GET_BASE 483 -#define K_SYSCALL_SYSCON_GET_SIZE 484 -#define K_SYSCALL_SYSCON_READ_REG 485 -#define K_SYSCALL_SYSCON_WRITE_REG 486 -#define K_SYSCALL_SYS_CSRAND_GET 487 -#define K_SYSCALL_SYS_RAND_GET 488 -#define K_SYSCALL_TEE_CANCEL 489 -#define K_SYSCALL_TEE_CLOSE_SESSION 490 -#define K_SYSCALL_TEE_GET_VERSION 491 -#define K_SYSCALL_TEE_INVOKE_FUNC 492 -#define K_SYSCALL_TEE_OPEN_SESSION 493 -#define K_SYSCALL_TEE_SHM_ALLOC 494 -#define K_SYSCALL_TEE_SHM_FREE 495 -#define K_SYSCALL_TEE_SHM_REGISTER 496 -#define K_SYSCALL_TEE_SHM_UNREGISTER 497 -#define K_SYSCALL_TEE_SUPPL_RECV 498 -#define K_SYSCALL_TEE_SUPPL_SEND 499 -#define K_SYSCALL_TGPIO_PIN_CONFIG_EXT_TIMESTAMP 500 -#define K_SYSCALL_TGPIO_PIN_DISABLE 501 -#define K_SYSCALL_TGPIO_PIN_PERIODIC_OUTPUT 502 -#define K_SYSCALL_TGPIO_PIN_READ_TS_EC 503 -#define K_SYSCALL_TGPIO_PORT_GET_CYCLES_PER_SECOND 504 -#define K_SYSCALL_TGPIO_PORT_GET_TIME 505 -#define K_SYSCALL_UPDATEHUB_AUTOHANDLER 506 -#define K_SYSCALL_UPDATEHUB_CONFIRM 507 -#define K_SYSCALL_UPDATEHUB_PROBE 508 -#define K_SYSCALL_UPDATEHUB_REBOOT 509 -#define K_SYSCALL_UPDATEHUB_UPDATE 510 -#define K_SYSCALL_USER_FAULT 511 -#define K_SYSCALL_W1_CHANGE_BUS_LOCK 512 -#define K_SYSCALL_W1_CONFIGURE 513 -#define K_SYSCALL_W1_GET_SLAVE_COUNT 514 -#define K_SYSCALL_W1_READ_BIT 515 -#define K_SYSCALL_W1_READ_BLOCK 516 -#define K_SYSCALL_W1_READ_BYTE 517 -#define K_SYSCALL_W1_RESET_BUS 518 -#define K_SYSCALL_W1_SEARCH_BUS 519 -#define K_SYSCALL_W1_WRITE_BIT 520 -#define K_SYSCALL_W1_WRITE_BLOCK 521 -#define K_SYSCALL_W1_WRITE_BYTE 522 -#define K_SYSCALL_WDT_DISABLE 523 -#define K_SYSCALL_WDT_FEED 524 -#define K_SYSCALL_WDT_SETUP 525 -#define K_SYSCALL_XTENSA_USER_FAULT 526 -#define K_SYSCALL_ZSOCK_ACCEPT 527 -#define K_SYSCALL_ZSOCK_BIND 528 -#define K_SYSCALL_ZSOCK_CLOSE 529 -#define K_SYSCALL_ZSOCK_CONNECT 530 -#define K_SYSCALL_ZSOCK_FCNTL_IMPL 531 -#define K_SYSCALL_ZSOCK_GETHOSTNAME 532 -#define K_SYSCALL_ZSOCK_GETPEERNAME 533 -#define K_SYSCALL_ZSOCK_GETSOCKNAME 534 -#define K_SYSCALL_ZSOCK_GETSOCKOPT 535 -#define K_SYSCALL_ZSOCK_GET_CONTEXT_OBJECT 536 -#define K_SYSCALL_ZSOCK_INET_PTON 537 -#define K_SYSCALL_ZSOCK_IOCTL_IMPL 538 -#define K_SYSCALL_ZSOCK_LISTEN 539 -#define K_SYSCALL_ZSOCK_POLL 540 -#define K_SYSCALL_ZSOCK_RECVFROM 541 -#define K_SYSCALL_ZSOCK_RECVMSG 542 -#define K_SYSCALL_ZSOCK_SELECT 543 -#define K_SYSCALL_ZSOCK_SENDMSG 544 -#define K_SYSCALL_ZSOCK_SENDTO 545 -#define K_SYSCALL_ZSOCK_SETSOCKOPT 546 -#define K_SYSCALL_ZSOCK_SHUTDOWN 547 -#define K_SYSCALL_ZSOCK_SOCKET 548 -#define K_SYSCALL_ZSOCK_SOCKETPAIR 549 -#define K_SYSCALL_Z_ERRNO 550 -#define K_SYSCALL_Z_ZSOCK_GETADDRINFO_INTERNAL 551 +#define K_SYSCALL_ATOMIC_ADD 203 +#define K_SYSCALL_ATOMIC_AND 204 +#define K_SYSCALL_ATOMIC_CAS 205 +#define K_SYSCALL_ATOMIC_NAND 206 +#define K_SYSCALL_ATOMIC_OR 207 +#define K_SYSCALL_ATOMIC_PTR_CAS 208 +#define K_SYSCALL_ATOMIC_PTR_SET 209 +#define K_SYSCALL_ATOMIC_SET 210 +#define K_SYSCALL_ATOMIC_SUB 211 +#define K_SYSCALL_ATOMIC_XOR 212 +#define K_SYSCALL_AUXDISPLAY_BACKLIGHT_GET 213 +#define K_SYSCALL_AUXDISPLAY_BACKLIGHT_SET 214 +#define K_SYSCALL_AUXDISPLAY_BRIGHTNESS_GET 215 +#define K_SYSCALL_AUXDISPLAY_BRIGHTNESS_SET 216 +#define K_SYSCALL_AUXDISPLAY_CAPABILITIES_GET 217 +#define K_SYSCALL_AUXDISPLAY_CLEAR 218 +#define K_SYSCALL_AUXDISPLAY_CURSOR_POSITION_GET 219 +#define K_SYSCALL_AUXDISPLAY_CURSOR_POSITION_SET 220 +#define K_SYSCALL_AUXDISPLAY_CURSOR_SET_ENABLED 221 +#define K_SYSCALL_AUXDISPLAY_CURSOR_SHIFT_SET 222 +#define K_SYSCALL_AUXDISPLAY_CUSTOM_CHARACTER_SET 223 +#define K_SYSCALL_AUXDISPLAY_CUSTOM_COMMAND 224 +#define K_SYSCALL_AUXDISPLAY_DISPLAY_OFF 225 +#define K_SYSCALL_AUXDISPLAY_DISPLAY_ON 226 +#define K_SYSCALL_AUXDISPLAY_DISPLAY_POSITION_GET 227 +#define K_SYSCALL_AUXDISPLAY_DISPLAY_POSITION_SET 228 +#define K_SYSCALL_AUXDISPLAY_IS_BUSY 229 +#define K_SYSCALL_AUXDISPLAY_POSITION_BLINKING_SET_ENABLED 230 +#define K_SYSCALL_AUXDISPLAY_WRITE 231 +#define K_SYSCALL_BBRAM_CHECK_INVALID 232 +#define K_SYSCALL_BBRAM_CHECK_POWER 233 +#define K_SYSCALL_BBRAM_CHECK_STANDBY_POWER 234 +#define K_SYSCALL_BBRAM_GET_SIZE 235 +#define K_SYSCALL_BBRAM_READ 236 +#define K_SYSCALL_BBRAM_WRITE 237 +#define K_SYSCALL_BC12_SET_RESULT_CB 238 +#define K_SYSCALL_BC12_SET_ROLE 239 +#define K_SYSCALL_CAN_ADD_RX_FILTER_MSGQ 240 +#define K_SYSCALL_CAN_CALC_TIMING 241 +#define K_SYSCALL_CAN_CALC_TIMING_DATA 242 +#define K_SYSCALL_CAN_GET_BITRATE_MAX 243 +#define K_SYSCALL_CAN_GET_BITRATE_MIN 244 +#define K_SYSCALL_CAN_GET_CAPABILITIES 245 +#define K_SYSCALL_CAN_GET_CORE_CLOCK 246 +#define K_SYSCALL_CAN_GET_MAX_FILTERS 247 +#define K_SYSCALL_CAN_GET_MODE 248 +#define K_SYSCALL_CAN_GET_STATE 249 +#define K_SYSCALL_CAN_GET_TIMING_DATA_MAX 250 +#define K_SYSCALL_CAN_GET_TIMING_DATA_MIN 251 +#define K_SYSCALL_CAN_GET_TIMING_MAX 252 +#define K_SYSCALL_CAN_GET_TIMING_MIN 253 +#define K_SYSCALL_CAN_GET_TRANSCEIVER 254 +#define K_SYSCALL_CAN_RECOVER 255 +#define K_SYSCALL_CAN_REMOVE_RX_FILTER 256 +#define K_SYSCALL_CAN_SEND 257 +#define K_SYSCALL_CAN_SET_BITRATE 258 +#define K_SYSCALL_CAN_SET_BITRATE_DATA 259 +#define K_SYSCALL_CAN_SET_MODE 260 +#define K_SYSCALL_CAN_SET_TIMING 261 +#define K_SYSCALL_CAN_SET_TIMING_DATA 262 +#define K_SYSCALL_CAN_START 263 +#define K_SYSCALL_CAN_STATS_GET_ACK_ERRORS 264 +#define K_SYSCALL_CAN_STATS_GET_BIT0_ERRORS 265 +#define K_SYSCALL_CAN_STATS_GET_BIT1_ERRORS 266 +#define K_SYSCALL_CAN_STATS_GET_BIT_ERRORS 267 +#define K_SYSCALL_CAN_STATS_GET_CRC_ERRORS 268 +#define K_SYSCALL_CAN_STATS_GET_FORM_ERRORS 269 +#define K_SYSCALL_CAN_STATS_GET_RX_OVERRUNS 270 +#define K_SYSCALL_CAN_STATS_GET_STUFF_ERRORS 271 +#define K_SYSCALL_CAN_STOP 272 +#define K_SYSCALL_CHARGER_CHARGE_ENABLE 273 +#define K_SYSCALL_CHARGER_GET_PROP 274 +#define K_SYSCALL_CHARGER_SET_PROP 275 +#define K_SYSCALL_COMPARATOR_GET_OUTPUT 276 +#define K_SYSCALL_COMPARATOR_SET_TRIGGER 277 +#define K_SYSCALL_COMPARATOR_TRIGGER_IS_PENDING 278 +#define K_SYSCALL_COUNTER_CANCEL_CHANNEL_ALARM 279 +#define K_SYSCALL_COUNTER_GET_FREQUENCY 280 +#define K_SYSCALL_COUNTER_GET_GUARD_PERIOD 281 +#define K_SYSCALL_COUNTER_GET_MAX_TOP_VALUE 282 +#define K_SYSCALL_COUNTER_GET_NUM_OF_CHANNELS 283 +#define K_SYSCALL_COUNTER_GET_PENDING_INT 284 +#define K_SYSCALL_COUNTER_GET_TOP_VALUE 285 +#define K_SYSCALL_COUNTER_GET_VALUE 286 +#define K_SYSCALL_COUNTER_GET_VALUE_64 287 +#define K_SYSCALL_COUNTER_IS_COUNTING_UP 288 +#define K_SYSCALL_COUNTER_SET_CHANNEL_ALARM 289 +#define K_SYSCALL_COUNTER_SET_GUARD_PERIOD 290 +#define K_SYSCALL_COUNTER_SET_TOP_VALUE 291 +#define K_SYSCALL_COUNTER_START 292 +#define K_SYSCALL_COUNTER_STOP 293 +#define K_SYSCALL_COUNTER_TICKS_TO_US 294 +#define K_SYSCALL_COUNTER_US_TO_TICKS 295 +#define K_SYSCALL_DAC_CHANNEL_SETUP 296 +#define K_SYSCALL_DAC_WRITE_VALUE 297 +#define K_SYSCALL_DEVMUX_SELECT_GET 298 +#define K_SYSCALL_DEVMUX_SELECT_SET 299 +#define K_SYSCALL_EEPROM_GET_SIZE 300 +#define K_SYSCALL_EEPROM_READ 301 +#define K_SYSCALL_EEPROM_WRITE 302 +#define K_SYSCALL_EMUL_FUEL_GAUGE_IS_BATTERY_CUTOFF 303 +#define K_SYSCALL_EMUL_FUEL_GAUGE_SET_BATTERY_CHARGING 304 +#define K_SYSCALL_ESPI_CONFIG 305 +#define K_SYSCALL_ESPI_FLASH_ERASE 306 +#define K_SYSCALL_ESPI_GET_CHANNEL_STATUS 307 +#define K_SYSCALL_ESPI_READ_FLASH 308 +#define K_SYSCALL_ESPI_READ_LPC_REQUEST 309 +#define K_SYSCALL_ESPI_READ_REQUEST 310 +#define K_SYSCALL_ESPI_RECEIVE_OOB 311 +#define K_SYSCALL_ESPI_RECEIVE_VWIRE 312 +#define K_SYSCALL_ESPI_SAF_ACTIVATE 313 +#define K_SYSCALL_ESPI_SAF_CONFIG 314 +#define K_SYSCALL_ESPI_SAF_FLASH_ERASE 315 +#define K_SYSCALL_ESPI_SAF_FLASH_READ 316 +#define K_SYSCALL_ESPI_SAF_FLASH_UNSUCCESS 317 +#define K_SYSCALL_ESPI_SAF_FLASH_WRITE 318 +#define K_SYSCALL_ESPI_SAF_GET_CHANNEL_STATUS 319 +#define K_SYSCALL_ESPI_SAF_SET_PROTECTION_REGIONS 320 +#define K_SYSCALL_ESPI_SEND_OOB 321 +#define K_SYSCALL_ESPI_SEND_VWIRE 322 +#define K_SYSCALL_ESPI_WRITE_FLASH 323 +#define K_SYSCALL_ESPI_WRITE_LPC_REQUEST 324 +#define K_SYSCALL_ESPI_WRITE_REQUEST 325 +#define K_SYSCALL_FLASH_SIMULATOR_GET_MEMORY 326 +#define K_SYSCALL_FUEL_GAUGE_BATTERY_CUTOFF 327 +#define K_SYSCALL_FUEL_GAUGE_GET_BUFFER_PROP 328 +#define K_SYSCALL_FUEL_GAUGE_GET_PROP 329 +#define K_SYSCALL_FUEL_GAUGE_GET_PROPS 330 +#define K_SYSCALL_FUEL_GAUGE_SET_PROP 331 +#define K_SYSCALL_FUEL_GAUGE_SET_PROPS 332 +#define K_SYSCALL_GNSS_GET_ENABLED_SYSTEMS 333 +#define K_SYSCALL_GNSS_GET_FIX_RATE 334 +#define K_SYSCALL_GNSS_GET_LATEST_TIMEPULSE 335 +#define K_SYSCALL_GNSS_GET_NAVIGATION_MODE 336 +#define K_SYSCALL_GNSS_GET_SUPPORTED_SYSTEMS 337 +#define K_SYSCALL_GNSS_SET_ENABLED_SYSTEMS 338 +#define K_SYSCALL_GNSS_SET_FIX_RATE 339 +#define K_SYSCALL_GNSS_SET_NAVIGATION_MODE 340 +#define K_SYSCALL_HAPTICS_START_OUTPUT 341 +#define K_SYSCALL_HAPTICS_STOP_OUTPUT 342 +#define K_SYSCALL_HWSPINLOCK_GET_MAX_ID 343 +#define K_SYSCALL_HWSPINLOCK_LOCK 344 +#define K_SYSCALL_HWSPINLOCK_TRYLOCK 345 +#define K_SYSCALL_HWSPINLOCK_UNLOCK 346 +#define K_SYSCALL_I2S_BUF_READ 347 +#define K_SYSCALL_I2S_BUF_WRITE 348 +#define K_SYSCALL_I2S_CONFIGURE 349 +#define K_SYSCALL_I2S_TRIGGER 350 +#define K_SYSCALL_I3C_DO_CCC 351 +#define K_SYSCALL_I3C_TRANSFER 352 +#define K_SYSCALL_IPM_COMPLETE 353 +#define K_SYSCALL_IPM_MAX_DATA_SIZE_GET 354 +#define K_SYSCALL_IPM_MAX_ID_VAL_GET 355 +#define K_SYSCALL_IPM_SEND 356 +#define K_SYSCALL_IPM_SET_ENABLED 357 +#define K_SYSCALL_IVSHMEM_ENABLE_INTERRUPTS 358 +#define K_SYSCALL_IVSHMEM_GET_ID 359 +#define K_SYSCALL_IVSHMEM_GET_MAX_PEERS 360 +#define K_SYSCALL_IVSHMEM_GET_MEM 361 +#define K_SYSCALL_IVSHMEM_GET_OUTPUT_MEM_SECTION 362 +#define K_SYSCALL_IVSHMEM_GET_PROTOCOL 363 +#define K_SYSCALL_IVSHMEM_GET_RW_MEM_SECTION 364 +#define K_SYSCALL_IVSHMEM_GET_STATE 365 +#define K_SYSCALL_IVSHMEM_GET_VECTORS 366 +#define K_SYSCALL_IVSHMEM_INT_PEER 367 +#define K_SYSCALL_IVSHMEM_REGISTER_HANDLER 368 +#define K_SYSCALL_IVSHMEM_SET_STATE 369 +#define K_SYSCALL_KSCAN_CONFIG 370 +#define K_SYSCALL_KSCAN_DISABLE_CALLBACK 371 +#define K_SYSCALL_KSCAN_ENABLE_CALLBACK 372 +#define K_SYSCALL_K_MEM_PAGING_HISTOGRAM_BACKING_STORE_PAGE_IN_GET 373 +#define K_SYSCALL_K_MEM_PAGING_HISTOGRAM_BACKING_STORE_PAGE_OUT_GET 374 +#define K_SYSCALL_K_MEM_PAGING_HISTOGRAM_EVICTION_GET 375 +#define K_SYSCALL_K_MEM_PAGING_STATS_GET 376 +#define K_SYSCALL_K_MEM_PAGING_THREAD_STATS_GET 377 +#define K_SYSCALL_LED_BLINK 378 +#define K_SYSCALL_LED_GET_INFO 379 +#define K_SYSCALL_LED_OFF 380 +#define K_SYSCALL_LED_ON 381 +#define K_SYSCALL_LED_SET_BRIGHTNESS 382 +#define K_SYSCALL_LED_SET_CHANNEL 383 +#define K_SYSCALL_LED_SET_COLOR 384 +#define K_SYSCALL_LED_WRITE_CHANNELS 385 +#define K_SYSCALL_MAXIM_DS3231_GET_SYNCPOINT 386 +#define K_SYSCALL_MAXIM_DS3231_REQ_SYNCPOINT 387 +#define K_SYSCALL_MBOX_MAX_CHANNELS_GET 388 +#define K_SYSCALL_MBOX_MTU_GET 389 +#define K_SYSCALL_MBOX_SEND 390 +#define K_SYSCALL_MBOX_SET_ENABLED 391 +#define K_SYSCALL_MDIO_BUS_DISABLE 392 +#define K_SYSCALL_MDIO_BUS_ENABLE 393 +#define K_SYSCALL_MDIO_READ 394 +#define K_SYSCALL_MDIO_READ_C45 395 +#define K_SYSCALL_MDIO_WRITE 396 +#define K_SYSCALL_MDIO_WRITE_C45 397 +#define K_SYSCALL_MSPI_CONFIG 398 +#define K_SYSCALL_MSPI_DEV_CONFIG 399 +#define K_SYSCALL_MSPI_GET_CHANNEL_STATUS 400 +#define K_SYSCALL_MSPI_SCRAMBLE_CONFIG 401 +#define K_SYSCALL_MSPI_TIMING_CONFIG 402 +#define K_SYSCALL_MSPI_TRANSCEIVE 403 +#define K_SYSCALL_MSPI_XIP_CONFIG 404 +#define K_SYSCALL_NET_ADDR_NTOP 405 +#define K_SYSCALL_NET_ADDR_PTON 406 +#define K_SYSCALL_NET_ETH_GET_PTP_CLOCK_BY_INDEX 407 +#define K_SYSCALL_NET_IF_GET_BY_INDEX 408 +#define K_SYSCALL_NET_IF_IPV4_ADDR_ADD_BY_INDEX 409 +#define K_SYSCALL_NET_IF_IPV4_ADDR_LOOKUP_BY_INDEX 410 +#define K_SYSCALL_NET_IF_IPV4_ADDR_RM_BY_INDEX 411 +#define K_SYSCALL_NET_IF_IPV4_SET_GW_BY_INDEX 412 +#define K_SYSCALL_NET_IF_IPV4_SET_NETMASK_BY_ADDR_BY_INDEX 413 +#define K_SYSCALL_NET_IF_IPV4_SET_NETMASK_BY_INDEX 414 +#define K_SYSCALL_NET_IF_IPV6_ADDR_ADD_BY_INDEX 415 +#define K_SYSCALL_NET_IF_IPV6_ADDR_LOOKUP_BY_INDEX 416 +#define K_SYSCALL_NET_IF_IPV6_ADDR_RM_BY_INDEX 417 +#define K_SYSCALL_NET_SOCKET_SERVICE_REGISTER 418 +#define K_SYSCALL_NRF_QSPI_NOR_XIP_ENABLE 419 +#define K_SYSCALL_PECI_CONFIG 420 +#define K_SYSCALL_PECI_DISABLE 421 +#define K_SYSCALL_PECI_ENABLE 422 +#define K_SYSCALL_PECI_TRANSFER 423 +#define K_SYSCALL_PS2_CONFIG 424 +#define K_SYSCALL_PS2_DISABLE_CALLBACK 425 +#define K_SYSCALL_PS2_ENABLE_CALLBACK 426 +#define K_SYSCALL_PS2_READ 427 +#define K_SYSCALL_PS2_WRITE 428 +#define K_SYSCALL_PTP_CLOCK_GET 429 +#define K_SYSCALL_RETAINED_MEM_CLEAR 430 +#define K_SYSCALL_RETAINED_MEM_READ 431 +#define K_SYSCALL_RETAINED_MEM_SIZE 432 +#define K_SYSCALL_RETAINED_MEM_WRITE 433 +#define K_SYSCALL_RTC_ALARM_GET_SUPPORTED_FIELDS 434 +#define K_SYSCALL_RTC_ALARM_GET_TIME 435 +#define K_SYSCALL_RTC_ALARM_IS_PENDING 436 +#define K_SYSCALL_RTC_ALARM_SET_CALLBACK 437 +#define K_SYSCALL_RTC_ALARM_SET_TIME 438 +#define K_SYSCALL_RTC_GET_CALIBRATION 439 +#define K_SYSCALL_RTC_GET_TIME 440 +#define K_SYSCALL_RTC_SET_CALIBRATION 441 +#define K_SYSCALL_RTC_SET_TIME 442 +#define K_SYSCALL_RTC_UPDATE_SET_CALLBACK 443 +#define K_SYSCALL_RTIO_CQE_COPY_OUT 444 +#define K_SYSCALL_RTIO_CQE_GET_MEMPOOL_BUFFER 445 +#define K_SYSCALL_RTIO_RELEASE_BUFFER 446 +#define K_SYSCALL_RTIO_SQE_CANCEL 447 +#define K_SYSCALL_RTIO_SQE_COPY_IN_GET_HANDLES 448 +#define K_SYSCALL_RTIO_SUBMIT 449 +#define K_SYSCALL_SDHC_CARD_BUSY 450 +#define K_SYSCALL_SDHC_CARD_PRESENT 451 +#define K_SYSCALL_SDHC_DISABLE_INTERRUPT 452 +#define K_SYSCALL_SDHC_ENABLE_INTERRUPT 453 +#define K_SYSCALL_SDHC_EXECUTE_TUNING 454 +#define K_SYSCALL_SDHC_GET_HOST_PROPS 455 +#define K_SYSCALL_SDHC_HW_RESET 456 +#define K_SYSCALL_SDHC_REQUEST 457 +#define K_SYSCALL_SDHC_SET_IO 458 +#define K_SYSCALL_SENSOR_ATTR_GET 459 +#define K_SYSCALL_SENSOR_ATTR_SET 460 +#define K_SYSCALL_SENSOR_CHANNEL_GET 461 +#define K_SYSCALL_SENSOR_GET_DECODER 462 +#define K_SYSCALL_SENSOR_RECONFIGURE_READ_IODEV 463 +#define K_SYSCALL_SENSOR_SAMPLE_FETCH 464 +#define K_SYSCALL_SENSOR_SAMPLE_FETCH_CHAN 465 +#define K_SYSCALL_SIP_SUPERVISORY_CALL 466 +#define K_SYSCALL_SIP_SVC_PLAT_ASYNC_RES_REQ 467 +#define K_SYSCALL_SIP_SVC_PLAT_ASYNC_RES_RES 468 +#define K_SYSCALL_SIP_SVC_PLAT_FORMAT_TRANS_ID 469 +#define K_SYSCALL_SIP_SVC_PLAT_FREE_ASYNC_MEMORY 470 +#define K_SYSCALL_SIP_SVC_PLAT_FUNC_ID_VALID 471 +#define K_SYSCALL_SIP_SVC_PLAT_GET_ERROR_CODE 472 +#define K_SYSCALL_SIP_SVC_PLAT_GET_TRANS_IDX 473 +#define K_SYSCALL_SIP_SVC_PLAT_UPDATE_TRANS_ID 474 +#define K_SYSCALL_SMBUS_BLOCK_PCALL 475 +#define K_SYSCALL_SMBUS_BLOCK_READ 476 +#define K_SYSCALL_SMBUS_BLOCK_WRITE 477 +#define K_SYSCALL_SMBUS_BYTE_DATA_READ 478 +#define K_SYSCALL_SMBUS_BYTE_DATA_WRITE 479 +#define K_SYSCALL_SMBUS_BYTE_READ 480 +#define K_SYSCALL_SMBUS_BYTE_WRITE 481 +#define K_SYSCALL_SMBUS_CONFIGURE 482 +#define K_SYSCALL_SMBUS_GET_CONFIG 483 +#define K_SYSCALL_SMBUS_HOST_NOTIFY_REMOVE_CB 484 +#define K_SYSCALL_SMBUS_PCALL 485 +#define K_SYSCALL_SMBUS_QUICK 486 +#define K_SYSCALL_SMBUS_SMBALERT_REMOVE_CB 487 +#define K_SYSCALL_SMBUS_WORD_DATA_READ 488 +#define K_SYSCALL_SMBUS_WORD_DATA_WRITE 489 +#define K_SYSCALL_STEPPER_ENABLE 490 +#define K_SYSCALL_STEPPER_GET_ACTUAL_POSITION 491 +#define K_SYSCALL_STEPPER_GET_MICRO_STEP_RES 492 +#define K_SYSCALL_STEPPER_IS_MOVING 493 +#define K_SYSCALL_STEPPER_MOVE_BY 494 +#define K_SYSCALL_STEPPER_MOVE_TO 495 +#define K_SYSCALL_STEPPER_RUN 496 +#define K_SYSCALL_STEPPER_SET_EVENT_CALLBACK 497 +#define K_SYSCALL_STEPPER_SET_MAX_VELOCITY 498 +#define K_SYSCALL_STEPPER_SET_MICRO_STEP_RES 499 +#define K_SYSCALL_STEPPER_SET_REFERENCE_POSITION 500 +#define K_SYSCALL_SYSCON_GET_BASE 501 +#define K_SYSCALL_SYSCON_GET_SIZE 502 +#define K_SYSCALL_SYSCON_READ_REG 503 +#define K_SYSCALL_SYSCON_WRITE_REG 504 +#define K_SYSCALL_TEE_CANCEL 505 +#define K_SYSCALL_TEE_CLOSE_SESSION 506 +#define K_SYSCALL_TEE_GET_VERSION 507 +#define K_SYSCALL_TEE_INVOKE_FUNC 508 +#define K_SYSCALL_TEE_OPEN_SESSION 509 +#define K_SYSCALL_TEE_SHM_ALLOC 510 +#define K_SYSCALL_TEE_SHM_FREE 511 +#define K_SYSCALL_TEE_SHM_REGISTER 512 +#define K_SYSCALL_TEE_SHM_UNREGISTER 513 +#define K_SYSCALL_TEE_SUPPL_RECV 514 +#define K_SYSCALL_TEE_SUPPL_SEND 515 +#define K_SYSCALL_TGPIO_PIN_CONFIG_EXT_TIMESTAMP 516 +#define K_SYSCALL_TGPIO_PIN_DISABLE 517 +#define K_SYSCALL_TGPIO_PIN_PERIODIC_OUTPUT 518 +#define K_SYSCALL_TGPIO_PIN_READ_TS_EC 519 +#define K_SYSCALL_TGPIO_PORT_GET_CYCLES_PER_SECOND 520 +#define K_SYSCALL_TGPIO_PORT_GET_TIME 521 +#define K_SYSCALL_UPDATEHUB_AUTOHANDLER 522 +#define K_SYSCALL_UPDATEHUB_CONFIRM 523 +#define K_SYSCALL_UPDATEHUB_PROBE 524 +#define K_SYSCALL_UPDATEHUB_REBOOT 525 +#define K_SYSCALL_UPDATEHUB_UPDATE 526 +#define K_SYSCALL_USER_FAULT 527 +#define K_SYSCALL_W1_CHANGE_BUS_LOCK 528 +#define K_SYSCALL_W1_CONFIGURE 529 +#define K_SYSCALL_W1_GET_SLAVE_COUNT 530 +#define K_SYSCALL_W1_READ_BIT 531 +#define K_SYSCALL_W1_READ_BLOCK 532 +#define K_SYSCALL_W1_READ_BYTE 533 +#define K_SYSCALL_W1_RESET_BUS 534 +#define K_SYSCALL_W1_SEARCH_BUS 535 +#define K_SYSCALL_W1_WRITE_BIT 536 +#define K_SYSCALL_W1_WRITE_BLOCK 537 +#define K_SYSCALL_W1_WRITE_BYTE 538 +#define K_SYSCALL_WDT_DISABLE 539 +#define K_SYSCALL_WDT_FEED 540 +#define K_SYSCALL_WDT_SETUP 541 +#define K_SYSCALL_XTENSA_USER_FAULT 542 +#define K_SYSCALL_ZSOCK_ACCEPT 543 +#define K_SYSCALL_ZSOCK_BIND 544 +#define K_SYSCALL_ZSOCK_CLOSE 545 +#define K_SYSCALL_ZSOCK_CONNECT 546 +#define K_SYSCALL_ZSOCK_FCNTL_IMPL 547 +#define K_SYSCALL_ZSOCK_GETHOSTNAME 548 +#define K_SYSCALL_ZSOCK_GETPEERNAME 549 +#define K_SYSCALL_ZSOCK_GETSOCKNAME 550 +#define K_SYSCALL_ZSOCK_GETSOCKOPT 551 +#define K_SYSCALL_ZSOCK_GET_CONTEXT_OBJECT 552 +#define K_SYSCALL_ZSOCK_INET_PTON 553 +#define K_SYSCALL_ZSOCK_IOCTL_IMPL 554 +#define K_SYSCALL_ZSOCK_LISTEN 555 +#define K_SYSCALL_ZSOCK_RECVFROM 556 +#define K_SYSCALL_ZSOCK_RECVMSG 557 +#define K_SYSCALL_ZSOCK_SENDMSG 558 +#define K_SYSCALL_ZSOCK_SENDTO 559 +#define K_SYSCALL_ZSOCK_SETSOCKOPT 560 +#define K_SYSCALL_ZSOCK_SHUTDOWN 561 +#define K_SYSCALL_ZSOCK_SOCKET 562 +#define K_SYSCALL_ZSOCK_SOCKETPAIR 563 +#define K_SYSCALL_ZVFS_POLL 564 +#define K_SYSCALL_ZVFS_SELECT 565 +#define K_SYSCALL_Z_ERRNO 566 +#define K_SYSCALL_Z_ZSOCK_GETADDRINFO_INTERNAL 567 #ifndef _ASMLANGUAGE diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/autoconf.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/autoconf.h index 45e4e9b2..6b31bcd0 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/autoconf.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/autoconf.h @@ -8,50 +8,51 @@ #define CONFIG_FLASH_SIZE 1024 #define CONFIG_FLASH_BASE_ADDRESS 0x8000000 #define CONFIG_MP_MAX_NUM_CPUS 1 +#define CONFIG_MAIN_STACK_SIZE 32768 +#define CONFIG_IDLE_STACK_SIZE 320 +#define CONFIG_ISR_STACK_SIZE 2048 +#define CONFIG_CLOCK_CONTROL 1 #define CONFIG_SYS_CLOCK_TICKS_PER_SEC 10000 #define CONFIG_ROM_START_OFFSET 0x0 -#define CONFIG_PINCTRL 1 +#define CONFIG_KERNEL_ENTRY "__start" #define CONFIG_BUILD_OUTPUT_BIN 1 #define CONFIG_XIP 1 -#define CONFIG_MAIN_STACK_SIZE 32768 -#define CONFIG_IDLE_STACK_SIZE 320 #define CONFIG_HAS_FLASH_LOAD_OFFSET 1 #define CONFIG_CPU_HAS_ARM_MPU 1 #define CONFIG_CPU_HAS_FPU_DOUBLE_PRECISION 1 #define CONFIG_STM32H7_DUAL_CORE 1 #define CONFIG_TICKLESS_KERNEL 1 +#define CONFIG_ENTROPY_STM32_CLK_CHECK 1 #define CONFIG_FPU 1 #define CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE 1024 #define CONFIG_CORTEX_M_SYSTICK 1 -#define CONFIG_CLOCK_CONTROL_STM32_CUBE 1 #define CONFIG_CLOCK_CONTROL_INIT_PRIORITY 1 #define CONFIG_USE_DT_CODE_PARTITION 1 #define CONFIG_CACHE_MANAGEMENT 1 +#define CONFIG_GEN_IRQ_VECTOR_TABLE 1 +#define CONFIG_GEN_ISR_TABLES 1 +#define CONFIG_INIT_STACKS 1 +#define CONFIG_TIMESLICE_SIZE 0 #define CONFIG_FLASH_LOAD_OFFSET 0x40000 -#define CONFIG_FLASH 1 -#define CONFIG_HEAP_MEM_POOL_SIZE 32768 -#define CONFIG_SERIAL_INIT_PRIORITY 50 +#define CONFIG_SYS_CLOCK_EXISTS 1 #define CONFIG_FLASH_FILL_BUFFER_SIZE 32 #define CONFIG_GPIO 1 #define CONFIG_CPU_HAS_CUSTOM_FIXED_SOC_MPU_REGIONS 1 #define CONFIG_MEMC 1 -#define CONFIG_KERNEL_ENTRY "__start" #define CONFIG_CACHE 1 #define CONFIG_DCACHE 1 #define CONFIG_LOG 1 #define CONFIG_DCACHE_LINE_SIZE 32 -#define CONFIG_GEN_IRQ_VECTOR_TABLE 1 -#define CONFIG_SOC "stm32h747xx" #define CONFIG_RESET 1 #define CONFIG_ARCH_SW_ISR_TABLE_ALIGN 4 #define CONFIG_LOG_DOMAIN_NAME "" +#define CONFIG_SHELL_BACKEND_SERIAL 1 #define CONFIG_BUILD_OUTPUT_HEX 1 -#define CONFIG_CLOCK_CONTROL 1 #define CONFIG_UART_USE_RUNTIME_CONFIGURE 1 -#define CONFIG_SOC_SERIES "stm32h7x" -#define CONFIG_SOC_FAMILY "stm32" +#define CONFIG_SERIAL_INIT_PRIORITY 50 +#define CONFIG_ENTROPY_INIT_PRIORITY 50 #define CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE -1 -#define CONFIG_GEN_ISR_TABLES 1 +#define CONFIG_SOC_TOOLCHAIN_NAME "amd_acp_6_0_adsp" #define CONFIG_GEN_SW_ISR_TABLE 1 #define CONFIG_REBOOT 1 #define CONFIG_FLASH_INIT_PRIORITY 50 @@ -59,7 +60,6 @@ #define CONFIG_SRAM_OFFSET 0x0 #define CONFIG_CONSOLE 1 #define CONFIG_ARCH_IRQ_VECTOR_TABLE_ALIGN 4 -#define CONFIG_ISR_STACK_SIZE 2048 #define CONFIG_ICACHE_LINE_SIZE 32 #define CONFIG_DT_HAS_ARDUINO_HEADER_R3_ENABLED 1 #define CONFIG_DT_HAS_ARM_ARMV7M_MPU_ENABLED 1 @@ -113,6 +113,7 @@ #define CONFIG_DT_HAS_ZEPHYR_BT_HCI_UART_ENABLED 1 #define CONFIG_DT_HAS_ZEPHYR_CDC_ACM_UART_ENABLED 1 #define CONFIG_DT_HAS_ZEPHYR_MEMORY_REGION_ENABLED 1 +#define CONFIG_TAINT_BLOBS 1 #define CONFIG_ZEPHYR_ARDUINO_API_MODULE 1 #define CONFIG_ZEPHYR_CMSIS_MODULE 1 #define CONFIG_HAS_CMSIS_CORE 1 @@ -122,13 +123,15 @@ #define CONFIG_ZEPHYR_ATMEL_MODULE 1 #define CONFIG_ZEPHYR_HAL_ESPRESSIF_MODULE 1 #define CONFIG_ZEPHYR_HAL_INFINEON_MODULE 1 +#define CONFIG_ZEPHYR_HAL_INFINEON_MODULE_BLOBS 1 #define CONFIG_ZEPHYR_HAL_INTEL_MODULE 1 #define CONFIG_ZEPHYR_HAL_NORDIC_MODULE 1 #define CONFIG_ZEPHYR_HAL_NXP_MODULE 1 +#define CONFIG_ZEPHYR_HAL_NXP_MODULE_BLOBS 1 #define CONFIG_ZEPHYR_HAL_RENESAS_MODULE 1 #define CONFIG_ZEPHYR_HAL_RPI_PICO_MODULE 1 #define CONFIG_ZEPHYR_HAL_SILABS_MODULE 1 -#define CONFIG_ZEPHYR_STM32_MODULE 1 +#define CONFIG_ZEPHYR_HAL_STM32_MODULE 1 #define CONFIG_ZEPHYR_TI_MODULE 1 #define CONFIG_ZEPHYR_XTENSA_MODULE 1 #define CONFIG_ZEPHYR_LITTLEFS_MODULE 1 @@ -145,8 +148,8 @@ #define CONFIG_USE_STM32_HAL_SDRAM 1 #define CONFIG_USE_STM32_LL_DMA 1 #define CONFIG_USE_STM32_LL_FMC 1 -#define CONFIG_USE_STM32_LL_I2C 1 #define CONFIG_USE_STM32_LL_RCC 1 +#define CONFIG_USE_STM32_LL_RNG 1 #define CONFIG_USE_STM32_LL_SPI 1 #define CONFIG_USE_STM32_LL_TIM 1 #define CONFIG_USE_STM32_LL_USB 1 @@ -157,6 +160,9 @@ #define CONFIG_BOARD_ARDUINO_GIGA_R1 1 #define CONFIG_BOARD_ARDUINO_GIGA_R1_STM32H747XX_M7 1 #define CONFIG_BOARD_QUALIFIERS "stm32h747xx/m7" +#define CONFIG_SOC "stm32h747xx" +#define CONFIG_SOC_SERIES "stm32h7x" +#define CONFIG_SOC_FAMILY "stm32" #define CONFIG_SOC_FAMILY_STM32 1 #define CONFIG_SOC_SERIES_STM32H7X 1 #define CONFIG_SOC_STM32H747XX_M7 1 @@ -206,6 +212,7 @@ #define CONFIG_ARCH_HAS_RAMFUNC_SUPPORT 1 #define CONFIG_ARCH_HAS_NESTED_EXCEPTION_DETECTION 1 #define CONFIG_ARCH_SUPPORTS_COREDUMP 1 +#define CONFIG_ARCH_SUPPORTS_COREDUMP_THREADS 1 #define CONFIG_ARCH_SUPPORTS_ARCH_HW_INIT 1 #define CONFIG_ARCH_SUPPORTS_ROM_START 1 #define CONFIG_ARCH_HAS_EXTRA_EXCEPTION_INFO 1 @@ -221,6 +228,7 @@ #define CONFIG_ICACHE 1 #define CONFIG_ARCH_CACHE 1 #define CONFIG_TOOLCHAIN_HAS_BUILTIN_FFS 1 +#define CONFIG_ARCH_HAS_CUSTOM_SWAP_TO_MAIN 1 #define CONFIG_KERNEL_LOG_LEVEL_DEFAULT 1 #define CONFIG_KERNEL_LOG_LEVEL 3 #define CONFIG_MULTITHREADING 1 @@ -237,7 +245,6 @@ #define CONFIG_LIBC_ERRNO 1 #define CONFIG_ERRNO 1 #define CONFIG_CURRENT_THREAD_USE_TLS 1 -#define CONFIG_INIT_STACKS 1 #define CONFIG_BOOT_BANNER 1 #define CONFIG_BOOT_BANNER_STRING "Booting Zephyr OS build" #define CONFIG_BOOT_DELAY 0 @@ -248,37 +255,38 @@ #define CONFIG_BARRIER_OPERATIONS_ARCH 1 #define CONFIG_ATOMIC_OPERATIONS_BUILTIN 1 #define CONFIG_TIMESLICING 1 -#define CONFIG_TIMESLICE_SIZE 0 #define CONFIG_TIMESLICE_PRIORITY 0 #define CONFIG_POLL 1 #define CONFIG_NUM_MBOX_ASYNC_MSGS 10 #define CONFIG_KERNEL_MEM_POOL 1 -#define CONFIG_ARCH_HAS_CUSTOM_SWAP_TO_MAIN 1 +#define CONFIG_HEAP_MEM_POOL_SIZE 2048 #define CONFIG_SWAP_NONATOMIC 1 -#define CONFIG_SYS_CLOCK_EXISTS 1 #define CONFIG_TIMEOUT_64BIT 1 #define CONFIG_SYS_CLOCK_MAX_TIMEOUT_DAYS 365 -#define CONFIG_MP_NUM_CPUS 1 +#define CONFIG_STACK_POINTER_RANDOM 0 #define CONFIG_TOOLCHAIN_SUPPORTS_THREAD_LOCAL_STORAGE 1 #define CONFIG_THREAD_LOCAL_STORAGE 1 #define CONFIG_KERNEL_WHOLE_ARCHIVE 1 #define CONFIG_TOOLCHAIN_SUPPORTS_STATIC_INIT_GNU 1 +#define CONFIG_STATIC_INIT_GNU 1 +#define CONFIG_DEVICE_DT_METADATA 1 #define CONFIG_KERNEL_INIT_PRIORITY_OBJECTS 30 #define CONFIG_KERNEL_INIT_PRIORITY_LIBC 35 #define CONFIG_KERNEL_INIT_PRIORITY_DEFAULT 40 #define CONFIG_KERNEL_INIT_PRIORITY_DEVICE 50 #define CONFIG_APPLICATION_INIT_PRIORITY 90 +#define CONFIG_SOC_EARLY_INIT_HOOK 1 #define CONFIG_ADC 1 #define CONFIG_ADC_LOG_LEVEL_DEFAULT 1 #define CONFIG_ADC_LOG_LEVEL 3 #define CONFIG_ADC_STM32 1 +#define CONFIG_FLASH 1 #define CONFIG_CACHE_LOG_LEVEL_DEFAULT 1 #define CONFIG_CACHE_LOG_LEVEL 3 #define CONFIG_CLOCK_CONTROL_LOG_LEVEL_DEFAULT 1 #define CONFIG_CLOCK_CONTROL_LOG_LEVEL 3 +#define CONFIG_CLOCK_CONTROL_STM32_CUBE 1 #define CONFIG_CLOCK_STM32_HSE_CLOCK 16000000 -#define CONFIG_CLOCK_STM32_MCO1_SRC_NOCLOCK 1 -#define CONFIG_CLOCK_STM32_MCO2_SRC_NOCLOCK 1 #define CONFIG_CLOCK_CONTROL_PWM 1 #define CONFIG_CLOCK_CONTROL_PWM_INIT_PRIORITY 51 #define CONFIG_CONSOLE_INPUT_MAX_LINE_LEN 128 @@ -295,15 +303,25 @@ #define CONFIG_DMA_STM32_V1 1 #define CONFIG_DMAMUX_STM32 1 #define CONFIG_DMAMUX_STM32_INIT_PRIORITY 41 +#define CONFIG_DMA_ESP32_MAX_DESCRIPTOR_NUM 16 +#define CONFIG_ENTROPY_GENERATOR 1 +#define CONFIG_ENTROPY_LOG_LEVEL_DEFAULT 1 +#define CONFIG_ENTROPY_LOG_LEVEL 3 +#define CONFIG_ENTROPY_STM32_RNG 1 +#define CONFIG_ENTROPY_STM32_THR_POOL_SIZE 8 +#define CONFIG_ENTROPY_STM32_THR_THRESHOLD 4 +#define CONFIG_ENTROPY_STM32_ISR_POOL_SIZE 16 +#define CONFIG_ENTROPY_STM32_ISR_THRESHOLD 12 +#define CONFIG_ENTROPY_HAS_DRIVER 1 #define CONFIG_FLASH_HAS_DRIVER_ENABLED 1 #define CONFIG_FLASH_HAS_EXPLICIT_ERASE 1 #define CONFIG_FLASH_HAS_PAGE_LAYOUT 1 #define CONFIG_FLASH_JESD216 1 -#define CONFIG_FLASH_LOG_LEVEL_DEFAULT 1 -#define CONFIG_FLASH_LOG_LEVEL 3 #define CONFIG_FLASH_PAGE_LAYOUT 1 #define CONFIG_SOC_FLASH_STM32 1 #define CONFIG_FLASH_STM32_QSPI 1 +#define CONFIG_FLASH_LOG_LEVEL_DEFAULT 1 +#define CONFIG_FLASH_LOG_LEVEL 3 #define CONFIG_GPIO_LOG_LEVEL_DEFAULT 1 #define CONFIG_GPIO_LOG_LEVEL 3 #define CONFIG_GPIO_STM32 1 @@ -311,10 +329,12 @@ #define CONFIG_HWINFO 1 #define CONFIG_HWINFO_LOG_LEVEL_DEFAULT 1 #define CONFIG_HWINFO_LOG_LEVEL 3 +#define CONFIG_HWINFO_HAS_DRIVER 1 #define CONFIG_HWINFO_STM32 1 #define CONFIG_I2C_STM32 1 #define CONFIG_I2C_STM32_V2 1 #define CONFIG_I2C_STM32_INTERRUPT 1 +#define CONFIG_I2C_SAM0_TRANSFER_TIMEOUT 500 #define CONFIG_I2C_INIT_PRIORITY 50 #define CONFIG_I2C_LOG_LEVEL_DEFAULT 1 #define CONFIG_I2C_LOG_LEVEL 3 @@ -322,11 +342,12 @@ #define CONFIG_INTC_LOG_LEVEL_DEFAULT 1 #define CONFIG_INTC_LOG_LEVEL 3 #define CONFIG_EXTI_STM32 1 -#define CONFIG_MEMC_LOG_LEVEL_DEFAULT 1 -#define CONFIG_MEMC_LOG_LEVEL 3 #define CONFIG_MEMC_INIT_PRIORITY 0 #define CONFIG_MEMC_STM32 1 #define CONFIG_MEMC_STM32_SDRAM 1 +#define CONFIG_MEMC_LOG_LEVEL_DEFAULT 1 +#define CONFIG_MEMC_LOG_LEVEL 3 +#define CONFIG_PINCTRL 1 #define CONFIG_PINCTRL_LOG_LEVEL_DEFAULT 1 #define CONFIG_PINCTRL_LOG_LEVEL 3 #define CONFIG_PINCTRL_STM32 1 @@ -367,6 +388,7 @@ #define CONFIG_NRF_USBD_COMMON_LOG_LEVEL 3 #define CONFIG_USBC_LOG_LEVEL_DEFAULT 1 #define CONFIG_USBC_LOG_LEVEL 3 +#define CONFIG_SHELL_STACK_SIZE 32768 #define CONFIG_FULL_LIBC_SUPPORTED 1 #define CONFIG_MINIMAL_LIBC_SUPPORTED 1 #define CONFIG_NEWLIB_LIBC_SUPPORTED 1 @@ -381,6 +403,9 @@ #define CONFIG_PICOLIBC_IO_FLOAT 1 #define CONFIG_STDOUT_CONSOLE 1 #define CONFIG_NEED_LIBC_MEM_PARTITION 1 +#define CONFIG_CPP 1 +#define CONFIG_STD_CPP17 1 +#define CONFIG_MINIMAL_LIBCPP 1 #define CONFIG_SYS_HEAP_ALLOC_LOOPS 3 #define CONFIG_SYS_HEAP_AUTO 1 #define CONFIG_ZVFS_OPEN_MAX 4 @@ -392,6 +417,7 @@ #define CONFIG_CBPRINTF_PACKAGE_LOG_LEVEL 3 #define CONFIG_CBPRINTF_CONVERT_CHECK_PTR 1 #define CONFIG_POSIX_AEP_CHOICE_NONE 1 +#define CONFIG_POSIX_C_LANG_SUPPORT_R 1 #define CONFIG_POSIX_C_LIB_EXT 1 #define CONFIG_POSIX_OPEN_MAX 4 #define CONFIG_POSIX_PAGE_SIZE 0x40 @@ -406,6 +432,7 @@ #define CONFIG_TIMER_DELAYTIMER_MAX 0 #define CONFIG_SEM_NAMELEN_MAX 0 #define CONFIG_SEM_VALUE_MAX 0 +#define CONFIG_TC_PROVIDES_POSIX_C_LANG_SUPPORT_R 1 #define CONFIG_LIBGCC_RTLIB 1 #define CONFIG_RING_BUFFER 1 #define CONFIG_PRINTK 1 @@ -413,7 +440,7 @@ #define CONFIG_ASSERT_VERBOSE 1 #define CONFIG_LLEXT 1 #define CONFIG_LLEXT_TYPE_ELF_OBJECT 1 -#define CONFIG_LLEXT_HEAP_SIZE 32 +#define CONFIG_LLEXT_HEAP_SIZE 128 #define CONFIG_LLEXT_SHELL 1 #define CONFIG_LLEXT_SHELL_MAX_SIZE 8192 #define CONFIG_LLEXT_EXPORT_DEVICES 1 @@ -429,17 +456,22 @@ #define CONFIG_LOG_PRINTK 1 #define CONFIG_LOG_TRACE_SHORT_TIMESTAMP 1 #define CONFIG_LOG_FUNC_NAME_PREFIX_DBG 1 +#define CONFIG_LOG_BACKEND_SHOW_COLOR 1 #define CONFIG_LOG_TAG_MAX_LEN 0 +#define CONFIG_LOG_OUTPUT_FORMAT_TIME_TIMESTAMP 1 #define CONFIG_LOG_USE_VLA 1 #define CONFIG_LOG_SIMPLE_MSG_OPTIMIZE 1 #define CONFIG_LOG_ALWAYS_RUNTIME 1 #define CONFIG_LOG_OUTPUT 1 +#define CONFIG_TEST_RANDOM_GENERATOR 1 #define CONFIG_TIMER_RANDOM_INITIAL_STATE 123456789 +#define CONFIG_ENTROPY_DEVICE_RANDOM_GENERATOR 1 +#define CONFIG_CSPRNG_ENABLED 1 +#define CONFIG_HARDWARE_DEVICE_CS_GENERATOR 1 #define CONFIG_SHELL 1 #define CONFIG_SHELL_LOG_LEVEL_DEFAULT 1 #define CONFIG_SHELL_LOG_LEVEL 3 #define CONFIG_SHELL_BACKENDS 1 -#define CONFIG_SHELL_BACKEND_SERIAL 1 #define CONFIG_SHELL_BACKEND_SERIAL_INIT_PRIORITY 90 #define CONFIG_SHELL_PROMPT_UART "uart:~$ " #define CONFIG_SHELL_BACKEND_SERIAL_INTERRUPT_DRIVEN 1 @@ -450,7 +482,7 @@ #define CONFIG_SHELL_BACKEND_SERIAL_LOG_MESSAGE_QUEUE_SIZE 512 #define CONFIG_SHELL_BACKEND_SERIAL_LOG_LEVEL_DEFAULT 1 #define CONFIG_SHELL_BACKEND_SERIAL_LOG_LEVEL 5 -#define CONFIG_SHELL_STACK_SIZE 2048 +#define CONFIG_SHELL_DEVICE_HELPERS 1 #define CONFIG_SHELL_BACKSPACE_MODE_DELETE 1 #define CONFIG_SHELL_PROMPT_CHANGE 1 #define CONFIG_SHELL_PROMPT_BUFF_SIZE 20 @@ -482,10 +514,13 @@ #define CONFIG_SHELL_LOG_FORMAT_TIMESTAMP 1 #define CONFIG_SHELL_AUTOSTART 1 #define CONFIG_SHELL_CMDS_RETURN_VALUE 1 -#define CONFIG_KERNEL_SHELL 1 -#define CONFIG_KERNEL_SHELL_REBOOT_DELAY 0 #define CONFIG_DEVICE_SHELL 1 #define CONFIG_DEVMEM_SHELL 1 +#define CONFIG_KERNEL_SHELL 1 +#define CONFIG_KERNEL_SHELL_REBOOT_DELAY 0 +#define CONFIG_KERNEL_THREAD_SHELL 1 +#define CONFIG_KERNEL_THREAD_SHELL_LIST 1 +#define CONFIG_KERNEL_THREAD_SHELL_STACKS 1 #define CONFIG_FLASH_MAP 1 #define CONFIG_USB_DEVICE_STACK 1 #define CONFIG_USB_DEVICE_LOG_LEVEL_DEFAULT 1 @@ -540,9 +575,11 @@ #define CONFIG_KERNEL_BIN_NAME "zephyr" #define CONFIG_OUTPUT_STAT 1 #define CONFIG_OUTPUT_PRINT_MEMORY_USAGE 1 +#define CONFIG_BUILD_GAP_FILL_PATTERN 0xFF #define CONFIG_BUILD_OUTPUT_STRIP_PATHS 1 #define CONFIG_CHECK_INIT_PRIORITIES 1 #define CONFIG_WARN_DEPRECATED 1 #define CONFIG_EXPERIMENTAL 1 +#define CONFIG_TAINT 1 #define CONFIG_ENFORCE_ZEPHYR_STDINT 1 #define CONFIG_LEGACY_GENERATED_INCLUDE_PATH 1 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/devicetree_generated.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/devicetree_generated.h index 2b6ce66e..0cd264d2 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/devicetree_generated.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/devicetree_generated.h @@ -2,7 +2,7 @@ * Generated by gen_defines.py * * DTS input file: - * /home/martino/eslov-sk/hardware/arduino-git/zephyr/build/zephyr/zephyr.dts.pre + * /home/my_new_zephyr_folder/ArduinoCore-zephyr/build/zephyr/zephyr.dts.pre * * Directories with bindings: * $ZEPHYR_BASE/dts/bindings @@ -119,183 +119,186 @@ * 108 /leds/led_0 * 109 /leds/led_1 * 110 /leds/led_2 - * 111 /soc/adc@40022100 - * 112 /soc/adc@40022300 - * 113 /soc/bdma@58025400 - * 114 /soc/can@4000a000 - * 115 /soc/pin-controller@58020000/fdcan2_rx_pb5 - * 116 /soc/pin-controller@58020000/fdcan2_tx_pb13 - * 117 /soc/can@4000a400 - * 118 /soc/pin-controller@58020000/dac1_out1_pa4 - * 119 /soc/pin-controller@58020000/dac1_out2_pa5 - * 120 /soc/dac@40007400 - * 121 /soc/display-controller@50001000 - * 122 /soc/dma@40020400 - * 123 /soc/dmamux@58025800 - * 124 /soc/dsihost@50000000 - * 125 /soc/dmamux@40020800 - * 126 /soc/i2s@40003800 - * 127 /soc/i2s@40003c00 - * 128 /soc/i2s@40013000 - * 129 /soc/interrupt-controller@58000000 - * 130 /soc/mailbox@58026400 - * 131 /soc/memory@38800000 - * 132 /soc/rng@48021800 - * 133 /soc/sdmmc@48022400 - * 134 /soc/sdmmc@52007000 - * 135 /soc/serial@40004800 - * 136 /soc/serial@40005000 - * 137 /soc/serial@40007c00 - * 138 /soc/serial@58000c00 - * 139 /soc/spi@40003800 - * 140 /soc/spi@40003c00 - * 141 /soc/spi@40013400 - * 142 /soc/spi@58001400 - * 143 /soc/timer@e000e010 - * 144 /soc/timers@40002400 - * 145 /soc/usb@40040000 - * 146 /soc/watchdog@50003000 - * 147 /soc/watchdog@58004800 - * 148 /soc/adc@40022000/channel@0 - * 149 /soc/adc@40022000/channel@1 - * 150 /soc/adc@40022000/channel@4 - * 151 /soc/adc@40022000/channel@5 - * 152 /soc/adc@40022000/channel@8 - * 153 /soc/adc@40022000/channel@9 - * 154 /soc/adc@40022000/channel@a - * 155 /soc/adc@40022000/channel@c - * 156 /soc/adc@40022000/channel@d - * 157 /soc/adc@40022000/channel@10 - * 158 /soc/adc@40022000/channel@12 - * 159 /soc/adc@40022000/channel@13 - * 160 /soc/adc@58026000/channel@0 - * 161 /soc/adc@58026000/channel@1 - * 162 /soc/dma@40020000 - * 163 /soc/i2c@58001c00/ov7670@21 - * 164 /soc/pin-controller@58020000/dcmi_d0_ph9 - * 165 /soc/pin-controller@58020000/dcmi_d1_ph10 - * 166 /soc/pin-controller@58020000/dcmi_d2_ph11 - * 167 /soc/pin-controller@58020000/dcmi_d3_pg11 - * 168 /soc/pin-controller@58020000/dcmi_d4_ph14 - * 169 /soc/pin-controller@58020000/dcmi_d5_pi4 - * 170 /soc/pin-controller@58020000/dcmi_d6_pi6 - * 171 /soc/pin-controller@58020000/dcmi_d7_pi7 - * 172 /soc/pin-controller@58020000/dcmi_hsync_ph8 - * 173 /soc/pin-controller@58020000/dcmi_pixclk_pa6 - * 174 /soc/pin-controller@58020000/dcmi_vsync_pi5 - * 175 /soc/dcmi@48020000 - * 176 /soc/dcmi@48020000/port - * 177 /soc/dcmi@48020000/port/endpoint - * 178 /soc/ethernet@40028000 - * 179 /soc/ethernet@40028000/mdio - * 180 /soc/flash-controller@52002000 - * 181 /soc/flash-controller@52002000/flash@8000000 - * 182 /soc/flash-controller@52002000/flash@8000000/partitions - * 183 /soc/flash-controller@52002000/flash@8000000/partitions/partition@0 - * 184 /soc/flash-controller@52002000/flash@8000000/partitions/partition@40000 - * 185 /soc/flash-controller@52002000/flash@8000000/partitions/partition@e0000 - * 186 /soc/i2c@58001c00/ov7670@21/port - * 187 /soc/i2c@58001c00/ov7670@21/port/endpoint - * 188 /soc/pin-controller@58020000/fmc_a0_pf0 - * 189 /soc/pin-controller@58020000/fmc_a10_pg0 - * 190 /soc/pin-controller@58020000/fmc_a11_pg1 - * 191 /soc/pin-controller@58020000/fmc_a12_pg2 - * 192 /soc/pin-controller@58020000/fmc_a14_pg4 - * 193 /soc/pin-controller@58020000/fmc_a15_pg5 - * 194 /soc/pin-controller@58020000/fmc_a1_pf1 - * 195 /soc/pin-controller@58020000/fmc_a2_pf2 - * 196 /soc/pin-controller@58020000/fmc_a3_pf3 - * 197 /soc/pin-controller@58020000/fmc_a4_pf4 - * 198 /soc/pin-controller@58020000/fmc_a5_pf5 - * 199 /soc/pin-controller@58020000/fmc_a6_pf12 - * 200 /soc/pin-controller@58020000/fmc_a7_pf13 - * 201 /soc/pin-controller@58020000/fmc_a8_pf14 - * 202 /soc/pin-controller@58020000/fmc_a9_pf15 - * 203 /soc/pin-controller@58020000/fmc_d0_pd14 - * 204 /soc/pin-controller@58020000/fmc_d10_pe13 - * 205 /soc/pin-controller@58020000/fmc_d11_pe14 - * 206 /soc/pin-controller@58020000/fmc_d12_pe15 - * 207 /soc/pin-controller@58020000/fmc_d13_pd8 - * 208 /soc/pin-controller@58020000/fmc_d14_pd9 - * 209 /soc/pin-controller@58020000/fmc_d15_pd10 - * 210 /soc/pin-controller@58020000/fmc_d1_pd15 - * 211 /soc/pin-controller@58020000/fmc_d2_pd0 - * 212 /soc/pin-controller@58020000/fmc_d3_pd1 - * 213 /soc/pin-controller@58020000/fmc_d4_pe7 - * 214 /soc/pin-controller@58020000/fmc_d5_pe8 - * 215 /soc/pin-controller@58020000/fmc_d6_pe9 - * 216 /soc/pin-controller@58020000/fmc_d7_pe10 - * 217 /soc/pin-controller@58020000/fmc_d8_pe11 - * 218 /soc/pin-controller@58020000/fmc_d9_pe12 - * 219 /soc/pin-controller@58020000/fmc_nbl0_pe0 - * 220 /soc/pin-controller@58020000/fmc_nbl1_pe1 - * 221 /soc/pin-controller@58020000/fmc_sdcke0_ph2 - * 222 /soc/pin-controller@58020000/fmc_sdclk_pg8 - * 223 /soc/pin-controller@58020000/fmc_sdncas_pg15 - * 224 /soc/pin-controller@58020000/fmc_sdne0_ph3 - * 225 /soc/pin-controller@58020000/fmc_sdnras_pf11 - * 226 /soc/pin-controller@58020000/fmc_sdnwe_ph5 - * 227 /soc/memory-controller@52004000 - * 228 /soc/memory-controller@52004000/sdram - * 229 /soc/memory-controller@52004000/sdram/bank@0 - * 230 /soc/pin-controller@58020000/gpio@58021400 - * 231 /soc/pin-controller@58020000/quadspi_bk1_io0_pd11 - * 232 /soc/pin-controller@58020000/quadspi_bk1_io1_pd12 - * 233 /soc/pin-controller@58020000/quadspi_bk1_io2_pe2 - * 234 /soc/pin-controller@58020000/quadspi_bk1_io3_pf6 - * 235 /soc/pin-controller@58020000/quadspi_bk1_ncs_pg6 - * 236 /soc/pin-controller@58020000/quadspi_clk_pf10 - * 237 /soc/quadspi@52005000 - * 238 /soc/quadspi@52005000/qspi-nor-flash@90000000 - * 239 /soc/quadspi@52005000/qspi-nor-flash@90000000/partitions - * 240 /soc/quadspi@52005000/qspi-nor-flash@90000000/partitions/partition@0 - * 241 /soc/quadspi@52005000/qspi-nor-flash@90000000/partitions/partition@100000 - * 242 /soc/rtc@58004000 - * 243 /soc/rtc@58004000/backup_regs - * 244 /soc/pin-controller@58020000/uart7_cts_pf9 - * 245 /soc/pin-controller@58020000/uart7_rts_pf8 - * 246 /soc/pin-controller@58020000/uart7_rx_pa8 - * 247 /soc/pin-controller@58020000/uart7_tx_pf7 - * 248 /soc/serial@40007800 - * 249 /soc/serial@40007800/bt_hci_uart - * 250 /soc/serial@40007800/bt_hci_uart/murata-1dx - * 251 /soc/timers@40000000 - * 252 /soc/timers@40000000/counter - * 253 /soc/timers@40000000/pwm - * 254 /soc/timers@40000400 - * 255 /soc/timers@40000400/counter - * 256 /soc/timers@40000400/pwm - * 257 /soc/timers@40000800 - * 258 /soc/timers@40000800/counter - * 259 /soc/timers@40000800/pwm - * 260 /soc/timers@40000c00 - * 261 /soc/timers@40000c00/counter - * 262 /soc/timers@40000c00/pwm - * 263 /soc/timers@40001000 - * 264 /soc/timers@40001000/counter - * 265 /soc/timers@40001400 - * 266 /soc/timers@40001400/counter - * 267 /soc/timers@40001800 - * 268 /soc/timers@40001800/counter - * 269 /soc/timers@40001800/pwm - * 270 /soc/timers@40001c00 - * 271 /soc/timers@40001c00/counter - * 272 /soc/timers@40001c00/pwm - * 273 /soc/timers@40002000 - * 274 /soc/timers@40002000/counter - * 275 /soc/timers@40002000/pwm - * 276 /soc/timers@40010000/pwm/pwmclock - * 277 /soc/timers@40010400 - * 278 /soc/timers@40010400/pwm - * 279 /soc/timers@40014000 - * 280 /soc/timers@40014000/counter - * 281 /soc/timers@40014000/pwm - * 282 /soc/timers@40014400 - * 283 /soc/timers@40014400/counter - * 284 /soc/timers@40014400/pwm - * 285 /soc/timers@40014800 - * 286 /soc/timers@40014800/counter - * 287 /soc/timers@40014800/pwm + * 111 /mcos + * 112 /mcos/mco1 + * 113 /mcos/mco2 + * 114 /soc/adc@40022100 + * 115 /soc/adc@40022300 + * 116 /soc/bdma@58025400 + * 117 /soc/can@4000a000 + * 118 /soc/pin-controller@58020000/fdcan2_rx_pb5 + * 119 /soc/pin-controller@58020000/fdcan2_tx_pb13 + * 120 /soc/can@4000a400 + * 121 /soc/pin-controller@58020000/dac1_out1_pa4 + * 122 /soc/pin-controller@58020000/dac1_out2_pa5 + * 123 /soc/dac@40007400 + * 124 /soc/display-controller@50001000 + * 125 /soc/dma@40020400 + * 126 /soc/dmamux@58025800 + * 127 /soc/dsihost@50000000 + * 128 /soc/dmamux@40020800 + * 129 /soc/i2s@40003800 + * 130 /soc/i2s@40003c00 + * 131 /soc/i2s@40013000 + * 132 /soc/interrupt-controller@58000000 + * 133 /soc/mailbox@58026400 + * 134 /soc/memory@38800000 + * 135 /soc/rng@48021800 + * 136 /soc/sdmmc@48022400 + * 137 /soc/sdmmc@52007000 + * 138 /soc/serial@40004800 + * 139 /soc/serial@40005000 + * 140 /soc/serial@40007c00 + * 141 /soc/serial@58000c00 + * 142 /soc/spi@40003800 + * 143 /soc/spi@40003c00 + * 144 /soc/spi@40013400 + * 145 /soc/spi@58001400 + * 146 /soc/timer@e000e010 + * 147 /soc/timers@40002400 + * 148 /soc/usb@40040000 + * 149 /soc/watchdog@50003000 + * 150 /soc/watchdog@58004800 + * 151 /soc/adc@40022000/channel@0 + * 152 /soc/adc@40022000/channel@1 + * 153 /soc/adc@40022000/channel@4 + * 154 /soc/adc@40022000/channel@5 + * 155 /soc/adc@40022000/channel@8 + * 156 /soc/adc@40022000/channel@9 + * 157 /soc/adc@40022000/channel@a + * 158 /soc/adc@40022000/channel@c + * 159 /soc/adc@40022000/channel@d + * 160 /soc/adc@40022000/channel@10 + * 161 /soc/adc@40022000/channel@12 + * 162 /soc/adc@40022000/channel@13 + * 163 /soc/adc@58026000/channel@0 + * 164 /soc/adc@58026000/channel@1 + * 165 /soc/dma@40020000 + * 166 /soc/i2c@58001c00/ov7670@21 + * 167 /soc/pin-controller@58020000/dcmi_d0_ph9 + * 168 /soc/pin-controller@58020000/dcmi_d1_ph10 + * 169 /soc/pin-controller@58020000/dcmi_d2_ph11 + * 170 /soc/pin-controller@58020000/dcmi_d3_pg11 + * 171 /soc/pin-controller@58020000/dcmi_d4_ph14 + * 172 /soc/pin-controller@58020000/dcmi_d5_pi4 + * 173 /soc/pin-controller@58020000/dcmi_d6_pi6 + * 174 /soc/pin-controller@58020000/dcmi_d7_pi7 + * 175 /soc/pin-controller@58020000/dcmi_hsync_ph8 + * 176 /soc/pin-controller@58020000/dcmi_pixclk_pa6 + * 177 /soc/pin-controller@58020000/dcmi_vsync_pi5 + * 178 /soc/dcmi@48020000 + * 179 /soc/dcmi@48020000/port + * 180 /soc/dcmi@48020000/port/endpoint + * 181 /soc/ethernet@40028000 + * 182 /soc/ethernet@40028000/mdio + * 183 /soc/flash-controller@52002000 + * 184 /soc/flash-controller@52002000/flash@8000000 + * 185 /soc/flash-controller@52002000/flash@8000000/partitions + * 186 /soc/flash-controller@52002000/flash@8000000/partitions/partition@0 + * 187 /soc/flash-controller@52002000/flash@8000000/partitions/partition@40000 + * 188 /soc/flash-controller@52002000/flash@8000000/partitions/partition@e0000 + * 189 /soc/i2c@58001c00/ov7670@21/port + * 190 /soc/i2c@58001c00/ov7670@21/port/endpoint + * 191 /soc/pin-controller@58020000/fmc_a0_pf0 + * 192 /soc/pin-controller@58020000/fmc_a10_pg0 + * 193 /soc/pin-controller@58020000/fmc_a11_pg1 + * 194 /soc/pin-controller@58020000/fmc_a12_pg2 + * 195 /soc/pin-controller@58020000/fmc_a14_pg4 + * 196 /soc/pin-controller@58020000/fmc_a15_pg5 + * 197 /soc/pin-controller@58020000/fmc_a1_pf1 + * 198 /soc/pin-controller@58020000/fmc_a2_pf2 + * 199 /soc/pin-controller@58020000/fmc_a3_pf3 + * 200 /soc/pin-controller@58020000/fmc_a4_pf4 + * 201 /soc/pin-controller@58020000/fmc_a5_pf5 + * 202 /soc/pin-controller@58020000/fmc_a6_pf12 + * 203 /soc/pin-controller@58020000/fmc_a7_pf13 + * 204 /soc/pin-controller@58020000/fmc_a8_pf14 + * 205 /soc/pin-controller@58020000/fmc_a9_pf15 + * 206 /soc/pin-controller@58020000/fmc_d0_pd14 + * 207 /soc/pin-controller@58020000/fmc_d10_pe13 + * 208 /soc/pin-controller@58020000/fmc_d11_pe14 + * 209 /soc/pin-controller@58020000/fmc_d12_pe15 + * 210 /soc/pin-controller@58020000/fmc_d13_pd8 + * 211 /soc/pin-controller@58020000/fmc_d14_pd9 + * 212 /soc/pin-controller@58020000/fmc_d15_pd10 + * 213 /soc/pin-controller@58020000/fmc_d1_pd15 + * 214 /soc/pin-controller@58020000/fmc_d2_pd0 + * 215 /soc/pin-controller@58020000/fmc_d3_pd1 + * 216 /soc/pin-controller@58020000/fmc_d4_pe7 + * 217 /soc/pin-controller@58020000/fmc_d5_pe8 + * 218 /soc/pin-controller@58020000/fmc_d6_pe9 + * 219 /soc/pin-controller@58020000/fmc_d7_pe10 + * 220 /soc/pin-controller@58020000/fmc_d8_pe11 + * 221 /soc/pin-controller@58020000/fmc_d9_pe12 + * 222 /soc/pin-controller@58020000/fmc_nbl0_pe0 + * 223 /soc/pin-controller@58020000/fmc_nbl1_pe1 + * 224 /soc/pin-controller@58020000/fmc_sdcke0_ph2 + * 225 /soc/pin-controller@58020000/fmc_sdclk_pg8 + * 226 /soc/pin-controller@58020000/fmc_sdncas_pg15 + * 227 /soc/pin-controller@58020000/fmc_sdne0_ph3 + * 228 /soc/pin-controller@58020000/fmc_sdnras_pf11 + * 229 /soc/pin-controller@58020000/fmc_sdnwe_ph5 + * 230 /soc/memory-controller@52004000 + * 231 /soc/memory-controller@52004000/sdram + * 232 /soc/memory-controller@52004000/sdram/bank@0 + * 233 /soc/pin-controller@58020000/gpio@58021400 + * 234 /soc/pin-controller@58020000/quadspi_bk1_io0_pd11 + * 235 /soc/pin-controller@58020000/quadspi_bk1_io1_pd12 + * 236 /soc/pin-controller@58020000/quadspi_bk1_io2_pe2 + * 237 /soc/pin-controller@58020000/quadspi_bk1_io3_pf6 + * 238 /soc/pin-controller@58020000/quadspi_bk1_ncs_pg6 + * 239 /soc/pin-controller@58020000/quadspi_clk_pf10 + * 240 /soc/quadspi@52005000 + * 241 /soc/quadspi@52005000/qspi-nor-flash@90000000 + * 242 /soc/quadspi@52005000/qspi-nor-flash@90000000/partitions + * 243 /soc/quadspi@52005000/qspi-nor-flash@90000000/partitions/partition@0 + * 244 /soc/quadspi@52005000/qspi-nor-flash@90000000/partitions/partition@100000 + * 245 /soc/rtc@58004000 + * 246 /soc/rtc@58004000/backup_regs + * 247 /soc/pin-controller@58020000/uart7_cts_pf9 + * 248 /soc/pin-controller@58020000/uart7_rts_pf8 + * 249 /soc/pin-controller@58020000/uart7_rx_pa8 + * 250 /soc/pin-controller@58020000/uart7_tx_pf7 + * 251 /soc/serial@40007800 + * 252 /soc/serial@40007800/bt_hci_uart + * 253 /soc/serial@40007800/bt_hci_uart/murata-1dx + * 254 /soc/timers@40000000 + * 255 /soc/timers@40000000/counter + * 256 /soc/timers@40000000/pwm + * 257 /soc/timers@40000400 + * 258 /soc/timers@40000400/counter + * 259 /soc/timers@40000400/pwm + * 260 /soc/timers@40000800 + * 261 /soc/timers@40000800/counter + * 262 /soc/timers@40000800/pwm + * 263 /soc/timers@40000c00 + * 264 /soc/timers@40000c00/counter + * 265 /soc/timers@40000c00/pwm + * 266 /soc/timers@40001000 + * 267 /soc/timers@40001000/counter + * 268 /soc/timers@40001400 + * 269 /soc/timers@40001400/counter + * 270 /soc/timers@40001800 + * 271 /soc/timers@40001800/counter + * 272 /soc/timers@40001800/pwm + * 273 /soc/timers@40001c00 + * 274 /soc/timers@40001c00/counter + * 275 /soc/timers@40001c00/pwm + * 276 /soc/timers@40002000 + * 277 /soc/timers@40002000/counter + * 278 /soc/timers@40002000/pwm + * 279 /soc/timers@40010000/pwm/pwmclock + * 280 /soc/timers@40010400 + * 281 /soc/timers@40010400/pwm + * 282 /soc/timers@40014000 + * 283 /soc/timers@40014000/counter + * 284 /soc/timers@40014000/pwm + * 285 /soc/timers@40014400 + * 286 /soc/timers@40014400/counter + * 287 /soc/timers@40014400/pwm + * 288 /soc/timers@40014800 + * 289 /soc/timers@40014800/counter + * 290 /soc/timers@40014800/pwm * * Definitions derived from these nodes in dependency order are next, * followed by /chosen nodes. @@ -315,6 +318,9 @@ /* Node's name with unit-address: */ #define DT_N_FULL_NAME "/" +#define DT_N_FULL_NAME_UNQUOTED / +#define DT_N_FULL_NAME_TOKEN _ +#define DT_N_FULL_NAME_UPPER_TOKEN _ /* Helpers for dealing with node labels: */ #define DT_N_NODELABEL_NUM 0 @@ -322,16 +328,16 @@ #define DT_N_FOREACH_NODELABEL_VARGS(fn, ...) /* Helper macros for child nodes of this node. */ -#define DT_N_CHILD_NUM 25 -#define DT_N_CHILD_NUM_STATUS_OKAY 18 -#define DT_N_FOREACH_CHILD(fn) fn(DT_N_S_chosen) fn(DT_N_S_aliases) fn(DT_N_S_soc) fn(DT_N_S_cpus) fn(DT_N_S_memory_90000000) fn(DT_N_S_clocks) fn(DT_N_S_dietemp) fn(DT_N_S_vbat) fn(DT_N_S_vref) fn(DT_N_S_smbus1) fn(DT_N_S_smbus2) fn(DT_N_S_smbus3) fn(DT_N_S_smbus4) fn(DT_N_S_memory_24000000) fn(DT_N_S_memory_30000000) fn(DT_N_S_memory_30020000) fn(DT_N_S_memory_30040000) fn(DT_N_S_memory_38000000) fn(DT_N_S_otghs_fs_phy) fn(DT_N_S_connector) fn(DT_N_S_leds) fn(DT_N_S_gpio_keys) fn(DT_N_S_sdram_c0000000) fn(DT_N_S_gpio_deadbeef) fn(DT_N_S_zephyr_user) -#define DT_N_FOREACH_CHILD_SEP(fn, sep) fn(DT_N_S_chosen) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_aliases) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_soc) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_cpus) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_90000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_clocks) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_dietemp) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_vbat) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_vref) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus1) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus2) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus3) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus4) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_24000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30020000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30040000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_38000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_otghs_fs_phy) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_connector) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_leds) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_keys) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_sdram_c0000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_deadbeef) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_zephyr_user) -#define DT_N_FOREACH_CHILD_VARGS(fn, ...) fn(DT_N_S_chosen, __VA_ARGS__) fn(DT_N_S_aliases, __VA_ARGS__) fn(DT_N_S_soc, __VA_ARGS__) fn(DT_N_S_cpus, __VA_ARGS__) fn(DT_N_S_memory_90000000, __VA_ARGS__) fn(DT_N_S_clocks, __VA_ARGS__) fn(DT_N_S_dietemp, __VA_ARGS__) fn(DT_N_S_vbat, __VA_ARGS__) fn(DT_N_S_vref, __VA_ARGS__) fn(DT_N_S_smbus1, __VA_ARGS__) fn(DT_N_S_smbus2, __VA_ARGS__) fn(DT_N_S_smbus3, __VA_ARGS__) fn(DT_N_S_smbus4, __VA_ARGS__) fn(DT_N_S_memory_24000000, __VA_ARGS__) fn(DT_N_S_memory_30000000, __VA_ARGS__) fn(DT_N_S_memory_30020000, __VA_ARGS__) fn(DT_N_S_memory_30040000, __VA_ARGS__) fn(DT_N_S_memory_38000000, __VA_ARGS__) fn(DT_N_S_otghs_fs_phy, __VA_ARGS__) fn(DT_N_S_connector, __VA_ARGS__) fn(DT_N_S_leds, __VA_ARGS__) fn(DT_N_S_gpio_keys, __VA_ARGS__) fn(DT_N_S_sdram_c0000000, __VA_ARGS__) fn(DT_N_S_gpio_deadbeef, __VA_ARGS__) fn(DT_N_S_zephyr_user, __VA_ARGS__) -#define DT_N_FOREACH_CHILD_SEP_VARGS(fn, sep, ...) fn(DT_N_S_chosen, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_aliases, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_soc, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_cpus, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_90000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_clocks, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_dietemp, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_vbat, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_vref, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus1, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus2, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus3, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus4, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_24000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30020000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30040000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_38000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_otghs_fs_phy, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_connector, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_leds, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_keys, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_sdram_c0000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_deadbeef, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_zephyr_user, __VA_ARGS__) -#define DT_N_FOREACH_CHILD_STATUS_OKAY(fn) fn(DT_N_S_chosen) fn(DT_N_S_aliases) fn(DT_N_S_soc) fn(DT_N_S_cpus) fn(DT_N_S_memory_90000000) fn(DT_N_S_clocks) fn(DT_N_S_memory_24000000) fn(DT_N_S_memory_30000000) fn(DT_N_S_memory_30020000) fn(DT_N_S_memory_30040000) fn(DT_N_S_memory_38000000) fn(DT_N_S_otghs_fs_phy) fn(DT_N_S_connector) fn(DT_N_S_leds) fn(DT_N_S_gpio_keys) fn(DT_N_S_sdram_c0000000) fn(DT_N_S_gpio_deadbeef) fn(DT_N_S_zephyr_user) -#define DT_N_FOREACH_CHILD_STATUS_OKAY_SEP(fn, sep) fn(DT_N_S_chosen) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_aliases) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_soc) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_cpus) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_90000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_clocks) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_24000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30020000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30040000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_38000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_otghs_fs_phy) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_connector) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_leds) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_keys) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_sdram_c0000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_deadbeef) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_zephyr_user) -#define DT_N_FOREACH_CHILD_STATUS_OKAY_VARGS(fn, ...) fn(DT_N_S_chosen, __VA_ARGS__) fn(DT_N_S_aliases, __VA_ARGS__) fn(DT_N_S_soc, __VA_ARGS__) fn(DT_N_S_cpus, __VA_ARGS__) fn(DT_N_S_memory_90000000, __VA_ARGS__) fn(DT_N_S_clocks, __VA_ARGS__) fn(DT_N_S_memory_24000000, __VA_ARGS__) fn(DT_N_S_memory_30000000, __VA_ARGS__) fn(DT_N_S_memory_30020000, __VA_ARGS__) fn(DT_N_S_memory_30040000, __VA_ARGS__) fn(DT_N_S_memory_38000000, __VA_ARGS__) fn(DT_N_S_otghs_fs_phy, __VA_ARGS__) fn(DT_N_S_connector, __VA_ARGS__) fn(DT_N_S_leds, __VA_ARGS__) fn(DT_N_S_gpio_keys, __VA_ARGS__) fn(DT_N_S_sdram_c0000000, __VA_ARGS__) fn(DT_N_S_gpio_deadbeef, __VA_ARGS__) fn(DT_N_S_zephyr_user, __VA_ARGS__) -#define DT_N_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_chosen, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_aliases, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_soc, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_cpus, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_90000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_clocks, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_24000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30020000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30040000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_38000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_otghs_fs_phy, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_connector, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_leds, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_keys, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_sdram_c0000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_deadbeef, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_zephyr_user, __VA_ARGS__) +#define DT_N_CHILD_NUM 26 +#define DT_N_CHILD_NUM_STATUS_OKAY 19 +#define DT_N_FOREACH_CHILD(fn) fn(DT_N_S_chosen) fn(DT_N_S_aliases) fn(DT_N_S_soc) fn(DT_N_S_cpus) fn(DT_N_S_memory_90000000) fn(DT_N_S_clocks) fn(DT_N_S_mcos) fn(DT_N_S_dietemp) fn(DT_N_S_vbat) fn(DT_N_S_vref) fn(DT_N_S_smbus1) fn(DT_N_S_smbus2) fn(DT_N_S_smbus3) fn(DT_N_S_smbus4) fn(DT_N_S_memory_24000000) fn(DT_N_S_memory_30000000) fn(DT_N_S_memory_30020000) fn(DT_N_S_memory_30040000) fn(DT_N_S_memory_38000000) fn(DT_N_S_otghs_fs_phy) fn(DT_N_S_connector) fn(DT_N_S_leds) fn(DT_N_S_gpio_keys) fn(DT_N_S_sdram_c0000000) fn(DT_N_S_gpio_deadbeef) fn(DT_N_S_zephyr_user) +#define DT_N_FOREACH_CHILD_SEP(fn, sep) fn(DT_N_S_chosen) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_aliases) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_soc) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_cpus) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_90000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_clocks) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_mcos) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_dietemp) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_vbat) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_vref) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus1) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus2) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus3) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus4) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_24000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30020000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30040000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_38000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_otghs_fs_phy) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_connector) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_leds) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_keys) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_sdram_c0000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_deadbeef) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_zephyr_user) +#define DT_N_FOREACH_CHILD_VARGS(fn, ...) fn(DT_N_S_chosen, __VA_ARGS__) fn(DT_N_S_aliases, __VA_ARGS__) fn(DT_N_S_soc, __VA_ARGS__) fn(DT_N_S_cpus, __VA_ARGS__) fn(DT_N_S_memory_90000000, __VA_ARGS__) fn(DT_N_S_clocks, __VA_ARGS__) fn(DT_N_S_mcos, __VA_ARGS__) fn(DT_N_S_dietemp, __VA_ARGS__) fn(DT_N_S_vbat, __VA_ARGS__) fn(DT_N_S_vref, __VA_ARGS__) fn(DT_N_S_smbus1, __VA_ARGS__) fn(DT_N_S_smbus2, __VA_ARGS__) fn(DT_N_S_smbus3, __VA_ARGS__) fn(DT_N_S_smbus4, __VA_ARGS__) fn(DT_N_S_memory_24000000, __VA_ARGS__) fn(DT_N_S_memory_30000000, __VA_ARGS__) fn(DT_N_S_memory_30020000, __VA_ARGS__) fn(DT_N_S_memory_30040000, __VA_ARGS__) fn(DT_N_S_memory_38000000, __VA_ARGS__) fn(DT_N_S_otghs_fs_phy, __VA_ARGS__) fn(DT_N_S_connector, __VA_ARGS__) fn(DT_N_S_leds, __VA_ARGS__) fn(DT_N_S_gpio_keys, __VA_ARGS__) fn(DT_N_S_sdram_c0000000, __VA_ARGS__) fn(DT_N_S_gpio_deadbeef, __VA_ARGS__) fn(DT_N_S_zephyr_user, __VA_ARGS__) +#define DT_N_FOREACH_CHILD_SEP_VARGS(fn, sep, ...) fn(DT_N_S_chosen, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_aliases, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_soc, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_cpus, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_90000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_clocks, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_mcos, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_dietemp, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_vbat, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_vref, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus1, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus2, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus3, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_smbus4, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_24000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30020000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30040000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_38000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_otghs_fs_phy, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_connector, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_leds, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_keys, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_sdram_c0000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_deadbeef, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_zephyr_user, __VA_ARGS__) +#define DT_N_FOREACH_CHILD_STATUS_OKAY(fn) fn(DT_N_S_chosen) fn(DT_N_S_aliases) fn(DT_N_S_soc) fn(DT_N_S_cpus) fn(DT_N_S_memory_90000000) fn(DT_N_S_clocks) fn(DT_N_S_mcos) fn(DT_N_S_memory_24000000) fn(DT_N_S_memory_30000000) fn(DT_N_S_memory_30020000) fn(DT_N_S_memory_30040000) fn(DT_N_S_memory_38000000) fn(DT_N_S_otghs_fs_phy) fn(DT_N_S_connector) fn(DT_N_S_leds) fn(DT_N_S_gpio_keys) fn(DT_N_S_sdram_c0000000) fn(DT_N_S_gpio_deadbeef) fn(DT_N_S_zephyr_user) +#define DT_N_FOREACH_CHILD_STATUS_OKAY_SEP(fn, sep) fn(DT_N_S_chosen) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_aliases) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_soc) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_cpus) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_90000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_clocks) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_mcos) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_24000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30020000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30040000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_38000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_otghs_fs_phy) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_connector) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_leds) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_keys) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_sdram_c0000000) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_deadbeef) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_zephyr_user) +#define DT_N_FOREACH_CHILD_STATUS_OKAY_VARGS(fn, ...) fn(DT_N_S_chosen, __VA_ARGS__) fn(DT_N_S_aliases, __VA_ARGS__) fn(DT_N_S_soc, __VA_ARGS__) fn(DT_N_S_cpus, __VA_ARGS__) fn(DT_N_S_memory_90000000, __VA_ARGS__) fn(DT_N_S_clocks, __VA_ARGS__) fn(DT_N_S_mcos, __VA_ARGS__) fn(DT_N_S_memory_24000000, __VA_ARGS__) fn(DT_N_S_memory_30000000, __VA_ARGS__) fn(DT_N_S_memory_30020000, __VA_ARGS__) fn(DT_N_S_memory_30040000, __VA_ARGS__) fn(DT_N_S_memory_38000000, __VA_ARGS__) fn(DT_N_S_otghs_fs_phy, __VA_ARGS__) fn(DT_N_S_connector, __VA_ARGS__) fn(DT_N_S_leds, __VA_ARGS__) fn(DT_N_S_gpio_keys, __VA_ARGS__) fn(DT_N_S_sdram_c0000000, __VA_ARGS__) fn(DT_N_S_gpio_deadbeef, __VA_ARGS__) fn(DT_N_S_zephyr_user, __VA_ARGS__) +#define DT_N_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_chosen, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_aliases, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_soc, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_cpus, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_90000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_clocks, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_mcos, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_24000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30020000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_30040000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_memory_38000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_otghs_fs_phy, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_connector, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_leds, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_keys, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_sdram_c0000000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_gpio_deadbeef, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_zephyr_user, __VA_ARGS__) /* Node's dependency ordinal: */ #define DT_N_ORD 0 @@ -342,31 +348,32 @@ /* Ordinals for what depends directly on this node: */ #define DT_N_SUPPORTS_ORDS \ - 1, /* /aliases */ \ - 2, /* /chosen */ \ - 3, /* /connector */ \ - 4, /* /soc */ \ - 6, /* /clocks */ \ - 14, /* /dietemp */ \ - 15, /* /memory@24000000 */ \ - 16, /* /memory@30000000 */ \ - 17, /* /memory@30020000 */ \ - 18, /* /memory@30040000 */ \ - 19, /* /memory@38000000 */ \ - 20, /* /memory@90000000 */ \ - 21, /* /sdram@c0000000 */ \ - 25, /* /smbus1 */ \ - 29, /* /smbus2 */ \ - 31, /* /smbus3 */ \ - 35, /* /smbus4 */ \ - 36, /* /vbat */ \ - 37, /* /vref */ \ - 38, /* /gpio@deadbeef */ \ - 88, /* /otghs_fs_phy */ \ - 93, /* /zephyr,user */ \ - 102, /* /cpus */ \ - 105, /* /gpio_keys */ \ - 107, /* /leds */ + 1, \ + 2, \ + 3, \ + 4, \ + 6, \ + 14, \ + 15, \ + 16, \ + 17, \ + 18, \ + 19, \ + 20, \ + 21, \ + 25, \ + 29, \ + 31, \ + 35, \ + 36, \ + 37, \ + 38, \ + 88, \ + 93, \ + 102, \ + 105, \ + 107, \ + 111, /* Existence and alternate IDs: */ #define DT_N_EXISTS 1 @@ -390,11 +397,11 @@ /* Generic property macros: */ #define DT_N_P_compatible {"arduino,giga-r1"} +#define DT_N_P_compatible_IDX_0_EXISTS 1 #define DT_N_P_compatible_IDX_0 "arduino,giga-r1" #define DT_N_P_compatible_IDX_0_STRING_UNQUOTED arduino,giga-r1 #define DT_N_P_compatible_IDX_0_STRING_TOKEN arduino_giga_r1 #define DT_N_P_compatible_IDX_0_STRING_UPPER_TOKEN ARDUINO_GIGA_R1 -#define DT_N_P_compatible_IDX_0_EXISTS 1 #define DT_N_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N, compatible, 0) #define DT_N_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N, compatible, 0) #define DT_N_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N, compatible, 0, __VA_ARGS__) @@ -413,6 +420,9 @@ /* Node's name with unit-address: */ #define DT_N_S_aliases_FULL_NAME "aliases" +#define DT_N_S_aliases_FULL_NAME_UNQUOTED aliases +#define DT_N_S_aliases_FULL_NAME_TOKEN aliases +#define DT_N_S_aliases_FULL_NAME_UPPER_TOKEN ALIASES /* Node parent (/) identifier: */ #define DT_N_S_aliases_PARENT DT_N @@ -443,7 +453,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_aliases_REQUIRES_ORDS \ - 0, /* / */ + 0, /* Ordinals for what depends directly on this node: */ #define DT_N_S_aliases_SUPPORTS_ORDS /* nothing */ @@ -475,6 +485,9 @@ /* Node's name with unit-address: */ #define DT_N_S_chosen_FULL_NAME "chosen" +#define DT_N_S_chosen_FULL_NAME_UNQUOTED chosen +#define DT_N_S_chosen_FULL_NAME_TOKEN chosen +#define DT_N_S_chosen_FULL_NAME_UPPER_TOKEN CHOSEN /* Node parent (/) identifier: */ #define DT_N_S_chosen_PARENT DT_N @@ -505,7 +518,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_chosen_REQUIRES_ORDS \ - 0, /* / */ + 0, /* Ordinals for what depends directly on this node: */ #define DT_N_S_chosen_SUPPORTS_ORDS /* nothing */ @@ -543,12 +556,15 @@ /* Node's name with unit-address: */ #define DT_N_S_connector_FULL_NAME "connector" +#define DT_N_S_connector_FULL_NAME_UNQUOTED connector +#define DT_N_S_connector_FULL_NAME_TOKEN connector +#define DT_N_S_connector_FULL_NAME_UPPER_TOKEN CONNECTOR /* Node parent (/) identifier: */ #define DT_N_S_connector_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_connector_CHILD_IDX 19 +#define DT_N_S_connector_CHILD_IDX 20 /* Helpers for dealing with node labels: */ #define DT_N_S_connector_NODELABEL_NUM 1 @@ -573,7 +589,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_connector_REQUIRES_ORDS \ - 0, /* / */ + 0, /* Ordinals for what depends directly on this node: */ #define DT_N_S_connector_SUPPORTS_ORDS /* nothing */ @@ -596,16 +612,12 @@ #define DT_N_S_connector_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_connector_P_wakeup_source 0 -#define DT_N_S_connector_P_wakeup_source_EXISTS 1 -#define DT_N_S_connector_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_connector_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_connector_P_compatible {"arduino-header-r3"} +#define DT_N_S_connector_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_connector_P_compatible_IDX_0 "arduino-header-r3" #define DT_N_S_connector_P_compatible_IDX_0_STRING_UNQUOTED arduino-header-r3 #define DT_N_S_connector_P_compatible_IDX_0_STRING_TOKEN arduino_header_r3 #define DT_N_S_connector_P_compatible_IDX_0_STRING_UPPER_TOKEN ARDUINO_HEADER_R3 -#define DT_N_S_connector_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_connector_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_connector, compatible, 0) #define DT_N_S_connector_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_connector, compatible, 0) #define DT_N_S_connector_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_connector, compatible, 0, __VA_ARGS__) @@ -614,6 +626,10 @@ #define DT_N_S_connector_P_compatible_EXISTS 1 #define DT_N_S_connector_P_zephyr_deferred_init 0 #define DT_N_S_connector_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_connector_P_wakeup_source 0 +#define DT_N_S_connector_P_wakeup_source_EXISTS 1 +#define DT_N_S_connector_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_connector_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc @@ -626,6 +642,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_FULL_NAME "soc" +#define DT_N_S_soc_FULL_NAME_UNQUOTED soc +#define DT_N_S_soc_FULL_NAME_TOKEN soc +#define DT_N_S_soc_FULL_NAME_UPPER_TOKEN SOC /* Node parent (/) identifier: */ #define DT_N_S_soc_PARENT DT_N @@ -656,81 +675,81 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_REQUIRES_ORDS \ - 0, /* / */ + 0, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_SUPPORTS_ORDS \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 10, /* /soc/pin-controller@58020000 */ \ - 13, /* /soc/adc@58026000 */ \ - 24, /* /soc/i2c@40005400 */ \ - 28, /* /soc/i2c@40005800 */ \ - 30, /* /soc/i2c@40005c00 */ \ - 34, /* /soc/i2c@58001c00 */ \ - 51, /* /soc/adc@40022000 */ \ - 55, /* /soc/serial@40004400 */ \ - 58, /* /soc/serial@40004c00 */ \ - 61, /* /soc/serial@40011000 */ \ - 64, /* /soc/serial@40011400 */ \ - 69, /* /soc/spi@40013000 */ \ - 74, /* /soc/spi@40015000 */ \ - 85, /* /soc/timers@40010000 */ \ - 91, /* /soc/usb@40080000 */ \ - 111, /* /soc/adc@40022100 */ \ - 112, /* /soc/adc@40022300 */ \ - 113, /* /soc/bdma@58025400 */ \ - 114, /* /soc/can@4000a000 */ \ - 117, /* /soc/can@4000a400 */ \ - 120, /* /soc/dac@40007400 */ \ - 121, /* /soc/display-controller@50001000 */ \ - 122, /* /soc/dma@40020400 */ \ - 123, /* /soc/dmamux@58025800 */ \ - 124, /* /soc/dsihost@50000000 */ \ - 125, /* /soc/dmamux@40020800 */ \ - 126, /* /soc/i2s@40003800 */ \ - 127, /* /soc/i2s@40003c00 */ \ - 128, /* /soc/i2s@40013000 */ \ - 129, /* /soc/interrupt-controller@58000000 */ \ - 130, /* /soc/mailbox@58026400 */ \ - 131, /* /soc/memory@38800000 */ \ - 132, /* /soc/rng@48021800 */ \ - 133, /* /soc/sdmmc@48022400 */ \ - 134, /* /soc/sdmmc@52007000 */ \ - 135, /* /soc/serial@40004800 */ \ - 136, /* /soc/serial@40005000 */ \ - 137, /* /soc/serial@40007c00 */ \ - 138, /* /soc/serial@58000c00 */ \ - 139, /* /soc/spi@40003800 */ \ - 140, /* /soc/spi@40003c00 */ \ - 141, /* /soc/spi@40013400 */ \ - 142, /* /soc/spi@58001400 */ \ - 143, /* /soc/timer@e000e010 */ \ - 144, /* /soc/timers@40002400 */ \ - 145, /* /soc/usb@40040000 */ \ - 146, /* /soc/watchdog@50003000 */ \ - 147, /* /soc/watchdog@58004800 */ \ - 162, /* /soc/dma@40020000 */ \ - 175, /* /soc/dcmi@48020000 */ \ - 178, /* /soc/ethernet@40028000 */ \ - 180, /* /soc/flash-controller@52002000 */ \ - 227, /* /soc/memory-controller@52004000 */ \ - 237, /* /soc/quadspi@52005000 */ \ - 242, /* /soc/rtc@58004000 */ \ - 248, /* /soc/serial@40007800 */ \ - 251, /* /soc/timers@40000000 */ \ - 254, /* /soc/timers@40000400 */ \ - 257, /* /soc/timers@40000800 */ \ - 260, /* /soc/timers@40000c00 */ \ - 263, /* /soc/timers@40001000 */ \ - 265, /* /soc/timers@40001400 */ \ - 267, /* /soc/timers@40001800 */ \ - 270, /* /soc/timers@40001c00 */ \ - 273, /* /soc/timers@40002000 */ \ - 277, /* /soc/timers@40010400 */ \ - 279, /* /soc/timers@40014000 */ \ - 282, /* /soc/timers@40014400 */ \ - 285, /* /soc/timers@40014800 */ + 5, \ + 9, \ + 10, \ + 13, \ + 24, \ + 28, \ + 30, \ + 34, \ + 51, \ + 55, \ + 58, \ + 61, \ + 64, \ + 69, \ + 74, \ + 85, \ + 91, \ + 114, \ + 115, \ + 116, \ + 117, \ + 120, \ + 123, \ + 124, \ + 125, \ + 126, \ + 127, \ + 128, \ + 129, \ + 130, \ + 131, \ + 132, \ + 133, \ + 134, \ + 135, \ + 136, \ + 137, \ + 138, \ + 139, \ + 140, \ + 141, \ + 142, \ + 143, \ + 144, \ + 145, \ + 146, \ + 147, \ + 148, \ + 149, \ + 150, \ + 165, \ + 178, \ + 181, \ + 183, \ + 230, \ + 240, \ + 245, \ + 251, \ + 254, \ + 257, \ + 260, \ + 263, \ + 266, \ + 268, \ + 270, \ + 273, \ + 276, \ + 280, \ + 282, \ + 285, \ + 288, /* Existence and alternate IDs: */ #define DT_N_S_soc_EXISTS 1 @@ -762,21 +781,21 @@ /* Generic property macros: */ #define DT_N_S_soc_P_compatible {"st,stm32h747", "st,stm32h7", "simple-bus"} +#define DT_N_S_soc_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_P_compatible_IDX_0 "st,stm32h747" #define DT_N_S_soc_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h747 #define DT_N_S_soc_P_compatible_IDX_0_STRING_TOKEN st_stm32h747 #define DT_N_S_soc_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H747 -#define DT_N_S_soc_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_soc_P_compatible_IDX_1 "st,stm32h7" #define DT_N_S_soc_P_compatible_IDX_1_STRING_UNQUOTED st,stm32h7 #define DT_N_S_soc_P_compatible_IDX_1_STRING_TOKEN st_stm32h7 #define DT_N_S_soc_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32H7 -#define DT_N_S_soc_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_P_compatible_IDX_2_EXISTS 1 #define DT_N_S_soc_P_compatible_IDX_2 "simple-bus" #define DT_N_S_soc_P_compatible_IDX_2_STRING_UNQUOTED simple-bus #define DT_N_S_soc_P_compatible_IDX_2_STRING_TOKEN simple_bus #define DT_N_S_soc_P_compatible_IDX_2_STRING_UPPER_TOKEN SIMPLE_BUS -#define DT_N_S_soc_P_compatible_IDX_2_EXISTS 1 #define DT_N_S_soc_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc, compatible, 0) \ fn(DT_N_S_soc, compatible, 1) \ fn(DT_N_S_soc, compatible, 2) @@ -810,6 +829,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_interrupt_controller_e000e100_FULL_NAME "interrupt-controller@e000e100" +#define DT_N_S_soc_S_interrupt_controller_e000e100_FULL_NAME_UNQUOTED interrupt-controller@e000e100 +#define DT_N_S_soc_S_interrupt_controller_e000e100_FULL_NAME_TOKEN interrupt_controller_e000e100 +#define DT_N_S_soc_S_interrupt_controller_e000e100_FULL_NAME_UPPER_TOKEN INTERRUPT_CONTROLLER_E000E100 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_interrupt_controller_e000e100_PARENT DT_N_S_soc @@ -840,72 +862,72 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_interrupt_controller_e000e100_REQUIRES_ORDS \ - 4, /* /soc */ + 4, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_interrupt_controller_e000e100_SUPPORTS_ORDS \ - 13, /* /soc/adc@58026000 */ \ - 24, /* /soc/i2c@40005400 */ \ - 28, /* /soc/i2c@40005800 */ \ - 30, /* /soc/i2c@40005c00 */ \ - 34, /* /soc/i2c@58001c00 */ \ - 51, /* /soc/adc@40022000 */ \ - 55, /* /soc/serial@40004400 */ \ - 58, /* /soc/serial@40004c00 */ \ - 61, /* /soc/serial@40011000 */ \ - 64, /* /soc/serial@40011400 */ \ - 69, /* /soc/spi@40013000 */ \ - 74, /* /soc/spi@40015000 */ \ - 85, /* /soc/timers@40010000 */ \ - 91, /* /soc/usb@40080000 */ \ - 111, /* /soc/adc@40022100 */ \ - 112, /* /soc/adc@40022300 */ \ - 113, /* /soc/bdma@58025400 */ \ - 114, /* /soc/can@4000a000 */ \ - 117, /* /soc/can@4000a400 */ \ - 121, /* /soc/display-controller@50001000 */ \ - 122, /* /soc/dma@40020400 */ \ - 123, /* /soc/dmamux@58025800 */ \ - 125, /* /soc/dmamux@40020800 */ \ - 126, /* /soc/i2s@40003800 */ \ - 127, /* /soc/i2s@40003c00 */ \ - 128, /* /soc/i2s@40013000 */ \ - 129, /* /soc/interrupt-controller@58000000 */ \ - 130, /* /soc/mailbox@58026400 */ \ - 132, /* /soc/rng@48021800 */ \ - 133, /* /soc/sdmmc@48022400 */ \ - 134, /* /soc/sdmmc@52007000 */ \ - 135, /* /soc/serial@40004800 */ \ - 136, /* /soc/serial@40005000 */ \ - 137, /* /soc/serial@40007c00 */ \ - 138, /* /soc/serial@58000c00 */ \ - 139, /* /soc/spi@40003800 */ \ - 140, /* /soc/spi@40003c00 */ \ - 141, /* /soc/spi@40013400 */ \ - 142, /* /soc/spi@58001400 */ \ - 144, /* /soc/timers@40002400 */ \ - 145, /* /soc/usb@40040000 */ \ - 146, /* /soc/watchdog@50003000 */ \ - 162, /* /soc/dma@40020000 */ \ - 175, /* /soc/dcmi@48020000 */ \ - 178, /* /soc/ethernet@40028000 */ \ - 180, /* /soc/flash-controller@52002000 */ \ - 237, /* /soc/quadspi@52005000 */ \ - 242, /* /soc/rtc@58004000 */ \ - 248, /* /soc/serial@40007800 */ \ - 251, /* /soc/timers@40000000 */ \ - 254, /* /soc/timers@40000400 */ \ - 257, /* /soc/timers@40000800 */ \ - 260, /* /soc/timers@40000c00 */ \ - 263, /* /soc/timers@40001000 */ \ - 265, /* /soc/timers@40001400 */ \ - 267, /* /soc/timers@40001800 */ \ - 270, /* /soc/timers@40001c00 */ \ - 273, /* /soc/timers@40002000 */ \ - 277, /* /soc/timers@40010400 */ \ - 279, /* /soc/timers@40014000 */ \ - 282, /* /soc/timers@40014400 */ \ - 285, /* /soc/timers@40014800 */ + 13, \ + 24, \ + 28, \ + 30, \ + 34, \ + 51, \ + 55, \ + 58, \ + 61, \ + 64, \ + 69, \ + 74, \ + 85, \ + 91, \ + 114, \ + 115, \ + 116, \ + 117, \ + 120, \ + 124, \ + 125, \ + 126, \ + 128, \ + 129, \ + 130, \ + 131, \ + 132, \ + 133, \ + 135, \ + 136, \ + 137, \ + 138, \ + 139, \ + 140, \ + 141, \ + 142, \ + 143, \ + 144, \ + 145, \ + 147, \ + 148, \ + 149, \ + 165, \ + 178, \ + 181, \ + 183, \ + 240, \ + 245, \ + 251, \ + 254, \ + 257, \ + 260, \ + 263, \ + 266, \ + 268, \ + 270, \ + 273, \ + 276, \ + 280, \ + 282, \ + 285, \ + 288, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_interrupt_controller_e000e100_EXISTS 1 @@ -915,8 +937,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_interrupt_controller_e000e100_REG_NUM 1 #define DT_N_S_soc_S_interrupt_controller_e000e100_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_e000e100_REG_IDX_0_VAL_ADDRESS 3758153984 /* 0xe000e100 */ -#define DT_N_S_soc_S_interrupt_controller_e000e100_REG_IDX_0_VAL_SIZE 3072 /* 0xc00 */ +#define DT_N_S_soc_S_interrupt_controller_e000e100_REG_IDX_0_VAL_ADDRESS 3758153984 +#define DT_N_S_soc_S_interrupt_controller_e000e100_REG_IDX_0_VAL_SIZE 3072 #define DT_N_S_soc_S_interrupt_controller_e000e100_RANGES_NUM 0 #define DT_N_S_soc_S_interrupt_controller_e000e100_FOREACH_RANGE(fn) #define DT_N_S_soc_S_interrupt_controller_e000e100_IRQ_NUM 0 @@ -932,34 +954,34 @@ #define DT_N_S_soc_S_interrupt_controller_e000e100_PINCTRL_NUM 0 /* Generic property macros: */ +#define DT_N_S_soc_S_interrupt_controller_e000e100_P_reg {3758153984, 3072} +#define DT_N_S_soc_S_interrupt_controller_e000e100_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_e000e100_P_reg_IDX_0 3758153984 +#define DT_N_S_soc_S_interrupt_controller_e000e100_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_e000e100_P_reg_IDX_1 3072 +#define DT_N_S_soc_S_interrupt_controller_e000e100_P_reg_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_e000e100_P_arm_num_irq_priority_bits 4 +#define DT_N_S_soc_S_interrupt_controller_e000e100_P_arm_num_irq_priority_bits_EXISTS 1 #define DT_N_S_soc_S_interrupt_controller_e000e100_P_interrupt_controller 1 #define DT_N_S_soc_S_interrupt_controller_e000e100_P_interrupt_controller_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_e000e100_P_wakeup_source 0 -#define DT_N_S_soc_S_interrupt_controller_e000e100_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_e000e100_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_interrupt_controller_e000e100_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_interrupt_controller_e000e100_P_compatible {"arm,v7m-nvic"} +#define DT_N_S_soc_S_interrupt_controller_e000e100_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_interrupt_controller_e000e100_P_compatible_IDX_0 "arm,v7m-nvic" #define DT_N_S_soc_S_interrupt_controller_e000e100_P_compatible_IDX_0_STRING_UNQUOTED arm,v7m-nvic #define DT_N_S_soc_S_interrupt_controller_e000e100_P_compatible_IDX_0_STRING_TOKEN arm_v7m_nvic #define DT_N_S_soc_S_interrupt_controller_e000e100_P_compatible_IDX_0_STRING_UPPER_TOKEN ARM_V7M_NVIC -#define DT_N_S_soc_S_interrupt_controller_e000e100_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_interrupt_controller_e000e100_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_interrupt_controller_e000e100, compatible, 0) #define DT_N_S_soc_S_interrupt_controller_e000e100_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_interrupt_controller_e000e100, compatible, 0) #define DT_N_S_soc_S_interrupt_controller_e000e100_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_interrupt_controller_e000e100, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_interrupt_controller_e000e100_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_interrupt_controller_e000e100, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_interrupt_controller_e000e100_P_compatible_LEN 1 #define DT_N_S_soc_S_interrupt_controller_e000e100_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_e000e100_P_reg {3758153984 /* 0xe000e100 */, 3072 /* 0xc00 */} -#define DT_N_S_soc_S_interrupt_controller_e000e100_P_reg_IDX_0 3758153984 -#define DT_N_S_soc_S_interrupt_controller_e000e100_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_e000e100_P_reg_IDX_1 3072 -#define DT_N_S_soc_S_interrupt_controller_e000e100_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_e000e100_P_reg_EXISTS 1 #define DT_N_S_soc_S_interrupt_controller_e000e100_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_interrupt_controller_e000e100_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_e000e100_P_arm_num_irq_priority_bits 4 -#define DT_N_S_soc_S_interrupt_controller_e000e100_P_arm_num_irq_priority_bits_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_e000e100_P_wakeup_source 0 +#define DT_N_S_soc_S_interrupt_controller_e000e100_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_e000e100_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_interrupt_controller_e000e100_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /clocks @@ -972,6 +994,9 @@ /* Node's name with unit-address: */ #define DT_N_S_clocks_FULL_NAME "clocks" +#define DT_N_S_clocks_FULL_NAME_UNQUOTED clocks +#define DT_N_S_clocks_FULL_NAME_TOKEN clocks +#define DT_N_S_clocks_FULL_NAME_UPPER_TOKEN CLOCKS /* Node parent (/) identifier: */ #define DT_N_S_clocks_PARENT DT_N @@ -1002,20 +1027,20 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_clocks_REQUIRES_ORDS \ - 0, /* / */ + 0, /* Ordinals for what depends directly on this node: */ #define DT_N_S_clocks_SUPPORTS_ORDS \ - 7, /* /clocks/clk-hse */ \ - 8, /* /clocks/pll@0 */ \ - 94, /* /clocks/clk-csi */ \ - 95, /* /clocks/clk-hsi */ \ - 96, /* /clocks/clk-hsi48 */ \ - 97, /* /clocks/clk-lse */ \ - 98, /* /clocks/clk-lsi */ \ - 99, /* /clocks/perck */ \ - 100, /* /clocks/pll@1 */ \ - 101, /* /clocks/pll@2 */ + 7, \ + 8, \ + 94, \ + 95, \ + 96, \ + 97, \ + 98, \ + 99, \ + 100, \ + 101, /* Existence and alternate IDs: */ #define DT_N_S_clocks_EXISTS 1 @@ -1050,6 +1075,9 @@ /* Node's name with unit-address: */ #define DT_N_S_clocks_S_clk_hse_FULL_NAME "clk-hse" +#define DT_N_S_clocks_S_clk_hse_FULL_NAME_UNQUOTED clk-hse +#define DT_N_S_clocks_S_clk_hse_FULL_NAME_TOKEN clk_hse +#define DT_N_S_clocks_S_clk_hse_FULL_NAME_UPPER_TOKEN CLK_HSE /* Node parent (/clocks) identifier: */ #define DT_N_S_clocks_S_clk_hse_PARENT DT_N_S_clocks @@ -1080,11 +1108,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_clocks_S_clk_hse_REQUIRES_ORDS \ - 6, /* /clocks */ + 6, /* Ordinals for what depends directly on this node: */ #define DT_N_S_clocks_S_clk_hse_SUPPORTS_ORDS \ - 8, /* /clocks/pll@0 */ + 8, /* Existence and alternate IDs: */ #define DT_N_S_clocks_S_clk_hse_EXISTS 1 @@ -1108,12 +1136,44 @@ #define DT_N_S_clocks_S_clk_hse_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_clocks_S_clk_hse_P_clock_frequency 16000000 -#define DT_N_S_clocks_S_clk_hse_P_clock_frequency_EXISTS 1 #define DT_N_S_clocks_S_clk_hse_P_hse_bypass 0 #define DT_N_S_clocks_S_clk_hse_P_hse_bypass_EXISTS 1 #define DT_N_S_clocks_S_clk_hse_P_css_enabled 0 #define DT_N_S_clocks_S_clk_hse_P_css_enabled_EXISTS 1 +#define DT_N_S_clocks_S_clk_hse_P_clock_frequency 16000000 +#define DT_N_S_clocks_S_clk_hse_P_clock_frequency_EXISTS 1 +#define DT_N_S_clocks_S_clk_hse_P_status "okay" +#define DT_N_S_clocks_S_clk_hse_P_status_STRING_UNQUOTED okay +#define DT_N_S_clocks_S_clk_hse_P_status_STRING_TOKEN okay +#define DT_N_S_clocks_S_clk_hse_P_status_STRING_UPPER_TOKEN OKAY +#define DT_N_S_clocks_S_clk_hse_P_status_IDX_0 "okay" +#define DT_N_S_clocks_S_clk_hse_P_status_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_clk_hse_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_clocks_S_clk_hse_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 +#define DT_N_S_clocks_S_clk_hse_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_clk_hse, status, 0) +#define DT_N_S_clocks_S_clk_hse_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_clk_hse, status, 0) +#define DT_N_S_clocks_S_clk_hse_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_clk_hse, status, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_hse_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_clk_hse, status, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_hse_P_status_LEN 1 +#define DT_N_S_clocks_S_clk_hse_P_status_EXISTS 1 +#define DT_N_S_clocks_S_clk_hse_P_compatible {"st,stm32-hse-clock"} +#define DT_N_S_clocks_S_clk_hse_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_clk_hse_P_compatible_IDX_0 "st,stm32-hse-clock" +#define DT_N_S_clocks_S_clk_hse_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-hse-clock +#define DT_N_S_clocks_S_clk_hse_P_compatible_IDX_0_STRING_TOKEN st_stm32_hse_clock +#define DT_N_S_clocks_S_clk_hse_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_HSE_CLOCK +#define DT_N_S_clocks_S_clk_hse_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_clk_hse, compatible, 0) +#define DT_N_S_clocks_S_clk_hse_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_clk_hse, compatible, 0) +#define DT_N_S_clocks_S_clk_hse_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_clk_hse, compatible, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_hse_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_clk_hse, compatible, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_hse_P_compatible_LEN 1 +#define DT_N_S_clocks_S_clk_hse_P_compatible_EXISTS 1 +#define DT_N_S_clocks_S_clk_hse_P_zephyr_deferred_init 0 +#define DT_N_S_clocks_S_clk_hse_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_clocks_S_clk_hse_P_wakeup_source 0 +#define DT_N_S_clocks_S_clk_hse_P_wakeup_source_EXISTS 1 +#define DT_N_S_clocks_S_clk_hse_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_clocks_S_clk_hse_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /clocks/pll@0 @@ -1132,6 +1192,9 @@ /* Node's name with unit-address: */ #define DT_N_S_clocks_S_pll_0_FULL_NAME "pll@0" +#define DT_N_S_clocks_S_pll_0_FULL_NAME_UNQUOTED pll@0 +#define DT_N_S_clocks_S_pll_0_FULL_NAME_TOKEN pll_0 +#define DT_N_S_clocks_S_pll_0_FULL_NAME_UPPER_TOKEN PLL_0 /* Node parent (/clocks) identifier: */ #define DT_N_S_clocks_S_pll_0_PARENT DT_N_S_clocks @@ -1162,12 +1225,12 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_clocks_S_pll_0_REQUIRES_ORDS \ - 6, /* /clocks */ \ - 7, /* /clocks/clk-hse */ + 6, \ + 7, /* Ordinals for what depends directly on this node: */ #define DT_N_S_clocks_S_pll_0_SUPPORTS_ORDS \ - 9, /* /soc/rcc@58024400 */ + 9, /* Existence and alternate IDs: */ #define DT_N_S_clocks_S_pll_0_EXISTS 1 @@ -1177,7 +1240,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_clocks_S_pll_0_REG_NUM 1 #define DT_N_S_clocks_S_pll_0_REG_IDX_0_EXISTS 1 -#define DT_N_S_clocks_S_pll_0_REG_IDX_0_VAL_ADDRESS 0 /* 0x0 */ +#define DT_N_S_clocks_S_pll_0_REG_IDX_0_VAL_ADDRESS 0 #define DT_N_S_clocks_S_pll_0_RANGES_NUM 0 #define DT_N_S_clocks_S_pll_0_FOREACH_RANGE(fn) #define DT_N_S_clocks_S_pll_0_IRQ_NUM 0 @@ -1193,20 +1256,32 @@ #define DT_N_S_clocks_S_pll_0_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_clocks_S_pll_0_P_wakeup_source 0 -#define DT_N_S_clocks_S_pll_0_P_wakeup_source_EXISTS 1 -#define DT_N_S_clocks_S_pll_0_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_clocks_S_pll_0_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_clocks_S_pll_0_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_pll_0_P_clocks_IDX_0_PH DT_N_S_clocks_S_clk_hse +#define DT_N_S_clocks_S_pll_0_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_pll_0, clocks, 0) +#define DT_N_S_clocks_S_pll_0_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_pll_0, clocks, 0) +#define DT_N_S_clocks_S_pll_0_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_pll_0, clocks, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_pll_0_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_pll_0, clocks, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_pll_0_P_clocks_LEN 1 +#define DT_N_S_clocks_S_pll_0_P_clocks_EXISTS 1 +#define DT_N_S_clocks_S_pll_0_P_div_m 2 +#define DT_N_S_clocks_S_pll_0_P_div_m_EXISTS 1 +#define DT_N_S_clocks_S_pll_0_P_mul_n 120 +#define DT_N_S_clocks_S_pll_0_P_mul_n_EXISTS 1 +#define DT_N_S_clocks_S_pll_0_P_div_p 2 +#define DT_N_S_clocks_S_pll_0_P_div_p_EXISTS 1 +#define DT_N_S_clocks_S_pll_0_P_div_q 4 +#define DT_N_S_clocks_S_pll_0_P_div_q_EXISTS 1 +#define DT_N_S_clocks_S_pll_0_P_div_r 2 +#define DT_N_S_clocks_S_pll_0_P_div_r_EXISTS 1 #define DT_N_S_clocks_S_pll_0_P_status "okay" #define DT_N_S_clocks_S_pll_0_P_status_STRING_UNQUOTED okay #define DT_N_S_clocks_S_pll_0_P_status_STRING_TOKEN okay #define DT_N_S_clocks_S_pll_0_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_clocks_S_pll_0_P_status_IDX_0 "okay" #define DT_N_S_clocks_S_pll_0_P_status_IDX_0_EXISTS 1 -#define DT_N_S_clocks_S_pll_0_P_status_ENUM_IDX 1 -#define DT_N_S_clocks_S_pll_0_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_clocks_S_pll_0_P_status_ENUM_TOKEN okay -#define DT_N_S_clocks_S_pll_0_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_clocks_S_pll_0_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_clocks_S_pll_0_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_clocks_S_pll_0_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_pll_0, status, 0) #define DT_N_S_clocks_S_pll_0_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_pll_0, status, 0) #define DT_N_S_clocks_S_pll_0_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_pll_0, status, 0, __VA_ARGS__) @@ -1214,41 +1289,27 @@ #define DT_N_S_clocks_S_pll_0_P_status_LEN 1 #define DT_N_S_clocks_S_pll_0_P_status_EXISTS 1 #define DT_N_S_clocks_S_pll_0_P_compatible {"st,stm32h7-pll-clock"} +#define DT_N_S_clocks_S_pll_0_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_clocks_S_pll_0_P_compatible_IDX_0 "st,stm32h7-pll-clock" #define DT_N_S_clocks_S_pll_0_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-pll-clock #define DT_N_S_clocks_S_pll_0_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_pll_clock #define DT_N_S_clocks_S_pll_0_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_PLL_CLOCK -#define DT_N_S_clocks_S_pll_0_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_clocks_S_pll_0_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_pll_0, compatible, 0) #define DT_N_S_clocks_S_pll_0_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_pll_0, compatible, 0) #define DT_N_S_clocks_S_pll_0_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_pll_0, compatible, 0, __VA_ARGS__) #define DT_N_S_clocks_S_pll_0_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_pll_0, compatible, 0, __VA_ARGS__) #define DT_N_S_clocks_S_pll_0_P_compatible_LEN 1 #define DT_N_S_clocks_S_pll_0_P_compatible_EXISTS 1 -#define DT_N_S_clocks_S_pll_0_P_reg {0 /* 0x0 */} -#define DT_N_S_clocks_S_pll_0_P_reg_IDX_0 0 +#define DT_N_S_clocks_S_pll_0_P_reg {0} #define DT_N_S_clocks_S_pll_0_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_pll_0_P_reg_IDX_0 0 #define DT_N_S_clocks_S_pll_0_P_reg_EXISTS 1 -#define DT_N_S_clocks_S_pll_0_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_clocks_S_pll_0_P_clocks_IDX_0_PH DT_N_S_clocks_S_clk_hse -#define DT_N_S_clocks_S_pll_0_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_pll_0, clocks, 0) -#define DT_N_S_clocks_S_pll_0_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_pll_0, clocks, 0) -#define DT_N_S_clocks_S_pll_0_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_pll_0, clocks, 0, __VA_ARGS__) -#define DT_N_S_clocks_S_pll_0_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_pll_0, clocks, 0, __VA_ARGS__) -#define DT_N_S_clocks_S_pll_0_P_clocks_LEN 1 -#define DT_N_S_clocks_S_pll_0_P_clocks_EXISTS 1 #define DT_N_S_clocks_S_pll_0_P_zephyr_deferred_init 0 #define DT_N_S_clocks_S_pll_0_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_clocks_S_pll_0_P_div_m 2 -#define DT_N_S_clocks_S_pll_0_P_div_m_EXISTS 1 -#define DT_N_S_clocks_S_pll_0_P_mul_n 120 -#define DT_N_S_clocks_S_pll_0_P_mul_n_EXISTS 1 -#define DT_N_S_clocks_S_pll_0_P_div_p 2 -#define DT_N_S_clocks_S_pll_0_P_div_p_EXISTS 1 -#define DT_N_S_clocks_S_pll_0_P_div_q 4 -#define DT_N_S_clocks_S_pll_0_P_div_q_EXISTS 1 -#define DT_N_S_clocks_S_pll_0_P_div_r 2 -#define DT_N_S_clocks_S_pll_0_P_div_r_EXISTS 1 +#define DT_N_S_clocks_S_pll_0_P_wakeup_source 0 +#define DT_N_S_clocks_S_pll_0_P_wakeup_source_EXISTS 1 +#define DT_N_S_clocks_S_pll_0_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_clocks_S_pll_0_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/rcc@58024400 @@ -1267,6 +1328,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_rcc_58024400_FULL_NAME "rcc@58024400" +#define DT_N_S_soc_S_rcc_58024400_FULL_NAME_UNQUOTED rcc@58024400 +#define DT_N_S_soc_S_rcc_58024400_FULL_NAME_TOKEN rcc_58024400 +#define DT_N_S_soc_S_rcc_58024400_FULL_NAME_UPPER_TOKEN RCC_58024400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_rcc_58024400_PARENT DT_N_S_soc @@ -1297,88 +1361,88 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_rcc_58024400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 8, /* /clocks/pll@0 */ + 4, \ + 8, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_rcc_58024400_SUPPORTS_ORDS \ - 13, /* /soc/adc@58026000 */ \ - 24, /* /soc/i2c@40005400 */ \ - 28, /* /soc/i2c@40005800 */ \ - 30, /* /soc/i2c@40005c00 */ \ - 34, /* /soc/i2c@58001c00 */ \ - 51, /* /soc/adc@40022000 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ \ - 55, /* /soc/serial@40004400 */ \ - 58, /* /soc/serial@40004c00 */ \ - 61, /* /soc/serial@40011000 */ \ - 64, /* /soc/serial@40011400 */ \ - 69, /* /soc/spi@40013000 */ \ - 74, /* /soc/spi@40015000 */ \ - 75, /* /soc/pin-controller@58020000/gpio@58020000 */ \ - 76, /* /soc/pin-controller@58020000/gpio@58020400 */ \ - 77, /* /soc/pin-controller@58020000/gpio@58020800 */ \ - 78, /* /soc/pin-controller@58020000/gpio@58020C00 */ \ - 79, /* /soc/pin-controller@58020000/gpio@58021000 */ \ - 80, /* /soc/pin-controller@58020000/gpio@58021800 */ \ - 81, /* /soc/pin-controller@58020000/gpio@58021C00 */ \ - 82, /* /soc/pin-controller@58020000/gpio@58022000 */ \ - 83, /* /soc/pin-controller@58020000/gpio@58022400 */ \ - 84, /* /soc/pin-controller@58020000/gpio@58022800 */ \ - 85, /* /soc/timers@40010000 */ \ - 91, /* /soc/usb@40080000 */ \ - 111, /* /soc/adc@40022100 */ \ - 112, /* /soc/adc@40022300 */ \ - 113, /* /soc/bdma@58025400 */ \ - 114, /* /soc/can@4000a000 */ \ - 117, /* /soc/can@4000a400 */ \ - 120, /* /soc/dac@40007400 */ \ - 121, /* /soc/display-controller@50001000 */ \ - 122, /* /soc/dma@40020400 */ \ - 123, /* /soc/dmamux@58025800 */ \ - 124, /* /soc/dsihost@50000000 */ \ - 125, /* /soc/dmamux@40020800 */ \ - 126, /* /soc/i2s@40003800 */ \ - 127, /* /soc/i2s@40003c00 */ \ - 128, /* /soc/i2s@40013000 */ \ - 130, /* /soc/mailbox@58026400 */ \ - 131, /* /soc/memory@38800000 */ \ - 132, /* /soc/rng@48021800 */ \ - 133, /* /soc/sdmmc@48022400 */ \ - 134, /* /soc/sdmmc@52007000 */ \ - 135, /* /soc/serial@40004800 */ \ - 136, /* /soc/serial@40005000 */ \ - 137, /* /soc/serial@40007c00 */ \ - 138, /* /soc/serial@58000c00 */ \ - 139, /* /soc/spi@40003800 */ \ - 140, /* /soc/spi@40003c00 */ \ - 141, /* /soc/spi@40013400 */ \ - 142, /* /soc/spi@58001400 */ \ - 144, /* /soc/timers@40002400 */ \ - 145, /* /soc/usb@40040000 */ \ - 146, /* /soc/watchdog@50003000 */ \ - 162, /* /soc/dma@40020000 */ \ - 175, /* /soc/dcmi@48020000 */ \ - 178, /* /soc/ethernet@40028000 */ \ - 180, /* /soc/flash-controller@52002000 */ \ - 227, /* /soc/memory-controller@52004000 */ \ - 230, /* /soc/pin-controller@58020000/gpio@58021400 */ \ - 237, /* /soc/quadspi@52005000 */ \ - 242, /* /soc/rtc@58004000 */ \ - 248, /* /soc/serial@40007800 */ \ - 251, /* /soc/timers@40000000 */ \ - 254, /* /soc/timers@40000400 */ \ - 257, /* /soc/timers@40000800 */ \ - 260, /* /soc/timers@40000c00 */ \ - 263, /* /soc/timers@40001000 */ \ - 265, /* /soc/timers@40001400 */ \ - 267, /* /soc/timers@40001800 */ \ - 270, /* /soc/timers@40001c00 */ \ - 273, /* /soc/timers@40002000 */ \ - 277, /* /soc/timers@40010400 */ \ - 279, /* /soc/timers@40014000 */ \ - 282, /* /soc/timers@40014400 */ \ - 285, /* /soc/timers@40014800 */ + 13, \ + 24, \ + 28, \ + 30, \ + 34, \ + 51, \ + 54, \ + 55, \ + 58, \ + 61, \ + 64, \ + 69, \ + 74, \ + 75, \ + 76, \ + 77, \ + 78, \ + 79, \ + 80, \ + 81, \ + 82, \ + 83, \ + 84, \ + 85, \ + 91, \ + 114, \ + 115, \ + 116, \ + 117, \ + 120, \ + 123, \ + 124, \ + 125, \ + 126, \ + 127, \ + 128, \ + 129, \ + 130, \ + 131, \ + 133, \ + 134, \ + 135, \ + 136, \ + 137, \ + 138, \ + 139, \ + 140, \ + 141, \ + 142, \ + 143, \ + 144, \ + 145, \ + 147, \ + 148, \ + 149, \ + 165, \ + 178, \ + 181, \ + 183, \ + 230, \ + 233, \ + 240, \ + 245, \ + 251, \ + 254, \ + 257, \ + 260, \ + 263, \ + 266, \ + 268, \ + 270, \ + 273, \ + 276, \ + 280, \ + 282, \ + 285, \ + 288, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_rcc_58024400_EXISTS 1 @@ -1388,8 +1452,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_rcc_58024400_REG_NUM 1 #define DT_N_S_soc_S_rcc_58024400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_REG_IDX_0_VAL_ADDRESS 1476543488 /* 0x58024400 */ -#define DT_N_S_soc_S_rcc_58024400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_rcc_58024400_REG_IDX_0_VAL_ADDRESS 1476543488 +#define DT_N_S_soc_S_rcc_58024400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_rcc_58024400_RANGES_NUM 0 #define DT_N_S_soc_S_rcc_58024400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_rcc_58024400_IRQ_NUM 0 @@ -1405,28 +1469,56 @@ #define DT_N_S_soc_S_rcc_58024400_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_rcc_58024400_P_wakeup_source 0 -#define DT_N_S_soc_S_rcc_58024400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_rcc_58024400_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_reg {1476543488, 1024} +#define DT_N_S_soc_S_rcc_58024400_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_reg_IDX_0 1476543488 +#define DT_N_S_soc_S_rcc_58024400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_rcc_58024400_P_reg_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_clock_frequency 480000000 +#define DT_N_S_soc_S_rcc_58024400_P_clock_frequency_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_d1cpre 1 +#define DT_N_S_soc_S_rcc_58024400_P_d1cpre_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_rcc_58024400_P_d1cpre_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_d1cpre_IDX_0_ENUM_VAL_1_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_d1cpre_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_hpre 2 +#define DT_N_S_soc_S_rcc_58024400_P_hpre_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_rcc_58024400_P_hpre_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_hpre_IDX_0_ENUM_VAL_2_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_hpre_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_d1ppre 2 +#define DT_N_S_soc_S_rcc_58024400_P_d1ppre_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_rcc_58024400_P_d1ppre_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_d1ppre_IDX_0_ENUM_VAL_2_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_d1ppre_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_d2ppre1 2 +#define DT_N_S_soc_S_rcc_58024400_P_d2ppre1_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_rcc_58024400_P_d2ppre1_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_d2ppre1_IDX_0_ENUM_VAL_2_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_d2ppre1_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_d2ppre2 2 +#define DT_N_S_soc_S_rcc_58024400_P_d2ppre2_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_rcc_58024400_P_d2ppre2_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_d2ppre2_IDX_0_ENUM_VAL_2_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_d2ppre2_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_d3ppre 2 +#define DT_N_S_soc_S_rcc_58024400_P_d3ppre_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_rcc_58024400_P_d3ppre_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_d3ppre_IDX_0_ENUM_VAL_2_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_d3ppre_EXISTS 1 #define DT_N_S_soc_S_rcc_58024400_P_compatible {"st,stm32h7-rcc"} +#define DT_N_S_soc_S_rcc_58024400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_rcc_58024400_P_compatible_IDX_0 "st,stm32h7-rcc" #define DT_N_S_soc_S_rcc_58024400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-rcc #define DT_N_S_soc_S_rcc_58024400_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_rcc #define DT_N_S_soc_S_rcc_58024400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_RCC -#define DT_N_S_soc_S_rcc_58024400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_rcc_58024400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_rcc_58024400, compatible, 0) #define DT_N_S_soc_S_rcc_58024400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_rcc_58024400, compatible, 0) #define DT_N_S_soc_S_rcc_58024400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_rcc_58024400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_rcc_58024400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_rcc_58024400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_rcc_58024400_P_compatible_LEN 1 #define DT_N_S_soc_S_rcc_58024400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_reg {1476543488 /* 0x58024400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_rcc_58024400_P_reg_IDX_0 1476543488 -#define DT_N_S_soc_S_rcc_58024400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_rcc_58024400_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_reg_EXISTS 1 #define DT_N_S_soc_S_rcc_58024400_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_rcc_58024400_P_clocks_IDX_0_PH DT_N_S_clocks_S_pll_0 #define DT_N_S_soc_S_rcc_58024400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_rcc_58024400, clocks, 0) @@ -1437,32 +1529,10 @@ #define DT_N_S_soc_S_rcc_58024400_P_clocks_EXISTS 1 #define DT_N_S_soc_S_rcc_58024400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_rcc_58024400_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_clock_frequency 480000000 -#define DT_N_S_soc_S_rcc_58024400_P_clock_frequency_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_d1cpre 1 -#define DT_N_S_soc_S_rcc_58024400_P_d1cpre_ENUM_IDX 0 -#define DT_N_S_soc_S_rcc_58024400_P_d1cpre_ENUM_VAL_1_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_d1cpre_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_hpre 2 -#define DT_N_S_soc_S_rcc_58024400_P_hpre_ENUM_IDX 1 -#define DT_N_S_soc_S_rcc_58024400_P_hpre_ENUM_VAL_2_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_hpre_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_d1ppre 2 -#define DT_N_S_soc_S_rcc_58024400_P_d1ppre_ENUM_IDX 1 -#define DT_N_S_soc_S_rcc_58024400_P_d1ppre_ENUM_VAL_2_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_d1ppre_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_d2ppre1 2 -#define DT_N_S_soc_S_rcc_58024400_P_d2ppre1_ENUM_IDX 1 -#define DT_N_S_soc_S_rcc_58024400_P_d2ppre1_ENUM_VAL_2_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_d2ppre1_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_d2ppre2 2 -#define DT_N_S_soc_S_rcc_58024400_P_d2ppre2_ENUM_IDX 1 -#define DT_N_S_soc_S_rcc_58024400_P_d2ppre2_ENUM_VAL_2_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_d2ppre2_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_d3ppre 2 -#define DT_N_S_soc_S_rcc_58024400_P_d3ppre_ENUM_IDX 1 -#define DT_N_S_soc_S_rcc_58024400_P_d3ppre_ENUM_VAL_2_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_P_d3ppre_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_wakeup_source 0 +#define DT_N_S_soc_S_rcc_58024400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_rcc_58024400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000 @@ -1481,6 +1551,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_FULL_NAME "pin-controller@58020000" +#define DT_N_S_soc_S_pin_controller_58020000_FULL_NAME_UNQUOTED pin-controller@58020000 +#define DT_N_S_soc_S_pin_controller_58020000_FULL_NAME_TOKEN pin_controller_58020000 +#define DT_N_S_soc_S_pin_controller_58020000_FULL_NAME_UPPER_TOKEN PIN_CONTROLLER_58020000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_PARENT DT_N_S_soc @@ -1511,124 +1584,124 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_REQUIRES_ORDS \ - 4, /* /soc */ + 4, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_SUPPORTS_ORDS \ - 11, /* /soc/pin-controller@58020000/adc3_inp0_pc2_c */ \ - 12, /* /soc/pin-controller@58020000/adc3_inp1_pc3_c */ \ - 22, /* /soc/pin-controller@58020000/i2c1_scl_pb8 */ \ - 23, /* /soc/pin-controller@58020000/i2c1_sda_pb9 */ \ - 26, /* /soc/pin-controller@58020000/i2c2_scl_ph4 */ \ - 27, /* /soc/pin-controller@58020000/i2c2_sda_pb11 */ \ - 32, /* /soc/pin-controller@58020000/i2c4_scl_pb6 */ \ - 33, /* /soc/pin-controller@58020000/i2c4_sda_ph12 */ \ - 39, /* /soc/pin-controller@58020000/adc1_inp0_pa0_c */ \ - 40, /* /soc/pin-controller@58020000/adc1_inp10_pc0 */ \ - 41, /* /soc/pin-controller@58020000/adc1_inp12_pc2 */ \ - 42, /* /soc/pin-controller@58020000/adc1_inp13_pc3 */ \ - 43, /* /soc/pin-controller@58020000/adc1_inp16_pa0 */ \ - 44, /* /soc/pin-controller@58020000/adc1_inp18_pa4 */ \ - 45, /* /soc/pin-controller@58020000/adc1_inp19_pa5 */ \ - 46, /* /soc/pin-controller@58020000/adc1_inp1_pa1_c */ \ - 47, /* /soc/pin-controller@58020000/adc1_inp4_pc4 */ \ - 48, /* /soc/pin-controller@58020000/adc1_inp5_pb1 */ \ - 49, /* /soc/pin-controller@58020000/adc1_inp8_pc5 */ \ - 50, /* /soc/pin-controller@58020000/adc1_inp9_pb0 */ \ - 52, /* /soc/pin-controller@58020000/usart2_rx_pd6 */ \ - 53, /* /soc/pin-controller@58020000/usart2_tx_pd5 */ \ - 56, /* /soc/pin-controller@58020000/uart4_rx_pi9 */ \ - 57, /* /soc/pin-controller@58020000/uart4_tx_ph13 */ \ - 59, /* /soc/pin-controller@58020000/usart1_rx_pb7 */ \ - 60, /* /soc/pin-controller@58020000/usart1_tx_pa9 */ \ - 62, /* /soc/pin-controller@58020000/usart6_rx_pc7 */ \ - 63, /* /soc/pin-controller@58020000/usart6_tx_pg14 */ \ - 65, /* /soc/pin-controller@58020000/spi1_miso_pg9 */ \ - 66, /* /soc/pin-controller@58020000/spi1_mosi_pd7 */ \ - 67, /* /soc/pin-controller@58020000/spi1_nss_pa4 */ \ - 68, /* /soc/pin-controller@58020000/spi1_sck_pb3 */ \ - 70, /* /soc/pin-controller@58020000/spi5_miso_pj11 */ \ - 71, /* /soc/pin-controller@58020000/spi5_mosi_pj10 */ \ - 72, /* /soc/pin-controller@58020000/spi5_nss_pk1 */ \ - 73, /* /soc/pin-controller@58020000/spi5_sck_ph6 */ \ - 75, /* /soc/pin-controller@58020000/gpio@58020000 */ \ - 76, /* /soc/pin-controller@58020000/gpio@58020400 */ \ - 77, /* /soc/pin-controller@58020000/gpio@58020800 */ \ - 78, /* /soc/pin-controller@58020000/gpio@58020C00 */ \ - 79, /* /soc/pin-controller@58020000/gpio@58021000 */ \ - 80, /* /soc/pin-controller@58020000/gpio@58021800 */ \ - 81, /* /soc/pin-controller@58020000/gpio@58021C00 */ \ - 82, /* /soc/pin-controller@58020000/gpio@58022000 */ \ - 83, /* /soc/pin-controller@58020000/gpio@58022400 */ \ - 84, /* /soc/pin-controller@58020000/gpio@58022800 */ \ - 86, /* /soc/pin-controller@58020000/tim1_ch3_pj9 */ \ - 89, /* /soc/pin-controller@58020000/usb_otg_fs_dm_pa11 */ \ - 90, /* /soc/pin-controller@58020000/usb_otg_fs_dp_pa12 */ \ - 115, /* /soc/pin-controller@58020000/fdcan2_rx_pb5 */ \ - 116, /* /soc/pin-controller@58020000/fdcan2_tx_pb13 */ \ - 118, /* /soc/pin-controller@58020000/dac1_out1_pa4 */ \ - 119, /* /soc/pin-controller@58020000/dac1_out2_pa5 */ \ - 164, /* /soc/pin-controller@58020000/dcmi_d0_ph9 */ \ - 165, /* /soc/pin-controller@58020000/dcmi_d1_ph10 */ \ - 166, /* /soc/pin-controller@58020000/dcmi_d2_ph11 */ \ - 167, /* /soc/pin-controller@58020000/dcmi_d3_pg11 */ \ - 168, /* /soc/pin-controller@58020000/dcmi_d4_ph14 */ \ - 169, /* /soc/pin-controller@58020000/dcmi_d5_pi4 */ \ - 170, /* /soc/pin-controller@58020000/dcmi_d6_pi6 */ \ - 171, /* /soc/pin-controller@58020000/dcmi_d7_pi7 */ \ - 172, /* /soc/pin-controller@58020000/dcmi_hsync_ph8 */ \ - 173, /* /soc/pin-controller@58020000/dcmi_pixclk_pa6 */ \ - 174, /* /soc/pin-controller@58020000/dcmi_vsync_pi5 */ \ - 188, /* /soc/pin-controller@58020000/fmc_a0_pf0 */ \ - 189, /* /soc/pin-controller@58020000/fmc_a10_pg0 */ \ - 190, /* /soc/pin-controller@58020000/fmc_a11_pg1 */ \ - 191, /* /soc/pin-controller@58020000/fmc_a12_pg2 */ \ - 192, /* /soc/pin-controller@58020000/fmc_a14_pg4 */ \ - 193, /* /soc/pin-controller@58020000/fmc_a15_pg5 */ \ - 194, /* /soc/pin-controller@58020000/fmc_a1_pf1 */ \ - 195, /* /soc/pin-controller@58020000/fmc_a2_pf2 */ \ - 196, /* /soc/pin-controller@58020000/fmc_a3_pf3 */ \ - 197, /* /soc/pin-controller@58020000/fmc_a4_pf4 */ \ - 198, /* /soc/pin-controller@58020000/fmc_a5_pf5 */ \ - 199, /* /soc/pin-controller@58020000/fmc_a6_pf12 */ \ - 200, /* /soc/pin-controller@58020000/fmc_a7_pf13 */ \ - 201, /* /soc/pin-controller@58020000/fmc_a8_pf14 */ \ - 202, /* /soc/pin-controller@58020000/fmc_a9_pf15 */ \ - 203, /* /soc/pin-controller@58020000/fmc_d0_pd14 */ \ - 204, /* /soc/pin-controller@58020000/fmc_d10_pe13 */ \ - 205, /* /soc/pin-controller@58020000/fmc_d11_pe14 */ \ - 206, /* /soc/pin-controller@58020000/fmc_d12_pe15 */ \ - 207, /* /soc/pin-controller@58020000/fmc_d13_pd8 */ \ - 208, /* /soc/pin-controller@58020000/fmc_d14_pd9 */ \ - 209, /* /soc/pin-controller@58020000/fmc_d15_pd10 */ \ - 210, /* /soc/pin-controller@58020000/fmc_d1_pd15 */ \ - 211, /* /soc/pin-controller@58020000/fmc_d2_pd0 */ \ - 212, /* /soc/pin-controller@58020000/fmc_d3_pd1 */ \ - 213, /* /soc/pin-controller@58020000/fmc_d4_pe7 */ \ - 214, /* /soc/pin-controller@58020000/fmc_d5_pe8 */ \ - 215, /* /soc/pin-controller@58020000/fmc_d6_pe9 */ \ - 216, /* /soc/pin-controller@58020000/fmc_d7_pe10 */ \ - 217, /* /soc/pin-controller@58020000/fmc_d8_pe11 */ \ - 218, /* /soc/pin-controller@58020000/fmc_d9_pe12 */ \ - 219, /* /soc/pin-controller@58020000/fmc_nbl0_pe0 */ \ - 220, /* /soc/pin-controller@58020000/fmc_nbl1_pe1 */ \ - 221, /* /soc/pin-controller@58020000/fmc_sdcke0_ph2 */ \ - 222, /* /soc/pin-controller@58020000/fmc_sdclk_pg8 */ \ - 223, /* /soc/pin-controller@58020000/fmc_sdncas_pg15 */ \ - 224, /* /soc/pin-controller@58020000/fmc_sdne0_ph3 */ \ - 225, /* /soc/pin-controller@58020000/fmc_sdnras_pf11 */ \ - 226, /* /soc/pin-controller@58020000/fmc_sdnwe_ph5 */ \ - 230, /* /soc/pin-controller@58020000/gpio@58021400 */ \ - 231, /* /soc/pin-controller@58020000/quadspi_bk1_io0_pd11 */ \ - 232, /* /soc/pin-controller@58020000/quadspi_bk1_io1_pd12 */ \ - 233, /* /soc/pin-controller@58020000/quadspi_bk1_io2_pe2 */ \ - 234, /* /soc/pin-controller@58020000/quadspi_bk1_io3_pf6 */ \ - 235, /* /soc/pin-controller@58020000/quadspi_bk1_ncs_pg6 */ \ - 236, /* /soc/pin-controller@58020000/quadspi_clk_pf10 */ \ - 244, /* /soc/pin-controller@58020000/uart7_cts_pf9 */ \ - 245, /* /soc/pin-controller@58020000/uart7_rts_pf8 */ \ - 246, /* /soc/pin-controller@58020000/uart7_rx_pa8 */ \ - 247, /* /soc/pin-controller@58020000/uart7_tx_pf7 */ + 11, \ + 12, \ + 22, \ + 23, \ + 26, \ + 27, \ + 32, \ + 33, \ + 39, \ + 40, \ + 41, \ + 42, \ + 43, \ + 44, \ + 45, \ + 46, \ + 47, \ + 48, \ + 49, \ + 50, \ + 52, \ + 53, \ + 56, \ + 57, \ + 59, \ + 60, \ + 62, \ + 63, \ + 65, \ + 66, \ + 67, \ + 68, \ + 70, \ + 71, \ + 72, \ + 73, \ + 75, \ + 76, \ + 77, \ + 78, \ + 79, \ + 80, \ + 81, \ + 82, \ + 83, \ + 84, \ + 86, \ + 89, \ + 90, \ + 118, \ + 119, \ + 121, \ + 122, \ + 167, \ + 168, \ + 169, \ + 170, \ + 171, \ + 172, \ + 173, \ + 174, \ + 175, \ + 176, \ + 177, \ + 191, \ + 192, \ + 193, \ + 194, \ + 195, \ + 196, \ + 197, \ + 198, \ + 199, \ + 200, \ + 201, \ + 202, \ + 203, \ + 204, \ + 205, \ + 206, \ + 207, \ + 208, \ + 209, \ + 210, \ + 211, \ + 212, \ + 213, \ + 214, \ + 215, \ + 216, \ + 217, \ + 218, \ + 219, \ + 220, \ + 221, \ + 222, \ + 223, \ + 224, \ + 225, \ + 226, \ + 227, \ + 228, \ + 229, \ + 233, \ + 234, \ + 235, \ + 236, \ + 237, \ + 238, \ + 239, \ + 247, \ + 248, \ + 249, \ + 250, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_EXISTS 1 @@ -1638,8 +1711,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_pin_controller_58020000_REG_NUM 1 #define DT_N_S_soc_S_pin_controller_58020000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_REG_IDX_0_VAL_ADDRESS 1476526080 /* 0x58020000 */ -#define DT_N_S_soc_S_pin_controller_58020000_REG_IDX_0_VAL_SIZE 9216 /* 0x2400 */ +#define DT_N_S_soc_S_pin_controller_58020000_REG_IDX_0_VAL_ADDRESS 1476526080 +#define DT_N_S_soc_S_pin_controller_58020000_REG_IDX_0_VAL_SIZE 9216 #define DT_N_S_soc_S_pin_controller_58020000_RANGES_NUM 0 #define DT_N_S_soc_S_pin_controller_58020000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_pin_controller_58020000_IRQ_NUM 0 @@ -1655,36 +1728,36 @@ #define DT_N_S_soc_S_pin_controller_58020000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_P_wakeup_source 0 -#define DT_N_S_soc_S_pin_controller_58020000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_pin_controller_58020000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_P_reg {1476526080, 9216} +#define DT_N_S_soc_S_pin_controller_58020000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_P_reg_IDX_0 1476526080 +#define DT_N_S_soc_S_pin_controller_58020000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_P_reg_IDX_1 9216 +#define DT_N_S_soc_S_pin_controller_58020000_P_reg_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_P_remap_pa11 0 +#define DT_N_S_soc_S_pin_controller_58020000_P_remap_pa11_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_P_remap_pa12 0 +#define DT_N_S_soc_S_pin_controller_58020000_P_remap_pa12_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_P_remap_pa11_pa12 0 +#define DT_N_S_soc_S_pin_controller_58020000_P_remap_pa11_pa12_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_P_compatible {"st,stm32-pinctrl"} +#define DT_N_S_soc_S_pin_controller_58020000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_P_compatible_IDX_0 "st,stm32-pinctrl" #define DT_N_S_soc_S_pin_controller_58020000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-pinctrl #define DT_N_S_soc_S_pin_controller_58020000_P_compatible_IDX_0_STRING_TOKEN st_stm32_pinctrl #define DT_N_S_soc_S_pin_controller_58020000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_PINCTRL -#define DT_N_S_soc_S_pin_controller_58020000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000, compatible, 0) #define DT_N_S_soc_S_pin_controller_58020000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000, compatible, 0) #define DT_N_S_soc_S_pin_controller_58020000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_P_compatible_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_P_reg {1476526080 /* 0x58020000 */, 9216 /* 0x2400 */} -#define DT_N_S_soc_S_pin_controller_58020000_P_reg_IDX_0 1476526080 -#define DT_N_S_soc_S_pin_controller_58020000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_P_reg_IDX_1 9216 -#define DT_N_S_soc_S_pin_controller_58020000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_P_reg_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_pin_controller_58020000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_P_remap_pa11 0 -#define DT_N_S_soc_S_pin_controller_58020000_P_remap_pa11_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_P_remap_pa12 0 -#define DT_N_S_soc_S_pin_controller_58020000_P_remap_pa12_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_P_remap_pa11_pa12 0 -#define DT_N_S_soc_S_pin_controller_58020000_P_remap_pa11_pa12_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_P_wakeup_source 0 +#define DT_N_S_soc_S_pin_controller_58020000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_pin_controller_58020000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/adc3_inp0_pc2_c @@ -1700,6 +1773,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_FULL_NAME "adc3_inp0_pc2_c" +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_FULL_NAME_UNQUOTED adc3_inp0_pc2_c +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_FULL_NAME_TOKEN adc3_inp0_pc2_c +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_FULL_NAME_UPPER_TOKEN ADC3_INP0_PC2_C /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -1730,11 +1806,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_SUPPORTS_ORDS \ - 13, /* /soc/adc@58026000 */ + 13, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_EXISTS 1 @@ -1752,20 +1828,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_pinmux 1104 #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate "low-speed" @@ -1774,16 +1836,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/adc3_inp1_pc3_c @@ -1799,6 +1873,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_FULL_NAME "adc3_inp1_pc3_c" +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_FULL_NAME_UNQUOTED adc3_inp1_pc3_c +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_FULL_NAME_TOKEN adc3_inp1_pc3_c +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_FULL_NAME_UPPER_TOKEN ADC3_INP1_PC3_C /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -1829,11 +1906,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_SUPPORTS_ORDS \ - 13, /* /soc/adc@58026000 */ + 13, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_EXISTS 1 @@ -1851,20 +1928,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_pinmux 1136 #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate "low-speed" @@ -1873,16 +1936,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c_P_output_high_EXISTS 1 /* * Devicetree node: /soc/adc@58026000 @@ -1901,6 +1976,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_58026000_FULL_NAME "adc@58026000" +#define DT_N_S_soc_S_adc_58026000_FULL_NAME_UNQUOTED adc@58026000 +#define DT_N_S_soc_S_adc_58026000_FULL_NAME_TOKEN adc_58026000 +#define DT_N_S_soc_S_adc_58026000_FULL_NAME_UPPER_TOKEN ADC_58026000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_adc_58026000_PARENT DT_N_S_soc @@ -1931,20 +2009,20 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_58026000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 11, /* /soc/pin-controller@58020000/adc3_inp0_pc2_c */ \ - 12, /* /soc/pin-controller@58020000/adc3_inp1_pc3_c */ + 4, \ + 5, \ + 9, \ + 11, \ + 12, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_58026000_SUPPORTS_ORDS \ - 14, /* /dietemp */ \ - 36, /* /vbat */ \ - 37, /* /vref */ \ - 93, /* /zephyr,user */ \ - 160, /* /soc/adc@58026000/channel@0 */ \ - 161, /* /soc/adc@58026000/channel@1 */ + 14, \ + 36, \ + 37, \ + 93, \ + 163, \ + 164, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_adc_58026000_EXISTS 1 @@ -1954,8 +2032,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_58026000_REG_NUM 1 #define DT_N_S_soc_S_adc_58026000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_REG_IDX_0_VAL_ADDRESS 1476550656 /* 0x58026000 */ -#define DT_N_S_soc_S_adc_58026000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_adc_58026000_REG_IDX_0_VAL_ADDRESS 1476550656 +#define DT_N_S_soc_S_adc_58026000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_adc_58026000_RANGES_NUM 0 #define DT_N_S_soc_S_adc_58026000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_58026000_IRQ_NUM 1 @@ -1985,50 +2063,12 @@ #define DT_N_S_soc_S_adc_58026000_PINCTRL_NAME_default_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c /* Generic property macros: */ -#define DT_N_S_soc_S_adc_58026000_P_wakeup_source 0 -#define DT_N_S_soc_S_adc_58026000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_adc_58026000_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_status "okay" -#define DT_N_S_soc_S_adc_58026000_P_status_STRING_UNQUOTED okay -#define DT_N_S_soc_S_adc_58026000_P_status_STRING_TOKEN okay -#define DT_N_S_soc_S_adc_58026000_P_status_STRING_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_adc_58026000_P_status_IDX_0 "okay" -#define DT_N_S_soc_S_adc_58026000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_adc_58026000_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_adc_58026000_P_status_ENUM_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_adc_58026000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_58026000, status, 0) -#define DT_N_S_soc_S_adc_58026000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_58026000, status, 0) -#define DT_N_S_soc_S_adc_58026000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_58026000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_58026000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_58026000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_58026000_P_status_LEN 1 -#define DT_N_S_soc_S_adc_58026000_P_status_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_compatible {"st,stm32-adc"} -#define DT_N_S_soc_S_adc_58026000_P_compatible_IDX_0 "st,stm32-adc" -#define DT_N_S_soc_S_adc_58026000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-adc -#define DT_N_S_soc_S_adc_58026000_P_compatible_IDX_0_STRING_TOKEN st_stm32_adc -#define DT_N_S_soc_S_adc_58026000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_ADC -#define DT_N_S_soc_S_adc_58026000_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_58026000, compatible, 0) -#define DT_N_S_soc_S_adc_58026000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_58026000, compatible, 0) -#define DT_N_S_soc_S_adc_58026000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_58026000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_58026000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_58026000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_58026000_P_compatible_LEN 1 -#define DT_N_S_soc_S_adc_58026000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_reg {1476550656 /* 0x58026000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_adc_58026000_P_reg_IDX_0 1476550656 +#define DT_N_S_soc_S_adc_58026000_P_reg {1476550656, 1024} #define DT_N_S_soc_S_adc_58026000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_adc_58026000_P_reg_IDX_0 1476550656 #define DT_N_S_soc_S_adc_58026000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_reg_IDX_1 1024 #define DT_N_S_soc_S_adc_58026000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_interrupts {127 /* 0x7f */, 0 /* 0x0 */} -#define DT_N_S_soc_S_adc_58026000_P_interrupts_IDX_0 127 -#define DT_N_S_soc_S_adc_58026000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_adc_58026000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_adc_58026000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_adc_58026000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_adc_58026000_P_clocks_IDX_0_VAL_bus 224 @@ -2041,57 +2081,35 @@ #define DT_N_S_soc_S_adc_58026000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_58026000, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_adc_58026000_P_clocks_LEN 1 #define DT_N_S_soc_S_adc_58026000_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_adc_58026000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_IDX_1 DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 0) \ - fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 1) -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 1) -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 1, __VA_ARGS__) -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 1, __VA_ARGS__) -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_LEN 2 -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names {"default"} -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_IDX_0 "default" -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_IDX_0_STRING_UNQUOTED default -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_IDX_0_STRING_TOKEN default -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_58026000, pinctrl_names, 0) -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_58026000, pinctrl_names, 0) -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_58026000, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_58026000, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_LEN 1 -#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_interrupts {127, 0} +#define DT_N_S_soc_S_adc_58026000_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_interrupts_IDX_0 127 +#define DT_N_S_soc_S_adc_58026000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_adc_58026000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_adc_58026000_P_st_adc_clock_source 1 -#define DT_N_S_soc_S_adc_58026000_P_st_adc_clock_source_ENUM_IDX 0 -#define DT_N_S_soc_S_adc_58026000_P_st_adc_clock_source_ENUM_VAL_1_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_st_adc_clock_source_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_adc_58026000_P_st_adc_clock_source_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_st_adc_clock_source_IDX_0_ENUM_VAL_1_EXISTS 1 #define DT_N_S_soc_S_adc_58026000_P_st_adc_clock_source_EXISTS 1 #define DT_N_S_soc_S_adc_58026000_P_st_adc_prescaler 4 -#define DT_N_S_soc_S_adc_58026000_P_st_adc_prescaler_ENUM_IDX 2 -#define DT_N_S_soc_S_adc_58026000_P_st_adc_prescaler_ENUM_VAL_4_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_st_adc_prescaler_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_adc_58026000_P_st_adc_prescaler_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_st_adc_prescaler_IDX_0_ENUM_VAL_4_EXISTS 1 #define DT_N_S_soc_S_adc_58026000_P_st_adc_prescaler_EXISTS 1 #define DT_N_S_soc_S_adc_58026000_P_vref_mv 3300 #define DT_N_S_soc_S_adc_58026000_P_vref_mv_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_resolutions {8446476 /* 0x80e20c */, 7725580 /* 0x75e20c */, 6742540 /* 0x66e20c */, 5497356 /* 0x53e20c */, 4710924 /* 0x47e20c */} -#define DT_N_S_soc_S_adc_58026000_P_resolutions_IDX_0 8446476 +#define DT_N_S_soc_S_adc_58026000_P_resolutions {8446476, 7725580, 6742540, 5497356, 4710924} #define DT_N_S_soc_S_adc_58026000_P_resolutions_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_resolutions_IDX_1 7725580 +#define DT_N_S_soc_S_adc_58026000_P_resolutions_IDX_0 8446476 #define DT_N_S_soc_S_adc_58026000_P_resolutions_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_resolutions_IDX_2 6742540 +#define DT_N_S_soc_S_adc_58026000_P_resolutions_IDX_1 7725580 #define DT_N_S_soc_S_adc_58026000_P_resolutions_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_resolutions_IDX_3 5497356 +#define DT_N_S_soc_S_adc_58026000_P_resolutions_IDX_2 6742540 #define DT_N_S_soc_S_adc_58026000_P_resolutions_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_resolutions_IDX_4 4710924 +#define DT_N_S_soc_S_adc_58026000_P_resolutions_IDX_3 5497356 #define DT_N_S_soc_S_adc_58026000_P_resolutions_IDX_4_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_resolutions_IDX_4 4710924 #define DT_N_S_soc_S_adc_58026000_P_resolutions_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_58026000, resolutions, 0) \ fn(DT_N_S_soc_S_adc_58026000, resolutions, 1) \ fn(DT_N_S_soc_S_adc_58026000, resolutions, 2) \ @@ -2114,23 +2132,23 @@ fn(DT_N_S_soc_S_adc_58026000, resolutions, 4, __VA_ARGS__) #define DT_N_S_soc_S_adc_58026000_P_resolutions_LEN 5 #define DT_N_S_soc_S_adc_58026000_P_resolutions_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_sampling_times {2 /* 0x2 */, 3 /* 0x3 */, 9 /* 0x9 */, 17 /* 0x11 */, 33 /* 0x21 */, 65 /* 0x41 */, 388 /* 0x184 */, 811 /* 0x32b */} -#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_0 2 +#define DT_N_S_soc_S_adc_58026000_P_sampling_times {2, 3, 9, 17, 33, 65, 388, 811} #define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_1 3 +#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_0 2 #define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_2 9 +#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_1 3 #define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_3 17 +#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_2 9 #define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_4 33 +#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_3 17 #define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_5 65 +#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_4 33 #define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_6 388 +#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_5 65 #define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_7 811 +#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_6 388 #define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_7_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_sampling_times_IDX_7 811 #define DT_N_S_soc_S_adc_58026000_P_sampling_times_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_58026000, sampling_times, 0) \ fn(DT_N_S_soc_S_adc_58026000, sampling_times, 1) \ fn(DT_N_S_soc_S_adc_58026000, sampling_times, 2) \ @@ -2166,9 +2184,70 @@ #define DT_N_S_soc_S_adc_58026000_P_sampling_times_LEN 8 #define DT_N_S_soc_S_adc_58026000_P_sampling_times_EXISTS 1 #define DT_N_S_soc_S_adc_58026000_P_st_adc_sequencer 1 -#define DT_N_S_soc_S_adc_58026000_P_st_adc_sequencer_ENUM_IDX 1 -#define DT_N_S_soc_S_adc_58026000_P_st_adc_sequencer_ENUM_VAL_1_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_st_adc_sequencer_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_adc_58026000_P_st_adc_sequencer_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_st_adc_sequencer_IDX_0_ENUM_VAL_1_EXISTS 1 #define DT_N_S_soc_S_adc_58026000_P_st_adc_sequencer_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_status "okay" +#define DT_N_S_soc_S_adc_58026000_P_status_STRING_UNQUOTED okay +#define DT_N_S_soc_S_adc_58026000_P_status_STRING_TOKEN okay +#define DT_N_S_soc_S_adc_58026000_P_status_STRING_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_adc_58026000_P_status_IDX_0 "okay" +#define DT_N_S_soc_S_adc_58026000_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_adc_58026000_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_58026000, status, 0) +#define DT_N_S_soc_S_adc_58026000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_58026000, status, 0) +#define DT_N_S_soc_S_adc_58026000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_58026000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_58026000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_58026000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_58026000_P_status_LEN 1 +#define DT_N_S_soc_S_adc_58026000_P_status_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_compatible {"st,stm32-adc"} +#define DT_N_S_soc_S_adc_58026000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_compatible_IDX_0 "st,stm32-adc" +#define DT_N_S_soc_S_adc_58026000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-adc +#define DT_N_S_soc_S_adc_58026000_P_compatible_IDX_0_STRING_TOKEN st_stm32_adc +#define DT_N_S_soc_S_adc_58026000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_ADC +#define DT_N_S_soc_S_adc_58026000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_58026000, compatible, 0) +#define DT_N_S_soc_S_adc_58026000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_58026000, compatible, 0) +#define DT_N_S_soc_S_adc_58026000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_58026000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_58026000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_58026000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_58026000_P_compatible_LEN 1 +#define DT_N_S_soc_S_adc_58026000_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_adc_58026000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_wakeup_source 0 +#define DT_N_S_soc_S_adc_58026000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_adc_58026000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_IDX_1 DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 0) \ + fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 1) +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 1) +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 1, __VA_ARGS__) +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_58026000, pinctrl_0, 1, __VA_ARGS__) +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_LEN 2 +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_0_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_IDX_0 "default" +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_IDX_0_STRING_UNQUOTED default +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_IDX_0_STRING_TOKEN default +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_58026000, pinctrl_names, 0) +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_58026000, pinctrl_names, 0) +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_58026000, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_58026000, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_LEN 1 +#define DT_N_S_soc_S_adc_58026000_P_pinctrl_names_EXISTS 1 /* * Devicetree node: /dietemp @@ -2187,12 +2266,15 @@ /* Node's name with unit-address: */ #define DT_N_S_dietemp_FULL_NAME "dietemp" +#define DT_N_S_dietemp_FULL_NAME_UNQUOTED dietemp +#define DT_N_S_dietemp_FULL_NAME_TOKEN dietemp +#define DT_N_S_dietemp_FULL_NAME_UPPER_TOKEN DIETEMP /* Node parent (/) identifier: */ #define DT_N_S_dietemp_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_dietemp_CHILD_IDX 6 +#define DT_N_S_dietemp_CHILD_IDX 7 /* Helpers for dealing with node labels: */ #define DT_N_S_dietemp_NODELABEL_NUM 1 @@ -2217,8 +2299,8 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_dietemp_REQUIRES_ORDS \ - 0, /* / */ \ - 13, /* /soc/adc@58026000 */ + 0, \ + 13, /* Ordinals for what depends directly on this node: */ #define DT_N_S_dietemp_SUPPORTS_ORDS /* nothing */ @@ -2245,20 +2327,29 @@ #define DT_N_S_dietemp_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_dietemp_P_wakeup_source 0 -#define DT_N_S_dietemp_P_wakeup_source_EXISTS 1 -#define DT_N_S_dietemp_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_dietemp_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_dietemp_P_ts_cal2_addr 535947328 +#define DT_N_S_dietemp_P_ts_cal2_addr_EXISTS 1 +#define DT_N_S_dietemp_P_ts_cal2_temp 110 +#define DT_N_S_dietemp_P_ts_cal2_temp_EXISTS 1 +#define DT_N_S_dietemp_P_ts_cal1_addr 535947296 +#define DT_N_S_dietemp_P_ts_cal1_addr_EXISTS 1 +#define DT_N_S_dietemp_P_ts_cal1_temp 30 +#define DT_N_S_dietemp_P_ts_cal1_temp_EXISTS 1 +#define DT_N_S_dietemp_P_ts_cal_vrefanalog 3300 +#define DT_N_S_dietemp_P_ts_cal_vrefanalog_EXISTS 1 +#define DT_N_S_dietemp_P_ts_cal_resolution 16 +#define DT_N_S_dietemp_P_ts_cal_resolution_IDX_0_ENUM_IDX 2 +#define DT_N_S_dietemp_P_ts_cal_resolution_IDX_0_EXISTS 1 +#define DT_N_S_dietemp_P_ts_cal_resolution_IDX_0_ENUM_VAL_16_EXISTS 1 +#define DT_N_S_dietemp_P_ts_cal_resolution_EXISTS 1 #define DT_N_S_dietemp_P_status "disabled" #define DT_N_S_dietemp_P_status_STRING_UNQUOTED disabled #define DT_N_S_dietemp_P_status_STRING_TOKEN disabled #define DT_N_S_dietemp_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_dietemp_P_status_IDX_0 "disabled" #define DT_N_S_dietemp_P_status_IDX_0_EXISTS 1 -#define DT_N_S_dietemp_P_status_ENUM_IDX 2 -#define DT_N_S_dietemp_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_dietemp_P_status_ENUM_TOKEN disabled -#define DT_N_S_dietemp_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_dietemp_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_dietemp_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_dietemp_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_dietemp, status, 0) #define DT_N_S_dietemp_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_dietemp, status, 0) #define DT_N_S_dietemp_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_dietemp, status, 0, __VA_ARGS__) @@ -2266,11 +2357,11 @@ #define DT_N_S_dietemp_P_status_LEN 1 #define DT_N_S_dietemp_P_status_EXISTS 1 #define DT_N_S_dietemp_P_compatible {"st,stm32-temp-cal"} +#define DT_N_S_dietemp_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_dietemp_P_compatible_IDX_0 "st,stm32-temp-cal" #define DT_N_S_dietemp_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-temp-cal #define DT_N_S_dietemp_P_compatible_IDX_0_STRING_TOKEN st_stm32_temp_cal #define DT_N_S_dietemp_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_TEMP_CAL -#define DT_N_S_dietemp_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_dietemp_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_dietemp, compatible, 0) #define DT_N_S_dietemp_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_dietemp, compatible, 0) #define DT_N_S_dietemp_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_dietemp, compatible, 0, __VA_ARGS__) @@ -2289,20 +2380,10 @@ #define DT_N_S_dietemp_P_io_channels_EXISTS 1 #define DT_N_S_dietemp_P_zephyr_deferred_init 0 #define DT_N_S_dietemp_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_dietemp_P_ts_cal1_addr 535947296 -#define DT_N_S_dietemp_P_ts_cal1_addr_EXISTS 1 -#define DT_N_S_dietemp_P_ts_cal1_temp 30 -#define DT_N_S_dietemp_P_ts_cal1_temp_EXISTS 1 -#define DT_N_S_dietemp_P_ts_cal_vrefanalog 3300 -#define DT_N_S_dietemp_P_ts_cal_vrefanalog_EXISTS 1 -#define DT_N_S_dietemp_P_ts_cal_resolution 16 -#define DT_N_S_dietemp_P_ts_cal_resolution_ENUM_IDX 2 -#define DT_N_S_dietemp_P_ts_cal_resolution_ENUM_VAL_16_EXISTS 1 -#define DT_N_S_dietemp_P_ts_cal_resolution_EXISTS 1 -#define DT_N_S_dietemp_P_ts_cal2_addr 535947328 -#define DT_N_S_dietemp_P_ts_cal2_addr_EXISTS 1 -#define DT_N_S_dietemp_P_ts_cal2_temp 110 -#define DT_N_S_dietemp_P_ts_cal2_temp_EXISTS 1 +#define DT_N_S_dietemp_P_wakeup_source 0 +#define DT_N_S_dietemp_P_wakeup_source_EXISTS 1 +#define DT_N_S_dietemp_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_dietemp_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /memory@24000000 @@ -2321,12 +2402,15 @@ /* Node's name with unit-address: */ #define DT_N_S_memory_24000000_FULL_NAME "memory@24000000" +#define DT_N_S_memory_24000000_FULL_NAME_UNQUOTED memory@24000000 +#define DT_N_S_memory_24000000_FULL_NAME_TOKEN memory_24000000 +#define DT_N_S_memory_24000000_FULL_NAME_UPPER_TOKEN MEMORY_24000000 /* Node parent (/) identifier: */ #define DT_N_S_memory_24000000_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_memory_24000000_CHILD_IDX 13 +#define DT_N_S_memory_24000000_CHILD_IDX 14 /* Helpers for dealing with node labels: */ #define DT_N_S_memory_24000000_NODELABEL_NUM 1 @@ -2351,7 +2435,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_memory_24000000_REQUIRES_ORDS \ - 0, /* / */ + 0, /* Ordinals for what depends directly on this node: */ #define DT_N_S_memory_24000000_SUPPORTS_ORDS /* nothing */ @@ -2364,8 +2448,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_memory_24000000_REG_NUM 1 #define DT_N_S_memory_24000000_REG_IDX_0_EXISTS 1 -#define DT_N_S_memory_24000000_REG_IDX_0_VAL_ADDRESS 603979776 /* 0x24000000 */ -#define DT_N_S_memory_24000000_REG_IDX_0_VAL_SIZE 524288 /* 0x80000 */ +#define DT_N_S_memory_24000000_REG_IDX_0_VAL_ADDRESS 603979776 +#define DT_N_S_memory_24000000_REG_IDX_0_VAL_SIZE 524288 #define DT_N_S_memory_24000000_RANGES_NUM 0 #define DT_N_S_memory_24000000_FOREACH_RANGE(fn) #define DT_N_S_memory_24000000_IRQ_NUM 0 @@ -2377,30 +2461,30 @@ #define DT_N_S_memory_24000000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_memory_24000000_P_wakeup_source 0 -#define DT_N_S_memory_24000000_P_wakeup_source_EXISTS 1 -#define DT_N_S_memory_24000000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_memory_24000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_memory_24000000_P_reg {603979776, 524288} +#define DT_N_S_memory_24000000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_memory_24000000_P_reg_IDX_0 603979776 +#define DT_N_S_memory_24000000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_memory_24000000_P_reg_IDX_1 524288 +#define DT_N_S_memory_24000000_P_reg_EXISTS 1 #define DT_N_S_memory_24000000_P_compatible {"mmio-sram"} +#define DT_N_S_memory_24000000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_memory_24000000_P_compatible_IDX_0 "mmio-sram" #define DT_N_S_memory_24000000_P_compatible_IDX_0_STRING_UNQUOTED mmio-sram #define DT_N_S_memory_24000000_P_compatible_IDX_0_STRING_TOKEN mmio_sram #define DT_N_S_memory_24000000_P_compatible_IDX_0_STRING_UPPER_TOKEN MMIO_SRAM -#define DT_N_S_memory_24000000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_memory_24000000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_24000000, compatible, 0) #define DT_N_S_memory_24000000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_24000000, compatible, 0) #define DT_N_S_memory_24000000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_memory_24000000, compatible, 0, __VA_ARGS__) #define DT_N_S_memory_24000000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_memory_24000000, compatible, 0, __VA_ARGS__) #define DT_N_S_memory_24000000_P_compatible_LEN 1 #define DT_N_S_memory_24000000_P_compatible_EXISTS 1 -#define DT_N_S_memory_24000000_P_reg {603979776 /* 0x24000000 */, 524288 /* 0x80000 */} -#define DT_N_S_memory_24000000_P_reg_IDX_0 603979776 -#define DT_N_S_memory_24000000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_memory_24000000_P_reg_IDX_1 524288 -#define DT_N_S_memory_24000000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_memory_24000000_P_reg_EXISTS 1 #define DT_N_S_memory_24000000_P_zephyr_deferred_init 0 #define DT_N_S_memory_24000000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_memory_24000000_P_wakeup_source 0 +#define DT_N_S_memory_24000000_P_wakeup_source_EXISTS 1 +#define DT_N_S_memory_24000000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_memory_24000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /memory@30000000 @@ -2419,12 +2503,15 @@ /* Node's name with unit-address: */ #define DT_N_S_memory_30000000_FULL_NAME "memory@30000000" +#define DT_N_S_memory_30000000_FULL_NAME_UNQUOTED memory@30000000 +#define DT_N_S_memory_30000000_FULL_NAME_TOKEN memory_30000000 +#define DT_N_S_memory_30000000_FULL_NAME_UPPER_TOKEN MEMORY_30000000 /* Node parent (/) identifier: */ #define DT_N_S_memory_30000000_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_memory_30000000_CHILD_IDX 14 +#define DT_N_S_memory_30000000_CHILD_IDX 15 /* Helpers for dealing with node labels: */ #define DT_N_S_memory_30000000_NODELABEL_NUM 1 @@ -2449,7 +2536,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_memory_30000000_REQUIRES_ORDS \ - 0, /* / */ + 0, /* Ordinals for what depends directly on this node: */ #define DT_N_S_memory_30000000_SUPPORTS_ORDS /* nothing */ @@ -2463,8 +2550,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_memory_30000000_REG_NUM 1 #define DT_N_S_memory_30000000_REG_IDX_0_EXISTS 1 -#define DT_N_S_memory_30000000_REG_IDX_0_VAL_ADDRESS 805306368 /* 0x30000000 */ -#define DT_N_S_memory_30000000_REG_IDX_0_VAL_SIZE 131072 /* 0x20000 */ +#define DT_N_S_memory_30000000_REG_IDX_0_VAL_ADDRESS 805306368 +#define DT_N_S_memory_30000000_REG_IDX_0_VAL_SIZE 131072 #define DT_N_S_memory_30000000_RANGES_NUM 0 #define DT_N_S_memory_30000000_FOREACH_RANGE(fn) #define DT_N_S_memory_30000000_IRQ_NUM 0 @@ -2481,21 +2568,29 @@ #define DT_N_S_memory_30000000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_memory_30000000_P_wakeup_source 0 -#define DT_N_S_memory_30000000_P_wakeup_source_EXISTS 1 -#define DT_N_S_memory_30000000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_memory_30000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_memory_30000000_P_zephyr_memory_region "SRAM1" +#define DT_N_S_memory_30000000_P_zephyr_memory_region_STRING_UNQUOTED SRAM1 +#define DT_N_S_memory_30000000_P_zephyr_memory_region_STRING_TOKEN SRAM1 +#define DT_N_S_memory_30000000_P_zephyr_memory_region_STRING_UPPER_TOKEN SRAM1 +#define DT_N_S_memory_30000000_P_zephyr_memory_region_IDX_0 "SRAM1" +#define DT_N_S_memory_30000000_P_zephyr_memory_region_IDX_0_EXISTS 1 +#define DT_N_S_memory_30000000_P_zephyr_memory_region_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_30000000, zephyr_memory_region, 0) +#define DT_N_S_memory_30000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_30000000, zephyr_memory_region, 0) +#define DT_N_S_memory_30000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_memory_30000000, zephyr_memory_region, 0, __VA_ARGS__) +#define DT_N_S_memory_30000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_memory_30000000, zephyr_memory_region, 0, __VA_ARGS__) +#define DT_N_S_memory_30000000_P_zephyr_memory_region_LEN 1 +#define DT_N_S_memory_30000000_P_zephyr_memory_region_EXISTS 1 #define DT_N_S_memory_30000000_P_compatible {"zephyr,memory-region", "mmio-sram"} +#define DT_N_S_memory_30000000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_memory_30000000_P_compatible_IDX_0 "zephyr,memory-region" #define DT_N_S_memory_30000000_P_compatible_IDX_0_STRING_UNQUOTED zephyr,memory-region #define DT_N_S_memory_30000000_P_compatible_IDX_0_STRING_TOKEN zephyr_memory_region #define DT_N_S_memory_30000000_P_compatible_IDX_0_STRING_UPPER_TOKEN ZEPHYR_MEMORY_REGION -#define DT_N_S_memory_30000000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_memory_30000000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_memory_30000000_P_compatible_IDX_1 "mmio-sram" #define DT_N_S_memory_30000000_P_compatible_IDX_1_STRING_UNQUOTED mmio-sram #define DT_N_S_memory_30000000_P_compatible_IDX_1_STRING_TOKEN mmio_sram #define DT_N_S_memory_30000000_P_compatible_IDX_1_STRING_UPPER_TOKEN MMIO_SRAM -#define DT_N_S_memory_30000000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_memory_30000000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_30000000, compatible, 0) \ fn(DT_N_S_memory_30000000, compatible, 1) #define DT_N_S_memory_30000000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_30000000, compatible, 0) DT_DEBRACKET_INTERNAL sep \ @@ -2506,26 +2601,18 @@ fn(DT_N_S_memory_30000000, compatible, 1, __VA_ARGS__) #define DT_N_S_memory_30000000_P_compatible_LEN 2 #define DT_N_S_memory_30000000_P_compatible_EXISTS 1 -#define DT_N_S_memory_30000000_P_reg {805306368 /* 0x30000000 */, 131072 /* 0x20000 */} -#define DT_N_S_memory_30000000_P_reg_IDX_0 805306368 +#define DT_N_S_memory_30000000_P_reg {805306368, 131072} #define DT_N_S_memory_30000000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_memory_30000000_P_reg_IDX_1 131072 +#define DT_N_S_memory_30000000_P_reg_IDX_0 805306368 #define DT_N_S_memory_30000000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_memory_30000000_P_reg_IDX_1 131072 #define DT_N_S_memory_30000000_P_reg_EXISTS 1 #define DT_N_S_memory_30000000_P_zephyr_deferred_init 0 #define DT_N_S_memory_30000000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_memory_30000000_P_zephyr_memory_region "SRAM1" -#define DT_N_S_memory_30000000_P_zephyr_memory_region_STRING_UNQUOTED SRAM1 -#define DT_N_S_memory_30000000_P_zephyr_memory_region_STRING_TOKEN SRAM1 -#define DT_N_S_memory_30000000_P_zephyr_memory_region_STRING_UPPER_TOKEN SRAM1 -#define DT_N_S_memory_30000000_P_zephyr_memory_region_IDX_0 "SRAM1" -#define DT_N_S_memory_30000000_P_zephyr_memory_region_IDX_0_EXISTS 1 -#define DT_N_S_memory_30000000_P_zephyr_memory_region_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_30000000, zephyr_memory_region, 0) -#define DT_N_S_memory_30000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_30000000, zephyr_memory_region, 0) -#define DT_N_S_memory_30000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_memory_30000000, zephyr_memory_region, 0, __VA_ARGS__) -#define DT_N_S_memory_30000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_memory_30000000, zephyr_memory_region, 0, __VA_ARGS__) -#define DT_N_S_memory_30000000_P_zephyr_memory_region_LEN 1 -#define DT_N_S_memory_30000000_P_zephyr_memory_region_EXISTS 1 +#define DT_N_S_memory_30000000_P_wakeup_source 0 +#define DT_N_S_memory_30000000_P_wakeup_source_EXISTS 1 +#define DT_N_S_memory_30000000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_memory_30000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /memory@30020000 @@ -2544,12 +2631,15 @@ /* Node's name with unit-address: */ #define DT_N_S_memory_30020000_FULL_NAME "memory@30020000" +#define DT_N_S_memory_30020000_FULL_NAME_UNQUOTED memory@30020000 +#define DT_N_S_memory_30020000_FULL_NAME_TOKEN memory_30020000 +#define DT_N_S_memory_30020000_FULL_NAME_UPPER_TOKEN MEMORY_30020000 /* Node parent (/) identifier: */ #define DT_N_S_memory_30020000_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_memory_30020000_CHILD_IDX 15 +#define DT_N_S_memory_30020000_CHILD_IDX 16 /* Helpers for dealing with node labels: */ #define DT_N_S_memory_30020000_NODELABEL_NUM 1 @@ -2574,7 +2664,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_memory_30020000_REQUIRES_ORDS \ - 0, /* / */ + 0, /* Ordinals for what depends directly on this node: */ #define DT_N_S_memory_30020000_SUPPORTS_ORDS /* nothing */ @@ -2588,8 +2678,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_memory_30020000_REG_NUM 1 #define DT_N_S_memory_30020000_REG_IDX_0_EXISTS 1 -#define DT_N_S_memory_30020000_REG_IDX_0_VAL_ADDRESS 805437440 /* 0x30020000 */ -#define DT_N_S_memory_30020000_REG_IDX_0_VAL_SIZE 131072 /* 0x20000 */ +#define DT_N_S_memory_30020000_REG_IDX_0_VAL_ADDRESS 805437440 +#define DT_N_S_memory_30020000_REG_IDX_0_VAL_SIZE 131072 #define DT_N_S_memory_30020000_RANGES_NUM 0 #define DT_N_S_memory_30020000_FOREACH_RANGE(fn) #define DT_N_S_memory_30020000_IRQ_NUM 0 @@ -2606,21 +2696,29 @@ #define DT_N_S_memory_30020000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_memory_30020000_P_wakeup_source 0 -#define DT_N_S_memory_30020000_P_wakeup_source_EXISTS 1 -#define DT_N_S_memory_30020000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_memory_30020000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_memory_30020000_P_zephyr_memory_region "SRAM2" +#define DT_N_S_memory_30020000_P_zephyr_memory_region_STRING_UNQUOTED SRAM2 +#define DT_N_S_memory_30020000_P_zephyr_memory_region_STRING_TOKEN SRAM2 +#define DT_N_S_memory_30020000_P_zephyr_memory_region_STRING_UPPER_TOKEN SRAM2 +#define DT_N_S_memory_30020000_P_zephyr_memory_region_IDX_0 "SRAM2" +#define DT_N_S_memory_30020000_P_zephyr_memory_region_IDX_0_EXISTS 1 +#define DT_N_S_memory_30020000_P_zephyr_memory_region_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_30020000, zephyr_memory_region, 0) +#define DT_N_S_memory_30020000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_30020000, zephyr_memory_region, 0) +#define DT_N_S_memory_30020000_P_zephyr_memory_region_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_memory_30020000, zephyr_memory_region, 0, __VA_ARGS__) +#define DT_N_S_memory_30020000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_memory_30020000, zephyr_memory_region, 0, __VA_ARGS__) +#define DT_N_S_memory_30020000_P_zephyr_memory_region_LEN 1 +#define DT_N_S_memory_30020000_P_zephyr_memory_region_EXISTS 1 #define DT_N_S_memory_30020000_P_compatible {"zephyr,memory-region", "mmio-sram"} +#define DT_N_S_memory_30020000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_memory_30020000_P_compatible_IDX_0 "zephyr,memory-region" #define DT_N_S_memory_30020000_P_compatible_IDX_0_STRING_UNQUOTED zephyr,memory-region #define DT_N_S_memory_30020000_P_compatible_IDX_0_STRING_TOKEN zephyr_memory_region #define DT_N_S_memory_30020000_P_compatible_IDX_0_STRING_UPPER_TOKEN ZEPHYR_MEMORY_REGION -#define DT_N_S_memory_30020000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_memory_30020000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_memory_30020000_P_compatible_IDX_1 "mmio-sram" #define DT_N_S_memory_30020000_P_compatible_IDX_1_STRING_UNQUOTED mmio-sram #define DT_N_S_memory_30020000_P_compatible_IDX_1_STRING_TOKEN mmio_sram #define DT_N_S_memory_30020000_P_compatible_IDX_1_STRING_UPPER_TOKEN MMIO_SRAM -#define DT_N_S_memory_30020000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_memory_30020000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_30020000, compatible, 0) \ fn(DT_N_S_memory_30020000, compatible, 1) #define DT_N_S_memory_30020000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_30020000, compatible, 0) DT_DEBRACKET_INTERNAL sep \ @@ -2631,26 +2729,18 @@ fn(DT_N_S_memory_30020000, compatible, 1, __VA_ARGS__) #define DT_N_S_memory_30020000_P_compatible_LEN 2 #define DT_N_S_memory_30020000_P_compatible_EXISTS 1 -#define DT_N_S_memory_30020000_P_reg {805437440 /* 0x30020000 */, 131072 /* 0x20000 */} -#define DT_N_S_memory_30020000_P_reg_IDX_0 805437440 +#define DT_N_S_memory_30020000_P_reg {805437440, 131072} #define DT_N_S_memory_30020000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_memory_30020000_P_reg_IDX_1 131072 +#define DT_N_S_memory_30020000_P_reg_IDX_0 805437440 #define DT_N_S_memory_30020000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_memory_30020000_P_reg_IDX_1 131072 #define DT_N_S_memory_30020000_P_reg_EXISTS 1 #define DT_N_S_memory_30020000_P_zephyr_deferred_init 0 #define DT_N_S_memory_30020000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_memory_30020000_P_zephyr_memory_region "SRAM2" -#define DT_N_S_memory_30020000_P_zephyr_memory_region_STRING_UNQUOTED SRAM2 -#define DT_N_S_memory_30020000_P_zephyr_memory_region_STRING_TOKEN SRAM2 -#define DT_N_S_memory_30020000_P_zephyr_memory_region_STRING_UPPER_TOKEN SRAM2 -#define DT_N_S_memory_30020000_P_zephyr_memory_region_IDX_0 "SRAM2" -#define DT_N_S_memory_30020000_P_zephyr_memory_region_IDX_0_EXISTS 1 -#define DT_N_S_memory_30020000_P_zephyr_memory_region_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_30020000, zephyr_memory_region, 0) -#define DT_N_S_memory_30020000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_30020000, zephyr_memory_region, 0) -#define DT_N_S_memory_30020000_P_zephyr_memory_region_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_memory_30020000, zephyr_memory_region, 0, __VA_ARGS__) -#define DT_N_S_memory_30020000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_memory_30020000, zephyr_memory_region, 0, __VA_ARGS__) -#define DT_N_S_memory_30020000_P_zephyr_memory_region_LEN 1 -#define DT_N_S_memory_30020000_P_zephyr_memory_region_EXISTS 1 +#define DT_N_S_memory_30020000_P_wakeup_source 0 +#define DT_N_S_memory_30020000_P_wakeup_source_EXISTS 1 +#define DT_N_S_memory_30020000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_memory_30020000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /memory@30040000 @@ -2669,12 +2759,15 @@ /* Node's name with unit-address: */ #define DT_N_S_memory_30040000_FULL_NAME "memory@30040000" +#define DT_N_S_memory_30040000_FULL_NAME_UNQUOTED memory@30040000 +#define DT_N_S_memory_30040000_FULL_NAME_TOKEN memory_30040000 +#define DT_N_S_memory_30040000_FULL_NAME_UPPER_TOKEN MEMORY_30040000 /* Node parent (/) identifier: */ #define DT_N_S_memory_30040000_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_memory_30040000_CHILD_IDX 16 +#define DT_N_S_memory_30040000_CHILD_IDX 17 /* Helpers for dealing with node labels: */ #define DT_N_S_memory_30040000_NODELABEL_NUM 1 @@ -2699,7 +2792,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_memory_30040000_REQUIRES_ORDS \ - 0, /* / */ + 0, /* Ordinals for what depends directly on this node: */ #define DT_N_S_memory_30040000_SUPPORTS_ORDS /* nothing */ @@ -2713,8 +2806,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_memory_30040000_REG_NUM 1 #define DT_N_S_memory_30040000_REG_IDX_0_EXISTS 1 -#define DT_N_S_memory_30040000_REG_IDX_0_VAL_ADDRESS 805568512 /* 0x30040000 */ -#define DT_N_S_memory_30040000_REG_IDX_0_VAL_SIZE 32768 /* 0x8000 */ +#define DT_N_S_memory_30040000_REG_IDX_0_VAL_ADDRESS 805568512 +#define DT_N_S_memory_30040000_REG_IDX_0_VAL_SIZE 32768 #define DT_N_S_memory_30040000_RANGES_NUM 0 #define DT_N_S_memory_30040000_FOREACH_RANGE(fn) #define DT_N_S_memory_30040000_IRQ_NUM 0 @@ -2731,21 +2824,29 @@ #define DT_N_S_memory_30040000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_memory_30040000_P_wakeup_source 0 -#define DT_N_S_memory_30040000_P_wakeup_source_EXISTS 1 -#define DT_N_S_memory_30040000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_memory_30040000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_memory_30040000_P_zephyr_memory_region "SRAM3" +#define DT_N_S_memory_30040000_P_zephyr_memory_region_STRING_UNQUOTED SRAM3 +#define DT_N_S_memory_30040000_P_zephyr_memory_region_STRING_TOKEN SRAM3 +#define DT_N_S_memory_30040000_P_zephyr_memory_region_STRING_UPPER_TOKEN SRAM3 +#define DT_N_S_memory_30040000_P_zephyr_memory_region_IDX_0 "SRAM3" +#define DT_N_S_memory_30040000_P_zephyr_memory_region_IDX_0_EXISTS 1 +#define DT_N_S_memory_30040000_P_zephyr_memory_region_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_30040000, zephyr_memory_region, 0) +#define DT_N_S_memory_30040000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_30040000, zephyr_memory_region, 0) +#define DT_N_S_memory_30040000_P_zephyr_memory_region_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_memory_30040000, zephyr_memory_region, 0, __VA_ARGS__) +#define DT_N_S_memory_30040000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_memory_30040000, zephyr_memory_region, 0, __VA_ARGS__) +#define DT_N_S_memory_30040000_P_zephyr_memory_region_LEN 1 +#define DT_N_S_memory_30040000_P_zephyr_memory_region_EXISTS 1 #define DT_N_S_memory_30040000_P_compatible {"zephyr,memory-region", "mmio-sram"} +#define DT_N_S_memory_30040000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_memory_30040000_P_compatible_IDX_0 "zephyr,memory-region" #define DT_N_S_memory_30040000_P_compatible_IDX_0_STRING_UNQUOTED zephyr,memory-region #define DT_N_S_memory_30040000_P_compatible_IDX_0_STRING_TOKEN zephyr_memory_region #define DT_N_S_memory_30040000_P_compatible_IDX_0_STRING_UPPER_TOKEN ZEPHYR_MEMORY_REGION -#define DT_N_S_memory_30040000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_memory_30040000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_memory_30040000_P_compatible_IDX_1 "mmio-sram" #define DT_N_S_memory_30040000_P_compatible_IDX_1_STRING_UNQUOTED mmio-sram #define DT_N_S_memory_30040000_P_compatible_IDX_1_STRING_TOKEN mmio_sram #define DT_N_S_memory_30040000_P_compatible_IDX_1_STRING_UPPER_TOKEN MMIO_SRAM -#define DT_N_S_memory_30040000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_memory_30040000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_30040000, compatible, 0) \ fn(DT_N_S_memory_30040000, compatible, 1) #define DT_N_S_memory_30040000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_30040000, compatible, 0) DT_DEBRACKET_INTERNAL sep \ @@ -2756,26 +2857,18 @@ fn(DT_N_S_memory_30040000, compatible, 1, __VA_ARGS__) #define DT_N_S_memory_30040000_P_compatible_LEN 2 #define DT_N_S_memory_30040000_P_compatible_EXISTS 1 -#define DT_N_S_memory_30040000_P_reg {805568512 /* 0x30040000 */, 32768 /* 0x8000 */} -#define DT_N_S_memory_30040000_P_reg_IDX_0 805568512 +#define DT_N_S_memory_30040000_P_reg {805568512, 32768} #define DT_N_S_memory_30040000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_memory_30040000_P_reg_IDX_1 32768 +#define DT_N_S_memory_30040000_P_reg_IDX_0 805568512 #define DT_N_S_memory_30040000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_memory_30040000_P_reg_IDX_1 32768 #define DT_N_S_memory_30040000_P_reg_EXISTS 1 #define DT_N_S_memory_30040000_P_zephyr_deferred_init 0 #define DT_N_S_memory_30040000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_memory_30040000_P_zephyr_memory_region "SRAM3" -#define DT_N_S_memory_30040000_P_zephyr_memory_region_STRING_UNQUOTED SRAM3 -#define DT_N_S_memory_30040000_P_zephyr_memory_region_STRING_TOKEN SRAM3 -#define DT_N_S_memory_30040000_P_zephyr_memory_region_STRING_UPPER_TOKEN SRAM3 -#define DT_N_S_memory_30040000_P_zephyr_memory_region_IDX_0 "SRAM3" -#define DT_N_S_memory_30040000_P_zephyr_memory_region_IDX_0_EXISTS 1 -#define DT_N_S_memory_30040000_P_zephyr_memory_region_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_30040000, zephyr_memory_region, 0) -#define DT_N_S_memory_30040000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_30040000, zephyr_memory_region, 0) -#define DT_N_S_memory_30040000_P_zephyr_memory_region_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_memory_30040000, zephyr_memory_region, 0, __VA_ARGS__) -#define DT_N_S_memory_30040000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_memory_30040000, zephyr_memory_region, 0, __VA_ARGS__) -#define DT_N_S_memory_30040000_P_zephyr_memory_region_LEN 1 -#define DT_N_S_memory_30040000_P_zephyr_memory_region_EXISTS 1 +#define DT_N_S_memory_30040000_P_wakeup_source 0 +#define DT_N_S_memory_30040000_P_wakeup_source_EXISTS 1 +#define DT_N_S_memory_30040000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_memory_30040000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /memory@38000000 @@ -2794,12 +2887,15 @@ /* Node's name with unit-address: */ #define DT_N_S_memory_38000000_FULL_NAME "memory@38000000" +#define DT_N_S_memory_38000000_FULL_NAME_UNQUOTED memory@38000000 +#define DT_N_S_memory_38000000_FULL_NAME_TOKEN memory_38000000 +#define DT_N_S_memory_38000000_FULL_NAME_UPPER_TOKEN MEMORY_38000000 /* Node parent (/) identifier: */ #define DT_N_S_memory_38000000_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_memory_38000000_CHILD_IDX 17 +#define DT_N_S_memory_38000000_CHILD_IDX 18 /* Helpers for dealing with node labels: */ #define DT_N_S_memory_38000000_NODELABEL_NUM 1 @@ -2824,7 +2920,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_memory_38000000_REQUIRES_ORDS \ - 0, /* / */ + 0, /* Ordinals for what depends directly on this node: */ #define DT_N_S_memory_38000000_SUPPORTS_ORDS /* nothing */ @@ -2838,8 +2934,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_memory_38000000_REG_NUM 1 #define DT_N_S_memory_38000000_REG_IDX_0_EXISTS 1 -#define DT_N_S_memory_38000000_REG_IDX_0_VAL_ADDRESS 939524096 /* 0x38000000 */ -#define DT_N_S_memory_38000000_REG_IDX_0_VAL_SIZE 65536 /* 0x10000 */ +#define DT_N_S_memory_38000000_REG_IDX_0_VAL_ADDRESS 939524096 +#define DT_N_S_memory_38000000_REG_IDX_0_VAL_SIZE 65536 #define DT_N_S_memory_38000000_RANGES_NUM 0 #define DT_N_S_memory_38000000_FOREACH_RANGE(fn) #define DT_N_S_memory_38000000_IRQ_NUM 0 @@ -2856,21 +2952,29 @@ #define DT_N_S_memory_38000000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_memory_38000000_P_wakeup_source 0 -#define DT_N_S_memory_38000000_P_wakeup_source_EXISTS 1 -#define DT_N_S_memory_38000000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_memory_38000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_memory_38000000_P_zephyr_memory_region "SRAM4" +#define DT_N_S_memory_38000000_P_zephyr_memory_region_STRING_UNQUOTED SRAM4 +#define DT_N_S_memory_38000000_P_zephyr_memory_region_STRING_TOKEN SRAM4 +#define DT_N_S_memory_38000000_P_zephyr_memory_region_STRING_UPPER_TOKEN SRAM4 +#define DT_N_S_memory_38000000_P_zephyr_memory_region_IDX_0 "SRAM4" +#define DT_N_S_memory_38000000_P_zephyr_memory_region_IDX_0_EXISTS 1 +#define DT_N_S_memory_38000000_P_zephyr_memory_region_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_38000000, zephyr_memory_region, 0) +#define DT_N_S_memory_38000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_38000000, zephyr_memory_region, 0) +#define DT_N_S_memory_38000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_memory_38000000, zephyr_memory_region, 0, __VA_ARGS__) +#define DT_N_S_memory_38000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_memory_38000000, zephyr_memory_region, 0, __VA_ARGS__) +#define DT_N_S_memory_38000000_P_zephyr_memory_region_LEN 1 +#define DT_N_S_memory_38000000_P_zephyr_memory_region_EXISTS 1 #define DT_N_S_memory_38000000_P_compatible {"zephyr,memory-region", "mmio-sram"} +#define DT_N_S_memory_38000000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_memory_38000000_P_compatible_IDX_0 "zephyr,memory-region" #define DT_N_S_memory_38000000_P_compatible_IDX_0_STRING_UNQUOTED zephyr,memory-region #define DT_N_S_memory_38000000_P_compatible_IDX_0_STRING_TOKEN zephyr_memory_region #define DT_N_S_memory_38000000_P_compatible_IDX_0_STRING_UPPER_TOKEN ZEPHYR_MEMORY_REGION -#define DT_N_S_memory_38000000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_memory_38000000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_memory_38000000_P_compatible_IDX_1 "mmio-sram" #define DT_N_S_memory_38000000_P_compatible_IDX_1_STRING_UNQUOTED mmio-sram #define DT_N_S_memory_38000000_P_compatible_IDX_1_STRING_TOKEN mmio_sram #define DT_N_S_memory_38000000_P_compatible_IDX_1_STRING_UPPER_TOKEN MMIO_SRAM -#define DT_N_S_memory_38000000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_memory_38000000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_38000000, compatible, 0) \ fn(DT_N_S_memory_38000000, compatible, 1) #define DT_N_S_memory_38000000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_38000000, compatible, 0) DT_DEBRACKET_INTERNAL sep \ @@ -2881,26 +2985,18 @@ fn(DT_N_S_memory_38000000, compatible, 1, __VA_ARGS__) #define DT_N_S_memory_38000000_P_compatible_LEN 2 #define DT_N_S_memory_38000000_P_compatible_EXISTS 1 -#define DT_N_S_memory_38000000_P_reg {939524096 /* 0x38000000 */, 65536 /* 0x10000 */} -#define DT_N_S_memory_38000000_P_reg_IDX_0 939524096 +#define DT_N_S_memory_38000000_P_reg {939524096, 65536} #define DT_N_S_memory_38000000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_memory_38000000_P_reg_IDX_1 65536 +#define DT_N_S_memory_38000000_P_reg_IDX_0 939524096 #define DT_N_S_memory_38000000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_memory_38000000_P_reg_IDX_1 65536 #define DT_N_S_memory_38000000_P_reg_EXISTS 1 #define DT_N_S_memory_38000000_P_zephyr_deferred_init 0 #define DT_N_S_memory_38000000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_memory_38000000_P_zephyr_memory_region "SRAM4" -#define DT_N_S_memory_38000000_P_zephyr_memory_region_STRING_UNQUOTED SRAM4 -#define DT_N_S_memory_38000000_P_zephyr_memory_region_STRING_TOKEN SRAM4 -#define DT_N_S_memory_38000000_P_zephyr_memory_region_STRING_UPPER_TOKEN SRAM4 -#define DT_N_S_memory_38000000_P_zephyr_memory_region_IDX_0 "SRAM4" -#define DT_N_S_memory_38000000_P_zephyr_memory_region_IDX_0_EXISTS 1 -#define DT_N_S_memory_38000000_P_zephyr_memory_region_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_38000000, zephyr_memory_region, 0) -#define DT_N_S_memory_38000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_38000000, zephyr_memory_region, 0) -#define DT_N_S_memory_38000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_memory_38000000, zephyr_memory_region, 0, __VA_ARGS__) -#define DT_N_S_memory_38000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_memory_38000000, zephyr_memory_region, 0, __VA_ARGS__) -#define DT_N_S_memory_38000000_P_zephyr_memory_region_LEN 1 -#define DT_N_S_memory_38000000_P_zephyr_memory_region_EXISTS 1 +#define DT_N_S_memory_38000000_P_wakeup_source 0 +#define DT_N_S_memory_38000000_P_wakeup_source_EXISTS 1 +#define DT_N_S_memory_38000000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_memory_38000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /memory@90000000 @@ -2919,6 +3015,9 @@ /* Node's name with unit-address: */ #define DT_N_S_memory_90000000_FULL_NAME "memory@90000000" +#define DT_N_S_memory_90000000_FULL_NAME_UNQUOTED memory@90000000 +#define DT_N_S_memory_90000000_FULL_NAME_TOKEN memory_90000000 +#define DT_N_S_memory_90000000_FULL_NAME_UPPER_TOKEN MEMORY_90000000 /* Node parent (/) identifier: */ #define DT_N_S_memory_90000000_PARENT DT_N @@ -2949,7 +3048,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_memory_90000000_REQUIRES_ORDS \ - 0, /* / */ + 0, /* Ordinals for what depends directly on this node: */ #define DT_N_S_memory_90000000_SUPPORTS_ORDS /* nothing */ @@ -2962,8 +3061,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_memory_90000000_REG_NUM 1 #define DT_N_S_memory_90000000_REG_IDX_0_EXISTS 1 -#define DT_N_S_memory_90000000_REG_IDX_0_VAL_ADDRESS 2415919104 /* 0x90000000 */ -#define DT_N_S_memory_90000000_REG_IDX_0_VAL_SIZE 268435456 /* 0x10000000 */ +#define DT_N_S_memory_90000000_REG_IDX_0_VAL_ADDRESS 2415919104 +#define DT_N_S_memory_90000000_REG_IDX_0_VAL_SIZE 268435456 #define DT_N_S_memory_90000000_RANGES_NUM 0 #define DT_N_S_memory_90000000_FOREACH_RANGE(fn) #define DT_N_S_memory_90000000_IRQ_NUM 0 @@ -2979,42 +3078,42 @@ #define DT_N_S_memory_90000000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_memory_90000000_P_wakeup_source 0 -#define DT_N_S_memory_90000000_P_wakeup_source_EXISTS 1 -#define DT_N_S_memory_90000000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_memory_90000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_memory_90000000_P_zephyr_memory_region "EXTMEM" +#define DT_N_S_memory_90000000_P_zephyr_memory_region_STRING_UNQUOTED EXTMEM +#define DT_N_S_memory_90000000_P_zephyr_memory_region_STRING_TOKEN EXTMEM +#define DT_N_S_memory_90000000_P_zephyr_memory_region_STRING_UPPER_TOKEN EXTMEM +#define DT_N_S_memory_90000000_P_zephyr_memory_region_IDX_0 "EXTMEM" +#define DT_N_S_memory_90000000_P_zephyr_memory_region_IDX_0_EXISTS 1 +#define DT_N_S_memory_90000000_P_zephyr_memory_region_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_90000000, zephyr_memory_region, 0) +#define DT_N_S_memory_90000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_90000000, zephyr_memory_region, 0) +#define DT_N_S_memory_90000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_memory_90000000, zephyr_memory_region, 0, __VA_ARGS__) +#define DT_N_S_memory_90000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_memory_90000000, zephyr_memory_region, 0, __VA_ARGS__) +#define DT_N_S_memory_90000000_P_zephyr_memory_region_LEN 1 +#define DT_N_S_memory_90000000_P_zephyr_memory_region_EXISTS 1 #define DT_N_S_memory_90000000_P_compatible {"zephyr,memory-region"} +#define DT_N_S_memory_90000000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_memory_90000000_P_compatible_IDX_0 "zephyr,memory-region" #define DT_N_S_memory_90000000_P_compatible_IDX_0_STRING_UNQUOTED zephyr,memory-region #define DT_N_S_memory_90000000_P_compatible_IDX_0_STRING_TOKEN zephyr_memory_region #define DT_N_S_memory_90000000_P_compatible_IDX_0_STRING_UPPER_TOKEN ZEPHYR_MEMORY_REGION -#define DT_N_S_memory_90000000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_memory_90000000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_90000000, compatible, 0) #define DT_N_S_memory_90000000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_90000000, compatible, 0) #define DT_N_S_memory_90000000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_memory_90000000, compatible, 0, __VA_ARGS__) #define DT_N_S_memory_90000000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_memory_90000000, compatible, 0, __VA_ARGS__) #define DT_N_S_memory_90000000_P_compatible_LEN 1 #define DT_N_S_memory_90000000_P_compatible_EXISTS 1 -#define DT_N_S_memory_90000000_P_reg {2415919104 /* 0x90000000 */, 268435456 /* 0x10000000 */} -#define DT_N_S_memory_90000000_P_reg_IDX_0 2415919104 +#define DT_N_S_memory_90000000_P_reg {2415919104, 268435456} #define DT_N_S_memory_90000000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_memory_90000000_P_reg_IDX_1 268435456 +#define DT_N_S_memory_90000000_P_reg_IDX_0 2415919104 #define DT_N_S_memory_90000000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_memory_90000000_P_reg_IDX_1 268435456 #define DT_N_S_memory_90000000_P_reg_EXISTS 1 #define DT_N_S_memory_90000000_P_zephyr_deferred_init 0 #define DT_N_S_memory_90000000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_memory_90000000_P_zephyr_memory_region "EXTMEM" -#define DT_N_S_memory_90000000_P_zephyr_memory_region_STRING_UNQUOTED EXTMEM -#define DT_N_S_memory_90000000_P_zephyr_memory_region_STRING_TOKEN EXTMEM -#define DT_N_S_memory_90000000_P_zephyr_memory_region_STRING_UPPER_TOKEN EXTMEM -#define DT_N_S_memory_90000000_P_zephyr_memory_region_IDX_0 "EXTMEM" -#define DT_N_S_memory_90000000_P_zephyr_memory_region_IDX_0_EXISTS 1 -#define DT_N_S_memory_90000000_P_zephyr_memory_region_FOREACH_PROP_ELEM(fn) fn(DT_N_S_memory_90000000, zephyr_memory_region, 0) -#define DT_N_S_memory_90000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_memory_90000000, zephyr_memory_region, 0) -#define DT_N_S_memory_90000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_memory_90000000, zephyr_memory_region, 0, __VA_ARGS__) -#define DT_N_S_memory_90000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_memory_90000000, zephyr_memory_region, 0, __VA_ARGS__) -#define DT_N_S_memory_90000000_P_zephyr_memory_region_LEN 1 -#define DT_N_S_memory_90000000_P_zephyr_memory_region_EXISTS 1 +#define DT_N_S_memory_90000000_P_wakeup_source 0 +#define DT_N_S_memory_90000000_P_wakeup_source_EXISTS 1 +#define DT_N_S_memory_90000000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_memory_90000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_memory_90000000_P_zephyr_memory_attr 33554432 #define DT_N_S_memory_90000000_P_zephyr_memory_attr_EXISTS 1 @@ -3035,12 +3134,15 @@ /* Node's name with unit-address: */ #define DT_N_S_sdram_c0000000_FULL_NAME "sdram@c0000000" +#define DT_N_S_sdram_c0000000_FULL_NAME_UNQUOTED sdram@c0000000 +#define DT_N_S_sdram_c0000000_FULL_NAME_TOKEN sdram_c0000000 +#define DT_N_S_sdram_c0000000_FULL_NAME_UPPER_TOKEN SDRAM_C0000000 /* Node parent (/) identifier: */ #define DT_N_S_sdram_c0000000_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_sdram_c0000000_CHILD_IDX 22 +#define DT_N_S_sdram_c0000000_CHILD_IDX 23 /* Helpers for dealing with node labels: */ #define DT_N_S_sdram_c0000000_NODELABEL_NUM 1 @@ -3065,7 +3167,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_sdram_c0000000_REQUIRES_ORDS \ - 0, /* / */ + 0, /* Ordinals for what depends directly on this node: */ #define DT_N_S_sdram_c0000000_SUPPORTS_ORDS /* nothing */ @@ -3079,8 +3181,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_sdram_c0000000_REG_NUM 1 #define DT_N_S_sdram_c0000000_REG_IDX_0_EXISTS 1 -#define DT_N_S_sdram_c0000000_REG_IDX_0_VAL_ADDRESS 3221225472 /* 0xc0000000 */ -#define DT_N_S_sdram_c0000000_REG_IDX_0_VAL_SIZE 8388608 /* 0x800000 */ +#define DT_N_S_sdram_c0000000_REG_IDX_0_VAL_ADDRESS 3221225472 +#define DT_N_S_sdram_c0000000_REG_IDX_0_VAL_SIZE 8388608 #define DT_N_S_sdram_c0000000_RANGES_NUM 0 #define DT_N_S_sdram_c0000000_FOREACH_RANGE(fn) #define DT_N_S_sdram_c0000000_IRQ_NUM 0 @@ -3097,21 +3199,29 @@ #define DT_N_S_sdram_c0000000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_sdram_c0000000_P_wakeup_source 0 -#define DT_N_S_sdram_c0000000_P_wakeup_source_EXISTS 1 -#define DT_N_S_sdram_c0000000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_sdram_c0000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_sdram_c0000000_P_zephyr_memory_region "SDRAM1" +#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_STRING_UNQUOTED SDRAM1 +#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_STRING_TOKEN SDRAM1 +#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_STRING_UPPER_TOKEN SDRAM1 +#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_IDX_0 "SDRAM1" +#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_IDX_0_EXISTS 1 +#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_FOREACH_PROP_ELEM(fn) fn(DT_N_S_sdram_c0000000, zephyr_memory_region, 0) +#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_sdram_c0000000, zephyr_memory_region, 0) +#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_sdram_c0000000, zephyr_memory_region, 0, __VA_ARGS__) +#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_sdram_c0000000, zephyr_memory_region, 0, __VA_ARGS__) +#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_LEN 1 +#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_EXISTS 1 #define DT_N_S_sdram_c0000000_P_compatible {"zephyr,memory-region", "mmio-sram"} +#define DT_N_S_sdram_c0000000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_sdram_c0000000_P_compatible_IDX_0 "zephyr,memory-region" #define DT_N_S_sdram_c0000000_P_compatible_IDX_0_STRING_UNQUOTED zephyr,memory-region #define DT_N_S_sdram_c0000000_P_compatible_IDX_0_STRING_TOKEN zephyr_memory_region #define DT_N_S_sdram_c0000000_P_compatible_IDX_0_STRING_UPPER_TOKEN ZEPHYR_MEMORY_REGION -#define DT_N_S_sdram_c0000000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_sdram_c0000000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_sdram_c0000000_P_compatible_IDX_1 "mmio-sram" #define DT_N_S_sdram_c0000000_P_compatible_IDX_1_STRING_UNQUOTED mmio-sram #define DT_N_S_sdram_c0000000_P_compatible_IDX_1_STRING_TOKEN mmio_sram #define DT_N_S_sdram_c0000000_P_compatible_IDX_1_STRING_UPPER_TOKEN MMIO_SRAM -#define DT_N_S_sdram_c0000000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_sdram_c0000000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_sdram_c0000000, compatible, 0) \ fn(DT_N_S_sdram_c0000000, compatible, 1) #define DT_N_S_sdram_c0000000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_sdram_c0000000, compatible, 0) DT_DEBRACKET_INTERNAL sep \ @@ -3122,26 +3232,18 @@ fn(DT_N_S_sdram_c0000000, compatible, 1, __VA_ARGS__) #define DT_N_S_sdram_c0000000_P_compatible_LEN 2 #define DT_N_S_sdram_c0000000_P_compatible_EXISTS 1 -#define DT_N_S_sdram_c0000000_P_reg {3221225472 /* 0xc0000000 */, 8388608 /* 0x800000 */} -#define DT_N_S_sdram_c0000000_P_reg_IDX_0 3221225472 +#define DT_N_S_sdram_c0000000_P_reg {3221225472, 8388608} #define DT_N_S_sdram_c0000000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_sdram_c0000000_P_reg_IDX_1 8388608 +#define DT_N_S_sdram_c0000000_P_reg_IDX_0 3221225472 #define DT_N_S_sdram_c0000000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_sdram_c0000000_P_reg_IDX_1 8388608 #define DT_N_S_sdram_c0000000_P_reg_EXISTS 1 #define DT_N_S_sdram_c0000000_P_zephyr_deferred_init 0 #define DT_N_S_sdram_c0000000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_sdram_c0000000_P_zephyr_memory_region "SDRAM1" -#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_STRING_UNQUOTED SDRAM1 -#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_STRING_TOKEN SDRAM1 -#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_STRING_UPPER_TOKEN SDRAM1 -#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_IDX_0 "SDRAM1" -#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_IDX_0_EXISTS 1 -#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_FOREACH_PROP_ELEM(fn) fn(DT_N_S_sdram_c0000000, zephyr_memory_region, 0) -#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_sdram_c0000000, zephyr_memory_region, 0) -#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_sdram_c0000000, zephyr_memory_region, 0, __VA_ARGS__) -#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_sdram_c0000000, zephyr_memory_region, 0, __VA_ARGS__) -#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_LEN 1 -#define DT_N_S_sdram_c0000000_P_zephyr_memory_region_EXISTS 1 +#define DT_N_S_sdram_c0000000_P_wakeup_source 0 +#define DT_N_S_sdram_c0000000_P_wakeup_source_EXISTS 1 +#define DT_N_S_sdram_c0000000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_sdram_c0000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_sdram_c0000000_P_zephyr_memory_attr 1048576 #define DT_N_S_sdram_c0000000_P_zephyr_memory_attr_EXISTS 1 @@ -3159,6 +3261,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_FULL_NAME "i2c1_scl_pb8" +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_FULL_NAME_UNQUOTED i2c1_scl_pb8 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_FULL_NAME_TOKEN i2c1_scl_pb8 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_FULL_NAME_UPPER_TOKEN I2C1_SCL_PB8 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -3189,11 +3294,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_SUPPORTS_ORDS \ - 24, /* /soc/i2c@40005400 */ + 24, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_EXISTS 1 @@ -3211,20 +3316,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_drive_open_drain 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_pinmux 772 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate "low-speed" @@ -3233,16 +3324,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_drive_open_drain 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/i2c1_sda_pb9 @@ -3258,6 +3361,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_FULL_NAME "i2c1_sda_pb9" +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_FULL_NAME_UNQUOTED i2c1_sda_pb9 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_FULL_NAME_TOKEN i2c1_sda_pb9 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_FULL_NAME_UPPER_TOKEN I2C1_SDA_PB9 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -3288,11 +3394,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_SUPPORTS_ORDS \ - 24, /* /soc/i2c@40005400 */ + 24, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_EXISTS 1 @@ -3310,20 +3416,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_drive_open_drain 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_pinmux 804 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate "low-speed" @@ -3332,16 +3424,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_drive_open_drain 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9_P_output_high_EXISTS 1 /* * Devicetree node: /soc/i2c@40005400 @@ -3360,6 +3464,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_i2c_40005400_FULL_NAME "i2c@40005400" +#define DT_N_S_soc_S_i2c_40005400_FULL_NAME_UNQUOTED i2c@40005400 +#define DT_N_S_soc_S_i2c_40005400_FULL_NAME_TOKEN i2c_40005400 +#define DT_N_S_soc_S_i2c_40005400_FULL_NAME_UPPER_TOKEN I2C_40005400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_i2c_40005400_PARENT DT_N_S_soc @@ -3390,16 +3497,16 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_i2c_40005400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 22, /* /soc/pin-controller@58020000/i2c1_scl_pb8 */ \ - 23, /* /soc/pin-controller@58020000/i2c1_sda_pb9 */ + 4, \ + 5, \ + 9, \ + 22, \ + 23, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_i2c_40005400_SUPPORTS_ORDS \ - 25, /* /smbus1 */ \ - 93, /* /zephyr,user */ + 25, \ + 93, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_i2c_40005400_EXISTS 1 @@ -3409,8 +3516,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_i2c_40005400_REG_NUM 1 #define DT_N_S_soc_S_i2c_40005400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_REG_IDX_0_VAL_ADDRESS 1073763328 /* 0x40005400 */ -#define DT_N_S_soc_S_i2c_40005400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_i2c_40005400_REG_IDX_0_VAL_ADDRESS 1073763328 +#define DT_N_S_soc_S_i2c_40005400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_i2c_40005400_RANGES_NUM 0 #define DT_N_S_soc_S_i2c_40005400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_i2c_40005400_IRQ_NUM 2 @@ -3457,20 +3564,64 @@ #define DT_N_S_soc_S_i2c_40005400_PINCTRL_NAME_default_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9 /* Generic property macros: */ -#define DT_N_S_soc_S_i2c_40005400_P_wakeup_source 0 -#define DT_N_S_soc_S_i2c_40005400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_i2c_40005400_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_reg {1073763328, 1024} +#define DT_N_S_soc_S_i2c_40005400_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_reg_IDX_0 1073763328 +#define DT_N_S_soc_S_i2c_40005400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_i2c_40005400_P_reg_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_interrupts {31, 0, 32, 0} +#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_0 31 +#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_2 32 +#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_3 0 +#define DT_N_S_soc_S_i2c_40005400_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8 +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8 +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_IDX_1 DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9 +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9 +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 0) \ + fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 1) +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 1) +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_LEN 2 +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_IDX_0 "default" +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_IDX_0_STRING_UNQUOTED default +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_IDX_0_STRING_TOKEN default +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_names, 0) +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_names, 0) +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_LEN 1 +#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_clock_frequency 400000 +#define DT_N_S_soc_S_i2c_40005400_P_clock_frequency_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_sq_size 4 +#define DT_N_S_soc_S_i2c_40005400_P_sq_size_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_cq_size 4 +#define DT_N_S_soc_S_i2c_40005400_P_cq_size_EXISTS 1 #define DT_N_S_soc_S_i2c_40005400_P_status "okay" #define DT_N_S_soc_S_i2c_40005400_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_i2c_40005400_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_i2c_40005400_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_i2c_40005400_P_status_IDX_0 "okay" #define DT_N_S_soc_S_i2c_40005400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_i2c_40005400_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_i2c_40005400_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_i2c_40005400_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_i2c_40005400_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_i2c_40005400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005400, status, 0) #define DT_N_S_soc_S_i2c_40005400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005400, status, 0) #define DT_N_S_soc_S_i2c_40005400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_40005400, status, 0, __VA_ARGS__) @@ -3478,44 +3629,28 @@ #define DT_N_S_soc_S_i2c_40005400_P_status_LEN 1 #define DT_N_S_soc_S_i2c_40005400_P_status_EXISTS 1 #define DT_N_S_soc_S_i2c_40005400_P_compatible {"st,stm32-i2c-v2"} +#define DT_N_S_soc_S_i2c_40005400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2c_40005400_P_compatible_IDX_0 "st,stm32-i2c-v2" #define DT_N_S_soc_S_i2c_40005400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-i2c-v2 #define DT_N_S_soc_S_i2c_40005400_P_compatible_IDX_0_STRING_TOKEN st_stm32_i2c_v2 #define DT_N_S_soc_S_i2c_40005400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_I2C_V2 -#define DT_N_S_soc_S_i2c_40005400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2c_40005400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005400, compatible, 0) #define DT_N_S_soc_S_i2c_40005400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005400, compatible, 0) #define DT_N_S_soc_S_i2c_40005400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_40005400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_i2c_40005400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_40005400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_i2c_40005400_P_compatible_LEN 1 #define DT_N_S_soc_S_i2c_40005400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_reg {1073763328 /* 0x40005400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_i2c_40005400_P_reg_IDX_0 1073763328 -#define DT_N_S_soc_S_i2c_40005400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_i2c_40005400_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_interrupts {31 /* 0x1f */, 0 /* 0x0 */, 32 /* 0x20 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_0 31 -#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_2 32 -#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_3 0 -#define DT_N_S_soc_S_i2c_40005400_P_interrupts_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_i2c_40005400_P_interrupt_names {"event", "error"} +#define DT_N_S_soc_S_i2c_40005400_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2c_40005400_P_interrupt_names_IDX_0 "event" #define DT_N_S_soc_S_i2c_40005400_P_interrupt_names_IDX_0_STRING_UNQUOTED event #define DT_N_S_soc_S_i2c_40005400_P_interrupt_names_IDX_0_STRING_TOKEN event #define DT_N_S_soc_S_i2c_40005400_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN EVENT -#define DT_N_S_soc_S_i2c_40005400_P_interrupt_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_i2c_40005400_P_interrupt_names_IDX_1 "error" #define DT_N_S_soc_S_i2c_40005400_P_interrupt_names_IDX_1_STRING_UNQUOTED error #define DT_N_S_soc_S_i2c_40005400_P_interrupt_names_IDX_1_STRING_TOKEN error #define DT_N_S_soc_S_i2c_40005400_P_interrupt_names_IDX_1_STRING_UPPER_TOKEN ERROR -#define DT_N_S_soc_S_i2c_40005400_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_i2c_40005400_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005400, interrupt_names, 0) \ fn(DT_N_S_soc_S_i2c_40005400, interrupt_names, 1) #define DT_N_S_soc_S_i2c_40005400_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005400, interrupt_names, 0) DT_DEBRACKET_INTERNAL sep \ @@ -3540,40 +3675,10 @@ #define DT_N_S_soc_S_i2c_40005400_P_clocks_EXISTS 1 #define DT_N_S_soc_S_i2c_40005400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_i2c_40005400_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_clock_frequency 400000 -#define DT_N_S_soc_S_i2c_40005400_P_clock_frequency_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_sq_size 4 -#define DT_N_S_soc_S_i2c_40005400_P_sq_size_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_cq_size 4 -#define DT_N_S_soc_S_i2c_40005400_P_cq_size_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8 -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8 -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_IDX_1 DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9 -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9 -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 0) \ - fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 1) -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 1) -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2c_40005400, pinctrl_0, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_LEN 2 -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names {"default"} -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_IDX_0 "default" -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_IDX_0_STRING_UNQUOTED default -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_IDX_0_STRING_TOKEN default -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_names, 0) -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_names, 0) -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_40005400, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_LEN 1 -#define DT_N_S_soc_S_i2c_40005400_P_pinctrl_names_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_wakeup_source 0 +#define DT_N_S_soc_S_i2c_40005400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_i2c_40005400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /smbus1 @@ -3592,12 +3697,15 @@ /* Node's name with unit-address: */ #define DT_N_S_smbus1_FULL_NAME "smbus1" +#define DT_N_S_smbus1_FULL_NAME_UNQUOTED smbus1 +#define DT_N_S_smbus1_FULL_NAME_TOKEN smbus1 +#define DT_N_S_smbus1_FULL_NAME_UPPER_TOKEN SMBUS1 /* Node parent (/) identifier: */ #define DT_N_S_smbus1_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_smbus1_CHILD_IDX 9 +#define DT_N_S_smbus1_CHILD_IDX 10 /* Helpers for dealing with node labels: */ #define DT_N_S_smbus1_NODELABEL_NUM 1 @@ -3622,8 +3730,8 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_smbus1_REQUIRES_ORDS \ - 0, /* / */ \ - 24, /* /soc/i2c@40005400 */ + 0, \ + 24, /* Ordinals for what depends directly on this node: */ #define DT_N_S_smbus1_SUPPORTS_ORDS /* nothing */ @@ -3650,20 +3758,24 @@ #define DT_N_S_smbus1_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_smbus1_P_wakeup_source 0 -#define DT_N_S_smbus1_P_wakeup_source_EXISTS 1 -#define DT_N_S_smbus1_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_smbus1_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_smbus1_P_i2c DT_N_S_soc_S_i2c_40005400 +#define DT_N_S_smbus1_P_i2c_IDX_0 DT_N_S_soc_S_i2c_40005400 +#define DT_N_S_smbus1_P_i2c_IDX_0_PH DT_N_S_soc_S_i2c_40005400 +#define DT_N_S_smbus1_P_i2c_IDX_0_EXISTS 1 +#define DT_N_S_smbus1_P_i2c_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus1, i2c, 0) +#define DT_N_S_smbus1_P_i2c_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus1, i2c, 0) +#define DT_N_S_smbus1_P_i2c_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus1, i2c, 0, __VA_ARGS__) +#define DT_N_S_smbus1_P_i2c_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_smbus1, i2c, 0, __VA_ARGS__) +#define DT_N_S_smbus1_P_i2c_LEN 1 +#define DT_N_S_smbus1_P_i2c_EXISTS 1 #define DT_N_S_smbus1_P_status "disabled" #define DT_N_S_smbus1_P_status_STRING_UNQUOTED disabled #define DT_N_S_smbus1_P_status_STRING_TOKEN disabled #define DT_N_S_smbus1_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_smbus1_P_status_IDX_0 "disabled" #define DT_N_S_smbus1_P_status_IDX_0_EXISTS 1 -#define DT_N_S_smbus1_P_status_ENUM_IDX 2 -#define DT_N_S_smbus1_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_smbus1_P_status_ENUM_TOKEN disabled -#define DT_N_S_smbus1_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_smbus1_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_smbus1_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_smbus1_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus1, status, 0) #define DT_N_S_smbus1_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus1, status, 0) #define DT_N_S_smbus1_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus1, status, 0, __VA_ARGS__) @@ -3671,11 +3783,11 @@ #define DT_N_S_smbus1_P_status_LEN 1 #define DT_N_S_smbus1_P_status_EXISTS 1 #define DT_N_S_smbus1_P_compatible {"st,stm32-smbus"} +#define DT_N_S_smbus1_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_smbus1_P_compatible_IDX_0 "st,stm32-smbus" #define DT_N_S_smbus1_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-smbus #define DT_N_S_smbus1_P_compatible_IDX_0_STRING_TOKEN st_stm32_smbus #define DT_N_S_smbus1_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_SMBUS -#define DT_N_S_smbus1_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_smbus1_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus1, compatible, 0) #define DT_N_S_smbus1_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus1, compatible, 0) #define DT_N_S_smbus1_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus1, compatible, 0, __VA_ARGS__) @@ -3684,16 +3796,10 @@ #define DT_N_S_smbus1_P_compatible_EXISTS 1 #define DT_N_S_smbus1_P_zephyr_deferred_init 0 #define DT_N_S_smbus1_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_smbus1_P_i2c DT_N_S_soc_S_i2c_40005400 -#define DT_N_S_smbus1_P_i2c_IDX_0 DT_N_S_soc_S_i2c_40005400 -#define DT_N_S_smbus1_P_i2c_IDX_0_PH DT_N_S_soc_S_i2c_40005400 -#define DT_N_S_smbus1_P_i2c_IDX_0_EXISTS 1 -#define DT_N_S_smbus1_P_i2c_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus1, i2c, 0) -#define DT_N_S_smbus1_P_i2c_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus1, i2c, 0) -#define DT_N_S_smbus1_P_i2c_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus1, i2c, 0, __VA_ARGS__) -#define DT_N_S_smbus1_P_i2c_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_smbus1, i2c, 0, __VA_ARGS__) -#define DT_N_S_smbus1_P_i2c_LEN 1 -#define DT_N_S_smbus1_P_i2c_EXISTS 1 +#define DT_N_S_smbus1_P_wakeup_source 0 +#define DT_N_S_smbus1_P_wakeup_source_EXISTS 1 +#define DT_N_S_smbus1_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_smbus1_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/i2c2_scl_ph4 @@ -3709,6 +3815,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_FULL_NAME "i2c2_scl_ph4" +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_FULL_NAME_UNQUOTED i2c2_scl_ph4 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_FULL_NAME_TOKEN i2c2_scl_ph4 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_FULL_NAME_UPPER_TOKEN I2C2_SCL_PH4 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -3739,11 +3848,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_SUPPORTS_ORDS \ - 28, /* /soc/i2c@40005800 */ + 28, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_EXISTS 1 @@ -3761,20 +3870,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_drive_open_drain 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_pinmux 3716 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate "low-speed" @@ -3783,16 +3878,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_drive_open_drain 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/i2c2_sda_pb11 @@ -3808,6 +3915,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_FULL_NAME "i2c2_sda_pb11" +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_FULL_NAME_UNQUOTED i2c2_sda_pb11 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_FULL_NAME_TOKEN i2c2_sda_pb11 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_FULL_NAME_UPPER_TOKEN I2C2_SDA_PB11 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -3838,11 +3948,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_SUPPORTS_ORDS \ - 28, /* /soc/i2c@40005800 */ + 28, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_EXISTS 1 @@ -3860,20 +3970,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_drive_open_drain 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_pinmux 868 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate "low-speed" @@ -3882,16 +3978,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_drive_open_drain 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11_P_output_high_EXISTS 1 /* * Devicetree node: /soc/i2c@40005800 @@ -3910,6 +4018,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_i2c_40005800_FULL_NAME "i2c@40005800" +#define DT_N_S_soc_S_i2c_40005800_FULL_NAME_UNQUOTED i2c@40005800 +#define DT_N_S_soc_S_i2c_40005800_FULL_NAME_TOKEN i2c_40005800 +#define DT_N_S_soc_S_i2c_40005800_FULL_NAME_UPPER_TOKEN I2C_40005800 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_i2c_40005800_PARENT DT_N_S_soc @@ -3940,16 +4051,16 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_i2c_40005800_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 26, /* /soc/pin-controller@58020000/i2c2_scl_ph4 */ \ - 27, /* /soc/pin-controller@58020000/i2c2_sda_pb11 */ + 4, \ + 5, \ + 9, \ + 26, \ + 27, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_i2c_40005800_SUPPORTS_ORDS \ - 29, /* /smbus2 */ \ - 93, /* /zephyr,user */ + 29, \ + 93, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_i2c_40005800_EXISTS 1 @@ -3959,8 +4070,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_i2c_40005800_REG_NUM 1 #define DT_N_S_soc_S_i2c_40005800_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_REG_IDX_0_VAL_ADDRESS 1073764352 /* 0x40005800 */ -#define DT_N_S_soc_S_i2c_40005800_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_i2c_40005800_REG_IDX_0_VAL_ADDRESS 1073764352 +#define DT_N_S_soc_S_i2c_40005800_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_i2c_40005800_RANGES_NUM 0 #define DT_N_S_soc_S_i2c_40005800_FOREACH_RANGE(fn) #define DT_N_S_soc_S_i2c_40005800_IRQ_NUM 2 @@ -4007,20 +4118,64 @@ #define DT_N_S_soc_S_i2c_40005800_PINCTRL_NAME_default_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11 /* Generic property macros: */ -#define DT_N_S_soc_S_i2c_40005800_P_wakeup_source 0 -#define DT_N_S_soc_S_i2c_40005800_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_i2c_40005800_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_reg {1073764352, 1024} +#define DT_N_S_soc_S_i2c_40005800_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_reg_IDX_0 1073764352 +#define DT_N_S_soc_S_i2c_40005800_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_i2c_40005800_P_reg_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_interrupts {33, 0, 34, 0} +#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_0 33 +#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_2 34 +#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_3 0 +#define DT_N_S_soc_S_i2c_40005800_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4 +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4 +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_IDX_1 DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11 +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11 +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 0) \ + fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 1) +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 1) +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_LEN 2 +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_IDX_0 "default" +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_IDX_0_STRING_UNQUOTED default +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_IDX_0_STRING_TOKEN default +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_names, 0) +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_names, 0) +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_LEN 1 +#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_clock_frequency 400000 +#define DT_N_S_soc_S_i2c_40005800_P_clock_frequency_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_sq_size 4 +#define DT_N_S_soc_S_i2c_40005800_P_sq_size_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_cq_size 4 +#define DT_N_S_soc_S_i2c_40005800_P_cq_size_EXISTS 1 #define DT_N_S_soc_S_i2c_40005800_P_status "okay" #define DT_N_S_soc_S_i2c_40005800_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_i2c_40005800_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_i2c_40005800_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_i2c_40005800_P_status_IDX_0 "okay" #define DT_N_S_soc_S_i2c_40005800_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_i2c_40005800_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_i2c_40005800_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_i2c_40005800_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_i2c_40005800_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_i2c_40005800_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005800, status, 0) #define DT_N_S_soc_S_i2c_40005800_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005800, status, 0) #define DT_N_S_soc_S_i2c_40005800_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_40005800, status, 0, __VA_ARGS__) @@ -4028,44 +4183,28 @@ #define DT_N_S_soc_S_i2c_40005800_P_status_LEN 1 #define DT_N_S_soc_S_i2c_40005800_P_status_EXISTS 1 #define DT_N_S_soc_S_i2c_40005800_P_compatible {"st,stm32-i2c-v2"} +#define DT_N_S_soc_S_i2c_40005800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2c_40005800_P_compatible_IDX_0 "st,stm32-i2c-v2" #define DT_N_S_soc_S_i2c_40005800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-i2c-v2 #define DT_N_S_soc_S_i2c_40005800_P_compatible_IDX_0_STRING_TOKEN st_stm32_i2c_v2 #define DT_N_S_soc_S_i2c_40005800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_I2C_V2 -#define DT_N_S_soc_S_i2c_40005800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2c_40005800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005800, compatible, 0) #define DT_N_S_soc_S_i2c_40005800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005800, compatible, 0) #define DT_N_S_soc_S_i2c_40005800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_40005800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_i2c_40005800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_40005800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_i2c_40005800_P_compatible_LEN 1 #define DT_N_S_soc_S_i2c_40005800_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_reg {1073764352 /* 0x40005800 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_i2c_40005800_P_reg_IDX_0 1073764352 -#define DT_N_S_soc_S_i2c_40005800_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_i2c_40005800_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_reg_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_interrupts {33 /* 0x21 */, 0 /* 0x0 */, 34 /* 0x22 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_0 33 -#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_2 34 -#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_3 0 -#define DT_N_S_soc_S_i2c_40005800_P_interrupts_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_i2c_40005800_P_interrupt_names {"event", "error"} +#define DT_N_S_soc_S_i2c_40005800_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2c_40005800_P_interrupt_names_IDX_0 "event" #define DT_N_S_soc_S_i2c_40005800_P_interrupt_names_IDX_0_STRING_UNQUOTED event #define DT_N_S_soc_S_i2c_40005800_P_interrupt_names_IDX_0_STRING_TOKEN event #define DT_N_S_soc_S_i2c_40005800_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN EVENT -#define DT_N_S_soc_S_i2c_40005800_P_interrupt_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_i2c_40005800_P_interrupt_names_IDX_1 "error" #define DT_N_S_soc_S_i2c_40005800_P_interrupt_names_IDX_1_STRING_UNQUOTED error #define DT_N_S_soc_S_i2c_40005800_P_interrupt_names_IDX_1_STRING_TOKEN error #define DT_N_S_soc_S_i2c_40005800_P_interrupt_names_IDX_1_STRING_UPPER_TOKEN ERROR -#define DT_N_S_soc_S_i2c_40005800_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_i2c_40005800_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005800, interrupt_names, 0) \ fn(DT_N_S_soc_S_i2c_40005800, interrupt_names, 1) #define DT_N_S_soc_S_i2c_40005800_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005800, interrupt_names, 0) DT_DEBRACKET_INTERNAL sep \ @@ -4090,40 +4229,10 @@ #define DT_N_S_soc_S_i2c_40005800_P_clocks_EXISTS 1 #define DT_N_S_soc_S_i2c_40005800_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_i2c_40005800_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_clock_frequency 400000 -#define DT_N_S_soc_S_i2c_40005800_P_clock_frequency_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_sq_size 4 -#define DT_N_S_soc_S_i2c_40005800_P_sq_size_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_cq_size 4 -#define DT_N_S_soc_S_i2c_40005800_P_cq_size_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4 -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4 -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_IDX_1 DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11 -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11 -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 0) \ - fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 1) -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 1) -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2c_40005800, pinctrl_0, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_LEN 2 -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names {"default"} -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_IDX_0 "default" -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_IDX_0_STRING_UNQUOTED default -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_IDX_0_STRING_TOKEN default -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_names, 0) -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_names, 0) -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_40005800, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_LEN 1 -#define DT_N_S_soc_S_i2c_40005800_P_pinctrl_names_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_wakeup_source 0 +#define DT_N_S_soc_S_i2c_40005800_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005800_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_i2c_40005800_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /smbus2 @@ -4142,12 +4251,15 @@ /* Node's name with unit-address: */ #define DT_N_S_smbus2_FULL_NAME "smbus2" +#define DT_N_S_smbus2_FULL_NAME_UNQUOTED smbus2 +#define DT_N_S_smbus2_FULL_NAME_TOKEN smbus2 +#define DT_N_S_smbus2_FULL_NAME_UPPER_TOKEN SMBUS2 /* Node parent (/) identifier: */ #define DT_N_S_smbus2_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_smbus2_CHILD_IDX 10 +#define DT_N_S_smbus2_CHILD_IDX 11 /* Helpers for dealing with node labels: */ #define DT_N_S_smbus2_NODELABEL_NUM 1 @@ -4172,8 +4284,8 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_smbus2_REQUIRES_ORDS \ - 0, /* / */ \ - 28, /* /soc/i2c@40005800 */ + 0, \ + 28, /* Ordinals for what depends directly on this node: */ #define DT_N_S_smbus2_SUPPORTS_ORDS /* nothing */ @@ -4200,20 +4312,24 @@ #define DT_N_S_smbus2_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_smbus2_P_wakeup_source 0 -#define DT_N_S_smbus2_P_wakeup_source_EXISTS 1 -#define DT_N_S_smbus2_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_smbus2_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_smbus2_P_i2c DT_N_S_soc_S_i2c_40005800 +#define DT_N_S_smbus2_P_i2c_IDX_0 DT_N_S_soc_S_i2c_40005800 +#define DT_N_S_smbus2_P_i2c_IDX_0_PH DT_N_S_soc_S_i2c_40005800 +#define DT_N_S_smbus2_P_i2c_IDX_0_EXISTS 1 +#define DT_N_S_smbus2_P_i2c_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus2, i2c, 0) +#define DT_N_S_smbus2_P_i2c_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus2, i2c, 0) +#define DT_N_S_smbus2_P_i2c_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus2, i2c, 0, __VA_ARGS__) +#define DT_N_S_smbus2_P_i2c_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_smbus2, i2c, 0, __VA_ARGS__) +#define DT_N_S_smbus2_P_i2c_LEN 1 +#define DT_N_S_smbus2_P_i2c_EXISTS 1 #define DT_N_S_smbus2_P_status "disabled" #define DT_N_S_smbus2_P_status_STRING_UNQUOTED disabled #define DT_N_S_smbus2_P_status_STRING_TOKEN disabled #define DT_N_S_smbus2_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_smbus2_P_status_IDX_0 "disabled" #define DT_N_S_smbus2_P_status_IDX_0_EXISTS 1 -#define DT_N_S_smbus2_P_status_ENUM_IDX 2 -#define DT_N_S_smbus2_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_smbus2_P_status_ENUM_TOKEN disabled -#define DT_N_S_smbus2_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_smbus2_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_smbus2_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_smbus2_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus2, status, 0) #define DT_N_S_smbus2_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus2, status, 0) #define DT_N_S_smbus2_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus2, status, 0, __VA_ARGS__) @@ -4221,11 +4337,11 @@ #define DT_N_S_smbus2_P_status_LEN 1 #define DT_N_S_smbus2_P_status_EXISTS 1 #define DT_N_S_smbus2_P_compatible {"st,stm32-smbus"} +#define DT_N_S_smbus2_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_smbus2_P_compatible_IDX_0 "st,stm32-smbus" #define DT_N_S_smbus2_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-smbus #define DT_N_S_smbus2_P_compatible_IDX_0_STRING_TOKEN st_stm32_smbus #define DT_N_S_smbus2_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_SMBUS -#define DT_N_S_smbus2_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_smbus2_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus2, compatible, 0) #define DT_N_S_smbus2_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus2, compatible, 0) #define DT_N_S_smbus2_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus2, compatible, 0, __VA_ARGS__) @@ -4234,16 +4350,10 @@ #define DT_N_S_smbus2_P_compatible_EXISTS 1 #define DT_N_S_smbus2_P_zephyr_deferred_init 0 #define DT_N_S_smbus2_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_smbus2_P_i2c DT_N_S_soc_S_i2c_40005800 -#define DT_N_S_smbus2_P_i2c_IDX_0 DT_N_S_soc_S_i2c_40005800 -#define DT_N_S_smbus2_P_i2c_IDX_0_PH DT_N_S_soc_S_i2c_40005800 -#define DT_N_S_smbus2_P_i2c_IDX_0_EXISTS 1 -#define DT_N_S_smbus2_P_i2c_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus2, i2c, 0) -#define DT_N_S_smbus2_P_i2c_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus2, i2c, 0) -#define DT_N_S_smbus2_P_i2c_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus2, i2c, 0, __VA_ARGS__) -#define DT_N_S_smbus2_P_i2c_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_smbus2, i2c, 0, __VA_ARGS__) -#define DT_N_S_smbus2_P_i2c_LEN 1 -#define DT_N_S_smbus2_P_i2c_EXISTS 1 +#define DT_N_S_smbus2_P_wakeup_source 0 +#define DT_N_S_smbus2_P_wakeup_source_EXISTS 1 +#define DT_N_S_smbus2_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_smbus2_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/i2c@40005c00 @@ -4262,6 +4372,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_i2c_40005c00_FULL_NAME "i2c@40005c00" +#define DT_N_S_soc_S_i2c_40005c00_FULL_NAME_UNQUOTED i2c@40005c00 +#define DT_N_S_soc_S_i2c_40005c00_FULL_NAME_TOKEN i2c_40005c00 +#define DT_N_S_soc_S_i2c_40005c00_FULL_NAME_UPPER_TOKEN I2C_40005C00 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_i2c_40005c00_PARENT DT_N_S_soc @@ -4292,13 +4405,13 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_i2c_40005c00_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_i2c_40005c00_SUPPORTS_ORDS \ - 31, /* /smbus3 */ + 31, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_i2c_40005c00_EXISTS 1 @@ -4308,8 +4421,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_i2c_40005c00_REG_NUM 1 #define DT_N_S_soc_S_i2c_40005c00_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005c00_REG_IDX_0_VAL_ADDRESS 1073765376 /* 0x40005c00 */ -#define DT_N_S_soc_S_i2c_40005c00_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_i2c_40005c00_REG_IDX_0_VAL_ADDRESS 1073765376 +#define DT_N_S_soc_S_i2c_40005c00_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_i2c_40005c00_RANGES_NUM 0 #define DT_N_S_soc_S_i2c_40005c00_FOREACH_RANGE(fn) #define DT_N_S_soc_S_i2c_40005c00_IRQ_NUM 2 @@ -4349,20 +4462,36 @@ #define DT_N_S_soc_S_i2c_40005c00_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_i2c_40005c00_P_wakeup_source 0 -#define DT_N_S_soc_S_i2c_40005c00_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005c00_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_i2c_40005c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005c00_P_reg {1073765376, 1024} +#define DT_N_S_soc_S_i2c_40005c00_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005c00_P_reg_IDX_0 1073765376 +#define DT_N_S_soc_S_i2c_40005c00_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005c00_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_i2c_40005c00_P_reg_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005c00_P_interrupts {72, 0, 73, 0} +#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_0 72 +#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_2 73 +#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_3 0 +#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005c00_P_clock_frequency 100000 +#define DT_N_S_soc_S_i2c_40005c00_P_clock_frequency_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005c00_P_sq_size 4 +#define DT_N_S_soc_S_i2c_40005c00_P_sq_size_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005c00_P_cq_size 4 +#define DT_N_S_soc_S_i2c_40005c00_P_cq_size_EXISTS 1 #define DT_N_S_soc_S_i2c_40005c00_P_status "disabled" #define DT_N_S_soc_S_i2c_40005c00_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_i2c_40005c00_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_i2c_40005c00_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_i2c_40005c00_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_i2c_40005c00_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005c00_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_i2c_40005c00_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005c00_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_i2c_40005c00_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_i2c_40005c00_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_i2c_40005c00_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_i2c_40005c00_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005c00, status, 0) #define DT_N_S_soc_S_i2c_40005c00_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005c00, status, 0) #define DT_N_S_soc_S_i2c_40005c00_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_40005c00, status, 0, __VA_ARGS__) @@ -4370,44 +4499,28 @@ #define DT_N_S_soc_S_i2c_40005c00_P_status_LEN 1 #define DT_N_S_soc_S_i2c_40005c00_P_status_EXISTS 1 #define DT_N_S_soc_S_i2c_40005c00_P_compatible {"st,stm32-i2c-v2"} +#define DT_N_S_soc_S_i2c_40005c00_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2c_40005c00_P_compatible_IDX_0 "st,stm32-i2c-v2" #define DT_N_S_soc_S_i2c_40005c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-i2c-v2 #define DT_N_S_soc_S_i2c_40005c00_P_compatible_IDX_0_STRING_TOKEN st_stm32_i2c_v2 #define DT_N_S_soc_S_i2c_40005c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_I2C_V2 -#define DT_N_S_soc_S_i2c_40005c00_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2c_40005c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005c00, compatible, 0) #define DT_N_S_soc_S_i2c_40005c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005c00, compatible, 0) #define DT_N_S_soc_S_i2c_40005c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_40005c00, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_i2c_40005c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_40005c00, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_i2c_40005c00_P_compatible_LEN 1 #define DT_N_S_soc_S_i2c_40005c00_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005c00_P_reg {1073765376 /* 0x40005c00 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_i2c_40005c00_P_reg_IDX_0 1073765376 -#define DT_N_S_soc_S_i2c_40005c00_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005c00_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_i2c_40005c00_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005c00_P_reg_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005c00_P_interrupts {72 /* 0x48 */, 0 /* 0x0 */, 73 /* 0x49 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_0 72 -#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_2 73 -#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_3 0 -#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005c00_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_i2c_40005c00_P_interrupt_names {"event", "error"} +#define DT_N_S_soc_S_i2c_40005c00_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2c_40005c00_P_interrupt_names_IDX_0 "event" #define DT_N_S_soc_S_i2c_40005c00_P_interrupt_names_IDX_0_STRING_UNQUOTED event #define DT_N_S_soc_S_i2c_40005c00_P_interrupt_names_IDX_0_STRING_TOKEN event #define DT_N_S_soc_S_i2c_40005c00_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN EVENT -#define DT_N_S_soc_S_i2c_40005c00_P_interrupt_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005c00_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_i2c_40005c00_P_interrupt_names_IDX_1 "error" #define DT_N_S_soc_S_i2c_40005c00_P_interrupt_names_IDX_1_STRING_UNQUOTED error #define DT_N_S_soc_S_i2c_40005c00_P_interrupt_names_IDX_1_STRING_TOKEN error #define DT_N_S_soc_S_i2c_40005c00_P_interrupt_names_IDX_1_STRING_UPPER_TOKEN ERROR -#define DT_N_S_soc_S_i2c_40005c00_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_i2c_40005c00_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_40005c00, interrupt_names, 0) \ fn(DT_N_S_soc_S_i2c_40005c00, interrupt_names, 1) #define DT_N_S_soc_S_i2c_40005c00_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_40005c00, interrupt_names, 0) DT_DEBRACKET_INTERNAL sep \ @@ -4432,12 +4545,10 @@ #define DT_N_S_soc_S_i2c_40005c00_P_clocks_EXISTS 1 #define DT_N_S_soc_S_i2c_40005c00_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_i2c_40005c00_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005c00_P_clock_frequency 100000 -#define DT_N_S_soc_S_i2c_40005c00_P_clock_frequency_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005c00_P_sq_size 4 -#define DT_N_S_soc_S_i2c_40005c00_P_sq_size_EXISTS 1 -#define DT_N_S_soc_S_i2c_40005c00_P_cq_size 4 -#define DT_N_S_soc_S_i2c_40005c00_P_cq_size_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005c00_P_wakeup_source 0 +#define DT_N_S_soc_S_i2c_40005c00_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_i2c_40005c00_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_i2c_40005c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /smbus3 @@ -4456,12 +4567,15 @@ /* Node's name with unit-address: */ #define DT_N_S_smbus3_FULL_NAME "smbus3" +#define DT_N_S_smbus3_FULL_NAME_UNQUOTED smbus3 +#define DT_N_S_smbus3_FULL_NAME_TOKEN smbus3 +#define DT_N_S_smbus3_FULL_NAME_UPPER_TOKEN SMBUS3 /* Node parent (/) identifier: */ #define DT_N_S_smbus3_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_smbus3_CHILD_IDX 11 +#define DT_N_S_smbus3_CHILD_IDX 12 /* Helpers for dealing with node labels: */ #define DT_N_S_smbus3_NODELABEL_NUM 1 @@ -4486,8 +4600,8 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_smbus3_REQUIRES_ORDS \ - 0, /* / */ \ - 30, /* /soc/i2c@40005c00 */ + 0, \ + 30, /* Ordinals for what depends directly on this node: */ #define DT_N_S_smbus3_SUPPORTS_ORDS /* nothing */ @@ -4514,20 +4628,24 @@ #define DT_N_S_smbus3_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_smbus3_P_wakeup_source 0 -#define DT_N_S_smbus3_P_wakeup_source_EXISTS 1 -#define DT_N_S_smbus3_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_smbus3_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_smbus3_P_i2c DT_N_S_soc_S_i2c_40005c00 +#define DT_N_S_smbus3_P_i2c_IDX_0 DT_N_S_soc_S_i2c_40005c00 +#define DT_N_S_smbus3_P_i2c_IDX_0_PH DT_N_S_soc_S_i2c_40005c00 +#define DT_N_S_smbus3_P_i2c_IDX_0_EXISTS 1 +#define DT_N_S_smbus3_P_i2c_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus3, i2c, 0) +#define DT_N_S_smbus3_P_i2c_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus3, i2c, 0) +#define DT_N_S_smbus3_P_i2c_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus3, i2c, 0, __VA_ARGS__) +#define DT_N_S_smbus3_P_i2c_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_smbus3, i2c, 0, __VA_ARGS__) +#define DT_N_S_smbus3_P_i2c_LEN 1 +#define DT_N_S_smbus3_P_i2c_EXISTS 1 #define DT_N_S_smbus3_P_status "disabled" #define DT_N_S_smbus3_P_status_STRING_UNQUOTED disabled #define DT_N_S_smbus3_P_status_STRING_TOKEN disabled #define DT_N_S_smbus3_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_smbus3_P_status_IDX_0 "disabled" #define DT_N_S_smbus3_P_status_IDX_0_EXISTS 1 -#define DT_N_S_smbus3_P_status_ENUM_IDX 2 -#define DT_N_S_smbus3_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_smbus3_P_status_ENUM_TOKEN disabled -#define DT_N_S_smbus3_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_smbus3_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_smbus3_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_smbus3_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus3, status, 0) #define DT_N_S_smbus3_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus3, status, 0) #define DT_N_S_smbus3_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus3, status, 0, __VA_ARGS__) @@ -4535,11 +4653,11 @@ #define DT_N_S_smbus3_P_status_LEN 1 #define DT_N_S_smbus3_P_status_EXISTS 1 #define DT_N_S_smbus3_P_compatible {"st,stm32-smbus"} +#define DT_N_S_smbus3_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_smbus3_P_compatible_IDX_0 "st,stm32-smbus" #define DT_N_S_smbus3_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-smbus #define DT_N_S_smbus3_P_compatible_IDX_0_STRING_TOKEN st_stm32_smbus #define DT_N_S_smbus3_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_SMBUS -#define DT_N_S_smbus3_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_smbus3_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus3, compatible, 0) #define DT_N_S_smbus3_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus3, compatible, 0) #define DT_N_S_smbus3_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus3, compatible, 0, __VA_ARGS__) @@ -4548,16 +4666,10 @@ #define DT_N_S_smbus3_P_compatible_EXISTS 1 #define DT_N_S_smbus3_P_zephyr_deferred_init 0 #define DT_N_S_smbus3_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_smbus3_P_i2c DT_N_S_soc_S_i2c_40005c00 -#define DT_N_S_smbus3_P_i2c_IDX_0 DT_N_S_soc_S_i2c_40005c00 -#define DT_N_S_smbus3_P_i2c_IDX_0_PH DT_N_S_soc_S_i2c_40005c00 -#define DT_N_S_smbus3_P_i2c_IDX_0_EXISTS 1 -#define DT_N_S_smbus3_P_i2c_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus3, i2c, 0) -#define DT_N_S_smbus3_P_i2c_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus3, i2c, 0) -#define DT_N_S_smbus3_P_i2c_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus3, i2c, 0, __VA_ARGS__) -#define DT_N_S_smbus3_P_i2c_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_smbus3, i2c, 0, __VA_ARGS__) -#define DT_N_S_smbus3_P_i2c_LEN 1 -#define DT_N_S_smbus3_P_i2c_EXISTS 1 +#define DT_N_S_smbus3_P_wakeup_source 0 +#define DT_N_S_smbus3_P_wakeup_source_EXISTS 1 +#define DT_N_S_smbus3_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_smbus3_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/i2c4_scl_pb6 @@ -4573,6 +4685,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_FULL_NAME "i2c4_scl_pb6" +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_FULL_NAME_UNQUOTED i2c4_scl_pb6 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_FULL_NAME_TOKEN i2c4_scl_pb6 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_FULL_NAME_UPPER_TOKEN I2C4_SCL_PB6 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -4603,11 +4718,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_SUPPORTS_ORDS \ - 34, /* /soc/i2c@58001c00 */ + 34, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_EXISTS 1 @@ -4625,20 +4740,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_drive_open_drain 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_pinmux 710 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate "low-speed" @@ -4647,16 +4748,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_drive_open_drain 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/i2c4_sda_ph12 @@ -4672,6 +4785,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_FULL_NAME "i2c4_sda_ph12" +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_FULL_NAME_UNQUOTED i2c4_sda_ph12 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_FULL_NAME_TOKEN i2c4_sda_ph12 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_FULL_NAME_UPPER_TOKEN I2C4_SDA_PH12 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -4702,11 +4818,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_SUPPORTS_ORDS \ - 34, /* /soc/i2c@58001c00 */ + 34, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_EXISTS 1 @@ -4724,20 +4840,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_drive_open_drain 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_pinmux 3972 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate "low-speed" @@ -4746,16 +4848,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_drive_open_drain 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12_P_output_high_EXISTS 1 /* * Devicetree node: /soc/i2c@58001c00 @@ -4774,6 +4888,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_i2c_58001c00_FULL_NAME "i2c@58001c00" +#define DT_N_S_soc_S_i2c_58001c00_FULL_NAME_UNQUOTED i2c@58001c00 +#define DT_N_S_soc_S_i2c_58001c00_FULL_NAME_TOKEN i2c_58001c00 +#define DT_N_S_soc_S_i2c_58001c00_FULL_NAME_UPPER_TOKEN I2C_58001C00 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_i2c_58001c00_PARENT DT_N_S_soc @@ -4804,17 +4921,17 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_i2c_58001c00_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 32, /* /soc/pin-controller@58020000/i2c4_scl_pb6 */ \ - 33, /* /soc/pin-controller@58020000/i2c4_sda_ph12 */ + 4, \ + 5, \ + 9, \ + 32, \ + 33, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_i2c_58001c00_SUPPORTS_ORDS \ - 35, /* /smbus4 */ \ - 93, /* /zephyr,user */ \ - 163, /* /soc/i2c@58001c00/ov7670@21 */ + 35, \ + 93, \ + 166, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_i2c_58001c00_EXISTS 1 @@ -4825,8 +4942,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_i2c_58001c00_REG_NUM 1 #define DT_N_S_soc_S_i2c_58001c00_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_REG_IDX_0_VAL_ADDRESS 1476402176 /* 0x58001c00 */ -#define DT_N_S_soc_S_i2c_58001c00_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_i2c_58001c00_REG_IDX_0_VAL_ADDRESS 1476402176 +#define DT_N_S_soc_S_i2c_58001c00_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_i2c_58001c00_RANGES_NUM 0 #define DT_N_S_soc_S_i2c_58001c00_FOREACH_RANGE(fn) #define DT_N_S_soc_S_i2c_58001c00_IRQ_NUM 2 @@ -4873,20 +4990,64 @@ #define DT_N_S_soc_S_i2c_58001c00_PINCTRL_NAME_default_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12 /* Generic property macros: */ -#define DT_N_S_soc_S_i2c_58001c00_P_wakeup_source 0 -#define DT_N_S_soc_S_i2c_58001c00_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_i2c_58001c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_reg {1476402176, 1024} +#define DT_N_S_soc_S_i2c_58001c00_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_reg_IDX_0 1476402176 +#define DT_N_S_soc_S_i2c_58001c00_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_i2c_58001c00_P_reg_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_interrupts {95, 0, 96, 0} +#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_0 95 +#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_2 96 +#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_3 0 +#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6 +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6 +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_IDX_1 DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12 +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12 +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 0) \ + fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 1) +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 1) +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_LEN 2 +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_IDX_0 "default" +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_IDX_0_STRING_UNQUOTED default +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_IDX_0_STRING_TOKEN default +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_names, 0) +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_names, 0) +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_LEN 1 +#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_clock_frequency 100000 +#define DT_N_S_soc_S_i2c_58001c00_P_clock_frequency_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_sq_size 4 +#define DT_N_S_soc_S_i2c_58001c00_P_sq_size_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_cq_size 4 +#define DT_N_S_soc_S_i2c_58001c00_P_cq_size_EXISTS 1 #define DT_N_S_soc_S_i2c_58001c00_P_status "okay" #define DT_N_S_soc_S_i2c_58001c00_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_i2c_58001c00_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_i2c_58001c00_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_i2c_58001c00_P_status_IDX_0 "okay" #define DT_N_S_soc_S_i2c_58001c00_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_i2c_58001c00_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_i2c_58001c00_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_i2c_58001c00_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_i2c_58001c00_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_i2c_58001c00_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_58001c00, status, 0) #define DT_N_S_soc_S_i2c_58001c00_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_58001c00, status, 0) #define DT_N_S_soc_S_i2c_58001c00_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_58001c00, status, 0, __VA_ARGS__) @@ -4894,44 +5055,28 @@ #define DT_N_S_soc_S_i2c_58001c00_P_status_LEN 1 #define DT_N_S_soc_S_i2c_58001c00_P_status_EXISTS 1 #define DT_N_S_soc_S_i2c_58001c00_P_compatible {"st,stm32-i2c-v2"} +#define DT_N_S_soc_S_i2c_58001c00_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2c_58001c00_P_compatible_IDX_0 "st,stm32-i2c-v2" #define DT_N_S_soc_S_i2c_58001c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-i2c-v2 #define DT_N_S_soc_S_i2c_58001c00_P_compatible_IDX_0_STRING_TOKEN st_stm32_i2c_v2 #define DT_N_S_soc_S_i2c_58001c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_I2C_V2 -#define DT_N_S_soc_S_i2c_58001c00_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2c_58001c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_58001c00, compatible, 0) #define DT_N_S_soc_S_i2c_58001c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_58001c00, compatible, 0) #define DT_N_S_soc_S_i2c_58001c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_58001c00, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_i2c_58001c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_58001c00, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_i2c_58001c00_P_compatible_LEN 1 #define DT_N_S_soc_S_i2c_58001c00_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_reg {1476402176 /* 0x58001c00 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_i2c_58001c00_P_reg_IDX_0 1476402176 -#define DT_N_S_soc_S_i2c_58001c00_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_i2c_58001c00_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_reg_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_interrupts {95 /* 0x5f */, 0 /* 0x0 */, 96 /* 0x60 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_0 95 -#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_2 96 -#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_3 0 -#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_i2c_58001c00_P_interrupt_names {"event", "error"} +#define DT_N_S_soc_S_i2c_58001c00_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2c_58001c00_P_interrupt_names_IDX_0 "event" #define DT_N_S_soc_S_i2c_58001c00_P_interrupt_names_IDX_0_STRING_UNQUOTED event #define DT_N_S_soc_S_i2c_58001c00_P_interrupt_names_IDX_0_STRING_TOKEN event #define DT_N_S_soc_S_i2c_58001c00_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN EVENT -#define DT_N_S_soc_S_i2c_58001c00_P_interrupt_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_i2c_58001c00_P_interrupt_names_IDX_1 "error" #define DT_N_S_soc_S_i2c_58001c00_P_interrupt_names_IDX_1_STRING_UNQUOTED error #define DT_N_S_soc_S_i2c_58001c00_P_interrupt_names_IDX_1_STRING_TOKEN error #define DT_N_S_soc_S_i2c_58001c00_P_interrupt_names_IDX_1_STRING_UPPER_TOKEN ERROR -#define DT_N_S_soc_S_i2c_58001c00_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_i2c_58001c00_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_58001c00, interrupt_names, 0) \ fn(DT_N_S_soc_S_i2c_58001c00, interrupt_names, 1) #define DT_N_S_soc_S_i2c_58001c00_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_58001c00, interrupt_names, 0) DT_DEBRACKET_INTERNAL sep \ @@ -4956,40 +5101,10 @@ #define DT_N_S_soc_S_i2c_58001c00_P_clocks_EXISTS 1 #define DT_N_S_soc_S_i2c_58001c00_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_i2c_58001c00_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_clock_frequency 100000 -#define DT_N_S_soc_S_i2c_58001c00_P_clock_frequency_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_sq_size 4 -#define DT_N_S_soc_S_i2c_58001c00_P_sq_size_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_cq_size 4 -#define DT_N_S_soc_S_i2c_58001c00_P_cq_size_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6 -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6 -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_IDX_1 DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12 -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12 -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 0) \ - fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 1) -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 1) -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_0, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_LEN 2 -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names {"default"} -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_IDX_0 "default" -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_IDX_0_STRING_UNQUOTED default -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_IDX_0_STRING_TOKEN default -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_names, 0) -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_names, 0) -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_58001c00, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_LEN 1 -#define DT_N_S_soc_S_i2c_58001c00_P_pinctrl_names_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_wakeup_source 0 +#define DT_N_S_soc_S_i2c_58001c00_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_i2c_58001c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /smbus4 @@ -5008,12 +5123,15 @@ /* Node's name with unit-address: */ #define DT_N_S_smbus4_FULL_NAME "smbus4" +#define DT_N_S_smbus4_FULL_NAME_UNQUOTED smbus4 +#define DT_N_S_smbus4_FULL_NAME_TOKEN smbus4 +#define DT_N_S_smbus4_FULL_NAME_UPPER_TOKEN SMBUS4 /* Node parent (/) identifier: */ #define DT_N_S_smbus4_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_smbus4_CHILD_IDX 12 +#define DT_N_S_smbus4_CHILD_IDX 13 /* Helpers for dealing with node labels: */ #define DT_N_S_smbus4_NODELABEL_NUM 1 @@ -5038,8 +5156,8 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_smbus4_REQUIRES_ORDS \ - 0, /* / */ \ - 34, /* /soc/i2c@58001c00 */ + 0, \ + 34, /* Ordinals for what depends directly on this node: */ #define DT_N_S_smbus4_SUPPORTS_ORDS /* nothing */ @@ -5066,20 +5184,24 @@ #define DT_N_S_smbus4_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_smbus4_P_wakeup_source 0 -#define DT_N_S_smbus4_P_wakeup_source_EXISTS 1 -#define DT_N_S_smbus4_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_smbus4_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_smbus4_P_i2c DT_N_S_soc_S_i2c_58001c00 +#define DT_N_S_smbus4_P_i2c_IDX_0 DT_N_S_soc_S_i2c_58001c00 +#define DT_N_S_smbus4_P_i2c_IDX_0_PH DT_N_S_soc_S_i2c_58001c00 +#define DT_N_S_smbus4_P_i2c_IDX_0_EXISTS 1 +#define DT_N_S_smbus4_P_i2c_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus4, i2c, 0) +#define DT_N_S_smbus4_P_i2c_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus4, i2c, 0) +#define DT_N_S_smbus4_P_i2c_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus4, i2c, 0, __VA_ARGS__) +#define DT_N_S_smbus4_P_i2c_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_smbus4, i2c, 0, __VA_ARGS__) +#define DT_N_S_smbus4_P_i2c_LEN 1 +#define DT_N_S_smbus4_P_i2c_EXISTS 1 #define DT_N_S_smbus4_P_status "disabled" #define DT_N_S_smbus4_P_status_STRING_UNQUOTED disabled #define DT_N_S_smbus4_P_status_STRING_TOKEN disabled #define DT_N_S_smbus4_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_smbus4_P_status_IDX_0 "disabled" #define DT_N_S_smbus4_P_status_IDX_0_EXISTS 1 -#define DT_N_S_smbus4_P_status_ENUM_IDX 2 -#define DT_N_S_smbus4_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_smbus4_P_status_ENUM_TOKEN disabled -#define DT_N_S_smbus4_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_smbus4_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_smbus4_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_smbus4_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus4, status, 0) #define DT_N_S_smbus4_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus4, status, 0) #define DT_N_S_smbus4_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus4, status, 0, __VA_ARGS__) @@ -5087,11 +5209,11 @@ #define DT_N_S_smbus4_P_status_LEN 1 #define DT_N_S_smbus4_P_status_EXISTS 1 #define DT_N_S_smbus4_P_compatible {"st,stm32-smbus"} +#define DT_N_S_smbus4_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_smbus4_P_compatible_IDX_0 "st,stm32-smbus" #define DT_N_S_smbus4_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-smbus #define DT_N_S_smbus4_P_compatible_IDX_0_STRING_TOKEN st_stm32_smbus #define DT_N_S_smbus4_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_SMBUS -#define DT_N_S_smbus4_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_smbus4_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus4, compatible, 0) #define DT_N_S_smbus4_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus4, compatible, 0) #define DT_N_S_smbus4_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus4, compatible, 0, __VA_ARGS__) @@ -5100,16 +5222,10 @@ #define DT_N_S_smbus4_P_compatible_EXISTS 1 #define DT_N_S_smbus4_P_zephyr_deferred_init 0 #define DT_N_S_smbus4_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_smbus4_P_i2c DT_N_S_soc_S_i2c_58001c00 -#define DT_N_S_smbus4_P_i2c_IDX_0 DT_N_S_soc_S_i2c_58001c00 -#define DT_N_S_smbus4_P_i2c_IDX_0_PH DT_N_S_soc_S_i2c_58001c00 -#define DT_N_S_smbus4_P_i2c_IDX_0_EXISTS 1 -#define DT_N_S_smbus4_P_i2c_FOREACH_PROP_ELEM(fn) fn(DT_N_S_smbus4, i2c, 0) -#define DT_N_S_smbus4_P_i2c_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_smbus4, i2c, 0) -#define DT_N_S_smbus4_P_i2c_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_smbus4, i2c, 0, __VA_ARGS__) -#define DT_N_S_smbus4_P_i2c_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_smbus4, i2c, 0, __VA_ARGS__) -#define DT_N_S_smbus4_P_i2c_LEN 1 -#define DT_N_S_smbus4_P_i2c_EXISTS 1 +#define DT_N_S_smbus4_P_wakeup_source 0 +#define DT_N_S_smbus4_P_wakeup_source_EXISTS 1 +#define DT_N_S_smbus4_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_smbus4_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /vbat @@ -5128,12 +5244,15 @@ /* Node's name with unit-address: */ #define DT_N_S_vbat_FULL_NAME "vbat" +#define DT_N_S_vbat_FULL_NAME_UNQUOTED vbat +#define DT_N_S_vbat_FULL_NAME_TOKEN vbat +#define DT_N_S_vbat_FULL_NAME_UPPER_TOKEN VBAT /* Node parent (/) identifier: */ #define DT_N_S_vbat_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_vbat_CHILD_IDX 7 +#define DT_N_S_vbat_CHILD_IDX 8 /* Helpers for dealing with node labels: */ #define DT_N_S_vbat_NODELABEL_NUM 1 @@ -5158,8 +5277,8 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_vbat_REQUIRES_ORDS \ - 0, /* / */ \ - 13, /* /soc/adc@58026000 */ + 0, \ + 13, /* Ordinals for what depends directly on this node: */ #define DT_N_S_vbat_SUPPORTS_ORDS /* nothing */ @@ -5186,20 +5305,26 @@ #define DT_N_S_vbat_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_vbat_P_wakeup_source 0 -#define DT_N_S_vbat_P_wakeup_source_EXISTS 1 -#define DT_N_S_vbat_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_vbat_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_vbat_P_io_channels_IDX_0_EXISTS 1 +#define DT_N_S_vbat_P_io_channels_IDX_0_PH DT_N_S_soc_S_adc_58026000 +#define DT_N_S_vbat_P_io_channels_IDX_0_VAL_input 17 +#define DT_N_S_vbat_P_io_channels_IDX_0_VAL_input_EXISTS 1 +#define DT_N_S_vbat_P_io_channels_FOREACH_PROP_ELEM(fn) fn(DT_N_S_vbat, io_channels, 0) +#define DT_N_S_vbat_P_io_channels_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_vbat, io_channels, 0) +#define DT_N_S_vbat_P_io_channels_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_vbat, io_channels, 0, __VA_ARGS__) +#define DT_N_S_vbat_P_io_channels_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_vbat, io_channels, 0, __VA_ARGS__) +#define DT_N_S_vbat_P_io_channels_LEN 1 +#define DT_N_S_vbat_P_io_channels_EXISTS 1 +#define DT_N_S_vbat_P_ratio 4 +#define DT_N_S_vbat_P_ratio_EXISTS 1 #define DT_N_S_vbat_P_status "disabled" #define DT_N_S_vbat_P_status_STRING_UNQUOTED disabled #define DT_N_S_vbat_P_status_STRING_TOKEN disabled #define DT_N_S_vbat_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_vbat_P_status_IDX_0 "disabled" #define DT_N_S_vbat_P_status_IDX_0_EXISTS 1 -#define DT_N_S_vbat_P_status_ENUM_IDX 2 -#define DT_N_S_vbat_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_vbat_P_status_ENUM_TOKEN disabled -#define DT_N_S_vbat_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_vbat_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_vbat_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_vbat_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_vbat, status, 0) #define DT_N_S_vbat_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_vbat, status, 0) #define DT_N_S_vbat_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_vbat, status, 0, __VA_ARGS__) @@ -5207,31 +5332,23 @@ #define DT_N_S_vbat_P_status_LEN 1 #define DT_N_S_vbat_P_status_EXISTS 1 #define DT_N_S_vbat_P_compatible {"st,stm32-vbat"} +#define DT_N_S_vbat_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_vbat_P_compatible_IDX_0 "st,stm32-vbat" #define DT_N_S_vbat_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-vbat #define DT_N_S_vbat_P_compatible_IDX_0_STRING_TOKEN st_stm32_vbat #define DT_N_S_vbat_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_VBAT -#define DT_N_S_vbat_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_vbat_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_vbat, compatible, 0) #define DT_N_S_vbat_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_vbat, compatible, 0) #define DT_N_S_vbat_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_vbat, compatible, 0, __VA_ARGS__) #define DT_N_S_vbat_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_vbat, compatible, 0, __VA_ARGS__) #define DT_N_S_vbat_P_compatible_LEN 1 #define DT_N_S_vbat_P_compatible_EXISTS 1 -#define DT_N_S_vbat_P_io_channels_IDX_0_EXISTS 1 -#define DT_N_S_vbat_P_io_channels_IDX_0_PH DT_N_S_soc_S_adc_58026000 -#define DT_N_S_vbat_P_io_channels_IDX_0_VAL_input 17 -#define DT_N_S_vbat_P_io_channels_IDX_0_VAL_input_EXISTS 1 -#define DT_N_S_vbat_P_io_channels_FOREACH_PROP_ELEM(fn) fn(DT_N_S_vbat, io_channels, 0) -#define DT_N_S_vbat_P_io_channels_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_vbat, io_channels, 0) -#define DT_N_S_vbat_P_io_channels_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_vbat, io_channels, 0, __VA_ARGS__) -#define DT_N_S_vbat_P_io_channels_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_vbat, io_channels, 0, __VA_ARGS__) -#define DT_N_S_vbat_P_io_channels_LEN 1 -#define DT_N_S_vbat_P_io_channels_EXISTS 1 #define DT_N_S_vbat_P_zephyr_deferred_init 0 #define DT_N_S_vbat_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_vbat_P_ratio 4 -#define DT_N_S_vbat_P_ratio_EXISTS 1 +#define DT_N_S_vbat_P_wakeup_source 0 +#define DT_N_S_vbat_P_wakeup_source_EXISTS 1 +#define DT_N_S_vbat_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_vbat_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /vref @@ -5250,12 +5367,15 @@ /* Node's name with unit-address: */ #define DT_N_S_vref_FULL_NAME "vref" +#define DT_N_S_vref_FULL_NAME_UNQUOTED vref +#define DT_N_S_vref_FULL_NAME_TOKEN vref +#define DT_N_S_vref_FULL_NAME_UPPER_TOKEN VREF /* Node parent (/) identifier: */ #define DT_N_S_vref_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_vref_CHILD_IDX 8 +#define DT_N_S_vref_CHILD_IDX 9 /* Helpers for dealing with node labels: */ #define DT_N_S_vref_NODELABEL_NUM 1 @@ -5280,8 +5400,8 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_vref_REQUIRES_ORDS \ - 0, /* / */ \ - 13, /* /soc/adc@58026000 */ + 0, \ + 13, /* Ordinals for what depends directly on this node: */ #define DT_N_S_vref_SUPPORTS_ORDS /* nothing */ @@ -5308,20 +5428,18 @@ #define DT_N_S_vref_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_vref_P_wakeup_source 0 -#define DT_N_S_vref_P_wakeup_source_EXISTS 1 -#define DT_N_S_vref_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_vref_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_vref_P_vrefint_cal_addr 535947360 +#define DT_N_S_vref_P_vrefint_cal_addr_EXISTS 1 +#define DT_N_S_vref_P_vrefint_cal_mv 3300 +#define DT_N_S_vref_P_vrefint_cal_mv_EXISTS 1 #define DT_N_S_vref_P_status "disabled" #define DT_N_S_vref_P_status_STRING_UNQUOTED disabled #define DT_N_S_vref_P_status_STRING_TOKEN disabled #define DT_N_S_vref_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_vref_P_status_IDX_0 "disabled" #define DT_N_S_vref_P_status_IDX_0_EXISTS 1 -#define DT_N_S_vref_P_status_ENUM_IDX 2 -#define DT_N_S_vref_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_vref_P_status_ENUM_TOKEN disabled -#define DT_N_S_vref_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_vref_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_vref_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_vref_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_vref, status, 0) #define DT_N_S_vref_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_vref, status, 0) #define DT_N_S_vref_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_vref, status, 0, __VA_ARGS__) @@ -5329,11 +5447,11 @@ #define DT_N_S_vref_P_status_LEN 1 #define DT_N_S_vref_P_status_EXISTS 1 #define DT_N_S_vref_P_compatible {"st,stm32-vref"} +#define DT_N_S_vref_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_vref_P_compatible_IDX_0 "st,stm32-vref" #define DT_N_S_vref_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-vref #define DT_N_S_vref_P_compatible_IDX_0_STRING_TOKEN st_stm32_vref #define DT_N_S_vref_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_VREF -#define DT_N_S_vref_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_vref_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_vref, compatible, 0) #define DT_N_S_vref_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_vref, compatible, 0) #define DT_N_S_vref_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_vref, compatible, 0, __VA_ARGS__) @@ -5352,10 +5470,10 @@ #define DT_N_S_vref_P_io_channels_EXISTS 1 #define DT_N_S_vref_P_zephyr_deferred_init 0 #define DT_N_S_vref_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_vref_P_vrefint_cal_addr 535947360 -#define DT_N_S_vref_P_vrefint_cal_addr_EXISTS 1 -#define DT_N_S_vref_P_vrefint_cal_mv 3300 -#define DT_N_S_vref_P_vrefint_cal_mv_EXISTS 1 +#define DT_N_S_vref_P_wakeup_source 0 +#define DT_N_S_vref_P_wakeup_source_EXISTS 1 +#define DT_N_S_vref_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_vref_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /gpio@deadbeef @@ -5374,12 +5492,15 @@ /* Node's name with unit-address: */ #define DT_N_S_gpio_deadbeef_FULL_NAME "gpio@deadbeef" +#define DT_N_S_gpio_deadbeef_FULL_NAME_UNQUOTED gpio@deadbeef +#define DT_N_S_gpio_deadbeef_FULL_NAME_TOKEN gpio_deadbeef +#define DT_N_S_gpio_deadbeef_FULL_NAME_UPPER_TOKEN GPIO_DEADBEEF /* Node parent (/) identifier: */ #define DT_N_S_gpio_deadbeef_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_gpio_deadbeef_CHILD_IDX 23 +#define DT_N_S_gpio_deadbeef_CHILD_IDX 24 /* Helpers for dealing with node labels: */ #define DT_N_S_gpio_deadbeef_NODELABEL_NUM 1 @@ -5404,11 +5525,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_gpio_deadbeef_REQUIRES_ORDS \ - 0, /* / */ + 0, /* Ordinals for what depends directly on this node: */ #define DT_N_S_gpio_deadbeef_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ + 93, /* Existence and alternate IDs: */ #define DT_N_S_gpio_deadbeef_EXISTS 1 @@ -5418,8 +5539,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_gpio_deadbeef_REG_NUM 1 #define DT_N_S_gpio_deadbeef_REG_IDX_0_EXISTS 1 -#define DT_N_S_gpio_deadbeef_REG_IDX_0_VAL_ADDRESS 3735928559 /* 0xdeadbeef */ -#define DT_N_S_gpio_deadbeef_REG_IDX_0_VAL_SIZE 4096 /* 0x1000 */ +#define DT_N_S_gpio_deadbeef_REG_IDX_0_VAL_ADDRESS 3735928559 +#define DT_N_S_gpio_deadbeef_REG_IDX_0_VAL_SIZE 4096 #define DT_N_S_gpio_deadbeef_RANGES_NUM 0 #define DT_N_S_gpio_deadbeef_FOREACH_RANGE(fn) #define DT_N_S_gpio_deadbeef_IRQ_NUM 0 @@ -5435,24 +5556,24 @@ #define DT_N_S_gpio_deadbeef_PINCTRL_NUM 0 /* Generic property macros: */ +#define DT_N_S_gpio_deadbeef_P_reg {3735928559, 4096} +#define DT_N_S_gpio_deadbeef_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_gpio_deadbeef_P_reg_IDX_0 3735928559 +#define DT_N_S_gpio_deadbeef_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_gpio_deadbeef_P_reg_IDX_1 4096 +#define DT_N_S_gpio_deadbeef_P_reg_EXISTS 1 #define DT_N_S_gpio_deadbeef_P_gpio_controller 1 #define DT_N_S_gpio_deadbeef_P_gpio_controller_EXISTS 1 #define DT_N_S_gpio_deadbeef_P_ngpios 32 #define DT_N_S_gpio_deadbeef_P_ngpios_EXISTS 1 -#define DT_N_S_gpio_deadbeef_P_wakeup_source 0 -#define DT_N_S_gpio_deadbeef_P_wakeup_source_EXISTS 1 -#define DT_N_S_gpio_deadbeef_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_gpio_deadbeef_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_gpio_deadbeef_P_status "okay" #define DT_N_S_gpio_deadbeef_P_status_STRING_UNQUOTED okay #define DT_N_S_gpio_deadbeef_P_status_STRING_TOKEN okay #define DT_N_S_gpio_deadbeef_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_gpio_deadbeef_P_status_IDX_0 "okay" #define DT_N_S_gpio_deadbeef_P_status_IDX_0_EXISTS 1 -#define DT_N_S_gpio_deadbeef_P_status_ENUM_IDX 1 -#define DT_N_S_gpio_deadbeef_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_gpio_deadbeef_P_status_ENUM_TOKEN okay -#define DT_N_S_gpio_deadbeef_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_gpio_deadbeef_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_gpio_deadbeef_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_gpio_deadbeef_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_gpio_deadbeef, status, 0) #define DT_N_S_gpio_deadbeef_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_gpio_deadbeef, status, 0) #define DT_N_S_gpio_deadbeef_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_gpio_deadbeef, status, 0, __VA_ARGS__) @@ -5460,25 +5581,23 @@ #define DT_N_S_gpio_deadbeef_P_status_LEN 1 #define DT_N_S_gpio_deadbeef_P_status_EXISTS 1 #define DT_N_S_gpio_deadbeef_P_compatible {"vnd,gpio"} +#define DT_N_S_gpio_deadbeef_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_gpio_deadbeef_P_compatible_IDX_0 "vnd,gpio" #define DT_N_S_gpio_deadbeef_P_compatible_IDX_0_STRING_UNQUOTED vnd,gpio #define DT_N_S_gpio_deadbeef_P_compatible_IDX_0_STRING_TOKEN vnd_gpio #define DT_N_S_gpio_deadbeef_P_compatible_IDX_0_STRING_UPPER_TOKEN VND_GPIO -#define DT_N_S_gpio_deadbeef_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_gpio_deadbeef_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_gpio_deadbeef, compatible, 0) #define DT_N_S_gpio_deadbeef_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_gpio_deadbeef, compatible, 0) #define DT_N_S_gpio_deadbeef_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_gpio_deadbeef, compatible, 0, __VA_ARGS__) #define DT_N_S_gpio_deadbeef_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_gpio_deadbeef, compatible, 0, __VA_ARGS__) #define DT_N_S_gpio_deadbeef_P_compatible_LEN 1 #define DT_N_S_gpio_deadbeef_P_compatible_EXISTS 1 -#define DT_N_S_gpio_deadbeef_P_reg {3735928559 /* 0xdeadbeef */, 4096 /* 0x1000 */} -#define DT_N_S_gpio_deadbeef_P_reg_IDX_0 3735928559 -#define DT_N_S_gpio_deadbeef_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_gpio_deadbeef_P_reg_IDX_1 4096 -#define DT_N_S_gpio_deadbeef_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_gpio_deadbeef_P_reg_EXISTS 1 #define DT_N_S_gpio_deadbeef_P_zephyr_deferred_init 0 #define DT_N_S_gpio_deadbeef_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_gpio_deadbeef_P_wakeup_source 0 +#define DT_N_S_gpio_deadbeef_P_wakeup_source_EXISTS 1 +#define DT_N_S_gpio_deadbeef_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_gpio_deadbeef_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/adc1_inp0_pa0_c @@ -5494,6 +5613,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_FULL_NAME "adc1_inp0_pa0_c" +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_FULL_NAME_UNQUOTED adc1_inp0_pa0_c +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_FULL_NAME_TOKEN adc1_inp0_pa0_c +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_FULL_NAME_UPPER_TOKEN ADC1_INP0_PA0_C /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -5524,11 +5646,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_SUPPORTS_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_EXISTS 1 @@ -5546,20 +5668,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_pinmux 16 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate "low-speed" @@ -5568,16 +5676,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/adc1_inp10_pc0 @@ -5593,6 +5713,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_FULL_NAME "adc1_inp10_pc0" +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_FULL_NAME_UNQUOTED adc1_inp10_pc0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_FULL_NAME_TOKEN adc1_inp10_pc0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_FULL_NAME_UPPER_TOKEN ADC1_INP10_PC0 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -5623,11 +5746,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_SUPPORTS_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_EXISTS 1 @@ -5645,20 +5768,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_pinmux 1040 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate "low-speed" @@ -5667,16 +5776,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/adc1_inp12_pc2 @@ -5692,6 +5813,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_FULL_NAME "adc1_inp12_pc2" +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_FULL_NAME_UNQUOTED adc1_inp12_pc2 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_FULL_NAME_TOKEN adc1_inp12_pc2 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_FULL_NAME_UPPER_TOKEN ADC1_INP12_PC2 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -5722,11 +5846,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_SUPPORTS_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_EXISTS 1 @@ -5744,20 +5868,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_pinmux 1104 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate "low-speed" @@ -5766,16 +5876,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/adc1_inp13_pc3 @@ -5791,6 +5913,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_FULL_NAME "adc1_inp13_pc3" +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_FULL_NAME_UNQUOTED adc1_inp13_pc3 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_FULL_NAME_TOKEN adc1_inp13_pc3 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_FULL_NAME_UPPER_TOKEN ADC1_INP13_PC3 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -5821,11 +5946,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_SUPPORTS_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_EXISTS 1 @@ -5843,20 +5968,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_pinmux 1136 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate "low-speed" @@ -5865,16 +5976,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/adc1_inp16_pa0 @@ -5890,6 +6013,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_FULL_NAME "adc1_inp16_pa0" +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_FULL_NAME_UNQUOTED adc1_inp16_pa0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_FULL_NAME_TOKEN adc1_inp16_pa0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_FULL_NAME_UPPER_TOKEN ADC1_INP16_PA0 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -5920,11 +6046,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_SUPPORTS_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_EXISTS 1 @@ -5942,20 +6068,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_pinmux 16 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate "low-speed" @@ -5964,16 +6076,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/adc1_inp18_pa4 @@ -5989,6 +6113,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_FULL_NAME "adc1_inp18_pa4" +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_FULL_NAME_UNQUOTED adc1_inp18_pa4 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_FULL_NAME_TOKEN adc1_inp18_pa4 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_FULL_NAME_UPPER_TOKEN ADC1_INP18_PA4 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -6019,11 +6146,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_SUPPORTS_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_EXISTS 1 @@ -6041,20 +6168,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_pinmux 144 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate "low-speed" @@ -6063,16 +6176,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/adc1_inp19_pa5 @@ -6088,6 +6213,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_FULL_NAME "adc1_inp19_pa5" +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_FULL_NAME_UNQUOTED adc1_inp19_pa5 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_FULL_NAME_TOKEN adc1_inp19_pa5 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_FULL_NAME_UPPER_TOKEN ADC1_INP19_PA5 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -6118,11 +6246,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_SUPPORTS_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_EXISTS 1 @@ -6140,20 +6268,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_pinmux 176 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate "low-speed" @@ -6162,16 +6276,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/adc1_inp1_pa1_c @@ -6187,6 +6313,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_FULL_NAME "adc1_inp1_pa1_c" +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_FULL_NAME_UNQUOTED adc1_inp1_pa1_c +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_FULL_NAME_TOKEN adc1_inp1_pa1_c +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_FULL_NAME_UPPER_TOKEN ADC1_INP1_PA1_C /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -6217,11 +6346,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_SUPPORTS_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_EXISTS 1 @@ -6239,20 +6368,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_pinmux 48 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate "low-speed" @@ -6261,16 +6376,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/adc1_inp4_pc4 @@ -6286,6 +6413,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_FULL_NAME "adc1_inp4_pc4" +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_FULL_NAME_UNQUOTED adc1_inp4_pc4 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_FULL_NAME_TOKEN adc1_inp4_pc4 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_FULL_NAME_UPPER_TOKEN ADC1_INP4_PC4 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -6316,11 +6446,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_SUPPORTS_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_EXISTS 1 @@ -6338,20 +6468,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_pinmux 1168 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate "low-speed" @@ -6360,16 +6476,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/adc1_inp5_pb1 @@ -6385,6 +6513,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_FULL_NAME "adc1_inp5_pb1" +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_FULL_NAME_UNQUOTED adc1_inp5_pb1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_FULL_NAME_TOKEN adc1_inp5_pb1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_FULL_NAME_UPPER_TOKEN ADC1_INP5_PB1 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -6415,11 +6546,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_SUPPORTS_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_EXISTS 1 @@ -6437,20 +6568,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_pinmux 560 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate "low-speed" @@ -6459,16 +6576,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/adc1_inp8_pc5 @@ -6484,6 +6613,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_FULL_NAME "adc1_inp8_pc5" +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_FULL_NAME_UNQUOTED adc1_inp8_pc5 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_FULL_NAME_TOKEN adc1_inp8_pc5 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_FULL_NAME_UPPER_TOKEN ADC1_INP8_PC5 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -6514,11 +6646,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_SUPPORTS_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_EXISTS 1 @@ -6536,20 +6668,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_pinmux 1200 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate "low-speed" @@ -6558,16 +6676,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/adc1_inp9_pb0 @@ -6583,6 +6713,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_FULL_NAME "adc1_inp9_pb0" +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_FULL_NAME_UNQUOTED adc1_inp9_pb0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_FULL_NAME_TOKEN adc1_inp9_pb0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_FULL_NAME_UPPER_TOKEN ADC1_INP9_PB0 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -6613,11 +6746,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_SUPPORTS_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_EXISTS 1 @@ -6635,20 +6768,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_pinmux 528 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate "low-speed" @@ -6657,16 +6776,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0_P_output_high_EXISTS 1 /* * Devicetree node: /soc/adc@40022000 @@ -6685,6 +6816,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_40022000_FULL_NAME "adc@40022000" +#define DT_N_S_soc_S_adc_40022000_FULL_NAME_UNQUOTED adc@40022000 +#define DT_N_S_soc_S_adc_40022000_FULL_NAME_TOKEN adc_40022000 +#define DT_N_S_soc_S_adc_40022000_FULL_NAME_UPPER_TOKEN ADC_40022000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_adc_40022000_PARENT DT_N_S_soc @@ -6715,37 +6849,37 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_40022000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 39, /* /soc/pin-controller@58020000/adc1_inp0_pa0_c */ \ - 40, /* /soc/pin-controller@58020000/adc1_inp10_pc0 */ \ - 41, /* /soc/pin-controller@58020000/adc1_inp12_pc2 */ \ - 42, /* /soc/pin-controller@58020000/adc1_inp13_pc3 */ \ - 43, /* /soc/pin-controller@58020000/adc1_inp16_pa0 */ \ - 44, /* /soc/pin-controller@58020000/adc1_inp18_pa4 */ \ - 45, /* /soc/pin-controller@58020000/adc1_inp19_pa5 */ \ - 46, /* /soc/pin-controller@58020000/adc1_inp1_pa1_c */ \ - 47, /* /soc/pin-controller@58020000/adc1_inp4_pc4 */ \ - 48, /* /soc/pin-controller@58020000/adc1_inp5_pb1 */ \ - 49, /* /soc/pin-controller@58020000/adc1_inp8_pc5 */ \ - 50, /* /soc/pin-controller@58020000/adc1_inp9_pb0 */ + 4, \ + 5, \ + 9, \ + 39, \ + 40, \ + 41, \ + 42, \ + 43, \ + 44, \ + 45, \ + 46, \ + 47, \ + 48, \ + 49, \ + 50, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_40022000_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ \ - 148, /* /soc/adc@40022000/channel@0 */ \ - 149, /* /soc/adc@40022000/channel@1 */ \ - 150, /* /soc/adc@40022000/channel@4 */ \ - 151, /* /soc/adc@40022000/channel@5 */ \ - 152, /* /soc/adc@40022000/channel@8 */ \ - 153, /* /soc/adc@40022000/channel@9 */ \ - 154, /* /soc/adc@40022000/channel@a */ \ - 155, /* /soc/adc@40022000/channel@c */ \ - 156, /* /soc/adc@40022000/channel@d */ \ - 157, /* /soc/adc@40022000/channel@10 */ \ - 158, /* /soc/adc@40022000/channel@12 */ \ - 159, /* /soc/adc@40022000/channel@13 */ + 93, \ + 151, \ + 152, \ + 153, \ + 154, \ + 155, \ + 156, \ + 157, \ + 158, \ + 159, \ + 160, \ + 161, \ + 162, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_adc_40022000_EXISTS 1 @@ -6755,8 +6889,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_40022000_REG_NUM 1 #define DT_N_S_soc_S_adc_40022000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_REG_IDX_0_VAL_ADDRESS 1073881088 /* 0x40022000 */ -#define DT_N_S_soc_S_adc_40022000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_adc_40022000_REG_IDX_0_VAL_ADDRESS 1073881088 +#define DT_N_S_soc_S_adc_40022000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_adc_40022000_RANGES_NUM 0 #define DT_N_S_soc_S_adc_40022000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_40022000_IRQ_NUM 1 @@ -6796,20 +6930,139 @@ #define DT_N_S_soc_S_adc_40022000_PINCTRL_NAME_default_IDX_11_PH DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c /* Generic property macros: */ -#define DT_N_S_soc_S_adc_40022000_P_wakeup_source 0 -#define DT_N_S_soc_S_adc_40022000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_adc_40022000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_reg {1073881088, 1024} +#define DT_N_S_soc_S_adc_40022000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_reg_IDX_0 1073881088 +#define DT_N_S_soc_S_adc_40022000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_adc_40022000_P_reg_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_adc_40022000_P_clocks_IDX_0_VAL_bus 216 +#define DT_N_S_soc_S_adc_40022000_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_clocks_IDX_0_VAL_bits 32 +#define DT_N_S_soc_S_adc_40022000_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000, clocks, 0) +#define DT_N_S_soc_S_adc_40022000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000, clocks, 0) +#define DT_N_S_soc_S_adc_40022000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_40022000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_40022000_P_clocks_LEN 1 +#define DT_N_S_soc_S_adc_40022000_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_interrupts {18, 0} +#define DT_N_S_soc_S_adc_40022000_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_interrupts_IDX_0 18 +#define DT_N_S_soc_S_adc_40022000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_adc_40022000_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_st_adc_clock_source 1 +#define DT_N_S_soc_S_adc_40022000_P_st_adc_clock_source_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_adc_40022000_P_st_adc_clock_source_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_st_adc_clock_source_IDX_0_ENUM_VAL_1_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_st_adc_clock_source_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_st_adc_prescaler 4 +#define DT_N_S_soc_S_adc_40022000_P_st_adc_prescaler_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_adc_40022000_P_st_adc_prescaler_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_st_adc_prescaler_IDX_0_ENUM_VAL_4_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_st_adc_prescaler_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_vref_mv 3300 +#define DT_N_S_soc_S_adc_40022000_P_vref_mv_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_resolutions {8446476, 7725580, 6742540, 5497356, 4710924} +#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_0 8446476 +#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_1 7725580 +#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_2 6742540 +#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_3 5497356 +#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_4_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_4 4710924 +#define DT_N_S_soc_S_adc_40022000_P_resolutions_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000, resolutions, 0) \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 1) \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 2) \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 3) \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 4) +#define DT_N_S_soc_S_adc_40022000_P_resolutions_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000, resolutions, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 1) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 2) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 3) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 4) +#define DT_N_S_soc_S_adc_40022000_P_resolutions_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000, resolutions, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 1, __VA_ARGS__) \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 2, __VA_ARGS__) \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 3, __VA_ARGS__) \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 4, __VA_ARGS__) +#define DT_N_S_soc_S_adc_40022000_P_resolutions_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022000, resolutions, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 1, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 2, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 3, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, resolutions, 4, __VA_ARGS__) +#define DT_N_S_soc_S_adc_40022000_P_resolutions_LEN 5 +#define DT_N_S_soc_S_adc_40022000_P_resolutions_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times {2, 3, 9, 17, 33, 65, 388, 811} +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_0 2 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_1 3 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_2 9 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_3 17 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_4_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_4 33 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_5_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_5 65 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_6_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_6 388 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_7_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_7 811 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000, sampling_times, 0) \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 1) \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 2) \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 3) \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 4) \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 5) \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 6) \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 7) +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000, sampling_times, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 1) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 2) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 3) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 4) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 5) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 6) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 7) +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000, sampling_times, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 1, __VA_ARGS__) \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 2, __VA_ARGS__) \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 3, __VA_ARGS__) \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 4, __VA_ARGS__) \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 5, __VA_ARGS__) \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 6, __VA_ARGS__) \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 7, __VA_ARGS__) +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022000, sampling_times, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 1, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 2, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 3, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 4, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 5, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 6, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_adc_40022000, sampling_times, 7, __VA_ARGS__) +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_LEN 8 +#define DT_N_S_soc_S_adc_40022000_P_sampling_times_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_st_adc_sequencer 1 +#define DT_N_S_soc_S_adc_40022000_P_st_adc_sequencer_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_adc_40022000_P_st_adc_sequencer_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_st_adc_sequencer_IDX_0_ENUM_VAL_1_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_st_adc_sequencer_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_P_status "okay" #define DT_N_S_soc_S_adc_40022000_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_adc_40022000_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_adc_40022000_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_adc_40022000_P_status_IDX_0 "okay" #define DT_N_S_soc_S_adc_40022000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_adc_40022000_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_adc_40022000_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_adc_40022000_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_adc_40022000_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000, status, 0) #define DT_N_S_soc_S_adc_40022000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000, status, 0) #define DT_N_S_soc_S_adc_40022000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000, status, 0, __VA_ARGS__) @@ -6817,43 +7070,23 @@ #define DT_N_S_soc_S_adc_40022000_P_status_LEN 1 #define DT_N_S_soc_S_adc_40022000_P_status_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_P_compatible {"st,stm32-adc"} +#define DT_N_S_soc_S_adc_40022000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_P_compatible_IDX_0 "st,stm32-adc" #define DT_N_S_soc_S_adc_40022000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-adc #define DT_N_S_soc_S_adc_40022000_P_compatible_IDX_0_STRING_TOKEN st_stm32_adc #define DT_N_S_soc_S_adc_40022000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_ADC -#define DT_N_S_soc_S_adc_40022000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000, compatible, 0) #define DT_N_S_soc_S_adc_40022000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000, compatible, 0) #define DT_N_S_soc_S_adc_40022000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_adc_40022000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_adc_40022000_P_compatible_LEN 1 #define DT_N_S_soc_S_adc_40022000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_reg {1073881088 /* 0x40022000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_adc_40022000_P_reg_IDX_0 1073881088 -#define DT_N_S_soc_S_adc_40022000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_adc_40022000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_interrupts {18 /* 0x12 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_adc_40022000_P_interrupts_IDX_0 18 -#define DT_N_S_soc_S_adc_40022000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_adc_40022000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_interrupts_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_adc_40022000_P_clocks_IDX_0_VAL_bus 216 -#define DT_N_S_soc_S_adc_40022000_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_clocks_IDX_0_VAL_bits 32 -#define DT_N_S_soc_S_adc_40022000_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000, clocks, 0) -#define DT_N_S_soc_S_adc_40022000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000, clocks, 0) -#define DT_N_S_soc_S_adc_40022000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_40022000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_40022000_P_clocks_LEN 1 -#define DT_N_S_soc_S_adc_40022000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_adc_40022000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_wakeup_source 0 +#define DT_N_S_soc_S_adc_40022000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_adc_40022000_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4 #define DT_N_S_soc_S_adc_40022000_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4 #define DT_N_S_soc_S_adc_40022000_P_pinctrl_0_IDX_0_EXISTS 1 @@ -6941,115 +7174,17 @@ #define DT_N_S_soc_S_adc_40022000_P_pinctrl_0_LEN 12 #define DT_N_S_soc_S_adc_40022000_P_pinctrl_0_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_adc_40022000_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_P_pinctrl_names_IDX_0 "default" #define DT_N_S_soc_S_adc_40022000_P_pinctrl_names_IDX_0_STRING_UNQUOTED default #define DT_N_S_soc_S_adc_40022000_P_pinctrl_names_IDX_0_STRING_TOKEN default #define DT_N_S_soc_S_adc_40022000_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_adc_40022000_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000, pinctrl_names, 0) #define DT_N_S_soc_S_adc_40022000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000, pinctrl_names, 0) #define DT_N_S_soc_S_adc_40022000_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_adc_40022000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022000, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_adc_40022000_P_pinctrl_names_LEN 1 #define DT_N_S_soc_S_adc_40022000_P_pinctrl_names_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_st_adc_clock_source 1 -#define DT_N_S_soc_S_adc_40022000_P_st_adc_clock_source_ENUM_IDX 0 -#define DT_N_S_soc_S_adc_40022000_P_st_adc_clock_source_ENUM_VAL_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_st_adc_clock_source_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_st_adc_prescaler 4 -#define DT_N_S_soc_S_adc_40022000_P_st_adc_prescaler_ENUM_IDX 2 -#define DT_N_S_soc_S_adc_40022000_P_st_adc_prescaler_ENUM_VAL_4_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_st_adc_prescaler_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_vref_mv 3300 -#define DT_N_S_soc_S_adc_40022000_P_vref_mv_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_resolutions {8446476 /* 0x80e20c */, 7725580 /* 0x75e20c */, 6742540 /* 0x66e20c */, 5497356 /* 0x53e20c */, 4710924 /* 0x47e20c */} -#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_0 8446476 -#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_1 7725580 -#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_2 6742540 -#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_3 5497356 -#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_4 4710924 -#define DT_N_S_soc_S_adc_40022000_P_resolutions_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_resolutions_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000, resolutions, 0) \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 1) \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 2) \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 3) \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 4) -#define DT_N_S_soc_S_adc_40022000_P_resolutions_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000, resolutions, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 1) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 2) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 3) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 4) -#define DT_N_S_soc_S_adc_40022000_P_resolutions_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000, resolutions, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 1, __VA_ARGS__) \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 2, __VA_ARGS__) \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 3, __VA_ARGS__) \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 4, __VA_ARGS__) -#define DT_N_S_soc_S_adc_40022000_P_resolutions_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022000, resolutions, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 1, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 2, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 3, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, resolutions, 4, __VA_ARGS__) -#define DT_N_S_soc_S_adc_40022000_P_resolutions_LEN 5 -#define DT_N_S_soc_S_adc_40022000_P_resolutions_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times {2 /* 0x2 */, 3 /* 0x3 */, 9 /* 0x9 */, 17 /* 0x11 */, 33 /* 0x21 */, 65 /* 0x41 */, 388 /* 0x184 */, 811 /* 0x32b */} -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_0 2 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_1 3 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_2 9 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_3 17 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_4 33 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_5 65 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_6 388 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_7 811 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_IDX_7_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000, sampling_times, 0) \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 1) \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 2) \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 3) \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 4) \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 5) \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 6) \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 7) -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000, sampling_times, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 1) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 2) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 3) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 4) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 5) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 6) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 7) -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000, sampling_times, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 1, __VA_ARGS__) \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 2, __VA_ARGS__) \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 3, __VA_ARGS__) \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 4, __VA_ARGS__) \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 5, __VA_ARGS__) \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 6, __VA_ARGS__) \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 7, __VA_ARGS__) -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022000, sampling_times, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 1, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 2, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 3, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 4, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 5, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 6, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_adc_40022000, sampling_times, 7, __VA_ARGS__) -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_LEN 8 -#define DT_N_S_soc_S_adc_40022000_P_sampling_times_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_st_adc_sequencer 1 -#define DT_N_S_soc_S_adc_40022000_P_st_adc_sequencer_ENUM_IDX 1 -#define DT_N_S_soc_S_adc_40022000_P_st_adc_sequencer_ENUM_VAL_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_P_st_adc_sequencer_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/usart2_rx_pd6 @@ -7065,6 +7200,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_FULL_NAME "usart2_rx_pd6" +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_FULL_NAME_UNQUOTED usart2_rx_pd6 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_FULL_NAME_TOKEN usart2_rx_pd6 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_FULL_NAME_UPPER_TOKEN USART2_RX_PD6 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -7095,11 +7233,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_SUPPORTS_ORDS \ - 55, /* /soc/serial@40004400 */ + 55, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_EXISTS 1 @@ -7117,20 +7255,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_pinmux 1735 #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate "low-speed" @@ -7139,16 +7263,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/usart2_tx_pd5 @@ -7164,6 +7300,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_FULL_NAME "usart2_tx_pd5" +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_FULL_NAME_UNQUOTED usart2_tx_pd5 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_FULL_NAME_TOKEN usart2_tx_pd5 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_FULL_NAME_UPPER_TOKEN USART2_TX_PD5 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -7194,11 +7333,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_SUPPORTS_ORDS \ - 55, /* /soc/serial@40004400 */ + 55, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_EXISTS 1 @@ -7216,20 +7355,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_pinmux 1703 #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate "low-speed" @@ -7238,16 +7363,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5_P_output_high_EXISTS 1 /* * Devicetree node: /soc/rcc@58024400/reset-controller @@ -7266,6 +7403,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_FULL_NAME "reset-controller" +#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_FULL_NAME_UNQUOTED reset-controller +#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_FULL_NAME_TOKEN reset_controller +#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_FULL_NAME_UPPER_TOKEN RESET_CONTROLLER /* Node parent (/soc/rcc@58024400) identifier: */ #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_PARENT DT_N_S_soc_S_rcc_58024400 @@ -7296,36 +7436,37 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_REQUIRES_ORDS \ - 9, /* /soc/rcc@58024400 */ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_SUPPORTS_ORDS \ - 55, /* /soc/serial@40004400 */ \ - 58, /* /soc/serial@40004c00 */ \ - 61, /* /soc/serial@40011000 */ \ - 64, /* /soc/serial@40011400 */ \ - 85, /* /soc/timers@40010000 */ \ - 124, /* /soc/dsihost@50000000 */ \ - 133, /* /soc/sdmmc@48022400 */ \ - 134, /* /soc/sdmmc@52007000 */ \ - 135, /* /soc/serial@40004800 */ \ - 136, /* /soc/serial@40005000 */ \ - 137, /* /soc/serial@40007c00 */ \ - 138, /* /soc/serial@58000c00 */ \ - 248, /* /soc/serial@40007800 */ \ - 251, /* /soc/timers@40000000 */ \ - 254, /* /soc/timers@40000400 */ \ - 257, /* /soc/timers@40000800 */ \ - 260, /* /soc/timers@40000c00 */ \ - 263, /* /soc/timers@40001000 */ \ - 265, /* /soc/timers@40001400 */ \ - 267, /* /soc/timers@40001800 */ \ - 270, /* /soc/timers@40001c00 */ \ - 273, /* /soc/timers@40002000 */ \ - 277, /* /soc/timers@40010400 */ \ - 279, /* /soc/timers@40014000 */ \ - 282, /* /soc/timers@40014400 */ \ - 285, /* /soc/timers@40014800 */ + 55, \ + 58, \ + 61, \ + 64, \ + 85, \ + 124, \ + 127, \ + 136, \ + 137, \ + 138, \ + 139, \ + 140, \ + 141, \ + 251, \ + 254, \ + 257, \ + 260, \ + 263, \ + 266, \ + 268, \ + 270, \ + 273, \ + 276, \ + 280, \ + 282, \ + 285, \ + 288, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_EXISTS 1 @@ -7349,16 +7490,14 @@ #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_wakeup_source 0 -#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_set_bit_to_deassert 0 +#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_set_bit_to_deassert_EXISTS 1 #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_compatible {"st,stm32-rcc-rctl"} +#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_compatible_IDX_0 "st,stm32-rcc-rctl" #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-rcc-rctl #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_compatible_IDX_0_STRING_TOKEN st_stm32_rcc_rctl #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_RCC_RCTL -#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_rcc_58024400_S_reset_controller, compatible, 0) #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_rcc_58024400_S_reset_controller, compatible, 0) #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_rcc_58024400_S_reset_controller, compatible, 0, __VA_ARGS__) @@ -7367,8 +7506,10 @@ #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_compatible_EXISTS 1 #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_set_bit_to_deassert 0 -#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_set_bit_to_deassert_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_wakeup_source 0 +#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_rcc_58024400_S_reset_controller_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/serial@40004400 @@ -7387,6 +7528,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_serial_40004400_FULL_NAME "serial@40004400" +#define DT_N_S_soc_S_serial_40004400_FULL_NAME_UNQUOTED serial@40004400 +#define DT_N_S_soc_S_serial_40004400_FULL_NAME_TOKEN serial_40004400 +#define DT_N_S_soc_S_serial_40004400_FULL_NAME_UPPER_TOKEN SERIAL_40004400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_serial_40004400_PARENT DT_N_S_soc @@ -7417,16 +7561,16 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_serial_40004400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 52, /* /soc/pin-controller@58020000/usart2_rx_pd6 */ \ - 53, /* /soc/pin-controller@58020000/usart2_tx_pd5 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 52, \ + 53, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_serial_40004400_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ + 93, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_serial_40004400_EXISTS 1 @@ -7437,8 +7581,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_serial_40004400_REG_NUM 1 #define DT_N_S_soc_S_serial_40004400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_REG_IDX_0_VAL_ADDRESS 1073759232 /* 0x40004400 */ -#define DT_N_S_soc_S_serial_40004400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_serial_40004400_REG_IDX_0_VAL_ADDRESS 1073759232 +#define DT_N_S_soc_S_serial_40004400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_serial_40004400_RANGES_NUM 0 #define DT_N_S_soc_S_serial_40004400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_serial_40004400_IRQ_NUM 1 @@ -7473,59 +7617,12 @@ #define DT_N_S_soc_S_serial_40004400_PINCTRL_NAME_default_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6 /* Generic property macros: */ -#define DT_N_S_soc_S_serial_40004400_P_wakeup_source 0 -#define DT_N_S_soc_S_serial_40004400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_serial_40004400_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_status "okay" -#define DT_N_S_soc_S_serial_40004400_P_status_STRING_UNQUOTED okay -#define DT_N_S_soc_S_serial_40004400_P_status_STRING_TOKEN okay -#define DT_N_S_soc_S_serial_40004400_P_status_STRING_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_serial_40004400_P_status_IDX_0 "okay" -#define DT_N_S_soc_S_serial_40004400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_serial_40004400_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_serial_40004400_P_status_ENUM_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_serial_40004400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004400, status, 0) -#define DT_N_S_soc_S_serial_40004400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004400, status, 0) -#define DT_N_S_soc_S_serial_40004400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004400, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004400_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004400, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004400_P_status_LEN 1 -#define DT_N_S_soc_S_serial_40004400_P_status_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_compatible {"st,stm32-usart", "st,stm32-uart"} -#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_0 "st,stm32-usart" -#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-usart -#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_0_STRING_TOKEN st_stm32_usart -#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_USART -#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_1 "st,stm32-uart" -#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-uart -#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_1_STRING_TOKEN st_stm32_uart -#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_UART -#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004400, compatible, 0) \ - fn(DT_N_S_soc_S_serial_40004400, compatible, 1) -#define DT_N_S_soc_S_serial_40004400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004400, compatible, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_serial_40004400, compatible, 1) -#define DT_N_S_soc_S_serial_40004400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004400, compatible, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_serial_40004400, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004400, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_serial_40004400, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004400_P_compatible_LEN 2 -#define DT_N_S_soc_S_serial_40004400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_reg {1073759232 /* 0x40004400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_serial_40004400_P_reg_IDX_0 1073759232 +#define DT_N_S_soc_S_serial_40004400_P_reg {1073759232, 1024} #define DT_N_S_soc_S_serial_40004400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_serial_40004400_P_reg_IDX_0 1073759232 #define DT_N_S_soc_S_serial_40004400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_reg_IDX_1 1024 #define DT_N_S_soc_S_serial_40004400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_interrupts {38 /* 0x26 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_serial_40004400_P_interrupts_IDX_0 38 -#define DT_N_S_soc_S_serial_40004400_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_serial_40004400_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_serial_40004400_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40004400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_serial_40004400_P_clocks_IDX_0_VAL_bus 232 @@ -7538,12 +7635,26 @@ #define DT_N_S_soc_S_serial_40004400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004400, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40004400_P_clocks_LEN 1 #define DT_N_S_soc_S_serial_40004400_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_serial_40004400_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_current_speed 115200 -#define DT_N_S_soc_S_serial_40004400_P_current_speed_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_hw_flow_control 0 -#define DT_N_S_soc_S_serial_40004400_P_hw_flow_control_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_serial_40004400_P_resets_IDX_0_VAL_id 4625 +#define DT_N_S_soc_S_serial_40004400_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004400, resets, 0) +#define DT_N_S_soc_S_serial_40004400_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004400, resets, 0) +#define DT_N_S_soc_S_serial_40004400_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004400, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004400_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004400, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004400_P_resets_LEN 1 +#define DT_N_S_soc_S_serial_40004400_P_resets_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_interrupts {38, 0} +#define DT_N_S_soc_S_serial_40004400_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_interrupts_IDX_0 38 +#define DT_N_S_soc_S_serial_40004400_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_serial_40004400_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_single_wire 0 +#define DT_N_S_soc_S_serial_40004400_P_single_wire_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_tx_rx_swap 0 +#define DT_N_S_soc_S_serial_40004400_P_tx_rx_swap_EXISTS 1 #define DT_N_S_soc_S_serial_40004400_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5 #define DT_N_S_soc_S_serial_40004400_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5 #define DT_N_S_soc_S_serial_40004400_P_pinctrl_0_IDX_0_EXISTS 1 @@ -7561,35 +7672,17 @@ #define DT_N_S_soc_S_serial_40004400_P_pinctrl_0_LEN 2 #define DT_N_S_soc_S_serial_40004400_P_pinctrl_0_EXISTS 1 #define DT_N_S_soc_S_serial_40004400_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_serial_40004400_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40004400_P_pinctrl_names_IDX_0 "default" #define DT_N_S_soc_S_serial_40004400_P_pinctrl_names_IDX_0_STRING_UNQUOTED default #define DT_N_S_soc_S_serial_40004400_P_pinctrl_names_IDX_0_STRING_TOKEN default #define DT_N_S_soc_S_serial_40004400_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_serial_40004400_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40004400_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004400, pinctrl_names, 0) #define DT_N_S_soc_S_serial_40004400_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004400, pinctrl_names, 0) #define DT_N_S_soc_S_serial_40004400_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004400, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40004400_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004400, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40004400_P_pinctrl_names_LEN 1 #define DT_N_S_soc_S_serial_40004400_P_pinctrl_names_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_serial_40004400_P_resets_IDX_0_VAL_id 4625 -#define DT_N_S_soc_S_serial_40004400_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004400, resets, 0) -#define DT_N_S_soc_S_serial_40004400_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004400, resets, 0) -#define DT_N_S_soc_S_serial_40004400_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004400, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004400_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004400, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004400_P_resets_LEN 1 -#define DT_N_S_soc_S_serial_40004400_P_resets_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_tx_invert 0 -#define DT_N_S_soc_S_serial_40004400_P_tx_invert_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_rx_invert 0 -#define DT_N_S_soc_S_serial_40004400_P_rx_invert_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_single_wire 0 -#define DT_N_S_soc_S_serial_40004400_P_single_wire_EXISTS 1 -#define DT_N_S_soc_S_serial_40004400_P_tx_rx_swap 0 -#define DT_N_S_soc_S_serial_40004400_P_tx_rx_swap_EXISTS 1 #define DT_N_S_soc_S_serial_40004400_P_de_enable 0 #define DT_N_S_soc_S_serial_40004400_P_de_enable_EXISTS 1 #define DT_N_S_soc_S_serial_40004400_P_de_assert_time 0 @@ -7600,6 +7693,55 @@ #define DT_N_S_soc_S_serial_40004400_P_de_invert_EXISTS 1 #define DT_N_S_soc_S_serial_40004400_P_fifo_enable 0 #define DT_N_S_soc_S_serial_40004400_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_current_speed 115200 +#define DT_N_S_soc_S_serial_40004400_P_current_speed_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_hw_flow_control 0 +#define DT_N_S_soc_S_serial_40004400_P_hw_flow_control_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_status "okay" +#define DT_N_S_soc_S_serial_40004400_P_status_STRING_UNQUOTED okay +#define DT_N_S_soc_S_serial_40004400_P_status_STRING_TOKEN okay +#define DT_N_S_soc_S_serial_40004400_P_status_STRING_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_serial_40004400_P_status_IDX_0 "okay" +#define DT_N_S_soc_S_serial_40004400_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_serial_40004400_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004400, status, 0) +#define DT_N_S_soc_S_serial_40004400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004400, status, 0) +#define DT_N_S_soc_S_serial_40004400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004400, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004400_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004400, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004400_P_status_LEN 1 +#define DT_N_S_soc_S_serial_40004400_P_status_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_compatible {"st,stm32-usart", "st,stm32-uart"} +#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_0 "st,stm32-usart" +#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-usart +#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_0_STRING_TOKEN st_stm32_usart +#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_USART +#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_1 "st,stm32-uart" +#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-uart +#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_1_STRING_TOKEN st_stm32_uart +#define DT_N_S_soc_S_serial_40004400_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_UART +#define DT_N_S_soc_S_serial_40004400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004400, compatible, 0) \ + fn(DT_N_S_soc_S_serial_40004400, compatible, 1) +#define DT_N_S_soc_S_serial_40004400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004400, compatible, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_serial_40004400, compatible, 1) +#define DT_N_S_soc_S_serial_40004400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004400, compatible, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_serial_40004400, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004400, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_serial_40004400, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004400_P_compatible_LEN 2 +#define DT_N_S_soc_S_serial_40004400_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_serial_40004400_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_wakeup_source 0 +#define DT_N_S_soc_S_serial_40004400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_serial_40004400_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_tx_invert 0 +#define DT_N_S_soc_S_serial_40004400_P_tx_invert_EXISTS 1 +#define DT_N_S_soc_S_serial_40004400_P_rx_invert 0 +#define DT_N_S_soc_S_serial_40004400_P_rx_invert_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/uart4_rx_pi9 @@ -7615,6 +7757,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_FULL_NAME "uart4_rx_pi9" +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_FULL_NAME_UNQUOTED uart4_rx_pi9 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_FULL_NAME_TOKEN uart4_rx_pi9 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_FULL_NAME_UPPER_TOKEN UART4_RX_PI9 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -7645,11 +7790,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_SUPPORTS_ORDS \ - 58, /* /soc/serial@40004c00 */ + 58, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_EXISTS 1 @@ -7667,20 +7812,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_pinmux 4392 #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate "low-speed" @@ -7689,16 +7820,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/uart4_tx_ph13 @@ -7714,6 +7857,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_FULL_NAME "uart4_tx_ph13" +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_FULL_NAME_UNQUOTED uart4_tx_ph13 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_FULL_NAME_TOKEN uart4_tx_ph13 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_FULL_NAME_UPPER_TOKEN UART4_TX_PH13 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -7744,11 +7890,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_SUPPORTS_ORDS \ - 58, /* /soc/serial@40004c00 */ + 58, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_EXISTS 1 @@ -7766,20 +7912,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_pinmux 4008 #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate "low-speed" @@ -7788,16 +7920,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13_P_output_high_EXISTS 1 /* * Devicetree node: /soc/serial@40004c00 @@ -7816,6 +7960,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_serial_40004c00_FULL_NAME "serial@40004c00" +#define DT_N_S_soc_S_serial_40004c00_FULL_NAME_UNQUOTED serial@40004c00 +#define DT_N_S_soc_S_serial_40004c00_FULL_NAME_TOKEN serial_40004c00 +#define DT_N_S_soc_S_serial_40004c00_FULL_NAME_UPPER_TOKEN SERIAL_40004C00 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_serial_40004c00_PARENT DT_N_S_soc @@ -7846,16 +7993,16 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_serial_40004c00_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ \ - 56, /* /soc/pin-controller@58020000/uart4_rx_pi9 */ \ - 57, /* /soc/pin-controller@58020000/uart4_tx_ph13 */ + 4, \ + 5, \ + 9, \ + 54, \ + 56, \ + 57, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_serial_40004c00_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ + 93, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_serial_40004c00_EXISTS 1 @@ -7865,8 +8012,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_serial_40004c00_REG_NUM 1 #define DT_N_S_soc_S_serial_40004c00_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_REG_IDX_0_VAL_ADDRESS 1073761280 /* 0x40004c00 */ -#define DT_N_S_soc_S_serial_40004c00_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_serial_40004c00_REG_IDX_0_VAL_ADDRESS 1073761280 +#define DT_N_S_soc_S_serial_40004c00_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_serial_40004c00_RANGES_NUM 0 #define DT_N_S_soc_S_serial_40004c00_FOREACH_RANGE(fn) #define DT_N_S_soc_S_serial_40004c00_IRQ_NUM 1 @@ -7896,50 +8043,12 @@ #define DT_N_S_soc_S_serial_40004c00_PINCTRL_NAME_default_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9 /* Generic property macros: */ -#define DT_N_S_soc_S_serial_40004c00_P_wakeup_source 0 -#define DT_N_S_soc_S_serial_40004c00_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_serial_40004c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_status "okay" -#define DT_N_S_soc_S_serial_40004c00_P_status_STRING_UNQUOTED okay -#define DT_N_S_soc_S_serial_40004c00_P_status_STRING_TOKEN okay -#define DT_N_S_soc_S_serial_40004c00_P_status_STRING_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_serial_40004c00_P_status_IDX_0 "okay" -#define DT_N_S_soc_S_serial_40004c00_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_serial_40004c00_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_serial_40004c00_P_status_ENUM_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_serial_40004c00_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004c00, status, 0) -#define DT_N_S_soc_S_serial_40004c00_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004c00, status, 0) -#define DT_N_S_soc_S_serial_40004c00_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004c00, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004c00_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004c00, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004c00_P_status_LEN 1 -#define DT_N_S_soc_S_serial_40004c00_P_status_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_compatible {"st,stm32-uart"} -#define DT_N_S_soc_S_serial_40004c00_P_compatible_IDX_0 "st,stm32-uart" -#define DT_N_S_soc_S_serial_40004c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-uart -#define DT_N_S_soc_S_serial_40004c00_P_compatible_IDX_0_STRING_TOKEN st_stm32_uart -#define DT_N_S_soc_S_serial_40004c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_UART -#define DT_N_S_soc_S_serial_40004c00_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004c00, compatible, 0) -#define DT_N_S_soc_S_serial_40004c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004c00, compatible, 0) -#define DT_N_S_soc_S_serial_40004c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004c00, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004c00, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004c00_P_compatible_LEN 1 -#define DT_N_S_soc_S_serial_40004c00_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_reg {1073761280 /* 0x40004c00 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_serial_40004c00_P_reg_IDX_0 1073761280 +#define DT_N_S_soc_S_serial_40004c00_P_reg {1073761280, 1024} #define DT_N_S_soc_S_serial_40004c00_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_serial_40004c00_P_reg_IDX_0 1073761280 #define DT_N_S_soc_S_serial_40004c00_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_reg_IDX_1 1024 #define DT_N_S_soc_S_serial_40004c00_P_reg_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_interrupts {52 /* 0x34 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_serial_40004c00_P_interrupts_IDX_0 52 -#define DT_N_S_soc_S_serial_40004c00_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_serial_40004c00_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_serial_40004c00_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40004c00_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_serial_40004c00_P_clocks_IDX_0_VAL_bus 232 @@ -7952,12 +8061,26 @@ #define DT_N_S_soc_S_serial_40004c00_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004c00, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40004c00_P_clocks_LEN 1 #define DT_N_S_soc_S_serial_40004c00_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_serial_40004c00_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_current_speed 115200 -#define DT_N_S_soc_S_serial_40004c00_P_current_speed_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_hw_flow_control 0 -#define DT_N_S_soc_S_serial_40004c00_P_hw_flow_control_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_serial_40004c00_P_resets_IDX_0_VAL_id 4627 +#define DT_N_S_soc_S_serial_40004c00_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004c00, resets, 0) +#define DT_N_S_soc_S_serial_40004c00_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004c00, resets, 0) +#define DT_N_S_soc_S_serial_40004c00_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004c00, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004c00_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004c00, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004c00_P_resets_LEN 1 +#define DT_N_S_soc_S_serial_40004c00_P_resets_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_interrupts {52, 0} +#define DT_N_S_soc_S_serial_40004c00_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_interrupts_IDX_0 52 +#define DT_N_S_soc_S_serial_40004c00_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_serial_40004c00_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_single_wire 0 +#define DT_N_S_soc_S_serial_40004c00_P_single_wire_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_tx_rx_swap 0 +#define DT_N_S_soc_S_serial_40004c00_P_tx_rx_swap_EXISTS 1 #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13 #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13 #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_0_IDX_0_EXISTS 1 @@ -7975,35 +8098,17 @@ #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_0_LEN 2 #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_0_EXISTS 1 #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_serial_40004c00_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_names_IDX_0 "default" #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_names_IDX_0_STRING_UNQUOTED default #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_names_IDX_0_STRING_TOKEN default #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_serial_40004c00_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004c00, pinctrl_names, 0) #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004c00, pinctrl_names, 0) #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004c00, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004c00, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_names_LEN 1 #define DT_N_S_soc_S_serial_40004c00_P_pinctrl_names_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_serial_40004c00_P_resets_IDX_0_VAL_id 4627 -#define DT_N_S_soc_S_serial_40004c00_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004c00, resets, 0) -#define DT_N_S_soc_S_serial_40004c00_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004c00, resets, 0) -#define DT_N_S_soc_S_serial_40004c00_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004c00, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004c00_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004c00, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004c00_P_resets_LEN 1 -#define DT_N_S_soc_S_serial_40004c00_P_resets_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_tx_invert 0 -#define DT_N_S_soc_S_serial_40004c00_P_tx_invert_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_rx_invert 0 -#define DT_N_S_soc_S_serial_40004c00_P_rx_invert_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_single_wire 0 -#define DT_N_S_soc_S_serial_40004c00_P_single_wire_EXISTS 1 -#define DT_N_S_soc_S_serial_40004c00_P_tx_rx_swap 0 -#define DT_N_S_soc_S_serial_40004c00_P_tx_rx_swap_EXISTS 1 #define DT_N_S_soc_S_serial_40004c00_P_de_enable 0 #define DT_N_S_soc_S_serial_40004c00_P_de_enable_EXISTS 1 #define DT_N_S_soc_S_serial_40004c00_P_de_assert_time 0 @@ -8014,6 +8119,46 @@ #define DT_N_S_soc_S_serial_40004c00_P_de_invert_EXISTS 1 #define DT_N_S_soc_S_serial_40004c00_P_fifo_enable 0 #define DT_N_S_soc_S_serial_40004c00_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_current_speed 115200 +#define DT_N_S_soc_S_serial_40004c00_P_current_speed_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_hw_flow_control 0 +#define DT_N_S_soc_S_serial_40004c00_P_hw_flow_control_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_status "okay" +#define DT_N_S_soc_S_serial_40004c00_P_status_STRING_UNQUOTED okay +#define DT_N_S_soc_S_serial_40004c00_P_status_STRING_TOKEN okay +#define DT_N_S_soc_S_serial_40004c00_P_status_STRING_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_serial_40004c00_P_status_IDX_0 "okay" +#define DT_N_S_soc_S_serial_40004c00_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_serial_40004c00_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004c00, status, 0) +#define DT_N_S_soc_S_serial_40004c00_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004c00, status, 0) +#define DT_N_S_soc_S_serial_40004c00_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004c00, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004c00_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004c00, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004c00_P_status_LEN 1 +#define DT_N_S_soc_S_serial_40004c00_P_status_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_compatible {"st,stm32-uart"} +#define DT_N_S_soc_S_serial_40004c00_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_compatible_IDX_0 "st,stm32-uart" +#define DT_N_S_soc_S_serial_40004c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-uart +#define DT_N_S_soc_S_serial_40004c00_P_compatible_IDX_0_STRING_TOKEN st_stm32_uart +#define DT_N_S_soc_S_serial_40004c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_UART +#define DT_N_S_soc_S_serial_40004c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004c00, compatible, 0) +#define DT_N_S_soc_S_serial_40004c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004c00, compatible, 0) +#define DT_N_S_soc_S_serial_40004c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004c00, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004c00, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004c00_P_compatible_LEN 1 +#define DT_N_S_soc_S_serial_40004c00_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_serial_40004c00_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_wakeup_source 0 +#define DT_N_S_soc_S_serial_40004c00_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_serial_40004c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_tx_invert 0 +#define DT_N_S_soc_S_serial_40004c00_P_tx_invert_EXISTS 1 +#define DT_N_S_soc_S_serial_40004c00_P_rx_invert 0 +#define DT_N_S_soc_S_serial_40004c00_P_rx_invert_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/usart1_rx_pb7 @@ -8029,6 +8174,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_FULL_NAME "usart1_rx_pb7" +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_FULL_NAME_UNQUOTED usart1_rx_pb7 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_FULL_NAME_TOKEN usart1_rx_pb7 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_FULL_NAME_UPPER_TOKEN USART1_RX_PB7 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -8059,11 +8207,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_SUPPORTS_ORDS \ - 61, /* /soc/serial@40011000 */ + 61, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_EXISTS 1 @@ -8081,20 +8229,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_pinmux 743 #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate "low-speed" @@ -8103,16 +8237,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/usart1_tx_pa9 @@ -8128,6 +8274,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_FULL_NAME "usart1_tx_pa9" +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_FULL_NAME_UNQUOTED usart1_tx_pa9 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_FULL_NAME_TOKEN usart1_tx_pa9 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_FULL_NAME_UPPER_TOKEN USART1_TX_PA9 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -8158,11 +8307,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_SUPPORTS_ORDS \ - 61, /* /soc/serial@40011000 */ + 61, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_EXISTS 1 @@ -8180,20 +8329,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_pinmux 295 #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate "low-speed" @@ -8202,16 +8337,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9_P_output_high_EXISTS 1 /* * Devicetree node: /soc/serial@40011000 @@ -8230,6 +8377,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_serial_40011000_FULL_NAME "serial@40011000" +#define DT_N_S_soc_S_serial_40011000_FULL_NAME_UNQUOTED serial@40011000 +#define DT_N_S_soc_S_serial_40011000_FULL_NAME_TOKEN serial_40011000 +#define DT_N_S_soc_S_serial_40011000_FULL_NAME_UPPER_TOKEN SERIAL_40011000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_serial_40011000_PARENT DT_N_S_soc @@ -8260,16 +8410,16 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_serial_40011000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ \ - 59, /* /soc/pin-controller@58020000/usart1_rx_pb7 */ \ - 60, /* /soc/pin-controller@58020000/usart1_tx_pa9 */ + 4, \ + 5, \ + 9, \ + 54, \ + 59, \ + 60, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_serial_40011000_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ + 93, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_serial_40011000_EXISTS 1 @@ -8281,8 +8431,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_serial_40011000_REG_NUM 1 #define DT_N_S_soc_S_serial_40011000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_REG_IDX_0_VAL_ADDRESS 1073811456 /* 0x40011000 */ -#define DT_N_S_soc_S_serial_40011000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_serial_40011000_REG_IDX_0_VAL_ADDRESS 1073811456 +#define DT_N_S_soc_S_serial_40011000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_serial_40011000_RANGES_NUM 0 #define DT_N_S_soc_S_serial_40011000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_serial_40011000_IRQ_NUM 1 @@ -8317,59 +8467,12 @@ #define DT_N_S_soc_S_serial_40011000_PINCTRL_NAME_default_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7 /* Generic property macros: */ -#define DT_N_S_soc_S_serial_40011000_P_wakeup_source 0 -#define DT_N_S_soc_S_serial_40011000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_serial_40011000_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_status "okay" -#define DT_N_S_soc_S_serial_40011000_P_status_STRING_UNQUOTED okay -#define DT_N_S_soc_S_serial_40011000_P_status_STRING_TOKEN okay -#define DT_N_S_soc_S_serial_40011000_P_status_STRING_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_serial_40011000_P_status_IDX_0 "okay" -#define DT_N_S_soc_S_serial_40011000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_serial_40011000_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_serial_40011000_P_status_ENUM_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_serial_40011000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40011000, status, 0) -#define DT_N_S_soc_S_serial_40011000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40011000, status, 0) -#define DT_N_S_soc_S_serial_40011000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40011000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40011000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40011000_P_status_LEN 1 -#define DT_N_S_soc_S_serial_40011000_P_status_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_compatible {"st,stm32-usart", "st,stm32-uart"} -#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_0 "st,stm32-usart" -#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-usart -#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_0_STRING_TOKEN st_stm32_usart -#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_USART -#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_1 "st,stm32-uart" -#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-uart -#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_1_STRING_TOKEN st_stm32_uart -#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_UART -#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40011000, compatible, 0) \ - fn(DT_N_S_soc_S_serial_40011000, compatible, 1) -#define DT_N_S_soc_S_serial_40011000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40011000, compatible, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_serial_40011000, compatible, 1) -#define DT_N_S_soc_S_serial_40011000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40011000, compatible, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_serial_40011000, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40011000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011000, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_serial_40011000, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40011000_P_compatible_LEN 2 -#define DT_N_S_soc_S_serial_40011000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_reg {1073811456 /* 0x40011000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_serial_40011000_P_reg_IDX_0 1073811456 +#define DT_N_S_soc_S_serial_40011000_P_reg {1073811456, 1024} #define DT_N_S_soc_S_serial_40011000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_serial_40011000_P_reg_IDX_0 1073811456 #define DT_N_S_soc_S_serial_40011000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_reg_IDX_1 1024 #define DT_N_S_soc_S_serial_40011000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_interrupts {37 /* 0x25 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_serial_40011000_P_interrupts_IDX_0 37 -#define DT_N_S_soc_S_serial_40011000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_serial_40011000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_serial_40011000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40011000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_serial_40011000_P_clocks_IDX_0_VAL_bus 240 @@ -8382,12 +8485,26 @@ #define DT_N_S_soc_S_serial_40011000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011000, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40011000_P_clocks_LEN 1 #define DT_N_S_soc_S_serial_40011000_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_serial_40011000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_current_speed 115200 -#define DT_N_S_soc_S_serial_40011000_P_current_speed_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_hw_flow_control 0 -#define DT_N_S_soc_S_serial_40011000_P_hw_flow_control_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_serial_40011000_P_resets_IDX_0_VAL_id 4868 +#define DT_N_S_soc_S_serial_40011000_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40011000, resets, 0) +#define DT_N_S_soc_S_serial_40011000_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40011000, resets, 0) +#define DT_N_S_soc_S_serial_40011000_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40011000, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40011000_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011000, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40011000_P_resets_LEN 1 +#define DT_N_S_soc_S_serial_40011000_P_resets_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_interrupts {37, 0} +#define DT_N_S_soc_S_serial_40011000_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_interrupts_IDX_0 37 +#define DT_N_S_soc_S_serial_40011000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_serial_40011000_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_single_wire 0 +#define DT_N_S_soc_S_serial_40011000_P_single_wire_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_tx_rx_swap 0 +#define DT_N_S_soc_S_serial_40011000_P_tx_rx_swap_EXISTS 1 #define DT_N_S_soc_S_serial_40011000_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9 #define DT_N_S_soc_S_serial_40011000_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9 #define DT_N_S_soc_S_serial_40011000_P_pinctrl_0_IDX_0_EXISTS 1 @@ -8405,35 +8522,17 @@ #define DT_N_S_soc_S_serial_40011000_P_pinctrl_0_LEN 2 #define DT_N_S_soc_S_serial_40011000_P_pinctrl_0_EXISTS 1 #define DT_N_S_soc_S_serial_40011000_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_serial_40011000_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40011000_P_pinctrl_names_IDX_0 "default" #define DT_N_S_soc_S_serial_40011000_P_pinctrl_names_IDX_0_STRING_UNQUOTED default #define DT_N_S_soc_S_serial_40011000_P_pinctrl_names_IDX_0_STRING_TOKEN default #define DT_N_S_soc_S_serial_40011000_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_serial_40011000_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40011000_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40011000, pinctrl_names, 0) #define DT_N_S_soc_S_serial_40011000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40011000, pinctrl_names, 0) #define DT_N_S_soc_S_serial_40011000_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40011000, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40011000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011000, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40011000_P_pinctrl_names_LEN 1 #define DT_N_S_soc_S_serial_40011000_P_pinctrl_names_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_serial_40011000_P_resets_IDX_0_VAL_id 4868 -#define DT_N_S_soc_S_serial_40011000_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40011000, resets, 0) -#define DT_N_S_soc_S_serial_40011000_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40011000, resets, 0) -#define DT_N_S_soc_S_serial_40011000_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40011000, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40011000_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011000, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40011000_P_resets_LEN 1 -#define DT_N_S_soc_S_serial_40011000_P_resets_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_tx_invert 0 -#define DT_N_S_soc_S_serial_40011000_P_tx_invert_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_rx_invert 0 -#define DT_N_S_soc_S_serial_40011000_P_rx_invert_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_single_wire 0 -#define DT_N_S_soc_S_serial_40011000_P_single_wire_EXISTS 1 -#define DT_N_S_soc_S_serial_40011000_P_tx_rx_swap 0 -#define DT_N_S_soc_S_serial_40011000_P_tx_rx_swap_EXISTS 1 #define DT_N_S_soc_S_serial_40011000_P_de_enable 0 #define DT_N_S_soc_S_serial_40011000_P_de_enable_EXISTS 1 #define DT_N_S_soc_S_serial_40011000_P_de_assert_time 0 @@ -8444,6 +8543,55 @@ #define DT_N_S_soc_S_serial_40011000_P_de_invert_EXISTS 1 #define DT_N_S_soc_S_serial_40011000_P_fifo_enable 0 #define DT_N_S_soc_S_serial_40011000_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_current_speed 115200 +#define DT_N_S_soc_S_serial_40011000_P_current_speed_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_hw_flow_control 0 +#define DT_N_S_soc_S_serial_40011000_P_hw_flow_control_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_status "okay" +#define DT_N_S_soc_S_serial_40011000_P_status_STRING_UNQUOTED okay +#define DT_N_S_soc_S_serial_40011000_P_status_STRING_TOKEN okay +#define DT_N_S_soc_S_serial_40011000_P_status_STRING_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_serial_40011000_P_status_IDX_0 "okay" +#define DT_N_S_soc_S_serial_40011000_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_serial_40011000_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40011000, status, 0) +#define DT_N_S_soc_S_serial_40011000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40011000, status, 0) +#define DT_N_S_soc_S_serial_40011000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40011000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40011000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40011000_P_status_LEN 1 +#define DT_N_S_soc_S_serial_40011000_P_status_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_compatible {"st,stm32-usart", "st,stm32-uart"} +#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_0 "st,stm32-usart" +#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-usart +#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_0_STRING_TOKEN st_stm32_usart +#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_USART +#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_1 "st,stm32-uart" +#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-uart +#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_1_STRING_TOKEN st_stm32_uart +#define DT_N_S_soc_S_serial_40011000_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_UART +#define DT_N_S_soc_S_serial_40011000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40011000, compatible, 0) \ + fn(DT_N_S_soc_S_serial_40011000, compatible, 1) +#define DT_N_S_soc_S_serial_40011000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40011000, compatible, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_serial_40011000, compatible, 1) +#define DT_N_S_soc_S_serial_40011000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40011000, compatible, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_serial_40011000, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40011000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011000, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_serial_40011000, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40011000_P_compatible_LEN 2 +#define DT_N_S_soc_S_serial_40011000_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_serial_40011000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_wakeup_source 0 +#define DT_N_S_soc_S_serial_40011000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_serial_40011000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_tx_invert 0 +#define DT_N_S_soc_S_serial_40011000_P_tx_invert_EXISTS 1 +#define DT_N_S_soc_S_serial_40011000_P_rx_invert 0 +#define DT_N_S_soc_S_serial_40011000_P_rx_invert_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/usart6_rx_pc7 @@ -8459,6 +8607,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_FULL_NAME "usart6_rx_pc7" +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_FULL_NAME_UNQUOTED usart6_rx_pc7 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_FULL_NAME_TOKEN usart6_rx_pc7 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_FULL_NAME_UPPER_TOKEN USART6_RX_PC7 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -8489,11 +8640,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_SUPPORTS_ORDS \ - 64, /* /soc/serial@40011400 */ + 64, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_EXISTS 1 @@ -8511,20 +8662,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_pinmux 1255 #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate "low-speed" @@ -8533,16 +8670,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/usart6_tx_pg14 @@ -8558,6 +8707,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_FULL_NAME "usart6_tx_pg14" +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_FULL_NAME_UNQUOTED usart6_tx_pg14 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_FULL_NAME_TOKEN usart6_tx_pg14 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_FULL_NAME_UPPER_TOKEN USART6_TX_PG14 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -8588,11 +8740,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_SUPPORTS_ORDS \ - 64, /* /soc/serial@40011400 */ + 64, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_EXISTS 1 @@ -8610,20 +8762,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_pinmux 3527 #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate "low-speed" @@ -8632,16 +8770,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14_P_output_high_EXISTS 1 /* * Devicetree node: /soc/serial@40011400 @@ -8660,6 +8810,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_serial_40011400_FULL_NAME "serial@40011400" +#define DT_N_S_soc_S_serial_40011400_FULL_NAME_UNQUOTED serial@40011400 +#define DT_N_S_soc_S_serial_40011400_FULL_NAME_TOKEN serial_40011400 +#define DT_N_S_soc_S_serial_40011400_FULL_NAME_UPPER_TOKEN SERIAL_40011400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_serial_40011400_PARENT DT_N_S_soc @@ -8690,16 +8843,16 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_serial_40011400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ \ - 62, /* /soc/pin-controller@58020000/usart6_rx_pc7 */ \ - 63, /* /soc/pin-controller@58020000/usart6_tx_pg14 */ + 4, \ + 5, \ + 9, \ + 54, \ + 62, \ + 63, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_serial_40011400_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ + 93, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_serial_40011400_EXISTS 1 @@ -8710,8 +8863,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_serial_40011400_REG_NUM 1 #define DT_N_S_soc_S_serial_40011400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_REG_IDX_0_VAL_ADDRESS 1073812480 /* 0x40011400 */ -#define DT_N_S_soc_S_serial_40011400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_serial_40011400_REG_IDX_0_VAL_ADDRESS 1073812480 +#define DT_N_S_soc_S_serial_40011400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_serial_40011400_RANGES_NUM 0 #define DT_N_S_soc_S_serial_40011400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_serial_40011400_IRQ_NUM 1 @@ -8746,59 +8899,12 @@ #define DT_N_S_soc_S_serial_40011400_PINCTRL_NAME_default_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7 /* Generic property macros: */ -#define DT_N_S_soc_S_serial_40011400_P_wakeup_source 0 -#define DT_N_S_soc_S_serial_40011400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_serial_40011400_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_status "okay" -#define DT_N_S_soc_S_serial_40011400_P_status_STRING_UNQUOTED okay -#define DT_N_S_soc_S_serial_40011400_P_status_STRING_TOKEN okay -#define DT_N_S_soc_S_serial_40011400_P_status_STRING_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_serial_40011400_P_status_IDX_0 "okay" -#define DT_N_S_soc_S_serial_40011400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_serial_40011400_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_serial_40011400_P_status_ENUM_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_serial_40011400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40011400, status, 0) -#define DT_N_S_soc_S_serial_40011400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40011400, status, 0) -#define DT_N_S_soc_S_serial_40011400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40011400, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40011400_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011400, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40011400_P_status_LEN 1 -#define DT_N_S_soc_S_serial_40011400_P_status_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_compatible {"st,stm32-usart", "st,stm32-uart"} -#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_0 "st,stm32-usart" -#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-usart -#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_0_STRING_TOKEN st_stm32_usart -#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_USART -#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_1 "st,stm32-uart" -#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-uart -#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_1_STRING_TOKEN st_stm32_uart -#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_UART -#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40011400, compatible, 0) \ - fn(DT_N_S_soc_S_serial_40011400, compatible, 1) -#define DT_N_S_soc_S_serial_40011400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40011400, compatible, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_serial_40011400, compatible, 1) -#define DT_N_S_soc_S_serial_40011400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40011400, compatible, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_serial_40011400, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40011400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011400, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_serial_40011400, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40011400_P_compatible_LEN 2 -#define DT_N_S_soc_S_serial_40011400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_reg {1073812480 /* 0x40011400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_serial_40011400_P_reg_IDX_0 1073812480 +#define DT_N_S_soc_S_serial_40011400_P_reg {1073812480, 1024} #define DT_N_S_soc_S_serial_40011400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_serial_40011400_P_reg_IDX_0 1073812480 #define DT_N_S_soc_S_serial_40011400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_reg_IDX_1 1024 #define DT_N_S_soc_S_serial_40011400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_interrupts {71 /* 0x47 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_serial_40011400_P_interrupts_IDX_0 71 -#define DT_N_S_soc_S_serial_40011400_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_serial_40011400_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_serial_40011400_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40011400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_serial_40011400_P_clocks_IDX_0_VAL_bus 240 @@ -8811,12 +8917,26 @@ #define DT_N_S_soc_S_serial_40011400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011400, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40011400_P_clocks_LEN 1 #define DT_N_S_soc_S_serial_40011400_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_serial_40011400_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_current_speed 115200 -#define DT_N_S_soc_S_serial_40011400_P_current_speed_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_hw_flow_control 0 -#define DT_N_S_soc_S_serial_40011400_P_hw_flow_control_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_serial_40011400_P_resets_IDX_0_VAL_id 4869 +#define DT_N_S_soc_S_serial_40011400_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40011400, resets, 0) +#define DT_N_S_soc_S_serial_40011400_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40011400, resets, 0) +#define DT_N_S_soc_S_serial_40011400_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40011400, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40011400_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011400, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40011400_P_resets_LEN 1 +#define DT_N_S_soc_S_serial_40011400_P_resets_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_interrupts {71, 0} +#define DT_N_S_soc_S_serial_40011400_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_interrupts_IDX_0 71 +#define DT_N_S_soc_S_serial_40011400_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_serial_40011400_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_single_wire 0 +#define DT_N_S_soc_S_serial_40011400_P_single_wire_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_tx_rx_swap 0 +#define DT_N_S_soc_S_serial_40011400_P_tx_rx_swap_EXISTS 1 #define DT_N_S_soc_S_serial_40011400_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14 #define DT_N_S_soc_S_serial_40011400_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14 #define DT_N_S_soc_S_serial_40011400_P_pinctrl_0_IDX_0_EXISTS 1 @@ -8834,35 +8954,17 @@ #define DT_N_S_soc_S_serial_40011400_P_pinctrl_0_LEN 2 #define DT_N_S_soc_S_serial_40011400_P_pinctrl_0_EXISTS 1 #define DT_N_S_soc_S_serial_40011400_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_serial_40011400_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40011400_P_pinctrl_names_IDX_0 "default" #define DT_N_S_soc_S_serial_40011400_P_pinctrl_names_IDX_0_STRING_UNQUOTED default #define DT_N_S_soc_S_serial_40011400_P_pinctrl_names_IDX_0_STRING_TOKEN default #define DT_N_S_soc_S_serial_40011400_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_serial_40011400_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40011400_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40011400, pinctrl_names, 0) #define DT_N_S_soc_S_serial_40011400_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40011400, pinctrl_names, 0) #define DT_N_S_soc_S_serial_40011400_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40011400, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40011400_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011400, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40011400_P_pinctrl_names_LEN 1 #define DT_N_S_soc_S_serial_40011400_P_pinctrl_names_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_serial_40011400_P_resets_IDX_0_VAL_id 4869 -#define DT_N_S_soc_S_serial_40011400_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40011400, resets, 0) -#define DT_N_S_soc_S_serial_40011400_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40011400, resets, 0) -#define DT_N_S_soc_S_serial_40011400_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40011400, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40011400_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011400, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40011400_P_resets_LEN 1 -#define DT_N_S_soc_S_serial_40011400_P_resets_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_tx_invert 0 -#define DT_N_S_soc_S_serial_40011400_P_tx_invert_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_rx_invert 0 -#define DT_N_S_soc_S_serial_40011400_P_rx_invert_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_single_wire 0 -#define DT_N_S_soc_S_serial_40011400_P_single_wire_EXISTS 1 -#define DT_N_S_soc_S_serial_40011400_P_tx_rx_swap 0 -#define DT_N_S_soc_S_serial_40011400_P_tx_rx_swap_EXISTS 1 #define DT_N_S_soc_S_serial_40011400_P_de_enable 0 #define DT_N_S_soc_S_serial_40011400_P_de_enable_EXISTS 1 #define DT_N_S_soc_S_serial_40011400_P_de_assert_time 0 @@ -8873,6 +8975,55 @@ #define DT_N_S_soc_S_serial_40011400_P_de_invert_EXISTS 1 #define DT_N_S_soc_S_serial_40011400_P_fifo_enable 0 #define DT_N_S_soc_S_serial_40011400_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_current_speed 115200 +#define DT_N_S_soc_S_serial_40011400_P_current_speed_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_hw_flow_control 0 +#define DT_N_S_soc_S_serial_40011400_P_hw_flow_control_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_status "okay" +#define DT_N_S_soc_S_serial_40011400_P_status_STRING_UNQUOTED okay +#define DT_N_S_soc_S_serial_40011400_P_status_STRING_TOKEN okay +#define DT_N_S_soc_S_serial_40011400_P_status_STRING_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_serial_40011400_P_status_IDX_0 "okay" +#define DT_N_S_soc_S_serial_40011400_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_serial_40011400_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40011400, status, 0) +#define DT_N_S_soc_S_serial_40011400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40011400, status, 0) +#define DT_N_S_soc_S_serial_40011400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40011400, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40011400_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011400, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40011400_P_status_LEN 1 +#define DT_N_S_soc_S_serial_40011400_P_status_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_compatible {"st,stm32-usart", "st,stm32-uart"} +#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_0 "st,stm32-usart" +#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-usart +#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_0_STRING_TOKEN st_stm32_usart +#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_USART +#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_1 "st,stm32-uart" +#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-uart +#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_1_STRING_TOKEN st_stm32_uart +#define DT_N_S_soc_S_serial_40011400_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_UART +#define DT_N_S_soc_S_serial_40011400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40011400, compatible, 0) \ + fn(DT_N_S_soc_S_serial_40011400, compatible, 1) +#define DT_N_S_soc_S_serial_40011400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40011400, compatible, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_serial_40011400, compatible, 1) +#define DT_N_S_soc_S_serial_40011400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40011400, compatible, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_serial_40011400, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40011400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40011400, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_serial_40011400, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40011400_P_compatible_LEN 2 +#define DT_N_S_soc_S_serial_40011400_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_serial_40011400_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_wakeup_source 0 +#define DT_N_S_soc_S_serial_40011400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_serial_40011400_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_tx_invert 0 +#define DT_N_S_soc_S_serial_40011400_P_tx_invert_EXISTS 1 +#define DT_N_S_soc_S_serial_40011400_P_rx_invert 0 +#define DT_N_S_soc_S_serial_40011400_P_rx_invert_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/spi1_miso_pg9 @@ -8888,6 +9039,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_FULL_NAME "spi1_miso_pg9" +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_FULL_NAME_UNQUOTED spi1_miso_pg9 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_FULL_NAME_TOKEN spi1_miso_pg9 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_FULL_NAME_UPPER_TOKEN SPI1_MISO_PG9 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -8918,11 +9072,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_SUPPORTS_ORDS \ - 69, /* /soc/spi@40013000 */ + 69, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_EXISTS 1 @@ -8940,20 +9094,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_bias_pull_down 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_pinmux 3365 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate "low-speed" @@ -8962,16 +9102,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_bias_pull_down 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/spi1_mosi_pd7 @@ -8987,6 +9139,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_FULL_NAME "spi1_mosi_pd7" +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_FULL_NAME_UNQUOTED spi1_mosi_pd7 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_FULL_NAME_TOKEN spi1_mosi_pd7 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_FULL_NAME_UPPER_TOKEN SPI1_MOSI_PD7 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -9017,11 +9172,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_SUPPORTS_ORDS \ - 69, /* /soc/spi@40013000 */ + 69, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_EXISTS 1 @@ -9039,20 +9194,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_bias_pull_down 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_pinmux 1765 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate "low-speed" @@ -9061,16 +9202,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_bias_pull_down 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/spi1_nss_pa4 @@ -9086,6 +9239,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_FULL_NAME "spi1_nss_pa4" +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_FULL_NAME_UNQUOTED spi1_nss_pa4 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_FULL_NAME_TOKEN spi1_nss_pa4 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_FULL_NAME_UPPER_TOKEN SPI1_NSS_PA4 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -9116,11 +9272,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_SUPPORTS_ORDS \ - 69, /* /soc/spi@40013000 */ + 69, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_EXISTS 1 @@ -9138,20 +9294,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_pinmux 133 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate "low-speed" @@ -9160,16 +9302,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/spi1_sck_pb3 @@ -9185,6 +9339,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_FULL_NAME "spi1_sck_pb3" +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_FULL_NAME_UNQUOTED spi1_sck_pb3 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_FULL_NAME_TOKEN spi1_sck_pb3 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_FULL_NAME_UPPER_TOKEN SPI1_SCK_PB3 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -9215,11 +9372,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_SUPPORTS_ORDS \ - 69, /* /soc/spi@40013000 */ + 69, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_EXISTS 1 @@ -9237,20 +9394,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_bias_pull_down 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_pinmux 613 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate "very-high-speed" @@ -9259,16 +9402,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_bias_pull_down 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3_P_output_high_EXISTS 1 /* * Devicetree node: /soc/spi@40013000 @@ -9287,6 +9442,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_spi_40013000_FULL_NAME "spi@40013000" +#define DT_N_S_soc_S_spi_40013000_FULL_NAME_UNQUOTED spi@40013000 +#define DT_N_S_soc_S_spi_40013000_FULL_NAME_TOKEN spi_40013000 +#define DT_N_S_soc_S_spi_40013000_FULL_NAME_UPPER_TOKEN SPI_40013000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_spi_40013000_PARENT DT_N_S_soc @@ -9317,17 +9475,17 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_spi_40013000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 65, /* /soc/pin-controller@58020000/spi1_miso_pg9 */ \ - 66, /* /soc/pin-controller@58020000/spi1_mosi_pd7 */ \ - 67, /* /soc/pin-controller@58020000/spi1_nss_pa4 */ \ - 68, /* /soc/pin-controller@58020000/spi1_sck_pb3 */ + 4, \ + 5, \ + 9, \ + 65, \ + 66, \ + 67, \ + 68, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_spi_40013000_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ + 93, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_spi_40013000_EXISTS 1 @@ -9339,8 +9497,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_spi_40013000_REG_NUM 1 #define DT_N_S_soc_S_spi_40013000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_REG_IDX_0_VAL_ADDRESS 1073819648 /* 0x40013000 */ -#define DT_N_S_soc_S_spi_40013000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_spi_40013000_REG_IDX_0_VAL_ADDRESS 1073819648 +#define DT_N_S_soc_S_spi_40013000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_spi_40013000_RANGES_NUM 0 #define DT_N_S_soc_S_spi_40013000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_spi_40013000_IRQ_NUM 1 @@ -9382,20 +9540,74 @@ #define DT_N_S_soc_S_spi_40013000_PINCTRL_NAME_default_IDX_3_PH DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7 /* Generic property macros: */ -#define DT_N_S_soc_S_spi_40013000_P_wakeup_source 0 -#define DT_N_S_soc_S_spi_40013000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_spi_40013000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_midi_clock 0 +#define DT_N_S_soc_S_spi_40013000_P_midi_clock_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_mssi_clock 0 +#define DT_N_S_soc_S_spi_40013000_P_mssi_clock_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_fifo_enable 0 +#define DT_N_S_soc_S_spi_40013000_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_reg {1073819648, 1024} +#define DT_N_S_soc_S_spi_40013000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_reg_IDX_0 1073819648 +#define DT_N_S_soc_S_spi_40013000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_spi_40013000_P_reg_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_interrupts {35, 0} +#define DT_N_S_soc_S_spi_40013000_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_interrupts_IDX_0 35 +#define DT_N_S_soc_S_spi_40013000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_spi_40013000_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_1 DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_2 DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_2_PH DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_3 DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_3_PH DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 0) \ + fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 1) \ + fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 2) \ + fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 3) +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 1) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 2) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 3) +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 1, __VA_ARGS__) \ + fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 2, __VA_ARGS__) \ + fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 3, __VA_ARGS__) +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 1, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 2, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 3, __VA_ARGS__) +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_LEN 4 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_IDX_0 "default" +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_IDX_0_STRING_UNQUOTED default +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_IDX_0_STRING_TOKEN default +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40013000, pinctrl_names, 0) +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_spi_40013000, pinctrl_names, 0) +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_spi_40013000, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_spi_40013000, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_LEN 1 +#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_EXISTS 1 #define DT_N_S_soc_S_spi_40013000_P_status "okay" #define DT_N_S_soc_S_spi_40013000_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_spi_40013000_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_spi_40013000_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_spi_40013000_P_status_IDX_0 "okay" #define DT_N_S_soc_S_spi_40013000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_spi_40013000_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_spi_40013000_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_spi_40013000_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_spi_40013000_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_spi_40013000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40013000, status, 0) #define DT_N_S_soc_S_spi_40013000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_spi_40013000, status, 0) #define DT_N_S_soc_S_spi_40013000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_spi_40013000, status, 0, __VA_ARGS__) @@ -9403,21 +9615,21 @@ #define DT_N_S_soc_S_spi_40013000_P_status_LEN 1 #define DT_N_S_soc_S_spi_40013000_P_status_EXISTS 1 #define DT_N_S_soc_S_spi_40013000_P_compatible {"st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi"} +#define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_0 "st,stm32h7-spi" #define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-spi #define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_spi #define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_SPI -#define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_1 "st,stm32-spi-fifo" #define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-spi-fifo #define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_1_STRING_TOKEN st_stm32_spi_fifo #define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_SPI_FIFO -#define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_2_EXISTS 1 #define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_2 "st,stm32-spi" #define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_2_STRING_UNQUOTED st,stm32-spi #define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_2_STRING_TOKEN st_stm32_spi #define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_2_STRING_UPPER_TOKEN ST_STM32_SPI -#define DT_N_S_soc_S_spi_40013000_P_compatible_IDX_2_EXISTS 1 #define DT_N_S_soc_S_spi_40013000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40013000, compatible, 0) \ fn(DT_N_S_soc_S_spi_40013000, compatible, 1) \ fn(DT_N_S_soc_S_spi_40013000, compatible, 2) @@ -9432,18 +9644,6 @@ fn(DT_N_S_soc_S_spi_40013000, compatible, 2, __VA_ARGS__) #define DT_N_S_soc_S_spi_40013000_P_compatible_LEN 3 #define DT_N_S_soc_S_spi_40013000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_reg {1073819648 /* 0x40013000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_spi_40013000_P_reg_IDX_0 1073819648 -#define DT_N_S_soc_S_spi_40013000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_spi_40013000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_interrupts {35 /* 0x23 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_spi_40013000_P_interrupts_IDX_0 35 -#define DT_N_S_soc_S_spi_40013000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_spi_40013000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_spi_40013000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_spi_40013000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_spi_40013000_P_clocks_IDX_0_VAL_bus 240 @@ -9468,54 +9668,10 @@ #define DT_N_S_soc_S_spi_40013000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_spi_40013000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_spi_40013000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_1 DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_2 DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_2_PH DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_3 DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_3_PH DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 0) \ - fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 1) \ - fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 2) \ - fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 3) -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 1) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 2) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 3) -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 1, __VA_ARGS__) \ - fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 2, __VA_ARGS__) \ - fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 3, __VA_ARGS__) -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 1, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 2, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_spi_40013000, pinctrl_0, 3, __VA_ARGS__) -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_LEN 4 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names {"default"} -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_IDX_0 "default" -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_IDX_0_STRING_UNQUOTED default -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_IDX_0_STRING_TOKEN default -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40013000, pinctrl_names, 0) -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_spi_40013000, pinctrl_names, 0) -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_spi_40013000, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_spi_40013000, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_LEN 1 -#define DT_N_S_soc_S_spi_40013000_P_pinctrl_names_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_midi_clock 0 -#define DT_N_S_soc_S_spi_40013000_P_midi_clock_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_mssi_clock 0 -#define DT_N_S_soc_S_spi_40013000_P_mssi_clock_EXISTS 1 -#define DT_N_S_soc_S_spi_40013000_P_fifo_enable 0 -#define DT_N_S_soc_S_spi_40013000_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_wakeup_source 0 +#define DT_N_S_soc_S_spi_40013000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_spi_40013000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_spi_40013000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/spi5_miso_pj11 @@ -9531,6 +9687,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_FULL_NAME "spi5_miso_pj11" +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_FULL_NAME_UNQUOTED spi5_miso_pj11 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_FULL_NAME_TOKEN spi5_miso_pj11 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_FULL_NAME_UPPER_TOKEN SPI5_MISO_PJ11 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -9561,11 +9720,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_SUPPORTS_ORDS \ - 74, /* /soc/spi@40015000 */ + 74, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_EXISTS 1 @@ -9583,20 +9742,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_bias_pull_down 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_pinmux 4965 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate "low-speed" @@ -9605,16 +9750,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_bias_pull_down 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/spi5_mosi_pj10 @@ -9630,6 +9787,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_FULL_NAME "spi5_mosi_pj10" +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_FULL_NAME_UNQUOTED spi5_mosi_pj10 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_FULL_NAME_TOKEN spi5_mosi_pj10 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_FULL_NAME_UPPER_TOKEN SPI5_MOSI_PJ10 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -9660,11 +9820,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_SUPPORTS_ORDS \ - 74, /* /soc/spi@40015000 */ + 74, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_EXISTS 1 @@ -9682,20 +9842,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_bias_pull_down 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_pinmux 4933 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate "low-speed" @@ -9704,16 +9850,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_bias_pull_down 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/spi5_nss_pk1 @@ -9729,6 +9887,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_FULL_NAME "spi5_nss_pk1" +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_FULL_NAME_UNQUOTED spi5_nss_pk1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_FULL_NAME_TOKEN spi5_nss_pk1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_FULL_NAME_UPPER_TOKEN SPI5_NSS_PK1 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -9759,11 +9920,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_SUPPORTS_ORDS \ - 74, /* /soc/spi@40015000 */ + 74, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_EXISTS 1 @@ -9781,20 +9942,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_pinmux 5157 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate "low-speed" @@ -9803,16 +9950,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/spi5_sck_ph6 @@ -9828,6 +9987,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_FULL_NAME "spi5_sck_ph6" +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_FULL_NAME_UNQUOTED spi5_sck_ph6 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_FULL_NAME_TOKEN spi5_sck_ph6 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_FULL_NAME_UPPER_TOKEN SPI5_SCK_PH6 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -9858,11 +10020,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_SUPPORTS_ORDS \ - 74, /* /soc/spi@40015000 */ + 74, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_EXISTS 1 @@ -9880,20 +10042,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_bias_pull_down 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_pinmux 3781 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate "very-high-speed" @@ -9902,16 +10050,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_bias_pull_down 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6_P_output_high_EXISTS 1 /* * Devicetree node: /soc/spi@40015000 @@ -9930,6 +10090,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_spi_40015000_FULL_NAME "spi@40015000" +#define DT_N_S_soc_S_spi_40015000_FULL_NAME_UNQUOTED spi@40015000 +#define DT_N_S_soc_S_spi_40015000_FULL_NAME_TOKEN spi_40015000 +#define DT_N_S_soc_S_spi_40015000_FULL_NAME_UPPER_TOKEN SPI_40015000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_spi_40015000_PARENT DT_N_S_soc @@ -9960,17 +10123,17 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_spi_40015000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 70, /* /soc/pin-controller@58020000/spi5_miso_pj11 */ \ - 71, /* /soc/pin-controller@58020000/spi5_mosi_pj10 */ \ - 72, /* /soc/pin-controller@58020000/spi5_nss_pk1 */ \ - 73, /* /soc/pin-controller@58020000/spi5_sck_ph6 */ + 4, \ + 5, \ + 9, \ + 70, \ + 71, \ + 72, \ + 73, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_spi_40015000_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ + 93, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_spi_40015000_EXISTS 1 @@ -9983,8 +10146,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_spi_40015000_REG_NUM 1 #define DT_N_S_soc_S_spi_40015000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_REG_IDX_0_VAL_ADDRESS 1073827840 /* 0x40015000 */ -#define DT_N_S_soc_S_spi_40015000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_spi_40015000_REG_IDX_0_VAL_ADDRESS 1073827840 +#define DT_N_S_soc_S_spi_40015000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_spi_40015000_RANGES_NUM 0 #define DT_N_S_soc_S_spi_40015000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_spi_40015000_IRQ_NUM 1 @@ -10026,20 +10189,74 @@ #define DT_N_S_soc_S_spi_40015000_PINCTRL_NAME_default_IDX_3_PH DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10 /* Generic property macros: */ -#define DT_N_S_soc_S_spi_40015000_P_wakeup_source 0 -#define DT_N_S_soc_S_spi_40015000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_spi_40015000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_midi_clock 0 +#define DT_N_S_soc_S_spi_40015000_P_midi_clock_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_mssi_clock 0 +#define DT_N_S_soc_S_spi_40015000_P_mssi_clock_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_fifo_enable 0 +#define DT_N_S_soc_S_spi_40015000_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_reg {1073827840, 1024} +#define DT_N_S_soc_S_spi_40015000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_reg_IDX_0 1073827840 +#define DT_N_S_soc_S_spi_40015000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_spi_40015000_P_reg_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_interrupts {85, 0} +#define DT_N_S_soc_S_spi_40015000_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_interrupts_IDX_0 85 +#define DT_N_S_soc_S_spi_40015000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_spi_40015000_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_1 DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_2 DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_2_PH DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_3 DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_3_PH DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 0) \ + fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 1) \ + fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 2) \ + fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 3) +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 1) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 2) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 3) +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 1, __VA_ARGS__) \ + fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 2, __VA_ARGS__) \ + fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 3, __VA_ARGS__) +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 1, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 2, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 3, __VA_ARGS__) +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_LEN 4 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_IDX_0 "default" +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_IDX_0_STRING_UNQUOTED default +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_IDX_0_STRING_TOKEN default +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40015000, pinctrl_names, 0) +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_spi_40015000, pinctrl_names, 0) +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_spi_40015000, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_spi_40015000, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_LEN 1 +#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_EXISTS 1 #define DT_N_S_soc_S_spi_40015000_P_status "okay" #define DT_N_S_soc_S_spi_40015000_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_spi_40015000_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_spi_40015000_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_spi_40015000_P_status_IDX_0 "okay" #define DT_N_S_soc_S_spi_40015000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_spi_40015000_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_spi_40015000_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_spi_40015000_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_spi_40015000_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_spi_40015000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40015000, status, 0) #define DT_N_S_soc_S_spi_40015000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_spi_40015000, status, 0) #define DT_N_S_soc_S_spi_40015000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_spi_40015000, status, 0, __VA_ARGS__) @@ -10047,21 +10264,21 @@ #define DT_N_S_soc_S_spi_40015000_P_status_LEN 1 #define DT_N_S_soc_S_spi_40015000_P_status_EXISTS 1 #define DT_N_S_soc_S_spi_40015000_P_compatible {"st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi"} +#define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_0 "st,stm32h7-spi" #define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-spi #define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_spi #define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_SPI -#define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_1 "st,stm32-spi-fifo" #define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-spi-fifo #define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_1_STRING_TOKEN st_stm32_spi_fifo #define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_SPI_FIFO -#define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_2_EXISTS 1 #define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_2 "st,stm32-spi" #define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_2_STRING_UNQUOTED st,stm32-spi #define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_2_STRING_TOKEN st_stm32_spi #define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_2_STRING_UPPER_TOKEN ST_STM32_SPI -#define DT_N_S_soc_S_spi_40015000_P_compatible_IDX_2_EXISTS 1 #define DT_N_S_soc_S_spi_40015000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40015000, compatible, 0) \ fn(DT_N_S_soc_S_spi_40015000, compatible, 1) \ fn(DT_N_S_soc_S_spi_40015000, compatible, 2) @@ -10076,18 +10293,6 @@ fn(DT_N_S_soc_S_spi_40015000, compatible, 2, __VA_ARGS__) #define DT_N_S_soc_S_spi_40015000_P_compatible_LEN 3 #define DT_N_S_soc_S_spi_40015000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_reg {1073827840 /* 0x40015000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_spi_40015000_P_reg_IDX_0 1073827840 -#define DT_N_S_soc_S_spi_40015000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_spi_40015000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_interrupts {85 /* 0x55 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_spi_40015000_P_interrupts_IDX_0 85 -#define DT_N_S_soc_S_spi_40015000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_spi_40015000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_spi_40015000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_spi_40015000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_spi_40015000_P_clocks_IDX_0_VAL_bus 240 @@ -10102,54 +10307,10 @@ #define DT_N_S_soc_S_spi_40015000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_spi_40015000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_spi_40015000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_1 DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_2 DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_2_PH DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_3 DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_3_PH DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 0) \ - fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 1) \ - fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 2) \ - fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 3) -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 1) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 2) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 3) -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 1, __VA_ARGS__) \ - fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 2, __VA_ARGS__) \ - fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 3, __VA_ARGS__) -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 1, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 2, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_spi_40015000, pinctrl_0, 3, __VA_ARGS__) -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_LEN 4 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names {"default"} -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_IDX_0 "default" -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_IDX_0_STRING_UNQUOTED default -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_IDX_0_STRING_TOKEN default -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40015000, pinctrl_names, 0) -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_spi_40015000, pinctrl_names, 0) -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_spi_40015000, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_spi_40015000, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_LEN 1 -#define DT_N_S_soc_S_spi_40015000_P_pinctrl_names_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_midi_clock 0 -#define DT_N_S_soc_S_spi_40015000_P_midi_clock_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_mssi_clock 0 -#define DT_N_S_soc_S_spi_40015000_P_mssi_clock_EXISTS 1 -#define DT_N_S_soc_S_spi_40015000_P_fifo_enable 0 -#define DT_N_S_soc_S_spi_40015000_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_wakeup_source 0 +#define DT_N_S_soc_S_spi_40015000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_spi_40015000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_spi_40015000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/gpio@58020000 @@ -10168,6 +10329,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_FULL_NAME "gpio@58020000" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_FULL_NAME_UNQUOTED gpio@58020000 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_FULL_NAME_TOKEN gpio_58020000 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_FULL_NAME_UPPER_TOKEN GPIO_58020000 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -10198,14 +10362,14 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_REQUIRES_ORDS \ - 9, /* /soc/rcc@58024400 */ \ - 10, /* /soc/pin-controller@58020000 */ + 9, \ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ \ - 163, /* /soc/i2c@58001c00/ov7670@21 */ \ - 250, /* /soc/serial@40007800/bt_hci_uart/murata-1dx */ + 93, \ + 166, \ + 253, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_EXISTS 1 @@ -10215,8 +10379,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_REG_NUM 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_REG_IDX_0_VAL_ADDRESS 1476526080 /* 0x58020000 */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_REG_IDX_0_VAL_ADDRESS 1476526080 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_RANGES_NUM 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_IRQ_NUM 0 @@ -10232,31 +10396,11 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_gpio_controller 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_gpio_controller_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_ngpios 32 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_ngpios_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_wakeup_source 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible {"st,stm32-gpio"} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_IDX_0 "st,stm32-gpio" -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_LEN 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_reg {1476526080 /* 0x58020000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_reg_IDX_0 1476526080 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_reg {1476526080, 1024} #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_reg_IDX_0 1476526080 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_reg_IDX_1 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_reg_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -10270,8 +10414,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_clocks_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_ngpios 16 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_ngpios_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_gpio_controller 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_gpio_controller_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible {"st,stm32-gpio"} +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_IDX_0 "st,stm32-gpio" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_LEN 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_compatible_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_wakeup_source 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/gpio@58020400 @@ -10290,6 +10454,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_FULL_NAME "gpio@58020400" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_FULL_NAME_UNQUOTED gpio@58020400 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_FULL_NAME_TOKEN gpio_58020400 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_FULL_NAME_UPPER_TOKEN GPIO_58020400 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -10320,12 +10487,12 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_REQUIRES_ORDS \ - 9, /* /soc/rcc@58024400 */ \ - 10, /* /soc/pin-controller@58020000 */ + 9, \ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ + 93, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_EXISTS 1 @@ -10335,8 +10502,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_REG_NUM 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_REG_IDX_0_VAL_ADDRESS 1476527104 /* 0x58020400 */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_REG_IDX_0_VAL_ADDRESS 1476527104 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_RANGES_NUM 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_IRQ_NUM 0 @@ -10352,31 +10519,11 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_gpio_controller 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_gpio_controller_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_ngpios 32 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_ngpios_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_wakeup_source 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible {"st,stm32-gpio"} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_IDX_0 "st,stm32-gpio" -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_LEN 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_reg {1476527104 /* 0x58020400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_reg_IDX_0 1476527104 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_reg {1476527104, 1024} #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_reg_IDX_0 1476527104 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_reg_IDX_1 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_reg_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -10390,8 +10537,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_clocks_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_ngpios 16 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_ngpios_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_gpio_controller 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_gpio_controller_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible {"st,stm32-gpio"} +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_IDX_0 "st,stm32-gpio" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_LEN 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_compatible_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_wakeup_source 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/gpio@58020800 @@ -10410,6 +10577,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_FULL_NAME "gpio@58020800" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_FULL_NAME_UNQUOTED gpio@58020800 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_FULL_NAME_TOKEN gpio_58020800 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_FULL_NAME_UPPER_TOKEN GPIO_58020800 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -10440,14 +10610,14 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_REQUIRES_ORDS \ - 9, /* /soc/rcc@58024400 */ \ - 10, /* /soc/pin-controller@58020000 */ + 9, \ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ \ - 105, /* /gpio_keys */ \ - 106, /* /gpio_keys/button_0 */ + 93, \ + 105, \ + 106, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_EXISTS 1 @@ -10457,8 +10627,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_REG_NUM 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_REG_IDX_0_VAL_ADDRESS 1476528128 /* 0x58020800 */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_REG_IDX_0_VAL_ADDRESS 1476528128 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_RANGES_NUM 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_FOREACH_RANGE(fn) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_IRQ_NUM 0 @@ -10474,31 +10644,11 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_gpio_controller 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_gpio_controller_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_ngpios 32 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_ngpios_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_wakeup_source 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible {"st,stm32-gpio"} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_IDX_0 "st,stm32-gpio" -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_LEN 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_reg {1476528128 /* 0x58020800 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_reg_IDX_0 1476528128 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_reg {1476528128, 1024} #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_reg_IDX_0 1476528128 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_reg_IDX_1 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_reg_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -10512,8 +10662,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_clocks_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_ngpios 16 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_ngpios_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_gpio_controller 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_gpio_controller_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible {"st,stm32-gpio"} +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_IDX_0 "st,stm32-gpio" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_LEN 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_compatible_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_wakeup_source 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/gpio@58020C00 @@ -10532,6 +10702,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_FULL_NAME "gpio@58020C00" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_FULL_NAME_UNQUOTED gpio@58020C00 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_FULL_NAME_TOKEN gpio_58020C00 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_FULL_NAME_UPPER_TOKEN GPIO_58020C00 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -10562,13 +10735,13 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_REQUIRES_ORDS \ - 9, /* /soc/rcc@58024400 */ \ - 10, /* /soc/pin-controller@58020000 */ + 9, \ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ \ - 163, /* /soc/i2c@58001c00/ov7670@21 */ + 93, \ + 166, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_EXISTS 1 @@ -10578,8 +10751,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_REG_NUM 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_REG_IDX_0_VAL_ADDRESS 1476529152 /* 0x58020c00 */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_REG_IDX_0_VAL_ADDRESS 1476529152 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_RANGES_NUM 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_FOREACH_RANGE(fn) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_IRQ_NUM 0 @@ -10595,31 +10768,11 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_gpio_controller 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_gpio_controller_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_ngpios 32 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_ngpios_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_wakeup_source 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible {"st,stm32-gpio"} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_IDX_0 "st,stm32-gpio" -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_LEN 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_reg {1476529152 /* 0x58020c00 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_reg_IDX_0 1476529152 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_reg {1476529152, 1024} #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_reg_IDX_0 1476529152 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_reg_IDX_1 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_reg_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -10633,8 +10786,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_clocks_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_ngpios 16 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_ngpios_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_gpio_controller 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_gpio_controller_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible {"st,stm32-gpio"} +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_IDX_0 "st,stm32-gpio" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_LEN 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_compatible_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_wakeup_source 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/gpio@58021000 @@ -10653,6 +10826,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_FULL_NAME "gpio@58021000" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_FULL_NAME_UNQUOTED gpio@58021000 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_FULL_NAME_TOKEN gpio_58021000 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_FULL_NAME_UPPER_TOKEN GPIO_58021000 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -10683,14 +10859,14 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_REQUIRES_ORDS \ - 9, /* /soc/rcc@58024400 */ \ - 10, /* /soc/pin-controller@58020000 */ + 9, \ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ \ - 107, /* /leds */ \ - 110, /* /leds/led_2 */ + 93, \ + 107, \ + 110, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_EXISTS 1 @@ -10700,8 +10876,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_REG_NUM 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_REG_IDX_0_VAL_ADDRESS 1476530176 /* 0x58021000 */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_REG_IDX_0_VAL_ADDRESS 1476530176 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_RANGES_NUM 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_IRQ_NUM 0 @@ -10717,31 +10893,11 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_gpio_controller 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_gpio_controller_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_ngpios 32 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_ngpios_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_wakeup_source 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible {"st,stm32-gpio"} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_IDX_0 "st,stm32-gpio" -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_LEN 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_reg {1476530176 /* 0x58021000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_reg_IDX_0 1476530176 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_reg {1476530176, 1024} #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_reg_IDX_0 1476530176 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_reg_IDX_1 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_reg_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -10755,8 +10911,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_clocks_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_ngpios 16 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_ngpios_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_gpio_controller 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_gpio_controller_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible {"st,stm32-gpio"} +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_IDX_0 "st,stm32-gpio" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_LEN 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_compatible_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_wakeup_source 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/gpio@58021800 @@ -10775,6 +10951,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_FULL_NAME "gpio@58021800" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_FULL_NAME_UNQUOTED gpio@58021800 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_FULL_NAME_TOKEN gpio_58021800 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_FULL_NAME_UPPER_TOKEN GPIO_58021800 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -10805,13 +10984,13 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_REQUIRES_ORDS \ - 9, /* /soc/rcc@58024400 */ \ - 10, /* /soc/pin-controller@58020000 */ + 9, \ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ \ - 250, /* /soc/serial@40007800/bt_hci_uart/murata-1dx */ + 93, \ + 253, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_EXISTS 1 @@ -10821,8 +11000,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_REG_NUM 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_REG_IDX_0_VAL_ADDRESS 1476532224 /* 0x58021800 */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_REG_IDX_0_VAL_ADDRESS 1476532224 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_RANGES_NUM 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_FOREACH_RANGE(fn) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_IRQ_NUM 0 @@ -10838,31 +11017,11 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_gpio_controller 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_gpio_controller_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_ngpios 32 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_ngpios_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_wakeup_source 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible {"st,stm32-gpio"} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_IDX_0 "st,stm32-gpio" -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_LEN 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_reg {1476532224 /* 0x58021800 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_reg_IDX_0 1476532224 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_reg {1476532224, 1024} #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_reg_IDX_0 1476532224 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_reg_IDX_1 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_reg_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -10876,8 +11035,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_clocks_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_ngpios 16 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_ngpios_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_gpio_controller 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_gpio_controller_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible {"st,stm32-gpio"} +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_IDX_0 "st,stm32-gpio" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_LEN 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_compatible_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_wakeup_source 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/gpio@58021C00 @@ -10896,6 +11075,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_FULL_NAME "gpio@58021C00" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_FULL_NAME_UNQUOTED gpio@58021C00 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_FULL_NAME_TOKEN gpio_58021C00 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_FULL_NAME_UPPER_TOKEN GPIO_58021C00 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -10926,13 +11108,13 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_REQUIRES_ORDS \ - 9, /* /soc/rcc@58024400 */ \ - 10, /* /soc/pin-controller@58020000 */ + 9, \ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ \ - 250, /* /soc/serial@40007800/bt_hci_uart/murata-1dx */ + 93, \ + 253, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_EXISTS 1 @@ -10942,8 +11124,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_REG_NUM 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_REG_IDX_0_VAL_ADDRESS 1476533248 /* 0x58021c00 */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_REG_IDX_0_VAL_ADDRESS 1476533248 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_RANGES_NUM 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_FOREACH_RANGE(fn) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_IRQ_NUM 0 @@ -10959,31 +11141,11 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_gpio_controller 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_gpio_controller_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_ngpios 32 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_ngpios_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_wakeup_source 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible {"st,stm32-gpio"} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_IDX_0 "st,stm32-gpio" -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_LEN 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_reg {1476533248 /* 0x58021c00 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_reg_IDX_0 1476533248 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_reg {1476533248, 1024} #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_reg_IDX_0 1476533248 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_reg_IDX_1 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_reg_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -10997,8 +11159,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_clocks_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_ngpios 16 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_ngpios_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_gpio_controller 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_gpio_controller_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible {"st,stm32-gpio"} +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_IDX_0 "st,stm32-gpio" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_LEN 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_compatible_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_wakeup_source 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/gpio@58022000 @@ -11017,6 +11199,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_FULL_NAME "gpio@58022000" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_FULL_NAME_UNQUOTED gpio@58022000 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_FULL_NAME_TOKEN gpio_58022000 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_FULL_NAME_UPPER_TOKEN GPIO_58022000 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -11047,14 +11232,14 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_REQUIRES_ORDS \ - 9, /* /soc/rcc@58024400 */ \ - 10, /* /soc/pin-controller@58020000 */ + 9, \ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ \ - 107, /* /leds */ \ - 108, /* /leds/led_0 */ + 93, \ + 107, \ + 108, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_EXISTS 1 @@ -11064,8 +11249,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_REG_NUM 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_REG_IDX_0_VAL_ADDRESS 1476534272 /* 0x58022000 */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_REG_IDX_0_VAL_ADDRESS 1476534272 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_RANGES_NUM 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_IRQ_NUM 0 @@ -11081,31 +11266,11 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_gpio_controller 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_gpio_controller_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_ngpios 32 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_ngpios_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_wakeup_source 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible {"st,stm32-gpio"} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_IDX_0 "st,stm32-gpio" -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_LEN 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_reg {1476534272 /* 0x58022000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_reg_IDX_0 1476534272 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_reg {1476534272, 1024} #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_reg_IDX_0 1476534272 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_reg_IDX_1 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_reg_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -11119,8 +11284,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_clocks_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_ngpios 16 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_ngpios_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_gpio_controller 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_gpio_controller_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible {"st,stm32-gpio"} +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_IDX_0 "st,stm32-gpio" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_LEN 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_compatible_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_wakeup_source 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/gpio@58022400 @@ -11139,6 +11324,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_FULL_NAME "gpio@58022400" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_FULL_NAME_UNQUOTED gpio@58022400 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_FULL_NAME_TOKEN gpio_58022400 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_FULL_NAME_UPPER_TOKEN GPIO_58022400 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -11169,14 +11357,14 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_REQUIRES_ORDS \ - 9, /* /soc/rcc@58024400 */ \ - 10, /* /soc/pin-controller@58020000 */ + 9, \ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ \ - 107, /* /leds */ \ - 109, /* /leds/led_1 */ + 93, \ + 107, \ + 109, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_EXISTS 1 @@ -11186,8 +11374,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_REG_NUM 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_REG_IDX_0_VAL_ADDRESS 1476535296 /* 0x58022400 */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_REG_IDX_0_VAL_ADDRESS 1476535296 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_RANGES_NUM 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_IRQ_NUM 0 @@ -11203,31 +11391,11 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_gpio_controller 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_gpio_controller_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_ngpios 32 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_ngpios_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_wakeup_source 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible {"st,stm32-gpio"} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_IDX_0 "st,stm32-gpio" -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_LEN 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_reg {1476535296 /* 0x58022400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_reg_IDX_0 1476535296 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_reg {1476535296, 1024} #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_reg_IDX_0 1476535296 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_reg_IDX_1 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_reg_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -11241,8 +11409,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_clocks_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_ngpios 16 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_ngpios_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_gpio_controller 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_gpio_controller_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible {"st,stm32-gpio"} +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_IDX_0 "st,stm32-gpio" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_LEN 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_compatible_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_wakeup_source 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/gpio@58022800 @@ -11261,6 +11449,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_FULL_NAME "gpio@58022800" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_FULL_NAME_UNQUOTED gpio@58022800 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_FULL_NAME_TOKEN gpio_58022800 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_FULL_NAME_UPPER_TOKEN GPIO_58022800 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -11291,12 +11482,12 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_REQUIRES_ORDS \ - 9, /* /soc/rcc@58024400 */ \ - 10, /* /soc/pin-controller@58020000 */ + 9, \ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ + 93, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_EXISTS 1 @@ -11306,8 +11497,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_REG_NUM 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_REG_IDX_0_VAL_ADDRESS 1476536320 /* 0x58022800 */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_REG_IDX_0_VAL_ADDRESS 1476536320 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_RANGES_NUM 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_FOREACH_RANGE(fn) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_IRQ_NUM 0 @@ -11323,31 +11514,11 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_gpio_controller 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_gpio_controller_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_ngpios 32 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_ngpios_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_wakeup_source 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible {"st,stm32-gpio"} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_IDX_0 "st,stm32-gpio" -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_LEN 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_reg {1476536320 /* 0x58022800 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_reg_IDX_0 1476536320 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_reg {1476536320, 1024} #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_reg_IDX_0 1476536320 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_reg_IDX_1 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_reg_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -11361,8 +11532,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_clocks_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_ngpios 16 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_ngpios_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_gpio_controller 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_gpio_controller_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible {"st,stm32-gpio"} +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_IDX_0 "st,stm32-gpio" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_LEN 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_compatible_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_wakeup_source 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40010000 @@ -11381,6 +11572,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40010000_FULL_NAME "timers@40010000" +#define DT_N_S_soc_S_timers_40010000_FULL_NAME_UNQUOTED timers@40010000 +#define DT_N_S_soc_S_timers_40010000_FULL_NAME_TOKEN timers_40010000 +#define DT_N_S_soc_S_timers_40010000_FULL_NAME_UPPER_TOKEN TIMERS_40010000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timers_40010000_PARENT DT_N_S_soc @@ -11411,14 +11605,14 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40010000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40010000_SUPPORTS_ORDS \ - 87, /* /soc/timers@40010000/pwm */ + 87, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_timers_40010000_EXISTS 1 @@ -11428,8 +11622,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timers_40010000_REG_NUM 1 #define DT_N_S_soc_S_timers_40010000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_REG_IDX_0_VAL_ADDRESS 1073807360 /* 0x40010000 */ -#define DT_N_S_soc_S_timers_40010000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_timers_40010000_REG_IDX_0_VAL_ADDRESS 1073807360 +#define DT_N_S_soc_S_timers_40010000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_timers_40010000_RANGES_NUM 0 #define DT_N_S_soc_S_timers_40010000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timers_40010000_IRQ_NUM 4 @@ -11493,20 +11687,46 @@ #define DT_N_S_soc_S_timers_40010000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40010000_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40010000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40010000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_reg {1073807360, 1024} +#define DT_N_S_soc_S_timers_40010000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_reg_IDX_0 1073807360 +#define DT_N_S_soc_S_timers_40010000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_timers_40010000_P_reg_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_timers_40010000_P_clocks_IDX_0_VAL_bus 240 +#define DT_N_S_soc_S_timers_40010000_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_clocks_IDX_0_VAL_bits 1 +#define DT_N_S_soc_S_timers_40010000_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000, clocks, 0) +#define DT_N_S_soc_S_timers_40010000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000, clocks, 0) +#define DT_N_S_soc_S_timers_40010000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40010000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40010000_P_clocks_LEN 1 +#define DT_N_S_soc_S_timers_40010000_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_timers_40010000_P_resets_IDX_0_VAL_id 4864 +#define DT_N_S_soc_S_timers_40010000_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000, resets, 0) +#define DT_N_S_soc_S_timers_40010000_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000, resets, 0) +#define DT_N_S_soc_S_timers_40010000_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40010000_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010000, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40010000_P_resets_LEN 1 +#define DT_N_S_soc_S_timers_40010000_P_resets_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_st_prescaler 0 +#define DT_N_S_soc_S_timers_40010000_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_st_countermode 0 +#define DT_N_S_soc_S_timers_40010000_P_st_countermode_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_P_status "okay" #define DT_N_S_soc_S_timers_40010000_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_timers_40010000_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_timers_40010000_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_timers_40010000_P_status_IDX_0 "okay" #define DT_N_S_soc_S_timers_40010000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_timers_40010000_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_timers_40010000_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_timers_40010000_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_timers_40010000_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000, status, 0) #define DT_N_S_soc_S_timers_40010000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000, status, 0) #define DT_N_S_soc_S_timers_40010000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000, status, 0, __VA_ARGS__) @@ -11514,62 +11734,56 @@ #define DT_N_S_soc_S_timers_40010000_P_status_LEN 1 #define DT_N_S_soc_S_timers_40010000_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_P_compatible {"st,stm32-timers"} +#define DT_N_S_soc_S_timers_40010000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_P_compatible_IDX_0 "st,stm32-timers" #define DT_N_S_soc_S_timers_40010000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-timers #define DT_N_S_soc_S_timers_40010000_P_compatible_IDX_0_STRING_TOKEN st_stm32_timers #define DT_N_S_soc_S_timers_40010000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_TIMERS -#define DT_N_S_soc_S_timers_40010000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000, compatible, 0) #define DT_N_S_soc_S_timers_40010000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000, compatible, 0) #define DT_N_S_soc_S_timers_40010000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40010000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40010000_P_compatible_LEN 1 #define DT_N_S_soc_S_timers_40010000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_reg {1073807360 /* 0x40010000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_timers_40010000_P_reg_IDX_0 1073807360 -#define DT_N_S_soc_S_timers_40010000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_timers_40010000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_interrupts {24 /* 0x18 */, 0 /* 0x0 */, 25 /* 0x19 */, 0 /* 0x0 */, 26 /* 0x1a */, 0 /* 0x0 */, 27 /* 0x1b */, 0 /* 0x0 */} -#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_0 24 +#define DT_N_S_soc_S_timers_40010000_P_interrupts {24, 0, 25, 0, 26, 0, 27, 0} #define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_0 24 #define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_2 25 +#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_3 0 +#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_2 25 #define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_4 26 +#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_3 0 #define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_5 0 +#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_4 26 #define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_6 27 +#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_5 0 #define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_7 0 +#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_6 27 #define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_7_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_interrupts_IDX_7 0 #define DT_N_S_soc_S_timers_40010000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_P_interrupt_names {"brk", "up", "trgcom", "cc"} +#define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_0 "brk" #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_0_STRING_UNQUOTED brk #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_0_STRING_TOKEN brk #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN BRK -#define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_1 "up" #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_1_STRING_UNQUOTED up #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_1_STRING_TOKEN up #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_1_STRING_UPPER_TOKEN UP -#define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_2_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_2 "trgcom" #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_2_STRING_UNQUOTED trgcom #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_2_STRING_TOKEN trgcom #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_2_STRING_UPPER_TOKEN TRGCOM -#define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_3_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_3 "cc" #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_3_STRING_UNQUOTED cc #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_3_STRING_TOKEN cc #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_3_STRING_UPPER_TOKEN CC -#define DT_N_S_soc_S_timers_40010000_P_interrupt_names_IDX_3_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000, interrupt_names, 0) \ fn(DT_N_S_soc_S_timers_40010000, interrupt_names, 1) \ fn(DT_N_S_soc_S_timers_40010000, interrupt_names, 2) \ @@ -11588,34 +11802,12 @@ fn(DT_N_S_soc_S_timers_40010000, interrupt_names, 3, __VA_ARGS__) #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_LEN 4 #define DT_N_S_soc_S_timers_40010000_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_timers_40010000_P_clocks_IDX_0_VAL_bus 240 -#define DT_N_S_soc_S_timers_40010000_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_clocks_IDX_0_VAL_bits 1 -#define DT_N_S_soc_S_timers_40010000_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000, clocks, 0) -#define DT_N_S_soc_S_timers_40010000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000, clocks, 0) -#define DT_N_S_soc_S_timers_40010000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40010000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40010000_P_clocks_LEN 1 -#define DT_N_S_soc_S_timers_40010000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40010000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_timers_40010000_P_resets_IDX_0_VAL_id 4864 -#define DT_N_S_soc_S_timers_40010000_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000, resets, 0) -#define DT_N_S_soc_S_timers_40010000_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000, resets, 0) -#define DT_N_S_soc_S_timers_40010000_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40010000_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010000, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40010000_P_resets_LEN 1 -#define DT_N_S_soc_S_timers_40010000_P_resets_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_st_prescaler 0 -#define DT_N_S_soc_S_timers_40010000_P_st_prescaler_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_P_st_countermode 0 -#define DT_N_S_soc_S_timers_40010000_P_st_countermode_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40010000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40010000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/tim1_ch3_pj9 @@ -11631,6 +11823,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_FULL_NAME "tim1_ch3_pj9" +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_FULL_NAME_UNQUOTED tim1_ch3_pj9 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_FULL_NAME_TOKEN tim1_ch3_pj9 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_FULL_NAME_UPPER_TOKEN TIM1_CH3_PJ9 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -11661,11 +11856,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_SUPPORTS_ORDS \ - 87, /* /soc/timers@40010000/pwm */ + 87, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_EXISTS 1 @@ -11683,20 +11878,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_pinmux 4897 #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate "low-speed" @@ -11705,16 +11886,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9_P_output_high_EXISTS 1 /* * Devicetree node: /soc/timers@40010000/pwm @@ -11733,6 +11926,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40010000_S_pwm_FULL_NAME "pwm" +#define DT_N_S_soc_S_timers_40010000_S_pwm_FULL_NAME_UNQUOTED pwm +#define DT_N_S_soc_S_timers_40010000_S_pwm_FULL_NAME_TOKEN pwm +#define DT_N_S_soc_S_timers_40010000_S_pwm_FULL_NAME_UPPER_TOKEN PWM /* Node parent (/soc/timers@40010000) identifier: */ #define DT_N_S_soc_S_timers_40010000_S_pwm_PARENT DT_N_S_soc_S_timers_40010000 @@ -11763,13 +11959,13 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40010000_S_pwm_REQUIRES_ORDS \ - 85, /* /soc/timers@40010000 */ \ - 86, /* /soc/pin-controller@58020000/tim1_ch3_pj9 */ + 85, \ + 86, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40010000_S_pwm_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ \ - 276, /* /soc/timers@40010000/pwm/pwmclock */ + 93, \ + 279, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_timers_40010000_S_pwm_EXISTS 1 @@ -11799,20 +11995,37 @@ #define DT_N_S_soc_S_timers_40010000_S_pwm_PINCTRL_NAME_default_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9 +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9 +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_0, 0) +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_0, 0) +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_0, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_0, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_LEN 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_IDX_0 "default" +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_IDX_0_STRING_UNQUOTED default +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_IDX_0_STRING_TOKEN default +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_names, 0) +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_names, 0) +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_LEN 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_four_channel_capture_support 0 +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_four_channel_capture_support_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_S_pwm_P_status "okay" #define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_IDX_0 "okay" #define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm, status, 0, __VA_ARGS__) @@ -11820,11 +12033,11 @@ #define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_LEN 1 #define DT_N_S_soc_S_timers_40010000_S_pwm_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_S_pwm_P_compatible {"st,stm32-pwm"} +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_S_pwm_P_compatible_IDX_0 "st,stm32-pwm" #define DT_N_S_soc_S_timers_40010000_S_pwm_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-pwm #define DT_N_S_soc_S_timers_40010000_S_pwm_P_compatible_IDX_0_STRING_TOKEN st_stm32_pwm #define DT_N_S_soc_S_timers_40010000_S_pwm_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_PWM -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_S_pwm_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40010000_S_pwm_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40010000_S_pwm_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm, compatible, 0, __VA_ARGS__) @@ -11833,29 +12046,10 @@ #define DT_N_S_soc_S_timers_40010000_S_pwm_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_S_pwm_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40010000_S_pwm_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_0, 0) -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_0, 0) -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_0, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_0, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_LEN 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names {"default"} -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_IDX_0 "default" -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_IDX_0_STRING_UNQUOTED default -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_IDX_0_STRING_TOKEN default -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_names, 0) -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_names, 0) -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_LEN 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_pinctrl_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_four_channel_capture_support 0 -#define DT_N_S_soc_S_timers_40010000_S_pwm_P_four_channel_capture_support_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40010000_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /otghs_fs_phy @@ -11874,12 +12068,15 @@ /* Node's name with unit-address: */ #define DT_N_S_otghs_fs_phy_FULL_NAME "otghs_fs_phy" +#define DT_N_S_otghs_fs_phy_FULL_NAME_UNQUOTED otghs_fs_phy +#define DT_N_S_otghs_fs_phy_FULL_NAME_TOKEN otghs_fs_phy +#define DT_N_S_otghs_fs_phy_FULL_NAME_UPPER_TOKEN OTGHS_FS_PHY /* Node parent (/) identifier: */ #define DT_N_S_otghs_fs_phy_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_otghs_fs_phy_CHILD_IDX 18 +#define DT_N_S_otghs_fs_phy_CHILD_IDX 19 /* Helpers for dealing with node labels: */ #define DT_N_S_otghs_fs_phy_NODELABEL_NUM 1 @@ -11904,12 +12101,12 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_otghs_fs_phy_REQUIRES_ORDS \ - 0, /* / */ + 0, /* Ordinals for what depends directly on this node: */ #define DT_N_S_otghs_fs_phy_SUPPORTS_ORDS \ - 91, /* /soc/usb@40080000 */ \ - 145, /* /soc/usb@40040000 */ + 91, \ + 148, /* Existence and alternate IDs: */ #define DT_N_S_otghs_fs_phy_EXISTS 1 @@ -11929,16 +12126,12 @@ #define DT_N_S_otghs_fs_phy_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_otghs_fs_phy_P_wakeup_source 0 -#define DT_N_S_otghs_fs_phy_P_wakeup_source_EXISTS 1 -#define DT_N_S_otghs_fs_phy_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_otghs_fs_phy_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_otghs_fs_phy_P_compatible {"usb-nop-xceiv"} +#define DT_N_S_otghs_fs_phy_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_otghs_fs_phy_P_compatible_IDX_0 "usb-nop-xceiv" #define DT_N_S_otghs_fs_phy_P_compatible_IDX_0_STRING_UNQUOTED usb-nop-xceiv #define DT_N_S_otghs_fs_phy_P_compatible_IDX_0_STRING_TOKEN usb_nop_xceiv #define DT_N_S_otghs_fs_phy_P_compatible_IDX_0_STRING_UPPER_TOKEN USB_NOP_XCEIV -#define DT_N_S_otghs_fs_phy_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_otghs_fs_phy_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_otghs_fs_phy, compatible, 0) #define DT_N_S_otghs_fs_phy_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_otghs_fs_phy, compatible, 0) #define DT_N_S_otghs_fs_phy_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_otghs_fs_phy, compatible, 0, __VA_ARGS__) @@ -11947,6 +12140,10 @@ #define DT_N_S_otghs_fs_phy_P_compatible_EXISTS 1 #define DT_N_S_otghs_fs_phy_P_zephyr_deferred_init 0 #define DT_N_S_otghs_fs_phy_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_otghs_fs_phy_P_wakeup_source 0 +#define DT_N_S_otghs_fs_phy_P_wakeup_source_EXISTS 1 +#define DT_N_S_otghs_fs_phy_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_otghs_fs_phy_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/usb_otg_fs_dm_pa11 @@ -11962,6 +12159,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_FULL_NAME "usb_otg_fs_dm_pa11" +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_FULL_NAME_UNQUOTED usb_otg_fs_dm_pa11 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_FULL_NAME_TOKEN usb_otg_fs_dm_pa11 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_FULL_NAME_UPPER_TOKEN USB_OTG_FS_DM_PA11 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -11992,11 +12192,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_SUPPORTS_ORDS \ - 91, /* /soc/usb@40080000 */ + 91, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_EXISTS 1 @@ -12014,20 +12214,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_pinmux 362 #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate "low-speed" @@ -12036,16 +12222,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/usb_otg_fs_dp_pa12 @@ -12061,6 +12259,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_FULL_NAME "usb_otg_fs_dp_pa12" +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_FULL_NAME_UNQUOTED usb_otg_fs_dp_pa12 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_FULL_NAME_TOKEN usb_otg_fs_dp_pa12 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_FULL_NAME_UPPER_TOKEN USB_OTG_FS_DP_PA12 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -12091,11 +12292,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_SUPPORTS_ORDS \ - 91, /* /soc/usb@40080000 */ + 91, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_EXISTS 1 @@ -12113,20 +12314,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_pinmux 394 #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate "low-speed" @@ -12135,16 +12322,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12_P_output_high_EXISTS 1 /* * Devicetree node: /soc/usb@40080000 @@ -12163,6 +12362,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_usb_40080000_FULL_NAME "usb@40080000" +#define DT_N_S_soc_S_usb_40080000_FULL_NAME_UNQUOTED usb@40080000 +#define DT_N_S_soc_S_usb_40080000_FULL_NAME_TOKEN usb_40080000 +#define DT_N_S_soc_S_usb_40080000_FULL_NAME_UPPER_TOKEN USB_40080000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_usb_40080000_PARENT DT_N_S_soc @@ -12193,16 +12395,16 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_usb_40080000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 88, /* /otghs_fs_phy */ \ - 89, /* /soc/pin-controller@58020000/usb_otg_fs_dm_pa11 */ \ - 90, /* /soc/pin-controller@58020000/usb_otg_fs_dp_pa12 */ + 4, \ + 5, \ + 9, \ + 88, \ + 89, \ + 90, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_usb_40080000_SUPPORTS_ORDS \ - 92, /* /soc/usb@40080000/cdc_acm_uart0 */ + 92, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_usb_40080000_EXISTS 1 @@ -12213,8 +12415,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_usb_40080000_REG_NUM 1 #define DT_N_S_soc_S_usb_40080000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_REG_IDX_0_VAL_ADDRESS 1074266112 /* 0x40080000 */ -#define DT_N_S_soc_S_usb_40080000_REG_IDX_0_VAL_SIZE 262144 /* 0x40000 */ +#define DT_N_S_soc_S_usb_40080000_REG_IDX_0_VAL_ADDRESS 1074266112 +#define DT_N_S_soc_S_usb_40080000_REG_IDX_0_VAL_SIZE 262144 #define DT_N_S_soc_S_usb_40080000_RANGES_NUM 0 #define DT_N_S_soc_S_usb_40080000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_usb_40080000_IRQ_NUM 4 @@ -12285,20 +12487,116 @@ #define DT_N_S_soc_S_usb_40080000_PINCTRL_NAME_default_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12 /* Generic property macros: */ -#define DT_N_S_soc_S_usb_40080000_P_wakeup_source 0 -#define DT_N_S_soc_S_usb_40080000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_usb_40080000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_reg {1074266112, 262144} +#define DT_N_S_soc_S_usb_40080000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_reg_IDX_0 1074266112 +#define DT_N_S_soc_S_usb_40080000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_reg_IDX_1 262144 +#define DT_N_S_soc_S_usb_40080000_P_reg_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_interrupts {98, 0, 99, 0, 100, 0, 101, 0} +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_0 98 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_2 99 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_3 0 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_4_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_4 100 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_5_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_5 0 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_6_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_6 101 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_7_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_7 0 +#define DT_N_S_soc_S_usb_40080000_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11 +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11 +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_IDX_1 DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12 +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12 +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 0) \ + fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 1) +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 1) +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 1, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 1, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_LEN 2 +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_IDX_0 "default" +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_IDX_0_STRING_UNQUOTED default +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_IDX_0_STRING_TOKEN default +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40080000, pinctrl_names, 0) +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40080000, pinctrl_names, 0) +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40080000, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40080000, pinctrl_names, 0, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_LEN 1 +#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_ram_size 4096 +#define DT_N_S_soc_S_usb_40080000_P_ram_size_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_phys DT_N_S_otghs_fs_phy +#define DT_N_S_soc_S_usb_40080000_P_phys_IDX_0 DT_N_S_otghs_fs_phy +#define DT_N_S_soc_S_usb_40080000_P_phys_IDX_0_PH DT_N_S_otghs_fs_phy +#define DT_N_S_soc_S_usb_40080000_P_phys_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_phys_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40080000, phys, 0) +#define DT_N_S_soc_S_usb_40080000_P_phys_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40080000, phys, 0) +#define DT_N_S_soc_S_usb_40080000_P_phys_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40080000, phys, 0, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40080000_P_phys_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40080000, phys, 0, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40080000_P_phys_LEN 1 +#define DT_N_S_soc_S_usb_40080000_P_phys_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_0_VAL_bus 216 +#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_0_VAL_bits 134217728 +#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_1_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_1_VAL_bus 5 +#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_1_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_1_VAL_bits 226388 +#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_1_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40080000, clocks, 0) \ + fn(DT_N_S_soc_S_usb_40080000, clocks, 1) +#define DT_N_S_soc_S_usb_40080000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40080000, clocks, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_usb_40080000, clocks, 1) +#define DT_N_S_soc_S_usb_40080000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40080000, clocks, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_usb_40080000, clocks, 1, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40080000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40080000, clocks, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_usb_40080000, clocks, 1, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40080000_P_clocks_LEN 2 +#define DT_N_S_soc_S_usb_40080000_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_num_bidir_endpoints 9 +#define DT_N_S_soc_S_usb_40080000_P_num_bidir_endpoints_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_maximum_speed "full-speed" +#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_STRING_UNQUOTED full-speed +#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_STRING_TOKEN full_speed +#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_STRING_UPPER_TOKEN FULL_SPEED +#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_IDX_0 "full-speed" +#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_IDX_0_ENUM_VAL_full_speed_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40080000, maximum_speed, 0) +#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40080000, maximum_speed, 0) +#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40080000, maximum_speed, 0, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40080000, maximum_speed, 0, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_LEN 1 +#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_P_status "okay" #define DT_N_S_soc_S_usb_40080000_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_usb_40080000_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_usb_40080000_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_usb_40080000_P_status_IDX_0 "okay" #define DT_N_S_soc_S_usb_40080000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_usb_40080000_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_usb_40080000_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_usb_40080000_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_usb_40080000_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40080000, status, 0) #define DT_N_S_soc_S_usb_40080000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40080000, status, 0) #define DT_N_S_soc_S_usb_40080000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40080000, status, 0, __VA_ARGS__) @@ -12306,62 +12604,38 @@ #define DT_N_S_soc_S_usb_40080000_P_status_LEN 1 #define DT_N_S_soc_S_usb_40080000_P_status_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_P_compatible {"st,stm32-otgfs"} +#define DT_N_S_soc_S_usb_40080000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_P_compatible_IDX_0 "st,stm32-otgfs" #define DT_N_S_soc_S_usb_40080000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-otgfs #define DT_N_S_soc_S_usb_40080000_P_compatible_IDX_0_STRING_TOKEN st_stm32_otgfs #define DT_N_S_soc_S_usb_40080000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_OTGFS -#define DT_N_S_soc_S_usb_40080000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40080000, compatible, 0) #define DT_N_S_soc_S_usb_40080000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40080000, compatible, 0) #define DT_N_S_soc_S_usb_40080000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40080000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_usb_40080000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40080000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_usb_40080000_P_compatible_LEN 1 #define DT_N_S_soc_S_usb_40080000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_reg {1074266112 /* 0x40080000 */, 262144 /* 0x40000 */} -#define DT_N_S_soc_S_usb_40080000_P_reg_IDX_0 1074266112 -#define DT_N_S_soc_S_usb_40080000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_reg_IDX_1 262144 -#define DT_N_S_soc_S_usb_40080000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_interrupts {98 /* 0x62 */, 0 /* 0x0 */, 99 /* 0x63 */, 0 /* 0x0 */, 100 /* 0x64 */, 0 /* 0x0 */, 101 /* 0x65 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_0 98 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_2 99 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_3 0 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_4 100 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_5 0 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_6 101 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_7 0 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_IDX_7_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_P_interrupt_names {"ep1_out", "ep1_in", "wkup", "otgfs"} +#define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_0 "ep1_out" #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_0_STRING_UNQUOTED ep1_out #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_0_STRING_TOKEN ep1_out #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN EP1_OUT -#define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_1 "ep1_in" #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_1_STRING_UNQUOTED ep1_in #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_1_STRING_TOKEN ep1_in #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_1_STRING_UPPER_TOKEN EP1_IN -#define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_2_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_2 "wkup" #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_2_STRING_UNQUOTED wkup #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_2_STRING_TOKEN wkup #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_2_STRING_UPPER_TOKEN WKUP -#define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_3_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_3 "otgfs" #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_3_STRING_UNQUOTED otgfs #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_3_STRING_TOKEN otgfs #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_3_STRING_UPPER_TOKEN OTGFS -#define DT_N_S_soc_S_usb_40080000_P_interrupt_names_IDX_3_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40080000, interrupt_names, 0) \ fn(DT_N_S_soc_S_usb_40080000, interrupt_names, 1) \ fn(DT_N_S_soc_S_usb_40080000, interrupt_names, 2) \ @@ -12380,88 +12654,12 @@ fn(DT_N_S_soc_S_usb_40080000, interrupt_names, 3, __VA_ARGS__) #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_LEN 4 #define DT_N_S_soc_S_usb_40080000_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_0_VAL_bus 216 -#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_0_VAL_bits 134217728 -#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_1_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_1_VAL_bus 5 -#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_1_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_1_VAL_bits 226388 -#define DT_N_S_soc_S_usb_40080000_P_clocks_IDX_1_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40080000, clocks, 0) \ - fn(DT_N_S_soc_S_usb_40080000, clocks, 1) -#define DT_N_S_soc_S_usb_40080000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40080000, clocks, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_usb_40080000, clocks, 1) -#define DT_N_S_soc_S_usb_40080000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40080000, clocks, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_usb_40080000, clocks, 1, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40080000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40080000, clocks, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_usb_40080000, clocks, 1, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40080000_P_clocks_LEN 2 -#define DT_N_S_soc_S_usb_40080000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_usb_40080000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed "full-speed" -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_STRING_UNQUOTED full-speed -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_STRING_TOKEN full_speed -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_STRING_UPPER_TOKEN FULL_SPEED -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_IDX_0 "full-speed" -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_ENUM_IDX 1 -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_ENUM_VAL_full_speed_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_ENUM_TOKEN full_speed -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_ENUM_UPPER_TOKEN FULL_SPEED -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40080000, maximum_speed, 0) -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40080000, maximum_speed, 0) -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40080000, maximum_speed, 0, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40080000, maximum_speed, 0, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_LEN 1 -#define DT_N_S_soc_S_usb_40080000_P_maximum_speed_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_num_bidir_endpoints 9 -#define DT_N_S_soc_S_usb_40080000_P_num_bidir_endpoints_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11 -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11 -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_IDX_1 DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12 -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12 -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 0) \ - fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 1) -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 1) -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 1, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_usb_40080000, pinctrl_0, 1, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_LEN 2 -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names {"default"} -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_IDX_0 "default" -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_IDX_0_STRING_UNQUOTED default -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_IDX_0_STRING_TOKEN default -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40080000, pinctrl_names, 0) -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40080000, pinctrl_names, 0) -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40080000, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40080000, pinctrl_names, 0, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_LEN 1 -#define DT_N_S_soc_S_usb_40080000_P_pinctrl_names_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_ram_size 4096 -#define DT_N_S_soc_S_usb_40080000_P_ram_size_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_phys DT_N_S_otghs_fs_phy -#define DT_N_S_soc_S_usb_40080000_P_phys_IDX_0 DT_N_S_otghs_fs_phy -#define DT_N_S_soc_S_usb_40080000_P_phys_IDX_0_PH DT_N_S_otghs_fs_phy -#define DT_N_S_soc_S_usb_40080000_P_phys_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_P_phys_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40080000, phys, 0) -#define DT_N_S_soc_S_usb_40080000_P_phys_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40080000, phys, 0) -#define DT_N_S_soc_S_usb_40080000_P_phys_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40080000, phys, 0, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40080000_P_phys_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40080000, phys, 0, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40080000_P_phys_LEN 1 -#define DT_N_S_soc_S_usb_40080000_P_phys_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_wakeup_source 0 +#define DT_N_S_soc_S_usb_40080000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_usb_40080000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/usb@40080000/cdc_acm_uart0 @@ -12480,6 +12678,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_FULL_NAME "cdc_acm_uart0" +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_FULL_NAME_UNQUOTED cdc_acm_uart0 +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_FULL_NAME_TOKEN cdc_acm_uart0 +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_FULL_NAME_UPPER_TOKEN CDC_ACM_UART0 /* Node parent (/soc/usb@40080000) identifier: */ #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_PARENT DT_N_S_soc_S_usb_40080000 @@ -12510,11 +12711,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_REQUIRES_ORDS \ - 91, /* /soc/usb@40080000 */ + 91, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_SUPPORTS_ORDS \ - 93, /* /zephyr,user */ + 93, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_EXISTS 1 @@ -12542,20 +12743,20 @@ #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_wakeup_source 0 -#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_tx_fifo_size 1024 +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_tx_fifo_size_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_rx_fifo_size 1024 +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_rx_fifo_size_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_hw_flow_control 0 +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_hw_flow_control_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status "okay" #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_IDX_0 "okay" #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0, status, 0) #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0, status, 0) #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0, status, 0, __VA_ARGS__) @@ -12563,11 +12764,11 @@ #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_LEN 1 #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_status_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_compatible {"zephyr,cdc-acm-uart"} +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_compatible_IDX_0 "zephyr,cdc-acm-uart" #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_compatible_IDX_0_STRING_UNQUOTED zephyr,cdc-acm-uart #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_compatible_IDX_0_STRING_TOKEN zephyr_cdc_acm_uart #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_compatible_IDX_0_STRING_UPPER_TOKEN ZEPHYR_CDC_ACM_UART -#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0, compatible, 0) #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0, compatible, 0) #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0, compatible, 0, __VA_ARGS__) @@ -12576,12 +12777,10 @@ #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_compatible_EXISTS 1 #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_hw_flow_control 0 -#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_hw_flow_control_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_tx_fifo_size 1024 -#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_tx_fifo_size_EXISTS 1 -#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_rx_fifo_size 1024 -#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_rx_fifo_size_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_wakeup_source 0 +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /zephyr,user @@ -12597,12 +12796,15 @@ /* Node's name with unit-address: */ #define DT_N_S_zephyr_user_FULL_NAME "zephyr,user" +#define DT_N_S_zephyr_user_FULL_NAME_UNQUOTED zephyr,user +#define DT_N_S_zephyr_user_FULL_NAME_TOKEN zephyr_user +#define DT_N_S_zephyr_user_FULL_NAME_UPPER_TOKEN ZEPHYR_USER /* Node parent (/) identifier: */ #define DT_N_S_zephyr_user_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_zephyr_user_CHILD_IDX 24 +#define DT_N_S_zephyr_user_CHILD_IDX 25 /* Helpers for dealing with node labels: */ #define DT_N_S_zephyr_user_NODELABEL_NUM 0 @@ -12627,31 +12829,31 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_zephyr_user_REQUIRES_ORDS \ - 0, /* / */ \ - 13, /* /soc/adc@58026000 */ \ - 24, /* /soc/i2c@40005400 */ \ - 28, /* /soc/i2c@40005800 */ \ - 34, /* /soc/i2c@58001c00 */ \ - 38, /* /gpio@deadbeef */ \ - 51, /* /soc/adc@40022000 */ \ - 55, /* /soc/serial@40004400 */ \ - 58, /* /soc/serial@40004c00 */ \ - 61, /* /soc/serial@40011000 */ \ - 64, /* /soc/serial@40011400 */ \ - 69, /* /soc/spi@40013000 */ \ - 74, /* /soc/spi@40015000 */ \ - 75, /* /soc/pin-controller@58020000/gpio@58020000 */ \ - 76, /* /soc/pin-controller@58020000/gpio@58020400 */ \ - 77, /* /soc/pin-controller@58020000/gpio@58020800 */ \ - 78, /* /soc/pin-controller@58020000/gpio@58020C00 */ \ - 79, /* /soc/pin-controller@58020000/gpio@58021000 */ \ - 80, /* /soc/pin-controller@58020000/gpio@58021800 */ \ - 81, /* /soc/pin-controller@58020000/gpio@58021C00 */ \ - 82, /* /soc/pin-controller@58020000/gpio@58022000 */ \ - 83, /* /soc/pin-controller@58020000/gpio@58022400 */ \ - 84, /* /soc/pin-controller@58020000/gpio@58022800 */ \ - 87, /* /soc/timers@40010000/pwm */ \ - 92, /* /soc/usb@40080000/cdc_acm_uart0 */ + 0, \ + 13, \ + 24, \ + 28, \ + 34, \ + 38, \ + 51, \ + 55, \ + 58, \ + 61, \ + 64, \ + 69, \ + 74, \ + 75, \ + 76, \ + 77, \ + 78, \ + 79, \ + 80, \ + 81, \ + 82, \ + 83, \ + 84, \ + 87, \ + 92, /* Ordinals for what depends directly on this node: */ #define DT_N_S_zephyr_user_SUPPORTS_ORDS /* nothing */ @@ -14141,6 +14343,9 @@ /* Node's name with unit-address: */ #define DT_N_S_clocks_S_clk_csi_FULL_NAME "clk-csi" +#define DT_N_S_clocks_S_clk_csi_FULL_NAME_UNQUOTED clk-csi +#define DT_N_S_clocks_S_clk_csi_FULL_NAME_TOKEN clk_csi +#define DT_N_S_clocks_S_clk_csi_FULL_NAME_UPPER_TOKEN CLK_CSI /* Node parent (/clocks) identifier: */ #define DT_N_S_clocks_S_clk_csi_PARENT DT_N_S_clocks @@ -14171,7 +14376,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_clocks_S_clk_csi_REQUIRES_ORDS \ - 6, /* /clocks */ + 6, /* Ordinals for what depends directly on this node: */ #define DT_N_S_clocks_S_clk_csi_SUPPORTS_ORDS /* nothing */ @@ -14196,6 +14401,38 @@ /* Generic property macros: */ #define DT_N_S_clocks_S_clk_csi_P_clock_frequency 4000000 #define DT_N_S_clocks_S_clk_csi_P_clock_frequency_EXISTS 1 +#define DT_N_S_clocks_S_clk_csi_P_status "disabled" +#define DT_N_S_clocks_S_clk_csi_P_status_STRING_UNQUOTED disabled +#define DT_N_S_clocks_S_clk_csi_P_status_STRING_TOKEN disabled +#define DT_N_S_clocks_S_clk_csi_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_clocks_S_clk_csi_P_status_IDX_0 "disabled" +#define DT_N_S_clocks_S_clk_csi_P_status_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_clk_csi_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_clocks_S_clk_csi_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_clocks_S_clk_csi_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_clk_csi, status, 0) +#define DT_N_S_clocks_S_clk_csi_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_clk_csi, status, 0) +#define DT_N_S_clocks_S_clk_csi_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_clk_csi, status, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_csi_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_clk_csi, status, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_csi_P_status_LEN 1 +#define DT_N_S_clocks_S_clk_csi_P_status_EXISTS 1 +#define DT_N_S_clocks_S_clk_csi_P_compatible {"fixed-clock"} +#define DT_N_S_clocks_S_clk_csi_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_clk_csi_P_compatible_IDX_0 "fixed-clock" +#define DT_N_S_clocks_S_clk_csi_P_compatible_IDX_0_STRING_UNQUOTED fixed-clock +#define DT_N_S_clocks_S_clk_csi_P_compatible_IDX_0_STRING_TOKEN fixed_clock +#define DT_N_S_clocks_S_clk_csi_P_compatible_IDX_0_STRING_UPPER_TOKEN FIXED_CLOCK +#define DT_N_S_clocks_S_clk_csi_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_clk_csi, compatible, 0) +#define DT_N_S_clocks_S_clk_csi_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_clk_csi, compatible, 0) +#define DT_N_S_clocks_S_clk_csi_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_clk_csi, compatible, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_csi_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_clk_csi, compatible, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_csi_P_compatible_LEN 1 +#define DT_N_S_clocks_S_clk_csi_P_compatible_EXISTS 1 +#define DT_N_S_clocks_S_clk_csi_P_zephyr_deferred_init 0 +#define DT_N_S_clocks_S_clk_csi_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_clocks_S_clk_csi_P_wakeup_source 0 +#define DT_N_S_clocks_S_clk_csi_P_wakeup_source_EXISTS 1 +#define DT_N_S_clocks_S_clk_csi_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_clocks_S_clk_csi_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /clocks/clk-hsi @@ -14214,6 +14451,9 @@ /* Node's name with unit-address: */ #define DT_N_S_clocks_S_clk_hsi_FULL_NAME "clk-hsi" +#define DT_N_S_clocks_S_clk_hsi_FULL_NAME_UNQUOTED clk-hsi +#define DT_N_S_clocks_S_clk_hsi_FULL_NAME_TOKEN clk_hsi +#define DT_N_S_clocks_S_clk_hsi_FULL_NAME_UPPER_TOKEN CLK_HSI /* Node parent (/clocks) identifier: */ #define DT_N_S_clocks_S_clk_hsi_PARENT DT_N_S_clocks @@ -14244,7 +14484,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_clocks_S_clk_hsi_REQUIRES_ORDS \ - 6, /* /clocks */ + 6, /* Ordinals for what depends directly on this node: */ #define DT_N_S_clocks_S_clk_hsi_SUPPORTS_ORDS /* nothing */ @@ -14271,8 +14511,45 @@ #define DT_N_S_clocks_S_clk_hsi_PINCTRL_NUM 0 /* Generic property macros: */ +#define DT_N_S_clocks_S_clk_hsi_P_hsi_div 1 +#define DT_N_S_clocks_S_clk_hsi_P_hsi_div_IDX_0_ENUM_IDX 0 +#define DT_N_S_clocks_S_clk_hsi_P_hsi_div_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi_P_hsi_div_IDX_0_ENUM_VAL_1_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi_P_hsi_div_EXISTS 1 #define DT_N_S_clocks_S_clk_hsi_P_clock_frequency 64000000 #define DT_N_S_clocks_S_clk_hsi_P_clock_frequency_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi_P_status "disabled" +#define DT_N_S_clocks_S_clk_hsi_P_status_STRING_UNQUOTED disabled +#define DT_N_S_clocks_S_clk_hsi_P_status_STRING_TOKEN disabled +#define DT_N_S_clocks_S_clk_hsi_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_clocks_S_clk_hsi_P_status_IDX_0 "disabled" +#define DT_N_S_clocks_S_clk_hsi_P_status_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_clocks_S_clk_hsi_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_clk_hsi, status, 0) +#define DT_N_S_clocks_S_clk_hsi_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_clk_hsi, status, 0) +#define DT_N_S_clocks_S_clk_hsi_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_clk_hsi, status, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_hsi_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_clk_hsi, status, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_hsi_P_status_LEN 1 +#define DT_N_S_clocks_S_clk_hsi_P_status_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi_P_compatible {"st,stm32h7-hsi-clock"} +#define DT_N_S_clocks_S_clk_hsi_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi_P_compatible_IDX_0 "st,stm32h7-hsi-clock" +#define DT_N_S_clocks_S_clk_hsi_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-hsi-clock +#define DT_N_S_clocks_S_clk_hsi_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_hsi_clock +#define DT_N_S_clocks_S_clk_hsi_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_HSI_CLOCK +#define DT_N_S_clocks_S_clk_hsi_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_clk_hsi, compatible, 0) +#define DT_N_S_clocks_S_clk_hsi_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_clk_hsi, compatible, 0) +#define DT_N_S_clocks_S_clk_hsi_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_clk_hsi, compatible, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_hsi_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_clk_hsi, compatible, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_hsi_P_compatible_LEN 1 +#define DT_N_S_clocks_S_clk_hsi_P_compatible_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi_P_zephyr_deferred_init 0 +#define DT_N_S_clocks_S_clk_hsi_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi_P_wakeup_source 0 +#define DT_N_S_clocks_S_clk_hsi_P_wakeup_source_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_clocks_S_clk_hsi_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /clocks/clk-hsi48 @@ -14291,6 +14568,9 @@ /* Node's name with unit-address: */ #define DT_N_S_clocks_S_clk_hsi48_FULL_NAME "clk-hsi48" +#define DT_N_S_clocks_S_clk_hsi48_FULL_NAME_UNQUOTED clk-hsi48 +#define DT_N_S_clocks_S_clk_hsi48_FULL_NAME_TOKEN clk_hsi48 +#define DT_N_S_clocks_S_clk_hsi48_FULL_NAME_UPPER_TOKEN CLK_HSI48 /* Node parent (/clocks) identifier: */ #define DT_N_S_clocks_S_clk_hsi48_PARENT DT_N_S_clocks @@ -14321,7 +14601,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_clocks_S_clk_hsi48_REQUIRES_ORDS \ - 6, /* /clocks */ + 6, /* Ordinals for what depends directly on this node: */ #define DT_N_S_clocks_S_clk_hsi48_SUPPORTS_ORDS /* nothing */ @@ -14346,6 +14626,38 @@ /* Generic property macros: */ #define DT_N_S_clocks_S_clk_hsi48_P_clock_frequency 48000000 #define DT_N_S_clocks_S_clk_hsi48_P_clock_frequency_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi48_P_status "okay" +#define DT_N_S_clocks_S_clk_hsi48_P_status_STRING_UNQUOTED okay +#define DT_N_S_clocks_S_clk_hsi48_P_status_STRING_TOKEN okay +#define DT_N_S_clocks_S_clk_hsi48_P_status_STRING_UPPER_TOKEN OKAY +#define DT_N_S_clocks_S_clk_hsi48_P_status_IDX_0 "okay" +#define DT_N_S_clocks_S_clk_hsi48_P_status_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi48_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_clocks_S_clk_hsi48_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi48_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_clk_hsi48, status, 0) +#define DT_N_S_clocks_S_clk_hsi48_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_clk_hsi48, status, 0) +#define DT_N_S_clocks_S_clk_hsi48_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_clk_hsi48, status, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_hsi48_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_clk_hsi48, status, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_hsi48_P_status_LEN 1 +#define DT_N_S_clocks_S_clk_hsi48_P_status_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi48_P_compatible {"fixed-clock"} +#define DT_N_S_clocks_S_clk_hsi48_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi48_P_compatible_IDX_0 "fixed-clock" +#define DT_N_S_clocks_S_clk_hsi48_P_compatible_IDX_0_STRING_UNQUOTED fixed-clock +#define DT_N_S_clocks_S_clk_hsi48_P_compatible_IDX_0_STRING_TOKEN fixed_clock +#define DT_N_S_clocks_S_clk_hsi48_P_compatible_IDX_0_STRING_UPPER_TOKEN FIXED_CLOCK +#define DT_N_S_clocks_S_clk_hsi48_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_clk_hsi48, compatible, 0) +#define DT_N_S_clocks_S_clk_hsi48_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_clk_hsi48, compatible, 0) +#define DT_N_S_clocks_S_clk_hsi48_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_clk_hsi48, compatible, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_hsi48_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_clk_hsi48, compatible, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_hsi48_P_compatible_LEN 1 +#define DT_N_S_clocks_S_clk_hsi48_P_compatible_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi48_P_zephyr_deferred_init 0 +#define DT_N_S_clocks_S_clk_hsi48_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi48_P_wakeup_source 0 +#define DT_N_S_clocks_S_clk_hsi48_P_wakeup_source_EXISTS 1 +#define DT_N_S_clocks_S_clk_hsi48_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_clocks_S_clk_hsi48_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /clocks/clk-lse @@ -14364,6 +14676,9 @@ /* Node's name with unit-address: */ #define DT_N_S_clocks_S_clk_lse_FULL_NAME "clk-lse" +#define DT_N_S_clocks_S_clk_lse_FULL_NAME_UNQUOTED clk-lse +#define DT_N_S_clocks_S_clk_lse_FULL_NAME_TOKEN clk_lse +#define DT_N_S_clocks_S_clk_lse_FULL_NAME_UPPER_TOKEN CLK_LSE /* Node parent (/clocks) identifier: */ #define DT_N_S_clocks_S_clk_lse_PARENT DT_N_S_clocks @@ -14394,7 +14709,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_clocks_S_clk_lse_REQUIRES_ORDS \ - 6, /* /clocks */ + 6, /* Ordinals for what depends directly on this node: */ #define DT_N_S_clocks_S_clk_lse_SUPPORTS_ORDS /* nothing */ @@ -14421,14 +14736,47 @@ #define DT_N_S_clocks_S_clk_lse_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_clocks_S_clk_lse_P_clock_frequency 32768 -#define DT_N_S_clocks_S_clk_lse_P_clock_frequency_EXISTS 1 #define DT_N_S_clocks_S_clk_lse_P_driving_capability 0 -#define DT_N_S_clocks_S_clk_lse_P_driving_capability_ENUM_IDX 0 -#define DT_N_S_clocks_S_clk_lse_P_driving_capability_ENUM_VAL_0_EXISTS 1 +#define DT_N_S_clocks_S_clk_lse_P_driving_capability_IDX_0_ENUM_IDX 0 +#define DT_N_S_clocks_S_clk_lse_P_driving_capability_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_clk_lse_P_driving_capability_IDX_0_ENUM_VAL_0_EXISTS 1 #define DT_N_S_clocks_S_clk_lse_P_driving_capability_EXISTS 1 #define DT_N_S_clocks_S_clk_lse_P_lse_bypass 0 #define DT_N_S_clocks_S_clk_lse_P_lse_bypass_EXISTS 1 +#define DT_N_S_clocks_S_clk_lse_P_clock_frequency 32768 +#define DT_N_S_clocks_S_clk_lse_P_clock_frequency_EXISTS 1 +#define DT_N_S_clocks_S_clk_lse_P_status "okay" +#define DT_N_S_clocks_S_clk_lse_P_status_STRING_UNQUOTED okay +#define DT_N_S_clocks_S_clk_lse_P_status_STRING_TOKEN okay +#define DT_N_S_clocks_S_clk_lse_P_status_STRING_UPPER_TOKEN OKAY +#define DT_N_S_clocks_S_clk_lse_P_status_IDX_0 "okay" +#define DT_N_S_clocks_S_clk_lse_P_status_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_clk_lse_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_clocks_S_clk_lse_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 +#define DT_N_S_clocks_S_clk_lse_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_clk_lse, status, 0) +#define DT_N_S_clocks_S_clk_lse_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_clk_lse, status, 0) +#define DT_N_S_clocks_S_clk_lse_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_clk_lse, status, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_lse_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_clk_lse, status, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_lse_P_status_LEN 1 +#define DT_N_S_clocks_S_clk_lse_P_status_EXISTS 1 +#define DT_N_S_clocks_S_clk_lse_P_compatible {"st,stm32-lse-clock"} +#define DT_N_S_clocks_S_clk_lse_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_clk_lse_P_compatible_IDX_0 "st,stm32-lse-clock" +#define DT_N_S_clocks_S_clk_lse_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-lse-clock +#define DT_N_S_clocks_S_clk_lse_P_compatible_IDX_0_STRING_TOKEN st_stm32_lse_clock +#define DT_N_S_clocks_S_clk_lse_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_LSE_CLOCK +#define DT_N_S_clocks_S_clk_lse_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_clk_lse, compatible, 0) +#define DT_N_S_clocks_S_clk_lse_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_clk_lse, compatible, 0) +#define DT_N_S_clocks_S_clk_lse_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_clk_lse, compatible, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_lse_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_clk_lse, compatible, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_lse_P_compatible_LEN 1 +#define DT_N_S_clocks_S_clk_lse_P_compatible_EXISTS 1 +#define DT_N_S_clocks_S_clk_lse_P_zephyr_deferred_init 0 +#define DT_N_S_clocks_S_clk_lse_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_clocks_S_clk_lse_P_wakeup_source 0 +#define DT_N_S_clocks_S_clk_lse_P_wakeup_source_EXISTS 1 +#define DT_N_S_clocks_S_clk_lse_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_clocks_S_clk_lse_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /clocks/clk-lsi @@ -14447,6 +14795,9 @@ /* Node's name with unit-address: */ #define DT_N_S_clocks_S_clk_lsi_FULL_NAME "clk-lsi" +#define DT_N_S_clocks_S_clk_lsi_FULL_NAME_UNQUOTED clk-lsi +#define DT_N_S_clocks_S_clk_lsi_FULL_NAME_TOKEN clk_lsi +#define DT_N_S_clocks_S_clk_lsi_FULL_NAME_UPPER_TOKEN CLK_LSI /* Node parent (/clocks) identifier: */ #define DT_N_S_clocks_S_clk_lsi_PARENT DT_N_S_clocks @@ -14477,7 +14828,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_clocks_S_clk_lsi_REQUIRES_ORDS \ - 6, /* /clocks */ + 6, /* Ordinals for what depends directly on this node: */ #define DT_N_S_clocks_S_clk_lsi_SUPPORTS_ORDS /* nothing */ @@ -14502,6 +14853,38 @@ /* Generic property macros: */ #define DT_N_S_clocks_S_clk_lsi_P_clock_frequency 32000 #define DT_N_S_clocks_S_clk_lsi_P_clock_frequency_EXISTS 1 +#define DT_N_S_clocks_S_clk_lsi_P_status "disabled" +#define DT_N_S_clocks_S_clk_lsi_P_status_STRING_UNQUOTED disabled +#define DT_N_S_clocks_S_clk_lsi_P_status_STRING_TOKEN disabled +#define DT_N_S_clocks_S_clk_lsi_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_clocks_S_clk_lsi_P_status_IDX_0 "disabled" +#define DT_N_S_clocks_S_clk_lsi_P_status_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_clk_lsi_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_clocks_S_clk_lsi_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_clocks_S_clk_lsi_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_clk_lsi, status, 0) +#define DT_N_S_clocks_S_clk_lsi_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_clk_lsi, status, 0) +#define DT_N_S_clocks_S_clk_lsi_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_clk_lsi, status, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_lsi_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_clk_lsi, status, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_lsi_P_status_LEN 1 +#define DT_N_S_clocks_S_clk_lsi_P_status_EXISTS 1 +#define DT_N_S_clocks_S_clk_lsi_P_compatible {"fixed-clock"} +#define DT_N_S_clocks_S_clk_lsi_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_clk_lsi_P_compatible_IDX_0 "fixed-clock" +#define DT_N_S_clocks_S_clk_lsi_P_compatible_IDX_0_STRING_UNQUOTED fixed-clock +#define DT_N_S_clocks_S_clk_lsi_P_compatible_IDX_0_STRING_TOKEN fixed_clock +#define DT_N_S_clocks_S_clk_lsi_P_compatible_IDX_0_STRING_UPPER_TOKEN FIXED_CLOCK +#define DT_N_S_clocks_S_clk_lsi_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_clk_lsi, compatible, 0) +#define DT_N_S_clocks_S_clk_lsi_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_clk_lsi, compatible, 0) +#define DT_N_S_clocks_S_clk_lsi_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_clk_lsi, compatible, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_lsi_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_clk_lsi, compatible, 0, __VA_ARGS__) +#define DT_N_S_clocks_S_clk_lsi_P_compatible_LEN 1 +#define DT_N_S_clocks_S_clk_lsi_P_compatible_EXISTS 1 +#define DT_N_S_clocks_S_clk_lsi_P_zephyr_deferred_init 0 +#define DT_N_S_clocks_S_clk_lsi_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_clocks_S_clk_lsi_P_wakeup_source 0 +#define DT_N_S_clocks_S_clk_lsi_P_wakeup_source_EXISTS 1 +#define DT_N_S_clocks_S_clk_lsi_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_clocks_S_clk_lsi_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /clocks/perck @@ -14520,6 +14903,9 @@ /* Node's name with unit-address: */ #define DT_N_S_clocks_S_perck_FULL_NAME "perck" +#define DT_N_S_clocks_S_perck_FULL_NAME_UNQUOTED perck +#define DT_N_S_clocks_S_perck_FULL_NAME_TOKEN perck +#define DT_N_S_clocks_S_perck_FULL_NAME_UPPER_TOKEN PERCK /* Node parent (/clocks) identifier: */ #define DT_N_S_clocks_S_perck_PARENT DT_N_S_clocks @@ -14550,7 +14936,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_clocks_S_perck_REQUIRES_ORDS \ - 6, /* /clocks */ + 6, /* Ordinals for what depends directly on this node: */ #define DT_N_S_clocks_S_perck_SUPPORTS_ORDS /* nothing */ @@ -14583,10 +14969,8 @@ #define DT_N_S_clocks_S_perck_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_clocks_S_perck_P_status_IDX_0 "disabled" #define DT_N_S_clocks_S_perck_P_status_IDX_0_EXISTS 1 -#define DT_N_S_clocks_S_perck_P_status_ENUM_IDX 2 -#define DT_N_S_clocks_S_perck_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_clocks_S_perck_P_status_ENUM_TOKEN disabled -#define DT_N_S_clocks_S_perck_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_clocks_S_perck_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_clocks_S_perck_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_clocks_S_perck_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_perck, status, 0) #define DT_N_S_clocks_S_perck_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_perck, status, 0) #define DT_N_S_clocks_S_perck_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_perck, status, 0, __VA_ARGS__) @@ -14594,11 +14978,11 @@ #define DT_N_S_clocks_S_perck_P_status_LEN 1 #define DT_N_S_clocks_S_perck_P_status_EXISTS 1 #define DT_N_S_clocks_S_perck_P_compatible {"st,stm32-clock-mux"} +#define DT_N_S_clocks_S_perck_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_clocks_S_perck_P_compatible_IDX_0 "st,stm32-clock-mux" #define DT_N_S_clocks_S_perck_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-clock-mux #define DT_N_S_clocks_S_perck_P_compatible_IDX_0_STRING_TOKEN st_stm32_clock_mux #define DT_N_S_clocks_S_perck_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_CLOCK_MUX -#define DT_N_S_clocks_S_perck_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_clocks_S_perck_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_perck, compatible, 0) #define DT_N_S_clocks_S_perck_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_perck, compatible, 0) #define DT_N_S_clocks_S_perck_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_perck, compatible, 0, __VA_ARGS__) @@ -14623,6 +15007,9 @@ /* Node's name with unit-address: */ #define DT_N_S_clocks_S_pll_1_FULL_NAME "pll@1" +#define DT_N_S_clocks_S_pll_1_FULL_NAME_UNQUOTED pll@1 +#define DT_N_S_clocks_S_pll_1_FULL_NAME_TOKEN pll_1 +#define DT_N_S_clocks_S_pll_1_FULL_NAME_UPPER_TOKEN PLL_1 /* Node parent (/clocks) identifier: */ #define DT_N_S_clocks_S_pll_1_PARENT DT_N_S_clocks @@ -14653,7 +15040,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_clocks_S_pll_1_REQUIRES_ORDS \ - 6, /* /clocks */ + 6, /* Ordinals for what depends directly on this node: */ #define DT_N_S_clocks_S_pll_1_SUPPORTS_ORDS /* nothing */ @@ -14666,7 +15053,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_clocks_S_pll_1_REG_NUM 1 #define DT_N_S_clocks_S_pll_1_REG_IDX_0_EXISTS 1 -#define DT_N_S_clocks_S_pll_1_REG_IDX_0_VAL_ADDRESS 1 /* 0x1 */ +#define DT_N_S_clocks_S_pll_1_REG_IDX_0_VAL_ADDRESS 1 #define DT_N_S_clocks_S_pll_1_RANGES_NUM 0 #define DT_N_S_clocks_S_pll_1_FOREACH_RANGE(fn) #define DT_N_S_clocks_S_pll_1_IRQ_NUM 0 @@ -14682,20 +15069,14 @@ #define DT_N_S_clocks_S_pll_1_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_clocks_S_pll_1_P_wakeup_source 0 -#define DT_N_S_clocks_S_pll_1_P_wakeup_source_EXISTS 1 -#define DT_N_S_clocks_S_pll_1_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_clocks_S_pll_1_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_clocks_S_pll_1_P_status "disabled" #define DT_N_S_clocks_S_pll_1_P_status_STRING_UNQUOTED disabled #define DT_N_S_clocks_S_pll_1_P_status_STRING_TOKEN disabled #define DT_N_S_clocks_S_pll_1_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_clocks_S_pll_1_P_status_IDX_0 "disabled" #define DT_N_S_clocks_S_pll_1_P_status_IDX_0_EXISTS 1 -#define DT_N_S_clocks_S_pll_1_P_status_ENUM_IDX 2 -#define DT_N_S_clocks_S_pll_1_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_clocks_S_pll_1_P_status_ENUM_TOKEN disabled -#define DT_N_S_clocks_S_pll_1_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_clocks_S_pll_1_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_clocks_S_pll_1_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_clocks_S_pll_1_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_pll_1, status, 0) #define DT_N_S_clocks_S_pll_1_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_pll_1, status, 0) #define DT_N_S_clocks_S_pll_1_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_pll_1, status, 0, __VA_ARGS__) @@ -14703,23 +15084,27 @@ #define DT_N_S_clocks_S_pll_1_P_status_LEN 1 #define DT_N_S_clocks_S_pll_1_P_status_EXISTS 1 #define DT_N_S_clocks_S_pll_1_P_compatible {"st,stm32h7-pll-clock"} +#define DT_N_S_clocks_S_pll_1_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_clocks_S_pll_1_P_compatible_IDX_0 "st,stm32h7-pll-clock" #define DT_N_S_clocks_S_pll_1_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-pll-clock #define DT_N_S_clocks_S_pll_1_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_pll_clock #define DT_N_S_clocks_S_pll_1_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_PLL_CLOCK -#define DT_N_S_clocks_S_pll_1_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_clocks_S_pll_1_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_pll_1, compatible, 0) #define DT_N_S_clocks_S_pll_1_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_pll_1, compatible, 0) #define DT_N_S_clocks_S_pll_1_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_pll_1, compatible, 0, __VA_ARGS__) #define DT_N_S_clocks_S_pll_1_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_pll_1, compatible, 0, __VA_ARGS__) #define DT_N_S_clocks_S_pll_1_P_compatible_LEN 1 #define DT_N_S_clocks_S_pll_1_P_compatible_EXISTS 1 -#define DT_N_S_clocks_S_pll_1_P_reg {1 /* 0x1 */} -#define DT_N_S_clocks_S_pll_1_P_reg_IDX_0 1 +#define DT_N_S_clocks_S_pll_1_P_reg {1} #define DT_N_S_clocks_S_pll_1_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_pll_1_P_reg_IDX_0 1 #define DT_N_S_clocks_S_pll_1_P_reg_EXISTS 1 #define DT_N_S_clocks_S_pll_1_P_zephyr_deferred_init 0 #define DT_N_S_clocks_S_pll_1_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_clocks_S_pll_1_P_wakeup_source 0 +#define DT_N_S_clocks_S_pll_1_P_wakeup_source_EXISTS 1 +#define DT_N_S_clocks_S_pll_1_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_clocks_S_pll_1_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /clocks/pll@2 @@ -14738,6 +15123,9 @@ /* Node's name with unit-address: */ #define DT_N_S_clocks_S_pll_2_FULL_NAME "pll@2" +#define DT_N_S_clocks_S_pll_2_FULL_NAME_UNQUOTED pll@2 +#define DT_N_S_clocks_S_pll_2_FULL_NAME_TOKEN pll_2 +#define DT_N_S_clocks_S_pll_2_FULL_NAME_UPPER_TOKEN PLL_2 /* Node parent (/clocks) identifier: */ #define DT_N_S_clocks_S_pll_2_PARENT DT_N_S_clocks @@ -14768,7 +15156,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_clocks_S_pll_2_REQUIRES_ORDS \ - 6, /* /clocks */ + 6, /* Ordinals for what depends directly on this node: */ #define DT_N_S_clocks_S_pll_2_SUPPORTS_ORDS /* nothing */ @@ -14781,7 +15169,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_clocks_S_pll_2_REG_NUM 1 #define DT_N_S_clocks_S_pll_2_REG_IDX_0_EXISTS 1 -#define DT_N_S_clocks_S_pll_2_REG_IDX_0_VAL_ADDRESS 2 /* 0x2 */ +#define DT_N_S_clocks_S_pll_2_REG_IDX_0_VAL_ADDRESS 2 #define DT_N_S_clocks_S_pll_2_RANGES_NUM 0 #define DT_N_S_clocks_S_pll_2_FOREACH_RANGE(fn) #define DT_N_S_clocks_S_pll_2_IRQ_NUM 0 @@ -14797,20 +15185,14 @@ #define DT_N_S_clocks_S_pll_2_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_clocks_S_pll_2_P_wakeup_source 0 -#define DT_N_S_clocks_S_pll_2_P_wakeup_source_EXISTS 1 -#define DT_N_S_clocks_S_pll_2_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_clocks_S_pll_2_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_clocks_S_pll_2_P_status "disabled" #define DT_N_S_clocks_S_pll_2_P_status_STRING_UNQUOTED disabled #define DT_N_S_clocks_S_pll_2_P_status_STRING_TOKEN disabled #define DT_N_S_clocks_S_pll_2_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_clocks_S_pll_2_P_status_IDX_0 "disabled" #define DT_N_S_clocks_S_pll_2_P_status_IDX_0_EXISTS 1 -#define DT_N_S_clocks_S_pll_2_P_status_ENUM_IDX 2 -#define DT_N_S_clocks_S_pll_2_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_clocks_S_pll_2_P_status_ENUM_TOKEN disabled -#define DT_N_S_clocks_S_pll_2_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_clocks_S_pll_2_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_clocks_S_pll_2_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_clocks_S_pll_2_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_pll_2, status, 0) #define DT_N_S_clocks_S_pll_2_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_pll_2, status, 0) #define DT_N_S_clocks_S_pll_2_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_pll_2, status, 0, __VA_ARGS__) @@ -14818,23 +15200,27 @@ #define DT_N_S_clocks_S_pll_2_P_status_LEN 1 #define DT_N_S_clocks_S_pll_2_P_status_EXISTS 1 #define DT_N_S_clocks_S_pll_2_P_compatible {"st,stm32h7-pll-clock"} +#define DT_N_S_clocks_S_pll_2_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_clocks_S_pll_2_P_compatible_IDX_0 "st,stm32h7-pll-clock" #define DT_N_S_clocks_S_pll_2_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-pll-clock #define DT_N_S_clocks_S_pll_2_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_pll_clock #define DT_N_S_clocks_S_pll_2_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_PLL_CLOCK -#define DT_N_S_clocks_S_pll_2_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_clocks_S_pll_2_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_clocks_S_pll_2, compatible, 0) #define DT_N_S_clocks_S_pll_2_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_clocks_S_pll_2, compatible, 0) #define DT_N_S_clocks_S_pll_2_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_clocks_S_pll_2, compatible, 0, __VA_ARGS__) #define DT_N_S_clocks_S_pll_2_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_clocks_S_pll_2, compatible, 0, __VA_ARGS__) #define DT_N_S_clocks_S_pll_2_P_compatible_LEN 1 #define DT_N_S_clocks_S_pll_2_P_compatible_EXISTS 1 -#define DT_N_S_clocks_S_pll_2_P_reg {2 /* 0x2 */} -#define DT_N_S_clocks_S_pll_2_P_reg_IDX_0 2 +#define DT_N_S_clocks_S_pll_2_P_reg {2} #define DT_N_S_clocks_S_pll_2_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_clocks_S_pll_2_P_reg_IDX_0 2 #define DT_N_S_clocks_S_pll_2_P_reg_EXISTS 1 #define DT_N_S_clocks_S_pll_2_P_zephyr_deferred_init 0 #define DT_N_S_clocks_S_pll_2_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_clocks_S_pll_2_P_wakeup_source 0 +#define DT_N_S_clocks_S_pll_2_P_wakeup_source_EXISTS 1 +#define DT_N_S_clocks_S_pll_2_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_clocks_S_pll_2_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /cpus @@ -14847,6 +15233,9 @@ /* Node's name with unit-address: */ #define DT_N_S_cpus_FULL_NAME "cpus" +#define DT_N_S_cpus_FULL_NAME_UNQUOTED cpus +#define DT_N_S_cpus_FULL_NAME_TOKEN cpus +#define DT_N_S_cpus_FULL_NAME_UPPER_TOKEN CPUS /* Node parent (/) identifier: */ #define DT_N_S_cpus_PARENT DT_N @@ -14877,11 +15266,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_cpus_REQUIRES_ORDS \ - 0, /* / */ + 0, /* Ordinals for what depends directly on this node: */ #define DT_N_S_cpus_SUPPORTS_ORDS \ - 103, /* /cpus/cpu@0 */ + 103, /* Existence and alternate IDs: */ #define DT_N_S_cpus_EXISTS 1 @@ -14916,6 +15305,9 @@ /* Node's name with unit-address: */ #define DT_N_S_cpus_S_cpu_0_FULL_NAME "cpu@0" +#define DT_N_S_cpus_S_cpu_0_FULL_NAME_UNQUOTED cpu@0 +#define DT_N_S_cpus_S_cpu_0_FULL_NAME_TOKEN cpu_0 +#define DT_N_S_cpus_S_cpu_0_FULL_NAME_UPPER_TOKEN CPU_0 /* Node parent (/cpus) identifier: */ #define DT_N_S_cpus_S_cpu_0_PARENT DT_N_S_cpus @@ -14946,11 +15338,11 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_cpus_S_cpu_0_REQUIRES_ORDS \ - 102, /* /cpus */ + 102, /* Ordinals for what depends directly on this node: */ #define DT_N_S_cpus_S_cpu_0_SUPPORTS_ORDS \ - 104, /* /cpus/cpu@0/mpu@e000ed90 */ + 104, /* Existence and alternate IDs: */ #define DT_N_S_cpus_S_cpu_0_EXISTS 1 @@ -14960,7 +15352,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_cpus_S_cpu_0_REG_NUM 1 #define DT_N_S_cpus_S_cpu_0_REG_IDX_0_EXISTS 1 -#define DT_N_S_cpus_S_cpu_0_REG_IDX_0_VAL_ADDRESS 0 /* 0x0 */ +#define DT_N_S_cpus_S_cpu_0_REG_IDX_0_VAL_ADDRESS 0 #define DT_N_S_cpus_S_cpu_0_RANGES_NUM 0 #define DT_N_S_cpus_S_cpu_0_FOREACH_RANGE(fn) #define DT_N_S_cpus_S_cpu_0_IRQ_NUM 0 @@ -14976,28 +15368,28 @@ #define DT_N_S_cpus_S_cpu_0_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_cpus_S_cpu_0_P_wakeup_source 0 -#define DT_N_S_cpus_S_cpu_0_P_wakeup_source_EXISTS 1 -#define DT_N_S_cpus_S_cpu_0_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_cpus_S_cpu_0_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_cpus_S_cpu_0_P_compatible {"arm,cortex-m7"} +#define DT_N_S_cpus_S_cpu_0_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_cpus_S_cpu_0_P_compatible_IDX_0 "arm,cortex-m7" #define DT_N_S_cpus_S_cpu_0_P_compatible_IDX_0_STRING_UNQUOTED arm,cortex-m7 #define DT_N_S_cpus_S_cpu_0_P_compatible_IDX_0_STRING_TOKEN arm_cortex_m7 #define DT_N_S_cpus_S_cpu_0_P_compatible_IDX_0_STRING_UPPER_TOKEN ARM_CORTEX_M7 -#define DT_N_S_cpus_S_cpu_0_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_cpus_S_cpu_0_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_cpus_S_cpu_0, compatible, 0) #define DT_N_S_cpus_S_cpu_0_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_cpus_S_cpu_0, compatible, 0) #define DT_N_S_cpus_S_cpu_0_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_cpus_S_cpu_0, compatible, 0, __VA_ARGS__) #define DT_N_S_cpus_S_cpu_0_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_cpus_S_cpu_0, compatible, 0, __VA_ARGS__) #define DT_N_S_cpus_S_cpu_0_P_compatible_LEN 1 #define DT_N_S_cpus_S_cpu_0_P_compatible_EXISTS 1 -#define DT_N_S_cpus_S_cpu_0_P_reg {0 /* 0x0 */} -#define DT_N_S_cpus_S_cpu_0_P_reg_IDX_0 0 +#define DT_N_S_cpus_S_cpu_0_P_reg {0} #define DT_N_S_cpus_S_cpu_0_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_cpus_S_cpu_0_P_reg_IDX_0 0 #define DT_N_S_cpus_S_cpu_0_P_reg_EXISTS 1 #define DT_N_S_cpus_S_cpu_0_P_zephyr_deferred_init 0 #define DT_N_S_cpus_S_cpu_0_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_cpus_S_cpu_0_P_wakeup_source 0 +#define DT_N_S_cpus_S_cpu_0_P_wakeup_source_EXISTS 1 +#define DT_N_S_cpus_S_cpu_0_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_cpus_S_cpu_0_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /cpus/cpu@0/mpu@e000ed90 @@ -15016,6 +15408,9 @@ /* Node's name with unit-address: */ #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_FULL_NAME "mpu@e000ed90" +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_FULL_NAME_UNQUOTED mpu@e000ed90 +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_FULL_NAME_TOKEN mpu_e000ed90 +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_FULL_NAME_UPPER_TOKEN MPU_E000ED90 /* Node parent (/cpus/cpu@0) identifier: */ #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_PARENT DT_N_S_cpus_S_cpu_0 @@ -15046,7 +15441,7 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_REQUIRES_ORDS \ - 103, /* /cpus/cpu@0 */ + 103, /* Ordinals for what depends directly on this node: */ #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_SUPPORTS_ORDS /* nothing */ @@ -15059,8 +15454,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_REG_NUM 1 #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_REG_IDX_0_EXISTS 1 -#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_REG_IDX_0_VAL_ADDRESS 3758157200 /* 0xe000ed90 */ -#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_REG_IDX_0_VAL_SIZE 64 /* 0x40 */ +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_REG_IDX_0_VAL_ADDRESS 3758157200 +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_REG_IDX_0_VAL_SIZE 64 #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_RANGES_NUM 0 #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_FOREACH_RANGE(fn) #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_IRQ_NUM 0 @@ -15076,30 +15471,30 @@ #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_wakeup_source 0 -#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_wakeup_source_EXISTS 1 -#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_reg {3758157200, 64} +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_reg_IDX_0 3758157200 +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_reg_IDX_1 64 +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_reg_EXISTS 1 #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_compatible {"arm,armv7m-mpu"} +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_compatible_IDX_0 "arm,armv7m-mpu" #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_compatible_IDX_0_STRING_UNQUOTED arm,armv7m-mpu #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_compatible_IDX_0_STRING_TOKEN arm_armv7m_mpu #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_compatible_IDX_0_STRING_UPPER_TOKEN ARM_ARMV7M_MPU -#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90, compatible, 0) #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90, compatible, 0) #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90, compatible, 0, __VA_ARGS__) #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90, compatible, 0, __VA_ARGS__) #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_compatible_LEN 1 #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_compatible_EXISTS 1 -#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_reg {3758157200 /* 0xe000ed90 */, 64 /* 0x40 */} -#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_reg_IDX_0 3758157200 -#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_reg_IDX_1 64 -#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_reg_EXISTS 1 #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_zephyr_deferred_init 0 #define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_wakeup_source 0 +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_wakeup_source_EXISTS 1 +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /gpio_keys @@ -15118,12 +15513,15 @@ /* Node's name with unit-address: */ #define DT_N_S_gpio_keys_FULL_NAME "gpio_keys" +#define DT_N_S_gpio_keys_FULL_NAME_UNQUOTED gpio_keys +#define DT_N_S_gpio_keys_FULL_NAME_TOKEN gpio_keys +#define DT_N_S_gpio_keys_FULL_NAME_UPPER_TOKEN GPIO_KEYS /* Node parent (/) identifier: */ #define DT_N_S_gpio_keys_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_gpio_keys_CHILD_IDX 21 +#define DT_N_S_gpio_keys_CHILD_IDX 22 /* Helpers for dealing with node labels: */ #define DT_N_S_gpio_keys_NODELABEL_NUM 0 @@ -15148,12 +15546,12 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_gpio_keys_REQUIRES_ORDS \ - 0, /* / */ \ - 77, /* /soc/pin-controller@58020000/gpio@58020800 */ + 0, \ + 77, /* Ordinals for what depends directly on this node: */ #define DT_N_S_gpio_keys_SUPPORTS_ORDS \ - 106, /* /gpio_keys/button_0 */ + 106, /* Existence and alternate IDs: */ #define DT_N_S_gpio_keys_EXISTS 1 @@ -15172,16 +15570,18 @@ #define DT_N_S_gpio_keys_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_gpio_keys_P_wakeup_source 0 -#define DT_N_S_gpio_keys_P_wakeup_source_EXISTS 1 -#define DT_N_S_gpio_keys_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_gpio_keys_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_gpio_keys_P_debounce_interval_ms 30 +#define DT_N_S_gpio_keys_P_debounce_interval_ms_EXISTS 1 +#define DT_N_S_gpio_keys_P_polling_mode 0 +#define DT_N_S_gpio_keys_P_polling_mode_EXISTS 1 +#define DT_N_S_gpio_keys_P_no_disconnect 0 +#define DT_N_S_gpio_keys_P_no_disconnect_EXISTS 1 #define DT_N_S_gpio_keys_P_compatible {"gpio-keys"} +#define DT_N_S_gpio_keys_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_gpio_keys_P_compatible_IDX_0 "gpio-keys" #define DT_N_S_gpio_keys_P_compatible_IDX_0_STRING_UNQUOTED gpio-keys #define DT_N_S_gpio_keys_P_compatible_IDX_0_STRING_TOKEN gpio_keys #define DT_N_S_gpio_keys_P_compatible_IDX_0_STRING_UPPER_TOKEN GPIO_KEYS -#define DT_N_S_gpio_keys_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_gpio_keys_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_gpio_keys, compatible, 0) #define DT_N_S_gpio_keys_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_gpio_keys, compatible, 0) #define DT_N_S_gpio_keys_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_gpio_keys, compatible, 0, __VA_ARGS__) @@ -15190,10 +15590,10 @@ #define DT_N_S_gpio_keys_P_compatible_EXISTS 1 #define DT_N_S_gpio_keys_P_zephyr_deferred_init 0 #define DT_N_S_gpio_keys_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_gpio_keys_P_debounce_interval_ms 30 -#define DT_N_S_gpio_keys_P_debounce_interval_ms_EXISTS 1 -#define DT_N_S_gpio_keys_P_polling_mode 0 -#define DT_N_S_gpio_keys_P_polling_mode_EXISTS 1 +#define DT_N_S_gpio_keys_P_wakeup_source 0 +#define DT_N_S_gpio_keys_P_wakeup_source_EXISTS 1 +#define DT_N_S_gpio_keys_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_gpio_keys_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /gpio_keys/button_0 @@ -15209,6 +15609,9 @@ /* Node's name with unit-address: */ #define DT_N_S_gpio_keys_S_button_0_FULL_NAME "button_0" +#define DT_N_S_gpio_keys_S_button_0_FULL_NAME_UNQUOTED button_0 +#define DT_N_S_gpio_keys_S_button_0_FULL_NAME_TOKEN button_0 +#define DT_N_S_gpio_keys_S_button_0_FULL_NAME_UPPER_TOKEN BUTTON_0 /* Node parent (/gpio_keys) identifier: */ #define DT_N_S_gpio_keys_S_button_0_PARENT DT_N_S_gpio_keys @@ -15239,8 +15642,8 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_gpio_keys_S_button_0_REQUIRES_ORDS \ - 77, /* /soc/pin-controller@58020000/gpio@58020800 */ \ - 105, /* /gpio_keys */ + 77, \ + 105, /* Ordinals for what depends directly on this node: */ #define DT_N_S_gpio_keys_S_button_0_SUPPORTS_ORDS /* nothing */ @@ -15294,12 +15697,15 @@ /* Node's name with unit-address: */ #define DT_N_S_leds_FULL_NAME "leds" +#define DT_N_S_leds_FULL_NAME_UNQUOTED leds +#define DT_N_S_leds_FULL_NAME_TOKEN leds +#define DT_N_S_leds_FULL_NAME_UPPER_TOKEN LEDS /* Node parent (/) identifier: */ #define DT_N_S_leds_PARENT DT_N /* Node's index in its parent's list of children: */ -#define DT_N_S_leds_CHILD_IDX 20 +#define DT_N_S_leds_CHILD_IDX 21 /* Helpers for dealing with node labels: */ #define DT_N_S_leds_NODELABEL_NUM 0 @@ -15324,16 +15730,16 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_leds_REQUIRES_ORDS \ - 0, /* / */ \ - 79, /* /soc/pin-controller@58020000/gpio@58021000 */ \ - 82, /* /soc/pin-controller@58020000/gpio@58022000 */ \ - 83, /* /soc/pin-controller@58020000/gpio@58022400 */ + 0, \ + 79, \ + 82, \ + 83, /* Ordinals for what depends directly on this node: */ #define DT_N_S_leds_SUPPORTS_ORDS \ - 108, /* /leds/led_0 */ \ - 109, /* /leds/led_1 */ \ - 110, /* /leds/led_2 */ + 108, \ + 109, \ + 110, /* Existence and alternate IDs: */ #define DT_N_S_leds_EXISTS 1 @@ -15353,11 +15759,11 @@ /* Generic property macros: */ #define DT_N_S_leds_P_compatible {"gpio-leds"} +#define DT_N_S_leds_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_leds_P_compatible_IDX_0 "gpio-leds" #define DT_N_S_leds_P_compatible_IDX_0_STRING_UNQUOTED gpio-leds #define DT_N_S_leds_P_compatible_IDX_0_STRING_TOKEN gpio_leds #define DT_N_S_leds_P_compatible_IDX_0_STRING_UPPER_TOKEN GPIO_LEDS -#define DT_N_S_leds_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_leds_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_leds, compatible, 0) #define DT_N_S_leds_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_leds, compatible, 0) #define DT_N_S_leds_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_leds, compatible, 0, __VA_ARGS__) @@ -15379,6 +15785,9 @@ /* Node's name with unit-address: */ #define DT_N_S_leds_S_led_0_FULL_NAME "led_0" +#define DT_N_S_leds_S_led_0_FULL_NAME_UNQUOTED led_0 +#define DT_N_S_leds_S_led_0_FULL_NAME_TOKEN led_0 +#define DT_N_S_leds_S_led_0_FULL_NAME_UPPER_TOKEN LED_0 /* Node parent (/leds) identifier: */ #define DT_N_S_leds_S_led_0_PARENT DT_N_S_leds @@ -15409,8 +15818,8 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_leds_S_led_0_REQUIRES_ORDS \ - 82, /* /soc/pin-controller@58020000/gpio@58022000 */ \ - 107, /* /leds */ + 82, \ + 107, /* Ordinals for what depends directly on this node: */ #define DT_N_S_leds_S_led_0_SUPPORTS_ORDS /* nothing */ @@ -15459,6 +15868,9 @@ /* Node's name with unit-address: */ #define DT_N_S_leds_S_led_1_FULL_NAME "led_1" +#define DT_N_S_leds_S_led_1_FULL_NAME_UNQUOTED led_1 +#define DT_N_S_leds_S_led_1_FULL_NAME_TOKEN led_1 +#define DT_N_S_leds_S_led_1_FULL_NAME_UPPER_TOKEN LED_1 /* Node parent (/leds) identifier: */ #define DT_N_S_leds_S_led_1_PARENT DT_N_S_leds @@ -15489,8 +15901,8 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_leds_S_led_1_REQUIRES_ORDS \ - 83, /* /soc/pin-controller@58020000/gpio@58022400 */ \ - 107, /* /leds */ + 83, \ + 107, /* Ordinals for what depends directly on this node: */ #define DT_N_S_leds_S_led_1_SUPPORTS_ORDS /* nothing */ @@ -15539,6 +15951,9 @@ /* Node's name with unit-address: */ #define DT_N_S_leds_S_led_2_FULL_NAME "led_2" +#define DT_N_S_leds_S_led_2_FULL_NAME_UNQUOTED led_2 +#define DT_N_S_leds_S_led_2_FULL_NAME_TOKEN led_2 +#define DT_N_S_leds_S_led_2_FULL_NAME_UPPER_TOKEN LED_2 /* Node parent (/leds) identifier: */ #define DT_N_S_leds_S_led_2_PARENT DT_N_S_leds @@ -15569,8 +15984,8 @@ /* Ordinals for what this node depends on directly: */ #define DT_N_S_leds_S_led_2_REQUIRES_ORDS \ - 79, /* /soc/pin-controller@58020000/gpio@58021000 */ \ - 107, /* /leds */ + 79, \ + 107, /* Ordinals for what depends directly on this node: */ #define DT_N_S_leds_S_led_2_SUPPORTS_ORDS /* nothing */ @@ -15604,6 +16019,293 @@ #define DT_N_S_leds_S_led_2_P_gpios_LEN 1 #define DT_N_S_leds_S_led_2_P_gpios_EXISTS 1 +/* + * Devicetree node: /mcos + * + * Node identifier: DT_N_S_mcos + */ + +/* Node's full path: */ +#define DT_N_S_mcos_PATH "/mcos" + +/* Node's name with unit-address: */ +#define DT_N_S_mcos_FULL_NAME "mcos" +#define DT_N_S_mcos_FULL_NAME_UNQUOTED mcos +#define DT_N_S_mcos_FULL_NAME_TOKEN mcos +#define DT_N_S_mcos_FULL_NAME_UPPER_TOKEN MCOS + +/* Node parent (/) identifier: */ +#define DT_N_S_mcos_PARENT DT_N + +/* Node's index in its parent's list of children: */ +#define DT_N_S_mcos_CHILD_IDX 6 + +/* Helpers for dealing with node labels: */ +#define DT_N_S_mcos_NODELABEL_NUM 0 +#define DT_N_S_mcos_FOREACH_NODELABEL(fn) +#define DT_N_S_mcos_FOREACH_NODELABEL_VARGS(fn, ...) + +/* Helper macros for child nodes of this node. */ +#define DT_N_S_mcos_CHILD_NUM 2 +#define DT_N_S_mcos_CHILD_NUM_STATUS_OKAY 0 +#define DT_N_S_mcos_FOREACH_CHILD(fn) fn(DT_N_S_mcos_S_mco1) fn(DT_N_S_mcos_S_mco2) +#define DT_N_S_mcos_FOREACH_CHILD_SEP(fn, sep) fn(DT_N_S_mcos_S_mco1) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_mcos_S_mco2) +#define DT_N_S_mcos_FOREACH_CHILD_VARGS(fn, ...) fn(DT_N_S_mcos_S_mco1, __VA_ARGS__) fn(DT_N_S_mcos_S_mco2, __VA_ARGS__) +#define DT_N_S_mcos_FOREACH_CHILD_SEP_VARGS(fn, sep, ...) fn(DT_N_S_mcos_S_mco1, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_mcos_S_mco2, __VA_ARGS__) +#define DT_N_S_mcos_FOREACH_CHILD_STATUS_OKAY(fn) +#define DT_N_S_mcos_FOREACH_CHILD_STATUS_OKAY_SEP(fn, sep) +#define DT_N_S_mcos_FOREACH_CHILD_STATUS_OKAY_VARGS(fn, ...) +#define DT_N_S_mcos_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) + +/* Node's dependency ordinal: */ +#define DT_N_S_mcos_ORD 111 +#define DT_N_S_mcos_ORD_STR_SORTABLE 00111 + +/* Ordinals for what this node depends on directly: */ +#define DT_N_S_mcos_REQUIRES_ORDS \ + 0, + +/* Ordinals for what depends directly on this node: */ +#define DT_N_S_mcos_SUPPORTS_ORDS \ + 112, \ + 113, + +/* Existence and alternate IDs: */ +#define DT_N_S_mcos_EXISTS 1 + +/* Macros for properties that are special in the specification: */ +#define DT_N_S_mcos_REG_NUM 0 +#define DT_N_S_mcos_RANGES_NUM 0 +#define DT_N_S_mcos_FOREACH_RANGE(fn) +#define DT_N_S_mcos_IRQ_NUM 0 +#define DT_N_S_mcos_IRQ_LEVEL 0 +#define DT_N_S_mcos_STATUS_okay 1 + +/* Pin control (pinctrl-, pinctrl-names) properties: */ +#define DT_N_S_mcos_PINCTRL_NUM 0 + +/* (No generic property macros) */ + +/* + * Devicetree node: /mcos/mco1 + * + * Node identifier: DT_N_S_mcos_S_mco1 + * + * Binding (compatible = st,stm32-clock-mco): + * $ZEPHYR_BASE/dts/bindings/clock/st,stm32-clock-mco.yaml + * + * (Descriptions have moved to the Devicetree Bindings Index + * in the documentation.) + */ + +/* Node's full path: */ +#define DT_N_S_mcos_S_mco1_PATH "/mcos/mco1" + +/* Node's name with unit-address: */ +#define DT_N_S_mcos_S_mco1_FULL_NAME "mco1" +#define DT_N_S_mcos_S_mco1_FULL_NAME_UNQUOTED mco1 +#define DT_N_S_mcos_S_mco1_FULL_NAME_TOKEN mco1 +#define DT_N_S_mcos_S_mco1_FULL_NAME_UPPER_TOKEN MCO1 + +/* Node parent (/mcos) identifier: */ +#define DT_N_S_mcos_S_mco1_PARENT DT_N_S_mcos + +/* Node's index in its parent's list of children: */ +#define DT_N_S_mcos_S_mco1_CHILD_IDX 0 + +/* Helpers for dealing with node labels: */ +#define DT_N_S_mcos_S_mco1_NODELABEL_NUM 1 +#define DT_N_S_mcos_S_mco1_FOREACH_NODELABEL(fn) fn(mco1) +#define DT_N_S_mcos_S_mco1_FOREACH_NODELABEL_VARGS(fn, ...) fn(mco1, __VA_ARGS__) + +/* Helper macros for child nodes of this node. */ +#define DT_N_S_mcos_S_mco1_CHILD_NUM 0 +#define DT_N_S_mcos_S_mco1_CHILD_NUM_STATUS_OKAY 0 +#define DT_N_S_mcos_S_mco1_FOREACH_CHILD(fn) +#define DT_N_S_mcos_S_mco1_FOREACH_CHILD_SEP(fn, sep) +#define DT_N_S_mcos_S_mco1_FOREACH_CHILD_VARGS(fn, ...) +#define DT_N_S_mcos_S_mco1_FOREACH_CHILD_SEP_VARGS(fn, sep, ...) +#define DT_N_S_mcos_S_mco1_FOREACH_CHILD_STATUS_OKAY(fn) +#define DT_N_S_mcos_S_mco1_FOREACH_CHILD_STATUS_OKAY_SEP(fn, sep) +#define DT_N_S_mcos_S_mco1_FOREACH_CHILD_STATUS_OKAY_VARGS(fn, ...) +#define DT_N_S_mcos_S_mco1_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) + +/* Node's dependency ordinal: */ +#define DT_N_S_mcos_S_mco1_ORD 112 +#define DT_N_S_mcos_S_mco1_ORD_STR_SORTABLE 00112 + +/* Ordinals for what this node depends on directly: */ +#define DT_N_S_mcos_S_mco1_REQUIRES_ORDS \ + 111, + +/* Ordinals for what depends directly on this node: */ +#define DT_N_S_mcos_S_mco1_SUPPORTS_ORDS /* nothing */ + +/* Existence and alternate IDs: */ +#define DT_N_S_mcos_S_mco1_EXISTS 1 +#define DT_N_INST_0_st_stm32_clock_mco DT_N_S_mcos_S_mco1 +#define DT_N_NODELABEL_mco1 DT_N_S_mcos_S_mco1 + +/* Macros for properties that are special in the specification: */ +#define DT_N_S_mcos_S_mco1_REG_NUM 0 +#define DT_N_S_mcos_S_mco1_RANGES_NUM 0 +#define DT_N_S_mcos_S_mco1_FOREACH_RANGE(fn) +#define DT_N_S_mcos_S_mco1_IRQ_NUM 0 +#define DT_N_S_mcos_S_mco1_IRQ_LEVEL 0 +#define DT_N_S_mcos_S_mco1_COMPAT_MATCHES_st_stm32_clock_mco 1 +#define DT_N_S_mcos_S_mco1_COMPAT_VENDOR_IDX_0_EXISTS 1 +#define DT_N_S_mcos_S_mco1_COMPAT_VENDOR_IDX_0 "STMicroelectronics" +#define DT_N_S_mcos_S_mco1_COMPAT_MODEL_IDX_0_EXISTS 1 +#define DT_N_S_mcos_S_mco1_COMPAT_MODEL_IDX_0 "stm32-clock-mco" +#define DT_N_S_mcos_S_mco1_STATUS_disabled 1 + +/* Pin control (pinctrl-, pinctrl-names) properties: */ +#define DT_N_S_mcos_S_mco1_PINCTRL_NUM 0 + +/* Generic property macros: */ +#define DT_N_S_mcos_S_mco1_P_status "disabled" +#define DT_N_S_mcos_S_mco1_P_status_STRING_UNQUOTED disabled +#define DT_N_S_mcos_S_mco1_P_status_STRING_TOKEN disabled +#define DT_N_S_mcos_S_mco1_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_mcos_S_mco1_P_status_IDX_0 "disabled" +#define DT_N_S_mcos_S_mco1_P_status_IDX_0_EXISTS 1 +#define DT_N_S_mcos_S_mco1_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_mcos_S_mco1_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_mcos_S_mco1_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_mcos_S_mco1, status, 0) +#define DT_N_S_mcos_S_mco1_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_mcos_S_mco1, status, 0) +#define DT_N_S_mcos_S_mco1_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_mcos_S_mco1, status, 0, __VA_ARGS__) +#define DT_N_S_mcos_S_mco1_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_mcos_S_mco1, status, 0, __VA_ARGS__) +#define DT_N_S_mcos_S_mco1_P_status_LEN 1 +#define DT_N_S_mcos_S_mco1_P_status_EXISTS 1 +#define DT_N_S_mcos_S_mco1_P_compatible {"st,stm32-clock-mco"} +#define DT_N_S_mcos_S_mco1_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_mcos_S_mco1_P_compatible_IDX_0 "st,stm32-clock-mco" +#define DT_N_S_mcos_S_mco1_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-clock-mco +#define DT_N_S_mcos_S_mco1_P_compatible_IDX_0_STRING_TOKEN st_stm32_clock_mco +#define DT_N_S_mcos_S_mco1_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_CLOCK_MCO +#define DT_N_S_mcos_S_mco1_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_mcos_S_mco1, compatible, 0) +#define DT_N_S_mcos_S_mco1_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_mcos_S_mco1, compatible, 0) +#define DT_N_S_mcos_S_mco1_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_mcos_S_mco1, compatible, 0, __VA_ARGS__) +#define DT_N_S_mcos_S_mco1_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_mcos_S_mco1, compatible, 0, __VA_ARGS__) +#define DT_N_S_mcos_S_mco1_P_compatible_LEN 1 +#define DT_N_S_mcos_S_mco1_P_compatible_EXISTS 1 +#define DT_N_S_mcos_S_mco1_P_zephyr_deferred_init 0 +#define DT_N_S_mcos_S_mco1_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_mcos_S_mco1_P_wakeup_source 0 +#define DT_N_S_mcos_S_mco1_P_wakeup_source_EXISTS 1 +#define DT_N_S_mcos_S_mco1_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_mcos_S_mco1_P_zephyr_pm_device_runtime_auto_EXISTS 1 + +/* + * Devicetree node: /mcos/mco2 + * + * Node identifier: DT_N_S_mcos_S_mco2 + * + * Binding (compatible = st,stm32-clock-mco): + * $ZEPHYR_BASE/dts/bindings/clock/st,stm32-clock-mco.yaml + * + * (Descriptions have moved to the Devicetree Bindings Index + * in the documentation.) + */ + +/* Node's full path: */ +#define DT_N_S_mcos_S_mco2_PATH "/mcos/mco2" + +/* Node's name with unit-address: */ +#define DT_N_S_mcos_S_mco2_FULL_NAME "mco2" +#define DT_N_S_mcos_S_mco2_FULL_NAME_UNQUOTED mco2 +#define DT_N_S_mcos_S_mco2_FULL_NAME_TOKEN mco2 +#define DT_N_S_mcos_S_mco2_FULL_NAME_UPPER_TOKEN MCO2 + +/* Node parent (/mcos) identifier: */ +#define DT_N_S_mcos_S_mco2_PARENT DT_N_S_mcos + +/* Node's index in its parent's list of children: */ +#define DT_N_S_mcos_S_mco2_CHILD_IDX 1 + +/* Helpers for dealing with node labels: */ +#define DT_N_S_mcos_S_mco2_NODELABEL_NUM 1 +#define DT_N_S_mcos_S_mco2_FOREACH_NODELABEL(fn) fn(mco2) +#define DT_N_S_mcos_S_mco2_FOREACH_NODELABEL_VARGS(fn, ...) fn(mco2, __VA_ARGS__) + +/* Helper macros for child nodes of this node. */ +#define DT_N_S_mcos_S_mco2_CHILD_NUM 0 +#define DT_N_S_mcos_S_mco2_CHILD_NUM_STATUS_OKAY 0 +#define DT_N_S_mcos_S_mco2_FOREACH_CHILD(fn) +#define DT_N_S_mcos_S_mco2_FOREACH_CHILD_SEP(fn, sep) +#define DT_N_S_mcos_S_mco2_FOREACH_CHILD_VARGS(fn, ...) +#define DT_N_S_mcos_S_mco2_FOREACH_CHILD_SEP_VARGS(fn, sep, ...) +#define DT_N_S_mcos_S_mco2_FOREACH_CHILD_STATUS_OKAY(fn) +#define DT_N_S_mcos_S_mco2_FOREACH_CHILD_STATUS_OKAY_SEP(fn, sep) +#define DT_N_S_mcos_S_mco2_FOREACH_CHILD_STATUS_OKAY_VARGS(fn, ...) +#define DT_N_S_mcos_S_mco2_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) + +/* Node's dependency ordinal: */ +#define DT_N_S_mcos_S_mco2_ORD 113 +#define DT_N_S_mcos_S_mco2_ORD_STR_SORTABLE 00113 + +/* Ordinals for what this node depends on directly: */ +#define DT_N_S_mcos_S_mco2_REQUIRES_ORDS \ + 111, + +/* Ordinals for what depends directly on this node: */ +#define DT_N_S_mcos_S_mco2_SUPPORTS_ORDS /* nothing */ + +/* Existence and alternate IDs: */ +#define DT_N_S_mcos_S_mco2_EXISTS 1 +#define DT_N_INST_1_st_stm32_clock_mco DT_N_S_mcos_S_mco2 +#define DT_N_NODELABEL_mco2 DT_N_S_mcos_S_mco2 + +/* Macros for properties that are special in the specification: */ +#define DT_N_S_mcos_S_mco2_REG_NUM 0 +#define DT_N_S_mcos_S_mco2_RANGES_NUM 0 +#define DT_N_S_mcos_S_mco2_FOREACH_RANGE(fn) +#define DT_N_S_mcos_S_mco2_IRQ_NUM 0 +#define DT_N_S_mcos_S_mco2_IRQ_LEVEL 0 +#define DT_N_S_mcos_S_mco2_COMPAT_MATCHES_st_stm32_clock_mco 1 +#define DT_N_S_mcos_S_mco2_COMPAT_VENDOR_IDX_0_EXISTS 1 +#define DT_N_S_mcos_S_mco2_COMPAT_VENDOR_IDX_0 "STMicroelectronics" +#define DT_N_S_mcos_S_mco2_COMPAT_MODEL_IDX_0_EXISTS 1 +#define DT_N_S_mcos_S_mco2_COMPAT_MODEL_IDX_0 "stm32-clock-mco" +#define DT_N_S_mcos_S_mco2_STATUS_disabled 1 + +/* Pin control (pinctrl-, pinctrl-names) properties: */ +#define DT_N_S_mcos_S_mco2_PINCTRL_NUM 0 + +/* Generic property macros: */ +#define DT_N_S_mcos_S_mco2_P_status "disabled" +#define DT_N_S_mcos_S_mco2_P_status_STRING_UNQUOTED disabled +#define DT_N_S_mcos_S_mco2_P_status_STRING_TOKEN disabled +#define DT_N_S_mcos_S_mco2_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_mcos_S_mco2_P_status_IDX_0 "disabled" +#define DT_N_S_mcos_S_mco2_P_status_IDX_0_EXISTS 1 +#define DT_N_S_mcos_S_mco2_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_mcos_S_mco2_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_mcos_S_mco2_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_mcos_S_mco2, status, 0) +#define DT_N_S_mcos_S_mco2_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_mcos_S_mco2, status, 0) +#define DT_N_S_mcos_S_mco2_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_mcos_S_mco2, status, 0, __VA_ARGS__) +#define DT_N_S_mcos_S_mco2_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_mcos_S_mco2, status, 0, __VA_ARGS__) +#define DT_N_S_mcos_S_mco2_P_status_LEN 1 +#define DT_N_S_mcos_S_mco2_P_status_EXISTS 1 +#define DT_N_S_mcos_S_mco2_P_compatible {"st,stm32-clock-mco"} +#define DT_N_S_mcos_S_mco2_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_mcos_S_mco2_P_compatible_IDX_0 "st,stm32-clock-mco" +#define DT_N_S_mcos_S_mco2_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-clock-mco +#define DT_N_S_mcos_S_mco2_P_compatible_IDX_0_STRING_TOKEN st_stm32_clock_mco +#define DT_N_S_mcos_S_mco2_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_CLOCK_MCO +#define DT_N_S_mcos_S_mco2_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_mcos_S_mco2, compatible, 0) +#define DT_N_S_mcos_S_mco2_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_mcos_S_mco2, compatible, 0) +#define DT_N_S_mcos_S_mco2_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_mcos_S_mco2, compatible, 0, __VA_ARGS__) +#define DT_N_S_mcos_S_mco2_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_mcos_S_mco2, compatible, 0, __VA_ARGS__) +#define DT_N_S_mcos_S_mco2_P_compatible_LEN 1 +#define DT_N_S_mcos_S_mco2_P_compatible_EXISTS 1 +#define DT_N_S_mcos_S_mco2_P_zephyr_deferred_init 0 +#define DT_N_S_mcos_S_mco2_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_mcos_S_mco2_P_wakeup_source 0 +#define DT_N_S_mcos_S_mco2_P_wakeup_source_EXISTS 1 +#define DT_N_S_mcos_S_mco2_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_mcos_S_mco2_P_zephyr_pm_device_runtime_auto_EXISTS 1 + /* * Devicetree node: /soc/adc@40022100 * @@ -15621,6 +16323,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_40022100_FULL_NAME "adc@40022100" +#define DT_N_S_soc_S_adc_40022100_FULL_NAME_UNQUOTED adc@40022100 +#define DT_N_S_soc_S_adc_40022100_FULL_NAME_TOKEN adc_40022100 +#define DT_N_S_soc_S_adc_40022100_FULL_NAME_UPPER_TOKEN ADC_40022100 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_adc_40022100_PARENT DT_N_S_soc @@ -15646,14 +16351,14 @@ #define DT_N_S_soc_S_adc_40022100_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_40022100_ORD 111 -#define DT_N_S_soc_S_adc_40022100_ORD_STR_SORTABLE 00111 +#define DT_N_S_soc_S_adc_40022100_ORD 114 +#define DT_N_S_soc_S_adc_40022100_ORD_STR_SORTABLE 00114 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_40022100_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_40022100_SUPPORTS_ORDS /* nothing */ @@ -15666,8 +16371,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_40022100_REG_NUM 1 #define DT_N_S_soc_S_adc_40022100_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_REG_IDX_0_VAL_ADDRESS 1073881344 /* 0x40022100 */ -#define DT_N_S_soc_S_adc_40022100_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_adc_40022100_REG_IDX_0_VAL_ADDRESS 1073881344 +#define DT_N_S_soc_S_adc_40022100_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_adc_40022100_RANGES_NUM 0 #define DT_N_S_soc_S_adc_40022100_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_40022100_IRQ_NUM 1 @@ -15690,50 +16395,12 @@ #define DT_N_S_soc_S_adc_40022100_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_40022100_P_wakeup_source 0 -#define DT_N_S_soc_S_adc_40022100_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_adc_40022100_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_status "disabled" -#define DT_N_S_soc_S_adc_40022100_P_status_STRING_UNQUOTED disabled -#define DT_N_S_soc_S_adc_40022100_P_status_STRING_TOKEN disabled -#define DT_N_S_soc_S_adc_40022100_P_status_STRING_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_adc_40022100_P_status_IDX_0 "disabled" -#define DT_N_S_soc_S_adc_40022100_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_adc_40022100_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_adc_40022100_P_status_ENUM_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_adc_40022100_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022100, status, 0) -#define DT_N_S_soc_S_adc_40022100_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022100, status, 0) -#define DT_N_S_soc_S_adc_40022100_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022100, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_40022100_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022100, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_40022100_P_status_LEN 1 -#define DT_N_S_soc_S_adc_40022100_P_status_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_compatible {"st,stm32-adc"} -#define DT_N_S_soc_S_adc_40022100_P_compatible_IDX_0 "st,stm32-adc" -#define DT_N_S_soc_S_adc_40022100_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-adc -#define DT_N_S_soc_S_adc_40022100_P_compatible_IDX_0_STRING_TOKEN st_stm32_adc -#define DT_N_S_soc_S_adc_40022100_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_ADC -#define DT_N_S_soc_S_adc_40022100_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022100, compatible, 0) -#define DT_N_S_soc_S_adc_40022100_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022100, compatible, 0) -#define DT_N_S_soc_S_adc_40022100_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022100, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_40022100_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022100, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_40022100_P_compatible_LEN 1 -#define DT_N_S_soc_S_adc_40022100_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_reg {1073881344 /* 0x40022100 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_adc_40022100_P_reg_IDX_0 1073881344 +#define DT_N_S_soc_S_adc_40022100_P_reg {1073881344, 1024} #define DT_N_S_soc_S_adc_40022100_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_adc_40022100_P_reg_IDX_0 1073881344 #define DT_N_S_soc_S_adc_40022100_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_reg_IDX_1 1024 #define DT_N_S_soc_S_adc_40022100_P_reg_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_interrupts {18 /* 0x12 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_adc_40022100_P_interrupts_IDX_0 18 -#define DT_N_S_soc_S_adc_40022100_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_adc_40022100_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_adc_40022100_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_adc_40022100_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_adc_40022100_P_clocks_IDX_0_VAL_bus 216 @@ -15746,21 +16413,25 @@ #define DT_N_S_soc_S_adc_40022100_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022100, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_adc_40022100_P_clocks_LEN 1 #define DT_N_S_soc_S_adc_40022100_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_adc_40022100_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_interrupts {18, 0} +#define DT_N_S_soc_S_adc_40022100_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_interrupts_IDX_0 18 +#define DT_N_S_soc_S_adc_40022100_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_adc_40022100_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_adc_40022100_P_vref_mv 3300 #define DT_N_S_soc_S_adc_40022100_P_vref_mv_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_resolutions {8446476 /* 0x80e20c */, 7725580 /* 0x75e20c */, 6742540 /* 0x66e20c */, 5497356 /* 0x53e20c */, 4710924 /* 0x47e20c */} -#define DT_N_S_soc_S_adc_40022100_P_resolutions_IDX_0 8446476 +#define DT_N_S_soc_S_adc_40022100_P_resolutions {8446476, 7725580, 6742540, 5497356, 4710924} #define DT_N_S_soc_S_adc_40022100_P_resolutions_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_resolutions_IDX_1 7725580 +#define DT_N_S_soc_S_adc_40022100_P_resolutions_IDX_0 8446476 #define DT_N_S_soc_S_adc_40022100_P_resolutions_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_resolutions_IDX_2 6742540 +#define DT_N_S_soc_S_adc_40022100_P_resolutions_IDX_1 7725580 #define DT_N_S_soc_S_adc_40022100_P_resolutions_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_resolutions_IDX_3 5497356 +#define DT_N_S_soc_S_adc_40022100_P_resolutions_IDX_2 6742540 #define DT_N_S_soc_S_adc_40022100_P_resolutions_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_resolutions_IDX_4 4710924 +#define DT_N_S_soc_S_adc_40022100_P_resolutions_IDX_3 5497356 #define DT_N_S_soc_S_adc_40022100_P_resolutions_IDX_4_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_resolutions_IDX_4 4710924 #define DT_N_S_soc_S_adc_40022100_P_resolutions_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022100, resolutions, 0) \ fn(DT_N_S_soc_S_adc_40022100, resolutions, 1) \ fn(DT_N_S_soc_S_adc_40022100, resolutions, 2) \ @@ -15783,23 +16454,23 @@ fn(DT_N_S_soc_S_adc_40022100, resolutions, 4, __VA_ARGS__) #define DT_N_S_soc_S_adc_40022100_P_resolutions_LEN 5 #define DT_N_S_soc_S_adc_40022100_P_resolutions_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_sampling_times {2 /* 0x2 */, 3 /* 0x3 */, 9 /* 0x9 */, 17 /* 0x11 */, 33 /* 0x21 */, 65 /* 0x41 */, 388 /* 0x184 */, 811 /* 0x32b */} -#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_0 2 +#define DT_N_S_soc_S_adc_40022100_P_sampling_times {2, 3, 9, 17, 33, 65, 388, 811} #define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_1 3 +#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_0 2 #define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_2 9 +#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_1 3 #define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_3 17 +#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_2 9 #define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_4 33 +#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_3 17 #define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_5 65 +#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_4 33 #define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_6 388 +#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_5 65 #define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_7 811 +#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_6 388 #define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_7_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_sampling_times_IDX_7 811 #define DT_N_S_soc_S_adc_40022100_P_sampling_times_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022100, sampling_times, 0) \ fn(DT_N_S_soc_S_adc_40022100, sampling_times, 1) \ fn(DT_N_S_soc_S_adc_40022100, sampling_times, 2) \ @@ -15835,9 +16506,42 @@ #define DT_N_S_soc_S_adc_40022100_P_sampling_times_LEN 8 #define DT_N_S_soc_S_adc_40022100_P_sampling_times_EXISTS 1 #define DT_N_S_soc_S_adc_40022100_P_st_adc_sequencer 1 -#define DT_N_S_soc_S_adc_40022100_P_st_adc_sequencer_ENUM_IDX 1 -#define DT_N_S_soc_S_adc_40022100_P_st_adc_sequencer_ENUM_VAL_1_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_st_adc_sequencer_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_adc_40022100_P_st_adc_sequencer_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_st_adc_sequencer_IDX_0_ENUM_VAL_1_EXISTS 1 #define DT_N_S_soc_S_adc_40022100_P_st_adc_sequencer_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_status "disabled" +#define DT_N_S_soc_S_adc_40022100_P_status_STRING_UNQUOTED disabled +#define DT_N_S_soc_S_adc_40022100_P_status_STRING_TOKEN disabled +#define DT_N_S_soc_S_adc_40022100_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_adc_40022100_P_status_IDX_0 "disabled" +#define DT_N_S_soc_S_adc_40022100_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_adc_40022100_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022100, status, 0) +#define DT_N_S_soc_S_adc_40022100_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022100, status, 0) +#define DT_N_S_soc_S_adc_40022100_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022100, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_40022100_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022100, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_40022100_P_status_LEN 1 +#define DT_N_S_soc_S_adc_40022100_P_status_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_compatible {"st,stm32-adc"} +#define DT_N_S_soc_S_adc_40022100_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_compatible_IDX_0 "st,stm32-adc" +#define DT_N_S_soc_S_adc_40022100_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-adc +#define DT_N_S_soc_S_adc_40022100_P_compatible_IDX_0_STRING_TOKEN st_stm32_adc +#define DT_N_S_soc_S_adc_40022100_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_ADC +#define DT_N_S_soc_S_adc_40022100_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022100, compatible, 0) +#define DT_N_S_soc_S_adc_40022100_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022100, compatible, 0) +#define DT_N_S_soc_S_adc_40022100_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022100, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_40022100_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022100, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_40022100_P_compatible_LEN 1 +#define DT_N_S_soc_S_adc_40022100_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_adc_40022100_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_wakeup_source 0 +#define DT_N_S_soc_S_adc_40022100_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_adc_40022100_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_adc_40022100_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/adc@40022300 @@ -15856,6 +16560,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_40022300_FULL_NAME "adc@40022300" +#define DT_N_S_soc_S_adc_40022300_FULL_NAME_UNQUOTED adc@40022300 +#define DT_N_S_soc_S_adc_40022300_FULL_NAME_TOKEN adc_40022300 +#define DT_N_S_soc_S_adc_40022300_FULL_NAME_UPPER_TOKEN ADC_40022300 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_adc_40022300_PARENT DT_N_S_soc @@ -15881,14 +16588,14 @@ #define DT_N_S_soc_S_adc_40022300_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_40022300_ORD 112 -#define DT_N_S_soc_S_adc_40022300_ORD_STR_SORTABLE 00112 +#define DT_N_S_soc_S_adc_40022300_ORD 115 +#define DT_N_S_soc_S_adc_40022300_ORD_STR_SORTABLE 00115 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_40022300_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_40022300_SUPPORTS_ORDS /* nothing */ @@ -15901,8 +16608,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_40022300_REG_NUM 1 #define DT_N_S_soc_S_adc_40022300_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_REG_IDX_0_VAL_ADDRESS 1073881856 /* 0x40022300 */ -#define DT_N_S_soc_S_adc_40022300_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_adc_40022300_REG_IDX_0_VAL_ADDRESS 1073881856 +#define DT_N_S_soc_S_adc_40022300_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_adc_40022300_RANGES_NUM 0 #define DT_N_S_soc_S_adc_40022300_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_40022300_IRQ_NUM 1 @@ -15925,50 +16632,12 @@ #define DT_N_S_soc_S_adc_40022300_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_40022300_P_wakeup_source 0 -#define DT_N_S_soc_S_adc_40022300_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_adc_40022300_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_status "disabled" -#define DT_N_S_soc_S_adc_40022300_P_status_STRING_UNQUOTED disabled -#define DT_N_S_soc_S_adc_40022300_P_status_STRING_TOKEN disabled -#define DT_N_S_soc_S_adc_40022300_P_status_STRING_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_adc_40022300_P_status_IDX_0 "disabled" -#define DT_N_S_soc_S_adc_40022300_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_adc_40022300_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_adc_40022300_P_status_ENUM_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_adc_40022300_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022300, status, 0) -#define DT_N_S_soc_S_adc_40022300_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022300, status, 0) -#define DT_N_S_soc_S_adc_40022300_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022300, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_40022300_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022300, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_40022300_P_status_LEN 1 -#define DT_N_S_soc_S_adc_40022300_P_status_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_compatible {"st,stm32-adc"} -#define DT_N_S_soc_S_adc_40022300_P_compatible_IDX_0 "st,stm32-adc" -#define DT_N_S_soc_S_adc_40022300_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-adc -#define DT_N_S_soc_S_adc_40022300_P_compatible_IDX_0_STRING_TOKEN st_stm32_adc -#define DT_N_S_soc_S_adc_40022300_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_ADC -#define DT_N_S_soc_S_adc_40022300_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022300, compatible, 0) -#define DT_N_S_soc_S_adc_40022300_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022300, compatible, 0) -#define DT_N_S_soc_S_adc_40022300_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022300, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_40022300_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022300, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_adc_40022300_P_compatible_LEN 1 -#define DT_N_S_soc_S_adc_40022300_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_reg {1073881856 /* 0x40022300 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_adc_40022300_P_reg_IDX_0 1073881856 +#define DT_N_S_soc_S_adc_40022300_P_reg {1073881856, 1024} #define DT_N_S_soc_S_adc_40022300_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_adc_40022300_P_reg_IDX_0 1073881856 #define DT_N_S_soc_S_adc_40022300_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_reg_IDX_1 1024 #define DT_N_S_soc_S_adc_40022300_P_reg_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_interrupts {18 /* 0x12 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_adc_40022300_P_interrupts_IDX_0 18 -#define DT_N_S_soc_S_adc_40022300_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_adc_40022300_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_adc_40022300_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_adc_40022300_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_adc_40022300_P_clocks_IDX_0_VAL_bus 216 @@ -15981,21 +16650,25 @@ #define DT_N_S_soc_S_adc_40022300_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022300, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_adc_40022300_P_clocks_LEN 1 #define DT_N_S_soc_S_adc_40022300_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_adc_40022300_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_interrupts {18, 0} +#define DT_N_S_soc_S_adc_40022300_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_interrupts_IDX_0 18 +#define DT_N_S_soc_S_adc_40022300_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_adc_40022300_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_adc_40022300_P_vref_mv 3300 #define DT_N_S_soc_S_adc_40022300_P_vref_mv_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_resolutions {8446476 /* 0x80e20c */, 7725580 /* 0x75e20c */, 6742540 /* 0x66e20c */, 5497356 /* 0x53e20c */, 4710924 /* 0x47e20c */} -#define DT_N_S_soc_S_adc_40022300_P_resolutions_IDX_0 8446476 +#define DT_N_S_soc_S_adc_40022300_P_resolutions {8446476, 7725580, 6742540, 5497356, 4710924} #define DT_N_S_soc_S_adc_40022300_P_resolutions_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_resolutions_IDX_1 7725580 +#define DT_N_S_soc_S_adc_40022300_P_resolutions_IDX_0 8446476 #define DT_N_S_soc_S_adc_40022300_P_resolutions_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_resolutions_IDX_2 6742540 +#define DT_N_S_soc_S_adc_40022300_P_resolutions_IDX_1 7725580 #define DT_N_S_soc_S_adc_40022300_P_resolutions_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_resolutions_IDX_3 5497356 +#define DT_N_S_soc_S_adc_40022300_P_resolutions_IDX_2 6742540 #define DT_N_S_soc_S_adc_40022300_P_resolutions_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_resolutions_IDX_4 4710924 +#define DT_N_S_soc_S_adc_40022300_P_resolutions_IDX_3 5497356 #define DT_N_S_soc_S_adc_40022300_P_resolutions_IDX_4_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_resolutions_IDX_4 4710924 #define DT_N_S_soc_S_adc_40022300_P_resolutions_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022300, resolutions, 0) \ fn(DT_N_S_soc_S_adc_40022300, resolutions, 1) \ fn(DT_N_S_soc_S_adc_40022300, resolutions, 2) \ @@ -16018,23 +16691,23 @@ fn(DT_N_S_soc_S_adc_40022300, resolutions, 4, __VA_ARGS__) #define DT_N_S_soc_S_adc_40022300_P_resolutions_LEN 5 #define DT_N_S_soc_S_adc_40022300_P_resolutions_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_sampling_times {2 /* 0x2 */, 3 /* 0x3 */, 9 /* 0x9 */, 17 /* 0x11 */, 33 /* 0x21 */, 65 /* 0x41 */, 388 /* 0x184 */, 811 /* 0x32b */} -#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_0 2 +#define DT_N_S_soc_S_adc_40022300_P_sampling_times {2, 3, 9, 17, 33, 65, 388, 811} #define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_1 3 +#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_0 2 #define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_2 9 +#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_1 3 #define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_3 17 +#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_2 9 #define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_4 33 +#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_3 17 #define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_5 65 +#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_4 33 #define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_6 388 +#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_5 65 #define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_7 811 +#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_6 388 #define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_7_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_sampling_times_IDX_7 811 #define DT_N_S_soc_S_adc_40022300_P_sampling_times_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022300, sampling_times, 0) \ fn(DT_N_S_soc_S_adc_40022300, sampling_times, 1) \ fn(DT_N_S_soc_S_adc_40022300, sampling_times, 2) \ @@ -16070,9 +16743,42 @@ #define DT_N_S_soc_S_adc_40022300_P_sampling_times_LEN 8 #define DT_N_S_soc_S_adc_40022300_P_sampling_times_EXISTS 1 #define DT_N_S_soc_S_adc_40022300_P_st_adc_sequencer 1 -#define DT_N_S_soc_S_adc_40022300_P_st_adc_sequencer_ENUM_IDX 1 -#define DT_N_S_soc_S_adc_40022300_P_st_adc_sequencer_ENUM_VAL_1_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_st_adc_sequencer_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_adc_40022300_P_st_adc_sequencer_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_st_adc_sequencer_IDX_0_ENUM_VAL_1_EXISTS 1 #define DT_N_S_soc_S_adc_40022300_P_st_adc_sequencer_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_status "disabled" +#define DT_N_S_soc_S_adc_40022300_P_status_STRING_UNQUOTED disabled +#define DT_N_S_soc_S_adc_40022300_P_status_STRING_TOKEN disabled +#define DT_N_S_soc_S_adc_40022300_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_adc_40022300_P_status_IDX_0 "disabled" +#define DT_N_S_soc_S_adc_40022300_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_adc_40022300_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022300, status, 0) +#define DT_N_S_soc_S_adc_40022300_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022300, status, 0) +#define DT_N_S_soc_S_adc_40022300_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022300, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_40022300_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022300, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_40022300_P_status_LEN 1 +#define DT_N_S_soc_S_adc_40022300_P_status_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_compatible {"st,stm32-adc"} +#define DT_N_S_soc_S_adc_40022300_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_compatible_IDX_0 "st,stm32-adc" +#define DT_N_S_soc_S_adc_40022300_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-adc +#define DT_N_S_soc_S_adc_40022300_P_compatible_IDX_0_STRING_TOKEN st_stm32_adc +#define DT_N_S_soc_S_adc_40022300_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_ADC +#define DT_N_S_soc_S_adc_40022300_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022300, compatible, 0) +#define DT_N_S_soc_S_adc_40022300_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022300, compatible, 0) +#define DT_N_S_soc_S_adc_40022300_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022300, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_40022300_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_adc_40022300, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_adc_40022300_P_compatible_LEN 1 +#define DT_N_S_soc_S_adc_40022300_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_adc_40022300_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_wakeup_source 0 +#define DT_N_S_soc_S_adc_40022300_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_adc_40022300_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_adc_40022300_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/bdma@58025400 @@ -16091,6 +16797,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_bdma_58025400_FULL_NAME "bdma@58025400" +#define DT_N_S_soc_S_bdma_58025400_FULL_NAME_UNQUOTED bdma@58025400 +#define DT_N_S_soc_S_bdma_58025400_FULL_NAME_TOKEN bdma_58025400 +#define DT_N_S_soc_S_bdma_58025400_FULL_NAME_UPPER_TOKEN BDMA_58025400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_bdma_58025400_PARENT DT_N_S_soc @@ -16116,14 +16825,14 @@ #define DT_N_S_soc_S_bdma_58025400_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_bdma_58025400_ORD 113 -#define DT_N_S_soc_S_bdma_58025400_ORD_STR_SORTABLE 00113 +#define DT_N_S_soc_S_bdma_58025400_ORD 116 +#define DT_N_S_soc_S_bdma_58025400_ORD_STR_SORTABLE 00116 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_bdma_58025400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_bdma_58025400_SUPPORTS_ORDS /* nothing */ @@ -16136,8 +16845,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_bdma_58025400_REG_NUM 1 #define DT_N_S_soc_S_bdma_58025400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_REG_IDX_0_VAL_ADDRESS 1476547584 /* 0x58025400 */ -#define DT_N_S_soc_S_bdma_58025400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_bdma_58025400_REG_IDX_0_VAL_ADDRESS 1476547584 +#define DT_N_S_soc_S_bdma_58025400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_bdma_58025400_RANGES_NUM 0 #define DT_N_S_soc_S_bdma_58025400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_bdma_58025400_IRQ_NUM 8 @@ -16209,20 +16918,60 @@ #define DT_N_S_soc_S_bdma_58025400_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_bdma_58025400_P_wakeup_source 0 -#define DT_N_S_soc_S_bdma_58025400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_bdma_58025400_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_reg {1476547584, 1024} +#define DT_N_S_soc_S_bdma_58025400_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_reg_IDX_0 1476547584 +#define DT_N_S_soc_S_bdma_58025400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_bdma_58025400_P_reg_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts {129, 0, 130, 0, 131, 0, 132, 0, 133, 0, 134, 0, 135, 0, 136, 0} +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_0 129 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_2 130 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_3 0 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_4_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_4 131 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_5_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_5 0 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_6_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_6 132 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_7_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_7 0 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_8_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_8 133 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_9_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_9 0 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_10_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_10 134 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_11_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_11 0 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_12_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_12 135 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_13_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_13 0 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_14_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_14 136 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_15_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_15 0 +#define DT_N_S_soc_S_bdma_58025400_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_st_mem2mem 1 +#define DT_N_S_soc_S_bdma_58025400_P_st_mem2mem_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_dma_offset 0 +#define DT_N_S_soc_S_bdma_58025400_P_dma_offset_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_dma_requests 8 +#define DT_N_S_soc_S_bdma_58025400_P_dma_requests_EXISTS 1 #define DT_N_S_soc_S_bdma_58025400_P_status "disabled" #define DT_N_S_soc_S_bdma_58025400_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_bdma_58025400_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_bdma_58025400_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_bdma_58025400_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_bdma_58025400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_bdma_58025400_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_bdma_58025400_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_bdma_58025400_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_bdma_58025400_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_bdma_58025400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_bdma_58025400, status, 0) #define DT_N_S_soc_S_bdma_58025400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_bdma_58025400, status, 0) #define DT_N_S_soc_S_bdma_58025400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_bdma_58025400, status, 0, __VA_ARGS__) @@ -16230,57 +16979,17 @@ #define DT_N_S_soc_S_bdma_58025400_P_status_LEN 1 #define DT_N_S_soc_S_bdma_58025400_P_status_EXISTS 1 #define DT_N_S_soc_S_bdma_58025400_P_compatible {"st,stm32-bdma"} +#define DT_N_S_soc_S_bdma_58025400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_bdma_58025400_P_compatible_IDX_0 "st,stm32-bdma" #define DT_N_S_soc_S_bdma_58025400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-bdma #define DT_N_S_soc_S_bdma_58025400_P_compatible_IDX_0_STRING_TOKEN st_stm32_bdma #define DT_N_S_soc_S_bdma_58025400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_BDMA -#define DT_N_S_soc_S_bdma_58025400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_bdma_58025400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_bdma_58025400, compatible, 0) #define DT_N_S_soc_S_bdma_58025400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_bdma_58025400, compatible, 0) #define DT_N_S_soc_S_bdma_58025400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_bdma_58025400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_bdma_58025400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_bdma_58025400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_bdma_58025400_P_compatible_LEN 1 #define DT_N_S_soc_S_bdma_58025400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_reg {1476547584 /* 0x58025400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_bdma_58025400_P_reg_IDX_0 1476547584 -#define DT_N_S_soc_S_bdma_58025400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_bdma_58025400_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts {129 /* 0x81 */, 0 /* 0x0 */, 130 /* 0x82 */, 0 /* 0x0 */, 131 /* 0x83 */, 0 /* 0x0 */, 132 /* 0x84 */, 0 /* 0x0 */, 133 /* 0x85 */, 0 /* 0x0 */, 134 /* 0x86 */, 0 /* 0x0 */, 135 /* 0x87 */, 0 /* 0x0 */, 136 /* 0x88 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_0 129 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_2 130 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_3 0 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_4 131 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_5 0 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_6 132 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_7 0 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_7_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_8 133 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_8_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_9 0 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_9_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_10 134 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_10_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_11 0 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_11_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_12 135 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_12_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_13 0 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_13_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_14 136 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_14_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_15 0 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_IDX_15_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_bdma_58025400_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_bdma_58025400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_bdma_58025400_P_clocks_IDX_0_VAL_bus 224 @@ -16295,12 +17004,10 @@ #define DT_N_S_soc_S_bdma_58025400_P_clocks_EXISTS 1 #define DT_N_S_soc_S_bdma_58025400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_bdma_58025400_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_dma_requests 8 -#define DT_N_S_soc_S_bdma_58025400_P_dma_requests_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_st_mem2mem 1 -#define DT_N_S_soc_S_bdma_58025400_P_st_mem2mem_EXISTS 1 -#define DT_N_S_soc_S_bdma_58025400_P_dma_offset 0 -#define DT_N_S_soc_S_bdma_58025400_P_dma_offset_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_wakeup_source 0 +#define DT_N_S_soc_S_bdma_58025400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_bdma_58025400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_bdma_58025400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/can@4000a000 @@ -16319,6 +17026,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_can_4000a000_FULL_NAME "can@4000a000" +#define DT_N_S_soc_S_can_4000a000_FULL_NAME_UNQUOTED can@4000a000 +#define DT_N_S_soc_S_can_4000a000_FULL_NAME_TOKEN can_4000a000 +#define DT_N_S_soc_S_can_4000a000_FULL_NAME_UPPER_TOKEN CAN_4000A000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_can_4000a000_PARENT DT_N_S_soc @@ -16344,14 +17054,14 @@ #define DT_N_S_soc_S_can_4000a000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_can_4000a000_ORD 114 -#define DT_N_S_soc_S_can_4000a000_ORD_STR_SORTABLE 00114 +#define DT_N_S_soc_S_can_4000a000_ORD 117 +#define DT_N_S_soc_S_can_4000a000_ORD_STR_SORTABLE 00117 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_can_4000a000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_can_4000a000_SUPPORTS_ORDS /* nothing */ @@ -16364,11 +17074,11 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_can_4000a000_REG_NUM 2 #define DT_N_S_soc_S_can_4000a000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_REG_IDX_0_VAL_ADDRESS 1073782784 /* 0x4000a000 */ -#define DT_N_S_soc_S_can_4000a000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_can_4000a000_REG_IDX_0_VAL_ADDRESS 1073782784 +#define DT_N_S_soc_S_can_4000a000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_can_4000a000_REG_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_REG_IDX_1_VAL_ADDRESS 1073785856 /* 0x4000ac00 */ -#define DT_N_S_soc_S_can_4000a000_REG_IDX_1_VAL_SIZE 848 /* 0x350 */ +#define DT_N_S_soc_S_can_4000a000_REG_IDX_1_VAL_ADDRESS 1073785856 +#define DT_N_S_soc_S_can_4000a000_REG_IDX_1_VAL_SIZE 848 #define DT_N_S_soc_S_can_4000a000_REG_NAME_m_can_EXISTS 1 #define DT_N_S_soc_S_can_4000a000_REG_NAME_m_can_VAL_ADDRESS DT_N_S_soc_S_can_4000a000_REG_IDX_0_VAL_ADDRESS #define DT_N_S_soc_S_can_4000a000_REG_NAME_m_can_VAL_SIZE DT_N_S_soc_S_can_4000a000_REG_IDX_0_VAL_SIZE @@ -16426,99 +17136,58 @@ #define DT_N_S_soc_S_can_4000a000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_can_4000a000_P_wakeup_source 0 -#define DT_N_S_soc_S_can_4000a000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_can_4000a000_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_status "disabled" -#define DT_N_S_soc_S_can_4000a000_P_status_STRING_UNQUOTED disabled -#define DT_N_S_soc_S_can_4000a000_P_status_STRING_TOKEN disabled -#define DT_N_S_soc_S_can_4000a000_P_status_STRING_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_can_4000a000_P_status_IDX_0 "disabled" -#define DT_N_S_soc_S_can_4000a000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_can_4000a000_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_can_4000a000_P_status_ENUM_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_can_4000a000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a000, status, 0) -#define DT_N_S_soc_S_can_4000a000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a000, status, 0) -#define DT_N_S_soc_S_can_4000a000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a000_P_status_LEN 1 -#define DT_N_S_soc_S_can_4000a000_P_status_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_compatible {"st,stm32h7-fdcan"} -#define DT_N_S_soc_S_can_4000a000_P_compatible_IDX_0 "st,stm32h7-fdcan" -#define DT_N_S_soc_S_can_4000a000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-fdcan -#define DT_N_S_soc_S_can_4000a000_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_fdcan -#define DT_N_S_soc_S_can_4000a000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_FDCAN -#define DT_N_S_soc_S_can_4000a000_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a000, compatible, 0) -#define DT_N_S_soc_S_can_4000a000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a000, compatible, 0) -#define DT_N_S_soc_S_can_4000a000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a000_P_compatible_LEN 1 -#define DT_N_S_soc_S_can_4000a000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_reg {1073782784 /* 0x4000a000 */, 1024 /* 0x400 */, 1073785856 /* 0x4000ac00 */, 848 /* 0x350 */} -#define DT_N_S_soc_S_can_4000a000_P_reg_IDX_0 1073782784 +#define DT_N_S_soc_S_can_4000a000_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_can_4000a000_P_clocks_IDX_0_VAL_bus 236 +#define DT_N_S_soc_S_can_4000a000_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_clocks_IDX_0_VAL_bits 256 +#define DT_N_S_soc_S_can_4000a000_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a000, clocks, 0) +#define DT_N_S_soc_S_can_4000a000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a000, clocks, 0) +#define DT_N_S_soc_S_can_4000a000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a000_P_clocks_LEN 1 +#define DT_N_S_soc_S_can_4000a000_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_reg {1073782784, 1024, 1073785856, 848} #define DT_N_S_soc_S_can_4000a000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_can_4000a000_P_reg_IDX_0 1073782784 #define DT_N_S_soc_S_can_4000a000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_reg_IDX_2 1073785856 +#define DT_N_S_soc_S_can_4000a000_P_reg_IDX_1 1024 #define DT_N_S_soc_S_can_4000a000_P_reg_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_reg_IDX_3 848 +#define DT_N_S_soc_S_can_4000a000_P_reg_IDX_2 1073785856 #define DT_N_S_soc_S_can_4000a000_P_reg_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_reg_IDX_3 848 #define DT_N_S_soc_S_can_4000a000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_reg_names {"m_can", "message_ram"} -#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_0 "m_can" -#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_0_STRING_UNQUOTED m_can -#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_0_STRING_TOKEN m_can -#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_0_STRING_UPPER_TOKEN M_CAN -#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_1 "message_ram" -#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_1_STRING_UNQUOTED message_ram -#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_1_STRING_TOKEN message_ram -#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_1_STRING_UPPER_TOKEN MESSAGE_RAM -#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_reg_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a000, reg_names, 0) \ - fn(DT_N_S_soc_S_can_4000a000, reg_names, 1) -#define DT_N_S_soc_S_can_4000a000_P_reg_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a000, reg_names, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_can_4000a000, reg_names, 1) -#define DT_N_S_soc_S_can_4000a000_P_reg_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a000, reg_names, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_can_4000a000, reg_names, 1, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a000_P_reg_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a000, reg_names, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_can_4000a000, reg_names, 1, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a000_P_reg_names_LEN 2 -#define DT_N_S_soc_S_can_4000a000_P_reg_names_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_interrupts {19 /* 0x13 */, 0 /* 0x0 */, 21 /* 0x15 */, 0 /* 0x0 */, 63 /* 0x3f */, 0 /* 0x0 */} -#define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_0 19 +#define DT_N_S_soc_S_can_4000a000_P_interrupts {19, 0, 21, 0, 63, 0} #define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_0 19 #define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_2 21 +#define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_3 0 +#define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_2 21 #define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_4 63 +#define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_3 0 #define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_5 0 +#define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_4 63 #define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_5_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_interrupts_IDX_5 0 #define DT_N_S_soc_S_can_4000a000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_can_4000a000_P_interrupt_names {"int0", "int1", "calib"} +#define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_0 "int0" #define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_0_STRING_UNQUOTED int0 #define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_0_STRING_TOKEN int0 #define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN INT0 -#define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_1 "int1" #define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_1_STRING_UNQUOTED int1 #define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_1_STRING_TOKEN int1 #define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_1_STRING_UPPER_TOKEN INT1 -#define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_2_EXISTS 1 #define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_2 "calib" #define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_2_STRING_UNQUOTED calib #define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_2_STRING_TOKEN calib #define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_2_STRING_UPPER_TOKEN CALIB -#define DT_N_S_soc_S_can_4000a000_P_interrupt_names_IDX_2_EXISTS 1 #define DT_N_S_soc_S_can_4000a000_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a000, interrupt_names, 0) \ fn(DT_N_S_soc_S_can_4000a000, interrupt_names, 1) \ fn(DT_N_S_soc_S_can_4000a000, interrupt_names, 2) @@ -16533,37 +17202,23 @@ fn(DT_N_S_soc_S_can_4000a000, interrupt_names, 2, __VA_ARGS__) #define DT_N_S_soc_S_can_4000a000_P_interrupt_names_LEN 3 #define DT_N_S_soc_S_can_4000a000_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_can_4000a000_P_clocks_IDX_0_VAL_bus 236 -#define DT_N_S_soc_S_can_4000a000_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_clocks_IDX_0_VAL_bits 256 -#define DT_N_S_soc_S_can_4000a000_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a000, clocks, 0) -#define DT_N_S_soc_S_can_4000a000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a000, clocks, 0) -#define DT_N_S_soc_S_can_4000a000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a000_P_clocks_LEN 1 -#define DT_N_S_soc_S_can_4000a000_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_can_4000a000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg {0 /* 0x0 */, 28 /* 0x1c */, 8 /* 0x8 */, 3 /* 0x3 */, 3 /* 0x3 */, 0 /* 0x0 */, 3 /* 0x3 */, 3 /* 0x3 */} -#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_0 0 +#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg {0, 28, 8, 3, 3, 0, 3, 3} #define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_1 28 +#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_0 0 #define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_2 8 +#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_1 28 #define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_3 3 +#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_2 8 #define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_4 3 +#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_3 3 #define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_5 0 +#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_4 3 #define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_6 3 +#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_5 0 #define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_7 3 +#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_6 3 #define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_7_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_IDX_7 3 #define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a000, bosch_mram_cfg, 0) \ fn(DT_N_S_soc_S_can_4000a000, bosch_mram_cfg, 1) \ fn(DT_N_S_soc_S_can_4000a000, bosch_mram_cfg, 2) \ @@ -16598,6 +17253,59 @@ fn(DT_N_S_soc_S_can_4000a000, bosch_mram_cfg, 7, __VA_ARGS__) #define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_LEN 8 #define DT_N_S_soc_S_can_4000a000_P_bosch_mram_cfg_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_status "disabled" +#define DT_N_S_soc_S_can_4000a000_P_status_STRING_UNQUOTED disabled +#define DT_N_S_soc_S_can_4000a000_P_status_STRING_TOKEN disabled +#define DT_N_S_soc_S_can_4000a000_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_can_4000a000_P_status_IDX_0 "disabled" +#define DT_N_S_soc_S_can_4000a000_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_can_4000a000_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a000, status, 0) +#define DT_N_S_soc_S_can_4000a000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a000, status, 0) +#define DT_N_S_soc_S_can_4000a000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a000_P_status_LEN 1 +#define DT_N_S_soc_S_can_4000a000_P_status_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_compatible {"st,stm32h7-fdcan"} +#define DT_N_S_soc_S_can_4000a000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_compatible_IDX_0 "st,stm32h7-fdcan" +#define DT_N_S_soc_S_can_4000a000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-fdcan +#define DT_N_S_soc_S_can_4000a000_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_fdcan +#define DT_N_S_soc_S_can_4000a000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_FDCAN +#define DT_N_S_soc_S_can_4000a000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a000, compatible, 0) +#define DT_N_S_soc_S_can_4000a000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a000, compatible, 0) +#define DT_N_S_soc_S_can_4000a000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a000_P_compatible_LEN 1 +#define DT_N_S_soc_S_can_4000a000_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_reg_names {"m_can", "message_ram"} +#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_0 "m_can" +#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_0_STRING_UNQUOTED m_can +#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_0_STRING_TOKEN m_can +#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_0_STRING_UPPER_TOKEN M_CAN +#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_1 "message_ram" +#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_1_STRING_UNQUOTED message_ram +#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_1_STRING_TOKEN message_ram +#define DT_N_S_soc_S_can_4000a000_P_reg_names_IDX_1_STRING_UPPER_TOKEN MESSAGE_RAM +#define DT_N_S_soc_S_can_4000a000_P_reg_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a000, reg_names, 0) \ + fn(DT_N_S_soc_S_can_4000a000, reg_names, 1) +#define DT_N_S_soc_S_can_4000a000_P_reg_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a000, reg_names, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_can_4000a000, reg_names, 1) +#define DT_N_S_soc_S_can_4000a000_P_reg_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a000, reg_names, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_can_4000a000, reg_names, 1, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a000_P_reg_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a000, reg_names, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_can_4000a000, reg_names, 1, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a000_P_reg_names_LEN 2 +#define DT_N_S_soc_S_can_4000a000_P_reg_names_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_can_4000a000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_wakeup_source 0 +#define DT_N_S_soc_S_can_4000a000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_can_4000a000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_can_4000a000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fdcan2_rx_pb5 @@ -16613,6 +17321,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_FULL_NAME "fdcan2_rx_pb5" +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_FULL_NAME_UNQUOTED fdcan2_rx_pb5 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_FULL_NAME_TOKEN fdcan2_rx_pb5 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_FULL_NAME_UPPER_TOKEN FDCAN2_RX_PB5 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -16638,16 +17349,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_ORD 115 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_ORD_STR_SORTABLE 00115 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_ORD 118 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_ORD_STR_SORTABLE 00118 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_SUPPORTS_ORDS \ - 117, /* /soc/can@4000a400 */ + 120, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_EXISTS 1 @@ -16665,20 +17376,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_pinmux 681 #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate "low-speed" @@ -16687,16 +17384,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fdcan2_tx_pb13 @@ -16712,6 +17421,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_FULL_NAME "fdcan2_tx_pb13" +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_FULL_NAME_UNQUOTED fdcan2_tx_pb13 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_FULL_NAME_TOKEN fdcan2_tx_pb13 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_FULL_NAME_UPPER_TOKEN FDCAN2_TX_PB13 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -16737,16 +17449,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_ORD 116 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_ORD_STR_SORTABLE 00116 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_ORD 119 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_ORD_STR_SORTABLE 00119 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_SUPPORTS_ORDS \ - 117, /* /soc/can@4000a400 */ + 120, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_EXISTS 1 @@ -16764,20 +17476,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_pinmux 937 #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate "low-speed" @@ -16786,16 +17484,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13_P_output_high_EXISTS 1 /* * Devicetree node: /soc/can@4000a400 @@ -16814,6 +17524,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_can_4000a400_FULL_NAME "can@4000a400" +#define DT_N_S_soc_S_can_4000a400_FULL_NAME_UNQUOTED can@4000a400 +#define DT_N_S_soc_S_can_4000a400_FULL_NAME_TOKEN can_4000a400 +#define DT_N_S_soc_S_can_4000a400_FULL_NAME_UPPER_TOKEN CAN_4000A400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_can_4000a400_PARENT DT_N_S_soc @@ -16839,16 +17552,16 @@ #define DT_N_S_soc_S_can_4000a400_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_can_4000a400_ORD 117 -#define DT_N_S_soc_S_can_4000a400_ORD_STR_SORTABLE 00117 +#define DT_N_S_soc_S_can_4000a400_ORD 120 +#define DT_N_S_soc_S_can_4000a400_ORD_STR_SORTABLE 00120 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_can_4000a400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 115, /* /soc/pin-controller@58020000/fdcan2_rx_pb5 */ \ - 116, /* /soc/pin-controller@58020000/fdcan2_tx_pb13 */ + 4, \ + 5, \ + 9, \ + 118, \ + 119, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_can_4000a400_SUPPORTS_ORDS /* nothing */ @@ -16861,11 +17574,11 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_can_4000a400_REG_NUM 2 #define DT_N_S_soc_S_can_4000a400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_REG_IDX_0_VAL_ADDRESS 1073783808 /* 0x4000a400 */ -#define DT_N_S_soc_S_can_4000a400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_can_4000a400_REG_IDX_0_VAL_ADDRESS 1073783808 +#define DT_N_S_soc_S_can_4000a400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_can_4000a400_REG_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_REG_IDX_1_VAL_ADDRESS 1073785856 /* 0x4000ac00 */ -#define DT_N_S_soc_S_can_4000a400_REG_IDX_1_VAL_SIZE 1696 /* 0x6a0 */ +#define DT_N_S_soc_S_can_4000a400_REG_IDX_1_VAL_ADDRESS 1073785856 +#define DT_N_S_soc_S_can_4000a400_REG_IDX_1_VAL_SIZE 1696 #define DT_N_S_soc_S_can_4000a400_REG_NAME_m_can_EXISTS 1 #define DT_N_S_soc_S_can_4000a400_REG_NAME_m_can_VAL_ADDRESS DT_N_S_soc_S_can_4000a400_REG_IDX_0_VAL_ADDRESS #define DT_N_S_soc_S_can_4000a400_REG_NAME_m_can_VAL_SIZE DT_N_S_soc_S_can_4000a400_REG_IDX_0_VAL_SIZE @@ -16930,99 +17643,68 @@ #define DT_N_S_soc_S_can_4000a400_PINCTRL_NAME_default_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5 /* Generic property macros: */ -#define DT_N_S_soc_S_can_4000a400_P_wakeup_source 0 -#define DT_N_S_soc_S_can_4000a400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_can_4000a400_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_status "okay" -#define DT_N_S_soc_S_can_4000a400_P_status_STRING_UNQUOTED okay -#define DT_N_S_soc_S_can_4000a400_P_status_STRING_TOKEN okay -#define DT_N_S_soc_S_can_4000a400_P_status_STRING_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_can_4000a400_P_status_IDX_0 "okay" -#define DT_N_S_soc_S_can_4000a400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_can_4000a400_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_can_4000a400_P_status_ENUM_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_can_4000a400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a400, status, 0) -#define DT_N_S_soc_S_can_4000a400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a400, status, 0) -#define DT_N_S_soc_S_can_4000a400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a400, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a400_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a400, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a400_P_status_LEN 1 -#define DT_N_S_soc_S_can_4000a400_P_status_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_compatible {"st,stm32h7-fdcan"} -#define DT_N_S_soc_S_can_4000a400_P_compatible_IDX_0 "st,stm32h7-fdcan" -#define DT_N_S_soc_S_can_4000a400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-fdcan -#define DT_N_S_soc_S_can_4000a400_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_fdcan -#define DT_N_S_soc_S_can_4000a400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_FDCAN -#define DT_N_S_soc_S_can_4000a400_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a400, compatible, 0) -#define DT_N_S_soc_S_can_4000a400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a400, compatible, 0) -#define DT_N_S_soc_S_can_4000a400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a400, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a400, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a400_P_compatible_LEN 1 -#define DT_N_S_soc_S_can_4000a400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_reg {1073783808 /* 0x4000a400 */, 1024 /* 0x400 */, 1073785856 /* 0x4000ac00 */, 1696 /* 0x6a0 */} -#define DT_N_S_soc_S_can_4000a400_P_reg_IDX_0 1073783808 +#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_0_VAL_bus 236 +#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_0_VAL_bits 256 +#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_1_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_1_VAL_bus 9 +#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_1_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_1_VAL_bits 97360 +#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_1_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a400, clocks, 0) \ + fn(DT_N_S_soc_S_can_4000a400, clocks, 1) +#define DT_N_S_soc_S_can_4000a400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a400, clocks, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_can_4000a400, clocks, 1) +#define DT_N_S_soc_S_can_4000a400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a400, clocks, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_can_4000a400, clocks, 1, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a400, clocks, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_can_4000a400, clocks, 1, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a400_P_clocks_LEN 2 +#define DT_N_S_soc_S_can_4000a400_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_reg {1073783808, 1024, 1073785856, 1696} #define DT_N_S_soc_S_can_4000a400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_can_4000a400_P_reg_IDX_0 1073783808 #define DT_N_S_soc_S_can_4000a400_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_reg_IDX_2 1073785856 +#define DT_N_S_soc_S_can_4000a400_P_reg_IDX_1 1024 #define DT_N_S_soc_S_can_4000a400_P_reg_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_reg_IDX_3 1696 +#define DT_N_S_soc_S_can_4000a400_P_reg_IDX_2 1073785856 #define DT_N_S_soc_S_can_4000a400_P_reg_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_reg_IDX_3 1696 #define DT_N_S_soc_S_can_4000a400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_reg_names {"m_can", "message_ram"} -#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_0 "m_can" -#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_0_STRING_UNQUOTED m_can -#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_0_STRING_TOKEN m_can -#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_0_STRING_UPPER_TOKEN M_CAN -#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_1 "message_ram" -#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_1_STRING_UNQUOTED message_ram -#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_1_STRING_TOKEN message_ram -#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_1_STRING_UPPER_TOKEN MESSAGE_RAM -#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_reg_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a400, reg_names, 0) \ - fn(DT_N_S_soc_S_can_4000a400, reg_names, 1) -#define DT_N_S_soc_S_can_4000a400_P_reg_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a400, reg_names, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_can_4000a400, reg_names, 1) -#define DT_N_S_soc_S_can_4000a400_P_reg_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a400, reg_names, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_can_4000a400, reg_names, 1, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a400_P_reg_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a400, reg_names, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_can_4000a400, reg_names, 1, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a400_P_reg_names_LEN 2 -#define DT_N_S_soc_S_can_4000a400_P_reg_names_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_interrupts {20 /* 0x14 */, 0 /* 0x0 */, 22 /* 0x16 */, 0 /* 0x0 */, 63 /* 0x3f */, 0 /* 0x0 */} -#define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_0 20 +#define DT_N_S_soc_S_can_4000a400_P_interrupts {20, 0, 22, 0, 63, 0} #define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_0 20 #define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_2 22 +#define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_3 0 +#define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_2 22 #define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_4 63 +#define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_3 0 #define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_5 0 +#define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_4 63 #define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_5_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_interrupts_IDX_5 0 #define DT_N_S_soc_S_can_4000a400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_can_4000a400_P_interrupt_names {"int0", "int1", "calib"} +#define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_0 "int0" #define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_0_STRING_UNQUOTED int0 #define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_0_STRING_TOKEN int0 #define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN INT0 -#define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_1 "int1" #define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_1_STRING_UNQUOTED int1 #define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_1_STRING_TOKEN int1 #define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_1_STRING_UPPER_TOKEN INT1 -#define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_2_EXISTS 1 #define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_2 "calib" #define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_2_STRING_UNQUOTED calib #define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_2_STRING_TOKEN calib #define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_2_STRING_UPPER_TOKEN CALIB -#define DT_N_S_soc_S_can_4000a400_P_interrupt_names_IDX_2_EXISTS 1 #define DT_N_S_soc_S_can_4000a400_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a400, interrupt_names, 0) \ fn(DT_N_S_soc_S_can_4000a400, interrupt_names, 1) \ fn(DT_N_S_soc_S_can_4000a400, interrupt_names, 2) @@ -17037,47 +17719,23 @@ fn(DT_N_S_soc_S_can_4000a400, interrupt_names, 2, __VA_ARGS__) #define DT_N_S_soc_S_can_4000a400_P_interrupt_names_LEN 3 #define DT_N_S_soc_S_can_4000a400_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_0_VAL_bus 236 -#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_0_VAL_bits 256 -#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_1_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_1_VAL_bus 9 -#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_1_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_1_VAL_bits 97360 -#define DT_N_S_soc_S_can_4000a400_P_clocks_IDX_1_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a400, clocks, 0) \ - fn(DT_N_S_soc_S_can_4000a400, clocks, 1) -#define DT_N_S_soc_S_can_4000a400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a400, clocks, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_can_4000a400, clocks, 1) -#define DT_N_S_soc_S_can_4000a400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a400, clocks, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_can_4000a400, clocks, 1, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a400, clocks, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_can_4000a400, clocks, 1, __VA_ARGS__) -#define DT_N_S_soc_S_can_4000a400_P_clocks_LEN 2 -#define DT_N_S_soc_S_can_4000a400_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_can_4000a400_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg {848 /* 0x350 */, 28 /* 0x1c */, 8 /* 0x8 */, 3 /* 0x3 */, 3 /* 0x3 */, 0 /* 0x0 */, 3 /* 0x3 */, 3 /* 0x3 */} -#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_0 848 +#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg {848, 28, 8, 3, 3, 0, 3, 3} #define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_1 28 +#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_0 848 #define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_2 8 +#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_1 28 #define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_3 3 +#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_2 8 #define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_4 3 +#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_3 3 #define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_5 0 +#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_4 3 #define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_6 3 +#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_5 0 #define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_7 3 +#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_6 3 #define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_7_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_IDX_7 3 #define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a400, bosch_mram_cfg, 0) \ fn(DT_N_S_soc_S_can_4000a400, bosch_mram_cfg, 1) \ fn(DT_N_S_soc_S_can_4000a400, bosch_mram_cfg, 2) \ @@ -17112,6 +17770,59 @@ fn(DT_N_S_soc_S_can_4000a400, bosch_mram_cfg, 7, __VA_ARGS__) #define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_LEN 8 #define DT_N_S_soc_S_can_4000a400_P_bosch_mram_cfg_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_status "okay" +#define DT_N_S_soc_S_can_4000a400_P_status_STRING_UNQUOTED okay +#define DT_N_S_soc_S_can_4000a400_P_status_STRING_TOKEN okay +#define DT_N_S_soc_S_can_4000a400_P_status_STRING_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_can_4000a400_P_status_IDX_0 "okay" +#define DT_N_S_soc_S_can_4000a400_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_can_4000a400_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a400, status, 0) +#define DT_N_S_soc_S_can_4000a400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a400, status, 0) +#define DT_N_S_soc_S_can_4000a400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a400, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a400_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a400, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a400_P_status_LEN 1 +#define DT_N_S_soc_S_can_4000a400_P_status_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_compatible {"st,stm32h7-fdcan"} +#define DT_N_S_soc_S_can_4000a400_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_compatible_IDX_0 "st,stm32h7-fdcan" +#define DT_N_S_soc_S_can_4000a400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-fdcan +#define DT_N_S_soc_S_can_4000a400_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_fdcan +#define DT_N_S_soc_S_can_4000a400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_FDCAN +#define DT_N_S_soc_S_can_4000a400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a400, compatible, 0) +#define DT_N_S_soc_S_can_4000a400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a400, compatible, 0) +#define DT_N_S_soc_S_can_4000a400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a400, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a400, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a400_P_compatible_LEN 1 +#define DT_N_S_soc_S_can_4000a400_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_reg_names {"m_can", "message_ram"} +#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_0 "m_can" +#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_0_STRING_UNQUOTED m_can +#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_0_STRING_TOKEN m_can +#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_0_STRING_UPPER_TOKEN M_CAN +#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_1 "message_ram" +#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_1_STRING_UNQUOTED message_ram +#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_1_STRING_TOKEN message_ram +#define DT_N_S_soc_S_can_4000a400_P_reg_names_IDX_1_STRING_UPPER_TOKEN MESSAGE_RAM +#define DT_N_S_soc_S_can_4000a400_P_reg_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a400, reg_names, 0) \ + fn(DT_N_S_soc_S_can_4000a400, reg_names, 1) +#define DT_N_S_soc_S_can_4000a400_P_reg_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a400, reg_names, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_can_4000a400, reg_names, 1) +#define DT_N_S_soc_S_can_4000a400_P_reg_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a400, reg_names, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_can_4000a400, reg_names, 1, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a400_P_reg_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_can_4000a400, reg_names, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_can_4000a400, reg_names, 1, __VA_ARGS__) +#define DT_N_S_soc_S_can_4000a400_P_reg_names_LEN 2 +#define DT_N_S_soc_S_can_4000a400_P_reg_names_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_can_4000a400_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_wakeup_source 0 +#define DT_N_S_soc_S_can_4000a400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_can_4000a400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_can_4000a400_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_can_4000a400_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13 #define DT_N_S_soc_S_can_4000a400_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13 #define DT_N_S_soc_S_can_4000a400_P_pinctrl_0_IDX_0_EXISTS 1 @@ -17129,11 +17840,11 @@ #define DT_N_S_soc_S_can_4000a400_P_pinctrl_0_LEN 2 #define DT_N_S_soc_S_can_4000a400_P_pinctrl_0_EXISTS 1 #define DT_N_S_soc_S_can_4000a400_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_can_4000a400_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_can_4000a400_P_pinctrl_names_IDX_0 "default" #define DT_N_S_soc_S_can_4000a400_P_pinctrl_names_IDX_0_STRING_UNQUOTED default #define DT_N_S_soc_S_can_4000a400_P_pinctrl_names_IDX_0_STRING_TOKEN default #define DT_N_S_soc_S_can_4000a400_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_can_4000a400_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_can_4000a400_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_can_4000a400, pinctrl_names, 0) #define DT_N_S_soc_S_can_4000a400_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_can_4000a400, pinctrl_names, 0) #define DT_N_S_soc_S_can_4000a400_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_can_4000a400, pinctrl_names, 0, __VA_ARGS__) @@ -17155,6 +17866,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_FULL_NAME "dac1_out1_pa4" +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_FULL_NAME_UNQUOTED dac1_out1_pa4 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_FULL_NAME_TOKEN dac1_out1_pa4 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_FULL_NAME_UPPER_TOKEN DAC1_OUT1_PA4 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -17180,16 +17894,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_ORD 118 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_ORD_STR_SORTABLE 00118 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_ORD 121 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_ORD_STR_SORTABLE 00121 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_SUPPORTS_ORDS \ - 120, /* /soc/dac@40007400 */ + 123, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_EXISTS 1 @@ -17207,20 +17921,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_pinmux 144 #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate "low-speed" @@ -17229,16 +17929,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/dac1_out2_pa5 @@ -17254,6 +17966,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_FULL_NAME "dac1_out2_pa5" +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_FULL_NAME_UNQUOTED dac1_out2_pa5 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_FULL_NAME_TOKEN dac1_out2_pa5 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_FULL_NAME_UPPER_TOKEN DAC1_OUT2_PA5 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -17279,16 +17994,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_ORD 119 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_ORD_STR_SORTABLE 00119 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_ORD 122 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_ORD_STR_SORTABLE 00122 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_SUPPORTS_ORDS \ - 120, /* /soc/dac@40007400 */ + 123, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_EXISTS 1 @@ -17306,20 +18021,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_pinmux 176 #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate "low-speed" @@ -17328,16 +18029,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5_P_output_high_EXISTS 1 /* * Devicetree node: /soc/dac@40007400 @@ -17356,6 +18069,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_dac_40007400_FULL_NAME "dac@40007400" +#define DT_N_S_soc_S_dac_40007400_FULL_NAME_UNQUOTED dac@40007400 +#define DT_N_S_soc_S_dac_40007400_FULL_NAME_TOKEN dac_40007400 +#define DT_N_S_soc_S_dac_40007400_FULL_NAME_UPPER_TOKEN DAC_40007400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_dac_40007400_PARENT DT_N_S_soc @@ -17381,15 +18097,15 @@ #define DT_N_S_soc_S_dac_40007400_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_dac_40007400_ORD 120 -#define DT_N_S_soc_S_dac_40007400_ORD_STR_SORTABLE 00120 +#define DT_N_S_soc_S_dac_40007400_ORD 123 +#define DT_N_S_soc_S_dac_40007400_ORD_STR_SORTABLE 00123 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_dac_40007400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 9, /* /soc/rcc@58024400 */ \ - 118, /* /soc/pin-controller@58020000/dac1_out1_pa4 */ \ - 119, /* /soc/pin-controller@58020000/dac1_out2_pa5 */ + 4, \ + 9, \ + 121, \ + 122, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_dac_40007400_SUPPORTS_ORDS /* nothing */ @@ -17402,8 +18118,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_dac_40007400_REG_NUM 1 #define DT_N_S_soc_S_dac_40007400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dac_40007400_REG_IDX_0_VAL_ADDRESS 1073771520 /* 0x40007400 */ -#define DT_N_S_soc_S_dac_40007400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_dac_40007400_REG_IDX_0_VAL_ADDRESS 1073771520 +#define DT_N_S_soc_S_dac_40007400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_dac_40007400_RANGES_NUM 0 #define DT_N_S_soc_S_dac_40007400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_dac_40007400_IRQ_NUM 0 @@ -17426,20 +18142,32 @@ #define DT_N_S_soc_S_dac_40007400_PINCTRL_NAME_default_IDX_1_PH DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5 /* Generic property macros: */ -#define DT_N_S_soc_S_dac_40007400_P_wakeup_source 0 -#define DT_N_S_soc_S_dac_40007400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_dac_40007400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_dac_40007400_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_dac_40007400_P_reg {1073771520, 1024} +#define DT_N_S_soc_S_dac_40007400_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dac_40007400_P_reg_IDX_0 1073771520 +#define DT_N_S_soc_S_dac_40007400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_dac_40007400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_dac_40007400_P_reg_EXISTS 1 +#define DT_N_S_soc_S_dac_40007400_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dac_40007400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_dac_40007400_P_clocks_IDX_0_VAL_bus 232 +#define DT_N_S_soc_S_dac_40007400_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_dac_40007400_P_clocks_IDX_0_VAL_bits 536870912 +#define DT_N_S_soc_S_dac_40007400_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_dac_40007400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dac_40007400, clocks, 0) +#define DT_N_S_soc_S_dac_40007400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dac_40007400, clocks, 0) +#define DT_N_S_soc_S_dac_40007400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dac_40007400, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_dac_40007400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dac_40007400, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_dac_40007400_P_clocks_LEN 1 +#define DT_N_S_soc_S_dac_40007400_P_clocks_EXISTS 1 #define DT_N_S_soc_S_dac_40007400_P_status "okay" #define DT_N_S_soc_S_dac_40007400_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_dac_40007400_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_dac_40007400_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_dac_40007400_P_status_IDX_0 "okay" #define DT_N_S_soc_S_dac_40007400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dac_40007400_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_dac_40007400_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_dac_40007400_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_dac_40007400_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_dac_40007400_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_dac_40007400_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_dac_40007400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dac_40007400, status, 0) #define DT_N_S_soc_S_dac_40007400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dac_40007400, status, 0) #define DT_N_S_soc_S_dac_40007400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dac_40007400, status, 0, __VA_ARGS__) @@ -17447,37 +18175,23 @@ #define DT_N_S_soc_S_dac_40007400_P_status_LEN 1 #define DT_N_S_soc_S_dac_40007400_P_status_EXISTS 1 #define DT_N_S_soc_S_dac_40007400_P_compatible {"st,stm32-dac"} +#define DT_N_S_soc_S_dac_40007400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dac_40007400_P_compatible_IDX_0 "st,stm32-dac" #define DT_N_S_soc_S_dac_40007400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-dac #define DT_N_S_soc_S_dac_40007400_P_compatible_IDX_0_STRING_TOKEN st_stm32_dac #define DT_N_S_soc_S_dac_40007400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_DAC -#define DT_N_S_soc_S_dac_40007400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dac_40007400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dac_40007400, compatible, 0) #define DT_N_S_soc_S_dac_40007400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dac_40007400, compatible, 0) #define DT_N_S_soc_S_dac_40007400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dac_40007400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_dac_40007400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dac_40007400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_dac_40007400_P_compatible_LEN 1 #define DT_N_S_soc_S_dac_40007400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_dac_40007400_P_reg {1073771520 /* 0x40007400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_dac_40007400_P_reg_IDX_0 1073771520 -#define DT_N_S_soc_S_dac_40007400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dac_40007400_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_dac_40007400_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_dac_40007400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_dac_40007400_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dac_40007400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_dac_40007400_P_clocks_IDX_0_VAL_bus 232 -#define DT_N_S_soc_S_dac_40007400_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_dac_40007400_P_clocks_IDX_0_VAL_bits 536870912 -#define DT_N_S_soc_S_dac_40007400_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_dac_40007400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dac_40007400, clocks, 0) -#define DT_N_S_soc_S_dac_40007400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dac_40007400, clocks, 0) -#define DT_N_S_soc_S_dac_40007400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dac_40007400, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_dac_40007400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dac_40007400, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_dac_40007400_P_clocks_LEN 1 -#define DT_N_S_soc_S_dac_40007400_P_clocks_EXISTS 1 #define DT_N_S_soc_S_dac_40007400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_dac_40007400_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_dac_40007400_P_wakeup_source 0 +#define DT_N_S_soc_S_dac_40007400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_dac_40007400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_dac_40007400_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_dac_40007400_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4 #define DT_N_S_soc_S_dac_40007400_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4 #define DT_N_S_soc_S_dac_40007400_P_pinctrl_0_IDX_0_EXISTS 1 @@ -17495,11 +18209,11 @@ #define DT_N_S_soc_S_dac_40007400_P_pinctrl_0_LEN 2 #define DT_N_S_soc_S_dac_40007400_P_pinctrl_0_EXISTS 1 #define DT_N_S_soc_S_dac_40007400_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_dac_40007400_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dac_40007400_P_pinctrl_names_IDX_0 "default" #define DT_N_S_soc_S_dac_40007400_P_pinctrl_names_IDX_0_STRING_UNQUOTED default #define DT_N_S_soc_S_dac_40007400_P_pinctrl_names_IDX_0_STRING_TOKEN default #define DT_N_S_soc_S_dac_40007400_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_dac_40007400_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dac_40007400_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dac_40007400, pinctrl_names, 0) #define DT_N_S_soc_S_dac_40007400_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dac_40007400, pinctrl_names, 0) #define DT_N_S_soc_S_dac_40007400_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dac_40007400, pinctrl_names, 0, __VA_ARGS__) @@ -17524,6 +18238,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_display_controller_50001000_FULL_NAME "display-controller@50001000" +#define DT_N_S_soc_S_display_controller_50001000_FULL_NAME_UNQUOTED display-controller@50001000 +#define DT_N_S_soc_S_display_controller_50001000_FULL_NAME_TOKEN display_controller_50001000 +#define DT_N_S_soc_S_display_controller_50001000_FULL_NAME_UPPER_TOKEN DISPLAY_CONTROLLER_50001000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_display_controller_50001000_PARENT DT_N_S_soc @@ -17549,14 +18266,15 @@ #define DT_N_S_soc_S_display_controller_50001000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_display_controller_50001000_ORD 121 -#define DT_N_S_soc_S_display_controller_50001000_ORD_STR_SORTABLE 00121 +#define DT_N_S_soc_S_display_controller_50001000_ORD 124 +#define DT_N_S_soc_S_display_controller_50001000_ORD_STR_SORTABLE 00124 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_display_controller_50001000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_display_controller_50001000_SUPPORTS_ORDS /* nothing */ @@ -17569,8 +18287,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_display_controller_50001000_REG_NUM 1 #define DT_N_S_soc_S_display_controller_50001000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_display_controller_50001000_REG_IDX_0_VAL_ADDRESS 1342181376 /* 0x50001000 */ -#define DT_N_S_soc_S_display_controller_50001000_REG_IDX_0_VAL_SIZE 512 /* 0x200 */ +#define DT_N_S_soc_S_display_controller_50001000_REG_IDX_0_VAL_ADDRESS 1342181376 +#define DT_N_S_soc_S_display_controller_50001000_REG_IDX_0_VAL_SIZE 512 #define DT_N_S_soc_S_display_controller_50001000_RANGES_NUM 0 #define DT_N_S_soc_S_display_controller_50001000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_display_controller_50001000_IRQ_NUM 2 @@ -17610,20 +18328,46 @@ #define DT_N_S_soc_S_display_controller_50001000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_display_controller_50001000_P_wakeup_source 0 -#define DT_N_S_soc_S_display_controller_50001000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_display_controller_50001000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_display_controller_50001000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_display_controller_50001000_P_clocks_IDX_0_VAL_bus 228 +#define DT_N_S_soc_S_display_controller_50001000_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_clocks_IDX_0_VAL_bits 8 +#define DT_N_S_soc_S_display_controller_50001000_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_display_controller_50001000, clocks, 0) +#define DT_N_S_soc_S_display_controller_50001000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_display_controller_50001000, clocks, 0) +#define DT_N_S_soc_S_display_controller_50001000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_display_controller_50001000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_display_controller_50001000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_display_controller_50001000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_display_controller_50001000_P_clocks_LEN 1 +#define DT_N_S_soc_S_display_controller_50001000_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_display_controller_50001000_P_resets_IDX_0_VAL_id 4484 +#define DT_N_S_soc_S_display_controller_50001000_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_display_controller_50001000, resets, 0) +#define DT_N_S_soc_S_display_controller_50001000_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_display_controller_50001000, resets, 0) +#define DT_N_S_soc_S_display_controller_50001000_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_display_controller_50001000, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_display_controller_50001000_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_display_controller_50001000, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_display_controller_50001000_P_resets_LEN 1 +#define DT_N_S_soc_S_display_controller_50001000_P_resets_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_interrupts {88, 0, 89, 0} +#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_0 88 +#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_2 89 +#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_3 0 +#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_display_controller_50001000_P_status "disabled" #define DT_N_S_soc_S_display_controller_50001000_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_display_controller_50001000_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_display_controller_50001000_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_display_controller_50001000_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_display_controller_50001000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_display_controller_50001000_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_display_controller_50001000_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_display_controller_50001000_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_display_controller_50001000_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_display_controller_50001000_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_display_controller_50001000_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_display_controller_50001000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_display_controller_50001000, status, 0) #define DT_N_S_soc_S_display_controller_50001000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_display_controller_50001000, status, 0) #define DT_N_S_soc_S_display_controller_50001000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_display_controller_50001000, status, 0, __VA_ARGS__) @@ -17631,44 +18375,34 @@ #define DT_N_S_soc_S_display_controller_50001000_P_status_LEN 1 #define DT_N_S_soc_S_display_controller_50001000_P_status_EXISTS 1 #define DT_N_S_soc_S_display_controller_50001000_P_compatible {"st,stm32-ltdc"} +#define DT_N_S_soc_S_display_controller_50001000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_display_controller_50001000_P_compatible_IDX_0 "st,stm32-ltdc" #define DT_N_S_soc_S_display_controller_50001000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-ltdc #define DT_N_S_soc_S_display_controller_50001000_P_compatible_IDX_0_STRING_TOKEN st_stm32_ltdc #define DT_N_S_soc_S_display_controller_50001000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_LTDC -#define DT_N_S_soc_S_display_controller_50001000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_display_controller_50001000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_display_controller_50001000, compatible, 0) #define DT_N_S_soc_S_display_controller_50001000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_display_controller_50001000, compatible, 0) #define DT_N_S_soc_S_display_controller_50001000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_display_controller_50001000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_display_controller_50001000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_display_controller_50001000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_display_controller_50001000_P_compatible_LEN 1 #define DT_N_S_soc_S_display_controller_50001000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_display_controller_50001000_P_reg {1342181376 /* 0x50001000 */, 512 /* 0x200 */} -#define DT_N_S_soc_S_display_controller_50001000_P_reg_IDX_0 1342181376 +#define DT_N_S_soc_S_display_controller_50001000_P_reg {1342181376, 512} #define DT_N_S_soc_S_display_controller_50001000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_display_controller_50001000_P_reg_IDX_1 512 +#define DT_N_S_soc_S_display_controller_50001000_P_reg_IDX_0 1342181376 #define DT_N_S_soc_S_display_controller_50001000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_reg_IDX_1 512 #define DT_N_S_soc_S_display_controller_50001000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_display_controller_50001000_P_interrupts {88 /* 0x58 */, 0 /* 0x0 */, 89 /* 0x59 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_0 88 -#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_2 89 -#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_3 0 -#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_display_controller_50001000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names {"ltdc", "ltdc_er"} +#define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_IDX_0 "ltdc" #define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_IDX_0_STRING_UNQUOTED ltdc #define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_IDX_0_STRING_TOKEN ltdc #define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN LTDC -#define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_IDX_1 "ltdc_er" #define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_IDX_1_STRING_UNQUOTED ltdc_er #define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_IDX_1_STRING_TOKEN ltdc_er #define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_IDX_1_STRING_UPPER_TOKEN LTDC_ER -#define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_display_controller_50001000, interrupt_names, 0) \ fn(DT_N_S_soc_S_display_controller_50001000, interrupt_names, 1) #define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_display_controller_50001000, interrupt_names, 0) DT_DEBRACKET_INTERNAL sep \ @@ -17679,20 +18413,12 @@ fn(DT_N_S_soc_S_display_controller_50001000, interrupt_names, 1, __VA_ARGS__) #define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_LEN 2 #define DT_N_S_soc_S_display_controller_50001000_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_display_controller_50001000_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_display_controller_50001000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_display_controller_50001000_P_clocks_IDX_0_VAL_bus 228 -#define DT_N_S_soc_S_display_controller_50001000_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_display_controller_50001000_P_clocks_IDX_0_VAL_bits 8 -#define DT_N_S_soc_S_display_controller_50001000_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_display_controller_50001000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_display_controller_50001000, clocks, 0) -#define DT_N_S_soc_S_display_controller_50001000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_display_controller_50001000, clocks, 0) -#define DT_N_S_soc_S_display_controller_50001000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_display_controller_50001000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_display_controller_50001000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_display_controller_50001000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_display_controller_50001000_P_clocks_LEN 1 -#define DT_N_S_soc_S_display_controller_50001000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_display_controller_50001000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_display_controller_50001000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_wakeup_source 0 +#define DT_N_S_soc_S_display_controller_50001000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_display_controller_50001000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_display_controller_50001000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/dma@40020400 @@ -17711,6 +18437,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_dma_40020400_FULL_NAME "dma@40020400" +#define DT_N_S_soc_S_dma_40020400_FULL_NAME_UNQUOTED dma@40020400 +#define DT_N_S_soc_S_dma_40020400_FULL_NAME_TOKEN dma_40020400 +#define DT_N_S_soc_S_dma_40020400_FULL_NAME_UPPER_TOKEN DMA_40020400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_dma_40020400_PARENT DT_N_S_soc @@ -17736,14 +18465,14 @@ #define DT_N_S_soc_S_dma_40020400_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_dma_40020400_ORD 122 -#define DT_N_S_soc_S_dma_40020400_ORD_STR_SORTABLE 00122 +#define DT_N_S_soc_S_dma_40020400_ORD 125 +#define DT_N_S_soc_S_dma_40020400_ORD_STR_SORTABLE 00125 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_dma_40020400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_dma_40020400_SUPPORTS_ORDS /* nothing */ @@ -17756,8 +18485,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_dma_40020400_REG_NUM 1 #define DT_N_S_soc_S_dma_40020400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_REG_IDX_0_VAL_ADDRESS 1073873920 /* 0x40020400 */ -#define DT_N_S_soc_S_dma_40020400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_dma_40020400_REG_IDX_0_VAL_ADDRESS 1073873920 +#define DT_N_S_soc_S_dma_40020400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_dma_40020400_RANGES_NUM 0 #define DT_N_S_soc_S_dma_40020400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_dma_40020400_IRQ_NUM 8 @@ -17829,20 +18558,60 @@ #define DT_N_S_soc_S_dma_40020400_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_dma_40020400_P_wakeup_source 0 -#define DT_N_S_soc_S_dma_40020400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_dma_40020400_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_reg {1073873920, 1024} +#define DT_N_S_soc_S_dma_40020400_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_reg_IDX_0 1073873920 +#define DT_N_S_soc_S_dma_40020400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_dma_40020400_P_reg_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts {56, 0, 57, 0, 58, 0, 59, 0, 60, 0, 68, 0, 69, 0, 70, 0} +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_0 56 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_2 57 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_3 0 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_4_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_4 58 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_5_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_5 0 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_6_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_6 59 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_7_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_7 0 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_8_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_8 60 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_9_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_9 0 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_10_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_10 68 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_11_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_11 0 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_12_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_12 69 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_13_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_13 0 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_14_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_14 70 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_15_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_15 0 +#define DT_N_S_soc_S_dma_40020400_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_st_mem2mem 1 +#define DT_N_S_soc_S_dma_40020400_P_st_mem2mem_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_dma_offset 8 +#define DT_N_S_soc_S_dma_40020400_P_dma_offset_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_dma_requests 8 +#define DT_N_S_soc_S_dma_40020400_P_dma_requests_EXISTS 1 #define DT_N_S_soc_S_dma_40020400_P_status "disabled" #define DT_N_S_soc_S_dma_40020400_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_dma_40020400_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_dma_40020400_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_dma_40020400_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_dma_40020400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_dma_40020400_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_dma_40020400_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_dma_40020400_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_dma_40020400_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_dma_40020400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dma_40020400, status, 0) #define DT_N_S_soc_S_dma_40020400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dma_40020400, status, 0) #define DT_N_S_soc_S_dma_40020400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dma_40020400, status, 0, __VA_ARGS__) @@ -17850,57 +18619,17 @@ #define DT_N_S_soc_S_dma_40020400_P_status_LEN 1 #define DT_N_S_soc_S_dma_40020400_P_status_EXISTS 1 #define DT_N_S_soc_S_dma_40020400_P_compatible {"st,stm32-dma-v1"} +#define DT_N_S_soc_S_dma_40020400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dma_40020400_P_compatible_IDX_0 "st,stm32-dma-v1" #define DT_N_S_soc_S_dma_40020400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-dma-v1 #define DT_N_S_soc_S_dma_40020400_P_compatible_IDX_0_STRING_TOKEN st_stm32_dma_v1 #define DT_N_S_soc_S_dma_40020400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_DMA_V1 -#define DT_N_S_soc_S_dma_40020400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dma_40020400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dma_40020400, compatible, 0) #define DT_N_S_soc_S_dma_40020400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dma_40020400, compatible, 0) #define DT_N_S_soc_S_dma_40020400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dma_40020400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_dma_40020400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dma_40020400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_dma_40020400_P_compatible_LEN 1 #define DT_N_S_soc_S_dma_40020400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_reg {1073873920 /* 0x40020400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_dma_40020400_P_reg_IDX_0 1073873920 -#define DT_N_S_soc_S_dma_40020400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_dma_40020400_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts {56 /* 0x38 */, 0 /* 0x0 */, 57 /* 0x39 */, 0 /* 0x0 */, 58 /* 0x3a */, 0 /* 0x0 */, 59 /* 0x3b */, 0 /* 0x0 */, 60 /* 0x3c */, 0 /* 0x0 */, 68 /* 0x44 */, 0 /* 0x0 */, 69 /* 0x45 */, 0 /* 0x0 */, 70 /* 0x46 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_0 56 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_2 57 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_3 0 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_4 58 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_5 0 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_6 59 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_7 0 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_7_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_8 60 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_8_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_9 0 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_9_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_10 68 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_10_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_11 0 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_11_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_12 69 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_12_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_13 0 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_13_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_14 70 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_14_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_15 0 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_IDX_15_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_dma_40020400_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dma_40020400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_dma_40020400_P_clocks_IDX_0_VAL_bus 216 @@ -17915,12 +18644,10 @@ #define DT_N_S_soc_S_dma_40020400_P_clocks_EXISTS 1 #define DT_N_S_soc_S_dma_40020400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_dma_40020400_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_dma_requests 8 -#define DT_N_S_soc_S_dma_40020400_P_dma_requests_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_st_mem2mem 1 -#define DT_N_S_soc_S_dma_40020400_P_st_mem2mem_EXISTS 1 -#define DT_N_S_soc_S_dma_40020400_P_dma_offset 8 -#define DT_N_S_soc_S_dma_40020400_P_dma_offset_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_wakeup_source 0 +#define DT_N_S_soc_S_dma_40020400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_dma_40020400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_dma_40020400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/dmamux@58025800 @@ -17939,6 +18666,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_dmamux_58025800_FULL_NAME "dmamux@58025800" +#define DT_N_S_soc_S_dmamux_58025800_FULL_NAME_UNQUOTED dmamux@58025800 +#define DT_N_S_soc_S_dmamux_58025800_FULL_NAME_TOKEN dmamux_58025800 +#define DT_N_S_soc_S_dmamux_58025800_FULL_NAME_UPPER_TOKEN DMAMUX_58025800 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_dmamux_58025800_PARENT DT_N_S_soc @@ -17964,14 +18694,14 @@ #define DT_N_S_soc_S_dmamux_58025800_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_dmamux_58025800_ORD 123 -#define DT_N_S_soc_S_dmamux_58025800_ORD_STR_SORTABLE 00123 +#define DT_N_S_soc_S_dmamux_58025800_ORD 126 +#define DT_N_S_soc_S_dmamux_58025800_ORD_STR_SORTABLE 00126 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_dmamux_58025800_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_dmamux_58025800_SUPPORTS_ORDS /* nothing */ @@ -17984,8 +18714,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_dmamux_58025800_REG_NUM 1 #define DT_N_S_soc_S_dmamux_58025800_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dmamux_58025800_REG_IDX_0_VAL_ADDRESS 1476548608 /* 0x58025800 */ -#define DT_N_S_soc_S_dmamux_58025800_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_dmamux_58025800_REG_IDX_0_VAL_ADDRESS 1476548608 +#define DT_N_S_soc_S_dmamux_58025800_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_dmamux_58025800_RANGES_NUM 0 #define DT_N_S_soc_S_dmamux_58025800_FOREACH_RANGE(fn) #define DT_N_S_soc_S_dmamux_58025800_IRQ_NUM 1 @@ -18008,20 +18738,26 @@ #define DT_N_S_soc_S_dmamux_58025800_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_dmamux_58025800_P_wakeup_source 0 -#define DT_N_S_soc_S_dmamux_58025800_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_dmamux_58025800_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_dmamux_58025800_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_dmamux_58025800_P_reg {1476548608, 1024} +#define DT_N_S_soc_S_dmamux_58025800_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dmamux_58025800_P_reg_IDX_0 1476548608 +#define DT_N_S_soc_S_dmamux_58025800_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_dmamux_58025800_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_dmamux_58025800_P_reg_EXISTS 1 +#define DT_N_S_soc_S_dmamux_58025800_P_dma_channels 8 +#define DT_N_S_soc_S_dmamux_58025800_P_dma_channels_EXISTS 1 +#define DT_N_S_soc_S_dmamux_58025800_P_dma_generators 8 +#define DT_N_S_soc_S_dmamux_58025800_P_dma_generators_EXISTS 1 +#define DT_N_S_soc_S_dmamux_58025800_P_dma_requests 107 +#define DT_N_S_soc_S_dmamux_58025800_P_dma_requests_EXISTS 1 #define DT_N_S_soc_S_dmamux_58025800_P_status "disabled" #define DT_N_S_soc_S_dmamux_58025800_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_dmamux_58025800_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_dmamux_58025800_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_dmamux_58025800_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_dmamux_58025800_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dmamux_58025800_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_dmamux_58025800_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_dmamux_58025800_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_dmamux_58025800_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_dmamux_58025800_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_dmamux_58025800_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_dmamux_58025800_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dmamux_58025800, status, 0) #define DT_N_S_soc_S_dmamux_58025800_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dmamux_58025800, status, 0) #define DT_N_S_soc_S_dmamux_58025800_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dmamux_58025800, status, 0, __VA_ARGS__) @@ -18029,28 +18765,22 @@ #define DT_N_S_soc_S_dmamux_58025800_P_status_LEN 1 #define DT_N_S_soc_S_dmamux_58025800_P_status_EXISTS 1 #define DT_N_S_soc_S_dmamux_58025800_P_compatible {"st,stm32-dmamux"} +#define DT_N_S_soc_S_dmamux_58025800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dmamux_58025800_P_compatible_IDX_0 "st,stm32-dmamux" #define DT_N_S_soc_S_dmamux_58025800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-dmamux #define DT_N_S_soc_S_dmamux_58025800_P_compatible_IDX_0_STRING_TOKEN st_stm32_dmamux #define DT_N_S_soc_S_dmamux_58025800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_DMAMUX -#define DT_N_S_soc_S_dmamux_58025800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dmamux_58025800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dmamux_58025800, compatible, 0) #define DT_N_S_soc_S_dmamux_58025800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dmamux_58025800, compatible, 0) #define DT_N_S_soc_S_dmamux_58025800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dmamux_58025800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_dmamux_58025800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dmamux_58025800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_dmamux_58025800_P_compatible_LEN 1 #define DT_N_S_soc_S_dmamux_58025800_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_dmamux_58025800_P_reg {1476548608 /* 0x58025800 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_dmamux_58025800_P_reg_IDX_0 1476548608 -#define DT_N_S_soc_S_dmamux_58025800_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dmamux_58025800_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_dmamux_58025800_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_dmamux_58025800_P_reg_EXISTS 1 -#define DT_N_S_soc_S_dmamux_58025800_P_interrupts {128 /* 0x80 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_dmamux_58025800_P_interrupts_IDX_0 128 +#define DT_N_S_soc_S_dmamux_58025800_P_interrupts {128, 0} #define DT_N_S_soc_S_dmamux_58025800_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dmamux_58025800_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_dmamux_58025800_P_interrupts_IDX_0 128 #define DT_N_S_soc_S_dmamux_58025800_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_dmamux_58025800_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_dmamux_58025800_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_dmamux_58025800_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dmamux_58025800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -18066,12 +18796,10 @@ #define DT_N_S_soc_S_dmamux_58025800_P_clocks_EXISTS 1 #define DT_N_S_soc_S_dmamux_58025800_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_dmamux_58025800_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_dmamux_58025800_P_dma_channels 8 -#define DT_N_S_soc_S_dmamux_58025800_P_dma_channels_EXISTS 1 -#define DT_N_S_soc_S_dmamux_58025800_P_dma_generators 8 -#define DT_N_S_soc_S_dmamux_58025800_P_dma_generators_EXISTS 1 -#define DT_N_S_soc_S_dmamux_58025800_P_dma_requests 107 -#define DT_N_S_soc_S_dmamux_58025800_P_dma_requests_EXISTS 1 +#define DT_N_S_soc_S_dmamux_58025800_P_wakeup_source 0 +#define DT_N_S_soc_S_dmamux_58025800_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_dmamux_58025800_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_dmamux_58025800_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/dsihost@50000000 @@ -18090,6 +18818,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_dsihost_50000000_FULL_NAME "dsihost@50000000" +#define DT_N_S_soc_S_dsihost_50000000_FULL_NAME_UNQUOTED dsihost@50000000 +#define DT_N_S_soc_S_dsihost_50000000_FULL_NAME_TOKEN dsihost_50000000 +#define DT_N_S_soc_S_dsihost_50000000_FULL_NAME_UPPER_TOKEN DSIHOST_50000000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_dsihost_50000000_PARENT DT_N_S_soc @@ -18115,14 +18846,14 @@ #define DT_N_S_soc_S_dsihost_50000000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_dsihost_50000000_ORD 124 -#define DT_N_S_soc_S_dsihost_50000000_ORD_STR_SORTABLE 00124 +#define DT_N_S_soc_S_dsihost_50000000_ORD 127 +#define DT_N_S_soc_S_dsihost_50000000_ORD_STR_SORTABLE 00127 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_dsihost_50000000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_dsihost_50000000_SUPPORTS_ORDS /* nothing */ @@ -18135,8 +18866,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_dsihost_50000000_REG_NUM 1 #define DT_N_S_soc_S_dsihost_50000000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dsihost_50000000_REG_IDX_0_VAL_ADDRESS 1342177280 /* 0x50000000 */ -#define DT_N_S_soc_S_dsihost_50000000_REG_IDX_0_VAL_SIZE 4096 /* 0x1000 */ +#define DT_N_S_soc_S_dsihost_50000000_REG_IDX_0_VAL_ADDRESS 1342177280 +#define DT_N_S_soc_S_dsihost_50000000_REG_IDX_0_VAL_SIZE 4096 #define DT_N_S_soc_S_dsihost_50000000_RANGES_NUM 0 #define DT_N_S_soc_S_dsihost_50000000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_dsihost_50000000_IRQ_NUM 0 @@ -18152,44 +18883,6 @@ #define DT_N_S_soc_S_dsihost_50000000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_dsihost_50000000_P_wakeup_source 0 -#define DT_N_S_soc_S_dsihost_50000000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_dsihost_50000000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_dsihost_50000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_dsihost_50000000_P_status "disabled" -#define DT_N_S_soc_S_dsihost_50000000_P_status_STRING_UNQUOTED disabled -#define DT_N_S_soc_S_dsihost_50000000_P_status_STRING_TOKEN disabled -#define DT_N_S_soc_S_dsihost_50000000_P_status_STRING_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_dsihost_50000000_P_status_IDX_0 "disabled" -#define DT_N_S_soc_S_dsihost_50000000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dsihost_50000000_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_dsihost_50000000_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_dsihost_50000000_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_dsihost_50000000_P_status_ENUM_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_dsihost_50000000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dsihost_50000000, status, 0) -#define DT_N_S_soc_S_dsihost_50000000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dsihost_50000000, status, 0) -#define DT_N_S_soc_S_dsihost_50000000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dsihost_50000000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_dsihost_50000000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dsihost_50000000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_dsihost_50000000_P_status_LEN 1 -#define DT_N_S_soc_S_dsihost_50000000_P_status_EXISTS 1 -#define DT_N_S_soc_S_dsihost_50000000_P_compatible {"st,stm32-mipi-dsi"} -#define DT_N_S_soc_S_dsihost_50000000_P_compatible_IDX_0 "st,stm32-mipi-dsi" -#define DT_N_S_soc_S_dsihost_50000000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-mipi-dsi -#define DT_N_S_soc_S_dsihost_50000000_P_compatible_IDX_0_STRING_TOKEN st_stm32_mipi_dsi -#define DT_N_S_soc_S_dsihost_50000000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_MIPI_DSI -#define DT_N_S_soc_S_dsihost_50000000_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dsihost_50000000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dsihost_50000000, compatible, 0) -#define DT_N_S_soc_S_dsihost_50000000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dsihost_50000000, compatible, 0) -#define DT_N_S_soc_S_dsihost_50000000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dsihost_50000000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_dsihost_50000000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dsihost_50000000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_dsihost_50000000_P_compatible_LEN 1 -#define DT_N_S_soc_S_dsihost_50000000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_dsihost_50000000_P_reg {1342177280 /* 0x50000000 */, 4096 /* 0x1000 */} -#define DT_N_S_soc_S_dsihost_50000000_P_reg_IDX_0 1342177280 -#define DT_N_S_soc_S_dsihost_50000000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dsihost_50000000_P_reg_IDX_1 4096 -#define DT_N_S_soc_S_dsihost_50000000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_dsihost_50000000_P_reg_EXISTS 1 #define DT_N_S_soc_S_dsihost_50000000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dsihost_50000000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_dsihost_50000000_P_clocks_IDX_0_VAL_bus 228 @@ -18244,21 +18937,21 @@ #define DT_N_S_soc_S_dsihost_50000000_P_clocks_LEN 3 #define DT_N_S_soc_S_dsihost_50000000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_dsihost_50000000_P_clock_names {"dsiclk", "refclk", "pixelclk"} +#define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_0 "dsiclk" #define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_0_STRING_UNQUOTED dsiclk #define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_0_STRING_TOKEN dsiclk #define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_0_STRING_UPPER_TOKEN DSICLK -#define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_1 "refclk" #define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_1_STRING_UNQUOTED refclk #define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_1_STRING_TOKEN refclk #define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_1_STRING_UPPER_TOKEN REFCLK -#define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_2_EXISTS 1 #define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_2 "pixelclk" #define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_2_STRING_UNQUOTED pixelclk #define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_2_STRING_TOKEN pixelclk #define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_2_STRING_UPPER_TOKEN PIXELCLK -#define DT_N_S_soc_S_dsihost_50000000_P_clock_names_IDX_2_EXISTS 1 #define DT_N_S_soc_S_dsihost_50000000_P_clock_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dsihost_50000000, clock_names, 0) \ fn(DT_N_S_soc_S_dsihost_50000000, clock_names, 1) \ fn(DT_N_S_soc_S_dsihost_50000000, clock_names, 2) @@ -18273,8 +18966,6 @@ fn(DT_N_S_soc_S_dsihost_50000000, clock_names, 2, __VA_ARGS__) #define DT_N_S_soc_S_dsihost_50000000_P_clock_names_LEN 3 #define DT_N_S_soc_S_dsihost_50000000_P_clock_names_EXISTS 1 -#define DT_N_S_soc_S_dsihost_50000000_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_dsihost_50000000_P_zephyr_deferred_init_EXISTS 1 #define DT_N_S_soc_S_dsihost_50000000_P_resets_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dsihost_50000000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller #define DT_N_S_soc_S_dsihost_50000000_P_resets_IDX_0_VAL_id 4484 @@ -18297,6 +18988,44 @@ #define DT_N_S_soc_S_dsihost_50000000_P_bta_ack_disable_EXISTS 1 #define DT_N_S_soc_S_dsihost_50000000_P_non_continuous 0 #define DT_N_S_soc_S_dsihost_50000000_P_non_continuous_EXISTS 1 +#define DT_N_S_soc_S_dsihost_50000000_P_status "disabled" +#define DT_N_S_soc_S_dsihost_50000000_P_status_STRING_UNQUOTED disabled +#define DT_N_S_soc_S_dsihost_50000000_P_status_STRING_TOKEN disabled +#define DT_N_S_soc_S_dsihost_50000000_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_dsihost_50000000_P_status_IDX_0 "disabled" +#define DT_N_S_soc_S_dsihost_50000000_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dsihost_50000000_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_dsihost_50000000_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_soc_S_dsihost_50000000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dsihost_50000000, status, 0) +#define DT_N_S_soc_S_dsihost_50000000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dsihost_50000000, status, 0) +#define DT_N_S_soc_S_dsihost_50000000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dsihost_50000000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_dsihost_50000000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dsihost_50000000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_dsihost_50000000_P_status_LEN 1 +#define DT_N_S_soc_S_dsihost_50000000_P_status_EXISTS 1 +#define DT_N_S_soc_S_dsihost_50000000_P_compatible {"st,stm32-mipi-dsi"} +#define DT_N_S_soc_S_dsihost_50000000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dsihost_50000000_P_compatible_IDX_0 "st,stm32-mipi-dsi" +#define DT_N_S_soc_S_dsihost_50000000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-mipi-dsi +#define DT_N_S_soc_S_dsihost_50000000_P_compatible_IDX_0_STRING_TOKEN st_stm32_mipi_dsi +#define DT_N_S_soc_S_dsihost_50000000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_MIPI_DSI +#define DT_N_S_soc_S_dsihost_50000000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dsihost_50000000, compatible, 0) +#define DT_N_S_soc_S_dsihost_50000000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dsihost_50000000, compatible, 0) +#define DT_N_S_soc_S_dsihost_50000000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dsihost_50000000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_dsihost_50000000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dsihost_50000000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_dsihost_50000000_P_compatible_LEN 1 +#define DT_N_S_soc_S_dsihost_50000000_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_dsihost_50000000_P_reg {1342177280, 4096} +#define DT_N_S_soc_S_dsihost_50000000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dsihost_50000000_P_reg_IDX_0 1342177280 +#define DT_N_S_soc_S_dsihost_50000000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_dsihost_50000000_P_reg_IDX_1 4096 +#define DT_N_S_soc_S_dsihost_50000000_P_reg_EXISTS 1 +#define DT_N_S_soc_S_dsihost_50000000_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_dsihost_50000000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_dsihost_50000000_P_wakeup_source 0 +#define DT_N_S_soc_S_dsihost_50000000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_dsihost_50000000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_dsihost_50000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/dmamux@40020800 @@ -18315,6 +19044,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_dmamux_40020800_FULL_NAME "dmamux@40020800" +#define DT_N_S_soc_S_dmamux_40020800_FULL_NAME_UNQUOTED dmamux@40020800 +#define DT_N_S_soc_S_dmamux_40020800_FULL_NAME_TOKEN dmamux_40020800 +#define DT_N_S_soc_S_dmamux_40020800_FULL_NAME_UPPER_TOKEN DMAMUX_40020800 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_dmamux_40020800_PARENT DT_N_S_soc @@ -18340,20 +19072,20 @@ #define DT_N_S_soc_S_dmamux_40020800_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_dmamux_40020800_ORD 125 -#define DT_N_S_soc_S_dmamux_40020800_ORD_STR_SORTABLE 00125 +#define DT_N_S_soc_S_dmamux_40020800_ORD 128 +#define DT_N_S_soc_S_dmamux_40020800_ORD_STR_SORTABLE 00128 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_dmamux_40020800_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_dmamux_40020800_SUPPORTS_ORDS \ - 126, /* /soc/i2s@40003800 */ \ - 127, /* /soc/i2s@40003c00 */ \ - 128, /* /soc/i2s@40013000 */ + 129, \ + 130, \ + 131, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_dmamux_40020800_EXISTS 1 @@ -18363,8 +19095,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_dmamux_40020800_REG_NUM 1 #define DT_N_S_soc_S_dmamux_40020800_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dmamux_40020800_REG_IDX_0_VAL_ADDRESS 1073874944 /* 0x40020800 */ -#define DT_N_S_soc_S_dmamux_40020800_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_dmamux_40020800_REG_IDX_0_VAL_ADDRESS 1073874944 +#define DT_N_S_soc_S_dmamux_40020800_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_dmamux_40020800_RANGES_NUM 0 #define DT_N_S_soc_S_dmamux_40020800_FOREACH_RANGE(fn) #define DT_N_S_soc_S_dmamux_40020800_IRQ_NUM 1 @@ -18387,20 +19119,26 @@ #define DT_N_S_soc_S_dmamux_40020800_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_dmamux_40020800_P_wakeup_source 0 -#define DT_N_S_soc_S_dmamux_40020800_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_dmamux_40020800_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_dmamux_40020800_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_dmamux_40020800_P_reg {1073874944, 1024} +#define DT_N_S_soc_S_dmamux_40020800_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dmamux_40020800_P_reg_IDX_0 1073874944 +#define DT_N_S_soc_S_dmamux_40020800_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_dmamux_40020800_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_dmamux_40020800_P_reg_EXISTS 1 +#define DT_N_S_soc_S_dmamux_40020800_P_dma_channels 16 +#define DT_N_S_soc_S_dmamux_40020800_P_dma_channels_EXISTS 1 +#define DT_N_S_soc_S_dmamux_40020800_P_dma_generators 8 +#define DT_N_S_soc_S_dmamux_40020800_P_dma_generators_EXISTS 1 +#define DT_N_S_soc_S_dmamux_40020800_P_dma_requests 107 +#define DT_N_S_soc_S_dmamux_40020800_P_dma_requests_EXISTS 1 #define DT_N_S_soc_S_dmamux_40020800_P_status "okay" #define DT_N_S_soc_S_dmamux_40020800_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_dmamux_40020800_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_dmamux_40020800_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_dmamux_40020800_P_status_IDX_0 "okay" #define DT_N_S_soc_S_dmamux_40020800_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dmamux_40020800_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_dmamux_40020800_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_dmamux_40020800_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_dmamux_40020800_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_dmamux_40020800_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_dmamux_40020800_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_dmamux_40020800_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dmamux_40020800, status, 0) #define DT_N_S_soc_S_dmamux_40020800_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dmamux_40020800, status, 0) #define DT_N_S_soc_S_dmamux_40020800_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dmamux_40020800, status, 0, __VA_ARGS__) @@ -18408,28 +19146,22 @@ #define DT_N_S_soc_S_dmamux_40020800_P_status_LEN 1 #define DT_N_S_soc_S_dmamux_40020800_P_status_EXISTS 1 #define DT_N_S_soc_S_dmamux_40020800_P_compatible {"st,stm32-dmamux"} +#define DT_N_S_soc_S_dmamux_40020800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dmamux_40020800_P_compatible_IDX_0 "st,stm32-dmamux" #define DT_N_S_soc_S_dmamux_40020800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-dmamux #define DT_N_S_soc_S_dmamux_40020800_P_compatible_IDX_0_STRING_TOKEN st_stm32_dmamux #define DT_N_S_soc_S_dmamux_40020800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_DMAMUX -#define DT_N_S_soc_S_dmamux_40020800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dmamux_40020800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dmamux_40020800, compatible, 0) #define DT_N_S_soc_S_dmamux_40020800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dmamux_40020800, compatible, 0) #define DT_N_S_soc_S_dmamux_40020800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dmamux_40020800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_dmamux_40020800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dmamux_40020800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_dmamux_40020800_P_compatible_LEN 1 #define DT_N_S_soc_S_dmamux_40020800_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_dmamux_40020800_P_reg {1073874944 /* 0x40020800 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_dmamux_40020800_P_reg_IDX_0 1073874944 -#define DT_N_S_soc_S_dmamux_40020800_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dmamux_40020800_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_dmamux_40020800_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_dmamux_40020800_P_reg_EXISTS 1 -#define DT_N_S_soc_S_dmamux_40020800_P_interrupts {102 /* 0x66 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_dmamux_40020800_P_interrupts_IDX_0 102 +#define DT_N_S_soc_S_dmamux_40020800_P_interrupts {102, 0} #define DT_N_S_soc_S_dmamux_40020800_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dmamux_40020800_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_dmamux_40020800_P_interrupts_IDX_0 102 #define DT_N_S_soc_S_dmamux_40020800_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_dmamux_40020800_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_dmamux_40020800_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_dmamux_40020800_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dmamux_40020800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -18445,12 +19177,10 @@ #define DT_N_S_soc_S_dmamux_40020800_P_clocks_EXISTS 1 #define DT_N_S_soc_S_dmamux_40020800_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_dmamux_40020800_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_dmamux_40020800_P_dma_channels 16 -#define DT_N_S_soc_S_dmamux_40020800_P_dma_channels_EXISTS 1 -#define DT_N_S_soc_S_dmamux_40020800_P_dma_generators 8 -#define DT_N_S_soc_S_dmamux_40020800_P_dma_generators_EXISTS 1 -#define DT_N_S_soc_S_dmamux_40020800_P_dma_requests 107 -#define DT_N_S_soc_S_dmamux_40020800_P_dma_requests_EXISTS 1 +#define DT_N_S_soc_S_dmamux_40020800_P_wakeup_source 0 +#define DT_N_S_soc_S_dmamux_40020800_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_dmamux_40020800_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_dmamux_40020800_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/i2s@40003800 @@ -18469,6 +19199,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_i2s_40003800_FULL_NAME "i2s@40003800" +#define DT_N_S_soc_S_i2s_40003800_FULL_NAME_UNQUOTED i2s@40003800 +#define DT_N_S_soc_S_i2s_40003800_FULL_NAME_TOKEN i2s_40003800 +#define DT_N_S_soc_S_i2s_40003800_FULL_NAME_UPPER_TOKEN I2S_40003800 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_i2s_40003800_PARENT DT_N_S_soc @@ -18494,15 +19227,15 @@ #define DT_N_S_soc_S_i2s_40003800_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_i2s_40003800_ORD 126 -#define DT_N_S_soc_S_i2s_40003800_ORD_STR_SORTABLE 00126 +#define DT_N_S_soc_S_i2s_40003800_ORD 129 +#define DT_N_S_soc_S_i2s_40003800_ORD_STR_SORTABLE 00129 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_i2s_40003800_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 125, /* /soc/dmamux@40020800 */ + 4, \ + 5, \ + 9, \ + 128, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_i2s_40003800_SUPPORTS_ORDS /* nothing */ @@ -18516,8 +19249,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_i2s_40003800_REG_NUM 1 #define DT_N_S_soc_S_i2s_40003800_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_REG_IDX_0_VAL_ADDRESS 1073756160 /* 0x40003800 */ -#define DT_N_S_soc_S_i2s_40003800_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_i2s_40003800_REG_IDX_0_VAL_ADDRESS 1073756160 +#define DT_N_S_soc_S_i2s_40003800_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_i2s_40003800_RANGES_NUM 0 #define DT_N_S_soc_S_i2s_40003800_FOREACH_RANGE(fn) #define DT_N_S_soc_S_i2s_40003800_IRQ_NUM 1 @@ -18545,81 +19278,18 @@ #define DT_N_S_soc_S_i2s_40003800_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_i2s_40003800_P_wakeup_source 0 -#define DT_N_S_soc_S_i2s_40003800_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_i2s_40003800_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_status "disabled" -#define DT_N_S_soc_S_i2s_40003800_P_status_STRING_UNQUOTED disabled -#define DT_N_S_soc_S_i2s_40003800_P_status_STRING_TOKEN disabled -#define DT_N_S_soc_S_i2s_40003800_P_status_STRING_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_i2s_40003800_P_status_IDX_0 "disabled" -#define DT_N_S_soc_S_i2s_40003800_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_i2s_40003800_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_i2s_40003800_P_status_ENUM_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_i2s_40003800_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40003800, status, 0) -#define DT_N_S_soc_S_i2s_40003800_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40003800, status, 0) -#define DT_N_S_soc_S_i2s_40003800_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40003800, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40003800_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40003800, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40003800_P_status_LEN 1 -#define DT_N_S_soc_S_i2s_40003800_P_status_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_compatible {"st,stm32h7-i2s", "st,stm32-i2s"} -#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_0 "st,stm32h7-i2s" -#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-i2s -#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_i2s -#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_I2S -#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_1 "st,stm32-i2s" -#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-i2s -#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_1_STRING_TOKEN st_stm32_i2s -#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_I2S -#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40003800, compatible, 0) \ - fn(DT_N_S_soc_S_i2s_40003800, compatible, 1) -#define DT_N_S_soc_S_i2s_40003800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40003800, compatible, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2s_40003800, compatible, 1) -#define DT_N_S_soc_S_i2s_40003800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40003800, compatible, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_i2s_40003800, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40003800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40003800, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2s_40003800, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40003800_P_compatible_LEN 2 -#define DT_N_S_soc_S_i2s_40003800_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_reg {1073756160 /* 0x40003800 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_i2s_40003800_P_reg_IDX_0 1073756160 +#define DT_N_S_soc_S_i2s_40003800_P_reg {1073756160, 1024} #define DT_N_S_soc_S_i2s_40003800_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_i2s_40003800_P_reg_IDX_0 1073756160 #define DT_N_S_soc_S_i2s_40003800_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_reg_IDX_1 1024 #define DT_N_S_soc_S_i2s_40003800_P_reg_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_interrupts {36 /* 0x24 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_i2s_40003800_P_interrupts_IDX_0 36 +#define DT_N_S_soc_S_i2s_40003800_P_interrupts {36, 0} #define DT_N_S_soc_S_i2s_40003800_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_i2s_40003800_P_interrupts_IDX_0 36 #define DT_N_S_soc_S_i2s_40003800_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_i2s_40003800_P_interrupts_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_0_VAL_bus 232 -#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_0_VAL_bits 16384 -#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_1_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_1_VAL_bus 9 -#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_1_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_1_VAL_bits 60496 -#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_1_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40003800, clocks, 0) \ - fn(DT_N_S_soc_S_i2s_40003800, clocks, 1) -#define DT_N_S_soc_S_i2s_40003800_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40003800, clocks, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2s_40003800, clocks, 1) -#define DT_N_S_soc_S_i2s_40003800_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40003800, clocks, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_i2s_40003800, clocks, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40003800_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40003800, clocks, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2s_40003800, clocks, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40003800_P_clocks_LEN 2 -#define DT_N_S_soc_S_i2s_40003800_P_clocks_EXISTS 1 #define DT_N_S_soc_S_i2s_40003800_P_dmas_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2s_40003800_P_dmas_IDX_0_PH DT_N_S_soc_S_dmamux_40020800 #define DT_N_S_soc_S_i2s_40003800_P_dmas_IDX_0_VAL_channel 0 @@ -18665,16 +19335,16 @@ #define DT_N_S_soc_S_i2s_40003800_P_dmas_LEN 2 #define DT_N_S_soc_S_i2s_40003800_P_dmas_EXISTS 1 #define DT_N_S_soc_S_i2s_40003800_P_dma_names {"tx", "rx"} +#define DT_N_S_soc_S_i2s_40003800_P_dma_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2s_40003800_P_dma_names_IDX_0 "tx" #define DT_N_S_soc_S_i2s_40003800_P_dma_names_IDX_0_STRING_UNQUOTED tx #define DT_N_S_soc_S_i2s_40003800_P_dma_names_IDX_0_STRING_TOKEN tx #define DT_N_S_soc_S_i2s_40003800_P_dma_names_IDX_0_STRING_UPPER_TOKEN TX -#define DT_N_S_soc_S_i2s_40003800_P_dma_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_dma_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_i2s_40003800_P_dma_names_IDX_1 "rx" #define DT_N_S_soc_S_i2s_40003800_P_dma_names_IDX_1_STRING_UNQUOTED rx #define DT_N_S_soc_S_i2s_40003800_P_dma_names_IDX_1_STRING_TOKEN rx #define DT_N_S_soc_S_i2s_40003800_P_dma_names_IDX_1_STRING_UPPER_TOKEN RX -#define DT_N_S_soc_S_i2s_40003800_P_dma_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_i2s_40003800_P_dma_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40003800, dma_names, 0) \ fn(DT_N_S_soc_S_i2s_40003800, dma_names, 1) #define DT_N_S_soc_S_i2s_40003800_P_dma_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40003800, dma_names, 0) DT_DEBRACKET_INTERNAL sep \ @@ -18685,10 +19355,71 @@ fn(DT_N_S_soc_S_i2s_40003800, dma_names, 1, __VA_ARGS__) #define DT_N_S_soc_S_i2s_40003800_P_dma_names_LEN 2 #define DT_N_S_soc_S_i2s_40003800_P_dma_names_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003800_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_i2s_40003800_P_zephyr_deferred_init_EXISTS 1 #define DT_N_S_soc_S_i2s_40003800_P_mck_enabled 0 #define DT_N_S_soc_S_i2s_40003800_P_mck_enabled_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_status "disabled" +#define DT_N_S_soc_S_i2s_40003800_P_status_STRING_UNQUOTED disabled +#define DT_N_S_soc_S_i2s_40003800_P_status_STRING_TOKEN disabled +#define DT_N_S_soc_S_i2s_40003800_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_i2s_40003800_P_status_IDX_0 "disabled" +#define DT_N_S_soc_S_i2s_40003800_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_i2s_40003800_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40003800, status, 0) +#define DT_N_S_soc_S_i2s_40003800_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40003800, status, 0) +#define DT_N_S_soc_S_i2s_40003800_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40003800, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40003800_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40003800, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40003800_P_status_LEN 1 +#define DT_N_S_soc_S_i2s_40003800_P_status_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_compatible {"st,stm32h7-i2s", "st,stm32-i2s"} +#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_0 "st,stm32h7-i2s" +#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-i2s +#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_i2s +#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_I2S +#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_1 "st,stm32-i2s" +#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-i2s +#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_1_STRING_TOKEN st_stm32_i2s +#define DT_N_S_soc_S_i2s_40003800_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_I2S +#define DT_N_S_soc_S_i2s_40003800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40003800, compatible, 0) \ + fn(DT_N_S_soc_S_i2s_40003800, compatible, 1) +#define DT_N_S_soc_S_i2s_40003800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40003800, compatible, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2s_40003800, compatible, 1) +#define DT_N_S_soc_S_i2s_40003800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40003800, compatible, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_i2s_40003800, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40003800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40003800, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2s_40003800, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40003800_P_compatible_LEN 2 +#define DT_N_S_soc_S_i2s_40003800_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_0_VAL_bus 232 +#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_0_VAL_bits 16384 +#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_1_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_1_VAL_bus 9 +#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_1_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_1_VAL_bits 60496 +#define DT_N_S_soc_S_i2s_40003800_P_clocks_IDX_1_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40003800, clocks, 0) \ + fn(DT_N_S_soc_S_i2s_40003800, clocks, 1) +#define DT_N_S_soc_S_i2s_40003800_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40003800, clocks, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2s_40003800, clocks, 1) +#define DT_N_S_soc_S_i2s_40003800_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40003800, clocks, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_i2s_40003800, clocks, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40003800_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40003800, clocks, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2s_40003800, clocks, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40003800_P_clocks_LEN 2 +#define DT_N_S_soc_S_i2s_40003800_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_i2s_40003800_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_wakeup_source 0 +#define DT_N_S_soc_S_i2s_40003800_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003800_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_i2s_40003800_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/i2s@40003c00 @@ -18707,6 +19438,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_i2s_40003c00_FULL_NAME "i2s@40003c00" +#define DT_N_S_soc_S_i2s_40003c00_FULL_NAME_UNQUOTED i2s@40003c00 +#define DT_N_S_soc_S_i2s_40003c00_FULL_NAME_TOKEN i2s_40003c00 +#define DT_N_S_soc_S_i2s_40003c00_FULL_NAME_UPPER_TOKEN I2S_40003C00 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_i2s_40003c00_PARENT DT_N_S_soc @@ -18732,15 +19466,15 @@ #define DT_N_S_soc_S_i2s_40003c00_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_i2s_40003c00_ORD 127 -#define DT_N_S_soc_S_i2s_40003c00_ORD_STR_SORTABLE 00127 +#define DT_N_S_soc_S_i2s_40003c00_ORD 130 +#define DT_N_S_soc_S_i2s_40003c00_ORD_STR_SORTABLE 00130 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_i2s_40003c00_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 125, /* /soc/dmamux@40020800 */ + 4, \ + 5, \ + 9, \ + 128, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_i2s_40003c00_SUPPORTS_ORDS /* nothing */ @@ -18754,8 +19488,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_i2s_40003c00_REG_NUM 1 #define DT_N_S_soc_S_i2s_40003c00_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_REG_IDX_0_VAL_ADDRESS 1073757184 /* 0x40003c00 */ -#define DT_N_S_soc_S_i2s_40003c00_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_i2s_40003c00_REG_IDX_0_VAL_ADDRESS 1073757184 +#define DT_N_S_soc_S_i2s_40003c00_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_i2s_40003c00_RANGES_NUM 0 #define DT_N_S_soc_S_i2s_40003c00_FOREACH_RANGE(fn) #define DT_N_S_soc_S_i2s_40003c00_IRQ_NUM 1 @@ -18783,81 +19517,18 @@ #define DT_N_S_soc_S_i2s_40003c00_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_i2s_40003c00_P_wakeup_source 0 -#define DT_N_S_soc_S_i2s_40003c00_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_i2s_40003c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_status "disabled" -#define DT_N_S_soc_S_i2s_40003c00_P_status_STRING_UNQUOTED disabled -#define DT_N_S_soc_S_i2s_40003c00_P_status_STRING_TOKEN disabled -#define DT_N_S_soc_S_i2s_40003c00_P_status_STRING_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_i2s_40003c00_P_status_IDX_0 "disabled" -#define DT_N_S_soc_S_i2s_40003c00_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_i2s_40003c00_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_i2s_40003c00_P_status_ENUM_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_i2s_40003c00_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40003c00, status, 0) -#define DT_N_S_soc_S_i2s_40003c00_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40003c00, status, 0) -#define DT_N_S_soc_S_i2s_40003c00_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40003c00, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40003c00_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40003c00, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40003c00_P_status_LEN 1 -#define DT_N_S_soc_S_i2s_40003c00_P_status_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_compatible {"st,stm32h7-i2s", "st,stm32-i2s"} -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_0 "st,stm32h7-i2s" -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-i2s -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_i2s -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_I2S -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_1 "st,stm32-i2s" -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-i2s -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_1_STRING_TOKEN st_stm32_i2s -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_I2S -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40003c00, compatible, 0) \ - fn(DT_N_S_soc_S_i2s_40003c00, compatible, 1) -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40003c00, compatible, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2s_40003c00, compatible, 1) -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40003c00, compatible, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_i2s_40003c00, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40003c00, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2s_40003c00, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_LEN 2 -#define DT_N_S_soc_S_i2s_40003c00_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_reg {1073757184 /* 0x40003c00 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_i2s_40003c00_P_reg_IDX_0 1073757184 +#define DT_N_S_soc_S_i2s_40003c00_P_reg {1073757184, 1024} #define DT_N_S_soc_S_i2s_40003c00_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_i2s_40003c00_P_reg_IDX_0 1073757184 #define DT_N_S_soc_S_i2s_40003c00_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_reg_IDX_1 1024 #define DT_N_S_soc_S_i2s_40003c00_P_reg_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_interrupts {51 /* 0x33 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_i2s_40003c00_P_interrupts_IDX_0 51 +#define DT_N_S_soc_S_i2s_40003c00_P_interrupts {51, 0} #define DT_N_S_soc_S_i2s_40003c00_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_i2s_40003c00_P_interrupts_IDX_0 51 #define DT_N_S_soc_S_i2s_40003c00_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_i2s_40003c00_P_interrupts_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_0_VAL_bus 232 -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_0_VAL_bits 32768 -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_1_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_1_VAL_bus 9 -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_1_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_1_VAL_bits 60496 -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_1_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40003c00, clocks, 0) \ - fn(DT_N_S_soc_S_i2s_40003c00, clocks, 1) -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40003c00, clocks, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2s_40003c00, clocks, 1) -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40003c00, clocks, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_i2s_40003c00, clocks, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40003c00, clocks, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2s_40003c00, clocks, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_LEN 2 -#define DT_N_S_soc_S_i2s_40003c00_P_clocks_EXISTS 1 #define DT_N_S_soc_S_i2s_40003c00_P_dmas_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2s_40003c00_P_dmas_IDX_0_PH DT_N_S_soc_S_dmamux_40020800 #define DT_N_S_soc_S_i2s_40003c00_P_dmas_IDX_0_VAL_channel 0 @@ -18903,16 +19574,16 @@ #define DT_N_S_soc_S_i2s_40003c00_P_dmas_LEN 2 #define DT_N_S_soc_S_i2s_40003c00_P_dmas_EXISTS 1 #define DT_N_S_soc_S_i2s_40003c00_P_dma_names {"tx", "rx"} +#define DT_N_S_soc_S_i2s_40003c00_P_dma_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2s_40003c00_P_dma_names_IDX_0 "tx" #define DT_N_S_soc_S_i2s_40003c00_P_dma_names_IDX_0_STRING_UNQUOTED tx #define DT_N_S_soc_S_i2s_40003c00_P_dma_names_IDX_0_STRING_TOKEN tx #define DT_N_S_soc_S_i2s_40003c00_P_dma_names_IDX_0_STRING_UPPER_TOKEN TX -#define DT_N_S_soc_S_i2s_40003c00_P_dma_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_dma_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_i2s_40003c00_P_dma_names_IDX_1 "rx" #define DT_N_S_soc_S_i2s_40003c00_P_dma_names_IDX_1_STRING_UNQUOTED rx #define DT_N_S_soc_S_i2s_40003c00_P_dma_names_IDX_1_STRING_TOKEN rx #define DT_N_S_soc_S_i2s_40003c00_P_dma_names_IDX_1_STRING_UPPER_TOKEN RX -#define DT_N_S_soc_S_i2s_40003c00_P_dma_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_i2s_40003c00_P_dma_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40003c00, dma_names, 0) \ fn(DT_N_S_soc_S_i2s_40003c00, dma_names, 1) #define DT_N_S_soc_S_i2s_40003c00_P_dma_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40003c00, dma_names, 0) DT_DEBRACKET_INTERNAL sep \ @@ -18923,10 +19594,71 @@ fn(DT_N_S_soc_S_i2s_40003c00, dma_names, 1, __VA_ARGS__) #define DT_N_S_soc_S_i2s_40003c00_P_dma_names_LEN 2 #define DT_N_S_soc_S_i2s_40003c00_P_dma_names_EXISTS 1 -#define DT_N_S_soc_S_i2s_40003c00_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_i2s_40003c00_P_zephyr_deferred_init_EXISTS 1 #define DT_N_S_soc_S_i2s_40003c00_P_mck_enabled 0 #define DT_N_S_soc_S_i2s_40003c00_P_mck_enabled_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_status "disabled" +#define DT_N_S_soc_S_i2s_40003c00_P_status_STRING_UNQUOTED disabled +#define DT_N_S_soc_S_i2s_40003c00_P_status_STRING_TOKEN disabled +#define DT_N_S_soc_S_i2s_40003c00_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_i2s_40003c00_P_status_IDX_0 "disabled" +#define DT_N_S_soc_S_i2s_40003c00_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_i2s_40003c00_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40003c00, status, 0) +#define DT_N_S_soc_S_i2s_40003c00_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40003c00, status, 0) +#define DT_N_S_soc_S_i2s_40003c00_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40003c00, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40003c00_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40003c00, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40003c00_P_status_LEN 1 +#define DT_N_S_soc_S_i2s_40003c00_P_status_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_compatible {"st,stm32h7-i2s", "st,stm32-i2s"} +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_0 "st,stm32h7-i2s" +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-i2s +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_i2s +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_I2S +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_1 "st,stm32-i2s" +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-i2s +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_1_STRING_TOKEN st_stm32_i2s +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_I2S +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40003c00, compatible, 0) \ + fn(DT_N_S_soc_S_i2s_40003c00, compatible, 1) +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40003c00, compatible, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2s_40003c00, compatible, 1) +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40003c00, compatible, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_i2s_40003c00, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40003c00, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2s_40003c00, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_LEN 2 +#define DT_N_S_soc_S_i2s_40003c00_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_0_VAL_bus 232 +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_0_VAL_bits 32768 +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_1_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_1_VAL_bus 9 +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_1_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_1_VAL_bits 60496 +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_IDX_1_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40003c00, clocks, 0) \ + fn(DT_N_S_soc_S_i2s_40003c00, clocks, 1) +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40003c00, clocks, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2s_40003c00, clocks, 1) +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40003c00, clocks, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_i2s_40003c00, clocks, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40003c00, clocks, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2s_40003c00, clocks, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_LEN 2 +#define DT_N_S_soc_S_i2s_40003c00_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_i2s_40003c00_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_wakeup_source 0 +#define DT_N_S_soc_S_i2s_40003c00_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_i2s_40003c00_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_i2s_40003c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/i2s@40013000 @@ -18945,6 +19677,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_i2s_40013000_FULL_NAME "i2s@40013000" +#define DT_N_S_soc_S_i2s_40013000_FULL_NAME_UNQUOTED i2s@40013000 +#define DT_N_S_soc_S_i2s_40013000_FULL_NAME_TOKEN i2s_40013000 +#define DT_N_S_soc_S_i2s_40013000_FULL_NAME_UPPER_TOKEN I2S_40013000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_i2s_40013000_PARENT DT_N_S_soc @@ -18970,15 +19705,15 @@ #define DT_N_S_soc_S_i2s_40013000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_i2s_40013000_ORD 128 -#define DT_N_S_soc_S_i2s_40013000_ORD_STR_SORTABLE 00128 +#define DT_N_S_soc_S_i2s_40013000_ORD 131 +#define DT_N_S_soc_S_i2s_40013000_ORD_STR_SORTABLE 00131 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_i2s_40013000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 125, /* /soc/dmamux@40020800 */ + 4, \ + 5, \ + 9, \ + 128, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_i2s_40013000_SUPPORTS_ORDS /* nothing */ @@ -18992,8 +19727,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_i2s_40013000_REG_NUM 1 #define DT_N_S_soc_S_i2s_40013000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_REG_IDX_0_VAL_ADDRESS 1073819648 /* 0x40013000 */ -#define DT_N_S_soc_S_i2s_40013000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_i2s_40013000_REG_IDX_0_VAL_ADDRESS 1073819648 +#define DT_N_S_soc_S_i2s_40013000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_i2s_40013000_RANGES_NUM 0 #define DT_N_S_soc_S_i2s_40013000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_i2s_40013000_IRQ_NUM 1 @@ -19021,81 +19756,18 @@ #define DT_N_S_soc_S_i2s_40013000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_i2s_40013000_P_wakeup_source 0 -#define DT_N_S_soc_S_i2s_40013000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_i2s_40013000_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_status "disabled" -#define DT_N_S_soc_S_i2s_40013000_P_status_STRING_UNQUOTED disabled -#define DT_N_S_soc_S_i2s_40013000_P_status_STRING_TOKEN disabled -#define DT_N_S_soc_S_i2s_40013000_P_status_STRING_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_i2s_40013000_P_status_IDX_0 "disabled" -#define DT_N_S_soc_S_i2s_40013000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_i2s_40013000_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_i2s_40013000_P_status_ENUM_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_i2s_40013000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40013000, status, 0) -#define DT_N_S_soc_S_i2s_40013000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40013000, status, 0) -#define DT_N_S_soc_S_i2s_40013000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40013000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40013000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40013000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40013000_P_status_LEN 1 -#define DT_N_S_soc_S_i2s_40013000_P_status_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_compatible {"st,stm32h7-i2s", "st,stm32-i2s"} -#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_0 "st,stm32h7-i2s" -#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-i2s -#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_i2s -#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_I2S -#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_1 "st,stm32-i2s" -#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-i2s -#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_1_STRING_TOKEN st_stm32_i2s -#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_I2S -#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40013000, compatible, 0) \ - fn(DT_N_S_soc_S_i2s_40013000, compatible, 1) -#define DT_N_S_soc_S_i2s_40013000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40013000, compatible, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2s_40013000, compatible, 1) -#define DT_N_S_soc_S_i2s_40013000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40013000, compatible, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_i2s_40013000, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40013000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40013000, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2s_40013000, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40013000_P_compatible_LEN 2 -#define DT_N_S_soc_S_i2s_40013000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_reg {1073819648 /* 0x40013000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_i2s_40013000_P_reg_IDX_0 1073819648 +#define DT_N_S_soc_S_i2s_40013000_P_reg {1073819648, 1024} #define DT_N_S_soc_S_i2s_40013000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_i2s_40013000_P_reg_IDX_0 1073819648 #define DT_N_S_soc_S_i2s_40013000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_reg_IDX_1 1024 #define DT_N_S_soc_S_i2s_40013000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_interrupts {35 /* 0x23 */, 3 /* 0x3 */} -#define DT_N_S_soc_S_i2s_40013000_P_interrupts_IDX_0 35 +#define DT_N_S_soc_S_i2s_40013000_P_interrupts {35, 3} #define DT_N_S_soc_S_i2s_40013000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_interrupts_IDX_1 3 +#define DT_N_S_soc_S_i2s_40013000_P_interrupts_IDX_0 35 #define DT_N_S_soc_S_i2s_40013000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_interrupts_IDX_1 3 #define DT_N_S_soc_S_i2s_40013000_P_interrupts_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_0_VAL_bus 240 -#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_0_VAL_bits 4096 -#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_1_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_1_VAL_bus 9 -#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_1_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_1_VAL_bits 60496 -#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_1_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40013000, clocks, 0) \ - fn(DT_N_S_soc_S_i2s_40013000, clocks, 1) -#define DT_N_S_soc_S_i2s_40013000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40013000, clocks, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2s_40013000, clocks, 1) -#define DT_N_S_soc_S_i2s_40013000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40013000, clocks, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_i2s_40013000, clocks, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40013000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40013000, clocks, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_i2s_40013000, clocks, 1, __VA_ARGS__) -#define DT_N_S_soc_S_i2s_40013000_P_clocks_LEN 2 -#define DT_N_S_soc_S_i2s_40013000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_i2s_40013000_P_dmas_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2s_40013000_P_dmas_IDX_0_PH DT_N_S_soc_S_dmamux_40020800 #define DT_N_S_soc_S_i2s_40013000_P_dmas_IDX_0_VAL_channel 0 @@ -19141,16 +19813,16 @@ #define DT_N_S_soc_S_i2s_40013000_P_dmas_LEN 2 #define DT_N_S_soc_S_i2s_40013000_P_dmas_EXISTS 1 #define DT_N_S_soc_S_i2s_40013000_P_dma_names {"tx", "rx"} +#define DT_N_S_soc_S_i2s_40013000_P_dma_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2s_40013000_P_dma_names_IDX_0 "tx" #define DT_N_S_soc_S_i2s_40013000_P_dma_names_IDX_0_STRING_UNQUOTED tx #define DT_N_S_soc_S_i2s_40013000_P_dma_names_IDX_0_STRING_TOKEN tx #define DT_N_S_soc_S_i2s_40013000_P_dma_names_IDX_0_STRING_UPPER_TOKEN TX -#define DT_N_S_soc_S_i2s_40013000_P_dma_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_dma_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_i2s_40013000_P_dma_names_IDX_1 "rx" #define DT_N_S_soc_S_i2s_40013000_P_dma_names_IDX_1_STRING_UNQUOTED rx #define DT_N_S_soc_S_i2s_40013000_P_dma_names_IDX_1_STRING_TOKEN rx #define DT_N_S_soc_S_i2s_40013000_P_dma_names_IDX_1_STRING_UPPER_TOKEN RX -#define DT_N_S_soc_S_i2s_40013000_P_dma_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_i2s_40013000_P_dma_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40013000, dma_names, 0) \ fn(DT_N_S_soc_S_i2s_40013000, dma_names, 1) #define DT_N_S_soc_S_i2s_40013000_P_dma_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40013000, dma_names, 0) DT_DEBRACKET_INTERNAL sep \ @@ -19161,10 +19833,71 @@ fn(DT_N_S_soc_S_i2s_40013000, dma_names, 1, __VA_ARGS__) #define DT_N_S_soc_S_i2s_40013000_P_dma_names_LEN 2 #define DT_N_S_soc_S_i2s_40013000_P_dma_names_EXISTS 1 -#define DT_N_S_soc_S_i2s_40013000_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_i2s_40013000_P_zephyr_deferred_init_EXISTS 1 #define DT_N_S_soc_S_i2s_40013000_P_mck_enabled 0 #define DT_N_S_soc_S_i2s_40013000_P_mck_enabled_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_status "disabled" +#define DT_N_S_soc_S_i2s_40013000_P_status_STRING_UNQUOTED disabled +#define DT_N_S_soc_S_i2s_40013000_P_status_STRING_TOKEN disabled +#define DT_N_S_soc_S_i2s_40013000_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_i2s_40013000_P_status_IDX_0 "disabled" +#define DT_N_S_soc_S_i2s_40013000_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_i2s_40013000_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40013000, status, 0) +#define DT_N_S_soc_S_i2s_40013000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40013000, status, 0) +#define DT_N_S_soc_S_i2s_40013000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40013000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40013000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40013000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40013000_P_status_LEN 1 +#define DT_N_S_soc_S_i2s_40013000_P_status_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_compatible {"st,stm32h7-i2s", "st,stm32-i2s"} +#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_0 "st,stm32h7-i2s" +#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-i2s +#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_i2s +#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_I2S +#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_1 "st,stm32-i2s" +#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-i2s +#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_1_STRING_TOKEN st_stm32_i2s +#define DT_N_S_soc_S_i2s_40013000_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_I2S +#define DT_N_S_soc_S_i2s_40013000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40013000, compatible, 0) \ + fn(DT_N_S_soc_S_i2s_40013000, compatible, 1) +#define DT_N_S_soc_S_i2s_40013000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40013000, compatible, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2s_40013000, compatible, 1) +#define DT_N_S_soc_S_i2s_40013000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40013000, compatible, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_i2s_40013000, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40013000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40013000, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2s_40013000, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40013000_P_compatible_LEN 2 +#define DT_N_S_soc_S_i2s_40013000_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_0_VAL_bus 240 +#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_0_VAL_bits 4096 +#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_1_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_1_VAL_bus 9 +#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_1_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_1_VAL_bits 60496 +#define DT_N_S_soc_S_i2s_40013000_P_clocks_IDX_1_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2s_40013000, clocks, 0) \ + fn(DT_N_S_soc_S_i2s_40013000, clocks, 1) +#define DT_N_S_soc_S_i2s_40013000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2s_40013000, clocks, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2s_40013000, clocks, 1) +#define DT_N_S_soc_S_i2s_40013000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2s_40013000, clocks, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_i2s_40013000, clocks, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40013000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2s_40013000, clocks, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_i2s_40013000, clocks, 1, __VA_ARGS__) +#define DT_N_S_soc_S_i2s_40013000_P_clocks_LEN 2 +#define DT_N_S_soc_S_i2s_40013000_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_i2s_40013000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_wakeup_source 0 +#define DT_N_S_soc_S_i2s_40013000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_i2s_40013000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_i2s_40013000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/interrupt-controller@58000000 @@ -19183,6 +19916,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_interrupt_controller_58000000_FULL_NAME "interrupt-controller@58000000" +#define DT_N_S_soc_S_interrupt_controller_58000000_FULL_NAME_UNQUOTED interrupt-controller@58000000 +#define DT_N_S_soc_S_interrupt_controller_58000000_FULL_NAME_TOKEN interrupt_controller_58000000 +#define DT_N_S_soc_S_interrupt_controller_58000000_FULL_NAME_UPPER_TOKEN INTERRUPT_CONTROLLER_58000000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_interrupt_controller_58000000_PARENT DT_N_S_soc @@ -19208,13 +19944,13 @@ #define DT_N_S_soc_S_interrupt_controller_58000000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_interrupt_controller_58000000_ORD 129 -#define DT_N_S_soc_S_interrupt_controller_58000000_ORD_STR_SORTABLE 00129 +#define DT_N_S_soc_S_interrupt_controller_58000000_ORD 132 +#define DT_N_S_soc_S_interrupt_controller_58000000_ORD_STR_SORTABLE 00132 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_interrupt_controller_58000000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ + 4, \ + 5, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_interrupt_controller_58000000_SUPPORTS_ORDS /* nothing */ @@ -19227,8 +19963,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_interrupt_controller_58000000_REG_NUM 1 #define DT_N_S_soc_S_interrupt_controller_58000000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_REG_IDX_0_VAL_ADDRESS 1476395008 /* 0x58000000 */ -#define DT_N_S_soc_S_interrupt_controller_58000000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_interrupt_controller_58000000_REG_IDX_0_VAL_ADDRESS 1476395008 +#define DT_N_S_soc_S_interrupt_controller_58000000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_interrupt_controller_58000000_RANGES_NUM 0 #define DT_N_S_soc_S_interrupt_controller_58000000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_interrupt_controller_58000000_IRQ_NUM 7 @@ -19328,94 +20064,78 @@ #define DT_N_S_soc_S_interrupt_controller_58000000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_interrupt_controller_58000000_P_wakeup_source 0 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible {"st,stm32-exti"} -#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_IDX_0 "st,stm32-exti" -#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-exti -#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_IDX_0_STRING_TOKEN st_stm32_exti -#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_EXTI -#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_interrupt_controller_58000000, compatible, 0) -#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_interrupt_controller_58000000, compatible, 0) -#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_interrupt_controller_58000000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_interrupt_controller_58000000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_LEN 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_reg {1476395008 /* 0x58000000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_interrupt_controller_58000000_P_reg_IDX_0 1476395008 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_reg {1476395008, 1024} #define DT_N_S_soc_S_interrupt_controller_58000000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_reg_IDX_0 1476395008 #define DT_N_S_soc_S_interrupt_controller_58000000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_reg_IDX_1 1024 #define DT_N_S_soc_S_interrupt_controller_58000000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts {6 /* 0x6 */, 0 /* 0x0 */, 7 /* 0x7 */, 0 /* 0x0 */, 8 /* 0x8 */, 0 /* 0x0 */, 9 /* 0x9 */, 0 /* 0x0 */, 10 /* 0xa */, 0 /* 0x0 */, 23 /* 0x17 */, 0 /* 0x0 */, 40 /* 0x28 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_0 6 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts {6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 23, 0, 40, 0} #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_0 6 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_2 7 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_3 0 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_2 7 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_4 8 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_3 0 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_5 0 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_4 8 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_6 9 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_5 0 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_7 0 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_6 9 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_7_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_8 10 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_7 0 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_8_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_9 0 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_8 10 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_9_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_10 23 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_9 0 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_10_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_11 0 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_10 23 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_11_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_12 40 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_11 0 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_12_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_13 0 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_12 40 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_13_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_IDX_13 0 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names {"line0", "line1", "line2", "line3", "line4", "line5-9", "line10-15"} +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_0 "line0" #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_0_STRING_UNQUOTED line0 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_0_STRING_TOKEN line0 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN LINE0 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_1 "line1" #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_1_STRING_UNQUOTED line1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_1_STRING_TOKEN line1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_1_STRING_UPPER_TOKEN LINE1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_2_EXISTS 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_2 "line2" #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_2_STRING_UNQUOTED line2 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_2_STRING_TOKEN line2 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_2_STRING_UPPER_TOKEN LINE2 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_3_EXISTS 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_3 "line3" #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_3_STRING_UNQUOTED line3 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_3_STRING_TOKEN line3 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_3_STRING_UPPER_TOKEN LINE3 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_4_EXISTS 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_4 "line4" #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_4_STRING_UNQUOTED line4 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_4_STRING_TOKEN line4 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_4_STRING_UPPER_TOKEN LINE4 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_4_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_5_EXISTS 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_5 "line5-9" #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_5_STRING_UNQUOTED line5-9 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_5_STRING_TOKEN line5_9 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_5_STRING_UPPER_TOKEN LINE5_9 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_5_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_6_EXISTS 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_6 "line10-15" #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_6_STRING_UNQUOTED line10-15 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_6_STRING_TOKEN line10_15 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_6_STRING_UPPER_TOKEN LINE10_15 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_IDX_6_EXISTS 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_interrupt_controller_58000000, interrupt_names, 0) \ fn(DT_N_S_soc_S_interrupt_controller_58000000, interrupt_names, 1) \ fn(DT_N_S_soc_S_interrupt_controller_58000000, interrupt_names, 2) \ @@ -19446,41 +20166,37 @@ fn(DT_N_S_soc_S_interrupt_controller_58000000, interrupt_names, 6, __VA_ARGS__) #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_LEN 7 #define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_controller 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_controller_EXISTS 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_num_lines 16 #define DT_N_S_soc_S_interrupt_controller_58000000_P_num_lines_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges {0 /* 0x0 */, 1 /* 0x1 */, 1 /* 0x1 */, 1 /* 0x1 */, 2 /* 0x2 */, 1 /* 0x1 */, 3 /* 0x3 */, 1 /* 0x1 */, 4 /* 0x4 */, 1 /* 0x1 */, 5 /* 0x5 */, 5 /* 0x5 */, 10 /* 0xa */, 6 /* 0x6 */} -#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_0 0 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges {0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 5, 10, 6} #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_1 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_0 0 #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_2 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_1 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_3 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_2 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_4 2 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_3 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_5 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_4 2 #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_6 3 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_5 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_7 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_6 3 #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_7_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_8 4 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_7 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_8_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_9 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_8 4 #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_9_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_10 5 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_9 1 #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_10_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_11 5 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_10 5 #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_11_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_12 10 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_11 5 #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_12_EXISTS 1 -#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_13 6 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_12 10 #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_13_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_IDX_13 6 #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_interrupt_controller_58000000, line_ranges, 0) \ fn(DT_N_S_soc_S_interrupt_controller_58000000, line_ranges, 1) \ fn(DT_N_S_soc_S_interrupt_controller_58000000, line_ranges, 2) \ @@ -19539,6 +20255,26 @@ fn(DT_N_S_soc_S_interrupt_controller_58000000, line_ranges, 13, __VA_ARGS__) #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_LEN 14 #define DT_N_S_soc_S_interrupt_controller_58000000_P_line_ranges_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible {"st,stm32-exti"} +#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_IDX_0 "st,stm32-exti" +#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-exti +#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_IDX_0_STRING_TOKEN st_stm32_exti +#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_EXTI +#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_interrupt_controller_58000000, compatible, 0) +#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_interrupt_controller_58000000, compatible, 0) +#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_interrupt_controller_58000000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_interrupt_controller_58000000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_LEN 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_wakeup_source 0 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_controller 1 +#define DT_N_S_soc_S_interrupt_controller_58000000_P_interrupt_controller_EXISTS 1 /* * Devicetree node: /soc/mailbox@58026400 @@ -19557,6 +20293,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_mailbox_58026400_FULL_NAME "mailbox@58026400" +#define DT_N_S_soc_S_mailbox_58026400_FULL_NAME_UNQUOTED mailbox@58026400 +#define DT_N_S_soc_S_mailbox_58026400_FULL_NAME_TOKEN mailbox_58026400 +#define DT_N_S_soc_S_mailbox_58026400_FULL_NAME_UPPER_TOKEN MAILBOX_58026400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_mailbox_58026400_PARENT DT_N_S_soc @@ -19582,14 +20321,14 @@ #define DT_N_S_soc_S_mailbox_58026400_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_mailbox_58026400_ORD 130 -#define DT_N_S_soc_S_mailbox_58026400_ORD_STR_SORTABLE 00130 +#define DT_N_S_soc_S_mailbox_58026400_ORD 133 +#define DT_N_S_soc_S_mailbox_58026400_ORD_STR_SORTABLE 00133 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_mailbox_58026400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_mailbox_58026400_SUPPORTS_ORDS /* nothing */ @@ -19603,8 +20342,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_mailbox_58026400_REG_NUM 1 #define DT_N_S_soc_S_mailbox_58026400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_mailbox_58026400_REG_IDX_0_VAL_ADDRESS 1476551680 /* 0x58026400 */ -#define DT_N_S_soc_S_mailbox_58026400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_mailbox_58026400_REG_IDX_0_VAL_ADDRESS 1476551680 +#define DT_N_S_soc_S_mailbox_58026400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_mailbox_58026400_RANGES_NUM 0 #define DT_N_S_soc_S_mailbox_58026400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_mailbox_58026400_IRQ_NUM 1 @@ -19632,20 +20371,32 @@ #define DT_N_S_soc_S_mailbox_58026400_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_mailbox_58026400_P_wakeup_source 0 -#define DT_N_S_soc_S_mailbox_58026400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_mailbox_58026400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_mailbox_58026400_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_mailbox_58026400_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_mailbox_58026400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_mailbox_58026400_P_clocks_IDX_0_VAL_bus 224 +#define DT_N_S_soc_S_mailbox_58026400_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_mailbox_58026400_P_clocks_IDX_0_VAL_bits 33554432 +#define DT_N_S_soc_S_mailbox_58026400_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_mailbox_58026400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_mailbox_58026400, clocks, 0) +#define DT_N_S_soc_S_mailbox_58026400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_mailbox_58026400, clocks, 0) +#define DT_N_S_soc_S_mailbox_58026400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_mailbox_58026400, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_mailbox_58026400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_mailbox_58026400, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_mailbox_58026400_P_clocks_LEN 1 +#define DT_N_S_soc_S_mailbox_58026400_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_mailbox_58026400_P_interrupts {125, 0} +#define DT_N_S_soc_S_mailbox_58026400_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_mailbox_58026400_P_interrupts_IDX_0 125 +#define DT_N_S_soc_S_mailbox_58026400_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_mailbox_58026400_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_mailbox_58026400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_mailbox_58026400_P_status "okay" #define DT_N_S_soc_S_mailbox_58026400_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_mailbox_58026400_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_mailbox_58026400_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_mailbox_58026400_P_status_IDX_0 "okay" #define DT_N_S_soc_S_mailbox_58026400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_mailbox_58026400_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_mailbox_58026400_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_mailbox_58026400_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_mailbox_58026400_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_mailbox_58026400_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_mailbox_58026400_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_mailbox_58026400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_mailbox_58026400, status, 0) #define DT_N_S_soc_S_mailbox_58026400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_mailbox_58026400, status, 0) #define DT_N_S_soc_S_mailbox_58026400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_mailbox_58026400, status, 0, __VA_ARGS__) @@ -19653,16 +20404,16 @@ #define DT_N_S_soc_S_mailbox_58026400_P_status_LEN 1 #define DT_N_S_soc_S_mailbox_58026400_P_status_EXISTS 1 #define DT_N_S_soc_S_mailbox_58026400_P_compatible {"st,stm32-hsem-mailbox", "st,mbox-stm32-hsem"} +#define DT_N_S_soc_S_mailbox_58026400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_mailbox_58026400_P_compatible_IDX_0 "st,stm32-hsem-mailbox" #define DT_N_S_soc_S_mailbox_58026400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-hsem-mailbox #define DT_N_S_soc_S_mailbox_58026400_P_compatible_IDX_0_STRING_TOKEN st_stm32_hsem_mailbox #define DT_N_S_soc_S_mailbox_58026400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_HSEM_MAILBOX -#define DT_N_S_soc_S_mailbox_58026400_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_mailbox_58026400_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_soc_S_mailbox_58026400_P_compatible_IDX_1 "st,mbox-stm32-hsem" #define DT_N_S_soc_S_mailbox_58026400_P_compatible_IDX_1_STRING_UNQUOTED st,mbox-stm32-hsem #define DT_N_S_soc_S_mailbox_58026400_P_compatible_IDX_1_STRING_TOKEN st_mbox_stm32_hsem #define DT_N_S_soc_S_mailbox_58026400_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_MBOX_STM32_HSEM -#define DT_N_S_soc_S_mailbox_58026400_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_soc_S_mailbox_58026400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_mailbox_58026400, compatible, 0) \ fn(DT_N_S_soc_S_mailbox_58026400, compatible, 1) #define DT_N_S_soc_S_mailbox_58026400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_mailbox_58026400, compatible, 0) DT_DEBRACKET_INTERNAL sep \ @@ -19673,32 +20424,18 @@ fn(DT_N_S_soc_S_mailbox_58026400, compatible, 1, __VA_ARGS__) #define DT_N_S_soc_S_mailbox_58026400_P_compatible_LEN 2 #define DT_N_S_soc_S_mailbox_58026400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_mailbox_58026400_P_reg {1476551680 /* 0x58026400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_mailbox_58026400_P_reg_IDX_0 1476551680 +#define DT_N_S_soc_S_mailbox_58026400_P_reg {1476551680, 1024} #define DT_N_S_soc_S_mailbox_58026400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_mailbox_58026400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_mailbox_58026400_P_reg_IDX_0 1476551680 #define DT_N_S_soc_S_mailbox_58026400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_mailbox_58026400_P_reg_IDX_1 1024 #define DT_N_S_soc_S_mailbox_58026400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_mailbox_58026400_P_interrupts {125 /* 0x7d */, 0 /* 0x0 */} -#define DT_N_S_soc_S_mailbox_58026400_P_interrupts_IDX_0 125 -#define DT_N_S_soc_S_mailbox_58026400_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_mailbox_58026400_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_mailbox_58026400_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_mailbox_58026400_P_interrupts_EXISTS 1 -#define DT_N_S_soc_S_mailbox_58026400_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_mailbox_58026400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_mailbox_58026400_P_clocks_IDX_0_VAL_bus 224 -#define DT_N_S_soc_S_mailbox_58026400_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_mailbox_58026400_P_clocks_IDX_0_VAL_bits 33554432 -#define DT_N_S_soc_S_mailbox_58026400_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_mailbox_58026400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_mailbox_58026400, clocks, 0) -#define DT_N_S_soc_S_mailbox_58026400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_mailbox_58026400, clocks, 0) -#define DT_N_S_soc_S_mailbox_58026400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_mailbox_58026400, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_mailbox_58026400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_mailbox_58026400, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_mailbox_58026400_P_clocks_LEN 1 -#define DT_N_S_soc_S_mailbox_58026400_P_clocks_EXISTS 1 #define DT_N_S_soc_S_mailbox_58026400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_mailbox_58026400_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_mailbox_58026400_P_wakeup_source 0 +#define DT_N_S_soc_S_mailbox_58026400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_mailbox_58026400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_mailbox_58026400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/memory@38800000 @@ -19717,6 +20454,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_memory_38800000_FULL_NAME "memory@38800000" +#define DT_N_S_soc_S_memory_38800000_FULL_NAME_UNQUOTED memory@38800000 +#define DT_N_S_soc_S_memory_38800000_FULL_NAME_TOKEN memory_38800000 +#define DT_N_S_soc_S_memory_38800000_FULL_NAME_UPPER_TOKEN MEMORY_38800000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_memory_38800000_PARENT DT_N_S_soc @@ -19742,13 +20482,13 @@ #define DT_N_S_soc_S_memory_38800000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_memory_38800000_ORD 131 -#define DT_N_S_soc_S_memory_38800000_ORD_STR_SORTABLE 00131 +#define DT_N_S_soc_S_memory_38800000_ORD 134 +#define DT_N_S_soc_S_memory_38800000_ORD_STR_SORTABLE 00134 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_memory_38800000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_memory_38800000_SUPPORTS_ORDS /* nothing */ @@ -19762,8 +20502,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_memory_38800000_REG_NUM 1 #define DT_N_S_soc_S_memory_38800000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_memory_38800000_REG_IDX_0_VAL_ADDRESS 947912704 /* 0x38800000 */ -#define DT_N_S_soc_S_memory_38800000_REG_IDX_0_VAL_SIZE 4096 /* 0x1000 */ +#define DT_N_S_soc_S_memory_38800000_REG_IDX_0_VAL_ADDRESS 947912704 +#define DT_N_S_soc_S_memory_38800000_REG_IDX_0_VAL_SIZE 4096 #define DT_N_S_soc_S_memory_38800000_RANGES_NUM 0 #define DT_N_S_soc_S_memory_38800000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_memory_38800000_IRQ_NUM 0 @@ -19784,20 +20524,26 @@ #define DT_N_S_soc_S_memory_38800000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_memory_38800000_P_wakeup_source 0 -#define DT_N_S_soc_S_memory_38800000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_memory_38800000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_memory_38800000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region "BACKUP_SRAM" +#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_STRING_UNQUOTED BACKUP_SRAM +#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_STRING_TOKEN BACKUP_SRAM +#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_STRING_UPPER_TOKEN BACKUP_SRAM +#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_IDX_0 "BACKUP_SRAM" +#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_memory_38800000, zephyr_memory_region, 0) +#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_memory_38800000, zephyr_memory_region, 0) +#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_memory_38800000, zephyr_memory_region, 0, __VA_ARGS__) +#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_memory_38800000, zephyr_memory_region, 0, __VA_ARGS__) +#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_LEN 1 +#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_EXISTS 1 #define DT_N_S_soc_S_memory_38800000_P_status "disabled" #define DT_N_S_soc_S_memory_38800000_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_memory_38800000_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_memory_38800000_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_memory_38800000_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_memory_38800000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_memory_38800000_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_memory_38800000_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_memory_38800000_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_memory_38800000_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_memory_38800000_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_memory_38800000_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_memory_38800000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_memory_38800000, status, 0) #define DT_N_S_soc_S_memory_38800000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_memory_38800000, status, 0) #define DT_N_S_soc_S_memory_38800000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_memory_38800000, status, 0, __VA_ARGS__) @@ -19805,16 +20551,16 @@ #define DT_N_S_soc_S_memory_38800000_P_status_LEN 1 #define DT_N_S_soc_S_memory_38800000_P_status_EXISTS 1 #define DT_N_S_soc_S_memory_38800000_P_compatible {"zephyr,memory-region", "st,stm32-backup-sram"} +#define DT_N_S_soc_S_memory_38800000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_memory_38800000_P_compatible_IDX_0 "zephyr,memory-region" #define DT_N_S_soc_S_memory_38800000_P_compatible_IDX_0_STRING_UNQUOTED zephyr,memory-region #define DT_N_S_soc_S_memory_38800000_P_compatible_IDX_0_STRING_TOKEN zephyr_memory_region #define DT_N_S_soc_S_memory_38800000_P_compatible_IDX_0_STRING_UPPER_TOKEN ZEPHYR_MEMORY_REGION -#define DT_N_S_soc_S_memory_38800000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_memory_38800000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_soc_S_memory_38800000_P_compatible_IDX_1 "st,stm32-backup-sram" #define DT_N_S_soc_S_memory_38800000_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-backup-sram #define DT_N_S_soc_S_memory_38800000_P_compatible_IDX_1_STRING_TOKEN st_stm32_backup_sram #define DT_N_S_soc_S_memory_38800000_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_BACKUP_SRAM -#define DT_N_S_soc_S_memory_38800000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_soc_S_memory_38800000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_memory_38800000, compatible, 0) \ fn(DT_N_S_soc_S_memory_38800000, compatible, 1) #define DT_N_S_soc_S_memory_38800000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_memory_38800000, compatible, 0) DT_DEBRACKET_INTERNAL sep \ @@ -19825,11 +20571,11 @@ fn(DT_N_S_soc_S_memory_38800000, compatible, 1, __VA_ARGS__) #define DT_N_S_soc_S_memory_38800000_P_compatible_LEN 2 #define DT_N_S_soc_S_memory_38800000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_memory_38800000_P_reg {947912704 /* 0x38800000 */, 4096 /* 0x1000 */} -#define DT_N_S_soc_S_memory_38800000_P_reg_IDX_0 947912704 +#define DT_N_S_soc_S_memory_38800000_P_reg {947912704, 4096} #define DT_N_S_soc_S_memory_38800000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_memory_38800000_P_reg_IDX_1 4096 +#define DT_N_S_soc_S_memory_38800000_P_reg_IDX_0 947912704 #define DT_N_S_soc_S_memory_38800000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_memory_38800000_P_reg_IDX_1 4096 #define DT_N_S_soc_S_memory_38800000_P_reg_EXISTS 1 #define DT_N_S_soc_S_memory_38800000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_memory_38800000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -19845,18 +20591,10 @@ #define DT_N_S_soc_S_memory_38800000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_memory_38800000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_memory_38800000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region "BACKUP_SRAM" -#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_STRING_UNQUOTED BACKUP_SRAM -#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_STRING_TOKEN BACKUP_SRAM -#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_STRING_UPPER_TOKEN BACKUP_SRAM -#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_IDX_0 "BACKUP_SRAM" -#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_memory_38800000, zephyr_memory_region, 0) -#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_memory_38800000, zephyr_memory_region, 0) -#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_memory_38800000, zephyr_memory_region, 0, __VA_ARGS__) -#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_memory_38800000, zephyr_memory_region, 0, __VA_ARGS__) -#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_LEN 1 -#define DT_N_S_soc_S_memory_38800000_P_zephyr_memory_region_EXISTS 1 +#define DT_N_S_soc_S_memory_38800000_P_wakeup_source 0 +#define DT_N_S_soc_S_memory_38800000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_memory_38800000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_memory_38800000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/rng@48021800 @@ -19875,6 +20613,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_rng_48021800_FULL_NAME "rng@48021800" +#define DT_N_S_soc_S_rng_48021800_FULL_NAME_UNQUOTED rng@48021800 +#define DT_N_S_soc_S_rng_48021800_FULL_NAME_TOKEN rng_48021800 +#define DT_N_S_soc_S_rng_48021800_FULL_NAME_UPPER_TOKEN RNG_48021800 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_rng_48021800_PARENT DT_N_S_soc @@ -19900,14 +20641,14 @@ #define DT_N_S_soc_S_rng_48021800_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_rng_48021800_ORD 132 -#define DT_N_S_soc_S_rng_48021800_ORD_STR_SORTABLE 00132 +#define DT_N_S_soc_S_rng_48021800_ORD 135 +#define DT_N_S_soc_S_rng_48021800_ORD_STR_SORTABLE 00135 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_rng_48021800_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_rng_48021800_SUPPORTS_ORDS /* nothing */ @@ -19920,8 +20661,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_rng_48021800_REG_NUM 1 #define DT_N_S_soc_S_rng_48021800_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_rng_48021800_REG_IDX_0_VAL_ADDRESS 1208096768 /* 0x48021800 */ -#define DT_N_S_soc_S_rng_48021800_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_rng_48021800_REG_IDX_0_VAL_ADDRESS 1208096768 +#define DT_N_S_soc_S_rng_48021800_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_rng_48021800_RANGES_NUM 0 #define DT_N_S_soc_S_rng_48021800_FOREACH_RANGE(fn) #define DT_N_S_soc_S_rng_48021800_IRQ_NUM 1 @@ -19944,20 +20685,32 @@ #define DT_N_S_soc_S_rng_48021800_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_rng_48021800_P_wakeup_source 0 -#define DT_N_S_soc_S_rng_48021800_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_rng_48021800_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_rng_48021800_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_rng_48021800_P_reg {1208096768, 1024} +#define DT_N_S_soc_S_rng_48021800_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_rng_48021800_P_reg_IDX_0 1208096768 +#define DT_N_S_soc_S_rng_48021800_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_rng_48021800_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_rng_48021800_P_reg_EXISTS 1 +#define DT_N_S_soc_S_rng_48021800_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_rng_48021800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_rng_48021800_P_clocks_IDX_0_VAL_bus 220 +#define DT_N_S_soc_S_rng_48021800_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_rng_48021800_P_clocks_IDX_0_VAL_bits 64 +#define DT_N_S_soc_S_rng_48021800_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_rng_48021800_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_rng_48021800, clocks, 0) +#define DT_N_S_soc_S_rng_48021800_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_rng_48021800, clocks, 0) +#define DT_N_S_soc_S_rng_48021800_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_rng_48021800, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_rng_48021800_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_rng_48021800, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_rng_48021800_P_clocks_LEN 1 +#define DT_N_S_soc_S_rng_48021800_P_clocks_EXISTS 1 #define DT_N_S_soc_S_rng_48021800_P_status "okay" #define DT_N_S_soc_S_rng_48021800_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_rng_48021800_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_rng_48021800_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_rng_48021800_P_status_IDX_0 "okay" #define DT_N_S_soc_S_rng_48021800_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_rng_48021800_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_rng_48021800_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_rng_48021800_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_rng_48021800_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_rng_48021800_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_rng_48021800_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_rng_48021800_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_rng_48021800, status, 0) #define DT_N_S_soc_S_rng_48021800_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_rng_48021800, status, 0) #define DT_N_S_soc_S_rng_48021800_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_rng_48021800, status, 0, __VA_ARGS__) @@ -19965,43 +20718,29 @@ #define DT_N_S_soc_S_rng_48021800_P_status_LEN 1 #define DT_N_S_soc_S_rng_48021800_P_status_EXISTS 1 #define DT_N_S_soc_S_rng_48021800_P_compatible {"st,stm32-rng"} +#define DT_N_S_soc_S_rng_48021800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_rng_48021800_P_compatible_IDX_0 "st,stm32-rng" #define DT_N_S_soc_S_rng_48021800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-rng #define DT_N_S_soc_S_rng_48021800_P_compatible_IDX_0_STRING_TOKEN st_stm32_rng #define DT_N_S_soc_S_rng_48021800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_RNG -#define DT_N_S_soc_S_rng_48021800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_rng_48021800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_rng_48021800, compatible, 0) #define DT_N_S_soc_S_rng_48021800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_rng_48021800, compatible, 0) #define DT_N_S_soc_S_rng_48021800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_rng_48021800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_rng_48021800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_rng_48021800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_rng_48021800_P_compatible_LEN 1 #define DT_N_S_soc_S_rng_48021800_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_rng_48021800_P_reg {1208096768 /* 0x48021800 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_rng_48021800_P_reg_IDX_0 1208096768 -#define DT_N_S_soc_S_rng_48021800_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_rng_48021800_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_rng_48021800_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_rng_48021800_P_reg_EXISTS 1 -#define DT_N_S_soc_S_rng_48021800_P_interrupts {80 /* 0x50 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_rng_48021800_P_interrupts_IDX_0 80 +#define DT_N_S_soc_S_rng_48021800_P_interrupts {80, 0} #define DT_N_S_soc_S_rng_48021800_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_rng_48021800_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_rng_48021800_P_interrupts_IDX_0 80 #define DT_N_S_soc_S_rng_48021800_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_rng_48021800_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_rng_48021800_P_interrupts_EXISTS 1 -#define DT_N_S_soc_S_rng_48021800_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_rng_48021800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_rng_48021800_P_clocks_IDX_0_VAL_bus 220 -#define DT_N_S_soc_S_rng_48021800_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_rng_48021800_P_clocks_IDX_0_VAL_bits 64 -#define DT_N_S_soc_S_rng_48021800_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_rng_48021800_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_rng_48021800, clocks, 0) -#define DT_N_S_soc_S_rng_48021800_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_rng_48021800, clocks, 0) -#define DT_N_S_soc_S_rng_48021800_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_rng_48021800, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_rng_48021800_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_rng_48021800, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_rng_48021800_P_clocks_LEN 1 -#define DT_N_S_soc_S_rng_48021800_P_clocks_EXISTS 1 #define DT_N_S_soc_S_rng_48021800_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_rng_48021800_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_rng_48021800_P_wakeup_source 0 +#define DT_N_S_soc_S_rng_48021800_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_rng_48021800_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_rng_48021800_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/sdmmc@48022400 @@ -20020,6 +20759,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_sdmmc_48022400_FULL_NAME "sdmmc@48022400" +#define DT_N_S_soc_S_sdmmc_48022400_FULL_NAME_UNQUOTED sdmmc@48022400 +#define DT_N_S_soc_S_sdmmc_48022400_FULL_NAME_TOKEN sdmmc_48022400 +#define DT_N_S_soc_S_sdmmc_48022400_FULL_NAME_UPPER_TOKEN SDMMC_48022400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_sdmmc_48022400_PARENT DT_N_S_soc @@ -20045,15 +20787,15 @@ #define DT_N_S_soc_S_sdmmc_48022400_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_sdmmc_48022400_ORD 133 -#define DT_N_S_soc_S_sdmmc_48022400_ORD_STR_SORTABLE 00133 +#define DT_N_S_soc_S_sdmmc_48022400_ORD 136 +#define DT_N_S_soc_S_sdmmc_48022400_ORD_STR_SORTABLE 00136 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_sdmmc_48022400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_sdmmc_48022400_SUPPORTS_ORDS /* nothing */ @@ -20066,8 +20808,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_sdmmc_48022400_REG_NUM 1 #define DT_N_S_soc_S_sdmmc_48022400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_48022400_REG_IDX_0_VAL_ADDRESS 1208099840 /* 0x48022400 */ -#define DT_N_S_soc_S_sdmmc_48022400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_sdmmc_48022400_REG_IDX_0_VAL_ADDRESS 1208099840 +#define DT_N_S_soc_S_sdmmc_48022400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_sdmmc_48022400_RANGES_NUM 0 #define DT_N_S_soc_S_sdmmc_48022400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_sdmmc_48022400_IRQ_NUM 1 @@ -20090,50 +20832,6 @@ #define DT_N_S_soc_S_sdmmc_48022400_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_sdmmc_48022400_P_wakeup_source 0 -#define DT_N_S_soc_S_sdmmc_48022400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_sdmmc_48022400_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_status "disabled" -#define DT_N_S_soc_S_sdmmc_48022400_P_status_STRING_UNQUOTED disabled -#define DT_N_S_soc_S_sdmmc_48022400_P_status_STRING_TOKEN disabled -#define DT_N_S_soc_S_sdmmc_48022400_P_status_STRING_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_sdmmc_48022400_P_status_IDX_0 "disabled" -#define DT_N_S_soc_S_sdmmc_48022400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_sdmmc_48022400_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_sdmmc_48022400_P_status_ENUM_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_sdmmc_48022400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_sdmmc_48022400, status, 0) -#define DT_N_S_soc_S_sdmmc_48022400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_sdmmc_48022400, status, 0) -#define DT_N_S_soc_S_sdmmc_48022400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_sdmmc_48022400, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_sdmmc_48022400_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_sdmmc_48022400, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_sdmmc_48022400_P_status_LEN 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_status_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_compatible {"st,stm32-sdmmc"} -#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_IDX_0 "st,stm32-sdmmc" -#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-sdmmc -#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_IDX_0_STRING_TOKEN st_stm32_sdmmc -#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_SDMMC -#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_sdmmc_48022400, compatible, 0) -#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_sdmmc_48022400, compatible, 0) -#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_sdmmc_48022400, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_sdmmc_48022400, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_LEN 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_reg {1208099840 /* 0x48022400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_sdmmc_48022400_P_reg_IDX_0 1208099840 -#define DT_N_S_soc_S_sdmmc_48022400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_sdmmc_48022400_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_interrupts {124 /* 0x7c */, 0 /* 0x0 */} -#define DT_N_S_soc_S_sdmmc_48022400_P_interrupts_IDX_0 124 -#define DT_N_S_soc_S_sdmmc_48022400_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_sdmmc_48022400_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_sdmmc_48022400_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_sdmmc_48022400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_sdmmc_48022400_P_clocks_IDX_0_VAL_bus 220 @@ -20156,8 +20854,12 @@ fn(DT_N_S_soc_S_sdmmc_48022400, clocks, 1, __VA_ARGS__) #define DT_N_S_soc_S_sdmmc_48022400_P_clocks_LEN 2 #define DT_N_S_soc_S_sdmmc_48022400_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_sdmmc_48022400_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_reg {1208099840, 1024} +#define DT_N_S_soc_S_sdmmc_48022400_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_reg_IDX_0 1208099840 +#define DT_N_S_soc_S_sdmmc_48022400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_sdmmc_48022400_P_reg_EXISTS 1 #define DT_N_S_soc_S_sdmmc_48022400_P_resets_IDX_0_EXISTS 1 #define DT_N_S_soc_S_sdmmc_48022400_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller #define DT_N_S_soc_S_sdmmc_48022400_P_resets_IDX_0_VAL_id 4233 @@ -20169,13 +20871,52 @@ #define DT_N_S_soc_S_sdmmc_48022400_P_resets_LEN 1 #define DT_N_S_soc_S_sdmmc_48022400_P_resets_EXISTS 1 #define DT_N_S_soc_S_sdmmc_48022400_P_bus_width 1 -#define DT_N_S_soc_S_sdmmc_48022400_P_bus_width_ENUM_IDX 0 -#define DT_N_S_soc_S_sdmmc_48022400_P_bus_width_ENUM_VAL_1_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_bus_width_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_sdmmc_48022400_P_bus_width_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_bus_width_IDX_0_ENUM_VAL_1_EXISTS 1 #define DT_N_S_soc_S_sdmmc_48022400_P_bus_width_EXISTS 1 #define DT_N_S_soc_S_sdmmc_48022400_P_clk_div 0 #define DT_N_S_soc_S_sdmmc_48022400_P_clk_div_EXISTS 1 #define DT_N_S_soc_S_sdmmc_48022400_P_idma 0 #define DT_N_S_soc_S_sdmmc_48022400_P_idma_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_status "disabled" +#define DT_N_S_soc_S_sdmmc_48022400_P_status_STRING_UNQUOTED disabled +#define DT_N_S_soc_S_sdmmc_48022400_P_status_STRING_TOKEN disabled +#define DT_N_S_soc_S_sdmmc_48022400_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_sdmmc_48022400_P_status_IDX_0 "disabled" +#define DT_N_S_soc_S_sdmmc_48022400_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_sdmmc_48022400_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_sdmmc_48022400, status, 0) +#define DT_N_S_soc_S_sdmmc_48022400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_sdmmc_48022400, status, 0) +#define DT_N_S_soc_S_sdmmc_48022400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_sdmmc_48022400, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_sdmmc_48022400_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_sdmmc_48022400, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_sdmmc_48022400_P_status_LEN 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_status_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_compatible {"st,stm32-sdmmc"} +#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_IDX_0 "st,stm32-sdmmc" +#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-sdmmc +#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_IDX_0_STRING_TOKEN st_stm32_sdmmc +#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_SDMMC +#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_sdmmc_48022400, compatible, 0) +#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_sdmmc_48022400, compatible, 0) +#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_sdmmc_48022400, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_sdmmc_48022400, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_LEN 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_interrupts {124, 0} +#define DT_N_S_soc_S_sdmmc_48022400_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_interrupts_IDX_0 124 +#define DT_N_S_soc_S_sdmmc_48022400_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_sdmmc_48022400_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_sdmmc_48022400_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_wakeup_source 0 +#define DT_N_S_soc_S_sdmmc_48022400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_48022400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_sdmmc_48022400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/sdmmc@52007000 @@ -20194,6 +20935,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_sdmmc_52007000_FULL_NAME "sdmmc@52007000" +#define DT_N_S_soc_S_sdmmc_52007000_FULL_NAME_UNQUOTED sdmmc@52007000 +#define DT_N_S_soc_S_sdmmc_52007000_FULL_NAME_TOKEN sdmmc_52007000 +#define DT_N_S_soc_S_sdmmc_52007000_FULL_NAME_UPPER_TOKEN SDMMC_52007000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_sdmmc_52007000_PARENT DT_N_S_soc @@ -20219,15 +20963,15 @@ #define DT_N_S_soc_S_sdmmc_52007000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_sdmmc_52007000_ORD 134 -#define DT_N_S_soc_S_sdmmc_52007000_ORD_STR_SORTABLE 00134 +#define DT_N_S_soc_S_sdmmc_52007000_ORD 137 +#define DT_N_S_soc_S_sdmmc_52007000_ORD_STR_SORTABLE 00137 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_sdmmc_52007000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_sdmmc_52007000_SUPPORTS_ORDS /* nothing */ @@ -20240,8 +20984,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_sdmmc_52007000_REG_NUM 1 #define DT_N_S_soc_S_sdmmc_52007000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_52007000_REG_IDX_0_VAL_ADDRESS 1375760384 /* 0x52007000 */ -#define DT_N_S_soc_S_sdmmc_52007000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_sdmmc_52007000_REG_IDX_0_VAL_ADDRESS 1375760384 +#define DT_N_S_soc_S_sdmmc_52007000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_sdmmc_52007000_RANGES_NUM 0 #define DT_N_S_soc_S_sdmmc_52007000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_sdmmc_52007000_IRQ_NUM 1 @@ -20264,50 +21008,6 @@ #define DT_N_S_soc_S_sdmmc_52007000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_sdmmc_52007000_P_wakeup_source 0 -#define DT_N_S_soc_S_sdmmc_52007000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_sdmmc_52007000_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_status "disabled" -#define DT_N_S_soc_S_sdmmc_52007000_P_status_STRING_UNQUOTED disabled -#define DT_N_S_soc_S_sdmmc_52007000_P_status_STRING_TOKEN disabled -#define DT_N_S_soc_S_sdmmc_52007000_P_status_STRING_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_sdmmc_52007000_P_status_IDX_0 "disabled" -#define DT_N_S_soc_S_sdmmc_52007000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_sdmmc_52007000_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_sdmmc_52007000_P_status_ENUM_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_sdmmc_52007000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_sdmmc_52007000, status, 0) -#define DT_N_S_soc_S_sdmmc_52007000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_sdmmc_52007000, status, 0) -#define DT_N_S_soc_S_sdmmc_52007000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_sdmmc_52007000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_sdmmc_52007000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_sdmmc_52007000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_sdmmc_52007000_P_status_LEN 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_status_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_compatible {"st,stm32-sdmmc"} -#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_IDX_0 "st,stm32-sdmmc" -#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-sdmmc -#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_IDX_0_STRING_TOKEN st_stm32_sdmmc -#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_SDMMC -#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_sdmmc_52007000, compatible, 0) -#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_sdmmc_52007000, compatible, 0) -#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_sdmmc_52007000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_sdmmc_52007000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_LEN 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_reg {1375760384 /* 0x52007000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_sdmmc_52007000_P_reg_IDX_0 1375760384 -#define DT_N_S_soc_S_sdmmc_52007000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_sdmmc_52007000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_interrupts {49 /* 0x31 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_sdmmc_52007000_P_interrupts_IDX_0 49 -#define DT_N_S_soc_S_sdmmc_52007000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_sdmmc_52007000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_sdmmc_52007000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_sdmmc_52007000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_sdmmc_52007000_P_clocks_IDX_0_VAL_bus 212 @@ -20330,8 +21030,12 @@ fn(DT_N_S_soc_S_sdmmc_52007000, clocks, 1, __VA_ARGS__) #define DT_N_S_soc_S_sdmmc_52007000_P_clocks_LEN 2 #define DT_N_S_soc_S_sdmmc_52007000_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_sdmmc_52007000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_reg {1375760384, 1024} +#define DT_N_S_soc_S_sdmmc_52007000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_reg_IDX_0 1375760384 +#define DT_N_S_soc_S_sdmmc_52007000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_sdmmc_52007000_P_reg_EXISTS 1 #define DT_N_S_soc_S_sdmmc_52007000_P_resets_IDX_0_EXISTS 1 #define DT_N_S_soc_S_sdmmc_52007000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller #define DT_N_S_soc_S_sdmmc_52007000_P_resets_IDX_0_VAL_id 3984 @@ -20343,13 +21047,52 @@ #define DT_N_S_soc_S_sdmmc_52007000_P_resets_LEN 1 #define DT_N_S_soc_S_sdmmc_52007000_P_resets_EXISTS 1 #define DT_N_S_soc_S_sdmmc_52007000_P_bus_width 1 -#define DT_N_S_soc_S_sdmmc_52007000_P_bus_width_ENUM_IDX 0 -#define DT_N_S_soc_S_sdmmc_52007000_P_bus_width_ENUM_VAL_1_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_bus_width_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_sdmmc_52007000_P_bus_width_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_bus_width_IDX_0_ENUM_VAL_1_EXISTS 1 #define DT_N_S_soc_S_sdmmc_52007000_P_bus_width_EXISTS 1 #define DT_N_S_soc_S_sdmmc_52007000_P_clk_div 0 #define DT_N_S_soc_S_sdmmc_52007000_P_clk_div_EXISTS 1 #define DT_N_S_soc_S_sdmmc_52007000_P_idma 0 #define DT_N_S_soc_S_sdmmc_52007000_P_idma_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_status "disabled" +#define DT_N_S_soc_S_sdmmc_52007000_P_status_STRING_UNQUOTED disabled +#define DT_N_S_soc_S_sdmmc_52007000_P_status_STRING_TOKEN disabled +#define DT_N_S_soc_S_sdmmc_52007000_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_sdmmc_52007000_P_status_IDX_0 "disabled" +#define DT_N_S_soc_S_sdmmc_52007000_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_sdmmc_52007000_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_sdmmc_52007000, status, 0) +#define DT_N_S_soc_S_sdmmc_52007000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_sdmmc_52007000, status, 0) +#define DT_N_S_soc_S_sdmmc_52007000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_sdmmc_52007000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_sdmmc_52007000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_sdmmc_52007000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_sdmmc_52007000_P_status_LEN 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_status_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_compatible {"st,stm32-sdmmc"} +#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_IDX_0 "st,stm32-sdmmc" +#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-sdmmc +#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_IDX_0_STRING_TOKEN st_stm32_sdmmc +#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_SDMMC +#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_sdmmc_52007000, compatible, 0) +#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_sdmmc_52007000, compatible, 0) +#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_sdmmc_52007000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_sdmmc_52007000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_LEN 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_interrupts {49, 0} +#define DT_N_S_soc_S_sdmmc_52007000_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_interrupts_IDX_0 49 +#define DT_N_S_soc_S_sdmmc_52007000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_sdmmc_52007000_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_sdmmc_52007000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_wakeup_source 0 +#define DT_N_S_soc_S_sdmmc_52007000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_sdmmc_52007000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_sdmmc_52007000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/serial@40004800 @@ -20368,6 +21111,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_serial_40004800_FULL_NAME "serial@40004800" +#define DT_N_S_soc_S_serial_40004800_FULL_NAME_UNQUOTED serial@40004800 +#define DT_N_S_soc_S_serial_40004800_FULL_NAME_TOKEN serial_40004800 +#define DT_N_S_soc_S_serial_40004800_FULL_NAME_UPPER_TOKEN SERIAL_40004800 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_serial_40004800_PARENT DT_N_S_soc @@ -20393,15 +21139,15 @@ #define DT_N_S_soc_S_serial_40004800_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_serial_40004800_ORD 135 -#define DT_N_S_soc_S_serial_40004800_ORD_STR_SORTABLE 00135 +#define DT_N_S_soc_S_serial_40004800_ORD 138 +#define DT_N_S_soc_S_serial_40004800_ORD_STR_SORTABLE 00138 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_serial_40004800_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_serial_40004800_SUPPORTS_ORDS /* nothing */ @@ -20415,8 +21161,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_serial_40004800_REG_NUM 1 #define DT_N_S_soc_S_serial_40004800_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_REG_IDX_0_VAL_ADDRESS 1073760256 /* 0x40004800 */ -#define DT_N_S_soc_S_serial_40004800_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_serial_40004800_REG_IDX_0_VAL_ADDRESS 1073760256 +#define DT_N_S_soc_S_serial_40004800_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_serial_40004800_RANGES_NUM 0 #define DT_N_S_soc_S_serial_40004800_FOREACH_RANGE(fn) #define DT_N_S_soc_S_serial_40004800_IRQ_NUM 1 @@ -20444,59 +21190,12 @@ #define DT_N_S_soc_S_serial_40004800_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_serial_40004800_P_wakeup_source 0 -#define DT_N_S_soc_S_serial_40004800_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_serial_40004800_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_status "disabled" -#define DT_N_S_soc_S_serial_40004800_P_status_STRING_UNQUOTED disabled -#define DT_N_S_soc_S_serial_40004800_P_status_STRING_TOKEN disabled -#define DT_N_S_soc_S_serial_40004800_P_status_STRING_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_serial_40004800_P_status_IDX_0 "disabled" -#define DT_N_S_soc_S_serial_40004800_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_serial_40004800_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_serial_40004800_P_status_ENUM_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_serial_40004800_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004800, status, 0) -#define DT_N_S_soc_S_serial_40004800_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004800, status, 0) -#define DT_N_S_soc_S_serial_40004800_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004800, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004800_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004800, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004800_P_status_LEN 1 -#define DT_N_S_soc_S_serial_40004800_P_status_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_compatible {"st,stm32-usart", "st,stm32-uart"} -#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_0 "st,stm32-usart" -#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-usart -#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_0_STRING_TOKEN st_stm32_usart -#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_USART -#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_1 "st,stm32-uart" -#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-uart -#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_1_STRING_TOKEN st_stm32_uart -#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_UART -#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004800, compatible, 0) \ - fn(DT_N_S_soc_S_serial_40004800, compatible, 1) -#define DT_N_S_soc_S_serial_40004800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004800, compatible, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_serial_40004800, compatible, 1) -#define DT_N_S_soc_S_serial_40004800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004800, compatible, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_serial_40004800, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004800, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_serial_40004800, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40004800_P_compatible_LEN 2 -#define DT_N_S_soc_S_serial_40004800_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_reg {1073760256 /* 0x40004800 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_serial_40004800_P_reg_IDX_0 1073760256 +#define DT_N_S_soc_S_serial_40004800_P_reg {1073760256, 1024} #define DT_N_S_soc_S_serial_40004800_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_serial_40004800_P_reg_IDX_0 1073760256 #define DT_N_S_soc_S_serial_40004800_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_reg_IDX_1 1024 #define DT_N_S_soc_S_serial_40004800_P_reg_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_interrupts {39 /* 0x27 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_serial_40004800_P_interrupts_IDX_0 39 -#define DT_N_S_soc_S_serial_40004800_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_serial_40004800_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_serial_40004800_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40004800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_serial_40004800_P_clocks_IDX_0_VAL_bus 232 @@ -20509,10 +21208,6 @@ #define DT_N_S_soc_S_serial_40004800_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004800, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40004800_P_clocks_LEN 1 #define DT_N_S_soc_S_serial_40004800_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_serial_40004800_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_hw_flow_control 0 -#define DT_N_S_soc_S_serial_40004800_P_hw_flow_control_EXISTS 1 #define DT_N_S_soc_S_serial_40004800_P_resets_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40004800_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller #define DT_N_S_soc_S_serial_40004800_P_resets_IDX_0_VAL_id 4626 @@ -20523,10 +21218,12 @@ #define DT_N_S_soc_S_serial_40004800_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004800, resets, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40004800_P_resets_LEN 1 #define DT_N_S_soc_S_serial_40004800_P_resets_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_tx_invert 0 -#define DT_N_S_soc_S_serial_40004800_P_tx_invert_EXISTS 1 -#define DT_N_S_soc_S_serial_40004800_P_rx_invert 0 -#define DT_N_S_soc_S_serial_40004800_P_rx_invert_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_interrupts {39, 0} +#define DT_N_S_soc_S_serial_40004800_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_interrupts_IDX_0 39 +#define DT_N_S_soc_S_serial_40004800_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_serial_40004800_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_serial_40004800_P_single_wire 0 #define DT_N_S_soc_S_serial_40004800_P_single_wire_EXISTS 1 #define DT_N_S_soc_S_serial_40004800_P_tx_rx_swap 0 @@ -20541,6 +21238,53 @@ #define DT_N_S_soc_S_serial_40004800_P_de_invert_EXISTS 1 #define DT_N_S_soc_S_serial_40004800_P_fifo_enable 0 #define DT_N_S_soc_S_serial_40004800_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_hw_flow_control 0 +#define DT_N_S_soc_S_serial_40004800_P_hw_flow_control_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_status "disabled" +#define DT_N_S_soc_S_serial_40004800_P_status_STRING_UNQUOTED disabled +#define DT_N_S_soc_S_serial_40004800_P_status_STRING_TOKEN disabled +#define DT_N_S_soc_S_serial_40004800_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_serial_40004800_P_status_IDX_0 "disabled" +#define DT_N_S_soc_S_serial_40004800_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_serial_40004800_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004800, status, 0) +#define DT_N_S_soc_S_serial_40004800_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004800, status, 0) +#define DT_N_S_soc_S_serial_40004800_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004800, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004800_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004800, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004800_P_status_LEN 1 +#define DT_N_S_soc_S_serial_40004800_P_status_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_compatible {"st,stm32-usart", "st,stm32-uart"} +#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_0 "st,stm32-usart" +#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-usart +#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_0_STRING_TOKEN st_stm32_usart +#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_USART +#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_1 "st,stm32-uart" +#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-uart +#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_1_STRING_TOKEN st_stm32_uart +#define DT_N_S_soc_S_serial_40004800_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_UART +#define DT_N_S_soc_S_serial_40004800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40004800, compatible, 0) \ + fn(DT_N_S_soc_S_serial_40004800, compatible, 1) +#define DT_N_S_soc_S_serial_40004800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40004800, compatible, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_serial_40004800, compatible, 1) +#define DT_N_S_soc_S_serial_40004800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40004800, compatible, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_serial_40004800, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40004800, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_serial_40004800, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40004800_P_compatible_LEN 2 +#define DT_N_S_soc_S_serial_40004800_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_serial_40004800_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_wakeup_source 0 +#define DT_N_S_soc_S_serial_40004800_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_serial_40004800_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_tx_invert 0 +#define DT_N_S_soc_S_serial_40004800_P_tx_invert_EXISTS 1 +#define DT_N_S_soc_S_serial_40004800_P_rx_invert 0 +#define DT_N_S_soc_S_serial_40004800_P_rx_invert_EXISTS 1 /* * Devicetree node: /soc/serial@40005000 @@ -20559,6 +21303,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_serial_40005000_FULL_NAME "serial@40005000" +#define DT_N_S_soc_S_serial_40005000_FULL_NAME_UNQUOTED serial@40005000 +#define DT_N_S_soc_S_serial_40005000_FULL_NAME_TOKEN serial_40005000 +#define DT_N_S_soc_S_serial_40005000_FULL_NAME_UPPER_TOKEN SERIAL_40005000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_serial_40005000_PARENT DT_N_S_soc @@ -20584,15 +21331,15 @@ #define DT_N_S_soc_S_serial_40005000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_serial_40005000_ORD 136 -#define DT_N_S_soc_S_serial_40005000_ORD_STR_SORTABLE 00136 +#define DT_N_S_soc_S_serial_40005000_ORD 139 +#define DT_N_S_soc_S_serial_40005000_ORD_STR_SORTABLE 00139 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_serial_40005000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_serial_40005000_SUPPORTS_ORDS /* nothing */ @@ -20605,8 +21352,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_serial_40005000_REG_NUM 1 #define DT_N_S_soc_S_serial_40005000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_REG_IDX_0_VAL_ADDRESS 1073762304 /* 0x40005000 */ -#define DT_N_S_soc_S_serial_40005000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_serial_40005000_REG_IDX_0_VAL_ADDRESS 1073762304 +#define DT_N_S_soc_S_serial_40005000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_serial_40005000_RANGES_NUM 0 #define DT_N_S_soc_S_serial_40005000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_serial_40005000_IRQ_NUM 1 @@ -20629,50 +21376,12 @@ #define DT_N_S_soc_S_serial_40005000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_serial_40005000_P_wakeup_source 0 -#define DT_N_S_soc_S_serial_40005000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_serial_40005000_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_P_status "disabled" -#define DT_N_S_soc_S_serial_40005000_P_status_STRING_UNQUOTED disabled -#define DT_N_S_soc_S_serial_40005000_P_status_STRING_TOKEN disabled -#define DT_N_S_soc_S_serial_40005000_P_status_STRING_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_serial_40005000_P_status_IDX_0 "disabled" -#define DT_N_S_soc_S_serial_40005000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_serial_40005000_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_serial_40005000_P_status_ENUM_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_serial_40005000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40005000, status, 0) -#define DT_N_S_soc_S_serial_40005000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40005000, status, 0) -#define DT_N_S_soc_S_serial_40005000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40005000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40005000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40005000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40005000_P_status_LEN 1 -#define DT_N_S_soc_S_serial_40005000_P_status_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_P_compatible {"st,stm32-uart"} -#define DT_N_S_soc_S_serial_40005000_P_compatible_IDX_0 "st,stm32-uart" -#define DT_N_S_soc_S_serial_40005000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-uart -#define DT_N_S_soc_S_serial_40005000_P_compatible_IDX_0_STRING_TOKEN st_stm32_uart -#define DT_N_S_soc_S_serial_40005000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_UART -#define DT_N_S_soc_S_serial_40005000_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40005000, compatible, 0) -#define DT_N_S_soc_S_serial_40005000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40005000, compatible, 0) -#define DT_N_S_soc_S_serial_40005000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40005000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40005000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40005000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40005000_P_compatible_LEN 1 -#define DT_N_S_soc_S_serial_40005000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_P_reg {1073762304 /* 0x40005000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_serial_40005000_P_reg_IDX_0 1073762304 +#define DT_N_S_soc_S_serial_40005000_P_reg {1073762304, 1024} #define DT_N_S_soc_S_serial_40005000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_serial_40005000_P_reg_IDX_0 1073762304 #define DT_N_S_soc_S_serial_40005000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40005000_P_reg_IDX_1 1024 #define DT_N_S_soc_S_serial_40005000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_P_interrupts {53 /* 0x35 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_serial_40005000_P_interrupts_IDX_0 53 -#define DT_N_S_soc_S_serial_40005000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_serial_40005000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_serial_40005000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40005000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_serial_40005000_P_clocks_IDX_0_VAL_bus 232 @@ -20685,10 +21394,6 @@ #define DT_N_S_soc_S_serial_40005000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40005000, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40005000_P_clocks_LEN 1 #define DT_N_S_soc_S_serial_40005000_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_serial_40005000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_P_hw_flow_control 0 -#define DT_N_S_soc_S_serial_40005000_P_hw_flow_control_EXISTS 1 #define DT_N_S_soc_S_serial_40005000_P_resets_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40005000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller #define DT_N_S_soc_S_serial_40005000_P_resets_IDX_0_VAL_id 4628 @@ -20699,10 +21404,12 @@ #define DT_N_S_soc_S_serial_40005000_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40005000, resets, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40005000_P_resets_LEN 1 #define DT_N_S_soc_S_serial_40005000_P_resets_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_P_tx_invert 0 -#define DT_N_S_soc_S_serial_40005000_P_tx_invert_EXISTS 1 -#define DT_N_S_soc_S_serial_40005000_P_rx_invert 0 -#define DT_N_S_soc_S_serial_40005000_P_rx_invert_EXISTS 1 +#define DT_N_S_soc_S_serial_40005000_P_interrupts {53, 0} +#define DT_N_S_soc_S_serial_40005000_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40005000_P_interrupts_IDX_0 53 +#define DT_N_S_soc_S_serial_40005000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40005000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_serial_40005000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_serial_40005000_P_single_wire 0 #define DT_N_S_soc_S_serial_40005000_P_single_wire_EXISTS 1 #define DT_N_S_soc_S_serial_40005000_P_tx_rx_swap 0 @@ -20717,6 +21424,44 @@ #define DT_N_S_soc_S_serial_40005000_P_de_invert_EXISTS 1 #define DT_N_S_soc_S_serial_40005000_P_fifo_enable 0 #define DT_N_S_soc_S_serial_40005000_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_serial_40005000_P_hw_flow_control 0 +#define DT_N_S_soc_S_serial_40005000_P_hw_flow_control_EXISTS 1 +#define DT_N_S_soc_S_serial_40005000_P_status "disabled" +#define DT_N_S_soc_S_serial_40005000_P_status_STRING_UNQUOTED disabled +#define DT_N_S_soc_S_serial_40005000_P_status_STRING_TOKEN disabled +#define DT_N_S_soc_S_serial_40005000_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_serial_40005000_P_status_IDX_0 "disabled" +#define DT_N_S_soc_S_serial_40005000_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40005000_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_serial_40005000_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_soc_S_serial_40005000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40005000, status, 0) +#define DT_N_S_soc_S_serial_40005000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40005000, status, 0) +#define DT_N_S_soc_S_serial_40005000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40005000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40005000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40005000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40005000_P_status_LEN 1 +#define DT_N_S_soc_S_serial_40005000_P_status_EXISTS 1 +#define DT_N_S_soc_S_serial_40005000_P_compatible {"st,stm32-uart"} +#define DT_N_S_soc_S_serial_40005000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40005000_P_compatible_IDX_0 "st,stm32-uart" +#define DT_N_S_soc_S_serial_40005000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-uart +#define DT_N_S_soc_S_serial_40005000_P_compatible_IDX_0_STRING_TOKEN st_stm32_uart +#define DT_N_S_soc_S_serial_40005000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_UART +#define DT_N_S_soc_S_serial_40005000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40005000, compatible, 0) +#define DT_N_S_soc_S_serial_40005000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40005000, compatible, 0) +#define DT_N_S_soc_S_serial_40005000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40005000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40005000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40005000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40005000_P_compatible_LEN 1 +#define DT_N_S_soc_S_serial_40005000_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_serial_40005000_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_serial_40005000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_serial_40005000_P_wakeup_source 0 +#define DT_N_S_soc_S_serial_40005000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_serial_40005000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_serial_40005000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_serial_40005000_P_tx_invert 0 +#define DT_N_S_soc_S_serial_40005000_P_tx_invert_EXISTS 1 +#define DT_N_S_soc_S_serial_40005000_P_rx_invert 0 +#define DT_N_S_soc_S_serial_40005000_P_rx_invert_EXISTS 1 /* * Devicetree node: /soc/serial@40007c00 @@ -20735,6 +21480,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_serial_40007c00_FULL_NAME "serial@40007c00" +#define DT_N_S_soc_S_serial_40007c00_FULL_NAME_UNQUOTED serial@40007c00 +#define DT_N_S_soc_S_serial_40007c00_FULL_NAME_TOKEN serial_40007c00 +#define DT_N_S_soc_S_serial_40007c00_FULL_NAME_UPPER_TOKEN SERIAL_40007C00 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_serial_40007c00_PARENT DT_N_S_soc @@ -20760,15 +21508,15 @@ #define DT_N_S_soc_S_serial_40007c00_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_serial_40007c00_ORD 137 -#define DT_N_S_soc_S_serial_40007c00_ORD_STR_SORTABLE 00137 +#define DT_N_S_soc_S_serial_40007c00_ORD 140 +#define DT_N_S_soc_S_serial_40007c00_ORD_STR_SORTABLE 00140 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_serial_40007c00_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_serial_40007c00_SUPPORTS_ORDS /* nothing */ @@ -20781,8 +21529,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_serial_40007c00_REG_NUM 1 #define DT_N_S_soc_S_serial_40007c00_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_REG_IDX_0_VAL_ADDRESS 1073773568 /* 0x40007c00 */ -#define DT_N_S_soc_S_serial_40007c00_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_serial_40007c00_REG_IDX_0_VAL_ADDRESS 1073773568 +#define DT_N_S_soc_S_serial_40007c00_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_serial_40007c00_RANGES_NUM 0 #define DT_N_S_soc_S_serial_40007c00_FOREACH_RANGE(fn) #define DT_N_S_soc_S_serial_40007c00_IRQ_NUM 1 @@ -20805,50 +21553,12 @@ #define DT_N_S_soc_S_serial_40007c00_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_serial_40007c00_P_wakeup_source 0 -#define DT_N_S_soc_S_serial_40007c00_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_serial_40007c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_P_status "disabled" -#define DT_N_S_soc_S_serial_40007c00_P_status_STRING_UNQUOTED disabled -#define DT_N_S_soc_S_serial_40007c00_P_status_STRING_TOKEN disabled -#define DT_N_S_soc_S_serial_40007c00_P_status_STRING_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_serial_40007c00_P_status_IDX_0 "disabled" -#define DT_N_S_soc_S_serial_40007c00_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_serial_40007c00_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_serial_40007c00_P_status_ENUM_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_serial_40007c00_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007c00, status, 0) -#define DT_N_S_soc_S_serial_40007c00_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007c00, status, 0) -#define DT_N_S_soc_S_serial_40007c00_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007c00, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007c00_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007c00, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007c00_P_status_LEN 1 -#define DT_N_S_soc_S_serial_40007c00_P_status_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_P_compatible {"st,stm32-uart"} -#define DT_N_S_soc_S_serial_40007c00_P_compatible_IDX_0 "st,stm32-uart" -#define DT_N_S_soc_S_serial_40007c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-uart -#define DT_N_S_soc_S_serial_40007c00_P_compatible_IDX_0_STRING_TOKEN st_stm32_uart -#define DT_N_S_soc_S_serial_40007c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_UART -#define DT_N_S_soc_S_serial_40007c00_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007c00, compatible, 0) -#define DT_N_S_soc_S_serial_40007c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007c00, compatible, 0) -#define DT_N_S_soc_S_serial_40007c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007c00, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007c00, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007c00_P_compatible_LEN 1 -#define DT_N_S_soc_S_serial_40007c00_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_P_reg {1073773568 /* 0x40007c00 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_serial_40007c00_P_reg_IDX_0 1073773568 +#define DT_N_S_soc_S_serial_40007c00_P_reg {1073773568, 1024} #define DT_N_S_soc_S_serial_40007c00_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_serial_40007c00_P_reg_IDX_0 1073773568 #define DT_N_S_soc_S_serial_40007c00_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40007c00_P_reg_IDX_1 1024 #define DT_N_S_soc_S_serial_40007c00_P_reg_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_P_interrupts {83 /* 0x53 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_serial_40007c00_P_interrupts_IDX_0 83 -#define DT_N_S_soc_S_serial_40007c00_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_serial_40007c00_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_serial_40007c00_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40007c00_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_serial_40007c00_P_clocks_IDX_0_VAL_bus 232 @@ -20861,10 +21571,6 @@ #define DT_N_S_soc_S_serial_40007c00_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007c00, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40007c00_P_clocks_LEN 1 #define DT_N_S_soc_S_serial_40007c00_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_serial_40007c00_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_P_hw_flow_control 0 -#define DT_N_S_soc_S_serial_40007c00_P_hw_flow_control_EXISTS 1 #define DT_N_S_soc_S_serial_40007c00_P_resets_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40007c00_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller #define DT_N_S_soc_S_serial_40007c00_P_resets_IDX_0_VAL_id 4639 @@ -20875,10 +21581,12 @@ #define DT_N_S_soc_S_serial_40007c00_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007c00, resets, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40007c00_P_resets_LEN 1 #define DT_N_S_soc_S_serial_40007c00_P_resets_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_P_tx_invert 0 -#define DT_N_S_soc_S_serial_40007c00_P_tx_invert_EXISTS 1 -#define DT_N_S_soc_S_serial_40007c00_P_rx_invert 0 -#define DT_N_S_soc_S_serial_40007c00_P_rx_invert_EXISTS 1 +#define DT_N_S_soc_S_serial_40007c00_P_interrupts {83, 0} +#define DT_N_S_soc_S_serial_40007c00_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40007c00_P_interrupts_IDX_0 83 +#define DT_N_S_soc_S_serial_40007c00_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40007c00_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_serial_40007c00_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_serial_40007c00_P_single_wire 0 #define DT_N_S_soc_S_serial_40007c00_P_single_wire_EXISTS 1 #define DT_N_S_soc_S_serial_40007c00_P_tx_rx_swap 0 @@ -20893,6 +21601,44 @@ #define DT_N_S_soc_S_serial_40007c00_P_de_invert_EXISTS 1 #define DT_N_S_soc_S_serial_40007c00_P_fifo_enable 0 #define DT_N_S_soc_S_serial_40007c00_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_serial_40007c00_P_hw_flow_control 0 +#define DT_N_S_soc_S_serial_40007c00_P_hw_flow_control_EXISTS 1 +#define DT_N_S_soc_S_serial_40007c00_P_status "disabled" +#define DT_N_S_soc_S_serial_40007c00_P_status_STRING_UNQUOTED disabled +#define DT_N_S_soc_S_serial_40007c00_P_status_STRING_TOKEN disabled +#define DT_N_S_soc_S_serial_40007c00_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_serial_40007c00_P_status_IDX_0 "disabled" +#define DT_N_S_soc_S_serial_40007c00_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40007c00_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_serial_40007c00_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_soc_S_serial_40007c00_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007c00, status, 0) +#define DT_N_S_soc_S_serial_40007c00_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007c00, status, 0) +#define DT_N_S_soc_S_serial_40007c00_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007c00, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007c00_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007c00, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007c00_P_status_LEN 1 +#define DT_N_S_soc_S_serial_40007c00_P_status_EXISTS 1 +#define DT_N_S_soc_S_serial_40007c00_P_compatible {"st,stm32-uart"} +#define DT_N_S_soc_S_serial_40007c00_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40007c00_P_compatible_IDX_0 "st,stm32-uart" +#define DT_N_S_soc_S_serial_40007c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-uart +#define DT_N_S_soc_S_serial_40007c00_P_compatible_IDX_0_STRING_TOKEN st_stm32_uart +#define DT_N_S_soc_S_serial_40007c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_UART +#define DT_N_S_soc_S_serial_40007c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007c00, compatible, 0) +#define DT_N_S_soc_S_serial_40007c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007c00, compatible, 0) +#define DT_N_S_soc_S_serial_40007c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007c00, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007c00, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007c00_P_compatible_LEN 1 +#define DT_N_S_soc_S_serial_40007c00_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_serial_40007c00_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_serial_40007c00_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_serial_40007c00_P_wakeup_source 0 +#define DT_N_S_soc_S_serial_40007c00_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_serial_40007c00_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_serial_40007c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_serial_40007c00_P_tx_invert 0 +#define DT_N_S_soc_S_serial_40007c00_P_tx_invert_EXISTS 1 +#define DT_N_S_soc_S_serial_40007c00_P_rx_invert 0 +#define DT_N_S_soc_S_serial_40007c00_P_rx_invert_EXISTS 1 /* * Devicetree node: /soc/serial@58000c00 @@ -20911,6 +21657,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_serial_58000c00_FULL_NAME "serial@58000c00" +#define DT_N_S_soc_S_serial_58000c00_FULL_NAME_UNQUOTED serial@58000c00 +#define DT_N_S_soc_S_serial_58000c00_FULL_NAME_TOKEN serial_58000c00 +#define DT_N_S_soc_S_serial_58000c00_FULL_NAME_UPPER_TOKEN SERIAL_58000C00 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_serial_58000c00_PARENT DT_N_S_soc @@ -20936,15 +21685,15 @@ #define DT_N_S_soc_S_serial_58000c00_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_serial_58000c00_ORD 138 -#define DT_N_S_soc_S_serial_58000c00_ORD_STR_SORTABLE 00138 +#define DT_N_S_soc_S_serial_58000c00_ORD 141 +#define DT_N_S_soc_S_serial_58000c00_ORD_STR_SORTABLE 00141 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_serial_58000c00_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_serial_58000c00_SUPPORTS_ORDS /* nothing */ @@ -20958,8 +21707,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_serial_58000c00_REG_NUM 1 #define DT_N_S_soc_S_serial_58000c00_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_REG_IDX_0_VAL_ADDRESS 1476398080 /* 0x58000c00 */ -#define DT_N_S_soc_S_serial_58000c00_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_serial_58000c00_REG_IDX_0_VAL_ADDRESS 1476398080 +#define DT_N_S_soc_S_serial_58000c00_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_serial_58000c00_RANGES_NUM 0 #define DT_N_S_soc_S_serial_58000c00_FOREACH_RANGE(fn) #define DT_N_S_soc_S_serial_58000c00_IRQ_NUM 1 @@ -20987,59 +21736,12 @@ #define DT_N_S_soc_S_serial_58000c00_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_serial_58000c00_P_wakeup_source 0 -#define DT_N_S_soc_S_serial_58000c00_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_serial_58000c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_status "disabled" -#define DT_N_S_soc_S_serial_58000c00_P_status_STRING_UNQUOTED disabled -#define DT_N_S_soc_S_serial_58000c00_P_status_STRING_TOKEN disabled -#define DT_N_S_soc_S_serial_58000c00_P_status_STRING_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_serial_58000c00_P_status_IDX_0 "disabled" -#define DT_N_S_soc_S_serial_58000c00_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_serial_58000c00_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_serial_58000c00_P_status_ENUM_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_serial_58000c00_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_58000c00, status, 0) -#define DT_N_S_soc_S_serial_58000c00_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_58000c00, status, 0) -#define DT_N_S_soc_S_serial_58000c00_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_58000c00, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_58000c00_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_58000c00, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_58000c00_P_status_LEN 1 -#define DT_N_S_soc_S_serial_58000c00_P_status_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_compatible {"st,stm32-lpuart", "st,stm32-uart"} -#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_0 "st,stm32-lpuart" -#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-lpuart -#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_0_STRING_TOKEN st_stm32_lpuart -#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_LPUART -#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_1 "st,stm32-uart" -#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-uart -#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_1_STRING_TOKEN st_stm32_uart -#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_UART -#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_58000c00, compatible, 0) \ - fn(DT_N_S_soc_S_serial_58000c00, compatible, 1) -#define DT_N_S_soc_S_serial_58000c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_58000c00, compatible, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_serial_58000c00, compatible, 1) -#define DT_N_S_soc_S_serial_58000c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_58000c00, compatible, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_serial_58000c00, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_serial_58000c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_58000c00, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_serial_58000c00, compatible, 1, __VA_ARGS__) -#define DT_N_S_soc_S_serial_58000c00_P_compatible_LEN 2 -#define DT_N_S_soc_S_serial_58000c00_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_reg {1476398080 /* 0x58000c00 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_serial_58000c00_P_reg_IDX_0 1476398080 +#define DT_N_S_soc_S_serial_58000c00_P_reg {1476398080, 1024} #define DT_N_S_soc_S_serial_58000c00_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_serial_58000c00_P_reg_IDX_0 1476398080 #define DT_N_S_soc_S_serial_58000c00_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_reg_IDX_1 1024 #define DT_N_S_soc_S_serial_58000c00_P_reg_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_interrupts {142 /* 0x8e */, 0 /* 0x0 */} -#define DT_N_S_soc_S_serial_58000c00_P_interrupts_IDX_0 142 -#define DT_N_S_soc_S_serial_58000c00_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_serial_58000c00_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_serial_58000c00_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_58000c00_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_serial_58000c00_P_clocks_IDX_0_VAL_bus 244 @@ -21052,10 +21754,6 @@ #define DT_N_S_soc_S_serial_58000c00_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_58000c00, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_58000c00_P_clocks_LEN 1 #define DT_N_S_soc_S_serial_58000c00_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_serial_58000c00_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_hw_flow_control 0 -#define DT_N_S_soc_S_serial_58000c00_P_hw_flow_control_EXISTS 1 #define DT_N_S_soc_S_serial_58000c00_P_resets_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_58000c00_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller #define DT_N_S_soc_S_serial_58000c00_P_resets_IDX_0_VAL_id 4995 @@ -21066,10 +21764,12 @@ #define DT_N_S_soc_S_serial_58000c00_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_58000c00, resets, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_58000c00_P_resets_LEN 1 #define DT_N_S_soc_S_serial_58000c00_P_resets_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_tx_invert 0 -#define DT_N_S_soc_S_serial_58000c00_P_tx_invert_EXISTS 1 -#define DT_N_S_soc_S_serial_58000c00_P_rx_invert 0 -#define DT_N_S_soc_S_serial_58000c00_P_rx_invert_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_interrupts {142, 0} +#define DT_N_S_soc_S_serial_58000c00_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_interrupts_IDX_0 142 +#define DT_N_S_soc_S_serial_58000c00_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_serial_58000c00_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_serial_58000c00_P_single_wire 0 #define DT_N_S_soc_S_serial_58000c00_P_single_wire_EXISTS 1 #define DT_N_S_soc_S_serial_58000c00_P_tx_rx_swap 0 @@ -21084,6 +21784,53 @@ #define DT_N_S_soc_S_serial_58000c00_P_de_invert_EXISTS 1 #define DT_N_S_soc_S_serial_58000c00_P_fifo_enable 0 #define DT_N_S_soc_S_serial_58000c00_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_hw_flow_control 0 +#define DT_N_S_soc_S_serial_58000c00_P_hw_flow_control_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_status "disabled" +#define DT_N_S_soc_S_serial_58000c00_P_status_STRING_UNQUOTED disabled +#define DT_N_S_soc_S_serial_58000c00_P_status_STRING_TOKEN disabled +#define DT_N_S_soc_S_serial_58000c00_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_serial_58000c00_P_status_IDX_0 "disabled" +#define DT_N_S_soc_S_serial_58000c00_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_serial_58000c00_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_58000c00, status, 0) +#define DT_N_S_soc_S_serial_58000c00_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_58000c00, status, 0) +#define DT_N_S_soc_S_serial_58000c00_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_58000c00, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_58000c00_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_58000c00, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_58000c00_P_status_LEN 1 +#define DT_N_S_soc_S_serial_58000c00_P_status_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_compatible {"st,stm32-lpuart", "st,stm32-uart"} +#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_0 "st,stm32-lpuart" +#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-lpuart +#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_0_STRING_TOKEN st_stm32_lpuart +#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_LPUART +#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_1 "st,stm32-uart" +#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-uart +#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_1_STRING_TOKEN st_stm32_uart +#define DT_N_S_soc_S_serial_58000c00_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_UART +#define DT_N_S_soc_S_serial_58000c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_58000c00, compatible, 0) \ + fn(DT_N_S_soc_S_serial_58000c00, compatible, 1) +#define DT_N_S_soc_S_serial_58000c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_58000c00, compatible, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_serial_58000c00, compatible, 1) +#define DT_N_S_soc_S_serial_58000c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_58000c00, compatible, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_serial_58000c00, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_serial_58000c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_58000c00, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_serial_58000c00, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_serial_58000c00_P_compatible_LEN 2 +#define DT_N_S_soc_S_serial_58000c00_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_serial_58000c00_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_wakeup_source 0 +#define DT_N_S_soc_S_serial_58000c00_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_serial_58000c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_tx_invert 0 +#define DT_N_S_soc_S_serial_58000c00_P_tx_invert_EXISTS 1 +#define DT_N_S_soc_S_serial_58000c00_P_rx_invert 0 +#define DT_N_S_soc_S_serial_58000c00_P_rx_invert_EXISTS 1 /* * Devicetree node: /soc/spi@40003800 @@ -21102,6 +21849,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_spi_40003800_FULL_NAME "spi@40003800" +#define DT_N_S_soc_S_spi_40003800_FULL_NAME_UNQUOTED spi@40003800 +#define DT_N_S_soc_S_spi_40003800_FULL_NAME_TOKEN spi_40003800 +#define DT_N_S_soc_S_spi_40003800_FULL_NAME_UPPER_TOKEN SPI_40003800 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_spi_40003800_PARENT DT_N_S_soc @@ -21127,14 +21877,14 @@ #define DT_N_S_soc_S_spi_40003800_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_spi_40003800_ORD 139 -#define DT_N_S_soc_S_spi_40003800_ORD_STR_SORTABLE 00139 +#define DT_N_S_soc_S_spi_40003800_ORD 142 +#define DT_N_S_soc_S_spi_40003800_ORD_STR_SORTABLE 00142 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_spi_40003800_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_spi_40003800_SUPPORTS_ORDS /* nothing */ @@ -21149,8 +21899,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_spi_40003800_REG_NUM 1 #define DT_N_S_soc_S_spi_40003800_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40003800_REG_IDX_0_VAL_ADDRESS 1073756160 /* 0x40003800 */ -#define DT_N_S_soc_S_spi_40003800_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_spi_40003800_REG_IDX_0_VAL_ADDRESS 1073756160 +#define DT_N_S_soc_S_spi_40003800_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_spi_40003800_RANGES_NUM 0 #define DT_N_S_soc_S_spi_40003800_FOREACH_RANGE(fn) #define DT_N_S_soc_S_spi_40003800_IRQ_NUM 1 @@ -21183,20 +21933,32 @@ #define DT_N_S_soc_S_spi_40003800_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_spi_40003800_P_wakeup_source 0 -#define DT_N_S_soc_S_spi_40003800_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_spi_40003800_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_spi_40003800_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_spi_40003800_P_midi_clock 0 +#define DT_N_S_soc_S_spi_40003800_P_midi_clock_EXISTS 1 +#define DT_N_S_soc_S_spi_40003800_P_mssi_clock 0 +#define DT_N_S_soc_S_spi_40003800_P_mssi_clock_EXISTS 1 +#define DT_N_S_soc_S_spi_40003800_P_fifo_enable 0 +#define DT_N_S_soc_S_spi_40003800_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_spi_40003800_P_reg {1073756160, 1024} +#define DT_N_S_soc_S_spi_40003800_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40003800_P_reg_IDX_0 1073756160 +#define DT_N_S_soc_S_spi_40003800_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40003800_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_spi_40003800_P_reg_EXISTS 1 +#define DT_N_S_soc_S_spi_40003800_P_interrupts {36, 0} +#define DT_N_S_soc_S_spi_40003800_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40003800_P_interrupts_IDX_0 36 +#define DT_N_S_soc_S_spi_40003800_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40003800_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_spi_40003800_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_spi_40003800_P_status "disabled" #define DT_N_S_soc_S_spi_40003800_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_spi_40003800_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_spi_40003800_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_spi_40003800_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_spi_40003800_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40003800_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_spi_40003800_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_spi_40003800_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_spi_40003800_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_spi_40003800_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_spi_40003800_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_spi_40003800_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40003800, status, 0) #define DT_N_S_soc_S_spi_40003800_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_spi_40003800, status, 0) #define DT_N_S_soc_S_spi_40003800_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_spi_40003800, status, 0, __VA_ARGS__) @@ -21204,21 +21966,21 @@ #define DT_N_S_soc_S_spi_40003800_P_status_LEN 1 #define DT_N_S_soc_S_spi_40003800_P_status_EXISTS 1 #define DT_N_S_soc_S_spi_40003800_P_compatible {"st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi"} +#define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_0 "st,stm32h7-spi" #define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-spi #define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_spi #define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_SPI -#define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_1 "st,stm32-spi-fifo" #define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-spi-fifo #define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_1_STRING_TOKEN st_stm32_spi_fifo #define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_SPI_FIFO -#define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_2_EXISTS 1 #define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_2 "st,stm32-spi" #define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_2_STRING_UNQUOTED st,stm32-spi #define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_2_STRING_TOKEN st_stm32_spi #define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_2_STRING_UPPER_TOKEN ST_STM32_SPI -#define DT_N_S_soc_S_spi_40003800_P_compatible_IDX_2_EXISTS 1 #define DT_N_S_soc_S_spi_40003800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40003800, compatible, 0) \ fn(DT_N_S_soc_S_spi_40003800, compatible, 1) \ fn(DT_N_S_soc_S_spi_40003800, compatible, 2) @@ -21233,18 +21995,6 @@ fn(DT_N_S_soc_S_spi_40003800, compatible, 2, __VA_ARGS__) #define DT_N_S_soc_S_spi_40003800_P_compatible_LEN 3 #define DT_N_S_soc_S_spi_40003800_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_spi_40003800_P_reg {1073756160 /* 0x40003800 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_spi_40003800_P_reg_IDX_0 1073756160 -#define DT_N_S_soc_S_spi_40003800_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40003800_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_spi_40003800_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_spi_40003800_P_reg_EXISTS 1 -#define DT_N_S_soc_S_spi_40003800_P_interrupts {36 /* 0x24 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_spi_40003800_P_interrupts_IDX_0 36 -#define DT_N_S_soc_S_spi_40003800_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40003800_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_spi_40003800_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_spi_40003800_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_spi_40003800_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_spi_40003800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_spi_40003800_P_clocks_IDX_0_VAL_bus 232 @@ -21269,12 +22019,10 @@ #define DT_N_S_soc_S_spi_40003800_P_clocks_EXISTS 1 #define DT_N_S_soc_S_spi_40003800_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_spi_40003800_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_spi_40003800_P_midi_clock 0 -#define DT_N_S_soc_S_spi_40003800_P_midi_clock_EXISTS 1 -#define DT_N_S_soc_S_spi_40003800_P_mssi_clock 0 -#define DT_N_S_soc_S_spi_40003800_P_mssi_clock_EXISTS 1 -#define DT_N_S_soc_S_spi_40003800_P_fifo_enable 0 -#define DT_N_S_soc_S_spi_40003800_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_spi_40003800_P_wakeup_source 0 +#define DT_N_S_soc_S_spi_40003800_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_spi_40003800_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_spi_40003800_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/spi@40003c00 @@ -21293,6 +22041,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_spi_40003c00_FULL_NAME "spi@40003c00" +#define DT_N_S_soc_S_spi_40003c00_FULL_NAME_UNQUOTED spi@40003c00 +#define DT_N_S_soc_S_spi_40003c00_FULL_NAME_TOKEN spi_40003c00 +#define DT_N_S_soc_S_spi_40003c00_FULL_NAME_UPPER_TOKEN SPI_40003C00 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_spi_40003c00_PARENT DT_N_S_soc @@ -21318,14 +22069,14 @@ #define DT_N_S_soc_S_spi_40003c00_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_spi_40003c00_ORD 140 -#define DT_N_S_soc_S_spi_40003c00_ORD_STR_SORTABLE 00140 +#define DT_N_S_soc_S_spi_40003c00_ORD 143 +#define DT_N_S_soc_S_spi_40003c00_ORD_STR_SORTABLE 00143 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_spi_40003c00_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_spi_40003c00_SUPPORTS_ORDS /* nothing */ @@ -21340,8 +22091,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_spi_40003c00_REG_NUM 1 #define DT_N_S_soc_S_spi_40003c00_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40003c00_REG_IDX_0_VAL_ADDRESS 1073757184 /* 0x40003c00 */ -#define DT_N_S_soc_S_spi_40003c00_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_spi_40003c00_REG_IDX_0_VAL_ADDRESS 1073757184 +#define DT_N_S_soc_S_spi_40003c00_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_spi_40003c00_RANGES_NUM 0 #define DT_N_S_soc_S_spi_40003c00_FOREACH_RANGE(fn) #define DT_N_S_soc_S_spi_40003c00_IRQ_NUM 1 @@ -21374,20 +22125,32 @@ #define DT_N_S_soc_S_spi_40003c00_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_spi_40003c00_P_wakeup_source 0 -#define DT_N_S_soc_S_spi_40003c00_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_spi_40003c00_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_spi_40003c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_spi_40003c00_P_midi_clock 0 +#define DT_N_S_soc_S_spi_40003c00_P_midi_clock_EXISTS 1 +#define DT_N_S_soc_S_spi_40003c00_P_mssi_clock 0 +#define DT_N_S_soc_S_spi_40003c00_P_mssi_clock_EXISTS 1 +#define DT_N_S_soc_S_spi_40003c00_P_fifo_enable 0 +#define DT_N_S_soc_S_spi_40003c00_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_spi_40003c00_P_reg {1073757184, 1024} +#define DT_N_S_soc_S_spi_40003c00_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40003c00_P_reg_IDX_0 1073757184 +#define DT_N_S_soc_S_spi_40003c00_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40003c00_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_spi_40003c00_P_reg_EXISTS 1 +#define DT_N_S_soc_S_spi_40003c00_P_interrupts {51, 0} +#define DT_N_S_soc_S_spi_40003c00_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40003c00_P_interrupts_IDX_0 51 +#define DT_N_S_soc_S_spi_40003c00_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40003c00_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_spi_40003c00_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_spi_40003c00_P_status "disabled" #define DT_N_S_soc_S_spi_40003c00_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_spi_40003c00_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_spi_40003c00_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_spi_40003c00_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_spi_40003c00_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40003c00_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_spi_40003c00_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_spi_40003c00_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_spi_40003c00_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_spi_40003c00_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_spi_40003c00_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_spi_40003c00_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40003c00, status, 0) #define DT_N_S_soc_S_spi_40003c00_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_spi_40003c00, status, 0) #define DT_N_S_soc_S_spi_40003c00_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_spi_40003c00, status, 0, __VA_ARGS__) @@ -21395,21 +22158,21 @@ #define DT_N_S_soc_S_spi_40003c00_P_status_LEN 1 #define DT_N_S_soc_S_spi_40003c00_P_status_EXISTS 1 #define DT_N_S_soc_S_spi_40003c00_P_compatible {"st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi"} +#define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_0 "st,stm32h7-spi" #define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-spi #define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_spi #define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_SPI -#define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_1 "st,stm32-spi-fifo" #define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-spi-fifo #define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_1_STRING_TOKEN st_stm32_spi_fifo #define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_SPI_FIFO -#define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_2_EXISTS 1 #define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_2 "st,stm32-spi" #define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_2_STRING_UNQUOTED st,stm32-spi #define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_2_STRING_TOKEN st_stm32_spi #define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_2_STRING_UPPER_TOKEN ST_STM32_SPI -#define DT_N_S_soc_S_spi_40003c00_P_compatible_IDX_2_EXISTS 1 #define DT_N_S_soc_S_spi_40003c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40003c00, compatible, 0) \ fn(DT_N_S_soc_S_spi_40003c00, compatible, 1) \ fn(DT_N_S_soc_S_spi_40003c00, compatible, 2) @@ -21424,18 +22187,6 @@ fn(DT_N_S_soc_S_spi_40003c00, compatible, 2, __VA_ARGS__) #define DT_N_S_soc_S_spi_40003c00_P_compatible_LEN 3 #define DT_N_S_soc_S_spi_40003c00_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_spi_40003c00_P_reg {1073757184 /* 0x40003c00 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_spi_40003c00_P_reg_IDX_0 1073757184 -#define DT_N_S_soc_S_spi_40003c00_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40003c00_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_spi_40003c00_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_spi_40003c00_P_reg_EXISTS 1 -#define DT_N_S_soc_S_spi_40003c00_P_interrupts {51 /* 0x33 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_spi_40003c00_P_interrupts_IDX_0 51 -#define DT_N_S_soc_S_spi_40003c00_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40003c00_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_spi_40003c00_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_spi_40003c00_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_spi_40003c00_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_spi_40003c00_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_spi_40003c00_P_clocks_IDX_0_VAL_bus 232 @@ -21460,12 +22211,10 @@ #define DT_N_S_soc_S_spi_40003c00_P_clocks_EXISTS 1 #define DT_N_S_soc_S_spi_40003c00_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_spi_40003c00_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_spi_40003c00_P_midi_clock 0 -#define DT_N_S_soc_S_spi_40003c00_P_midi_clock_EXISTS 1 -#define DT_N_S_soc_S_spi_40003c00_P_mssi_clock 0 -#define DT_N_S_soc_S_spi_40003c00_P_mssi_clock_EXISTS 1 -#define DT_N_S_soc_S_spi_40003c00_P_fifo_enable 0 -#define DT_N_S_soc_S_spi_40003c00_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_spi_40003c00_P_wakeup_source 0 +#define DT_N_S_soc_S_spi_40003c00_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_spi_40003c00_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_spi_40003c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/spi@40013400 @@ -21484,6 +22233,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_spi_40013400_FULL_NAME "spi@40013400" +#define DT_N_S_soc_S_spi_40013400_FULL_NAME_UNQUOTED spi@40013400 +#define DT_N_S_soc_S_spi_40013400_FULL_NAME_TOKEN spi_40013400 +#define DT_N_S_soc_S_spi_40013400_FULL_NAME_UPPER_TOKEN SPI_40013400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_spi_40013400_PARENT DT_N_S_soc @@ -21509,14 +22261,14 @@ #define DT_N_S_soc_S_spi_40013400_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_spi_40013400_ORD 141 -#define DT_N_S_soc_S_spi_40013400_ORD_STR_SORTABLE 00141 +#define DT_N_S_soc_S_spi_40013400_ORD 144 +#define DT_N_S_soc_S_spi_40013400_ORD_STR_SORTABLE 00144 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_spi_40013400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_spi_40013400_SUPPORTS_ORDS /* nothing */ @@ -21531,8 +22283,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_spi_40013400_REG_NUM 1 #define DT_N_S_soc_S_spi_40013400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40013400_REG_IDX_0_VAL_ADDRESS 1073820672 /* 0x40013400 */ -#define DT_N_S_soc_S_spi_40013400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_spi_40013400_REG_IDX_0_VAL_ADDRESS 1073820672 +#define DT_N_S_soc_S_spi_40013400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_spi_40013400_RANGES_NUM 0 #define DT_N_S_soc_S_spi_40013400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_spi_40013400_IRQ_NUM 1 @@ -21565,20 +22317,32 @@ #define DT_N_S_soc_S_spi_40013400_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_spi_40013400_P_wakeup_source 0 -#define DT_N_S_soc_S_spi_40013400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_spi_40013400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_spi_40013400_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_spi_40013400_P_midi_clock 0 +#define DT_N_S_soc_S_spi_40013400_P_midi_clock_EXISTS 1 +#define DT_N_S_soc_S_spi_40013400_P_mssi_clock 0 +#define DT_N_S_soc_S_spi_40013400_P_mssi_clock_EXISTS 1 +#define DT_N_S_soc_S_spi_40013400_P_fifo_enable 0 +#define DT_N_S_soc_S_spi_40013400_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_spi_40013400_P_reg {1073820672, 1024} +#define DT_N_S_soc_S_spi_40013400_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40013400_P_reg_IDX_0 1073820672 +#define DT_N_S_soc_S_spi_40013400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40013400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_spi_40013400_P_reg_EXISTS 1 +#define DT_N_S_soc_S_spi_40013400_P_interrupts {84, 0} +#define DT_N_S_soc_S_spi_40013400_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40013400_P_interrupts_IDX_0 84 +#define DT_N_S_soc_S_spi_40013400_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40013400_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_spi_40013400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_spi_40013400_P_status "disabled" #define DT_N_S_soc_S_spi_40013400_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_spi_40013400_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_spi_40013400_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_spi_40013400_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_spi_40013400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40013400_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_spi_40013400_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_spi_40013400_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_spi_40013400_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_spi_40013400_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_spi_40013400_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_spi_40013400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40013400, status, 0) #define DT_N_S_soc_S_spi_40013400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_spi_40013400, status, 0) #define DT_N_S_soc_S_spi_40013400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_spi_40013400, status, 0, __VA_ARGS__) @@ -21586,21 +22350,21 @@ #define DT_N_S_soc_S_spi_40013400_P_status_LEN 1 #define DT_N_S_soc_S_spi_40013400_P_status_EXISTS 1 #define DT_N_S_soc_S_spi_40013400_P_compatible {"st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi"} +#define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_0 "st,stm32h7-spi" #define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-spi #define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_spi #define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_SPI -#define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_1 "st,stm32-spi-fifo" #define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-spi-fifo #define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_1_STRING_TOKEN st_stm32_spi_fifo #define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_SPI_FIFO -#define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_2_EXISTS 1 #define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_2 "st,stm32-spi" #define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_2_STRING_UNQUOTED st,stm32-spi #define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_2_STRING_TOKEN st_stm32_spi #define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_2_STRING_UPPER_TOKEN ST_STM32_SPI -#define DT_N_S_soc_S_spi_40013400_P_compatible_IDX_2_EXISTS 1 #define DT_N_S_soc_S_spi_40013400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_40013400, compatible, 0) \ fn(DT_N_S_soc_S_spi_40013400, compatible, 1) \ fn(DT_N_S_soc_S_spi_40013400, compatible, 2) @@ -21615,18 +22379,6 @@ fn(DT_N_S_soc_S_spi_40013400, compatible, 2, __VA_ARGS__) #define DT_N_S_soc_S_spi_40013400_P_compatible_LEN 3 #define DT_N_S_soc_S_spi_40013400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_spi_40013400_P_reg {1073820672 /* 0x40013400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_spi_40013400_P_reg_IDX_0 1073820672 -#define DT_N_S_soc_S_spi_40013400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40013400_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_spi_40013400_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_spi_40013400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_spi_40013400_P_interrupts {84 /* 0x54 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_spi_40013400_P_interrupts_IDX_0 84 -#define DT_N_S_soc_S_spi_40013400_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_40013400_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_spi_40013400_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_spi_40013400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_spi_40013400_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_spi_40013400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_spi_40013400_P_clocks_IDX_0_VAL_bus 240 @@ -21641,12 +22393,10 @@ #define DT_N_S_soc_S_spi_40013400_P_clocks_EXISTS 1 #define DT_N_S_soc_S_spi_40013400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_spi_40013400_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_spi_40013400_P_midi_clock 0 -#define DT_N_S_soc_S_spi_40013400_P_midi_clock_EXISTS 1 -#define DT_N_S_soc_S_spi_40013400_P_mssi_clock 0 -#define DT_N_S_soc_S_spi_40013400_P_mssi_clock_EXISTS 1 -#define DT_N_S_soc_S_spi_40013400_P_fifo_enable 0 -#define DT_N_S_soc_S_spi_40013400_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_spi_40013400_P_wakeup_source 0 +#define DT_N_S_soc_S_spi_40013400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_spi_40013400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_spi_40013400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/spi@58001400 @@ -21665,6 +22415,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_spi_58001400_FULL_NAME "spi@58001400" +#define DT_N_S_soc_S_spi_58001400_FULL_NAME_UNQUOTED spi@58001400 +#define DT_N_S_soc_S_spi_58001400_FULL_NAME_TOKEN spi_58001400 +#define DT_N_S_soc_S_spi_58001400_FULL_NAME_UPPER_TOKEN SPI_58001400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_spi_58001400_PARENT DT_N_S_soc @@ -21690,14 +22443,14 @@ #define DT_N_S_soc_S_spi_58001400_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_spi_58001400_ORD 142 -#define DT_N_S_soc_S_spi_58001400_ORD_STR_SORTABLE 00142 +#define DT_N_S_soc_S_spi_58001400_ORD 145 +#define DT_N_S_soc_S_spi_58001400_ORD_STR_SORTABLE 00145 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_spi_58001400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_spi_58001400_SUPPORTS_ORDS /* nothing */ @@ -21712,8 +22465,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_spi_58001400_REG_NUM 1 #define DT_N_S_soc_S_spi_58001400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_58001400_REG_IDX_0_VAL_ADDRESS 1476400128 /* 0x58001400 */ -#define DT_N_S_soc_S_spi_58001400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_spi_58001400_REG_IDX_0_VAL_ADDRESS 1476400128 +#define DT_N_S_soc_S_spi_58001400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_spi_58001400_RANGES_NUM 0 #define DT_N_S_soc_S_spi_58001400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_spi_58001400_IRQ_NUM 1 @@ -21746,20 +22499,32 @@ #define DT_N_S_soc_S_spi_58001400_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_spi_58001400_P_wakeup_source 0 -#define DT_N_S_soc_S_spi_58001400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_spi_58001400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_spi_58001400_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_spi_58001400_P_midi_clock 0 +#define DT_N_S_soc_S_spi_58001400_P_midi_clock_EXISTS 1 +#define DT_N_S_soc_S_spi_58001400_P_mssi_clock 0 +#define DT_N_S_soc_S_spi_58001400_P_mssi_clock_EXISTS 1 +#define DT_N_S_soc_S_spi_58001400_P_fifo_enable 0 +#define DT_N_S_soc_S_spi_58001400_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_spi_58001400_P_reg {1476400128, 1024} +#define DT_N_S_soc_S_spi_58001400_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_58001400_P_reg_IDX_0 1476400128 +#define DT_N_S_soc_S_spi_58001400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_58001400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_spi_58001400_P_reg_EXISTS 1 +#define DT_N_S_soc_S_spi_58001400_P_interrupts {86, 0} +#define DT_N_S_soc_S_spi_58001400_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_58001400_P_interrupts_IDX_0 86 +#define DT_N_S_soc_S_spi_58001400_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_58001400_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_spi_58001400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_spi_58001400_P_status "disabled" #define DT_N_S_soc_S_spi_58001400_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_spi_58001400_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_spi_58001400_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_spi_58001400_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_spi_58001400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_58001400_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_spi_58001400_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_spi_58001400_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_spi_58001400_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_spi_58001400_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_spi_58001400_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_spi_58001400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_58001400, status, 0) #define DT_N_S_soc_S_spi_58001400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_spi_58001400, status, 0) #define DT_N_S_soc_S_spi_58001400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_spi_58001400, status, 0, __VA_ARGS__) @@ -21767,21 +22532,21 @@ #define DT_N_S_soc_S_spi_58001400_P_status_LEN 1 #define DT_N_S_soc_S_spi_58001400_P_status_EXISTS 1 #define DT_N_S_soc_S_spi_58001400_P_compatible {"st,stm32h7-spi", "st,stm32-spi-fifo", "st,stm32-spi"} +#define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_0 "st,stm32h7-spi" #define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-spi #define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_spi #define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_SPI -#define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_1 "st,stm32-spi-fifo" #define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-spi-fifo #define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_1_STRING_TOKEN st_stm32_spi_fifo #define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_SPI_FIFO -#define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_2_EXISTS 1 #define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_2 "st,stm32-spi" #define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_2_STRING_UNQUOTED st,stm32-spi #define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_2_STRING_TOKEN st_stm32_spi #define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_2_STRING_UPPER_TOKEN ST_STM32_SPI -#define DT_N_S_soc_S_spi_58001400_P_compatible_IDX_2_EXISTS 1 #define DT_N_S_soc_S_spi_58001400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_spi_58001400, compatible, 0) \ fn(DT_N_S_soc_S_spi_58001400, compatible, 1) \ fn(DT_N_S_soc_S_spi_58001400, compatible, 2) @@ -21796,18 +22561,6 @@ fn(DT_N_S_soc_S_spi_58001400, compatible, 2, __VA_ARGS__) #define DT_N_S_soc_S_spi_58001400_P_compatible_LEN 3 #define DT_N_S_soc_S_spi_58001400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_spi_58001400_P_reg {1476400128 /* 0x58001400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_spi_58001400_P_reg_IDX_0 1476400128 -#define DT_N_S_soc_S_spi_58001400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_58001400_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_spi_58001400_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_spi_58001400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_spi_58001400_P_interrupts {86 /* 0x56 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_spi_58001400_P_interrupts_IDX_0 86 -#define DT_N_S_soc_S_spi_58001400_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_spi_58001400_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_spi_58001400_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_spi_58001400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_spi_58001400_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_spi_58001400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_spi_58001400_P_clocks_IDX_0_VAL_bus 244 @@ -21822,12 +22575,10 @@ #define DT_N_S_soc_S_spi_58001400_P_clocks_EXISTS 1 #define DT_N_S_soc_S_spi_58001400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_spi_58001400_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_spi_58001400_P_midi_clock 0 -#define DT_N_S_soc_S_spi_58001400_P_midi_clock_EXISTS 1 -#define DT_N_S_soc_S_spi_58001400_P_mssi_clock 0 -#define DT_N_S_soc_S_spi_58001400_P_mssi_clock_EXISTS 1 -#define DT_N_S_soc_S_spi_58001400_P_fifo_enable 0 -#define DT_N_S_soc_S_spi_58001400_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_spi_58001400_P_wakeup_source 0 +#define DT_N_S_soc_S_spi_58001400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_spi_58001400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_spi_58001400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timer@e000e010 @@ -21846,6 +22597,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timer_e000e010_FULL_NAME "timer@e000e010" +#define DT_N_S_soc_S_timer_e000e010_FULL_NAME_UNQUOTED timer@e000e010 +#define DT_N_S_soc_S_timer_e000e010_FULL_NAME_TOKEN timer_e000e010 +#define DT_N_S_soc_S_timer_e000e010_FULL_NAME_UPPER_TOKEN TIMER_E000E010 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timer_e000e010_PARENT DT_N_S_soc @@ -21871,12 +22625,12 @@ #define DT_N_S_soc_S_timer_e000e010_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timer_e000e010_ORD 143 -#define DT_N_S_soc_S_timer_e000e010_ORD_STR_SORTABLE 00143 +#define DT_N_S_soc_S_timer_e000e010_ORD 146 +#define DT_N_S_soc_S_timer_e000e010_ORD_STR_SORTABLE 00146 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timer_e000e010_REQUIRES_ORDS \ - 4, /* /soc */ + 4, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timer_e000e010_SUPPORTS_ORDS /* nothing */ @@ -21889,8 +22643,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timer_e000e010_REG_NUM 1 #define DT_N_S_soc_S_timer_e000e010_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timer_e000e010_REG_IDX_0_VAL_ADDRESS 3758153744 /* 0xe000e010 */ -#define DT_N_S_soc_S_timer_e000e010_REG_IDX_0_VAL_SIZE 16 /* 0x10 */ +#define DT_N_S_soc_S_timer_e000e010_REG_IDX_0_VAL_ADDRESS 3758153744 +#define DT_N_S_soc_S_timer_e000e010_REG_IDX_0_VAL_SIZE 16 #define DT_N_S_soc_S_timer_e000e010_RANGES_NUM 0 #define DT_N_S_soc_S_timer_e000e010_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timer_e000e010_IRQ_NUM 0 @@ -21906,30 +22660,30 @@ #define DT_N_S_soc_S_timer_e000e010_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timer_e000e010_P_wakeup_source 0 -#define DT_N_S_soc_S_timer_e000e010_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timer_e000e010_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timer_e000e010_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timer_e000e010_P_reg {3758153744, 16} +#define DT_N_S_soc_S_timer_e000e010_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timer_e000e010_P_reg_IDX_0 3758153744 +#define DT_N_S_soc_S_timer_e000e010_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timer_e000e010_P_reg_IDX_1 16 +#define DT_N_S_soc_S_timer_e000e010_P_reg_EXISTS 1 #define DT_N_S_soc_S_timer_e000e010_P_compatible {"arm,armv7m-systick"} +#define DT_N_S_soc_S_timer_e000e010_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timer_e000e010_P_compatible_IDX_0 "arm,armv7m-systick" #define DT_N_S_soc_S_timer_e000e010_P_compatible_IDX_0_STRING_UNQUOTED arm,armv7m-systick #define DT_N_S_soc_S_timer_e000e010_P_compatible_IDX_0_STRING_TOKEN arm_armv7m_systick #define DT_N_S_soc_S_timer_e000e010_P_compatible_IDX_0_STRING_UPPER_TOKEN ARM_ARMV7M_SYSTICK -#define DT_N_S_soc_S_timer_e000e010_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timer_e000e010_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timer_e000e010, compatible, 0) #define DT_N_S_soc_S_timer_e000e010_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timer_e000e010, compatible, 0) #define DT_N_S_soc_S_timer_e000e010_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timer_e000e010, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timer_e000e010_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timer_e000e010, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timer_e000e010_P_compatible_LEN 1 #define DT_N_S_soc_S_timer_e000e010_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timer_e000e010_P_reg {3758153744 /* 0xe000e010 */, 16 /* 0x10 */} -#define DT_N_S_soc_S_timer_e000e010_P_reg_IDX_0 3758153744 -#define DT_N_S_soc_S_timer_e000e010_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timer_e000e010_P_reg_IDX_1 16 -#define DT_N_S_soc_S_timer_e000e010_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timer_e000e010_P_reg_EXISTS 1 #define DT_N_S_soc_S_timer_e000e010_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timer_e000e010_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_timer_e000e010_P_wakeup_source 0 +#define DT_N_S_soc_S_timer_e000e010_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timer_e000e010_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timer_e000e010_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40002400 @@ -21948,6 +22702,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40002400_FULL_NAME "timers@40002400" +#define DT_N_S_soc_S_timers_40002400_FULL_NAME_UNQUOTED timers@40002400 +#define DT_N_S_soc_S_timers_40002400_FULL_NAME_TOKEN timers_40002400 +#define DT_N_S_soc_S_timers_40002400_FULL_NAME_UPPER_TOKEN TIMERS_40002400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timers_40002400_PARENT DT_N_S_soc @@ -21973,14 +22730,14 @@ #define DT_N_S_soc_S_timers_40002400_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40002400_ORD 144 -#define DT_N_S_soc_S_timers_40002400_ORD_STR_SORTABLE 00144 +#define DT_N_S_soc_S_timers_40002400_ORD 147 +#define DT_N_S_soc_S_timers_40002400_ORD_STR_SORTABLE 00147 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40002400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40002400_SUPPORTS_ORDS /* nothing */ @@ -21993,8 +22750,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timers_40002400_REG_NUM 1 #define DT_N_S_soc_S_timers_40002400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40002400_REG_IDX_0_VAL_ADDRESS 1073751040 /* 0x40002400 */ -#define DT_N_S_soc_S_timers_40002400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_timers_40002400_REG_IDX_0_VAL_ADDRESS 1073751040 +#define DT_N_S_soc_S_timers_40002400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_timers_40002400_RANGES_NUM 0 #define DT_N_S_soc_S_timers_40002400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timers_40002400_IRQ_NUM 1 @@ -22022,20 +22779,37 @@ #define DT_N_S_soc_S_timers_40002400_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40002400_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40002400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40002400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40002400_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40002400_P_st_prescaler 1 +#define DT_N_S_soc_S_timers_40002400_P_st_prescaler_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_timers_40002400_P_st_prescaler_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40002400_P_st_prescaler_IDX_0_ENUM_VAL_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40002400_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40002400_P_reg {1073751040, 1024} +#define DT_N_S_soc_S_timers_40002400_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40002400_P_reg_IDX_0 1073751040 +#define DT_N_S_soc_S_timers_40002400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40002400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_timers_40002400_P_reg_EXISTS 1 +#define DT_N_S_soc_S_timers_40002400_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40002400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_timers_40002400_P_clocks_IDX_0_VAL_bus 232 +#define DT_N_S_soc_S_timers_40002400_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_timers_40002400_P_clocks_IDX_0_VAL_bits 512 +#define DT_N_S_soc_S_timers_40002400_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_timers_40002400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002400, clocks, 0) +#define DT_N_S_soc_S_timers_40002400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002400, clocks, 0) +#define DT_N_S_soc_S_timers_40002400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002400, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40002400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40002400, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40002400_P_clocks_LEN 1 +#define DT_N_S_soc_S_timers_40002400_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40002400_P_status "disabled" #define DT_N_S_soc_S_timers_40002400_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40002400_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40002400_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40002400_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40002400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40002400_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40002400_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40002400_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40002400_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40002400_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40002400_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40002400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002400, status, 0) #define DT_N_S_soc_S_timers_40002400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002400, status, 0) #define DT_N_S_soc_S_timers_40002400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002400, status, 0, __VA_ARGS__) @@ -22043,59 +22817,41 @@ #define DT_N_S_soc_S_timers_40002400_P_status_LEN 1 #define DT_N_S_soc_S_timers_40002400_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40002400_P_compatible {"st,stm32-lptim"} +#define DT_N_S_soc_S_timers_40002400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40002400_P_compatible_IDX_0 "st,stm32-lptim" #define DT_N_S_soc_S_timers_40002400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-lptim #define DT_N_S_soc_S_timers_40002400_P_compatible_IDX_0_STRING_TOKEN st_stm32_lptim #define DT_N_S_soc_S_timers_40002400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_LPTIM -#define DT_N_S_soc_S_timers_40002400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40002400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002400, compatible, 0) #define DT_N_S_soc_S_timers_40002400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002400, compatible, 0) #define DT_N_S_soc_S_timers_40002400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40002400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40002400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40002400_P_compatible_LEN 1 #define DT_N_S_soc_S_timers_40002400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timers_40002400_P_reg {1073751040 /* 0x40002400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_timers_40002400_P_reg_IDX_0 1073751040 -#define DT_N_S_soc_S_timers_40002400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40002400_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_timers_40002400_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40002400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_timers_40002400_P_interrupts {93 /* 0x5d */, 1 /* 0x1 */} -#define DT_N_S_soc_S_timers_40002400_P_interrupts_IDX_0 93 +#define DT_N_S_soc_S_timers_40002400_P_interrupts {93, 1} #define DT_N_S_soc_S_timers_40002400_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40002400_P_interrupts_IDX_1 1 +#define DT_N_S_soc_S_timers_40002400_P_interrupts_IDX_0 93 #define DT_N_S_soc_S_timers_40002400_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40002400_P_interrupts_IDX_1 1 #define DT_N_S_soc_S_timers_40002400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_timers_40002400_P_interrupt_names {"wakeup"} +#define DT_N_S_soc_S_timers_40002400_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40002400_P_interrupt_names_IDX_0 "wakeup" #define DT_N_S_soc_S_timers_40002400_P_interrupt_names_IDX_0_STRING_UNQUOTED wakeup #define DT_N_S_soc_S_timers_40002400_P_interrupt_names_IDX_0_STRING_TOKEN wakeup #define DT_N_S_soc_S_timers_40002400_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN WAKEUP -#define DT_N_S_soc_S_timers_40002400_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40002400_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002400, interrupt_names, 0) #define DT_N_S_soc_S_timers_40002400_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002400, interrupt_names, 0) #define DT_N_S_soc_S_timers_40002400_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002400, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40002400_P_interrupt_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40002400, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40002400_P_interrupt_names_LEN 1 #define DT_N_S_soc_S_timers_40002400_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40002400_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40002400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_timers_40002400_P_clocks_IDX_0_VAL_bus 232 -#define DT_N_S_soc_S_timers_40002400_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_timers_40002400_P_clocks_IDX_0_VAL_bits 512 -#define DT_N_S_soc_S_timers_40002400_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_timers_40002400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002400, clocks, 0) -#define DT_N_S_soc_S_timers_40002400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002400, clocks, 0) -#define DT_N_S_soc_S_timers_40002400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002400, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40002400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40002400, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40002400_P_clocks_LEN 1 -#define DT_N_S_soc_S_timers_40002400_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40002400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40002400_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40002400_P_st_prescaler 1 -#define DT_N_S_soc_S_timers_40002400_P_st_prescaler_ENUM_IDX 0 -#define DT_N_S_soc_S_timers_40002400_P_st_prescaler_ENUM_VAL_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40002400_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40002400_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40002400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40002400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40002400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/usb@40040000 @@ -22114,6 +22870,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_usb_40040000_FULL_NAME "usb@40040000" +#define DT_N_S_soc_S_usb_40040000_FULL_NAME_UNQUOTED usb@40040000 +#define DT_N_S_soc_S_usb_40040000_FULL_NAME_TOKEN usb_40040000 +#define DT_N_S_soc_S_usb_40040000_FULL_NAME_UPPER_TOKEN USB_40040000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_usb_40040000_PARENT DT_N_S_soc @@ -22139,15 +22898,15 @@ #define DT_N_S_soc_S_usb_40040000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_usb_40040000_ORD 145 -#define DT_N_S_soc_S_usb_40040000_ORD_STR_SORTABLE 00145 +#define DT_N_S_soc_S_usb_40040000_ORD 148 +#define DT_N_S_soc_S_usb_40040000_ORD_STR_SORTABLE 00148 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_usb_40040000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 88, /* /otghs_fs_phy */ + 4, \ + 5, \ + 9, \ + 88, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_usb_40040000_SUPPORTS_ORDS /* nothing */ @@ -22160,8 +22919,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_usb_40040000_REG_NUM 1 #define DT_N_S_soc_S_usb_40040000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_REG_IDX_0_VAL_ADDRESS 1074003968 /* 0x40040000 */ -#define DT_N_S_soc_S_usb_40040000_REG_IDX_0_VAL_SIZE 262144 /* 0x40000 */ +#define DT_N_S_soc_S_usb_40040000_REG_IDX_0_VAL_ADDRESS 1074003968 +#define DT_N_S_soc_S_usb_40040000_REG_IDX_0_VAL_SIZE 262144 #define DT_N_S_soc_S_usb_40040000_RANGES_NUM 0 #define DT_N_S_soc_S_usb_40040000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_usb_40040000_IRQ_NUM 4 @@ -22225,101 +22984,42 @@ #define DT_N_S_soc_S_usb_40040000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_usb_40040000_P_wakeup_source 0 -#define DT_N_S_soc_S_usb_40040000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_usb_40040000_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_status "disabled" -#define DT_N_S_soc_S_usb_40040000_P_status_STRING_UNQUOTED disabled -#define DT_N_S_soc_S_usb_40040000_P_status_STRING_TOKEN disabled -#define DT_N_S_soc_S_usb_40040000_P_status_STRING_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_usb_40040000_P_status_IDX_0 "disabled" -#define DT_N_S_soc_S_usb_40040000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_usb_40040000_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_usb_40040000_P_status_ENUM_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_usb_40040000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40040000, status, 0) -#define DT_N_S_soc_S_usb_40040000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40040000, status, 0) -#define DT_N_S_soc_S_usb_40040000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40040000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40040000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40040000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40040000_P_status_LEN 1 -#define DT_N_S_soc_S_usb_40040000_P_status_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_compatible {"st,stm32-otghs"} -#define DT_N_S_soc_S_usb_40040000_P_compatible_IDX_0 "st,stm32-otghs" -#define DT_N_S_soc_S_usb_40040000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-otghs -#define DT_N_S_soc_S_usb_40040000_P_compatible_IDX_0_STRING_TOKEN st_stm32_otghs -#define DT_N_S_soc_S_usb_40040000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_OTGHS -#define DT_N_S_soc_S_usb_40040000_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40040000, compatible, 0) -#define DT_N_S_soc_S_usb_40040000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40040000, compatible, 0) -#define DT_N_S_soc_S_usb_40040000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40040000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40040000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40040000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40040000_P_compatible_LEN 1 -#define DT_N_S_soc_S_usb_40040000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_reg {1074003968 /* 0x40040000 */, 262144 /* 0x40000 */} -#define DT_N_S_soc_S_usb_40040000_P_reg_IDX_0 1074003968 +#define DT_N_S_soc_S_usb_40040000_P_reg {1074003968, 262144} #define DT_N_S_soc_S_usb_40040000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_reg_IDX_1 262144 +#define DT_N_S_soc_S_usb_40040000_P_reg_IDX_0 1074003968 #define DT_N_S_soc_S_usb_40040000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_reg_IDX_1 262144 #define DT_N_S_soc_S_usb_40040000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_interrupts {74 /* 0x4a */, 0 /* 0x0 */, 75 /* 0x4b */, 0 /* 0x0 */, 76 /* 0x4c */, 0 /* 0x0 */, 77 /* 0x4d */, 0 /* 0x0 */} -#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_0 74 +#define DT_N_S_soc_S_usb_40040000_P_interrupts {74, 0, 75, 0, 76, 0, 77, 0} #define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_0 74 #define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_2 75 +#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_3 0 +#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_2 75 #define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_4 76 +#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_3 0 #define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_5 0 +#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_4 76 #define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_6 77 +#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_5 0 #define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_7 0 +#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_6 77 #define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_7_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_interrupts_IDX_7 0 #define DT_N_S_soc_S_usb_40040000_P_interrupts_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names {"ep1_out", "ep1_in", "wkup", "otghs"} -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_0 "ep1_out" -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_0_STRING_UNQUOTED ep1_out -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_0_STRING_TOKEN ep1_out -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN EP1_OUT -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_1 "ep1_in" -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_1_STRING_UNQUOTED ep1_in -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_1_STRING_TOKEN ep1_in -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_1_STRING_UPPER_TOKEN EP1_IN -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_2 "wkup" -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_2_STRING_UNQUOTED wkup -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_2_STRING_TOKEN wkup -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_2_STRING_UPPER_TOKEN WKUP -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_3 "otghs" -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_3_STRING_UNQUOTED otghs -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_3_STRING_TOKEN otghs -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_3_STRING_UPPER_TOKEN OTGHS -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 0) \ - fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 1) \ - fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 2) \ - fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 3) -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 0) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 1) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 2) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 3) -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 0, __VA_ARGS__) \ - fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 1, __VA_ARGS__) \ - fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 2, __VA_ARGS__) \ - fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 3, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 1, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 2, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ - fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 3, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_LEN 4 -#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_ram_size 4096 +#define DT_N_S_soc_S_usb_40040000_P_ram_size_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_phys DT_N_S_otghs_fs_phy +#define DT_N_S_soc_S_usb_40040000_P_phys_IDX_0 DT_N_S_otghs_fs_phy +#define DT_N_S_soc_S_usb_40040000_P_phys_IDX_0_PH DT_N_S_otghs_fs_phy +#define DT_N_S_soc_S_usb_40040000_P_phys_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_phys_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40040000, phys, 0) +#define DT_N_S_soc_S_usb_40040000_P_phys_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40040000, phys, 0) +#define DT_N_S_soc_S_usb_40040000_P_phys_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40040000, phys, 0, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40040000_P_phys_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40040000, phys, 0, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40040000_P_phys_LEN 1 +#define DT_N_S_soc_S_usb_40040000_P_phys_EXISTS 1 #define DT_N_S_soc_S_usb_40040000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_usb_40040000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_usb_40040000_P_clocks_IDX_0_VAL_bus 216 @@ -22342,38 +23042,93 @@ fn(DT_N_S_soc_S_usb_40040000, clocks, 1, __VA_ARGS__) #define DT_N_S_soc_S_usb_40040000_P_clocks_LEN 2 #define DT_N_S_soc_S_usb_40040000_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_usb_40040000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_num_bidir_endpoints 9 +#define DT_N_S_soc_S_usb_40040000_P_num_bidir_endpoints_EXISTS 1 #define DT_N_S_soc_S_usb_40040000_P_maximum_speed "full-speed" #define DT_N_S_soc_S_usb_40040000_P_maximum_speed_STRING_UNQUOTED full-speed #define DT_N_S_soc_S_usb_40040000_P_maximum_speed_STRING_TOKEN full_speed #define DT_N_S_soc_S_usb_40040000_P_maximum_speed_STRING_UPPER_TOKEN FULL_SPEED #define DT_N_S_soc_S_usb_40040000_P_maximum_speed_IDX_0 "full-speed" #define DT_N_S_soc_S_usb_40040000_P_maximum_speed_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_maximum_speed_ENUM_IDX 1 -#define DT_N_S_soc_S_usb_40040000_P_maximum_speed_ENUM_VAL_full_speed_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_maximum_speed_ENUM_TOKEN full_speed -#define DT_N_S_soc_S_usb_40040000_P_maximum_speed_ENUM_UPPER_TOKEN FULL_SPEED +#define DT_N_S_soc_S_usb_40040000_P_maximum_speed_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_usb_40040000_P_maximum_speed_IDX_0_ENUM_VAL_full_speed_EXISTS 1 #define DT_N_S_soc_S_usb_40040000_P_maximum_speed_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40040000, maximum_speed, 0) #define DT_N_S_soc_S_usb_40040000_P_maximum_speed_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40040000, maximum_speed, 0) #define DT_N_S_soc_S_usb_40040000_P_maximum_speed_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40040000, maximum_speed, 0, __VA_ARGS__) #define DT_N_S_soc_S_usb_40040000_P_maximum_speed_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40040000, maximum_speed, 0, __VA_ARGS__) #define DT_N_S_soc_S_usb_40040000_P_maximum_speed_LEN 1 #define DT_N_S_soc_S_usb_40040000_P_maximum_speed_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_num_bidir_endpoints 9 -#define DT_N_S_soc_S_usb_40040000_P_num_bidir_endpoints_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_ram_size 4096 -#define DT_N_S_soc_S_usb_40040000_P_ram_size_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_phys DT_N_S_otghs_fs_phy -#define DT_N_S_soc_S_usb_40040000_P_phys_IDX_0 DT_N_S_otghs_fs_phy -#define DT_N_S_soc_S_usb_40040000_P_phys_IDX_0_PH DT_N_S_otghs_fs_phy -#define DT_N_S_soc_S_usb_40040000_P_phys_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_usb_40040000_P_phys_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40040000, phys, 0) -#define DT_N_S_soc_S_usb_40040000_P_phys_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40040000, phys, 0) -#define DT_N_S_soc_S_usb_40040000_P_phys_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40040000, phys, 0, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40040000_P_phys_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40040000, phys, 0, __VA_ARGS__) -#define DT_N_S_soc_S_usb_40040000_P_phys_LEN 1 -#define DT_N_S_soc_S_usb_40040000_P_phys_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_status "disabled" +#define DT_N_S_soc_S_usb_40040000_P_status_STRING_UNQUOTED disabled +#define DT_N_S_soc_S_usb_40040000_P_status_STRING_TOKEN disabled +#define DT_N_S_soc_S_usb_40040000_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_usb_40040000_P_status_IDX_0 "disabled" +#define DT_N_S_soc_S_usb_40040000_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_usb_40040000_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40040000, status, 0) +#define DT_N_S_soc_S_usb_40040000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40040000, status, 0) +#define DT_N_S_soc_S_usb_40040000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40040000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40040000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40040000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40040000_P_status_LEN 1 +#define DT_N_S_soc_S_usb_40040000_P_status_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_compatible {"st,stm32-otghs"} +#define DT_N_S_soc_S_usb_40040000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_compatible_IDX_0 "st,stm32-otghs" +#define DT_N_S_soc_S_usb_40040000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-otghs +#define DT_N_S_soc_S_usb_40040000_P_compatible_IDX_0_STRING_TOKEN st_stm32_otghs +#define DT_N_S_soc_S_usb_40040000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_OTGHS +#define DT_N_S_soc_S_usb_40040000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40040000, compatible, 0) +#define DT_N_S_soc_S_usb_40040000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40040000, compatible, 0) +#define DT_N_S_soc_S_usb_40040000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40040000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40040000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40040000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40040000_P_compatible_LEN 1 +#define DT_N_S_soc_S_usb_40040000_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names {"ep1_out", "ep1_in", "wkup", "otghs"} +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_0 "ep1_out" +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_0_STRING_UNQUOTED ep1_out +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_0_STRING_TOKEN ep1_out +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN EP1_OUT +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_1 "ep1_in" +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_1_STRING_UNQUOTED ep1_in +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_1_STRING_TOKEN ep1_in +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_1_STRING_UPPER_TOKEN EP1_IN +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_2 "wkup" +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_2_STRING_UNQUOTED wkup +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_2_STRING_TOKEN wkup +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_2_STRING_UPPER_TOKEN WKUP +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_3 "otghs" +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_3_STRING_UNQUOTED otghs +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_3_STRING_TOKEN otghs +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_IDX_3_STRING_UPPER_TOKEN OTGHS +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 0) \ + fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 1) \ + fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 2) \ + fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 3) +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 1) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 2) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 3) +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 1, __VA_ARGS__) \ + fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 2, __VA_ARGS__) \ + fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 3, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 1, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 2, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_usb_40040000, interrupt_names, 3, __VA_ARGS__) +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_LEN 4 +#define DT_N_S_soc_S_usb_40040000_P_interrupt_names_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_usb_40040000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_wakeup_source 0 +#define DT_N_S_soc_S_usb_40040000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_usb_40040000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_usb_40040000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/watchdog@50003000 @@ -22392,6 +23147,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_watchdog_50003000_FULL_NAME "watchdog@50003000" +#define DT_N_S_soc_S_watchdog_50003000_FULL_NAME_UNQUOTED watchdog@50003000 +#define DT_N_S_soc_S_watchdog_50003000_FULL_NAME_TOKEN watchdog_50003000 +#define DT_N_S_soc_S_watchdog_50003000_FULL_NAME_UPPER_TOKEN WATCHDOG_50003000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_watchdog_50003000_PARENT DT_N_S_soc @@ -22417,14 +23175,14 @@ #define DT_N_S_soc_S_watchdog_50003000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_watchdog_50003000_ORD 146 -#define DT_N_S_soc_S_watchdog_50003000_ORD_STR_SORTABLE 00146 +#define DT_N_S_soc_S_watchdog_50003000_ORD 149 +#define DT_N_S_soc_S_watchdog_50003000_ORD_STR_SORTABLE 00149 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_watchdog_50003000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_watchdog_50003000_SUPPORTS_ORDS /* nothing */ @@ -22438,8 +23196,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_watchdog_50003000_REG_NUM 1 #define DT_N_S_soc_S_watchdog_50003000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_watchdog_50003000_REG_IDX_0_VAL_ADDRESS 1342189568 /* 0x50003000 */ -#define DT_N_S_soc_S_watchdog_50003000_REG_IDX_0_VAL_SIZE 4096 /* 0x1000 */ +#define DT_N_S_soc_S_watchdog_50003000_REG_IDX_0_VAL_ADDRESS 1342189568 +#define DT_N_S_soc_S_watchdog_50003000_REG_IDX_0_VAL_SIZE 4096 #define DT_N_S_soc_S_watchdog_50003000_RANGES_NUM 0 #define DT_N_S_soc_S_watchdog_50003000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_watchdog_50003000_IRQ_NUM 1 @@ -22462,20 +23220,32 @@ #define DT_N_S_soc_S_watchdog_50003000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_watchdog_50003000_P_wakeup_source 0 -#define DT_N_S_soc_S_watchdog_50003000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_watchdog_50003000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_watchdog_50003000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_watchdog_50003000_P_reg {1342189568, 4096} +#define DT_N_S_soc_S_watchdog_50003000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_watchdog_50003000_P_reg_IDX_0 1342189568 +#define DT_N_S_soc_S_watchdog_50003000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_watchdog_50003000_P_reg_IDX_1 4096 +#define DT_N_S_soc_S_watchdog_50003000_P_reg_EXISTS 1 +#define DT_N_S_soc_S_watchdog_50003000_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_watchdog_50003000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_watchdog_50003000_P_clocks_IDX_0_VAL_bus 228 +#define DT_N_S_soc_S_watchdog_50003000_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_watchdog_50003000_P_clocks_IDX_0_VAL_bits 64 +#define DT_N_S_soc_S_watchdog_50003000_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_watchdog_50003000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_watchdog_50003000, clocks, 0) +#define DT_N_S_soc_S_watchdog_50003000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_watchdog_50003000, clocks, 0) +#define DT_N_S_soc_S_watchdog_50003000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_watchdog_50003000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_watchdog_50003000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_watchdog_50003000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_watchdog_50003000_P_clocks_LEN 1 +#define DT_N_S_soc_S_watchdog_50003000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_watchdog_50003000_P_status "disabled" #define DT_N_S_soc_S_watchdog_50003000_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_watchdog_50003000_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_watchdog_50003000_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_watchdog_50003000_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_watchdog_50003000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_watchdog_50003000_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_watchdog_50003000_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_watchdog_50003000_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_watchdog_50003000_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_watchdog_50003000_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_watchdog_50003000_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_watchdog_50003000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_watchdog_50003000, status, 0) #define DT_N_S_soc_S_watchdog_50003000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_watchdog_50003000, status, 0) #define DT_N_S_soc_S_watchdog_50003000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_watchdog_50003000, status, 0, __VA_ARGS__) @@ -22483,43 +23253,29 @@ #define DT_N_S_soc_S_watchdog_50003000_P_status_LEN 1 #define DT_N_S_soc_S_watchdog_50003000_P_status_EXISTS 1 #define DT_N_S_soc_S_watchdog_50003000_P_compatible {"st,stm32-window-watchdog"} +#define DT_N_S_soc_S_watchdog_50003000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_watchdog_50003000_P_compatible_IDX_0 "st,stm32-window-watchdog" #define DT_N_S_soc_S_watchdog_50003000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-window-watchdog #define DT_N_S_soc_S_watchdog_50003000_P_compatible_IDX_0_STRING_TOKEN st_stm32_window_watchdog #define DT_N_S_soc_S_watchdog_50003000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_WINDOW_WATCHDOG -#define DT_N_S_soc_S_watchdog_50003000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_watchdog_50003000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_watchdog_50003000, compatible, 0) #define DT_N_S_soc_S_watchdog_50003000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_watchdog_50003000, compatible, 0) #define DT_N_S_soc_S_watchdog_50003000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_watchdog_50003000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_watchdog_50003000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_watchdog_50003000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_watchdog_50003000_P_compatible_LEN 1 #define DT_N_S_soc_S_watchdog_50003000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_watchdog_50003000_P_reg {1342189568 /* 0x50003000 */, 4096 /* 0x1000 */} -#define DT_N_S_soc_S_watchdog_50003000_P_reg_IDX_0 1342189568 -#define DT_N_S_soc_S_watchdog_50003000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_watchdog_50003000_P_reg_IDX_1 4096 -#define DT_N_S_soc_S_watchdog_50003000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_watchdog_50003000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_watchdog_50003000_P_interrupts {0 /* 0x0 */, 7 /* 0x7 */} -#define DT_N_S_soc_S_watchdog_50003000_P_interrupts_IDX_0 0 +#define DT_N_S_soc_S_watchdog_50003000_P_interrupts {0, 7} #define DT_N_S_soc_S_watchdog_50003000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_watchdog_50003000_P_interrupts_IDX_1 7 +#define DT_N_S_soc_S_watchdog_50003000_P_interrupts_IDX_0 0 #define DT_N_S_soc_S_watchdog_50003000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_watchdog_50003000_P_interrupts_IDX_1 7 #define DT_N_S_soc_S_watchdog_50003000_P_interrupts_EXISTS 1 -#define DT_N_S_soc_S_watchdog_50003000_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_watchdog_50003000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_watchdog_50003000_P_clocks_IDX_0_VAL_bus 228 -#define DT_N_S_soc_S_watchdog_50003000_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_watchdog_50003000_P_clocks_IDX_0_VAL_bits 64 -#define DT_N_S_soc_S_watchdog_50003000_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_watchdog_50003000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_watchdog_50003000, clocks, 0) -#define DT_N_S_soc_S_watchdog_50003000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_watchdog_50003000, clocks, 0) -#define DT_N_S_soc_S_watchdog_50003000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_watchdog_50003000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_watchdog_50003000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_watchdog_50003000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_watchdog_50003000_P_clocks_LEN 1 -#define DT_N_S_soc_S_watchdog_50003000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_watchdog_50003000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_watchdog_50003000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_watchdog_50003000_P_wakeup_source 0 +#define DT_N_S_soc_S_watchdog_50003000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_watchdog_50003000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_watchdog_50003000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/watchdog@58004800 @@ -22538,6 +23294,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_watchdog_58004800_FULL_NAME "watchdog@58004800" +#define DT_N_S_soc_S_watchdog_58004800_FULL_NAME_UNQUOTED watchdog@58004800 +#define DT_N_S_soc_S_watchdog_58004800_FULL_NAME_TOKEN watchdog_58004800 +#define DT_N_S_soc_S_watchdog_58004800_FULL_NAME_UPPER_TOKEN WATCHDOG_58004800 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_watchdog_58004800_PARENT DT_N_S_soc @@ -22563,12 +23322,12 @@ #define DT_N_S_soc_S_watchdog_58004800_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_watchdog_58004800_ORD 147 -#define DT_N_S_soc_S_watchdog_58004800_ORD_STR_SORTABLE 00147 +#define DT_N_S_soc_S_watchdog_58004800_ORD 150 +#define DT_N_S_soc_S_watchdog_58004800_ORD_STR_SORTABLE 00150 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_watchdog_58004800_REQUIRES_ORDS \ - 4, /* /soc */ + 4, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_watchdog_58004800_SUPPORTS_ORDS /* nothing */ @@ -22582,8 +23341,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_watchdog_58004800_REG_NUM 1 #define DT_N_S_soc_S_watchdog_58004800_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_watchdog_58004800_REG_IDX_0_VAL_ADDRESS 1476413440 /* 0x58004800 */ -#define DT_N_S_soc_S_watchdog_58004800_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_watchdog_58004800_REG_IDX_0_VAL_ADDRESS 1476413440 +#define DT_N_S_soc_S_watchdog_58004800_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_watchdog_58004800_RANGES_NUM 0 #define DT_N_S_soc_S_watchdog_58004800_FOREACH_RANGE(fn) #define DT_N_S_soc_S_watchdog_58004800_IRQ_NUM 0 @@ -22599,20 +23358,20 @@ #define DT_N_S_soc_S_watchdog_58004800_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_watchdog_58004800_P_wakeup_source 0 -#define DT_N_S_soc_S_watchdog_58004800_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_watchdog_58004800_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_watchdog_58004800_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_watchdog_58004800_P_reg {1476413440, 1024} +#define DT_N_S_soc_S_watchdog_58004800_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_watchdog_58004800_P_reg_IDX_0 1476413440 +#define DT_N_S_soc_S_watchdog_58004800_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_watchdog_58004800_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_watchdog_58004800_P_reg_EXISTS 1 #define DT_N_S_soc_S_watchdog_58004800_P_status "disabled" #define DT_N_S_soc_S_watchdog_58004800_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_watchdog_58004800_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_watchdog_58004800_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_watchdog_58004800_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_watchdog_58004800_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_watchdog_58004800_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_watchdog_58004800_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_watchdog_58004800_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_watchdog_58004800_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_watchdog_58004800_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_watchdog_58004800_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_watchdog_58004800_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_watchdog_58004800, status, 0) #define DT_N_S_soc_S_watchdog_58004800_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_watchdog_58004800, status, 0) #define DT_N_S_soc_S_watchdog_58004800_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_watchdog_58004800, status, 0, __VA_ARGS__) @@ -22620,25 +23379,23 @@ #define DT_N_S_soc_S_watchdog_58004800_P_status_LEN 1 #define DT_N_S_soc_S_watchdog_58004800_P_status_EXISTS 1 #define DT_N_S_soc_S_watchdog_58004800_P_compatible {"st,stm32-watchdog"} +#define DT_N_S_soc_S_watchdog_58004800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_watchdog_58004800_P_compatible_IDX_0 "st,stm32-watchdog" #define DT_N_S_soc_S_watchdog_58004800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-watchdog #define DT_N_S_soc_S_watchdog_58004800_P_compatible_IDX_0_STRING_TOKEN st_stm32_watchdog #define DT_N_S_soc_S_watchdog_58004800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_WATCHDOG -#define DT_N_S_soc_S_watchdog_58004800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_watchdog_58004800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_watchdog_58004800, compatible, 0) #define DT_N_S_soc_S_watchdog_58004800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_watchdog_58004800, compatible, 0) #define DT_N_S_soc_S_watchdog_58004800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_watchdog_58004800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_watchdog_58004800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_watchdog_58004800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_watchdog_58004800_P_compatible_LEN 1 #define DT_N_S_soc_S_watchdog_58004800_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_watchdog_58004800_P_reg {1476413440 /* 0x58004800 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_watchdog_58004800_P_reg_IDX_0 1476413440 -#define DT_N_S_soc_S_watchdog_58004800_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_watchdog_58004800_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_watchdog_58004800_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_watchdog_58004800_P_reg_EXISTS 1 #define DT_N_S_soc_S_watchdog_58004800_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_watchdog_58004800_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_watchdog_58004800_P_wakeup_source 0 +#define DT_N_S_soc_S_watchdog_58004800_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_watchdog_58004800_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_watchdog_58004800_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/adc@40022000/channel@0 @@ -22654,6 +23411,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_40022000_S_channel_0_FULL_NAME "channel@0" +#define DT_N_S_soc_S_adc_40022000_S_channel_0_FULL_NAME_UNQUOTED channel@0 +#define DT_N_S_soc_S_adc_40022000_S_channel_0_FULL_NAME_TOKEN channel_0 +#define DT_N_S_soc_S_adc_40022000_S_channel_0_FULL_NAME_UPPER_TOKEN CHANNEL_0 /* Node parent (/soc/adc@40022000) identifier: */ #define DT_N_S_soc_S_adc_40022000_S_channel_0_PARENT DT_N_S_soc_S_adc_40022000 @@ -22679,12 +23439,12 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_0_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_0_ORD 148 -#define DT_N_S_soc_S_adc_40022000_S_channel_0_ORD_STR_SORTABLE 00148 +#define DT_N_S_soc_S_adc_40022000_S_channel_0_ORD 151 +#define DT_N_S_soc_S_adc_40022000_S_channel_0_ORD_STR_SORTABLE 00151 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_40022000_S_channel_0_REQUIRES_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_40022000_S_channel_0_SUPPORTS_ORDS /* nothing */ @@ -22695,7 +23455,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_40022000_S_channel_0_REG_NUM 1 #define DT_N_S_soc_S_adc_40022000_S_channel_0_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_0_REG_IDX_0_VAL_ADDRESS 0 /* 0x0 */ +#define DT_N_S_soc_S_adc_40022000_S_channel_0_REG_IDX_0_VAL_ADDRESS 0 #define DT_N_S_soc_S_adc_40022000_S_channel_0_RANGES_NUM 0 #define DT_N_S_soc_S_adc_40022000_S_channel_0_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_40022000_S_channel_0_IRQ_NUM 0 @@ -22706,9 +23466,9 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_0_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_reg {0 /* 0x0 */} -#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_reg_IDX_0 0 +#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_reg {0} #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_reg_IDX_0 0 #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_reg_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_gain "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_gain_STRING_UNQUOTED ADC_GAIN_1 @@ -22716,10 +23476,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_gain_STRING_UPPER_TOKEN ADC_GAIN_1 #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_gain_IDX_0 "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_gain_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_gain_ENUM_IDX 8 -#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_gain_ENUM_VAL_ADC_GAIN_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_gain_ENUM_TOKEN ADC_GAIN_1 -#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_gain_ENUM_UPPER_TOKEN ADC_GAIN_1 +#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_gain_IDX_0_ENUM_IDX 8 +#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_gain_IDX_0_ENUM_VAL_ADC_GAIN_1_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_gain_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_0, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_gain_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_0, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_gain_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_0, zephyr_gain, 0, __VA_ARGS__) @@ -22732,10 +23490,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_reference_STRING_UPPER_TOKEN ADC_REF_INTERNAL #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_reference_IDX_0 "ADC_REF_INTERNAL" #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_reference_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_reference_ENUM_IDX 4 -#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_reference_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_reference_ENUM_TOKEN ADC_REF_INTERNAL -#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_reference_ENUM_UPPER_TOKEN ADC_REF_INTERNAL +#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_reference_IDX_0_ENUM_IDX 4 +#define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_reference_IDX_0_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_reference_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_0, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_reference_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_0, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_0_P_zephyr_reference_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_0, zephyr_reference, 0, __VA_ARGS__) @@ -22763,6 +23519,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_40022000_S_channel_1_FULL_NAME "channel@1" +#define DT_N_S_soc_S_adc_40022000_S_channel_1_FULL_NAME_UNQUOTED channel@1 +#define DT_N_S_soc_S_adc_40022000_S_channel_1_FULL_NAME_TOKEN channel_1 +#define DT_N_S_soc_S_adc_40022000_S_channel_1_FULL_NAME_UPPER_TOKEN CHANNEL_1 /* Node parent (/soc/adc@40022000) identifier: */ #define DT_N_S_soc_S_adc_40022000_S_channel_1_PARENT DT_N_S_soc_S_adc_40022000 @@ -22788,12 +23547,12 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_1_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_1_ORD 149 -#define DT_N_S_soc_S_adc_40022000_S_channel_1_ORD_STR_SORTABLE 00149 +#define DT_N_S_soc_S_adc_40022000_S_channel_1_ORD 152 +#define DT_N_S_soc_S_adc_40022000_S_channel_1_ORD_STR_SORTABLE 00152 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_40022000_S_channel_1_REQUIRES_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_40022000_S_channel_1_SUPPORTS_ORDS /* nothing */ @@ -22804,7 +23563,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_40022000_S_channel_1_REG_NUM 1 #define DT_N_S_soc_S_adc_40022000_S_channel_1_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_1_REG_IDX_0_VAL_ADDRESS 1 /* 0x1 */ +#define DT_N_S_soc_S_adc_40022000_S_channel_1_REG_IDX_0_VAL_ADDRESS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_1_RANGES_NUM 0 #define DT_N_S_soc_S_adc_40022000_S_channel_1_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_40022000_S_channel_1_IRQ_NUM 0 @@ -22815,9 +23574,9 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_1_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_reg {1 /* 0x1 */} -#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_reg_IDX_0 1 +#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_reg {1} #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_reg_IDX_0 1 #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_reg_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_gain "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_gain_STRING_UNQUOTED ADC_GAIN_1 @@ -22825,10 +23584,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_gain_STRING_UPPER_TOKEN ADC_GAIN_1 #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_gain_IDX_0 "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_gain_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_gain_ENUM_IDX 8 -#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_gain_ENUM_VAL_ADC_GAIN_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_gain_ENUM_TOKEN ADC_GAIN_1 -#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_gain_ENUM_UPPER_TOKEN ADC_GAIN_1 +#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_gain_IDX_0_ENUM_IDX 8 +#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_gain_IDX_0_ENUM_VAL_ADC_GAIN_1_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_gain_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_1, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_gain_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_1, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_gain_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_1, zephyr_gain, 0, __VA_ARGS__) @@ -22841,10 +23598,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_reference_STRING_UPPER_TOKEN ADC_REF_INTERNAL #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_reference_IDX_0 "ADC_REF_INTERNAL" #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_reference_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_reference_ENUM_IDX 4 -#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_reference_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_reference_ENUM_TOKEN ADC_REF_INTERNAL -#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_reference_ENUM_UPPER_TOKEN ADC_REF_INTERNAL +#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_reference_IDX_0_ENUM_IDX 4 +#define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_reference_IDX_0_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_reference_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_1, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_reference_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_1, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_1_P_zephyr_reference_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_1, zephyr_reference, 0, __VA_ARGS__) @@ -22872,6 +23627,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_40022000_S_channel_4_FULL_NAME "channel@4" +#define DT_N_S_soc_S_adc_40022000_S_channel_4_FULL_NAME_UNQUOTED channel@4 +#define DT_N_S_soc_S_adc_40022000_S_channel_4_FULL_NAME_TOKEN channel_4 +#define DT_N_S_soc_S_adc_40022000_S_channel_4_FULL_NAME_UPPER_TOKEN CHANNEL_4 /* Node parent (/soc/adc@40022000) identifier: */ #define DT_N_S_soc_S_adc_40022000_S_channel_4_PARENT DT_N_S_soc_S_adc_40022000 @@ -22897,12 +23655,12 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_4_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_4_ORD 150 -#define DT_N_S_soc_S_adc_40022000_S_channel_4_ORD_STR_SORTABLE 00150 +#define DT_N_S_soc_S_adc_40022000_S_channel_4_ORD 153 +#define DT_N_S_soc_S_adc_40022000_S_channel_4_ORD_STR_SORTABLE 00153 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_40022000_S_channel_4_REQUIRES_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_40022000_S_channel_4_SUPPORTS_ORDS /* nothing */ @@ -22913,7 +23671,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_40022000_S_channel_4_REG_NUM 1 #define DT_N_S_soc_S_adc_40022000_S_channel_4_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_4_REG_IDX_0_VAL_ADDRESS 4 /* 0x4 */ +#define DT_N_S_soc_S_adc_40022000_S_channel_4_REG_IDX_0_VAL_ADDRESS 4 #define DT_N_S_soc_S_adc_40022000_S_channel_4_RANGES_NUM 0 #define DT_N_S_soc_S_adc_40022000_S_channel_4_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_40022000_S_channel_4_IRQ_NUM 0 @@ -22924,9 +23682,9 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_4_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_reg {4 /* 0x4 */} -#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_reg_IDX_0 4 +#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_reg {4} #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_reg_IDX_0 4 #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_reg_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_gain "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_gain_STRING_UNQUOTED ADC_GAIN_1 @@ -22934,10 +23692,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_gain_STRING_UPPER_TOKEN ADC_GAIN_1 #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_gain_IDX_0 "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_gain_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_gain_ENUM_IDX 8 -#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_gain_ENUM_VAL_ADC_GAIN_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_gain_ENUM_TOKEN ADC_GAIN_1 -#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_gain_ENUM_UPPER_TOKEN ADC_GAIN_1 +#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_gain_IDX_0_ENUM_IDX 8 +#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_gain_IDX_0_ENUM_VAL_ADC_GAIN_1_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_gain_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_4, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_gain_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_4, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_gain_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_4, zephyr_gain, 0, __VA_ARGS__) @@ -22950,10 +23706,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_reference_STRING_UPPER_TOKEN ADC_REF_INTERNAL #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_reference_IDX_0 "ADC_REF_INTERNAL" #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_reference_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_reference_ENUM_IDX 4 -#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_reference_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_reference_ENUM_TOKEN ADC_REF_INTERNAL -#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_reference_ENUM_UPPER_TOKEN ADC_REF_INTERNAL +#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_reference_IDX_0_ENUM_IDX 4 +#define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_reference_IDX_0_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_reference_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_4, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_reference_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_4, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_4_P_zephyr_reference_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_4, zephyr_reference, 0, __VA_ARGS__) @@ -22981,6 +23735,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_40022000_S_channel_5_FULL_NAME "channel@5" +#define DT_N_S_soc_S_adc_40022000_S_channel_5_FULL_NAME_UNQUOTED channel@5 +#define DT_N_S_soc_S_adc_40022000_S_channel_5_FULL_NAME_TOKEN channel_5 +#define DT_N_S_soc_S_adc_40022000_S_channel_5_FULL_NAME_UPPER_TOKEN CHANNEL_5 /* Node parent (/soc/adc@40022000) identifier: */ #define DT_N_S_soc_S_adc_40022000_S_channel_5_PARENT DT_N_S_soc_S_adc_40022000 @@ -23006,12 +23763,12 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_5_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_5_ORD 151 -#define DT_N_S_soc_S_adc_40022000_S_channel_5_ORD_STR_SORTABLE 00151 +#define DT_N_S_soc_S_adc_40022000_S_channel_5_ORD 154 +#define DT_N_S_soc_S_adc_40022000_S_channel_5_ORD_STR_SORTABLE 00154 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_40022000_S_channel_5_REQUIRES_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_40022000_S_channel_5_SUPPORTS_ORDS /* nothing */ @@ -23022,7 +23779,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_40022000_S_channel_5_REG_NUM 1 #define DT_N_S_soc_S_adc_40022000_S_channel_5_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_5_REG_IDX_0_VAL_ADDRESS 5 /* 0x5 */ +#define DT_N_S_soc_S_adc_40022000_S_channel_5_REG_IDX_0_VAL_ADDRESS 5 #define DT_N_S_soc_S_adc_40022000_S_channel_5_RANGES_NUM 0 #define DT_N_S_soc_S_adc_40022000_S_channel_5_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_40022000_S_channel_5_IRQ_NUM 0 @@ -23033,9 +23790,9 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_5_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_reg {5 /* 0x5 */} -#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_reg_IDX_0 5 +#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_reg {5} #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_reg_IDX_0 5 #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_reg_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_gain "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_gain_STRING_UNQUOTED ADC_GAIN_1 @@ -23043,10 +23800,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_gain_STRING_UPPER_TOKEN ADC_GAIN_1 #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_gain_IDX_0 "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_gain_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_gain_ENUM_IDX 8 -#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_gain_ENUM_VAL_ADC_GAIN_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_gain_ENUM_TOKEN ADC_GAIN_1 -#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_gain_ENUM_UPPER_TOKEN ADC_GAIN_1 +#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_gain_IDX_0_ENUM_IDX 8 +#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_gain_IDX_0_ENUM_VAL_ADC_GAIN_1_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_gain_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_5, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_gain_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_5, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_gain_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_5, zephyr_gain, 0, __VA_ARGS__) @@ -23059,10 +23814,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_reference_STRING_UPPER_TOKEN ADC_REF_INTERNAL #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_reference_IDX_0 "ADC_REF_INTERNAL" #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_reference_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_reference_ENUM_IDX 4 -#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_reference_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_reference_ENUM_TOKEN ADC_REF_INTERNAL -#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_reference_ENUM_UPPER_TOKEN ADC_REF_INTERNAL +#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_reference_IDX_0_ENUM_IDX 4 +#define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_reference_IDX_0_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_reference_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_5, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_reference_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_5, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_5_P_zephyr_reference_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_5, zephyr_reference, 0, __VA_ARGS__) @@ -23090,6 +23843,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_40022000_S_channel_8_FULL_NAME "channel@8" +#define DT_N_S_soc_S_adc_40022000_S_channel_8_FULL_NAME_UNQUOTED channel@8 +#define DT_N_S_soc_S_adc_40022000_S_channel_8_FULL_NAME_TOKEN channel_8 +#define DT_N_S_soc_S_adc_40022000_S_channel_8_FULL_NAME_UPPER_TOKEN CHANNEL_8 /* Node parent (/soc/adc@40022000) identifier: */ #define DT_N_S_soc_S_adc_40022000_S_channel_8_PARENT DT_N_S_soc_S_adc_40022000 @@ -23115,12 +23871,12 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_8_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_8_ORD 152 -#define DT_N_S_soc_S_adc_40022000_S_channel_8_ORD_STR_SORTABLE 00152 +#define DT_N_S_soc_S_adc_40022000_S_channel_8_ORD 155 +#define DT_N_S_soc_S_adc_40022000_S_channel_8_ORD_STR_SORTABLE 00155 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_40022000_S_channel_8_REQUIRES_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_40022000_S_channel_8_SUPPORTS_ORDS /* nothing */ @@ -23131,7 +23887,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_40022000_S_channel_8_REG_NUM 1 #define DT_N_S_soc_S_adc_40022000_S_channel_8_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_8_REG_IDX_0_VAL_ADDRESS 8 /* 0x8 */ +#define DT_N_S_soc_S_adc_40022000_S_channel_8_REG_IDX_0_VAL_ADDRESS 8 #define DT_N_S_soc_S_adc_40022000_S_channel_8_RANGES_NUM 0 #define DT_N_S_soc_S_adc_40022000_S_channel_8_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_40022000_S_channel_8_IRQ_NUM 0 @@ -23142,9 +23898,9 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_8_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_reg {8 /* 0x8 */} -#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_reg_IDX_0 8 +#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_reg {8} #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_reg_IDX_0 8 #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_reg_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_gain "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_gain_STRING_UNQUOTED ADC_GAIN_1 @@ -23152,10 +23908,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_gain_STRING_UPPER_TOKEN ADC_GAIN_1 #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_gain_IDX_0 "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_gain_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_gain_ENUM_IDX 8 -#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_gain_ENUM_VAL_ADC_GAIN_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_gain_ENUM_TOKEN ADC_GAIN_1 -#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_gain_ENUM_UPPER_TOKEN ADC_GAIN_1 +#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_gain_IDX_0_ENUM_IDX 8 +#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_gain_IDX_0_ENUM_VAL_ADC_GAIN_1_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_gain_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_8, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_gain_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_8, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_gain_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_8, zephyr_gain, 0, __VA_ARGS__) @@ -23168,10 +23922,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_reference_STRING_UPPER_TOKEN ADC_REF_INTERNAL #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_reference_IDX_0 "ADC_REF_INTERNAL" #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_reference_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_reference_ENUM_IDX 4 -#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_reference_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_reference_ENUM_TOKEN ADC_REF_INTERNAL -#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_reference_ENUM_UPPER_TOKEN ADC_REF_INTERNAL +#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_reference_IDX_0_ENUM_IDX 4 +#define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_reference_IDX_0_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_reference_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_8, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_reference_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_8, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_8_P_zephyr_reference_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_8, zephyr_reference, 0, __VA_ARGS__) @@ -23199,6 +23951,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_40022000_S_channel_9_FULL_NAME "channel@9" +#define DT_N_S_soc_S_adc_40022000_S_channel_9_FULL_NAME_UNQUOTED channel@9 +#define DT_N_S_soc_S_adc_40022000_S_channel_9_FULL_NAME_TOKEN channel_9 +#define DT_N_S_soc_S_adc_40022000_S_channel_9_FULL_NAME_UPPER_TOKEN CHANNEL_9 /* Node parent (/soc/adc@40022000) identifier: */ #define DT_N_S_soc_S_adc_40022000_S_channel_9_PARENT DT_N_S_soc_S_adc_40022000 @@ -23224,12 +23979,12 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_9_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_9_ORD 153 -#define DT_N_S_soc_S_adc_40022000_S_channel_9_ORD_STR_SORTABLE 00153 +#define DT_N_S_soc_S_adc_40022000_S_channel_9_ORD 156 +#define DT_N_S_soc_S_adc_40022000_S_channel_9_ORD_STR_SORTABLE 00156 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_40022000_S_channel_9_REQUIRES_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_40022000_S_channel_9_SUPPORTS_ORDS /* nothing */ @@ -23240,7 +23995,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_40022000_S_channel_9_REG_NUM 1 #define DT_N_S_soc_S_adc_40022000_S_channel_9_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_9_REG_IDX_0_VAL_ADDRESS 9 /* 0x9 */ +#define DT_N_S_soc_S_adc_40022000_S_channel_9_REG_IDX_0_VAL_ADDRESS 9 #define DT_N_S_soc_S_adc_40022000_S_channel_9_RANGES_NUM 0 #define DT_N_S_soc_S_adc_40022000_S_channel_9_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_40022000_S_channel_9_IRQ_NUM 0 @@ -23251,9 +24006,9 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_9_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_reg {9 /* 0x9 */} -#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_reg_IDX_0 9 +#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_reg {9} #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_reg_IDX_0 9 #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_reg_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_gain "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_gain_STRING_UNQUOTED ADC_GAIN_1 @@ -23261,10 +24016,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_gain_STRING_UPPER_TOKEN ADC_GAIN_1 #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_gain_IDX_0 "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_gain_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_gain_ENUM_IDX 8 -#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_gain_ENUM_VAL_ADC_GAIN_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_gain_ENUM_TOKEN ADC_GAIN_1 -#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_gain_ENUM_UPPER_TOKEN ADC_GAIN_1 +#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_gain_IDX_0_ENUM_IDX 8 +#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_gain_IDX_0_ENUM_VAL_ADC_GAIN_1_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_gain_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_9, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_gain_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_9, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_gain_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_9, zephyr_gain, 0, __VA_ARGS__) @@ -23277,10 +24030,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_reference_STRING_UPPER_TOKEN ADC_REF_INTERNAL #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_reference_IDX_0 "ADC_REF_INTERNAL" #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_reference_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_reference_ENUM_IDX 4 -#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_reference_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_reference_ENUM_TOKEN ADC_REF_INTERNAL -#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_reference_ENUM_UPPER_TOKEN ADC_REF_INTERNAL +#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_reference_IDX_0_ENUM_IDX 4 +#define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_reference_IDX_0_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_reference_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_9, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_reference_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_9, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_9_P_zephyr_reference_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_9, zephyr_reference, 0, __VA_ARGS__) @@ -23308,6 +24059,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_40022000_S_channel_a_FULL_NAME "channel@a" +#define DT_N_S_soc_S_adc_40022000_S_channel_a_FULL_NAME_UNQUOTED channel@a +#define DT_N_S_soc_S_adc_40022000_S_channel_a_FULL_NAME_TOKEN channel_a +#define DT_N_S_soc_S_adc_40022000_S_channel_a_FULL_NAME_UPPER_TOKEN CHANNEL_A /* Node parent (/soc/adc@40022000) identifier: */ #define DT_N_S_soc_S_adc_40022000_S_channel_a_PARENT DT_N_S_soc_S_adc_40022000 @@ -23333,12 +24087,12 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_a_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_a_ORD 154 -#define DT_N_S_soc_S_adc_40022000_S_channel_a_ORD_STR_SORTABLE 00154 +#define DT_N_S_soc_S_adc_40022000_S_channel_a_ORD 157 +#define DT_N_S_soc_S_adc_40022000_S_channel_a_ORD_STR_SORTABLE 00157 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_40022000_S_channel_a_REQUIRES_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_40022000_S_channel_a_SUPPORTS_ORDS /* nothing */ @@ -23349,7 +24103,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_40022000_S_channel_a_REG_NUM 1 #define DT_N_S_soc_S_adc_40022000_S_channel_a_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_a_REG_IDX_0_VAL_ADDRESS 10 /* 0xa */ +#define DT_N_S_soc_S_adc_40022000_S_channel_a_REG_IDX_0_VAL_ADDRESS 10 #define DT_N_S_soc_S_adc_40022000_S_channel_a_RANGES_NUM 0 #define DT_N_S_soc_S_adc_40022000_S_channel_a_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_40022000_S_channel_a_IRQ_NUM 0 @@ -23360,9 +24114,9 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_a_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_reg {10 /* 0xa */} -#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_reg_IDX_0 10 +#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_reg {10} #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_reg_IDX_0 10 #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_reg_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_gain "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_gain_STRING_UNQUOTED ADC_GAIN_1 @@ -23370,10 +24124,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_gain_STRING_UPPER_TOKEN ADC_GAIN_1 #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_gain_IDX_0 "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_gain_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_gain_ENUM_IDX 8 -#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_gain_ENUM_VAL_ADC_GAIN_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_gain_ENUM_TOKEN ADC_GAIN_1 -#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_gain_ENUM_UPPER_TOKEN ADC_GAIN_1 +#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_gain_IDX_0_ENUM_IDX 8 +#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_gain_IDX_0_ENUM_VAL_ADC_GAIN_1_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_gain_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_a, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_gain_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_a, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_gain_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_a, zephyr_gain, 0, __VA_ARGS__) @@ -23386,10 +24138,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_reference_STRING_UPPER_TOKEN ADC_REF_INTERNAL #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_reference_IDX_0 "ADC_REF_INTERNAL" #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_reference_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_reference_ENUM_IDX 4 -#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_reference_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_reference_ENUM_TOKEN ADC_REF_INTERNAL -#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_reference_ENUM_UPPER_TOKEN ADC_REF_INTERNAL +#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_reference_IDX_0_ENUM_IDX 4 +#define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_reference_IDX_0_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_reference_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_a, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_reference_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_a, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_a_P_zephyr_reference_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_a, zephyr_reference, 0, __VA_ARGS__) @@ -23417,6 +24167,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_40022000_S_channel_c_FULL_NAME "channel@c" +#define DT_N_S_soc_S_adc_40022000_S_channel_c_FULL_NAME_UNQUOTED channel@c +#define DT_N_S_soc_S_adc_40022000_S_channel_c_FULL_NAME_TOKEN channel_c +#define DT_N_S_soc_S_adc_40022000_S_channel_c_FULL_NAME_UPPER_TOKEN CHANNEL_C /* Node parent (/soc/adc@40022000) identifier: */ #define DT_N_S_soc_S_adc_40022000_S_channel_c_PARENT DT_N_S_soc_S_adc_40022000 @@ -23442,12 +24195,12 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_c_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_c_ORD 155 -#define DT_N_S_soc_S_adc_40022000_S_channel_c_ORD_STR_SORTABLE 00155 +#define DT_N_S_soc_S_adc_40022000_S_channel_c_ORD 158 +#define DT_N_S_soc_S_adc_40022000_S_channel_c_ORD_STR_SORTABLE 00158 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_40022000_S_channel_c_REQUIRES_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_40022000_S_channel_c_SUPPORTS_ORDS /* nothing */ @@ -23458,7 +24211,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_40022000_S_channel_c_REG_NUM 1 #define DT_N_S_soc_S_adc_40022000_S_channel_c_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_c_REG_IDX_0_VAL_ADDRESS 12 /* 0xc */ +#define DT_N_S_soc_S_adc_40022000_S_channel_c_REG_IDX_0_VAL_ADDRESS 12 #define DT_N_S_soc_S_adc_40022000_S_channel_c_RANGES_NUM 0 #define DT_N_S_soc_S_adc_40022000_S_channel_c_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_40022000_S_channel_c_IRQ_NUM 0 @@ -23469,9 +24222,9 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_c_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_reg {12 /* 0xc */} -#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_reg_IDX_0 12 +#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_reg {12} #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_reg_IDX_0 12 #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_reg_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_gain "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_gain_STRING_UNQUOTED ADC_GAIN_1 @@ -23479,10 +24232,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_gain_STRING_UPPER_TOKEN ADC_GAIN_1 #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_gain_IDX_0 "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_gain_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_gain_ENUM_IDX 8 -#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_gain_ENUM_VAL_ADC_GAIN_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_gain_ENUM_TOKEN ADC_GAIN_1 -#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_gain_ENUM_UPPER_TOKEN ADC_GAIN_1 +#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_gain_IDX_0_ENUM_IDX 8 +#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_gain_IDX_0_ENUM_VAL_ADC_GAIN_1_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_gain_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_c, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_gain_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_c, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_gain_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_c, zephyr_gain, 0, __VA_ARGS__) @@ -23495,10 +24246,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_reference_STRING_UPPER_TOKEN ADC_REF_INTERNAL #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_reference_IDX_0 "ADC_REF_INTERNAL" #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_reference_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_reference_ENUM_IDX 4 -#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_reference_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_reference_ENUM_TOKEN ADC_REF_INTERNAL -#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_reference_ENUM_UPPER_TOKEN ADC_REF_INTERNAL +#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_reference_IDX_0_ENUM_IDX 4 +#define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_reference_IDX_0_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_reference_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_c, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_reference_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_c, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_c_P_zephyr_reference_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_c, zephyr_reference, 0, __VA_ARGS__) @@ -23526,6 +24275,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_40022000_S_channel_d_FULL_NAME "channel@d" +#define DT_N_S_soc_S_adc_40022000_S_channel_d_FULL_NAME_UNQUOTED channel@d +#define DT_N_S_soc_S_adc_40022000_S_channel_d_FULL_NAME_TOKEN channel_d +#define DT_N_S_soc_S_adc_40022000_S_channel_d_FULL_NAME_UPPER_TOKEN CHANNEL_D /* Node parent (/soc/adc@40022000) identifier: */ #define DT_N_S_soc_S_adc_40022000_S_channel_d_PARENT DT_N_S_soc_S_adc_40022000 @@ -23551,12 +24303,12 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_d_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_d_ORD 156 -#define DT_N_S_soc_S_adc_40022000_S_channel_d_ORD_STR_SORTABLE 00156 +#define DT_N_S_soc_S_adc_40022000_S_channel_d_ORD 159 +#define DT_N_S_soc_S_adc_40022000_S_channel_d_ORD_STR_SORTABLE 00159 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_40022000_S_channel_d_REQUIRES_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_40022000_S_channel_d_SUPPORTS_ORDS /* nothing */ @@ -23567,7 +24319,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_40022000_S_channel_d_REG_NUM 1 #define DT_N_S_soc_S_adc_40022000_S_channel_d_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_d_REG_IDX_0_VAL_ADDRESS 13 /* 0xd */ +#define DT_N_S_soc_S_adc_40022000_S_channel_d_REG_IDX_0_VAL_ADDRESS 13 #define DT_N_S_soc_S_adc_40022000_S_channel_d_RANGES_NUM 0 #define DT_N_S_soc_S_adc_40022000_S_channel_d_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_40022000_S_channel_d_IRQ_NUM 0 @@ -23578,9 +24330,9 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_d_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_reg {13 /* 0xd */} -#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_reg_IDX_0 13 +#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_reg {13} #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_reg_IDX_0 13 #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_reg_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_gain "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_gain_STRING_UNQUOTED ADC_GAIN_1 @@ -23588,10 +24340,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_gain_STRING_UPPER_TOKEN ADC_GAIN_1 #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_gain_IDX_0 "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_gain_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_gain_ENUM_IDX 8 -#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_gain_ENUM_VAL_ADC_GAIN_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_gain_ENUM_TOKEN ADC_GAIN_1 -#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_gain_ENUM_UPPER_TOKEN ADC_GAIN_1 +#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_gain_IDX_0_ENUM_IDX 8 +#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_gain_IDX_0_ENUM_VAL_ADC_GAIN_1_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_gain_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_d, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_gain_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_d, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_gain_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_d, zephyr_gain, 0, __VA_ARGS__) @@ -23604,10 +24354,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_reference_STRING_UPPER_TOKEN ADC_REF_INTERNAL #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_reference_IDX_0 "ADC_REF_INTERNAL" #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_reference_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_reference_ENUM_IDX 4 -#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_reference_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_reference_ENUM_TOKEN ADC_REF_INTERNAL -#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_reference_ENUM_UPPER_TOKEN ADC_REF_INTERNAL +#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_reference_IDX_0_ENUM_IDX 4 +#define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_reference_IDX_0_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_reference_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_d, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_reference_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_d, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_d_P_zephyr_reference_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_d, zephyr_reference, 0, __VA_ARGS__) @@ -23635,6 +24383,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_40022000_S_channel_10_FULL_NAME "channel@10" +#define DT_N_S_soc_S_adc_40022000_S_channel_10_FULL_NAME_UNQUOTED channel@10 +#define DT_N_S_soc_S_adc_40022000_S_channel_10_FULL_NAME_TOKEN channel_10 +#define DT_N_S_soc_S_adc_40022000_S_channel_10_FULL_NAME_UPPER_TOKEN CHANNEL_10 /* Node parent (/soc/adc@40022000) identifier: */ #define DT_N_S_soc_S_adc_40022000_S_channel_10_PARENT DT_N_S_soc_S_adc_40022000 @@ -23660,12 +24411,12 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_10_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_10_ORD 157 -#define DT_N_S_soc_S_adc_40022000_S_channel_10_ORD_STR_SORTABLE 00157 +#define DT_N_S_soc_S_adc_40022000_S_channel_10_ORD 160 +#define DT_N_S_soc_S_adc_40022000_S_channel_10_ORD_STR_SORTABLE 00160 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_40022000_S_channel_10_REQUIRES_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_40022000_S_channel_10_SUPPORTS_ORDS /* nothing */ @@ -23676,7 +24427,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_40022000_S_channel_10_REG_NUM 1 #define DT_N_S_soc_S_adc_40022000_S_channel_10_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_10_REG_IDX_0_VAL_ADDRESS 16 /* 0x10 */ +#define DT_N_S_soc_S_adc_40022000_S_channel_10_REG_IDX_0_VAL_ADDRESS 16 #define DT_N_S_soc_S_adc_40022000_S_channel_10_RANGES_NUM 0 #define DT_N_S_soc_S_adc_40022000_S_channel_10_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_40022000_S_channel_10_IRQ_NUM 0 @@ -23687,9 +24438,9 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_10_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_reg {16 /* 0x10 */} -#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_reg_IDX_0 16 +#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_reg {16} #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_reg_IDX_0 16 #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_reg_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_gain "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_gain_STRING_UNQUOTED ADC_GAIN_1 @@ -23697,10 +24448,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_gain_STRING_UPPER_TOKEN ADC_GAIN_1 #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_gain_IDX_0 "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_gain_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_gain_ENUM_IDX 8 -#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_gain_ENUM_VAL_ADC_GAIN_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_gain_ENUM_TOKEN ADC_GAIN_1 -#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_gain_ENUM_UPPER_TOKEN ADC_GAIN_1 +#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_gain_IDX_0_ENUM_IDX 8 +#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_gain_IDX_0_ENUM_VAL_ADC_GAIN_1_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_gain_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_10, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_gain_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_10, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_gain_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_10, zephyr_gain, 0, __VA_ARGS__) @@ -23713,10 +24462,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_reference_STRING_UPPER_TOKEN ADC_REF_INTERNAL #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_reference_IDX_0 "ADC_REF_INTERNAL" #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_reference_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_reference_ENUM_IDX 4 -#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_reference_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_reference_ENUM_TOKEN ADC_REF_INTERNAL -#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_reference_ENUM_UPPER_TOKEN ADC_REF_INTERNAL +#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_reference_IDX_0_ENUM_IDX 4 +#define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_reference_IDX_0_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_reference_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_10, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_reference_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_10, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_10_P_zephyr_reference_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_10, zephyr_reference, 0, __VA_ARGS__) @@ -23744,6 +24491,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_40022000_S_channel_12_FULL_NAME "channel@12" +#define DT_N_S_soc_S_adc_40022000_S_channel_12_FULL_NAME_UNQUOTED channel@12 +#define DT_N_S_soc_S_adc_40022000_S_channel_12_FULL_NAME_TOKEN channel_12 +#define DT_N_S_soc_S_adc_40022000_S_channel_12_FULL_NAME_UPPER_TOKEN CHANNEL_12 /* Node parent (/soc/adc@40022000) identifier: */ #define DT_N_S_soc_S_adc_40022000_S_channel_12_PARENT DT_N_S_soc_S_adc_40022000 @@ -23769,12 +24519,12 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_12_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_12_ORD 158 -#define DT_N_S_soc_S_adc_40022000_S_channel_12_ORD_STR_SORTABLE 00158 +#define DT_N_S_soc_S_adc_40022000_S_channel_12_ORD 161 +#define DT_N_S_soc_S_adc_40022000_S_channel_12_ORD_STR_SORTABLE 00161 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_40022000_S_channel_12_REQUIRES_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_40022000_S_channel_12_SUPPORTS_ORDS /* nothing */ @@ -23785,7 +24535,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_40022000_S_channel_12_REG_NUM 1 #define DT_N_S_soc_S_adc_40022000_S_channel_12_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_12_REG_IDX_0_VAL_ADDRESS 18 /* 0x12 */ +#define DT_N_S_soc_S_adc_40022000_S_channel_12_REG_IDX_0_VAL_ADDRESS 18 #define DT_N_S_soc_S_adc_40022000_S_channel_12_RANGES_NUM 0 #define DT_N_S_soc_S_adc_40022000_S_channel_12_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_40022000_S_channel_12_IRQ_NUM 0 @@ -23796,9 +24546,9 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_12_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_reg {18 /* 0x12 */} -#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_reg_IDX_0 18 +#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_reg {18} #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_reg_IDX_0 18 #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_reg_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_gain "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_gain_STRING_UNQUOTED ADC_GAIN_1 @@ -23806,10 +24556,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_gain_STRING_UPPER_TOKEN ADC_GAIN_1 #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_gain_IDX_0 "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_gain_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_gain_ENUM_IDX 8 -#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_gain_ENUM_VAL_ADC_GAIN_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_gain_ENUM_TOKEN ADC_GAIN_1 -#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_gain_ENUM_UPPER_TOKEN ADC_GAIN_1 +#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_gain_IDX_0_ENUM_IDX 8 +#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_gain_IDX_0_ENUM_VAL_ADC_GAIN_1_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_gain_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_12, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_gain_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_12, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_gain_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_12, zephyr_gain, 0, __VA_ARGS__) @@ -23822,10 +24570,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_reference_STRING_UPPER_TOKEN ADC_REF_INTERNAL #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_reference_IDX_0 "ADC_REF_INTERNAL" #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_reference_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_reference_ENUM_IDX 4 -#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_reference_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_reference_ENUM_TOKEN ADC_REF_INTERNAL -#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_reference_ENUM_UPPER_TOKEN ADC_REF_INTERNAL +#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_reference_IDX_0_ENUM_IDX 4 +#define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_reference_IDX_0_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_reference_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_12, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_reference_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_12, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_12_P_zephyr_reference_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_12, zephyr_reference, 0, __VA_ARGS__) @@ -23853,6 +24599,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_40022000_S_channel_13_FULL_NAME "channel@13" +#define DT_N_S_soc_S_adc_40022000_S_channel_13_FULL_NAME_UNQUOTED channel@13 +#define DT_N_S_soc_S_adc_40022000_S_channel_13_FULL_NAME_TOKEN channel_13 +#define DT_N_S_soc_S_adc_40022000_S_channel_13_FULL_NAME_UPPER_TOKEN CHANNEL_13 /* Node parent (/soc/adc@40022000) identifier: */ #define DT_N_S_soc_S_adc_40022000_S_channel_13_PARENT DT_N_S_soc_S_adc_40022000 @@ -23878,12 +24627,12 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_13_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_13_ORD 159 -#define DT_N_S_soc_S_adc_40022000_S_channel_13_ORD_STR_SORTABLE 00159 +#define DT_N_S_soc_S_adc_40022000_S_channel_13_ORD 162 +#define DT_N_S_soc_S_adc_40022000_S_channel_13_ORD_STR_SORTABLE 00162 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_40022000_S_channel_13_REQUIRES_ORDS \ - 51, /* /soc/adc@40022000 */ + 51, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_40022000_S_channel_13_SUPPORTS_ORDS /* nothing */ @@ -23894,7 +24643,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_40022000_S_channel_13_REG_NUM 1 #define DT_N_S_soc_S_adc_40022000_S_channel_13_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_13_REG_IDX_0_VAL_ADDRESS 19 /* 0x13 */ +#define DT_N_S_soc_S_adc_40022000_S_channel_13_REG_IDX_0_VAL_ADDRESS 19 #define DT_N_S_soc_S_adc_40022000_S_channel_13_RANGES_NUM 0 #define DT_N_S_soc_S_adc_40022000_S_channel_13_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_40022000_S_channel_13_IRQ_NUM 0 @@ -23905,9 +24654,9 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_13_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_reg {19 /* 0x13 */} -#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_reg_IDX_0 19 +#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_reg {19} #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_reg_IDX_0 19 #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_reg_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_gain "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_gain_STRING_UNQUOTED ADC_GAIN_1 @@ -23915,10 +24664,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_gain_STRING_UPPER_TOKEN ADC_GAIN_1 #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_gain_IDX_0 "ADC_GAIN_1" #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_gain_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_gain_ENUM_IDX 8 -#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_gain_ENUM_VAL_ADC_GAIN_1_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_gain_ENUM_TOKEN ADC_GAIN_1 -#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_gain_ENUM_UPPER_TOKEN ADC_GAIN_1 +#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_gain_IDX_0_ENUM_IDX 8 +#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_gain_IDX_0_ENUM_VAL_ADC_GAIN_1_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_gain_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_13, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_gain_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_13, zephyr_gain, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_gain_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_13, zephyr_gain, 0, __VA_ARGS__) @@ -23931,10 +24678,8 @@ #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_reference_STRING_UPPER_TOKEN ADC_REF_INTERNAL #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_reference_IDX_0 "ADC_REF_INTERNAL" #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_reference_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_reference_ENUM_IDX 4 -#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_reference_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 -#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_reference_ENUM_TOKEN ADC_REF_INTERNAL -#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_reference_ENUM_UPPER_TOKEN ADC_REF_INTERNAL +#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_reference_IDX_0_ENUM_IDX 4 +#define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_reference_IDX_0_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_reference_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_40022000_S_channel_13, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_reference_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_40022000_S_channel_13, zephyr_reference, 0) #define DT_N_S_soc_S_adc_40022000_S_channel_13_P_zephyr_reference_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_40022000_S_channel_13, zephyr_reference, 0, __VA_ARGS__) @@ -23962,6 +24707,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_58026000_S_channel_0_FULL_NAME "channel@0" +#define DT_N_S_soc_S_adc_58026000_S_channel_0_FULL_NAME_UNQUOTED channel@0 +#define DT_N_S_soc_S_adc_58026000_S_channel_0_FULL_NAME_TOKEN channel_0 +#define DT_N_S_soc_S_adc_58026000_S_channel_0_FULL_NAME_UPPER_TOKEN CHANNEL_0 /* Node parent (/soc/adc@58026000) identifier: */ #define DT_N_S_soc_S_adc_58026000_S_channel_0_PARENT DT_N_S_soc_S_adc_58026000 @@ -23987,12 +24735,12 @@ #define DT_N_S_soc_S_adc_58026000_S_channel_0_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_58026000_S_channel_0_ORD 160 -#define DT_N_S_soc_S_adc_58026000_S_channel_0_ORD_STR_SORTABLE 00160 +#define DT_N_S_soc_S_adc_58026000_S_channel_0_ORD 163 +#define DT_N_S_soc_S_adc_58026000_S_channel_0_ORD_STR_SORTABLE 00163 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_58026000_S_channel_0_REQUIRES_ORDS \ - 13, /* /soc/adc@58026000 */ + 13, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_58026000_S_channel_0_SUPPORTS_ORDS /* nothing */ @@ -24003,7 +24751,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_58026000_S_channel_0_REG_NUM 1 #define DT_N_S_soc_S_adc_58026000_S_channel_0_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_S_channel_0_REG_IDX_0_VAL_ADDRESS 0 /* 0x0 */ +#define DT_N_S_soc_S_adc_58026000_S_channel_0_REG_IDX_0_VAL_ADDRESS 0 #define DT_N_S_soc_S_adc_58026000_S_channel_0_RANGES_NUM 0 #define DT_N_S_soc_S_adc_58026000_S_channel_0_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_58026000_S_channel_0_IRQ_NUM 0 @@ -24014,9 +24762,9 @@ #define DT_N_S_soc_S_adc_58026000_S_channel_0_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_reg {0 /* 0x0 */} -#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_reg_IDX_0 0 +#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_reg {0} #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_reg_IDX_0 0 #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_reg_EXISTS 1 #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_gain "ADC_GAIN_1" #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_gain_STRING_UNQUOTED ADC_GAIN_1 @@ -24024,10 +24772,8 @@ #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_gain_STRING_UPPER_TOKEN ADC_GAIN_1 #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_gain_IDX_0 "ADC_GAIN_1" #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_gain_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_gain_ENUM_IDX 8 -#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_gain_ENUM_VAL_ADC_GAIN_1_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_gain_ENUM_TOKEN ADC_GAIN_1 -#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_gain_ENUM_UPPER_TOKEN ADC_GAIN_1 +#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_gain_IDX_0_ENUM_IDX 8 +#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_gain_IDX_0_ENUM_VAL_ADC_GAIN_1_EXISTS 1 #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_gain_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_58026000_S_channel_0, zephyr_gain, 0) #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_gain_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_58026000_S_channel_0, zephyr_gain, 0) #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_gain_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_58026000_S_channel_0, zephyr_gain, 0, __VA_ARGS__) @@ -24040,10 +24786,8 @@ #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_reference_STRING_UPPER_TOKEN ADC_REF_INTERNAL #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_reference_IDX_0 "ADC_REF_INTERNAL" #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_reference_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_reference_ENUM_IDX 4 -#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_reference_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_reference_ENUM_TOKEN ADC_REF_INTERNAL -#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_reference_ENUM_UPPER_TOKEN ADC_REF_INTERNAL +#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_reference_IDX_0_ENUM_IDX 4 +#define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_reference_IDX_0_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_reference_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_58026000_S_channel_0, zephyr_reference, 0) #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_reference_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_58026000_S_channel_0, zephyr_reference, 0) #define DT_N_S_soc_S_adc_58026000_S_channel_0_P_zephyr_reference_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_58026000_S_channel_0, zephyr_reference, 0, __VA_ARGS__) @@ -24071,6 +24815,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_adc_58026000_S_channel_1_FULL_NAME "channel@1" +#define DT_N_S_soc_S_adc_58026000_S_channel_1_FULL_NAME_UNQUOTED channel@1 +#define DT_N_S_soc_S_adc_58026000_S_channel_1_FULL_NAME_TOKEN channel_1 +#define DT_N_S_soc_S_adc_58026000_S_channel_1_FULL_NAME_UPPER_TOKEN CHANNEL_1 /* Node parent (/soc/adc@58026000) identifier: */ #define DT_N_S_soc_S_adc_58026000_S_channel_1_PARENT DT_N_S_soc_S_adc_58026000 @@ -24096,12 +24843,12 @@ #define DT_N_S_soc_S_adc_58026000_S_channel_1_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_adc_58026000_S_channel_1_ORD 161 -#define DT_N_S_soc_S_adc_58026000_S_channel_1_ORD_STR_SORTABLE 00161 +#define DT_N_S_soc_S_adc_58026000_S_channel_1_ORD 164 +#define DT_N_S_soc_S_adc_58026000_S_channel_1_ORD_STR_SORTABLE 00164 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_adc_58026000_S_channel_1_REQUIRES_ORDS \ - 13, /* /soc/adc@58026000 */ + 13, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_adc_58026000_S_channel_1_SUPPORTS_ORDS /* nothing */ @@ -24112,7 +24859,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_adc_58026000_S_channel_1_REG_NUM 1 #define DT_N_S_soc_S_adc_58026000_S_channel_1_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_S_channel_1_REG_IDX_0_VAL_ADDRESS 1 /* 0x1 */ +#define DT_N_S_soc_S_adc_58026000_S_channel_1_REG_IDX_0_VAL_ADDRESS 1 #define DT_N_S_soc_S_adc_58026000_S_channel_1_RANGES_NUM 0 #define DT_N_S_soc_S_adc_58026000_S_channel_1_FOREACH_RANGE(fn) #define DT_N_S_soc_S_adc_58026000_S_channel_1_IRQ_NUM 0 @@ -24123,9 +24870,9 @@ #define DT_N_S_soc_S_adc_58026000_S_channel_1_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_reg {1 /* 0x1 */} -#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_reg_IDX_0 1 +#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_reg {1} #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_reg_IDX_0 1 #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_reg_EXISTS 1 #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_gain "ADC_GAIN_1" #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_gain_STRING_UNQUOTED ADC_GAIN_1 @@ -24133,10 +24880,8 @@ #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_gain_STRING_UPPER_TOKEN ADC_GAIN_1 #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_gain_IDX_0 "ADC_GAIN_1" #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_gain_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_gain_ENUM_IDX 8 -#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_gain_ENUM_VAL_ADC_GAIN_1_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_gain_ENUM_TOKEN ADC_GAIN_1 -#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_gain_ENUM_UPPER_TOKEN ADC_GAIN_1 +#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_gain_IDX_0_ENUM_IDX 8 +#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_gain_IDX_0_ENUM_VAL_ADC_GAIN_1_EXISTS 1 #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_gain_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_58026000_S_channel_1, zephyr_gain, 0) #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_gain_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_58026000_S_channel_1, zephyr_gain, 0) #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_gain_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_58026000_S_channel_1, zephyr_gain, 0, __VA_ARGS__) @@ -24149,10 +24894,8 @@ #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_reference_STRING_UPPER_TOKEN ADC_REF_INTERNAL #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_reference_IDX_0 "ADC_REF_INTERNAL" #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_reference_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_reference_ENUM_IDX 4 -#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_reference_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 -#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_reference_ENUM_TOKEN ADC_REF_INTERNAL -#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_reference_ENUM_UPPER_TOKEN ADC_REF_INTERNAL +#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_reference_IDX_0_ENUM_IDX 4 +#define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_reference_IDX_0_ENUM_VAL_ADC_REF_INTERNAL_EXISTS 1 #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_reference_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_adc_58026000_S_channel_1, zephyr_reference, 0) #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_reference_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_adc_58026000_S_channel_1, zephyr_reference, 0) #define DT_N_S_soc_S_adc_58026000_S_channel_1_P_zephyr_reference_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_adc_58026000_S_channel_1, zephyr_reference, 0, __VA_ARGS__) @@ -24183,6 +24926,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_dma_40020000_FULL_NAME "dma@40020000" +#define DT_N_S_soc_S_dma_40020000_FULL_NAME_UNQUOTED dma@40020000 +#define DT_N_S_soc_S_dma_40020000_FULL_NAME_TOKEN dma_40020000 +#define DT_N_S_soc_S_dma_40020000_FULL_NAME_UPPER_TOKEN DMA_40020000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_dma_40020000_PARENT DT_N_S_soc @@ -24208,18 +24954,18 @@ #define DT_N_S_soc_S_dma_40020000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_dma_40020000_ORD 162 -#define DT_N_S_soc_S_dma_40020000_ORD_STR_SORTABLE 00162 +#define DT_N_S_soc_S_dma_40020000_ORD 165 +#define DT_N_S_soc_S_dma_40020000_ORD_STR_SORTABLE 00165 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_dma_40020000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_dma_40020000_SUPPORTS_ORDS \ - 175, /* /soc/dcmi@48020000 */ + 178, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_dma_40020000_EXISTS 1 @@ -24229,8 +24975,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_dma_40020000_REG_NUM 1 #define DT_N_S_soc_S_dma_40020000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_REG_IDX_0_VAL_ADDRESS 1073872896 /* 0x40020000 */ -#define DT_N_S_soc_S_dma_40020000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_dma_40020000_REG_IDX_0_VAL_ADDRESS 1073872896 +#define DT_N_S_soc_S_dma_40020000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_dma_40020000_RANGES_NUM 0 #define DT_N_S_soc_S_dma_40020000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_dma_40020000_IRQ_NUM 8 @@ -24302,20 +25048,60 @@ #define DT_N_S_soc_S_dma_40020000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_dma_40020000_P_wakeup_source 0 -#define DT_N_S_soc_S_dma_40020000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_dma_40020000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_reg {1073872896, 1024} +#define DT_N_S_soc_S_dma_40020000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_reg_IDX_0 1073872896 +#define DT_N_S_soc_S_dma_40020000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_dma_40020000_P_reg_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts {11, 0, 12, 0, 13, 0, 14, 0, 15, 0, 16, 0, 17, 0, 47, 0} +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_0 11 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_2 12 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_3_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_3 0 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_4_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_4 13 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_5_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_5 0 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_6_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_6 14 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_7_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_7 0 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_8_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_8 15 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_9_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_9 0 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_10_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_10 16 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_11_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_11 0 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_12_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_12 17 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_13_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_13 0 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_14_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_14 47 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_15_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_15 0 +#define DT_N_S_soc_S_dma_40020000_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_st_mem2mem 1 +#define DT_N_S_soc_S_dma_40020000_P_st_mem2mem_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_dma_offset 0 +#define DT_N_S_soc_S_dma_40020000_P_dma_offset_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_dma_requests 8 +#define DT_N_S_soc_S_dma_40020000_P_dma_requests_EXISTS 1 #define DT_N_S_soc_S_dma_40020000_P_status "okay" #define DT_N_S_soc_S_dma_40020000_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_dma_40020000_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_dma_40020000_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_dma_40020000_P_status_IDX_0 "okay" #define DT_N_S_soc_S_dma_40020000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_dma_40020000_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_dma_40020000_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_dma_40020000_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_dma_40020000_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_dma_40020000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dma_40020000, status, 0) #define DT_N_S_soc_S_dma_40020000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dma_40020000, status, 0) #define DT_N_S_soc_S_dma_40020000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dma_40020000, status, 0, __VA_ARGS__) @@ -24323,57 +25109,17 @@ #define DT_N_S_soc_S_dma_40020000_P_status_LEN 1 #define DT_N_S_soc_S_dma_40020000_P_status_EXISTS 1 #define DT_N_S_soc_S_dma_40020000_P_compatible {"st,stm32-dma-v1"} +#define DT_N_S_soc_S_dma_40020000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dma_40020000_P_compatible_IDX_0 "st,stm32-dma-v1" #define DT_N_S_soc_S_dma_40020000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-dma-v1 #define DT_N_S_soc_S_dma_40020000_P_compatible_IDX_0_STRING_TOKEN st_stm32_dma_v1 #define DT_N_S_soc_S_dma_40020000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_DMA_V1 -#define DT_N_S_soc_S_dma_40020000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dma_40020000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dma_40020000, compatible, 0) #define DT_N_S_soc_S_dma_40020000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dma_40020000, compatible, 0) #define DT_N_S_soc_S_dma_40020000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dma_40020000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_dma_40020000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dma_40020000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_dma_40020000_P_compatible_LEN 1 #define DT_N_S_soc_S_dma_40020000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_reg {1073872896 /* 0x40020000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_dma_40020000_P_reg_IDX_0 1073872896 -#define DT_N_S_soc_S_dma_40020000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_dma_40020000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts {11 /* 0xb */, 0 /* 0x0 */, 12 /* 0xc */, 0 /* 0x0 */, 13 /* 0xd */, 0 /* 0x0 */, 14 /* 0xe */, 0 /* 0x0 */, 15 /* 0xf */, 0 /* 0x0 */, 16 /* 0x10 */, 0 /* 0x0 */, 17 /* 0x11 */, 0 /* 0x0 */, 47 /* 0x2f */, 0 /* 0x0 */} -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_0 11 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_2 12 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_3 0 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_4 13 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_5 0 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_6 14 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_7 0 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_7_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_8 15 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_8_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_9 0 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_9_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_10 16 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_10_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_11 0 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_11_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_12 17 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_12_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_13 0 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_13_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_14 47 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_14_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_15 0 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_IDX_15_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_dma_40020000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dma_40020000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_dma_40020000_P_clocks_IDX_0_VAL_bus 216 @@ -24388,12 +25134,10 @@ #define DT_N_S_soc_S_dma_40020000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_dma_40020000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_dma_40020000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_dma_requests 8 -#define DT_N_S_soc_S_dma_40020000_P_dma_requests_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_st_mem2mem 1 -#define DT_N_S_soc_S_dma_40020000_P_st_mem2mem_EXISTS 1 -#define DT_N_S_soc_S_dma_40020000_P_dma_offset 0 -#define DT_N_S_soc_S_dma_40020000_P_dma_offset_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_wakeup_source 0 +#define DT_N_S_soc_S_dma_40020000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_dma_40020000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_dma_40020000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/i2c@58001c00/ov7670@21 @@ -24412,6 +25156,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_FULL_NAME "ov7670@21" +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_FULL_NAME_UNQUOTED ov7670@21 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_FULL_NAME_TOKEN ov7670_21 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_FULL_NAME_UPPER_TOKEN OV7670_21 /* Node parent (/soc/i2c@58001c00) identifier: */ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_PARENT DT_N_S_soc_S_i2c_58001c00 @@ -24437,19 +25184,19 @@ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port, __VA_ARGS__) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_ORD 163 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_ORD_STR_SORTABLE 00163 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_ORD 166 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_ORD_STR_SORTABLE 00166 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_REQUIRES_ORDS \ - 34, /* /soc/i2c@58001c00 */ \ - 75, /* /soc/pin-controller@58020000/gpio@58020000 */ \ - 78, /* /soc/pin-controller@58020000/gpio@58020C00 */ + 34, \ + 75, \ + 78, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_SUPPORTS_ORDS \ - 175, /* /soc/dcmi@48020000 */ \ - 186, /* /soc/i2c@58001c00/ov7670@21/port */ + 178, \ + 189, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_EXISTS 1 @@ -24463,7 +25210,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_REG_NUM 1 #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_REG_IDX_0_VAL_ADDRESS 33 /* 0x21 */ +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_REG_IDX_0_VAL_ADDRESS 33 #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_RANGES_NUM 0 #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_FOREACH_RANGE(fn) #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_IRQ_NUM 0 @@ -24479,28 +25226,6 @@ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_wakeup_source 0 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible {"ovti,ov7670"} -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_IDX_0 "ovti,ov7670" -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_IDX_0_STRING_UNQUOTED ovti,ov7670 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_IDX_0_STRING_TOKEN ovti_ov7670 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_IDX_0_STRING_UPPER_TOKEN OVTI_OV7670 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21, compatible, 0) -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21, compatible, 0) -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_LEN 1 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_reg {33 /* 0x21 */} -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_reg_IDX_0 33 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_reg_EXISTS 1 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_zephyr_deferred_init_EXISTS 1 #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_reset_gpios_IDX_0_EXISTS 1 #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_reset_gpios_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00 #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_reset_gpios_IDX_0_VAL_pin 4 @@ -24525,6 +25250,28 @@ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_pwdn_gpios_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21, pwdn_gpios, 0, __VA_ARGS__) #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_pwdn_gpios_LEN 1 #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_pwdn_gpios_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_reg {33} +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_reg_IDX_0 33 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_reg_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible {"ovti,ov7670"} +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_IDX_0 "ovti,ov7670" +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_IDX_0_STRING_UNQUOTED ovti,ov7670 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_IDX_0_STRING_TOKEN ovti_ov7670 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_IDX_0_STRING_UPPER_TOKEN OVTI_OV7670 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21, compatible, 0) +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21, compatible, 0) +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_LEN 1 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_wakeup_source 0 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/dcmi_d0_ph9 @@ -24540,6 +25287,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_FULL_NAME "dcmi_d0_ph9" +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_FULL_NAME_UNQUOTED dcmi_d0_ph9 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_FULL_NAME_TOKEN dcmi_d0_ph9 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_FULL_NAME_UPPER_TOKEN DCMI_D0_PH9 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -24565,16 +25315,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_ORD 164 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_ORD_STR_SORTABLE 00164 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_ORD 167 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_ORD_STR_SORTABLE 00167 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_SUPPORTS_ORDS \ - 175, /* /soc/dcmi@48020000 */ + 178, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_EXISTS 1 @@ -24592,20 +25342,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_pinmux 3885 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate "very-high-speed" @@ -24614,16 +25350,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/dcmi_d1_ph10 @@ -24639,6 +25387,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_FULL_NAME "dcmi_d1_ph10" +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_FULL_NAME_UNQUOTED dcmi_d1_ph10 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_FULL_NAME_TOKEN dcmi_d1_ph10 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_FULL_NAME_UPPER_TOKEN DCMI_D1_PH10 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -24664,16 +25415,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_ORD 165 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_ORD_STR_SORTABLE 00165 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_ORD 168 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_ORD_STR_SORTABLE 00168 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_SUPPORTS_ORDS \ - 175, /* /soc/dcmi@48020000 */ + 178, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_EXISTS 1 @@ -24691,20 +25442,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_pinmux 3917 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate "very-high-speed" @@ -24713,16 +25450,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/dcmi_d2_ph11 @@ -24738,6 +25487,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_FULL_NAME "dcmi_d2_ph11" +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_FULL_NAME_UNQUOTED dcmi_d2_ph11 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_FULL_NAME_TOKEN dcmi_d2_ph11 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_FULL_NAME_UPPER_TOKEN DCMI_D2_PH11 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -24763,16 +25515,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_ORD 166 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_ORD_STR_SORTABLE 00166 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_ORD 169 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_ORD_STR_SORTABLE 00169 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_SUPPORTS_ORDS \ - 175, /* /soc/dcmi@48020000 */ + 178, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_EXISTS 1 @@ -24790,20 +25542,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_pinmux 3949 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate "very-high-speed" @@ -24812,16 +25550,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/dcmi_d3_pg11 @@ -24837,6 +25587,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_FULL_NAME "dcmi_d3_pg11" +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_FULL_NAME_UNQUOTED dcmi_d3_pg11 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_FULL_NAME_TOKEN dcmi_d3_pg11 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_FULL_NAME_UPPER_TOKEN DCMI_D3_PG11 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -24862,16 +25615,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_ORD 167 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_ORD_STR_SORTABLE 00167 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_ORD 170 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_ORD_STR_SORTABLE 00170 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_SUPPORTS_ORDS \ - 175, /* /soc/dcmi@48020000 */ + 178, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_EXISTS 1 @@ -24889,20 +25642,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_pinmux 3437 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate "very-high-speed" @@ -24911,16 +25650,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/dcmi_d4_ph14 @@ -24936,6 +25687,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_FULL_NAME "dcmi_d4_ph14" +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_FULL_NAME_UNQUOTED dcmi_d4_ph14 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_FULL_NAME_TOKEN dcmi_d4_ph14 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_FULL_NAME_UPPER_TOKEN DCMI_D4_PH14 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -24961,16 +25715,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_ORD 168 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_ORD_STR_SORTABLE 00168 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_ORD 171 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_ORD_STR_SORTABLE 00171 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_SUPPORTS_ORDS \ - 175, /* /soc/dcmi@48020000 */ + 178, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_EXISTS 1 @@ -24988,20 +25742,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_pinmux 4045 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate "very-high-speed" @@ -25010,16 +25750,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/dcmi_d5_pi4 @@ -25035,6 +25787,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_FULL_NAME "dcmi_d5_pi4" +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_FULL_NAME_UNQUOTED dcmi_d5_pi4 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_FULL_NAME_TOKEN dcmi_d5_pi4 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_FULL_NAME_UPPER_TOKEN DCMI_D5_PI4 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -25060,16 +25815,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_ORD 169 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_ORD_STR_SORTABLE 00169 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_ORD 172 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_ORD_STR_SORTABLE 00172 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_SUPPORTS_ORDS \ - 175, /* /soc/dcmi@48020000 */ + 178, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_EXISTS 1 @@ -25087,20 +25842,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_pinmux 4237 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate "very-high-speed" @@ -25109,16 +25850,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/dcmi_d6_pi6 @@ -25134,6 +25887,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_FULL_NAME "dcmi_d6_pi6" +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_FULL_NAME_UNQUOTED dcmi_d6_pi6 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_FULL_NAME_TOKEN dcmi_d6_pi6 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_FULL_NAME_UPPER_TOKEN DCMI_D6_PI6 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -25159,16 +25915,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_ORD 170 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_ORD_STR_SORTABLE 00170 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_ORD 173 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_ORD_STR_SORTABLE 00173 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_SUPPORTS_ORDS \ - 175, /* /soc/dcmi@48020000 */ + 178, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_EXISTS 1 @@ -25186,20 +25942,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_pinmux 4301 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate "very-high-speed" @@ -25208,16 +25950,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/dcmi_d7_pi7 @@ -25233,6 +25987,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_FULL_NAME "dcmi_d7_pi7" +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_FULL_NAME_UNQUOTED dcmi_d7_pi7 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_FULL_NAME_TOKEN dcmi_d7_pi7 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_FULL_NAME_UPPER_TOKEN DCMI_D7_PI7 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -25258,16 +26015,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_ORD 171 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_ORD_STR_SORTABLE 00171 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_ORD 174 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_ORD_STR_SORTABLE 00174 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_SUPPORTS_ORDS \ - 175, /* /soc/dcmi@48020000 */ + 178, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_EXISTS 1 @@ -25285,20 +26042,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_pinmux 4333 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate "very-high-speed" @@ -25307,16 +26050,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/dcmi_hsync_ph8 @@ -25332,6 +26087,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_FULL_NAME "dcmi_hsync_ph8" +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_FULL_NAME_UNQUOTED dcmi_hsync_ph8 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_FULL_NAME_TOKEN dcmi_hsync_ph8 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_FULL_NAME_UPPER_TOKEN DCMI_HSYNC_PH8 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -25357,16 +26115,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_ORD 172 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_ORD_STR_SORTABLE 00172 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_ORD 175 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_ORD_STR_SORTABLE 00175 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_SUPPORTS_ORDS \ - 175, /* /soc/dcmi@48020000 */ + 178, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_EXISTS 1 @@ -25384,20 +26142,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_pinmux 3853 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate "very-high-speed" @@ -25406,16 +26150,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/dcmi_pixclk_pa6 @@ -25431,6 +26187,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_FULL_NAME "dcmi_pixclk_pa6" +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_FULL_NAME_UNQUOTED dcmi_pixclk_pa6 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_FULL_NAME_TOKEN dcmi_pixclk_pa6 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_FULL_NAME_UPPER_TOKEN DCMI_PIXCLK_PA6 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -25456,16 +26215,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_ORD 173 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_ORD_STR_SORTABLE 00173 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_ORD 176 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_ORD_STR_SORTABLE 00176 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_SUPPORTS_ORDS \ - 175, /* /soc/dcmi@48020000 */ + 178, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_EXISTS 1 @@ -25483,20 +26242,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_pinmux 205 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate "very-high-speed" @@ -25505,16 +26250,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/dcmi_vsync_pi5 @@ -25530,6 +26287,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_FULL_NAME "dcmi_vsync_pi5" +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_FULL_NAME_UNQUOTED dcmi_vsync_pi5 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_FULL_NAME_TOKEN dcmi_vsync_pi5 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_FULL_NAME_UPPER_TOKEN DCMI_VSYNC_PI5 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -25555,16 +26315,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_ORD 174 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_ORD_STR_SORTABLE 00174 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_ORD 177 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_ORD_STR_SORTABLE 00177 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_SUPPORTS_ORDS \ - 175, /* /soc/dcmi@48020000 */ + 178, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_EXISTS 1 @@ -25582,20 +26342,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_pinmux 4269 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate "very-high-speed" @@ -25604,16 +26350,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5_P_output_high_EXISTS 1 /* * Devicetree node: /soc/dcmi@48020000 @@ -25632,6 +26390,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_dcmi_48020000_FULL_NAME "dcmi@48020000" +#define DT_N_S_soc_S_dcmi_48020000_FULL_NAME_UNQUOTED dcmi@48020000 +#define DT_N_S_soc_S_dcmi_48020000_FULL_NAME_TOKEN dcmi_48020000 +#define DT_N_S_soc_S_dcmi_48020000_FULL_NAME_UPPER_TOKEN DCMI_48020000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_dcmi_48020000_PARENT DT_N_S_soc @@ -25657,31 +26418,31 @@ #define DT_N_S_soc_S_dcmi_48020000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dcmi_48020000_S_port, __VA_ARGS__) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_dcmi_48020000_ORD 175 -#define DT_N_S_soc_S_dcmi_48020000_ORD_STR_SORTABLE 00175 +#define DT_N_S_soc_S_dcmi_48020000_ORD 178 +#define DT_N_S_soc_S_dcmi_48020000_ORD_STR_SORTABLE 00178 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_dcmi_48020000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 162, /* /soc/dma@40020000 */ \ - 163, /* /soc/i2c@58001c00/ov7670@21 */ \ - 164, /* /soc/pin-controller@58020000/dcmi_d0_ph9 */ \ - 165, /* /soc/pin-controller@58020000/dcmi_d1_ph10 */ \ - 166, /* /soc/pin-controller@58020000/dcmi_d2_ph11 */ \ - 167, /* /soc/pin-controller@58020000/dcmi_d3_pg11 */ \ - 168, /* /soc/pin-controller@58020000/dcmi_d4_ph14 */ \ - 169, /* /soc/pin-controller@58020000/dcmi_d5_pi4 */ \ - 170, /* /soc/pin-controller@58020000/dcmi_d6_pi6 */ \ - 171, /* /soc/pin-controller@58020000/dcmi_d7_pi7 */ \ - 172, /* /soc/pin-controller@58020000/dcmi_hsync_ph8 */ \ - 173, /* /soc/pin-controller@58020000/dcmi_pixclk_pa6 */ \ - 174, /* /soc/pin-controller@58020000/dcmi_vsync_pi5 */ + 4, \ + 5, \ + 9, \ + 165, \ + 166, \ + 167, \ + 168, \ + 169, \ + 170, \ + 171, \ + 172, \ + 173, \ + 174, \ + 175, \ + 176, \ + 177, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_dcmi_48020000_SUPPORTS_ORDS \ - 176, /* /soc/dcmi@48020000/port */ + 179, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_dcmi_48020000_EXISTS 1 @@ -25691,8 +26452,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_dcmi_48020000_REG_NUM 1 #define DT_N_S_soc_S_dcmi_48020000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_REG_IDX_0_VAL_ADDRESS 1208090624 /* 0x48020000 */ -#define DT_N_S_soc_S_dcmi_48020000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_dcmi_48020000_REG_IDX_0_VAL_ADDRESS 1208090624 +#define DT_N_S_soc_S_dcmi_48020000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_dcmi_48020000_RANGES_NUM 0 #define DT_N_S_soc_S_dcmi_48020000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_dcmi_48020000_IRQ_NUM 1 @@ -25736,20 +26497,71 @@ #define DT_N_S_soc_S_dcmi_48020000_PINCTRL_NAME_default_IDX_10_PH DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7 /* Generic property macros: */ -#define DT_N_S_soc_S_dcmi_48020000_P_wakeup_source 0 -#define DT_N_S_soc_S_dcmi_48020000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_dcmi_48020000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_interrupts {78, 0} +#define DT_N_S_soc_S_dcmi_48020000_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_interrupts_IDX_0 78 +#define DT_N_S_soc_S_dcmi_48020000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_dcmi_48020000_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_sensor DT_N_S_soc_S_i2c_58001c00_S_ov7670_21 +#define DT_N_S_soc_S_dcmi_48020000_P_sensor_IDX_0 DT_N_S_soc_S_i2c_58001c00_S_ov7670_21 +#define DT_N_S_soc_S_dcmi_48020000_P_sensor_IDX_0_PH DT_N_S_soc_S_i2c_58001c00_S_ov7670_21 +#define DT_N_S_soc_S_dcmi_48020000_P_sensor_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_sensor_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dcmi_48020000, sensor, 0) +#define DT_N_S_soc_S_dcmi_48020000_P_sensor_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dcmi_48020000, sensor, 0) +#define DT_N_S_soc_S_dcmi_48020000_P_sensor_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dcmi_48020000, sensor, 0, __VA_ARGS__) +#define DT_N_S_soc_S_dcmi_48020000_P_sensor_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dcmi_48020000, sensor, 0, __VA_ARGS__) +#define DT_N_S_soc_S_dcmi_48020000_P_sensor_LEN 1 +#define DT_N_S_soc_S_dcmi_48020000_P_sensor_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_bus_width 8 +#define DT_N_S_soc_S_dcmi_48020000_P_bus_width_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_dcmi_48020000_P_bus_width_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_bus_width_IDX_0_ENUM_VAL_8_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_bus_width_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_hsync_active 0 +#define DT_N_S_soc_S_dcmi_48020000_P_hsync_active_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_dcmi_48020000_P_hsync_active_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_hsync_active_IDX_0_ENUM_VAL_0_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_hsync_active_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_vsync_active 0 +#define DT_N_S_soc_S_dcmi_48020000_P_vsync_active_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_dcmi_48020000_P_vsync_active_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_vsync_active_IDX_0_ENUM_VAL_0_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_vsync_active_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_pixelclk_active 0 +#define DT_N_S_soc_S_dcmi_48020000_P_pixelclk_active_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_dcmi_48020000_P_pixelclk_active_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_pixelclk_active_IDX_0_ENUM_VAL_0_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_pixelclk_active_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_capture_rate 1 +#define DT_N_S_soc_S_dcmi_48020000_P_capture_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_dcmi_48020000_P_capture_rate_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_capture_rate_IDX_0_ENUM_VAL_1_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_capture_rate_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_PH DT_N_S_soc_S_dma_40020000 +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_channel 0 +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_channel_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_slot 75 +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_slot_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_channel_config 148608 +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_channel_config_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_features 0 +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_features_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dcmi_48020000, dmas, 0) +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dcmi_48020000, dmas, 0) +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dcmi_48020000, dmas, 0, __VA_ARGS__) +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dcmi_48020000, dmas, 0, __VA_ARGS__) +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_LEN 1 +#define DT_N_S_soc_S_dcmi_48020000_P_dmas_EXISTS 1 #define DT_N_S_soc_S_dcmi_48020000_P_status "okay" #define DT_N_S_soc_S_dcmi_48020000_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_dcmi_48020000_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_dcmi_48020000_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_dcmi_48020000_P_status_IDX_0 "okay" #define DT_N_S_soc_S_dcmi_48020000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_dcmi_48020000_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_dcmi_48020000_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_dcmi_48020000_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_dcmi_48020000_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_dcmi_48020000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dcmi_48020000, status, 0) #define DT_N_S_soc_S_dcmi_48020000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dcmi_48020000, status, 0) #define DT_N_S_soc_S_dcmi_48020000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dcmi_48020000, status, 0, __VA_ARGS__) @@ -25757,35 +26569,29 @@ #define DT_N_S_soc_S_dcmi_48020000_P_status_LEN 1 #define DT_N_S_soc_S_dcmi_48020000_P_status_EXISTS 1 #define DT_N_S_soc_S_dcmi_48020000_P_compatible {"st,stm32-dcmi"} +#define DT_N_S_soc_S_dcmi_48020000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dcmi_48020000_P_compatible_IDX_0 "st,stm32-dcmi" #define DT_N_S_soc_S_dcmi_48020000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-dcmi #define DT_N_S_soc_S_dcmi_48020000_P_compatible_IDX_0_STRING_TOKEN st_stm32_dcmi #define DT_N_S_soc_S_dcmi_48020000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_DCMI -#define DT_N_S_soc_S_dcmi_48020000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dcmi_48020000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dcmi_48020000, compatible, 0) #define DT_N_S_soc_S_dcmi_48020000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dcmi_48020000, compatible, 0) #define DT_N_S_soc_S_dcmi_48020000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dcmi_48020000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_dcmi_48020000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dcmi_48020000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_dcmi_48020000_P_compatible_LEN 1 #define DT_N_S_soc_S_dcmi_48020000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_reg {1208090624 /* 0x48020000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_dcmi_48020000_P_reg_IDX_0 1208090624 +#define DT_N_S_soc_S_dcmi_48020000_P_reg {1208090624, 1024} #define DT_N_S_soc_S_dcmi_48020000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_dcmi_48020000_P_reg_IDX_0 1208090624 #define DT_N_S_soc_S_dcmi_48020000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_reg_IDX_1 1024 #define DT_N_S_soc_S_dcmi_48020000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_interrupts {78 /* 0x4e */, 0 /* 0x0 */} -#define DT_N_S_soc_S_dcmi_48020000_P_interrupts_IDX_0 78 -#define DT_N_S_soc_S_dcmi_48020000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_dcmi_48020000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_dcmi_48020000_P_interrupt_names {"dcmi"} +#define DT_N_S_soc_S_dcmi_48020000_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dcmi_48020000_P_interrupt_names_IDX_0 "dcmi" #define DT_N_S_soc_S_dcmi_48020000_P_interrupt_names_IDX_0_STRING_UNQUOTED dcmi #define DT_N_S_soc_S_dcmi_48020000_P_interrupt_names_IDX_0_STRING_TOKEN dcmi #define DT_N_S_soc_S_dcmi_48020000_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN DCMI -#define DT_N_S_soc_S_dcmi_48020000_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dcmi_48020000_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dcmi_48020000, interrupt_names, 0) #define DT_N_S_soc_S_dcmi_48020000_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dcmi_48020000, interrupt_names, 0) #define DT_N_S_soc_S_dcmi_48020000_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dcmi_48020000, interrupt_names, 0, __VA_ARGS__) @@ -25804,24 +26610,12 @@ #define DT_N_S_soc_S_dcmi_48020000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dcmi_48020000, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_dcmi_48020000_P_clocks_LEN 1 #define DT_N_S_soc_S_dcmi_48020000_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_PH DT_N_S_soc_S_dma_40020000 -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_channel 0 -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_channel_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_slot 75 -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_slot_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_channel_config 148608 -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_channel_config_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_features 0 -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_IDX_0_VAL_features_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dcmi_48020000, dmas, 0) -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dcmi_48020000, dmas, 0) -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dcmi_48020000, dmas, 0, __VA_ARGS__) -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dcmi_48020000, dmas, 0, __VA_ARGS__) -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_LEN 1 -#define DT_N_S_soc_S_dcmi_48020000_P_dmas_EXISTS 1 #define DT_N_S_soc_S_dcmi_48020000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_dcmi_48020000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_wakeup_source 0 +#define DT_N_S_soc_S_dcmi_48020000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_dcmi_48020000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_dcmi_48020000_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8 #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8 #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_0_IDX_0_EXISTS 1 @@ -25902,47 +26696,17 @@ #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_0_LEN 11 #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_0_EXISTS 1 #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_names_IDX_0 "default" #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_names_IDX_0_STRING_UNQUOTED default #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_names_IDX_0_STRING_TOKEN default #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dcmi_48020000, pinctrl_names, 0) #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dcmi_48020000, pinctrl_names, 0) #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dcmi_48020000, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dcmi_48020000, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_names_LEN 1 #define DT_N_S_soc_S_dcmi_48020000_P_pinctrl_names_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_sensor DT_N_S_soc_S_i2c_58001c00_S_ov7670_21 -#define DT_N_S_soc_S_dcmi_48020000_P_sensor_IDX_0 DT_N_S_soc_S_i2c_58001c00_S_ov7670_21 -#define DT_N_S_soc_S_dcmi_48020000_P_sensor_IDX_0_PH DT_N_S_soc_S_i2c_58001c00_S_ov7670_21 -#define DT_N_S_soc_S_dcmi_48020000_P_sensor_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_sensor_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_dcmi_48020000, sensor, 0) -#define DT_N_S_soc_S_dcmi_48020000_P_sensor_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_dcmi_48020000, sensor, 0) -#define DT_N_S_soc_S_dcmi_48020000_P_sensor_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_dcmi_48020000, sensor, 0, __VA_ARGS__) -#define DT_N_S_soc_S_dcmi_48020000_P_sensor_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dcmi_48020000, sensor, 0, __VA_ARGS__) -#define DT_N_S_soc_S_dcmi_48020000_P_sensor_LEN 1 -#define DT_N_S_soc_S_dcmi_48020000_P_sensor_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_bus_width 8 -#define DT_N_S_soc_S_dcmi_48020000_P_bus_width_ENUM_IDX 0 -#define DT_N_S_soc_S_dcmi_48020000_P_bus_width_ENUM_VAL_8_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_bus_width_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_hsync_active 0 -#define DT_N_S_soc_S_dcmi_48020000_P_hsync_active_ENUM_IDX 0 -#define DT_N_S_soc_S_dcmi_48020000_P_hsync_active_ENUM_VAL_0_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_hsync_active_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_vsync_active 0 -#define DT_N_S_soc_S_dcmi_48020000_P_vsync_active_ENUM_IDX 0 -#define DT_N_S_soc_S_dcmi_48020000_P_vsync_active_ENUM_VAL_0_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_vsync_active_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_pixelclk_active 0 -#define DT_N_S_soc_S_dcmi_48020000_P_pixelclk_active_ENUM_IDX 0 -#define DT_N_S_soc_S_dcmi_48020000_P_pixelclk_active_ENUM_VAL_0_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_pixelclk_active_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_capture_rate 1 -#define DT_N_S_soc_S_dcmi_48020000_P_capture_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_dcmi_48020000_P_capture_rate_ENUM_VAL_1_EXISTS 1 -#define DT_N_S_soc_S_dcmi_48020000_P_capture_rate_EXISTS 1 /* * Devicetree node: /soc/dcmi@48020000/port @@ -25955,6 +26719,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_dcmi_48020000_S_port_FULL_NAME "port" +#define DT_N_S_soc_S_dcmi_48020000_S_port_FULL_NAME_UNQUOTED port +#define DT_N_S_soc_S_dcmi_48020000_S_port_FULL_NAME_TOKEN port +#define DT_N_S_soc_S_dcmi_48020000_S_port_FULL_NAME_UPPER_TOKEN PORT /* Node parent (/soc/dcmi@48020000) identifier: */ #define DT_N_S_soc_S_dcmi_48020000_S_port_PARENT DT_N_S_soc_S_dcmi_48020000 @@ -25980,16 +26747,16 @@ #define DT_N_S_soc_S_dcmi_48020000_S_port_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint, __VA_ARGS__) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_dcmi_48020000_S_port_ORD 176 -#define DT_N_S_soc_S_dcmi_48020000_S_port_ORD_STR_SORTABLE 00176 +#define DT_N_S_soc_S_dcmi_48020000_S_port_ORD 179 +#define DT_N_S_soc_S_dcmi_48020000_S_port_ORD_STR_SORTABLE 00179 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_dcmi_48020000_S_port_REQUIRES_ORDS \ - 175, /* /soc/dcmi@48020000 */ + 178, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_dcmi_48020000_S_port_SUPPORTS_ORDS \ - 177, /* /soc/dcmi@48020000/port/endpoint */ + 180, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_dcmi_48020000_S_port_EXISTS 1 @@ -26018,6 +26785,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint_FULL_NAME "endpoint" +#define DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint_FULL_NAME_UNQUOTED endpoint +#define DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint_FULL_NAME_TOKEN endpoint +#define DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint_FULL_NAME_UPPER_TOKEN ENDPOINT /* Node parent (/soc/dcmi@48020000/port) identifier: */ #define DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint_PARENT DT_N_S_soc_S_dcmi_48020000_S_port @@ -26043,12 +26813,12 @@ #define DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint_ORD 177 -#define DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint_ORD_STR_SORTABLE 00177 +#define DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint_ORD 180 +#define DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint_ORD_STR_SORTABLE 00180 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint_REQUIRES_ORDS \ - 176, /* /soc/dcmi@48020000/port */ + 179, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint_SUPPORTS_ORDS /* nothing */ @@ -26075,8 +26845,8 @@ * * Node identifier: DT_N_S_soc_S_ethernet_40028000 * - * Binding (compatible = st,stm32-ethernet): - * $ZEPHYR_BASE/dts/bindings/ethernet/st,stm32-ethernet.yaml + * Binding (compatible = st,stm32h7-ethernet): + * $ZEPHYR_BASE/dts/bindings/ethernet/st,stm32h7-ethernet.yaml * * (Descriptions have moved to the Devicetree Bindings Index * in the documentation.) @@ -26087,6 +26857,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_ethernet_40028000_FULL_NAME "ethernet@40028000" +#define DT_N_S_soc_S_ethernet_40028000_FULL_NAME_UNQUOTED ethernet@40028000 +#define DT_N_S_soc_S_ethernet_40028000_FULL_NAME_TOKEN ethernet_40028000 +#define DT_N_S_soc_S_ethernet_40028000_FULL_NAME_UPPER_TOKEN ETHERNET_40028000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_ethernet_40028000_PARENT DT_N_S_soc @@ -26112,29 +26885,30 @@ #define DT_N_S_soc_S_ethernet_40028000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_ethernet_40028000_ORD 178 -#define DT_N_S_soc_S_ethernet_40028000_ORD_STR_SORTABLE 00178 +#define DT_N_S_soc_S_ethernet_40028000_ORD 181 +#define DT_N_S_soc_S_ethernet_40028000_ORD_STR_SORTABLE 00181 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_ethernet_40028000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_ethernet_40028000_SUPPORTS_ORDS \ - 179, /* /soc/ethernet@40028000/mdio */ + 182, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_ethernet_40028000_EXISTS 1 -#define DT_N_INST_0_st_stm32_ethernet DT_N_S_soc_S_ethernet_40028000 -#define DT_N_NODELABEL_mac DT_N_S_soc_S_ethernet_40028000 +#define DT_N_INST_0_st_stm32h7_ethernet DT_N_S_soc_S_ethernet_40028000 +#define DT_N_INST_0_st_stm32_ethernet DT_N_S_soc_S_ethernet_40028000 +#define DT_N_NODELABEL_mac DT_N_S_soc_S_ethernet_40028000 /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_ethernet_40028000_REG_NUM 1 #define DT_N_S_soc_S_ethernet_40028000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_REG_IDX_0_VAL_ADDRESS 1073905664 /* 0x40028000 */ -#define DT_N_S_soc_S_ethernet_40028000_REG_IDX_0_VAL_SIZE 32768 /* 0x8000 */ +#define DT_N_S_soc_S_ethernet_40028000_REG_IDX_0_VAL_ADDRESS 1073905664 +#define DT_N_S_soc_S_ethernet_40028000_REG_IDX_0_VAL_SIZE 32768 #define DT_N_S_soc_S_ethernet_40028000_RANGES_NUM 0 #define DT_N_S_soc_S_ethernet_40028000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_ethernet_40028000_IRQ_NUM 1 @@ -26146,60 +26920,33 @@ #define DT_N_S_soc_S_ethernet_40028000_IRQ_IDX_0_VAL_priority_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_IRQ_IDX_0_CONTROLLER DT_N_S_soc_S_interrupt_controller_e000e100 #define DT_N_S_soc_S_ethernet_40028000_IRQ_LEVEL 1 -#define DT_N_S_soc_S_ethernet_40028000_COMPAT_MATCHES_st_stm32_ethernet 1 +#define DT_N_S_soc_S_ethernet_40028000_COMPAT_MATCHES_st_stm32h7_ethernet 1 #define DT_N_S_soc_S_ethernet_40028000_COMPAT_VENDOR_IDX_0_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_COMPAT_VENDOR_IDX_0 "STMicroelectronics" #define DT_N_S_soc_S_ethernet_40028000_COMPAT_MODEL_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_COMPAT_MODEL_IDX_0 "stm32-ethernet" +#define DT_N_S_soc_S_ethernet_40028000_COMPAT_MODEL_IDX_0 "stm32h7-ethernet" +#define DT_N_S_soc_S_ethernet_40028000_COMPAT_MATCHES_st_stm32_ethernet 1 +#define DT_N_S_soc_S_ethernet_40028000_COMPAT_VENDOR_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_COMPAT_VENDOR_IDX_1 "STMicroelectronics" +#define DT_N_S_soc_S_ethernet_40028000_COMPAT_MODEL_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_COMPAT_MODEL_IDX_1 "stm32-ethernet" #define DT_N_S_soc_S_ethernet_40028000_STATUS_disabled 1 /* Pin control (pinctrl-, pinctrl-names) properties: */ #define DT_N_S_soc_S_ethernet_40028000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_ethernet_40028000_P_wakeup_source 0 -#define DT_N_S_soc_S_ethernet_40028000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_ethernet_40028000_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_P_status "disabled" -#define DT_N_S_soc_S_ethernet_40028000_P_status_STRING_UNQUOTED disabled -#define DT_N_S_soc_S_ethernet_40028000_P_status_STRING_TOKEN disabled -#define DT_N_S_soc_S_ethernet_40028000_P_status_STRING_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_ethernet_40028000_P_status_IDX_0 "disabled" -#define DT_N_S_soc_S_ethernet_40028000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_ethernet_40028000_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_ethernet_40028000_P_status_ENUM_UPPER_TOKEN DISABLED -#define DT_N_S_soc_S_ethernet_40028000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_ethernet_40028000, status, 0) -#define DT_N_S_soc_S_ethernet_40028000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_ethernet_40028000, status, 0) -#define DT_N_S_soc_S_ethernet_40028000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_ethernet_40028000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_ethernet_40028000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_ethernet_40028000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_ethernet_40028000_P_status_LEN 1 -#define DT_N_S_soc_S_ethernet_40028000_P_status_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_P_compatible {"st,stm32-ethernet"} -#define DT_N_S_soc_S_ethernet_40028000_P_compatible_IDX_0 "st,stm32-ethernet" -#define DT_N_S_soc_S_ethernet_40028000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-ethernet -#define DT_N_S_soc_S_ethernet_40028000_P_compatible_IDX_0_STRING_TOKEN st_stm32_ethernet -#define DT_N_S_soc_S_ethernet_40028000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_ETHERNET -#define DT_N_S_soc_S_ethernet_40028000_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_ethernet_40028000, compatible, 0) -#define DT_N_S_soc_S_ethernet_40028000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_ethernet_40028000, compatible, 0) -#define DT_N_S_soc_S_ethernet_40028000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_ethernet_40028000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_ethernet_40028000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_ethernet_40028000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_ethernet_40028000_P_compatible_LEN 1 -#define DT_N_S_soc_S_ethernet_40028000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_P_reg {1073905664 /* 0x40028000 */, 32768 /* 0x8000 */} -#define DT_N_S_soc_S_ethernet_40028000_P_reg_IDX_0 1073905664 +#define DT_N_S_soc_S_ethernet_40028000_P_reg {1073905664, 32768} #define DT_N_S_soc_S_ethernet_40028000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_P_reg_IDX_1 32768 +#define DT_N_S_soc_S_ethernet_40028000_P_reg_IDX_0 1073905664 #define DT_N_S_soc_S_ethernet_40028000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_P_reg_IDX_1 32768 #define DT_N_S_soc_S_ethernet_40028000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_P_interrupts {61 /* 0x3d */, 0 /* 0x0 */} -#define DT_N_S_soc_S_ethernet_40028000_P_interrupts_IDX_0 61 +#define DT_N_S_soc_S_ethernet_40028000_P_interrupts {61, 0} #define DT_N_S_soc_S_ethernet_40028000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_ethernet_40028000_P_interrupts_IDX_0 61 #define DT_N_S_soc_S_ethernet_40028000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_ethernet_40028000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -26255,21 +27002,21 @@ #define DT_N_S_soc_S_ethernet_40028000_P_clocks_LEN 3 #define DT_N_S_soc_S_ethernet_40028000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_P_clock_names {"stmmaceth", "mac-clk-tx", "mac-clk-rx"} +#define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_0 "stmmaceth" #define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_0_STRING_UNQUOTED stmmaceth #define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_0_STRING_TOKEN stmmaceth #define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_0_STRING_UPPER_TOKEN STMMACETH -#define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_1 "mac-clk-tx" #define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_1_STRING_UNQUOTED mac-clk-tx #define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_1_STRING_TOKEN mac_clk_tx #define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_1_STRING_UPPER_TOKEN MAC_CLK_TX -#define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_2_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_2 "mac-clk-rx" #define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_2_STRING_UNQUOTED mac-clk-rx #define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_2_STRING_TOKEN mac_clk_rx #define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_2_STRING_UPPER_TOKEN MAC_CLK_RX -#define DT_N_S_soc_S_ethernet_40028000_P_clock_names_IDX_2_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_P_clock_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_ethernet_40028000, clock_names, 0) \ fn(DT_N_S_soc_S_ethernet_40028000, clock_names, 1) \ fn(DT_N_S_soc_S_ethernet_40028000, clock_names, 2) @@ -26284,10 +27031,49 @@ fn(DT_N_S_soc_S_ethernet_40028000, clock_names, 2, __VA_ARGS__) #define DT_N_S_soc_S_ethernet_40028000_P_clock_names_LEN 3 #define DT_N_S_soc_S_ethernet_40028000_P_clock_names_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_ethernet_40028000_P_zephyr_deferred_init_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_P_zephyr_random_mac_address 0 #define DT_N_S_soc_S_ethernet_40028000_P_zephyr_random_mac_address_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_P_status "disabled" +#define DT_N_S_soc_S_ethernet_40028000_P_status_STRING_UNQUOTED disabled +#define DT_N_S_soc_S_ethernet_40028000_P_status_STRING_TOKEN disabled +#define DT_N_S_soc_S_ethernet_40028000_P_status_STRING_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_ethernet_40028000_P_status_IDX_0 "disabled" +#define DT_N_S_soc_S_ethernet_40028000_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_ethernet_40028000_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_ethernet_40028000, status, 0) +#define DT_N_S_soc_S_ethernet_40028000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_ethernet_40028000, status, 0) +#define DT_N_S_soc_S_ethernet_40028000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_ethernet_40028000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_ethernet_40028000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_ethernet_40028000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_ethernet_40028000_P_status_LEN 1 +#define DT_N_S_soc_S_ethernet_40028000_P_status_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_P_compatible {"st,stm32h7-ethernet", "st,stm32-ethernet"} +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_IDX_0 "st,stm32h7-ethernet" +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-ethernet +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_ethernet +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_ETHERNET +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_IDX_1 "st,stm32-ethernet" +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_IDX_1_STRING_UNQUOTED st,stm32-ethernet +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_IDX_1_STRING_TOKEN st_stm32_ethernet +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32_ETHERNET +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_ethernet_40028000, compatible, 0) \ + fn(DT_N_S_soc_S_ethernet_40028000, compatible, 1) +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_ethernet_40028000, compatible, 0) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_ethernet_40028000, compatible, 1) +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_ethernet_40028000, compatible, 0, __VA_ARGS__) \ + fn(DT_N_S_soc_S_ethernet_40028000, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_ethernet_40028000, compatible, 0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep \ + fn(DT_N_S_soc_S_ethernet_40028000, compatible, 1, __VA_ARGS__) +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_LEN 2 +#define DT_N_S_soc_S_ethernet_40028000_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_ethernet_40028000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_P_wakeup_source 0 +#define DT_N_S_soc_S_ethernet_40028000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_ethernet_40028000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/ethernet@40028000/mdio @@ -26306,6 +27092,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_ethernet_40028000_S_mdio_FULL_NAME "mdio" +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_FULL_NAME_UNQUOTED mdio +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_FULL_NAME_TOKEN mdio +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_FULL_NAME_UPPER_TOKEN MDIO /* Node parent (/soc/ethernet@40028000) identifier: */ #define DT_N_S_soc_S_ethernet_40028000_S_mdio_PARENT DT_N_S_soc_S_ethernet_40028000 @@ -26331,12 +27120,12 @@ #define DT_N_S_soc_S_ethernet_40028000_S_mdio_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_ethernet_40028000_S_mdio_ORD 179 -#define DT_N_S_soc_S_ethernet_40028000_S_mdio_ORD_STR_SORTABLE 00179 +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_ORD 182 +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_ORD_STR_SORTABLE 00182 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_ethernet_40028000_S_mdio_REQUIRES_ORDS \ - 178, /* /soc/ethernet@40028000 */ + 181, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_ethernet_40028000_S_mdio_SUPPORTS_ORDS /* nothing */ @@ -26363,20 +27152,18 @@ #define DT_N_S_soc_S_ethernet_40028000_S_mdio_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_wakeup_source 0 -#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_suppress_preamble 0 +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_suppress_preamble_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_clock_frequency 2500000 +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_clock_frequency_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status "disabled" #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_ethernet_40028000_S_mdio, status, 0) #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_ethernet_40028000_S_mdio, status, 0) #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_ethernet_40028000_S_mdio, status, 0, __VA_ARGS__) @@ -26384,11 +27171,11 @@ #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_LEN 1 #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_status_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_compatible {"st,stm32-mdio"} +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_compatible_IDX_0 "st,stm32-mdio" #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-mdio #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_compatible_IDX_0_STRING_TOKEN st_stm32_mdio #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_MDIO -#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_ethernet_40028000_S_mdio, compatible, 0) #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_ethernet_40028000_S_mdio, compatible, 0) #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_ethernet_40028000_S_mdio, compatible, 0, __VA_ARGS__) @@ -26397,10 +27184,10 @@ #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_compatible_EXISTS 1 #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_suppress_preamble 0 -#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_suppress_preamble_EXISTS 1 -#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_clock_frequency 2500000 -#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_clock_frequency_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_wakeup_source 0 +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_ethernet_40028000_S_mdio_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/flash-controller@52002000 @@ -26419,6 +27206,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_flash_controller_52002000_FULL_NAME "flash-controller@52002000" +#define DT_N_S_soc_S_flash_controller_52002000_FULL_NAME_UNQUOTED flash-controller@52002000 +#define DT_N_S_soc_S_flash_controller_52002000_FULL_NAME_TOKEN flash_controller_52002000 +#define DT_N_S_soc_S_flash_controller_52002000_FULL_NAME_UPPER_TOKEN FLASH_CONTROLLER_52002000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_flash_controller_52002000_PARENT DT_N_S_soc @@ -26444,18 +27234,18 @@ #define DT_N_S_soc_S_flash_controller_52002000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000, __VA_ARGS__) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_flash_controller_52002000_ORD 180 -#define DT_N_S_soc_S_flash_controller_52002000_ORD_STR_SORTABLE 00180 +#define DT_N_S_soc_S_flash_controller_52002000_ORD 183 +#define DT_N_S_soc_S_flash_controller_52002000_ORD_STR_SORTABLE 00183 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_flash_controller_52002000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_flash_controller_52002000_SUPPORTS_ORDS \ - 181, /* /soc/flash-controller@52002000/flash@8000000 */ + 184, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_flash_controller_52002000_EXISTS 1 @@ -26466,8 +27256,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_flash_controller_52002000_REG_NUM 1 #define DT_N_S_soc_S_flash_controller_52002000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_REG_IDX_0_VAL_ADDRESS 1375739904 /* 0x52002000 */ -#define DT_N_S_soc_S_flash_controller_52002000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_flash_controller_52002000_REG_IDX_0_VAL_ADDRESS 1375739904 +#define DT_N_S_soc_S_flash_controller_52002000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_flash_controller_52002000_RANGES_NUM 0 #define DT_N_S_soc_S_flash_controller_52002000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_flash_controller_52002000_IRQ_NUM 1 @@ -26495,21 +27285,25 @@ #define DT_N_S_soc_S_flash_controller_52002000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_flash_controller_52002000_P_wakeup_source 0 -#define DT_N_S_soc_S_flash_controller_52002000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_flash_controller_52002000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_P_st_rdp1_enable_byte 85 +#define DT_N_S_soc_S_flash_controller_52002000_P_st_rdp1_enable_byte_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_P_reg {1375739904, 1024} +#define DT_N_S_soc_S_flash_controller_52002000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_P_reg_IDX_0 1375739904 +#define DT_N_S_soc_S_flash_controller_52002000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_flash_controller_52002000_P_reg_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_P_compatible {"st,stm32-flash-controller", "st,stm32h7-flash-controller"} +#define DT_N_S_soc_S_flash_controller_52002000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_P_compatible_IDX_0 "st,stm32-flash-controller" #define DT_N_S_soc_S_flash_controller_52002000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-flash-controller #define DT_N_S_soc_S_flash_controller_52002000_P_compatible_IDX_0_STRING_TOKEN st_stm32_flash_controller #define DT_N_S_soc_S_flash_controller_52002000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_FLASH_CONTROLLER -#define DT_N_S_soc_S_flash_controller_52002000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_P_compatible_IDX_1 "st,stm32h7-flash-controller" #define DT_N_S_soc_S_flash_controller_52002000_P_compatible_IDX_1_STRING_UNQUOTED st,stm32h7-flash-controller #define DT_N_S_soc_S_flash_controller_52002000_P_compatible_IDX_1_STRING_TOKEN st_stm32h7_flash_controller #define DT_N_S_soc_S_flash_controller_52002000_P_compatible_IDX_1_STRING_UPPER_TOKEN ST_STM32H7_FLASH_CONTROLLER -#define DT_N_S_soc_S_flash_controller_52002000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_flash_controller_52002000, compatible, 0) \ fn(DT_N_S_soc_S_flash_controller_52002000, compatible, 1) #define DT_N_S_soc_S_flash_controller_52002000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_flash_controller_52002000, compatible, 0) DT_DEBRACKET_INTERNAL sep \ @@ -26520,17 +27314,11 @@ fn(DT_N_S_soc_S_flash_controller_52002000, compatible, 1, __VA_ARGS__) #define DT_N_S_soc_S_flash_controller_52002000_P_compatible_LEN 2 #define DT_N_S_soc_S_flash_controller_52002000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_P_reg {1375739904 /* 0x52002000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_flash_controller_52002000_P_reg_IDX_0 1375739904 -#define DT_N_S_soc_S_flash_controller_52002000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_flash_controller_52002000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_P_interrupts {4 /* 0x4 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_flash_controller_52002000_P_interrupts_IDX_0 4 +#define DT_N_S_soc_S_flash_controller_52002000_P_interrupts {4, 0} #define DT_N_S_soc_S_flash_controller_52002000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_flash_controller_52002000_P_interrupts_IDX_0 4 #define DT_N_S_soc_S_flash_controller_52002000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_flash_controller_52002000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -26546,8 +27334,10 @@ #define DT_N_S_soc_S_flash_controller_52002000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_flash_controller_52002000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_P_st_rdp1_enable_byte 85 -#define DT_N_S_soc_S_flash_controller_52002000_P_st_rdp1_enable_byte_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_P_wakeup_source 0 +#define DT_N_S_soc_S_flash_controller_52002000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_flash_controller_52002000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/flash-controller@52002000/flash@8000000 @@ -26566,6 +27356,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_FULL_NAME "flash@8000000" +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_FULL_NAME_UNQUOTED flash@8000000 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_FULL_NAME_TOKEN flash_8000000 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_FULL_NAME_UPPER_TOKEN FLASH_8000000 /* Node parent (/soc/flash-controller@52002000) identifier: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_PARENT DT_N_S_soc_S_flash_controller_52002000 @@ -26591,16 +27384,16 @@ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions, __VA_ARGS__) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_ORD 181 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_ORD_STR_SORTABLE 00181 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_ORD 184 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_ORD_STR_SORTABLE 00184 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_REQUIRES_ORDS \ - 180, /* /soc/flash-controller@52002000 */ + 183, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_SUPPORTS_ORDS \ - 182, /* /soc/flash-controller@52002000/flash@8000000/partitions */ + 185, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_EXISTS 1 @@ -26611,8 +27404,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_REG_NUM 1 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_REG_IDX_0_VAL_ADDRESS 134217728 /* 0x8000000 */ -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_REG_IDX_0_VAL_SIZE 1048576 /* 0x100000 */ +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_REG_IDX_0_VAL_ADDRESS 134217728 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_REG_IDX_0_VAL_SIZE 1048576 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_RANGES_NUM 0 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_IRQ_NUM 0 @@ -26629,20 +27422,20 @@ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_wakeup_source 0 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_max_erase_time 4000 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_max_erase_time_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_erase_block_size 131072 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_erase_block_size_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_write_block_size 32 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_write_block_size_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status "okay" #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_IDX_0 "okay" #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000, status, 0) #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000, status, 0) #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000, status, 0, __VA_ARGS__) @@ -26650,16 +27443,16 @@ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_LEN 1 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_status_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible {"st,stm32-nv-flash", "soc-nv-flash"} +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_IDX_0 "st,stm32-nv-flash" #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-nv-flash #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_IDX_0_STRING_TOKEN st_stm32_nv_flash #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_NV_FLASH -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_IDX_1 "soc-nv-flash" #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_IDX_1_STRING_UNQUOTED soc-nv-flash #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_IDX_1_STRING_TOKEN soc_nv_flash #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_IDX_1_STRING_UPPER_TOKEN SOC_NV_FLASH -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_IDX_1_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000, compatible, 0) \ fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000, compatible, 1) #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000, compatible, 0) DT_DEBRACKET_INTERNAL sep \ @@ -26670,20 +27463,18 @@ fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000, compatible, 1, __VA_ARGS__) #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_LEN 2 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_reg {134217728 /* 0x8000000 */, 1048576 /* 0x100000 */} -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_reg_IDX_0 134217728 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_reg {134217728, 1048576} #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_reg_IDX_1 1048576 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_reg_IDX_0 134217728 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_reg_IDX_1 1048576 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_reg_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_erase_block_size 131072 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_erase_block_size_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_write_block_size 32 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_write_block_size_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_max_erase_time 4000 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_max_erase_time_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_wakeup_source 0 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/flash-controller@52002000/flash@8000000/partitions @@ -26702,6 +27493,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_FULL_NAME "partitions" +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_FULL_NAME_UNQUOTED partitions +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_FULL_NAME_TOKEN partitions +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_FULL_NAME_UPPER_TOKEN PARTITIONS /* Node parent (/soc/flash-controller@52002000/flash@8000000) identifier: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_PARENT DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000 @@ -26727,18 +27521,18 @@ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000, __VA_ARGS__) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_ORD 182 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_ORD_STR_SORTABLE 00182 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_ORD 185 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_ORD_STR_SORTABLE 00185 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_REQUIRES_ORDS \ - 181, /* /soc/flash-controller@52002000/flash@8000000 */ + 184, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_SUPPORTS_ORDS \ - 183, /* /soc/flash-controller@52002000/flash@8000000/partitions/partition@0 */ \ - 184, /* /soc/flash-controller@52002000/flash@8000000/partitions/partition@40000 */ \ - 185, /* /soc/flash-controller@52002000/flash@8000000/partitions/partition@e0000 */ + 186, \ + 187, \ + 188, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_EXISTS 1 @@ -26772,6 +27566,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_FULL_NAME "partition@0" +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_FULL_NAME_UNQUOTED partition@0 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_FULL_NAME_TOKEN partition_0 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_FULL_NAME_UPPER_TOKEN PARTITION_0 /* Node parent (/soc/flash-controller@52002000/flash@8000000/partitions) identifier: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_PARENT DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions @@ -26797,12 +27594,12 @@ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_ORD 183 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_ORD_STR_SORTABLE 00183 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_ORD 186 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_ORD_STR_SORTABLE 00186 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_REQUIRES_ORDS \ - 182, /* /soc/flash-controller@52002000/flash@8000000/partitions */ + 185, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_SUPPORTS_ORDS /* nothing */ @@ -26814,8 +27611,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_REG_NUM 1 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_REG_IDX_0_VAL_ADDRESS 0 /* 0x0 */ -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_REG_IDX_0_VAL_SIZE 262144 /* 0x40000 */ +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_REG_IDX_0_VAL_ADDRESS 0 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_REG_IDX_0_VAL_SIZE 262144 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_RANGES_NUM 0 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_FOREACH_RANGE(fn) #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_IRQ_NUM 0 @@ -26843,11 +27640,11 @@ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_P_label_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_P_read_only 1 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_P_read_only_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_P_reg {0 /* 0x0 */, 262144 /* 0x40000 */} -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_P_reg_IDX_0 0 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_P_reg {0, 262144} #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_P_reg_IDX_1 262144 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_P_reg_IDX_0 0 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_P_reg_IDX_1 262144 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0_P_reg_EXISTS 1 /* @@ -26864,6 +27661,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_FULL_NAME "partition@40000" +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_FULL_NAME_UNQUOTED partition@40000 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_FULL_NAME_TOKEN partition_40000 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_FULL_NAME_UPPER_TOKEN PARTITION_40000 /* Node parent (/soc/flash-controller@52002000/flash@8000000/partitions) identifier: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_PARENT DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions @@ -26889,12 +27689,12 @@ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_ORD 184 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_ORD_STR_SORTABLE 00184 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_ORD 187 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_ORD_STR_SORTABLE 00187 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_REQUIRES_ORDS \ - 182, /* /soc/flash-controller@52002000/flash@8000000/partitions */ + 185, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_SUPPORTS_ORDS /* nothing */ @@ -26906,8 +27706,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_REG_NUM 1 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_REG_IDX_0_VAL_ADDRESS 262144 /* 0x40000 */ -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_REG_IDX_0_VAL_SIZE 786432 /* 0xc0000 */ +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_REG_IDX_0_VAL_ADDRESS 262144 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_REG_IDX_0_VAL_SIZE 786432 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_RANGES_NUM 0 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_IRQ_NUM 0 @@ -26935,11 +27735,11 @@ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_P_label_EXISTS 1 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_P_read_only 0 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_P_read_only_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_P_reg {262144 /* 0x40000 */, 786432 /* 0xc0000 */} -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_P_reg_IDX_0 262144 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_P_reg {262144, 786432} #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_P_reg_IDX_1 786432 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_P_reg_IDX_0 262144 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_P_reg_IDX_1 786432 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000_P_reg_EXISTS 1 /* @@ -26956,6 +27756,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_FULL_NAME "partition@e0000" +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_FULL_NAME_UNQUOTED partition@e0000 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_FULL_NAME_TOKEN partition_e0000 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_FULL_NAME_UPPER_TOKEN PARTITION_E0000 /* Node parent (/soc/flash-controller@52002000/flash@8000000/partitions) identifier: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_PARENT DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions @@ -26981,12 +27784,12 @@ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_ORD 185 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_ORD_STR_SORTABLE 00185 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_ORD 188 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_ORD_STR_SORTABLE 00188 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_REQUIRES_ORDS \ - 182, /* /soc/flash-controller@52002000/flash@8000000/partitions */ + 185, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_SUPPORTS_ORDS /* nothing */ @@ -26998,8 +27801,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_REG_NUM 1 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_REG_IDX_0_VAL_ADDRESS 917504 /* 0xe0000 */ -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_REG_IDX_0_VAL_SIZE 131072 /* 0x20000 */ +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_REG_IDX_0_VAL_ADDRESS 917504 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_REG_IDX_0_VAL_SIZE 131072 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_RANGES_NUM 0 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_IRQ_NUM 0 @@ -27015,11 +27818,11 @@ /* Generic property macros: */ #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_P_read_only 0 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_P_read_only_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_P_reg {917504 /* 0xe0000 */, 131072 /* 0x20000 */} -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_P_reg_IDX_0 917504 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_P_reg {917504, 131072} #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_P_reg_IDX_1 131072 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_P_reg_IDX_0 917504 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_P_reg_IDX_1 131072 #define DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000_P_reg_EXISTS 1 /* @@ -27033,6 +27836,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_FULL_NAME "port" +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_FULL_NAME_UNQUOTED port +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_FULL_NAME_TOKEN port +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_FULL_NAME_UPPER_TOKEN PORT /* Node parent (/soc/i2c@58001c00/ov7670@21) identifier: */ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_PARENT DT_N_S_soc_S_i2c_58001c00_S_ov7670_21 @@ -27058,16 +27864,16 @@ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint, __VA_ARGS__) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_ORD 186 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_ORD_STR_SORTABLE 00186 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_ORD 189 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_ORD_STR_SORTABLE 00189 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_REQUIRES_ORDS \ - 163, /* /soc/i2c@58001c00/ov7670@21 */ + 166, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_SUPPORTS_ORDS \ - 187, /* /soc/i2c@58001c00/ov7670@21/port/endpoint */ + 190, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_EXISTS 1 @@ -27100,6 +27906,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint_FULL_NAME "endpoint" +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint_FULL_NAME_UNQUOTED endpoint +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint_FULL_NAME_TOKEN endpoint +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint_FULL_NAME_UPPER_TOKEN ENDPOINT /* Node parent (/soc/i2c@58001c00/ov7670@21/port) identifier: */ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint_PARENT DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port @@ -27125,12 +27934,12 @@ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint_ORD 187 -#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint_ORD_STR_SORTABLE 00187 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint_ORD 190 +#define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint_ORD_STR_SORTABLE 00190 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint_REQUIRES_ORDS \ - 186, /* /soc/i2c@58001c00/ov7670@21/port */ + 189, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint_SUPPORTS_ORDS /* nothing */ @@ -27170,6 +27979,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_FULL_NAME "fmc_a0_pf0" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_FULL_NAME_UNQUOTED fmc_a0_pf0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_FULL_NAME_TOKEN fmc_a0_pf0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_FULL_NAME_UPPER_TOKEN FMC_A0_PF0 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -27195,16 +28007,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_ORD 188 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_ORD_STR_SORTABLE 00188 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_ORD 191 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_ORD_STR_SORTABLE 00191 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_EXISTS 1 @@ -27222,20 +28034,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_pinmux 2572 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate "very-high-speed" @@ -27244,16 +28042,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_a10_pg0 @@ -27269,6 +28079,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_FULL_NAME "fmc_a10_pg0" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_FULL_NAME_UNQUOTED fmc_a10_pg0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_FULL_NAME_TOKEN fmc_a10_pg0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_FULL_NAME_UPPER_TOKEN FMC_A10_PG0 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -27294,16 +28107,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_ORD 189 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_ORD_STR_SORTABLE 00189 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_ORD 192 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_ORD_STR_SORTABLE 00192 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_EXISTS 1 @@ -27321,20 +28134,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_pinmux 3084 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate "very-high-speed" @@ -27343,16 +28142,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_a11_pg1 @@ -27368,6 +28179,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_FULL_NAME "fmc_a11_pg1" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_FULL_NAME_UNQUOTED fmc_a11_pg1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_FULL_NAME_TOKEN fmc_a11_pg1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_FULL_NAME_UPPER_TOKEN FMC_A11_PG1 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -27393,16 +28207,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_ORD 190 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_ORD_STR_SORTABLE 00190 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_ORD 193 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_ORD_STR_SORTABLE 00193 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_EXISTS 1 @@ -27420,20 +28234,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_pinmux 3116 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate "very-high-speed" @@ -27442,16 +28242,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_a12_pg2 @@ -27467,6 +28279,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_FULL_NAME "fmc_a12_pg2" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_FULL_NAME_UNQUOTED fmc_a12_pg2 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_FULL_NAME_TOKEN fmc_a12_pg2 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_FULL_NAME_UPPER_TOKEN FMC_A12_PG2 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -27492,16 +28307,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_ORD 191 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_ORD_STR_SORTABLE 00191 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_ORD 194 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_ORD_STR_SORTABLE 00194 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_EXISTS 1 @@ -27519,20 +28334,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_pinmux 3148 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate "very-high-speed" @@ -27541,16 +28342,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_a14_pg4 @@ -27566,6 +28379,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_FULL_NAME "fmc_a14_pg4" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_FULL_NAME_UNQUOTED fmc_a14_pg4 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_FULL_NAME_TOKEN fmc_a14_pg4 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_FULL_NAME_UPPER_TOKEN FMC_A14_PG4 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -27591,16 +28407,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_ORD 192 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_ORD_STR_SORTABLE 00192 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_ORD 195 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_ORD_STR_SORTABLE 00195 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_EXISTS 1 @@ -27618,20 +28434,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_pinmux 3212 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate "very-high-speed" @@ -27640,16 +28442,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_a15_pg5 @@ -27665,6 +28479,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_FULL_NAME "fmc_a15_pg5" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_FULL_NAME_UNQUOTED fmc_a15_pg5 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_FULL_NAME_TOKEN fmc_a15_pg5 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_FULL_NAME_UPPER_TOKEN FMC_A15_PG5 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -27690,16 +28507,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_ORD 193 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_ORD_STR_SORTABLE 00193 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_ORD 196 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_ORD_STR_SORTABLE 00196 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_EXISTS 1 @@ -27717,20 +28534,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_pinmux 3244 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate "very-high-speed" @@ -27739,16 +28542,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_a1_pf1 @@ -27764,6 +28579,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_FULL_NAME "fmc_a1_pf1" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_FULL_NAME_UNQUOTED fmc_a1_pf1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_FULL_NAME_TOKEN fmc_a1_pf1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_FULL_NAME_UPPER_TOKEN FMC_A1_PF1 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -27789,16 +28607,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_ORD 194 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_ORD_STR_SORTABLE 00194 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_ORD 197 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_ORD_STR_SORTABLE 00197 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_EXISTS 1 @@ -27816,20 +28634,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_pinmux 2604 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate "very-high-speed" @@ -27838,16 +28642,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_a2_pf2 @@ -27863,6 +28679,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_FULL_NAME "fmc_a2_pf2" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_FULL_NAME_UNQUOTED fmc_a2_pf2 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_FULL_NAME_TOKEN fmc_a2_pf2 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_FULL_NAME_UPPER_TOKEN FMC_A2_PF2 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -27888,16 +28707,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_ORD 195 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_ORD_STR_SORTABLE 00195 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_ORD 198 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_ORD_STR_SORTABLE 00198 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_EXISTS 1 @@ -27915,20 +28734,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_pinmux 2636 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate "very-high-speed" @@ -27937,16 +28742,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_a3_pf3 @@ -27962,6 +28779,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_FULL_NAME "fmc_a3_pf3" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_FULL_NAME_UNQUOTED fmc_a3_pf3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_FULL_NAME_TOKEN fmc_a3_pf3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_FULL_NAME_UPPER_TOKEN FMC_A3_PF3 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -27987,16 +28807,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_ORD 196 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_ORD_STR_SORTABLE 00196 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_ORD 199 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_ORD_STR_SORTABLE 00199 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_EXISTS 1 @@ -28014,20 +28834,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_pinmux 2668 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate "very-high-speed" @@ -28036,16 +28842,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_a4_pf4 @@ -28061,6 +28879,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_FULL_NAME "fmc_a4_pf4" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_FULL_NAME_UNQUOTED fmc_a4_pf4 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_FULL_NAME_TOKEN fmc_a4_pf4 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_FULL_NAME_UPPER_TOKEN FMC_A4_PF4 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -28086,16 +28907,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_ORD 197 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_ORD_STR_SORTABLE 00197 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_ORD 200 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_ORD_STR_SORTABLE 00200 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_EXISTS 1 @@ -28113,20 +28934,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_pinmux 2700 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate "very-high-speed" @@ -28135,16 +28942,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_a5_pf5 @@ -28160,6 +28979,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_FULL_NAME "fmc_a5_pf5" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_FULL_NAME_UNQUOTED fmc_a5_pf5 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_FULL_NAME_TOKEN fmc_a5_pf5 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_FULL_NAME_UPPER_TOKEN FMC_A5_PF5 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -28185,16 +29007,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_ORD 198 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_ORD_STR_SORTABLE 00198 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_ORD 201 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_ORD_STR_SORTABLE 00201 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_EXISTS 1 @@ -28212,20 +29034,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_pinmux 2732 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate "very-high-speed" @@ -28234,16 +29042,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_a6_pf12 @@ -28259,6 +29079,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_FULL_NAME "fmc_a6_pf12" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_FULL_NAME_UNQUOTED fmc_a6_pf12 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_FULL_NAME_TOKEN fmc_a6_pf12 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_FULL_NAME_UPPER_TOKEN FMC_A6_PF12 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -28284,16 +29107,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_ORD 199 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_ORD_STR_SORTABLE 00199 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_ORD 202 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_ORD_STR_SORTABLE 00202 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_EXISTS 1 @@ -28311,20 +29134,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_pinmux 2956 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate "very-high-speed" @@ -28333,16 +29142,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_a7_pf13 @@ -28358,6 +29179,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_FULL_NAME "fmc_a7_pf13" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_FULL_NAME_UNQUOTED fmc_a7_pf13 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_FULL_NAME_TOKEN fmc_a7_pf13 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_FULL_NAME_UPPER_TOKEN FMC_A7_PF13 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -28383,16 +29207,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_ORD 200 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_ORD_STR_SORTABLE 00200 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_ORD 203 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_ORD_STR_SORTABLE 00203 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_EXISTS 1 @@ -28410,20 +29234,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_pinmux 2988 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate "very-high-speed" @@ -28432,16 +29242,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_a8_pf14 @@ -28457,6 +29279,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_FULL_NAME "fmc_a8_pf14" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_FULL_NAME_UNQUOTED fmc_a8_pf14 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_FULL_NAME_TOKEN fmc_a8_pf14 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_FULL_NAME_UPPER_TOKEN FMC_A8_PF14 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -28482,16 +29307,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_ORD 201 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_ORD_STR_SORTABLE 00201 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_ORD 204 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_ORD_STR_SORTABLE 00204 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_EXISTS 1 @@ -28509,20 +29334,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_pinmux 3020 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate "very-high-speed" @@ -28531,16 +29342,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_a9_pf15 @@ -28556,6 +29379,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_FULL_NAME "fmc_a9_pf15" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_FULL_NAME_UNQUOTED fmc_a9_pf15 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_FULL_NAME_TOKEN fmc_a9_pf15 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_FULL_NAME_UPPER_TOKEN FMC_A9_PF15 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -28581,16 +29407,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_ORD 202 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_ORD_STR_SORTABLE 00202 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_ORD 205 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_ORD_STR_SORTABLE 00205 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_EXISTS 1 @@ -28608,20 +29434,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_pinmux 3052 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate "very-high-speed" @@ -28630,16 +29442,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d0_pd14 @@ -28655,6 +29479,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_FULL_NAME "fmc_d0_pd14" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_FULL_NAME_UNQUOTED fmc_d0_pd14 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_FULL_NAME_TOKEN fmc_d0_pd14 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_FULL_NAME_UPPER_TOKEN FMC_D0_PD14 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -28680,16 +29507,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_ORD 203 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_ORD_STR_SORTABLE 00203 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_ORD 206 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_ORD_STR_SORTABLE 00206 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_EXISTS 1 @@ -28707,20 +29534,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_pinmux 1996 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate "very-high-speed" @@ -28729,16 +29542,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d10_pe13 @@ -28754,6 +29579,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_FULL_NAME "fmc_d10_pe13" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_FULL_NAME_UNQUOTED fmc_d10_pe13 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_FULL_NAME_TOKEN fmc_d10_pe13 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_FULL_NAME_UPPER_TOKEN FMC_D10_PE13 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -28779,16 +29607,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_ORD 204 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_ORD_STR_SORTABLE 00204 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_ORD 207 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_ORD_STR_SORTABLE 00207 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_EXISTS 1 @@ -28806,20 +29634,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_pinmux 2476 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate "very-high-speed" @@ -28828,16 +29642,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d11_pe14 @@ -28853,6 +29679,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_FULL_NAME "fmc_d11_pe14" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_FULL_NAME_UNQUOTED fmc_d11_pe14 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_FULL_NAME_TOKEN fmc_d11_pe14 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_FULL_NAME_UPPER_TOKEN FMC_D11_PE14 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -28878,16 +29707,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_ORD 205 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_ORD_STR_SORTABLE 00205 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_ORD 208 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_ORD_STR_SORTABLE 00208 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_EXISTS 1 @@ -28905,20 +29734,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_pinmux 2508 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate "very-high-speed" @@ -28927,16 +29742,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d12_pe15 @@ -28952,6 +29779,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_FULL_NAME "fmc_d12_pe15" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_FULL_NAME_UNQUOTED fmc_d12_pe15 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_FULL_NAME_TOKEN fmc_d12_pe15 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_FULL_NAME_UPPER_TOKEN FMC_D12_PE15 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -28977,16 +29807,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_ORD 206 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_ORD_STR_SORTABLE 00206 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_ORD 209 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_ORD_STR_SORTABLE 00209 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_EXISTS 1 @@ -29004,20 +29834,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_pinmux 2540 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate "very-high-speed" @@ -29026,16 +29842,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d13_pd8 @@ -29051,6 +29879,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_FULL_NAME "fmc_d13_pd8" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_FULL_NAME_UNQUOTED fmc_d13_pd8 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_FULL_NAME_TOKEN fmc_d13_pd8 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_FULL_NAME_UPPER_TOKEN FMC_D13_PD8 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -29076,16 +29907,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_ORD 207 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_ORD_STR_SORTABLE 00207 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_ORD 210 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_ORD_STR_SORTABLE 00210 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_EXISTS 1 @@ -29103,20 +29934,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_pinmux 1804 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate "very-high-speed" @@ -29125,16 +29942,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d14_pd9 @@ -29150,6 +29979,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_FULL_NAME "fmc_d14_pd9" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_FULL_NAME_UNQUOTED fmc_d14_pd9 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_FULL_NAME_TOKEN fmc_d14_pd9 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_FULL_NAME_UPPER_TOKEN FMC_D14_PD9 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -29175,16 +30007,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_ORD 208 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_ORD_STR_SORTABLE 00208 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_ORD 211 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_ORD_STR_SORTABLE 00211 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_EXISTS 1 @@ -29202,20 +30034,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_pinmux 1836 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate "very-high-speed" @@ -29224,16 +30042,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d15_pd10 @@ -29249,6 +30079,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_FULL_NAME "fmc_d15_pd10" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_FULL_NAME_UNQUOTED fmc_d15_pd10 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_FULL_NAME_TOKEN fmc_d15_pd10 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_FULL_NAME_UPPER_TOKEN FMC_D15_PD10 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -29274,16 +30107,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_ORD 209 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_ORD_STR_SORTABLE 00209 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_ORD 212 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_ORD_STR_SORTABLE 00212 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_EXISTS 1 @@ -29301,20 +30134,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_pinmux 1868 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate "very-high-speed" @@ -29323,16 +30142,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d1_pd15 @@ -29348,6 +30179,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_FULL_NAME "fmc_d1_pd15" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_FULL_NAME_UNQUOTED fmc_d1_pd15 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_FULL_NAME_TOKEN fmc_d1_pd15 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_FULL_NAME_UPPER_TOKEN FMC_D1_PD15 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -29373,16 +30207,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_ORD 210 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_ORD_STR_SORTABLE 00210 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_ORD 213 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_ORD_STR_SORTABLE 00213 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_EXISTS 1 @@ -29400,20 +30234,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_pinmux 2028 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate "very-high-speed" @@ -29422,16 +30242,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d2_pd0 @@ -29447,6 +30279,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_FULL_NAME "fmc_d2_pd0" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_FULL_NAME_UNQUOTED fmc_d2_pd0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_FULL_NAME_TOKEN fmc_d2_pd0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_FULL_NAME_UPPER_TOKEN FMC_D2_PD0 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -29472,16 +30307,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_ORD 211 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_ORD_STR_SORTABLE 00211 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_ORD 214 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_ORD_STR_SORTABLE 00214 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_EXISTS 1 @@ -29499,20 +30334,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_pinmux 1548 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate "very-high-speed" @@ -29521,16 +30342,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d3_pd1 @@ -29546,6 +30379,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_FULL_NAME "fmc_d3_pd1" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_FULL_NAME_UNQUOTED fmc_d3_pd1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_FULL_NAME_TOKEN fmc_d3_pd1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_FULL_NAME_UPPER_TOKEN FMC_D3_PD1 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -29571,16 +30407,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_ORD 212 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_ORD_STR_SORTABLE 00212 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_ORD 215 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_ORD_STR_SORTABLE 00215 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_EXISTS 1 @@ -29598,20 +30434,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_pinmux 1580 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate "very-high-speed" @@ -29620,16 +30442,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d4_pe7 @@ -29645,6 +30479,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_FULL_NAME "fmc_d4_pe7" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_FULL_NAME_UNQUOTED fmc_d4_pe7 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_FULL_NAME_TOKEN fmc_d4_pe7 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_FULL_NAME_UPPER_TOKEN FMC_D4_PE7 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -29670,16 +30507,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_ORD 213 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_ORD_STR_SORTABLE 00213 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_ORD 216 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_ORD_STR_SORTABLE 00216 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_EXISTS 1 @@ -29697,20 +30534,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_pinmux 2284 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate "very-high-speed" @@ -29719,16 +30542,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d5_pe8 @@ -29744,6 +30579,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_FULL_NAME "fmc_d5_pe8" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_FULL_NAME_UNQUOTED fmc_d5_pe8 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_FULL_NAME_TOKEN fmc_d5_pe8 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_FULL_NAME_UPPER_TOKEN FMC_D5_PE8 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -29769,16 +30607,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_ORD 214 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_ORD_STR_SORTABLE 00214 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_ORD 217 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_ORD_STR_SORTABLE 00217 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_EXISTS 1 @@ -29796,20 +30634,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_pinmux 2316 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate "very-high-speed" @@ -29818,16 +30642,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d6_pe9 @@ -29843,6 +30679,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_FULL_NAME "fmc_d6_pe9" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_FULL_NAME_UNQUOTED fmc_d6_pe9 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_FULL_NAME_TOKEN fmc_d6_pe9 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_FULL_NAME_UPPER_TOKEN FMC_D6_PE9 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -29868,16 +30707,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_ORD 215 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_ORD_STR_SORTABLE 00215 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_ORD 218 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_ORD_STR_SORTABLE 00218 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_EXISTS 1 @@ -29895,20 +30734,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_pinmux 2348 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate "very-high-speed" @@ -29917,16 +30742,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d7_pe10 @@ -29942,6 +30779,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_FULL_NAME "fmc_d7_pe10" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_FULL_NAME_UNQUOTED fmc_d7_pe10 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_FULL_NAME_TOKEN fmc_d7_pe10 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_FULL_NAME_UPPER_TOKEN FMC_D7_PE10 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -29967,16 +30807,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_ORD 216 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_ORD_STR_SORTABLE 00216 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_ORD 219 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_ORD_STR_SORTABLE 00219 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_EXISTS 1 @@ -29994,20 +30834,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_pinmux 2380 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate "very-high-speed" @@ -30016,16 +30842,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d8_pe11 @@ -30041,6 +30879,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_FULL_NAME "fmc_d8_pe11" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_FULL_NAME_UNQUOTED fmc_d8_pe11 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_FULL_NAME_TOKEN fmc_d8_pe11 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_FULL_NAME_UPPER_TOKEN FMC_D8_PE11 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -30066,16 +30907,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_ORD 217 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_ORD_STR_SORTABLE 00217 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_ORD 220 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_ORD_STR_SORTABLE 00220 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_EXISTS 1 @@ -30093,20 +30934,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_pinmux 2412 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate "very-high-speed" @@ -30115,16 +30942,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_d9_pe12 @@ -30140,6 +30979,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_FULL_NAME "fmc_d9_pe12" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_FULL_NAME_UNQUOTED fmc_d9_pe12 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_FULL_NAME_TOKEN fmc_d9_pe12 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_FULL_NAME_UPPER_TOKEN FMC_D9_PE12 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -30165,16 +31007,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_ORD 218 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_ORD_STR_SORTABLE 00218 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_ORD 221 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_ORD_STR_SORTABLE 00221 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_EXISTS 1 @@ -30192,20 +31034,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_pinmux 2444 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate "very-high-speed" @@ -30214,16 +31042,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_nbl0_pe0 @@ -30239,6 +31079,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_FULL_NAME "fmc_nbl0_pe0" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_FULL_NAME_UNQUOTED fmc_nbl0_pe0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_FULL_NAME_TOKEN fmc_nbl0_pe0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_FULL_NAME_UPPER_TOKEN FMC_NBL0_PE0 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -30264,16 +31107,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_ORD 219 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_ORD_STR_SORTABLE 00219 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_ORD 222 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_ORD_STR_SORTABLE 00222 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_EXISTS 1 @@ -30291,20 +31134,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_pinmux 2060 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate "very-high-speed" @@ -30313,16 +31142,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_nbl1_pe1 @@ -30338,6 +31179,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_FULL_NAME "fmc_nbl1_pe1" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_FULL_NAME_UNQUOTED fmc_nbl1_pe1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_FULL_NAME_TOKEN fmc_nbl1_pe1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_FULL_NAME_UPPER_TOKEN FMC_NBL1_PE1 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -30363,16 +31207,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_ORD 220 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_ORD_STR_SORTABLE 00220 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_ORD 223 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_ORD_STR_SORTABLE 00223 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_EXISTS 1 @@ -30390,20 +31234,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_pinmux 2092 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate "very-high-speed" @@ -30412,16 +31242,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_sdcke0_ph2 @@ -30437,6 +31279,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_FULL_NAME "fmc_sdcke0_ph2" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_FULL_NAME_UNQUOTED fmc_sdcke0_ph2 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_FULL_NAME_TOKEN fmc_sdcke0_ph2 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_FULL_NAME_UPPER_TOKEN FMC_SDCKE0_PH2 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -30462,16 +31307,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_ORD 221 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_ORD_STR_SORTABLE 00221 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_ORD 224 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_ORD_STR_SORTABLE 00224 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_EXISTS 1 @@ -30489,20 +31334,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_pinmux 3660 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate "very-high-speed" @@ -30511,16 +31342,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_sdclk_pg8 @@ -30536,6 +31379,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_FULL_NAME "fmc_sdclk_pg8" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_FULL_NAME_UNQUOTED fmc_sdclk_pg8 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_FULL_NAME_TOKEN fmc_sdclk_pg8 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_FULL_NAME_UPPER_TOKEN FMC_SDCLK_PG8 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -30561,16 +31407,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_ORD 222 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_ORD_STR_SORTABLE 00222 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_ORD 225 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_ORD_STR_SORTABLE 00225 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_EXISTS 1 @@ -30588,20 +31434,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_pinmux 3340 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate "very-high-speed" @@ -30610,16 +31442,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_sdncas_pg15 @@ -30635,6 +31479,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_FULL_NAME "fmc_sdncas_pg15" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_FULL_NAME_UNQUOTED fmc_sdncas_pg15 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_FULL_NAME_TOKEN fmc_sdncas_pg15 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_FULL_NAME_UPPER_TOKEN FMC_SDNCAS_PG15 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -30660,16 +31507,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_ORD 223 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_ORD_STR_SORTABLE 00223 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_ORD 226 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_ORD_STR_SORTABLE 00226 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_EXISTS 1 @@ -30687,20 +31534,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_pinmux 3564 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate "very-high-speed" @@ -30709,16 +31542,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_sdne0_ph3 @@ -30734,6 +31579,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_FULL_NAME "fmc_sdne0_ph3" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_FULL_NAME_UNQUOTED fmc_sdne0_ph3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_FULL_NAME_TOKEN fmc_sdne0_ph3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_FULL_NAME_UPPER_TOKEN FMC_SDNE0_PH3 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -30759,16 +31607,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_ORD 224 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_ORD_STR_SORTABLE 00224 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_ORD 227 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_ORD_STR_SORTABLE 00227 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_EXISTS 1 @@ -30786,20 +31634,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_pinmux 3692 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate "very-high-speed" @@ -30808,16 +31642,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_sdnras_pf11 @@ -30833,6 +31679,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_FULL_NAME "fmc_sdnras_pf11" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_FULL_NAME_UNQUOTED fmc_sdnras_pf11 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_FULL_NAME_TOKEN fmc_sdnras_pf11 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_FULL_NAME_UPPER_TOKEN FMC_SDNRAS_PF11 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -30858,16 +31707,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_ORD 225 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_ORD_STR_SORTABLE 00225 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_ORD 228 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_ORD_STR_SORTABLE 00228 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_EXISTS 1 @@ -30885,20 +31734,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_pinmux 2924 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate "very-high-speed" @@ -30907,16 +31742,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/fmc_sdnwe_ph5 @@ -30932,6 +31779,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_FULL_NAME "fmc_sdnwe_ph5" +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_FULL_NAME_UNQUOTED fmc_sdnwe_ph5 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_FULL_NAME_TOKEN fmc_sdnwe_ph5 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_FULL_NAME_UPPER_TOKEN FMC_SDNWE_PH5 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -30957,16 +31807,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_ORD 226 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_ORD_STR_SORTABLE 00226 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_ORD 229 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_ORD_STR_SORTABLE 00229 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_SUPPORTS_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_EXISTS 1 @@ -30984,20 +31834,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_pinmux 3756 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate "very-high-speed" @@ -31006,16 +31842,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5_P_output_high_EXISTS 1 /* * Devicetree node: /soc/memory-controller@52004000 @@ -31034,6 +31882,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_memory_controller_52004000_FULL_NAME "memory-controller@52004000" +#define DT_N_S_soc_S_memory_controller_52004000_FULL_NAME_UNQUOTED memory-controller@52004000 +#define DT_N_S_soc_S_memory_controller_52004000_FULL_NAME_TOKEN memory_controller_52004000 +#define DT_N_S_soc_S_memory_controller_52004000_FULL_NAME_UPPER_TOKEN MEMORY_CONTROLLER_52004000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_memory_controller_52004000_PARENT DT_N_S_soc @@ -31059,56 +31910,56 @@ #define DT_N_S_soc_S_memory_controller_52004000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram, __VA_ARGS__) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_memory_controller_52004000_ORD 227 -#define DT_N_S_soc_S_memory_controller_52004000_ORD_STR_SORTABLE 00227 +#define DT_N_S_soc_S_memory_controller_52004000_ORD 230 +#define DT_N_S_soc_S_memory_controller_52004000_ORD_STR_SORTABLE 00230 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_memory_controller_52004000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 9, /* /soc/rcc@58024400 */ \ - 188, /* /soc/pin-controller@58020000/fmc_a0_pf0 */ \ - 189, /* /soc/pin-controller@58020000/fmc_a10_pg0 */ \ - 190, /* /soc/pin-controller@58020000/fmc_a11_pg1 */ \ - 191, /* /soc/pin-controller@58020000/fmc_a12_pg2 */ \ - 192, /* /soc/pin-controller@58020000/fmc_a14_pg4 */ \ - 193, /* /soc/pin-controller@58020000/fmc_a15_pg5 */ \ - 194, /* /soc/pin-controller@58020000/fmc_a1_pf1 */ \ - 195, /* /soc/pin-controller@58020000/fmc_a2_pf2 */ \ - 196, /* /soc/pin-controller@58020000/fmc_a3_pf3 */ \ - 197, /* /soc/pin-controller@58020000/fmc_a4_pf4 */ \ - 198, /* /soc/pin-controller@58020000/fmc_a5_pf5 */ \ - 199, /* /soc/pin-controller@58020000/fmc_a6_pf12 */ \ - 200, /* /soc/pin-controller@58020000/fmc_a7_pf13 */ \ - 201, /* /soc/pin-controller@58020000/fmc_a8_pf14 */ \ - 202, /* /soc/pin-controller@58020000/fmc_a9_pf15 */ \ - 203, /* /soc/pin-controller@58020000/fmc_d0_pd14 */ \ - 204, /* /soc/pin-controller@58020000/fmc_d10_pe13 */ \ - 205, /* /soc/pin-controller@58020000/fmc_d11_pe14 */ \ - 206, /* /soc/pin-controller@58020000/fmc_d12_pe15 */ \ - 207, /* /soc/pin-controller@58020000/fmc_d13_pd8 */ \ - 208, /* /soc/pin-controller@58020000/fmc_d14_pd9 */ \ - 209, /* /soc/pin-controller@58020000/fmc_d15_pd10 */ \ - 210, /* /soc/pin-controller@58020000/fmc_d1_pd15 */ \ - 211, /* /soc/pin-controller@58020000/fmc_d2_pd0 */ \ - 212, /* /soc/pin-controller@58020000/fmc_d3_pd1 */ \ - 213, /* /soc/pin-controller@58020000/fmc_d4_pe7 */ \ - 214, /* /soc/pin-controller@58020000/fmc_d5_pe8 */ \ - 215, /* /soc/pin-controller@58020000/fmc_d6_pe9 */ \ - 216, /* /soc/pin-controller@58020000/fmc_d7_pe10 */ \ - 217, /* /soc/pin-controller@58020000/fmc_d8_pe11 */ \ - 218, /* /soc/pin-controller@58020000/fmc_d9_pe12 */ \ - 219, /* /soc/pin-controller@58020000/fmc_nbl0_pe0 */ \ - 220, /* /soc/pin-controller@58020000/fmc_nbl1_pe1 */ \ - 221, /* /soc/pin-controller@58020000/fmc_sdcke0_ph2 */ \ - 222, /* /soc/pin-controller@58020000/fmc_sdclk_pg8 */ \ - 223, /* /soc/pin-controller@58020000/fmc_sdncas_pg15 */ \ - 224, /* /soc/pin-controller@58020000/fmc_sdne0_ph3 */ \ - 225, /* /soc/pin-controller@58020000/fmc_sdnras_pf11 */ \ - 226, /* /soc/pin-controller@58020000/fmc_sdnwe_ph5 */ + 4, \ + 9, \ + 191, \ + 192, \ + 193, \ + 194, \ + 195, \ + 196, \ + 197, \ + 198, \ + 199, \ + 200, \ + 201, \ + 202, \ + 203, \ + 204, \ + 205, \ + 206, \ + 207, \ + 208, \ + 209, \ + 210, \ + 211, \ + 212, \ + 213, \ + 214, \ + 215, \ + 216, \ + 217, \ + 218, \ + 219, \ + 220, \ + 221, \ + 222, \ + 223, \ + 224, \ + 225, \ + 226, \ + 227, \ + 228, \ + 229, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_memory_controller_52004000_SUPPORTS_ORDS \ - 228, /* /soc/memory-controller@52004000/sdram */ + 231, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_memory_controller_52004000_EXISTS 1 @@ -31118,8 +31969,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_memory_controller_52004000_REG_NUM 1 #define DT_N_S_soc_S_memory_controller_52004000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_REG_IDX_0_VAL_ADDRESS 1375748096 /* 0x52004000 */ -#define DT_N_S_soc_S_memory_controller_52004000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_memory_controller_52004000_REG_IDX_0_VAL_ADDRESS 1375748096 +#define DT_N_S_soc_S_memory_controller_52004000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_memory_controller_52004000_RANGES_NUM 0 #define DT_N_S_soc_S_memory_controller_52004000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_memory_controller_52004000_IRQ_NUM 0 @@ -31179,43 +32030,25 @@ #define DT_N_S_soc_S_memory_controller_52004000_PINCTRL_NAME_default_IDX_38_PH DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10 /* Generic property macros: */ -#define DT_N_S_soc_S_memory_controller_52004000_P_wakeup_source 0 -#define DT_N_S_soc_S_memory_controller_52004000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_memory_controller_52004000_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_status "okay" -#define DT_N_S_soc_S_memory_controller_52004000_P_status_STRING_UNQUOTED okay -#define DT_N_S_soc_S_memory_controller_52004000_P_status_STRING_TOKEN okay -#define DT_N_S_soc_S_memory_controller_52004000_P_status_STRING_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_memory_controller_52004000_P_status_IDX_0 "okay" -#define DT_N_S_soc_S_memory_controller_52004000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_memory_controller_52004000_P_status_ENUM_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_memory_controller_52004000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_memory_controller_52004000, status, 0) -#define DT_N_S_soc_S_memory_controller_52004000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_memory_controller_52004000, status, 0) -#define DT_N_S_soc_S_memory_controller_52004000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_memory_controller_52004000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_memory_controller_52004000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_memory_controller_52004000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_memory_controller_52004000_P_status_LEN 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_status_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_compatible {"st,stm32h7-fmc"} -#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_IDX_0 "st,stm32h7-fmc" -#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-fmc -#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_fmc -#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_FMC -#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_memory_controller_52004000, compatible, 0) -#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_memory_controller_52004000, compatible, 0) -#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_memory_controller_52004000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_memory_controller_52004000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_LEN 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_reg {1375748096 /* 0x52004000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_memory_controller_52004000_P_reg_IDX_0 1375748096 +#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap "disable" +#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_STRING_UNQUOTED disable +#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_STRING_TOKEN disable +#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_STRING_UPPER_TOKEN DISABLE +#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_IDX_0 "disable" +#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_IDX_0_ENUM_VAL_disable_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_memory_controller_52004000, st_mem_swap, 0) +#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_memory_controller_52004000, st_mem_swap, 0) +#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_memory_controller_52004000, st_mem_swap, 0, __VA_ARGS__) +#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_memory_controller_52004000, st_mem_swap, 0, __VA_ARGS__) +#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_LEN 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_reg {1375748096, 1024} #define DT_N_S_soc_S_memory_controller_52004000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_memory_controller_52004000_P_reg_IDX_0 1375748096 #define DT_N_S_soc_S_memory_controller_52004000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_reg_IDX_1 1024 #define DT_N_S_soc_S_memory_controller_52004000_P_reg_EXISTS 1 #define DT_N_S_soc_S_memory_controller_52004000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_memory_controller_52004000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -31229,8 +32062,6 @@ #define DT_N_S_soc_S_memory_controller_52004000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_memory_controller_52004000, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_memory_controller_52004000_P_clocks_LEN 1 #define DT_N_S_soc_S_memory_controller_52004000_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_memory_controller_52004000_P_zephyr_deferred_init_EXISTS 1 #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0 #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0 #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_0_IDX_0_EXISTS 1 @@ -31507,33 +32338,49 @@ #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_0_LEN 39 #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_0_EXISTS 1 #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_names_IDX_0 "default" #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_names_IDX_0_STRING_UNQUOTED default #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_names_IDX_0_STRING_TOKEN default #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_memory_controller_52004000, pinctrl_names, 0) #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_memory_controller_52004000, pinctrl_names, 0) #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_memory_controller_52004000, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_memory_controller_52004000, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_names_LEN 1 #define DT_N_S_soc_S_memory_controller_52004000_P_pinctrl_names_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap "disable" -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_STRING_UNQUOTED disable -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_STRING_TOKEN disable -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_STRING_UPPER_TOKEN DISABLE -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_IDX_0 "disable" -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_ENUM_IDX 0 -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_ENUM_VAL_disable_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_ENUM_TOKEN disable -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_ENUM_UPPER_TOKEN DISABLE -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_memory_controller_52004000, st_mem_swap, 0) -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_memory_controller_52004000, st_mem_swap, 0) -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_memory_controller_52004000, st_mem_swap, 0, __VA_ARGS__) -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_memory_controller_52004000, st_mem_swap, 0, __VA_ARGS__) -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_LEN 1 -#define DT_N_S_soc_S_memory_controller_52004000_P_st_mem_swap_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_status "okay" +#define DT_N_S_soc_S_memory_controller_52004000_P_status_STRING_UNQUOTED okay +#define DT_N_S_soc_S_memory_controller_52004000_P_status_STRING_TOKEN okay +#define DT_N_S_soc_S_memory_controller_52004000_P_status_STRING_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_memory_controller_52004000_P_status_IDX_0 "okay" +#define DT_N_S_soc_S_memory_controller_52004000_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_memory_controller_52004000, status, 0) +#define DT_N_S_soc_S_memory_controller_52004000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_memory_controller_52004000, status, 0) +#define DT_N_S_soc_S_memory_controller_52004000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_memory_controller_52004000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_memory_controller_52004000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_memory_controller_52004000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_memory_controller_52004000_P_status_LEN 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_status_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_compatible {"st,stm32h7-fmc"} +#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_IDX_0 "st,stm32h7-fmc" +#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32h7-fmc +#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_IDX_0_STRING_TOKEN st_stm32h7_fmc +#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32H7_FMC +#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_memory_controller_52004000, compatible, 0) +#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_memory_controller_52004000, compatible, 0) +#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_memory_controller_52004000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_memory_controller_52004000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_LEN 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_memory_controller_52004000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_wakeup_source 0 +#define DT_N_S_soc_S_memory_controller_52004000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_memory_controller_52004000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/memory-controller@52004000/sdram @@ -31552,6 +32399,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_FULL_NAME "sdram" +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_FULL_NAME_UNQUOTED sdram +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_FULL_NAME_TOKEN sdram +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_FULL_NAME_UPPER_TOKEN SDRAM /* Node parent (/soc/memory-controller@52004000) identifier: */ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_PARENT DT_N_S_soc_S_memory_controller_52004000 @@ -31577,16 +32427,16 @@ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0, __VA_ARGS__) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_ORD 228 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_ORD_STR_SORTABLE 00228 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_ORD 231 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_ORD_STR_SORTABLE 00231 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_REQUIRES_ORDS \ - 227, /* /soc/memory-controller@52004000 */ + 230, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_SUPPORTS_ORDS \ - 229, /* /soc/memory-controller@52004000/sdram/bank@0 */ + 232, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_EXISTS 1 @@ -31610,20 +32460,22 @@ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_wakeup_source 0 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_power_up_delay 100 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_power_up_delay_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_num_auto_refresh 8 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_num_auto_refresh_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_mode_register 544 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_mode_register_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_refresh_rate 603 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_refresh_rate_EXISTS 1 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status "okay" #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_IDX_0 "okay" #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram, status, 0) #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram, status, 0) #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram, status, 0, __VA_ARGS__) @@ -31631,11 +32483,11 @@ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_LEN 1 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_status_EXISTS 1 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_compatible {"st,stm32-fmc-sdram"} +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_compatible_IDX_0 "st,stm32-fmc-sdram" #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-fmc-sdram #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_compatible_IDX_0_STRING_TOKEN st_stm32_fmc_sdram #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_FMC_SDRAM -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram, compatible, 0) #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram, compatible, 0) #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram, compatible, 0, __VA_ARGS__) @@ -31644,14 +32496,10 @@ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_compatible_EXISTS 1 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_power_up_delay 100 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_power_up_delay_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_num_auto_refresh 8 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_num_auto_refresh_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_mode_register 544 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_mode_register_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_refresh_rate 603 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_refresh_rate_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_wakeup_source 0 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/memory-controller@52004000/sdram/bank@0 @@ -31667,6 +32515,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_FULL_NAME "bank@0" +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_FULL_NAME_UNQUOTED bank@0 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_FULL_NAME_TOKEN bank_0 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_FULL_NAME_UPPER_TOKEN BANK_0 /* Node parent (/soc/memory-controller@52004000/sdram) identifier: */ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_PARENT DT_N_S_soc_S_memory_controller_52004000_S_sdram @@ -31692,12 +32543,12 @@ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_ORD 229 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_ORD_STR_SORTABLE 00229 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_ORD 232 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_ORD_STR_SORTABLE 00232 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_REQUIRES_ORDS \ - 228, /* /soc/memory-controller@52004000/sdram */ + 231, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_SUPPORTS_ORDS /* nothing */ @@ -31708,7 +32559,7 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_REG_NUM 1 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_REG_IDX_0_VAL_ADDRESS 0 /* 0x0 */ +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_REG_IDX_0_VAL_ADDRESS 0 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_RANGES_NUM 0 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_FOREACH_RANGE(fn) #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_IRQ_NUM 0 @@ -31721,23 +32572,23 @@ /* Generic property macros: */ #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_reg 0 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_reg_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control {0 /* 0x0 */, 4 /* 0x4 */, 16 /* 0x10 */, 64 /* 0x40 */, 256 /* 0x100 */, 2048 /* 0x800 */, 4096 /* 0x1000 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_0 0 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control {0, 4, 16, 64, 256, 2048, 4096, 0} #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_1 4 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_0 0 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_2 16 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_1 4 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_3 64 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_2 16 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_4 256 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_3 64 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_5 2048 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_4 256 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_6 4096 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_5 2048 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_7 0 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_6 4096 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_7_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_IDX_7 0 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0, st_sdram_control, 0) \ fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0, st_sdram_control, 1) \ fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0, st_sdram_control, 2) \ @@ -31772,21 +32623,21 @@ fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0, st_sdram_control, 7, __VA_ARGS__) #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_LEN 8 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_control_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing {2 /* 0x2 */, 6 /* 0x6 */, 4 /* 0x4 */, 6 /* 0x6 */, 2 /* 0x2 */, 2 /* 0x2 */, 2 /* 0x2 */} -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_0 2 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing {2, 6, 4, 6, 2, 2, 2} #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_1 6 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_0 2 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_2 4 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_1 6 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_3 6 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_2 4 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_4 2 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_3 6 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_5 2 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_4 2 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_6 2 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_5 2 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_6_EXISTS 1 +#define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_IDX_6 2 #define DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0_P_st_sdram_timing_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0, st_sdram_timing, 0) \ fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0, st_sdram_timing, 1) \ fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0, st_sdram_timing, 2) \ @@ -31835,6 +32686,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_FULL_NAME "gpio@58021400" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_FULL_NAME_UNQUOTED gpio@58021400 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_FULL_NAME_TOKEN gpio_58021400 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_FULL_NAME_UPPER_TOKEN GPIO_58021400 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -31860,13 +32714,13 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_ORD 230 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_ORD_STR_SORTABLE 00230 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_ORD 233 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_ORD_STR_SORTABLE 00233 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_REQUIRES_ORDS \ - 9, /* /soc/rcc@58024400 */ \ - 10, /* /soc/pin-controller@58020000 */ + 9, \ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_SUPPORTS_ORDS /* nothing */ @@ -31879,8 +32733,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_REG_NUM 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_REG_IDX_0_VAL_ADDRESS 1476531200 /* 0x58021400 */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_REG_IDX_0_VAL_ADDRESS 1476531200 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_RANGES_NUM 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_IRQ_NUM 0 @@ -31896,31 +32750,11 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_gpio_controller 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_gpio_controller_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_ngpios 32 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_ngpios_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_wakeup_source 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible {"st,stm32-gpio"} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_IDX_0 "st,stm32-gpio" -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400, compatible, 0) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_LEN 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_reg {1476531200 /* 0x58021400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_reg_IDX_0 1476531200 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_reg {1476531200, 1024} #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_reg_IDX_0 1476531200 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_reg_IDX_1 1024 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_reg_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 @@ -31934,8 +32768,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_clocks_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_ngpios 16 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_ngpios_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_gpio_controller 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_gpio_controller_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible {"st,stm32-gpio"} +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_IDX_0 "st,stm32-gpio" +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_IDX_0_STRING_TOKEN st_stm32_gpio +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_GPIO +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400, compatible, 0) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_LEN 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_compatible_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_wakeup_source 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/quadspi_bk1_io0_pd11 @@ -31951,6 +32805,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_FULL_NAME "quadspi_bk1_io0_pd11" +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_FULL_NAME_UNQUOTED quadspi_bk1_io0_pd11 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_FULL_NAME_TOKEN quadspi_bk1_io0_pd11 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_FULL_NAME_UPPER_TOKEN QUADSPI_BK1_IO0_PD11 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -31976,16 +32833,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_ORD 231 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_ORD_STR_SORTABLE 00231 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_ORD 234 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_ORD_STR_SORTABLE 00234 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_SUPPORTS_ORDS \ - 237, /* /soc/quadspi@52005000 */ + 240, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_EXISTS 1 @@ -32003,20 +32860,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_pinmux 1897 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate "very-high-speed" @@ -32025,16 +32868,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/quadspi_bk1_io1_pd12 @@ -32050,6 +32905,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_FULL_NAME "quadspi_bk1_io1_pd12" +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_FULL_NAME_UNQUOTED quadspi_bk1_io1_pd12 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_FULL_NAME_TOKEN quadspi_bk1_io1_pd12 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_FULL_NAME_UPPER_TOKEN QUADSPI_BK1_IO1_PD12 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -32075,16 +32933,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_ORD 232 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_ORD_STR_SORTABLE 00232 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_ORD 235 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_ORD_STR_SORTABLE 00235 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_SUPPORTS_ORDS \ - 237, /* /soc/quadspi@52005000 */ + 240, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_EXISTS 1 @@ -32102,20 +32960,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_pinmux 1929 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate "very-high-speed" @@ -32124,16 +32968,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/quadspi_bk1_io2_pe2 @@ -32149,6 +33005,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_FULL_NAME "quadspi_bk1_io2_pe2" +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_FULL_NAME_UNQUOTED quadspi_bk1_io2_pe2 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_FULL_NAME_TOKEN quadspi_bk1_io2_pe2 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_FULL_NAME_UPPER_TOKEN QUADSPI_BK1_IO2_PE2 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -32174,16 +33033,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_ORD 233 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_ORD_STR_SORTABLE 00233 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_ORD 236 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_ORD_STR_SORTABLE 00236 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_SUPPORTS_ORDS \ - 237, /* /soc/quadspi@52005000 */ + 240, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_EXISTS 1 @@ -32201,20 +33060,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_pinmux 2121 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate "very-high-speed" @@ -32223,16 +33068,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/quadspi_bk1_io3_pf6 @@ -32248,6 +33105,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_FULL_NAME "quadspi_bk1_io3_pf6" +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_FULL_NAME_UNQUOTED quadspi_bk1_io3_pf6 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_FULL_NAME_TOKEN quadspi_bk1_io3_pf6 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_FULL_NAME_UPPER_TOKEN QUADSPI_BK1_IO3_PF6 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -32273,16 +33133,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_ORD 234 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_ORD_STR_SORTABLE 00234 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_ORD 237 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_ORD_STR_SORTABLE 00237 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_SUPPORTS_ORDS \ - 237, /* /soc/quadspi@52005000 */ + 240, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_EXISTS 1 @@ -32300,20 +33160,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_pinmux 2761 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate "very-high-speed" @@ -32322,16 +33168,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/quadspi_bk1_ncs_pg6 @@ -32347,6 +33205,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_FULL_NAME "quadspi_bk1_ncs_pg6" +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_FULL_NAME_UNQUOTED quadspi_bk1_ncs_pg6 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_FULL_NAME_TOKEN quadspi_bk1_ncs_pg6 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_FULL_NAME_UPPER_TOKEN QUADSPI_BK1_NCS_PG6 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -32372,16 +33233,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_ORD 235 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_ORD_STR_SORTABLE 00235 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_ORD 238 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_ORD_STR_SORTABLE 00238 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_SUPPORTS_ORDS \ - 237, /* /soc/quadspi@52005000 */ + 240, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_EXISTS 1 @@ -32399,20 +33260,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_pinmux 3274 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate "very-high-speed" @@ -32421,16 +33268,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/quadspi_clk_pf10 @@ -32446,6 +33305,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_FULL_NAME "quadspi_clk_pf10" +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_FULL_NAME_UNQUOTED quadspi_clk_pf10 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_FULL_NAME_TOKEN quadspi_clk_pf10 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_FULL_NAME_UPPER_TOKEN QUADSPI_CLK_PF10 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -32471,16 +33333,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_ORD 236 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_ORD_STR_SORTABLE 00236 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_ORD 239 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_ORD_STR_SORTABLE 00239 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_SUPPORTS_ORDS \ - 237, /* /soc/quadspi@52005000 */ + 240, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_EXISTS 1 @@ -32498,20 +33360,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_pinmux 2889 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate "very-high-speed" @@ -32520,16 +33368,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate_STRING_UPPER_TOKEN VERY_HIGH_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate_IDX_0 "very-high-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate_ENUM_IDX 3 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate_ENUM_VAL_very_high_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate_ENUM_TOKEN very_high_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate_ENUM_UPPER_TOKEN VERY_HIGH_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate_IDX_0_ENUM_VAL_very_high_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10_P_output_high_EXISTS 1 /* * Devicetree node: /soc/quadspi@52005000 @@ -32548,6 +33408,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_quadspi_52005000_FULL_NAME "quadspi@52005000" +#define DT_N_S_soc_S_quadspi_52005000_FULL_NAME_UNQUOTED quadspi@52005000 +#define DT_N_S_soc_S_quadspi_52005000_FULL_NAME_TOKEN quadspi_52005000 +#define DT_N_S_soc_S_quadspi_52005000_FULL_NAME_UPPER_TOKEN QUADSPI_52005000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_quadspi_52005000_PARENT DT_N_S_soc @@ -32573,24 +33436,24 @@ #define DT_N_S_soc_S_quadspi_52005000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000, __VA_ARGS__) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_quadspi_52005000_ORD 237 -#define DT_N_S_soc_S_quadspi_52005000_ORD_STR_SORTABLE 00237 +#define DT_N_S_soc_S_quadspi_52005000_ORD 240 +#define DT_N_S_soc_S_quadspi_52005000_ORD_STR_SORTABLE 00240 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_quadspi_52005000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 231, /* /soc/pin-controller@58020000/quadspi_bk1_io0_pd11 */ \ - 232, /* /soc/pin-controller@58020000/quadspi_bk1_io1_pd12 */ \ - 233, /* /soc/pin-controller@58020000/quadspi_bk1_io2_pe2 */ \ - 234, /* /soc/pin-controller@58020000/quadspi_bk1_io3_pf6 */ \ - 235, /* /soc/pin-controller@58020000/quadspi_bk1_ncs_pg6 */ \ - 236, /* /soc/pin-controller@58020000/quadspi_clk_pf10 */ + 4, \ + 5, \ + 9, \ + 234, \ + 235, \ + 236, \ + 237, \ + 238, \ + 239, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_quadspi_52005000_SUPPORTS_ORDS \ - 238, /* /soc/quadspi@52005000/qspi-nor-flash@90000000 */ + 241, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_quadspi_52005000_EXISTS 1 @@ -32600,8 +33463,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_quadspi_52005000_REG_NUM 1 #define DT_N_S_soc_S_quadspi_52005000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_REG_IDX_0_VAL_ADDRESS 1375752192 /* 0x52005000 */ -#define DT_N_S_soc_S_quadspi_52005000_REG_IDX_0_VAL_SIZE 52 /* 0x34 */ +#define DT_N_S_soc_S_quadspi_52005000_REG_IDX_0_VAL_ADDRESS 1375752192 +#define DT_N_S_soc_S_quadspi_52005000_REG_IDX_0_VAL_SIZE 52 #define DT_N_S_soc_S_quadspi_52005000_RANGES_NUM 0 #define DT_N_S_soc_S_quadspi_52005000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_quadspi_52005000_IRQ_NUM 1 @@ -32635,64 +33498,18 @@ #define DT_N_S_soc_S_quadspi_52005000_PINCTRL_NAME_default_IDX_5_PH DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6 /* Generic property macros: */ -#define DT_N_S_soc_S_quadspi_52005000_P_wakeup_source 0 -#define DT_N_S_soc_S_quadspi_52005000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_quadspi_52005000_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_P_status "okay" -#define DT_N_S_soc_S_quadspi_52005000_P_status_STRING_UNQUOTED okay -#define DT_N_S_soc_S_quadspi_52005000_P_status_STRING_TOKEN okay -#define DT_N_S_soc_S_quadspi_52005000_P_status_STRING_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_quadspi_52005000_P_status_IDX_0 "okay" -#define DT_N_S_soc_S_quadspi_52005000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_quadspi_52005000_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_quadspi_52005000_P_status_ENUM_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_quadspi_52005000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_quadspi_52005000, status, 0) -#define DT_N_S_soc_S_quadspi_52005000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_quadspi_52005000, status, 0) -#define DT_N_S_soc_S_quadspi_52005000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_quadspi_52005000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_quadspi_52005000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_quadspi_52005000, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_quadspi_52005000_P_status_LEN 1 -#define DT_N_S_soc_S_quadspi_52005000_P_status_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_P_compatible {"st,stm32-qspi"} -#define DT_N_S_soc_S_quadspi_52005000_P_compatible_IDX_0 "st,stm32-qspi" -#define DT_N_S_soc_S_quadspi_52005000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-qspi -#define DT_N_S_soc_S_quadspi_52005000_P_compatible_IDX_0_STRING_TOKEN st_stm32_qspi -#define DT_N_S_soc_S_quadspi_52005000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_QSPI -#define DT_N_S_soc_S_quadspi_52005000_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_quadspi_52005000, compatible, 0) -#define DT_N_S_soc_S_quadspi_52005000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_quadspi_52005000, compatible, 0) -#define DT_N_S_soc_S_quadspi_52005000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_quadspi_52005000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_quadspi_52005000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_quadspi_52005000, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_quadspi_52005000_P_compatible_LEN 1 -#define DT_N_S_soc_S_quadspi_52005000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_P_reg {1375752192 /* 0x52005000 */, 52 /* 0x34 */} -#define DT_N_S_soc_S_quadspi_52005000_P_reg_IDX_0 1375752192 +#define DT_N_S_soc_S_quadspi_52005000_P_reg {1375752192, 52} #define DT_N_S_soc_S_quadspi_52005000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_P_reg_IDX_1 52 +#define DT_N_S_soc_S_quadspi_52005000_P_reg_IDX_0 1375752192 #define DT_N_S_soc_S_quadspi_52005000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_P_reg_IDX_1 52 #define DT_N_S_soc_S_quadspi_52005000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_P_interrupts {92 /* 0x5c */, 0 /* 0x0 */} -#define DT_N_S_soc_S_quadspi_52005000_P_interrupts_IDX_0 92 +#define DT_N_S_soc_S_quadspi_52005000_P_interrupts {92, 0} #define DT_N_S_soc_S_quadspi_52005000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_quadspi_52005000_P_interrupts_IDX_0 92 #define DT_N_S_soc_S_quadspi_52005000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_quadspi_52005000_P_interrupts_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_quadspi_52005000_P_clocks_IDX_0_VAL_bus 212 -#define DT_N_S_soc_S_quadspi_52005000_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_P_clocks_IDX_0_VAL_bits 16384 -#define DT_N_S_soc_S_quadspi_52005000_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_quadspi_52005000, clocks, 0) -#define DT_N_S_soc_S_quadspi_52005000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_quadspi_52005000, clocks, 0) -#define DT_N_S_soc_S_quadspi_52005000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_quadspi_52005000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_quadspi_52005000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_quadspi_52005000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_quadspi_52005000_P_clocks_LEN 1 -#define DT_N_S_soc_S_quadspi_52005000_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_quadspi_52005000_P_zephyr_deferred_init_EXISTS 1 #define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10 #define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10 #define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_0_IDX_0_EXISTS 1 @@ -32738,11 +33555,11 @@ #define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_0_LEN 6 #define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_0_EXISTS 1 #define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_names_IDX_0 "default" #define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_names_IDX_0_STRING_UNQUOTED default #define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_names_IDX_0_STRING_TOKEN default #define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_quadspi_52005000, pinctrl_names, 0) #define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_quadspi_52005000, pinctrl_names, 0) #define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_quadspi_52005000, pinctrl_names, 0, __VA_ARGS__) @@ -32751,6 +33568,50 @@ #define DT_N_S_soc_S_quadspi_52005000_P_pinctrl_names_EXISTS 1 #define DT_N_S_soc_S_quadspi_52005000_P_dual_flash 0 #define DT_N_S_soc_S_quadspi_52005000_P_dual_flash_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_P_status "okay" +#define DT_N_S_soc_S_quadspi_52005000_P_status_STRING_UNQUOTED okay +#define DT_N_S_soc_S_quadspi_52005000_P_status_STRING_TOKEN okay +#define DT_N_S_soc_S_quadspi_52005000_P_status_STRING_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_quadspi_52005000_P_status_IDX_0 "okay" +#define DT_N_S_soc_S_quadspi_52005000_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_quadspi_52005000_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_quadspi_52005000, status, 0) +#define DT_N_S_soc_S_quadspi_52005000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_quadspi_52005000, status, 0) +#define DT_N_S_soc_S_quadspi_52005000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_quadspi_52005000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_quadspi_52005000_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_quadspi_52005000, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_quadspi_52005000_P_status_LEN 1 +#define DT_N_S_soc_S_quadspi_52005000_P_status_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_P_compatible {"st,stm32-qspi"} +#define DT_N_S_soc_S_quadspi_52005000_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_P_compatible_IDX_0 "st,stm32-qspi" +#define DT_N_S_soc_S_quadspi_52005000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-qspi +#define DT_N_S_soc_S_quadspi_52005000_P_compatible_IDX_0_STRING_TOKEN st_stm32_qspi +#define DT_N_S_soc_S_quadspi_52005000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_QSPI +#define DT_N_S_soc_S_quadspi_52005000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_quadspi_52005000, compatible, 0) +#define DT_N_S_soc_S_quadspi_52005000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_quadspi_52005000, compatible, 0) +#define DT_N_S_soc_S_quadspi_52005000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_quadspi_52005000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_quadspi_52005000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_quadspi_52005000, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_quadspi_52005000_P_compatible_LEN 1 +#define DT_N_S_soc_S_quadspi_52005000_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_quadspi_52005000_P_clocks_IDX_0_VAL_bus 212 +#define DT_N_S_soc_S_quadspi_52005000_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_P_clocks_IDX_0_VAL_bits 16384 +#define DT_N_S_soc_S_quadspi_52005000_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_quadspi_52005000, clocks, 0) +#define DT_N_S_soc_S_quadspi_52005000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_quadspi_52005000, clocks, 0) +#define DT_N_S_soc_S_quadspi_52005000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_quadspi_52005000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_quadspi_52005000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_quadspi_52005000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_quadspi_52005000_P_clocks_LEN 1 +#define DT_N_S_soc_S_quadspi_52005000_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_quadspi_52005000_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_P_wakeup_source 0 +#define DT_N_S_soc_S_quadspi_52005000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_quadspi_52005000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/quadspi@52005000/qspi-nor-flash@90000000 @@ -32769,6 +33630,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_FULL_NAME "qspi-nor-flash@90000000" +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_FULL_NAME_UNQUOTED qspi-nor-flash@90000000 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_FULL_NAME_TOKEN qspi_nor_flash_90000000 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_FULL_NAME_UPPER_TOKEN QSPI_NOR_FLASH_90000000 /* Node parent (/soc/quadspi@52005000) identifier: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_PARENT DT_N_S_soc_S_quadspi_52005000 @@ -32794,16 +33658,16 @@ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions, __VA_ARGS__) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_ORD 238 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_ORD_STR_SORTABLE 00238 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_ORD 241 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_ORD_STR_SORTABLE 00241 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_REQUIRES_ORDS \ - 237, /* /soc/quadspi@52005000 */ + 240, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_SUPPORTS_ORDS \ - 239, /* /soc/quadspi@52005000/qspi-nor-flash@90000000/partitions */ + 242, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_EXISTS 1 @@ -32817,9 +33681,9 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_REG_NUM 2 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_REG_IDX_0_VAL_ADDRESS 2415919104 /* 0x90000000 */ +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_REG_IDX_0_VAL_ADDRESS 2415919104 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_REG_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_REG_IDX_1_VAL_ADDRESS 16777216 /* 0x1000000 */ +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_REG_IDX_1_VAL_ADDRESS 16777216 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_RANGES_NUM 0 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_IRQ_NUM 0 @@ -32835,20 +33699,28 @@ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_wakeup_source 0 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reg {2415919104, 16777216} +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reg_IDX_0 2415919104 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reg_IDX_1 16777216 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reg_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_qspi_max_frequency 72000000 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_qspi_max_frequency_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reset_cmd 0 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reset_cmd_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reset_cmd_wait 10 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reset_cmd_wait_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_requires_ulbpr 0 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_requires_ulbpr_EXISTS 1 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status "okay" #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_IDX_0 "okay" #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000, status, 0) #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000, status, 0) #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000, status, 0, __VA_ARGS__) @@ -32856,31 +33728,23 @@ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_LEN 1 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_status_EXISTS 1 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_compatible {"st,stm32-qspi-nor"} +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_compatible_IDX_0 "st,stm32-qspi-nor" #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-qspi-nor #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_compatible_IDX_0_STRING_TOKEN st_stm32_qspi_nor #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_QSPI_NOR -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000, compatible, 0) #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000, compatible, 0) #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_compatible_LEN 1 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reg {2415919104 /* 0x90000000 */, 16777216 /* 0x1000000 */} -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reg_IDX_0 2415919104 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reg_IDX_1 16777216 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reg_EXISTS 1 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_qspi_max_frequency 72000000 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_qspi_max_frequency_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reset_cmd 0 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reset_cmd_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reset_cmd_wait 10 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_reset_cmd_wait_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_wakeup_source 0 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/quadspi@52005000/qspi-nor-flash@90000000/partitions @@ -32899,6 +33763,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_FULL_NAME "partitions" +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_FULL_NAME_UNQUOTED partitions +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_FULL_NAME_TOKEN partitions +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_FULL_NAME_UPPER_TOKEN PARTITIONS /* Node parent (/soc/quadspi@52005000/qspi-nor-flash@90000000) identifier: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_PARENT DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000 @@ -32924,17 +33791,17 @@ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0, __VA_ARGS__) DT_DEBRACKET_INTERNAL sep fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000, __VA_ARGS__) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_ORD 239 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_ORD_STR_SORTABLE 00239 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_ORD 242 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_ORD_STR_SORTABLE 00242 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_REQUIRES_ORDS \ - 238, /* /soc/quadspi@52005000/qspi-nor-flash@90000000 */ + 241, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_SUPPORTS_ORDS \ - 240, /* /soc/quadspi@52005000/qspi-nor-flash@90000000/partitions/partition@0 */ \ - 241, /* /soc/quadspi@52005000/qspi-nor-flash@90000000/partitions/partition@100000 */ + 243, \ + 244, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_EXISTS 1 @@ -32968,6 +33835,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_FULL_NAME "partition@0" +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_FULL_NAME_UNQUOTED partition@0 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_FULL_NAME_TOKEN partition_0 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_FULL_NAME_UPPER_TOKEN PARTITION_0 /* Node parent (/soc/quadspi@52005000/qspi-nor-flash@90000000/partitions) identifier: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_PARENT DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions @@ -32993,12 +33863,12 @@ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_ORD 240 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_ORD_STR_SORTABLE 00240 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_ORD 243 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_ORD_STR_SORTABLE 00243 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_REQUIRES_ORDS \ - 239, /* /soc/quadspi@52005000/qspi-nor-flash@90000000/partitions */ + 242, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_SUPPORTS_ORDS /* nothing */ @@ -33010,8 +33880,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_REG_NUM 1 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_REG_IDX_0_VAL_ADDRESS 0 /* 0x0 */ -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_REG_IDX_0_VAL_SIZE 1048576 /* 0x100000 */ +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_REG_IDX_0_VAL_ADDRESS 0 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_REG_IDX_0_VAL_SIZE 1048576 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_RANGES_NUM 0 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_FOREACH_RANGE(fn) #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_IRQ_NUM 0 @@ -33039,11 +33909,11 @@ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_P_label_EXISTS 1 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_P_read_only 0 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_P_read_only_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_P_reg {0 /* 0x0 */, 1048576 /* 0x100000 */} -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_P_reg_IDX_0 0 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_P_reg {0, 1048576} #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_P_reg_IDX_1 1048576 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_P_reg_IDX_0 0 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_P_reg_IDX_1 1048576 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0_P_reg_EXISTS 1 /* @@ -33060,6 +33930,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_FULL_NAME "partition@100000" +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_FULL_NAME_UNQUOTED partition@100000 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_FULL_NAME_TOKEN partition_100000 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_FULL_NAME_UPPER_TOKEN PARTITION_100000 /* Node parent (/soc/quadspi@52005000/qspi-nor-flash@90000000/partitions) identifier: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_PARENT DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions @@ -33085,12 +33958,12 @@ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_ORD 241 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_ORD_STR_SORTABLE 00241 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_ORD 244 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_ORD_STR_SORTABLE 00244 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_REQUIRES_ORDS \ - 239, /* /soc/quadspi@52005000/qspi-nor-flash@90000000/partitions */ + 242, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_SUPPORTS_ORDS /* nothing */ @@ -33102,8 +33975,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_REG_NUM 1 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_REG_IDX_0_VAL_ADDRESS 1048576 /* 0x100000 */ -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_REG_IDX_0_VAL_SIZE 15728640 /* 0xf00000 */ +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_REG_IDX_0_VAL_ADDRESS 1048576 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_REG_IDX_0_VAL_SIZE 15728640 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_RANGES_NUM 0 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_IRQ_NUM 0 @@ -33131,11 +34004,11 @@ #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_P_label_EXISTS 1 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_P_read_only 0 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_P_read_only_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_P_reg {1048576 /* 0x100000 */, 15728640 /* 0xf00000 */} -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_P_reg_IDX_0 1048576 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_P_reg {1048576, 15728640} #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_P_reg_IDX_1 15728640 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_P_reg_IDX_0 1048576 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_P_reg_IDX_1 15728640 #define DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000_P_reg_EXISTS 1 /* @@ -33155,6 +34028,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_rtc_58004000_FULL_NAME "rtc@58004000" +#define DT_N_S_soc_S_rtc_58004000_FULL_NAME_UNQUOTED rtc@58004000 +#define DT_N_S_soc_S_rtc_58004000_FULL_NAME_TOKEN rtc_58004000 +#define DT_N_S_soc_S_rtc_58004000_FULL_NAME_UPPER_TOKEN RTC_58004000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_rtc_58004000_PARENT DT_N_S_soc @@ -33180,18 +34056,18 @@ #define DT_N_S_soc_S_rtc_58004000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_rtc_58004000_ORD 242 -#define DT_N_S_soc_S_rtc_58004000_ORD_STR_SORTABLE 00242 +#define DT_N_S_soc_S_rtc_58004000_ORD 245 +#define DT_N_S_soc_S_rtc_58004000_ORD_STR_SORTABLE 00245 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_rtc_58004000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ + 4, \ + 5, \ + 9, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_rtc_58004000_SUPPORTS_ORDS \ - 243, /* /soc/rtc@58004000/backup_regs */ + 246, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_rtc_58004000_EXISTS 1 @@ -33201,8 +34077,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_rtc_58004000_REG_NUM 1 #define DT_N_S_soc_S_rtc_58004000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_REG_IDX_0_VAL_ADDRESS 1476411392 /* 0x58004000 */ -#define DT_N_S_soc_S_rtc_58004000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_rtc_58004000_REG_IDX_0_VAL_ADDRESS 1476411392 +#define DT_N_S_soc_S_rtc_58004000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_rtc_58004000_RANGES_NUM 0 #define DT_N_S_soc_S_rtc_58004000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_rtc_58004000_IRQ_NUM 1 @@ -33225,20 +34101,32 @@ #define DT_N_S_soc_S_rtc_58004000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_rtc_58004000_P_wakeup_source 0 -#define DT_N_S_soc_S_rtc_58004000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_rtc_58004000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_rtc_58004000_P_reg {1476411392, 1024} +#define DT_N_S_soc_S_rtc_58004000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_rtc_58004000_P_reg_IDX_0 1476411392 +#define DT_N_S_soc_S_rtc_58004000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_rtc_58004000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_rtc_58004000_P_reg_EXISTS 1 +#define DT_N_S_soc_S_rtc_58004000_P_alarms_count 2 +#define DT_N_S_soc_S_rtc_58004000_P_alarms_count_EXISTS 1 +#define DT_N_S_soc_S_rtc_58004000_P_alrm_exti_line 17 +#define DT_N_S_soc_S_rtc_58004000_P_alrm_exti_line_EXISTS 1 +#define DT_N_S_soc_S_rtc_58004000_P_interrupts {41, 0} +#define DT_N_S_soc_S_rtc_58004000_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_rtc_58004000_P_interrupts_IDX_0 41 +#define DT_N_S_soc_S_rtc_58004000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_rtc_58004000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_rtc_58004000_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_rtc_58004000_P_prescaler 32768 +#define DT_N_S_soc_S_rtc_58004000_P_prescaler_EXISTS 1 #define DT_N_S_soc_S_rtc_58004000_P_status "disabled" #define DT_N_S_soc_S_rtc_58004000_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_rtc_58004000_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_rtc_58004000_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_rtc_58004000_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_rtc_58004000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_rtc_58004000_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_rtc_58004000_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_rtc_58004000_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_rtc_58004000_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_rtc_58004000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_rtc_58004000, status, 0) #define DT_N_S_soc_S_rtc_58004000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_rtc_58004000, status, 0) #define DT_N_S_soc_S_rtc_58004000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_rtc_58004000, status, 0, __VA_ARGS__) @@ -33246,29 +34134,17 @@ #define DT_N_S_soc_S_rtc_58004000_P_status_LEN 1 #define DT_N_S_soc_S_rtc_58004000_P_status_EXISTS 1 #define DT_N_S_soc_S_rtc_58004000_P_compatible {"st,stm32-rtc"} +#define DT_N_S_soc_S_rtc_58004000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_rtc_58004000_P_compatible_IDX_0 "st,stm32-rtc" #define DT_N_S_soc_S_rtc_58004000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-rtc #define DT_N_S_soc_S_rtc_58004000_P_compatible_IDX_0_STRING_TOKEN st_stm32_rtc #define DT_N_S_soc_S_rtc_58004000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_RTC -#define DT_N_S_soc_S_rtc_58004000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_rtc_58004000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_rtc_58004000, compatible, 0) #define DT_N_S_soc_S_rtc_58004000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_rtc_58004000, compatible, 0) #define DT_N_S_soc_S_rtc_58004000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_rtc_58004000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_rtc_58004000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_rtc_58004000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_rtc_58004000_P_compatible_LEN 1 #define DT_N_S_soc_S_rtc_58004000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_P_reg {1476411392 /* 0x58004000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_rtc_58004000_P_reg_IDX_0 1476411392 -#define DT_N_S_soc_S_rtc_58004000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_rtc_58004000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_P_interrupts {41 /* 0x29 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_rtc_58004000_P_interrupts_IDX_0 41 -#define DT_N_S_soc_S_rtc_58004000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_rtc_58004000_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_rtc_58004000_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_rtc_58004000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_rtc_58004000_P_clocks_IDX_0_VAL_bus 244 @@ -33283,12 +34159,10 @@ #define DT_N_S_soc_S_rtc_58004000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_rtc_58004000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_rtc_58004000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_P_prescaler 32768 -#define DT_N_S_soc_S_rtc_58004000_P_prescaler_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_P_alarms_count 2 -#define DT_N_S_soc_S_rtc_58004000_P_alarms_count_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_P_alrm_exti_line 17 -#define DT_N_S_soc_S_rtc_58004000_P_alrm_exti_line_EXISTS 1 +#define DT_N_S_soc_S_rtc_58004000_P_wakeup_source 0 +#define DT_N_S_soc_S_rtc_58004000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_rtc_58004000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_rtc_58004000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/rtc@58004000/backup_regs @@ -33307,6 +34181,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_FULL_NAME "backup_regs" +#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_FULL_NAME_UNQUOTED backup_regs +#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_FULL_NAME_TOKEN backup_regs +#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_FULL_NAME_UPPER_TOKEN BACKUP_REGS /* Node parent (/soc/rtc@58004000) identifier: */ #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_PARENT DT_N_S_soc_S_rtc_58004000 @@ -33332,12 +34209,12 @@ #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_ORD 243 -#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_ORD_STR_SORTABLE 00243 +#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_ORD 246 +#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_ORD_STR_SORTABLE 00246 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_REQUIRES_ORDS \ - 242, /* /soc/rtc@58004000 */ + 245, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_SUPPORTS_ORDS /* nothing */ @@ -33364,20 +34241,16 @@ #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_wakeup_source 0 -#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_st_backup_regs 32 +#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_st_backup_regs_EXISTS 1 #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status "disabled" #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_rtc_58004000_S_backup_regs, status, 0) #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_rtc_58004000_S_backup_regs, status, 0) #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_rtc_58004000_S_backup_regs, status, 0, __VA_ARGS__) @@ -33385,11 +34258,11 @@ #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_LEN 1 #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_status_EXISTS 1 #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_compatible {"st,stm32-bbram"} +#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_compatible_IDX_0 "st,stm32-bbram" #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-bbram #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_compatible_IDX_0_STRING_TOKEN st_stm32_bbram #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_BBRAM -#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_rtc_58004000_S_backup_regs, compatible, 0) #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_rtc_58004000_S_backup_regs, compatible, 0) #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_rtc_58004000_S_backup_regs, compatible, 0, __VA_ARGS__) @@ -33398,8 +34271,10 @@ #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_compatible_EXISTS 1 #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_st_backup_regs 32 -#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_st_backup_regs_EXISTS 1 +#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_wakeup_source 0 +#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_rtc_58004000_S_backup_regs_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/uart7_cts_pf9 @@ -33415,6 +34290,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_FULL_NAME "uart7_cts_pf9" +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_FULL_NAME_UNQUOTED uart7_cts_pf9 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_FULL_NAME_TOKEN uart7_cts_pf9 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_FULL_NAME_UPPER_TOKEN UART7_CTS_PF9 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -33440,16 +34318,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_ORD 244 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_ORD_STR_SORTABLE 00244 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_ORD 247 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_ORD_STR_SORTABLE 00247 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_SUPPORTS_ORDS \ - 248, /* /soc/serial@40007800 */ + 251, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_EXISTS 1 @@ -33467,20 +34345,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_drive_open_drain 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_pinmux 2855 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate "low-speed" @@ -33489,16 +34353,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_drive_open_drain 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/uart7_rts_pf8 @@ -33514,6 +34390,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_FULL_NAME "uart7_rts_pf8" +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_FULL_NAME_UNQUOTED uart7_rts_pf8 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_FULL_NAME_TOKEN uart7_rts_pf8 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_FULL_NAME_UPPER_TOKEN UART7_RTS_PF8 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -33539,16 +34418,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_ORD 245 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_ORD_STR_SORTABLE 00245 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_ORD 248 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_ORD_STR_SORTABLE 00248 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_SUPPORTS_ORDS \ - 248, /* /soc/serial@40007800 */ + 251, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_EXISTS 1 @@ -33566,20 +34445,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_drive_open_drain 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_pinmux 2823 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate "low-speed" @@ -33588,16 +34453,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_drive_open_drain 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/uart7_rx_pa8 @@ -33613,6 +34490,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_FULL_NAME "uart7_rx_pa8" +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_FULL_NAME_UNQUOTED uart7_rx_pa8 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_FULL_NAME_TOKEN uart7_rx_pa8 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_FULL_NAME_UPPER_TOKEN UART7_RX_PA8 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -33638,16 +34518,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_ORD 246 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_ORD_STR_SORTABLE 00246 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_ORD 249 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_ORD_STR_SORTABLE 00249 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_SUPPORTS_ORDS \ - 248, /* /soc/serial@40007800 */ + 251, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_EXISTS 1 @@ -33665,20 +34545,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_bias_pull_up 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_pinmux 267 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate "low-speed" @@ -33687,16 +34553,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_bias_pull_up 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8_P_output_high_EXISTS 1 /* * Devicetree node: /soc/pin-controller@58020000/uart7_tx_pf7 @@ -33712,6 +34590,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_FULL_NAME "uart7_tx_pf7" +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_FULL_NAME_UNQUOTED uart7_tx_pf7 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_FULL_NAME_TOKEN uart7_tx_pf7 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_FULL_NAME_UPPER_TOKEN UART7_TX_PF7 /* Node parent (/soc/pin-controller@58020000) identifier: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_PARENT DT_N_S_soc_S_pin_controller_58020000 @@ -33737,16 +34618,16 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_ORD 247 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_ORD_STR_SORTABLE 00247 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_ORD 250 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_ORD_STR_SORTABLE 00250 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_REQUIRES_ORDS \ - 10, /* /soc/pin-controller@58020000 */ + 10, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_SUPPORTS_ORDS \ - 248, /* /soc/serial@40007800 */ + 251, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_EXISTS 1 @@ -33764,20 +34645,6 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_bias_disable 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_bias_disable_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_bias_pull_up 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_bias_pull_up_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_bias_pull_down 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_bias_pull_down_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_drive_push_pull 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_drive_push_pull_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_drive_open_drain 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_drive_open_drain_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_output_low 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_output_low_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_output_high 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_output_high_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_pinmux 2791 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_pinmux_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate "low-speed" @@ -33786,16 +34653,28 @@ #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate_STRING_UPPER_TOKEN LOW_SPEED #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate_IDX_0 "low-speed" #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate_ENUM_IDX 0 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate_ENUM_VAL_low_speed_EXISTS 1 -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate_ENUM_TOKEN low_speed -#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate_ENUM_UPPER_TOKEN LOW_SPEED +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate_IDX_0_ENUM_IDX 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate_IDX_0_ENUM_VAL_low_speed_EXISTS 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7, slew_rate, 0) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7, slew_rate, 0, __VA_ARGS__) #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate_LEN 1 #define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_slew_rate_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_bias_disable 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_bias_disable_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_bias_pull_up 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_bias_pull_up_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_bias_pull_down 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_bias_pull_down_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_drive_push_pull 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_drive_push_pull_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_drive_open_drain 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_drive_open_drain_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_output_low 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_output_low_EXISTS 1 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_output_high 0 +#define DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7_P_output_high_EXISTS 1 /* * Devicetree node: /soc/serial@40007800 @@ -33814,6 +34693,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_serial_40007800_FULL_NAME "serial@40007800" +#define DT_N_S_soc_S_serial_40007800_FULL_NAME_UNQUOTED serial@40007800 +#define DT_N_S_soc_S_serial_40007800_FULL_NAME_TOKEN serial_40007800 +#define DT_N_S_soc_S_serial_40007800_FULL_NAME_UPPER_TOKEN SERIAL_40007800 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_serial_40007800_PARENT DT_N_S_soc @@ -33839,23 +34721,23 @@ #define DT_N_S_soc_S_serial_40007800_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, __VA_ARGS__) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_serial_40007800_ORD 248 -#define DT_N_S_soc_S_serial_40007800_ORD_STR_SORTABLE 00248 +#define DT_N_S_soc_S_serial_40007800_ORD 251 +#define DT_N_S_soc_S_serial_40007800_ORD_STR_SORTABLE 00251 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_serial_40007800_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ \ - 244, /* /soc/pin-controller@58020000/uart7_cts_pf9 */ \ - 245, /* /soc/pin-controller@58020000/uart7_rts_pf8 */ \ - 246, /* /soc/pin-controller@58020000/uart7_rx_pa8 */ \ - 247, /* /soc/pin-controller@58020000/uart7_tx_pf7 */ + 4, \ + 5, \ + 9, \ + 54, \ + 247, \ + 248, \ + 249, \ + 250, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_serial_40007800_SUPPORTS_ORDS \ - 249, /* /soc/serial@40007800/bt_hci_uart */ + 252, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_serial_40007800_EXISTS 1 @@ -33865,8 +34747,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_serial_40007800_REG_NUM 1 #define DT_N_S_soc_S_serial_40007800_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_REG_IDX_0_VAL_ADDRESS 1073772544 /* 0x40007800 */ -#define DT_N_S_soc_S_serial_40007800_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_serial_40007800_REG_IDX_0_VAL_ADDRESS 1073772544 +#define DT_N_S_soc_S_serial_40007800_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_serial_40007800_RANGES_NUM 0 #define DT_N_S_soc_S_serial_40007800_FOREACH_RANGE(fn) #define DT_N_S_soc_S_serial_40007800_IRQ_NUM 1 @@ -33898,50 +34780,12 @@ #define DT_N_S_soc_S_serial_40007800_PINCTRL_NAME_default_IDX_3_PH DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8 /* Generic property macros: */ -#define DT_N_S_soc_S_serial_40007800_P_wakeup_source 0 -#define DT_N_S_soc_S_serial_40007800_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_serial_40007800_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_status "okay" -#define DT_N_S_soc_S_serial_40007800_P_status_STRING_UNQUOTED okay -#define DT_N_S_soc_S_serial_40007800_P_status_STRING_TOKEN okay -#define DT_N_S_soc_S_serial_40007800_P_status_STRING_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_serial_40007800_P_status_IDX_0 "okay" -#define DT_N_S_soc_S_serial_40007800_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_serial_40007800_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_serial_40007800_P_status_ENUM_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_serial_40007800_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007800, status, 0) -#define DT_N_S_soc_S_serial_40007800_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007800, status, 0) -#define DT_N_S_soc_S_serial_40007800_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007800, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007800_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007800_P_status_LEN 1 -#define DT_N_S_soc_S_serial_40007800_P_status_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_compatible {"st,stm32-uart"} -#define DT_N_S_soc_S_serial_40007800_P_compatible_IDX_0 "st,stm32-uart" -#define DT_N_S_soc_S_serial_40007800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-uart -#define DT_N_S_soc_S_serial_40007800_P_compatible_IDX_0_STRING_TOKEN st_stm32_uart -#define DT_N_S_soc_S_serial_40007800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_UART -#define DT_N_S_soc_S_serial_40007800_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007800, compatible, 0) -#define DT_N_S_soc_S_serial_40007800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007800, compatible, 0) -#define DT_N_S_soc_S_serial_40007800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007800, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007800_P_compatible_LEN 1 -#define DT_N_S_soc_S_serial_40007800_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_reg {1073772544 /* 0x40007800 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_serial_40007800_P_reg_IDX_0 1073772544 +#define DT_N_S_soc_S_serial_40007800_P_reg {1073772544, 1024} #define DT_N_S_soc_S_serial_40007800_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_serial_40007800_P_reg_IDX_0 1073772544 #define DT_N_S_soc_S_serial_40007800_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_reg_IDX_1 1024 #define DT_N_S_soc_S_serial_40007800_P_reg_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_interrupts {82 /* 0x52 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_serial_40007800_P_interrupts_IDX_0 82 -#define DT_N_S_soc_S_serial_40007800_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_interrupts_IDX_1 0 -#define DT_N_S_soc_S_serial_40007800_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_serial_40007800_P_clocks_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40007800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 #define DT_N_S_soc_S_serial_40007800_P_clocks_IDX_0_VAL_bus 232 @@ -33954,12 +34798,26 @@ #define DT_N_S_soc_S_serial_40007800_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800, clocks, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40007800_P_clocks_LEN 1 #define DT_N_S_soc_S_serial_40007800_P_clocks_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_serial_40007800_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_current_speed 115200 -#define DT_N_S_soc_S_serial_40007800_P_current_speed_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_hw_flow_control 1 -#define DT_N_S_soc_S_serial_40007800_P_hw_flow_control_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_serial_40007800_P_resets_IDX_0_VAL_id 4638 +#define DT_N_S_soc_S_serial_40007800_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007800, resets, 0) +#define DT_N_S_soc_S_serial_40007800_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007800, resets, 0) +#define DT_N_S_soc_S_serial_40007800_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007800, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007800_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007800_P_resets_LEN 1 +#define DT_N_S_soc_S_serial_40007800_P_resets_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_interrupts {82, 0} +#define DT_N_S_soc_S_serial_40007800_P_interrupts_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_interrupts_IDX_0 82 +#define DT_N_S_soc_S_serial_40007800_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_serial_40007800_P_interrupts_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_single_wire 0 +#define DT_N_S_soc_S_serial_40007800_P_single_wire_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_tx_rx_swap 0 +#define DT_N_S_soc_S_serial_40007800_P_tx_rx_swap_EXISTS 1 #define DT_N_S_soc_S_serial_40007800_P_pinctrl_0_IDX_0 DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7 #define DT_N_S_soc_S_serial_40007800_P_pinctrl_0_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7 #define DT_N_S_soc_S_serial_40007800_P_pinctrl_0_IDX_0_EXISTS 1 @@ -33991,35 +34849,17 @@ #define DT_N_S_soc_S_serial_40007800_P_pinctrl_0_LEN 4 #define DT_N_S_soc_S_serial_40007800_P_pinctrl_0_EXISTS 1 #define DT_N_S_soc_S_serial_40007800_P_pinctrl_names {"default"} +#define DT_N_S_soc_S_serial_40007800_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40007800_P_pinctrl_names_IDX_0 "default" #define DT_N_S_soc_S_serial_40007800_P_pinctrl_names_IDX_0_STRING_UNQUOTED default #define DT_N_S_soc_S_serial_40007800_P_pinctrl_names_IDX_0_STRING_TOKEN default #define DT_N_S_soc_S_serial_40007800_P_pinctrl_names_IDX_0_STRING_UPPER_TOKEN DEFAULT -#define DT_N_S_soc_S_serial_40007800_P_pinctrl_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40007800_P_pinctrl_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007800, pinctrl_names, 0) #define DT_N_S_soc_S_serial_40007800_P_pinctrl_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007800, pinctrl_names, 0) #define DT_N_S_soc_S_serial_40007800_P_pinctrl_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007800, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40007800_P_pinctrl_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800, pinctrl_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40007800_P_pinctrl_names_LEN 1 #define DT_N_S_soc_S_serial_40007800_P_pinctrl_names_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_serial_40007800_P_resets_IDX_0_VAL_id 4638 -#define DT_N_S_soc_S_serial_40007800_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007800, resets, 0) -#define DT_N_S_soc_S_serial_40007800_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007800, resets, 0) -#define DT_N_S_soc_S_serial_40007800_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007800, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007800_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007800_P_resets_LEN 1 -#define DT_N_S_soc_S_serial_40007800_P_resets_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_tx_invert 0 -#define DT_N_S_soc_S_serial_40007800_P_tx_invert_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_rx_invert 0 -#define DT_N_S_soc_S_serial_40007800_P_rx_invert_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_single_wire 0 -#define DT_N_S_soc_S_serial_40007800_P_single_wire_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_P_tx_rx_swap 0 -#define DT_N_S_soc_S_serial_40007800_P_tx_rx_swap_EXISTS 1 #define DT_N_S_soc_S_serial_40007800_P_de_enable 0 #define DT_N_S_soc_S_serial_40007800_P_de_enable_EXISTS 1 #define DT_N_S_soc_S_serial_40007800_P_de_assert_time 0 @@ -34030,6 +34870,46 @@ #define DT_N_S_soc_S_serial_40007800_P_de_invert_EXISTS 1 #define DT_N_S_soc_S_serial_40007800_P_fifo_enable 0 #define DT_N_S_soc_S_serial_40007800_P_fifo_enable_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_current_speed 115200 +#define DT_N_S_soc_S_serial_40007800_P_current_speed_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_hw_flow_control 1 +#define DT_N_S_soc_S_serial_40007800_P_hw_flow_control_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_status "okay" +#define DT_N_S_soc_S_serial_40007800_P_status_STRING_UNQUOTED okay +#define DT_N_S_soc_S_serial_40007800_P_status_STRING_TOKEN okay +#define DT_N_S_soc_S_serial_40007800_P_status_STRING_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_serial_40007800_P_status_IDX_0 "okay" +#define DT_N_S_soc_S_serial_40007800_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_serial_40007800_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007800, status, 0) +#define DT_N_S_soc_S_serial_40007800_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007800, status, 0) +#define DT_N_S_soc_S_serial_40007800_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007800, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007800_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007800_P_status_LEN 1 +#define DT_N_S_soc_S_serial_40007800_P_status_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_compatible {"st,stm32-uart"} +#define DT_N_S_soc_S_serial_40007800_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_compatible_IDX_0 "st,stm32-uart" +#define DT_N_S_soc_S_serial_40007800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-uart +#define DT_N_S_soc_S_serial_40007800_P_compatible_IDX_0_STRING_TOKEN st_stm32_uart +#define DT_N_S_soc_S_serial_40007800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_UART +#define DT_N_S_soc_S_serial_40007800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007800, compatible, 0) +#define DT_N_S_soc_S_serial_40007800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007800, compatible, 0) +#define DT_N_S_soc_S_serial_40007800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007800, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007800_P_compatible_LEN 1 +#define DT_N_S_soc_S_serial_40007800_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_serial_40007800_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_wakeup_source 0 +#define DT_N_S_soc_S_serial_40007800_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_serial_40007800_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_tx_invert 0 +#define DT_N_S_soc_S_serial_40007800_P_tx_invert_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_P_rx_invert 0 +#define DT_N_S_soc_S_serial_40007800_P_rx_invert_EXISTS 1 /* * Devicetree node: /soc/serial@40007800/bt_hci_uart @@ -34048,6 +34928,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_FULL_NAME "bt_hci_uart" +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_FULL_NAME_UNQUOTED bt_hci_uart +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_FULL_NAME_TOKEN bt_hci_uart +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_FULL_NAME_UPPER_TOKEN BT_HCI_UART /* Node parent (/soc/serial@40007800) identifier: */ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_PARENT DT_N_S_soc_S_serial_40007800 @@ -34073,16 +34956,16 @@ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx, __VA_ARGS__) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_ORD 249 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_ORD_STR_SORTABLE 00249 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_ORD 252 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_ORD_STR_SORTABLE 00252 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_REQUIRES_ORDS \ - 248, /* /soc/serial@40007800 */ + 251, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_SUPPORTS_ORDS \ - 250, /* /soc/serial@40007800/bt_hci_uart/murata-1dx */ + 253, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_EXISTS 1 @@ -34110,40 +34993,6 @@ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_wakeup_source 0 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status "okay" -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_STRING_UNQUOTED okay -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_STRING_TOKEN okay -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_STRING_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_IDX_0 "okay" -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_ENUM_UPPER_TOKEN OKAY -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, status, 0) -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, status, 0) -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, status, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_LEN 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible {"zephyr,bt-hci-uart"} -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_IDX_0 "zephyr,bt-hci-uart" -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_IDX_0_STRING_UNQUOTED zephyr,bt-hci-uart -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_IDX_0_STRING_TOKEN zephyr_bt_hci_uart -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_IDX_0_STRING_UPPER_TOKEN ZEPHYR_BT_HCI_UART -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, compatible, 0) -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, compatible, 0) -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_LEN 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_zephyr_deferred_init_EXISTS 1 #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_name "H:4" #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_name_STRING_UNQUOTED H:4 #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_name_STRING_TOKEN H_4 @@ -34156,16 +35005,14 @@ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_name_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, bt_hci_name, 0, __VA_ARGS__) #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_name_LEN 1 #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_name_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus "BT_HCI_BUS_UART" -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_STRING_UNQUOTED BT_HCI_BUS_UART -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_STRING_TOKEN BT_HCI_BUS_UART -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_STRING_UPPER_TOKEN BT_HCI_BUS_UART -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_IDX_0 "BT_HCI_BUS_UART" +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus "uart" +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_STRING_UNQUOTED uart +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_STRING_TOKEN uart +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_STRING_UPPER_TOKEN UART +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_IDX_0 "uart" #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_ENUM_IDX 3 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_ENUM_VAL_BT_HCI_BUS_UART_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_ENUM_TOKEN BT_HCI_BUS_UART -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_ENUM_UPPER_TOKEN BT_HCI_BUS_UART +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_IDX_0_ENUM_IDX 3 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_IDX_0_ENUM_VAL_uart_EXISTS 1 #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, bt_hci_bus, 0) #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, bt_hci_bus, 0) #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, bt_hci_bus, 0, __VA_ARGS__) @@ -34174,6 +35021,38 @@ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_bus_EXISTS 1 #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_vs_ext 0 #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_bt_hci_vs_ext_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status "okay" +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_STRING_UNQUOTED okay +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_STRING_TOKEN okay +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_STRING_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_IDX_0 "okay" +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, status, 0) +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, status, 0) +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, status, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_LEN 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_status_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible {"zephyr,bt-hci-uart"} +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_IDX_0 "zephyr,bt-hci-uart" +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_IDX_0_STRING_UNQUOTED zephyr,bt-hci-uart +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_IDX_0_STRING_TOKEN zephyr_bt_hci_uart +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_IDX_0_STRING_UPPER_TOKEN ZEPHYR_BT_HCI_UART +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, compatible, 0) +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, compatible, 0) +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_LEN 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_wakeup_source 0 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/serial@40007800/bt_hci_uart/murata-1dx @@ -34192,6 +35071,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_FULL_NAME "murata-1dx" +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_FULL_NAME_UNQUOTED murata-1dx +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_FULL_NAME_TOKEN murata_1dx +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_FULL_NAME_UPPER_TOKEN MURATA_1DX /* Node parent (/soc/serial@40007800/bt_hci_uart) identifier: */ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_PARENT DT_N_S_soc_S_serial_40007800_S_bt_hci_uart @@ -34217,15 +35099,15 @@ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_ORD 250 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_ORD_STR_SORTABLE 00250 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_ORD 253 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_ORD_STR_SORTABLE 00253 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_REQUIRES_ORDS \ - 75, /* /soc/pin-controller@58020000/gpio@58020000 */ \ - 80, /* /soc/pin-controller@58020000/gpio@58021800 */ \ - 81, /* /soc/pin-controller@58020000/gpio@58021C00 */ \ - 249, /* /soc/serial@40007800/bt_hci_uart */ + 75, \ + 80, \ + 81, \ + 252, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_SUPPORTS_ORDS /* nothing */ @@ -34255,24 +35137,6 @@ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_wakeup_source 0 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_zephyr_pm_device_runtime_auto_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible {"infineon,cyw43xxx-bt-hci"} -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_IDX_0 "infineon,cyw43xxx-bt-hci" -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_IDX_0_STRING_UNQUOTED infineon,cyw43xxx-bt-hci -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_IDX_0_STRING_TOKEN infineon_cyw43xxx_bt_hci -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_IDX_0_STRING_UPPER_TOKEN INFINEON_CYW43XXX_BT_HCI -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx, compatible, 0) -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx, compatible, 0) -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx, compatible, 0, __VA_ARGS__) -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_LEN 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_zephyr_deferred_init 0 -#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_zephyr_deferred_init_EXISTS 1 #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_bt_reg_on_gpios_IDX_0_EXISTS 1 #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_bt_reg_on_gpios_IDX_0_PH DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000 #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_bt_reg_on_gpios_IDX_0_VAL_pin 10 @@ -34311,6 +35175,24 @@ #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_bt_host_wake_gpios_EXISTS 1 #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_fw_download_speed 115200 #define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_fw_download_speed_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible {"infineon,cyw43xxx-bt-hci"} +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_IDX_0 "infineon,cyw43xxx-bt-hci" +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_IDX_0_STRING_UNQUOTED infineon,cyw43xxx-bt-hci +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_IDX_0_STRING_TOKEN infineon_cyw43xxx_bt_hci +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_IDX_0_STRING_UPPER_TOKEN INFINEON_CYW43XXX_BT_HCI +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx, compatible, 0) +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx, compatible, 0) +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx, compatible, 0, __VA_ARGS__) +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_LEN 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_compatible_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_zephyr_deferred_init 0 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_wakeup_source 0 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40000000 @@ -34329,6 +35211,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40000000_FULL_NAME "timers@40000000" +#define DT_N_S_soc_S_timers_40000000_FULL_NAME_UNQUOTED timers@40000000 +#define DT_N_S_soc_S_timers_40000000_FULL_NAME_TOKEN timers_40000000 +#define DT_N_S_soc_S_timers_40000000_FULL_NAME_UPPER_TOKEN TIMERS_40000000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timers_40000000_PARENT DT_N_S_soc @@ -34354,20 +35239,20 @@ #define DT_N_S_soc_S_timers_40000000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40000000_ORD 251 -#define DT_N_S_soc_S_timers_40000000_ORD_STR_SORTABLE 00251 +#define DT_N_S_soc_S_timers_40000000_ORD 254 +#define DT_N_S_soc_S_timers_40000000_ORD_STR_SORTABLE 00254 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40000000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40000000_SUPPORTS_ORDS \ - 252, /* /soc/timers@40000000/counter */ \ - 253, /* /soc/timers@40000000/pwm */ + 255, \ + 256, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_timers_40000000_EXISTS 1 @@ -34377,8 +35262,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timers_40000000_REG_NUM 1 #define DT_N_S_soc_S_timers_40000000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_REG_IDX_0_VAL_ADDRESS 1073741824 /* 0x40000000 */ -#define DT_N_S_soc_S_timers_40000000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_timers_40000000_REG_IDX_0_VAL_ADDRESS 1073741824 +#define DT_N_S_soc_S_timers_40000000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_timers_40000000_RANGES_NUM 0 #define DT_N_S_soc_S_timers_40000000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timers_40000000_IRQ_NUM 1 @@ -34406,20 +35291,46 @@ #define DT_N_S_soc_S_timers_40000000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40000000_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40000000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_P_reg {1073741824, 1024} +#define DT_N_S_soc_S_timers_40000000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_P_reg_IDX_0 1073741824 +#define DT_N_S_soc_S_timers_40000000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_timers_40000000_P_reg_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_timers_40000000_P_clocks_IDX_0_VAL_bus 232 +#define DT_N_S_soc_S_timers_40000000_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_P_clocks_IDX_0_VAL_bits 1 +#define DT_N_S_soc_S_timers_40000000_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000000, clocks, 0) +#define DT_N_S_soc_S_timers_40000000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000000, clocks, 0) +#define DT_N_S_soc_S_timers_40000000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000000_P_clocks_LEN 1 +#define DT_N_S_soc_S_timers_40000000_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_timers_40000000_P_resets_IDX_0_VAL_id 4608 +#define DT_N_S_soc_S_timers_40000000_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000000, resets, 0) +#define DT_N_S_soc_S_timers_40000000_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000000, resets, 0) +#define DT_N_S_soc_S_timers_40000000_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000000, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000000_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000000, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000000_P_resets_LEN 1 +#define DT_N_S_soc_S_timers_40000000_P_resets_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_P_st_prescaler 0 +#define DT_N_S_soc_S_timers_40000000_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_P_st_countermode 0 +#define DT_N_S_soc_S_timers_40000000_P_st_countermode_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_P_status "disabled" #define DT_N_S_soc_S_timers_40000000_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40000000_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40000000_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40000000_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40000000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40000000_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40000000_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40000000_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40000000_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000000, status, 0) #define DT_N_S_soc_S_timers_40000000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000000, status, 0) #define DT_N_S_soc_S_timers_40000000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000000, status, 0, __VA_ARGS__) @@ -34427,69 +35338,41 @@ #define DT_N_S_soc_S_timers_40000000_P_status_LEN 1 #define DT_N_S_soc_S_timers_40000000_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_P_compatible {"st,stm32-timers"} +#define DT_N_S_soc_S_timers_40000000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_P_compatible_IDX_0 "st,stm32-timers" #define DT_N_S_soc_S_timers_40000000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-timers #define DT_N_S_soc_S_timers_40000000_P_compatible_IDX_0_STRING_TOKEN st_stm32_timers #define DT_N_S_soc_S_timers_40000000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_TIMERS -#define DT_N_S_soc_S_timers_40000000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000000, compatible, 0) #define DT_N_S_soc_S_timers_40000000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000000, compatible, 0) #define DT_N_S_soc_S_timers_40000000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000000_P_compatible_LEN 1 #define DT_N_S_soc_S_timers_40000000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_reg {1073741824 /* 0x40000000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_timers_40000000_P_reg_IDX_0 1073741824 -#define DT_N_S_soc_S_timers_40000000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_timers_40000000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_interrupts {28 /* 0x1c */, 0 /* 0x0 */} -#define DT_N_S_soc_S_timers_40000000_P_interrupts_IDX_0 28 +#define DT_N_S_soc_S_timers_40000000_P_interrupts {28, 0} #define DT_N_S_soc_S_timers_40000000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_timers_40000000_P_interrupts_IDX_0 28 #define DT_N_S_soc_S_timers_40000000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_timers_40000000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_P_interrupt_names {"global"} +#define DT_N_S_soc_S_timers_40000000_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_P_interrupt_names_IDX_0 "global" #define DT_N_S_soc_S_timers_40000000_P_interrupt_names_IDX_0_STRING_UNQUOTED global #define DT_N_S_soc_S_timers_40000000_P_interrupt_names_IDX_0_STRING_TOKEN global #define DT_N_S_soc_S_timers_40000000_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN GLOBAL -#define DT_N_S_soc_S_timers_40000000_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000000, interrupt_names, 0) #define DT_N_S_soc_S_timers_40000000_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000000, interrupt_names, 0) #define DT_N_S_soc_S_timers_40000000_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000000, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000000_P_interrupt_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000000, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000000_P_interrupt_names_LEN 1 #define DT_N_S_soc_S_timers_40000000_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_timers_40000000_P_clocks_IDX_0_VAL_bus 232 -#define DT_N_S_soc_S_timers_40000000_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_clocks_IDX_0_VAL_bits 1 -#define DT_N_S_soc_S_timers_40000000_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000000, clocks, 0) -#define DT_N_S_soc_S_timers_40000000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000000, clocks, 0) -#define DT_N_S_soc_S_timers_40000000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000000_P_clocks_LEN 1 -#define DT_N_S_soc_S_timers_40000000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40000000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_timers_40000000_P_resets_IDX_0_VAL_id 4608 -#define DT_N_S_soc_S_timers_40000000_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000000, resets, 0) -#define DT_N_S_soc_S_timers_40000000_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000000, resets, 0) -#define DT_N_S_soc_S_timers_40000000_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000000, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000000_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000000, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000000_P_resets_LEN 1 -#define DT_N_S_soc_S_timers_40000000_P_resets_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_st_prescaler 0 -#define DT_N_S_soc_S_timers_40000000_P_st_prescaler_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_P_st_countermode 0 -#define DT_N_S_soc_S_timers_40000000_P_st_countermode_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40000000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40000000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40000000/counter @@ -34508,6 +35391,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40000000_S_counter_FULL_NAME "counter" +#define DT_N_S_soc_S_timers_40000000_S_counter_FULL_NAME_UNQUOTED counter +#define DT_N_S_soc_S_timers_40000000_S_counter_FULL_NAME_TOKEN counter +#define DT_N_S_soc_S_timers_40000000_S_counter_FULL_NAME_UPPER_TOKEN COUNTER /* Node parent (/soc/timers@40000000) identifier: */ #define DT_N_S_soc_S_timers_40000000_S_counter_PARENT DT_N_S_soc_S_timers_40000000 @@ -34533,12 +35419,12 @@ #define DT_N_S_soc_S_timers_40000000_S_counter_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40000000_S_counter_ORD 252 -#define DT_N_S_soc_S_timers_40000000_S_counter_ORD_STR_SORTABLE 00252 +#define DT_N_S_soc_S_timers_40000000_S_counter_ORD 255 +#define DT_N_S_soc_S_timers_40000000_S_counter_ORD_STR_SORTABLE 00255 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40000000_S_counter_REQUIRES_ORDS \ - 251, /* /soc/timers@40000000 */ + 254, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40000000_S_counter_SUPPORTS_ORDS /* nothing */ @@ -34564,20 +35450,14 @@ #define DT_N_S_soc_S_timers_40000000_S_counter_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40000000_S_counter_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40000000_S_counter_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_S_counter_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40000000_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_S_counter_P_status "disabled" #define DT_N_S_soc_S_timers_40000000_S_counter_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40000000_S_counter_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40000000_S_counter_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40000000_S_counter_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40000000_S_counter_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_S_counter_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40000000_S_counter_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_S_counter_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40000000_S_counter_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40000000_S_counter_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40000000_S_counter_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_S_counter_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000000_S_counter, status, 0) #define DT_N_S_soc_S_timers_40000000_S_counter_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000000_S_counter, status, 0) #define DT_N_S_soc_S_timers_40000000_S_counter_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000000_S_counter, status, 0, __VA_ARGS__) @@ -34585,11 +35465,11 @@ #define DT_N_S_soc_S_timers_40000000_S_counter_P_status_LEN 1 #define DT_N_S_soc_S_timers_40000000_S_counter_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_S_counter_P_compatible {"st,stm32-counter"} +#define DT_N_S_soc_S_timers_40000000_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_S_counter_P_compatible_IDX_0 "st,stm32-counter" #define DT_N_S_soc_S_timers_40000000_S_counter_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-counter #define DT_N_S_soc_S_timers_40000000_S_counter_P_compatible_IDX_0_STRING_TOKEN st_stm32_counter #define DT_N_S_soc_S_timers_40000000_S_counter_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_COUNTER -#define DT_N_S_soc_S_timers_40000000_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_S_counter_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000000_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40000000_S_counter_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000000_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40000000_S_counter_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000000_S_counter, compatible, 0, __VA_ARGS__) @@ -34598,6 +35478,10 @@ #define DT_N_S_soc_S_timers_40000000_S_counter_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_S_counter_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40000000_S_counter_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_S_counter_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40000000_S_counter_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_S_counter_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40000000_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40000000/pwm @@ -34616,6 +35500,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40000000_S_pwm_FULL_NAME "pwm" +#define DT_N_S_soc_S_timers_40000000_S_pwm_FULL_NAME_UNQUOTED pwm +#define DT_N_S_soc_S_timers_40000000_S_pwm_FULL_NAME_TOKEN pwm +#define DT_N_S_soc_S_timers_40000000_S_pwm_FULL_NAME_UPPER_TOKEN PWM /* Node parent (/soc/timers@40000000) identifier: */ #define DT_N_S_soc_S_timers_40000000_S_pwm_PARENT DT_N_S_soc_S_timers_40000000 @@ -34641,12 +35528,12 @@ #define DT_N_S_soc_S_timers_40000000_S_pwm_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40000000_S_pwm_ORD 253 -#define DT_N_S_soc_S_timers_40000000_S_pwm_ORD_STR_SORTABLE 00253 +#define DT_N_S_soc_S_timers_40000000_S_pwm_ORD 256 +#define DT_N_S_soc_S_timers_40000000_S_pwm_ORD_STR_SORTABLE 00256 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40000000_S_pwm_REQUIRES_ORDS \ - 251, /* /soc/timers@40000000 */ + 254, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40000000_S_pwm_SUPPORTS_ORDS /* nothing */ @@ -34672,20 +35559,16 @@ #define DT_N_S_soc_S_timers_40000000_S_pwm_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40000000_S_pwm_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40000000_S_pwm_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_S_pwm_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40000000_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_S_pwm_P_four_channel_capture_support 0 +#define DT_N_S_soc_S_timers_40000000_S_pwm_P_four_channel_capture_support_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_S_pwm_P_status "disabled" #define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000000_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000000_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000000_S_pwm, status, 0, __VA_ARGS__) @@ -34693,11 +35576,11 @@ #define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_LEN 1 #define DT_N_S_soc_S_timers_40000000_S_pwm_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_S_pwm_P_compatible {"st,stm32-pwm"} +#define DT_N_S_soc_S_timers_40000000_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_S_pwm_P_compatible_IDX_0 "st,stm32-pwm" #define DT_N_S_soc_S_timers_40000000_S_pwm_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-pwm #define DT_N_S_soc_S_timers_40000000_S_pwm_P_compatible_IDX_0_STRING_TOKEN st_stm32_pwm #define DT_N_S_soc_S_timers_40000000_S_pwm_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_PWM -#define DT_N_S_soc_S_timers_40000000_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_S_pwm_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000000_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40000000_S_pwm_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000000_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40000000_S_pwm_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000000_S_pwm, compatible, 0, __VA_ARGS__) @@ -34706,8 +35589,10 @@ #define DT_N_S_soc_S_timers_40000000_S_pwm_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40000000_S_pwm_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40000000_S_pwm_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40000000_S_pwm_P_four_channel_capture_support 0 -#define DT_N_S_soc_S_timers_40000000_S_pwm_P_four_channel_capture_support_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_S_pwm_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40000000_S_pwm_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40000000_S_pwm_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40000000_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40000400 @@ -34726,6 +35611,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40000400_FULL_NAME "timers@40000400" +#define DT_N_S_soc_S_timers_40000400_FULL_NAME_UNQUOTED timers@40000400 +#define DT_N_S_soc_S_timers_40000400_FULL_NAME_TOKEN timers_40000400 +#define DT_N_S_soc_S_timers_40000400_FULL_NAME_UPPER_TOKEN TIMERS_40000400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timers_40000400_PARENT DT_N_S_soc @@ -34751,20 +35639,20 @@ #define DT_N_S_soc_S_timers_40000400_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40000400_ORD 254 -#define DT_N_S_soc_S_timers_40000400_ORD_STR_SORTABLE 00254 +#define DT_N_S_soc_S_timers_40000400_ORD 257 +#define DT_N_S_soc_S_timers_40000400_ORD_STR_SORTABLE 00257 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40000400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40000400_SUPPORTS_ORDS \ - 255, /* /soc/timers@40000400/counter */ \ - 256, /* /soc/timers@40000400/pwm */ + 258, \ + 259, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_timers_40000400_EXISTS 1 @@ -34774,8 +35662,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timers_40000400_REG_NUM 1 #define DT_N_S_soc_S_timers_40000400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_REG_IDX_0_VAL_ADDRESS 1073742848 /* 0x40000400 */ -#define DT_N_S_soc_S_timers_40000400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_timers_40000400_REG_IDX_0_VAL_ADDRESS 1073742848 +#define DT_N_S_soc_S_timers_40000400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_timers_40000400_RANGES_NUM 0 #define DT_N_S_soc_S_timers_40000400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timers_40000400_IRQ_NUM 1 @@ -34803,20 +35691,46 @@ #define DT_N_S_soc_S_timers_40000400_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40000400_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40000400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40000400_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_P_reg {1073742848, 1024} +#define DT_N_S_soc_S_timers_40000400_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_P_reg_IDX_0 1073742848 +#define DT_N_S_soc_S_timers_40000400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_timers_40000400_P_reg_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_timers_40000400_P_clocks_IDX_0_VAL_bus 232 +#define DT_N_S_soc_S_timers_40000400_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_P_clocks_IDX_0_VAL_bits 2 +#define DT_N_S_soc_S_timers_40000400_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000400, clocks, 0) +#define DT_N_S_soc_S_timers_40000400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000400, clocks, 0) +#define DT_N_S_soc_S_timers_40000400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000400, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000400, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000400_P_clocks_LEN 1 +#define DT_N_S_soc_S_timers_40000400_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_timers_40000400_P_resets_IDX_0_VAL_id 4609 +#define DT_N_S_soc_S_timers_40000400_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000400, resets, 0) +#define DT_N_S_soc_S_timers_40000400_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000400, resets, 0) +#define DT_N_S_soc_S_timers_40000400_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000400, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000400_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000400, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000400_P_resets_LEN 1 +#define DT_N_S_soc_S_timers_40000400_P_resets_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_P_st_prescaler 0 +#define DT_N_S_soc_S_timers_40000400_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_P_st_countermode 0 +#define DT_N_S_soc_S_timers_40000400_P_st_countermode_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_P_status "disabled" #define DT_N_S_soc_S_timers_40000400_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40000400_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40000400_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40000400_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40000400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40000400_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40000400_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40000400_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40000400_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000400, status, 0) #define DT_N_S_soc_S_timers_40000400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000400, status, 0) #define DT_N_S_soc_S_timers_40000400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000400, status, 0, __VA_ARGS__) @@ -34824,69 +35738,41 @@ #define DT_N_S_soc_S_timers_40000400_P_status_LEN 1 #define DT_N_S_soc_S_timers_40000400_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_P_compatible {"st,stm32-timers"} +#define DT_N_S_soc_S_timers_40000400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_P_compatible_IDX_0 "st,stm32-timers" #define DT_N_S_soc_S_timers_40000400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-timers #define DT_N_S_soc_S_timers_40000400_P_compatible_IDX_0_STRING_TOKEN st_stm32_timers #define DT_N_S_soc_S_timers_40000400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_TIMERS -#define DT_N_S_soc_S_timers_40000400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000400, compatible, 0) #define DT_N_S_soc_S_timers_40000400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000400, compatible, 0) #define DT_N_S_soc_S_timers_40000400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000400_P_compatible_LEN 1 #define DT_N_S_soc_S_timers_40000400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_reg {1073742848 /* 0x40000400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_timers_40000400_P_reg_IDX_0 1073742848 -#define DT_N_S_soc_S_timers_40000400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_timers_40000400_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_interrupts {29 /* 0x1d */, 0 /* 0x0 */} -#define DT_N_S_soc_S_timers_40000400_P_interrupts_IDX_0 29 +#define DT_N_S_soc_S_timers_40000400_P_interrupts {29, 0} #define DT_N_S_soc_S_timers_40000400_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_timers_40000400_P_interrupts_IDX_0 29 #define DT_N_S_soc_S_timers_40000400_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_timers_40000400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_P_interrupt_names {"global"} +#define DT_N_S_soc_S_timers_40000400_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_P_interrupt_names_IDX_0 "global" #define DT_N_S_soc_S_timers_40000400_P_interrupt_names_IDX_0_STRING_UNQUOTED global #define DT_N_S_soc_S_timers_40000400_P_interrupt_names_IDX_0_STRING_TOKEN global #define DT_N_S_soc_S_timers_40000400_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN GLOBAL -#define DT_N_S_soc_S_timers_40000400_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000400, interrupt_names, 0) #define DT_N_S_soc_S_timers_40000400_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000400, interrupt_names, 0) #define DT_N_S_soc_S_timers_40000400_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000400, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000400_P_interrupt_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000400, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000400_P_interrupt_names_LEN 1 #define DT_N_S_soc_S_timers_40000400_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_timers_40000400_P_clocks_IDX_0_VAL_bus 232 -#define DT_N_S_soc_S_timers_40000400_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_clocks_IDX_0_VAL_bits 2 -#define DT_N_S_soc_S_timers_40000400_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000400, clocks, 0) -#define DT_N_S_soc_S_timers_40000400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000400, clocks, 0) -#define DT_N_S_soc_S_timers_40000400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000400, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000400, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000400_P_clocks_LEN 1 -#define DT_N_S_soc_S_timers_40000400_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40000400_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_timers_40000400_P_resets_IDX_0_VAL_id 4609 -#define DT_N_S_soc_S_timers_40000400_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000400, resets, 0) -#define DT_N_S_soc_S_timers_40000400_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000400, resets, 0) -#define DT_N_S_soc_S_timers_40000400_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000400, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000400_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000400, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000400_P_resets_LEN 1 -#define DT_N_S_soc_S_timers_40000400_P_resets_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_st_prescaler 0 -#define DT_N_S_soc_S_timers_40000400_P_st_prescaler_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_P_st_countermode 0 -#define DT_N_S_soc_S_timers_40000400_P_st_countermode_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40000400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40000400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40000400/counter @@ -34905,6 +35791,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40000400_S_counter_FULL_NAME "counter" +#define DT_N_S_soc_S_timers_40000400_S_counter_FULL_NAME_UNQUOTED counter +#define DT_N_S_soc_S_timers_40000400_S_counter_FULL_NAME_TOKEN counter +#define DT_N_S_soc_S_timers_40000400_S_counter_FULL_NAME_UPPER_TOKEN COUNTER /* Node parent (/soc/timers@40000400) identifier: */ #define DT_N_S_soc_S_timers_40000400_S_counter_PARENT DT_N_S_soc_S_timers_40000400 @@ -34930,12 +35819,12 @@ #define DT_N_S_soc_S_timers_40000400_S_counter_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40000400_S_counter_ORD 255 -#define DT_N_S_soc_S_timers_40000400_S_counter_ORD_STR_SORTABLE 00255 +#define DT_N_S_soc_S_timers_40000400_S_counter_ORD 258 +#define DT_N_S_soc_S_timers_40000400_S_counter_ORD_STR_SORTABLE 00258 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40000400_S_counter_REQUIRES_ORDS \ - 254, /* /soc/timers@40000400 */ + 257, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40000400_S_counter_SUPPORTS_ORDS /* nothing */ @@ -34961,20 +35850,14 @@ #define DT_N_S_soc_S_timers_40000400_S_counter_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40000400_S_counter_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40000400_S_counter_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_S_counter_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40000400_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_S_counter_P_status "disabled" #define DT_N_S_soc_S_timers_40000400_S_counter_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40000400_S_counter_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40000400_S_counter_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40000400_S_counter_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40000400_S_counter_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_S_counter_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40000400_S_counter_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_S_counter_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40000400_S_counter_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40000400_S_counter_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40000400_S_counter_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_S_counter_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000400_S_counter, status, 0) #define DT_N_S_soc_S_timers_40000400_S_counter_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000400_S_counter, status, 0) #define DT_N_S_soc_S_timers_40000400_S_counter_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000400_S_counter, status, 0, __VA_ARGS__) @@ -34982,11 +35865,11 @@ #define DT_N_S_soc_S_timers_40000400_S_counter_P_status_LEN 1 #define DT_N_S_soc_S_timers_40000400_S_counter_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_S_counter_P_compatible {"st,stm32-counter"} +#define DT_N_S_soc_S_timers_40000400_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_S_counter_P_compatible_IDX_0 "st,stm32-counter" #define DT_N_S_soc_S_timers_40000400_S_counter_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-counter #define DT_N_S_soc_S_timers_40000400_S_counter_P_compatible_IDX_0_STRING_TOKEN st_stm32_counter #define DT_N_S_soc_S_timers_40000400_S_counter_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_COUNTER -#define DT_N_S_soc_S_timers_40000400_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_S_counter_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000400_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40000400_S_counter_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000400_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40000400_S_counter_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000400_S_counter, compatible, 0, __VA_ARGS__) @@ -34995,6 +35878,10 @@ #define DT_N_S_soc_S_timers_40000400_S_counter_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_S_counter_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40000400_S_counter_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_S_counter_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40000400_S_counter_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_S_counter_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40000400_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40000400/pwm @@ -35013,6 +35900,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40000400_S_pwm_FULL_NAME "pwm" +#define DT_N_S_soc_S_timers_40000400_S_pwm_FULL_NAME_UNQUOTED pwm +#define DT_N_S_soc_S_timers_40000400_S_pwm_FULL_NAME_TOKEN pwm +#define DT_N_S_soc_S_timers_40000400_S_pwm_FULL_NAME_UPPER_TOKEN PWM /* Node parent (/soc/timers@40000400) identifier: */ #define DT_N_S_soc_S_timers_40000400_S_pwm_PARENT DT_N_S_soc_S_timers_40000400 @@ -35038,12 +35928,12 @@ #define DT_N_S_soc_S_timers_40000400_S_pwm_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40000400_S_pwm_ORD 256 -#define DT_N_S_soc_S_timers_40000400_S_pwm_ORD_STR_SORTABLE 00256 +#define DT_N_S_soc_S_timers_40000400_S_pwm_ORD 259 +#define DT_N_S_soc_S_timers_40000400_S_pwm_ORD_STR_SORTABLE 00259 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40000400_S_pwm_REQUIRES_ORDS \ - 254, /* /soc/timers@40000400 */ + 257, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40000400_S_pwm_SUPPORTS_ORDS /* nothing */ @@ -35069,20 +35959,16 @@ #define DT_N_S_soc_S_timers_40000400_S_pwm_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40000400_S_pwm_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40000400_S_pwm_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_S_pwm_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40000400_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_S_pwm_P_four_channel_capture_support 0 +#define DT_N_S_soc_S_timers_40000400_S_pwm_P_four_channel_capture_support_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_S_pwm_P_status "disabled" #define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000400_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000400_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000400_S_pwm, status, 0, __VA_ARGS__) @@ -35090,11 +35976,11 @@ #define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_LEN 1 #define DT_N_S_soc_S_timers_40000400_S_pwm_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_S_pwm_P_compatible {"st,stm32-pwm"} +#define DT_N_S_soc_S_timers_40000400_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_S_pwm_P_compatible_IDX_0 "st,stm32-pwm" #define DT_N_S_soc_S_timers_40000400_S_pwm_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-pwm #define DT_N_S_soc_S_timers_40000400_S_pwm_P_compatible_IDX_0_STRING_TOKEN st_stm32_pwm #define DT_N_S_soc_S_timers_40000400_S_pwm_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_PWM -#define DT_N_S_soc_S_timers_40000400_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_S_pwm_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000400_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40000400_S_pwm_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000400_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40000400_S_pwm_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000400_S_pwm, compatible, 0, __VA_ARGS__) @@ -35103,8 +35989,10 @@ #define DT_N_S_soc_S_timers_40000400_S_pwm_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40000400_S_pwm_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40000400_S_pwm_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40000400_S_pwm_P_four_channel_capture_support 0 -#define DT_N_S_soc_S_timers_40000400_S_pwm_P_four_channel_capture_support_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_S_pwm_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40000400_S_pwm_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40000400_S_pwm_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40000400_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40000800 @@ -35123,6 +36011,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40000800_FULL_NAME "timers@40000800" +#define DT_N_S_soc_S_timers_40000800_FULL_NAME_UNQUOTED timers@40000800 +#define DT_N_S_soc_S_timers_40000800_FULL_NAME_TOKEN timers_40000800 +#define DT_N_S_soc_S_timers_40000800_FULL_NAME_UPPER_TOKEN TIMERS_40000800 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timers_40000800_PARENT DT_N_S_soc @@ -35148,20 +36039,20 @@ #define DT_N_S_soc_S_timers_40000800_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40000800_ORD 257 -#define DT_N_S_soc_S_timers_40000800_ORD_STR_SORTABLE 00257 +#define DT_N_S_soc_S_timers_40000800_ORD 260 +#define DT_N_S_soc_S_timers_40000800_ORD_STR_SORTABLE 00260 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40000800_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40000800_SUPPORTS_ORDS \ - 258, /* /soc/timers@40000800/counter */ \ - 259, /* /soc/timers@40000800/pwm */ + 261, \ + 262, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_timers_40000800_EXISTS 1 @@ -35171,8 +36062,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timers_40000800_REG_NUM 1 #define DT_N_S_soc_S_timers_40000800_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_REG_IDX_0_VAL_ADDRESS 1073743872 /* 0x40000800 */ -#define DT_N_S_soc_S_timers_40000800_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_timers_40000800_REG_IDX_0_VAL_ADDRESS 1073743872 +#define DT_N_S_soc_S_timers_40000800_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_timers_40000800_RANGES_NUM 0 #define DT_N_S_soc_S_timers_40000800_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timers_40000800_IRQ_NUM 1 @@ -35200,20 +36091,46 @@ #define DT_N_S_soc_S_timers_40000800_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40000800_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40000800_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40000800_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_P_reg {1073743872, 1024} +#define DT_N_S_soc_S_timers_40000800_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_P_reg_IDX_0 1073743872 +#define DT_N_S_soc_S_timers_40000800_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_timers_40000800_P_reg_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_timers_40000800_P_clocks_IDX_0_VAL_bus 232 +#define DT_N_S_soc_S_timers_40000800_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_P_clocks_IDX_0_VAL_bits 4 +#define DT_N_S_soc_S_timers_40000800_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000800, clocks, 0) +#define DT_N_S_soc_S_timers_40000800_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000800, clocks, 0) +#define DT_N_S_soc_S_timers_40000800_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000800, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000800_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000800, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000800_P_clocks_LEN 1 +#define DT_N_S_soc_S_timers_40000800_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_timers_40000800_P_resets_IDX_0_VAL_id 4610 +#define DT_N_S_soc_S_timers_40000800_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000800, resets, 0) +#define DT_N_S_soc_S_timers_40000800_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000800, resets, 0) +#define DT_N_S_soc_S_timers_40000800_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000800, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000800_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000800, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000800_P_resets_LEN 1 +#define DT_N_S_soc_S_timers_40000800_P_resets_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_P_st_prescaler 0 +#define DT_N_S_soc_S_timers_40000800_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_P_st_countermode 0 +#define DT_N_S_soc_S_timers_40000800_P_st_countermode_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_P_status "disabled" #define DT_N_S_soc_S_timers_40000800_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40000800_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40000800_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40000800_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40000800_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40000800_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40000800_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40000800_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40000800_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000800, status, 0) #define DT_N_S_soc_S_timers_40000800_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000800, status, 0) #define DT_N_S_soc_S_timers_40000800_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000800, status, 0, __VA_ARGS__) @@ -35221,69 +36138,41 @@ #define DT_N_S_soc_S_timers_40000800_P_status_LEN 1 #define DT_N_S_soc_S_timers_40000800_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_P_compatible {"st,stm32-timers"} +#define DT_N_S_soc_S_timers_40000800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_P_compatible_IDX_0 "st,stm32-timers" #define DT_N_S_soc_S_timers_40000800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-timers #define DT_N_S_soc_S_timers_40000800_P_compatible_IDX_0_STRING_TOKEN st_stm32_timers #define DT_N_S_soc_S_timers_40000800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_TIMERS -#define DT_N_S_soc_S_timers_40000800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000800, compatible, 0) #define DT_N_S_soc_S_timers_40000800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000800, compatible, 0) #define DT_N_S_soc_S_timers_40000800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000800_P_compatible_LEN 1 #define DT_N_S_soc_S_timers_40000800_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_reg {1073743872 /* 0x40000800 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_timers_40000800_P_reg_IDX_0 1073743872 -#define DT_N_S_soc_S_timers_40000800_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_timers_40000800_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_reg_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_interrupts {30 /* 0x1e */, 0 /* 0x0 */} -#define DT_N_S_soc_S_timers_40000800_P_interrupts_IDX_0 30 +#define DT_N_S_soc_S_timers_40000800_P_interrupts {30, 0} #define DT_N_S_soc_S_timers_40000800_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_timers_40000800_P_interrupts_IDX_0 30 #define DT_N_S_soc_S_timers_40000800_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_timers_40000800_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_P_interrupt_names {"global"} +#define DT_N_S_soc_S_timers_40000800_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_P_interrupt_names_IDX_0 "global" #define DT_N_S_soc_S_timers_40000800_P_interrupt_names_IDX_0_STRING_UNQUOTED global #define DT_N_S_soc_S_timers_40000800_P_interrupt_names_IDX_0_STRING_TOKEN global #define DT_N_S_soc_S_timers_40000800_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN GLOBAL -#define DT_N_S_soc_S_timers_40000800_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000800, interrupt_names, 0) #define DT_N_S_soc_S_timers_40000800_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000800, interrupt_names, 0) #define DT_N_S_soc_S_timers_40000800_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000800, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000800_P_interrupt_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000800, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000800_P_interrupt_names_LEN 1 #define DT_N_S_soc_S_timers_40000800_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_timers_40000800_P_clocks_IDX_0_VAL_bus 232 -#define DT_N_S_soc_S_timers_40000800_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_clocks_IDX_0_VAL_bits 4 -#define DT_N_S_soc_S_timers_40000800_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000800, clocks, 0) -#define DT_N_S_soc_S_timers_40000800_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000800, clocks, 0) -#define DT_N_S_soc_S_timers_40000800_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000800, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000800_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000800, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000800_P_clocks_LEN 1 -#define DT_N_S_soc_S_timers_40000800_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40000800_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_timers_40000800_P_resets_IDX_0_VAL_id 4610 -#define DT_N_S_soc_S_timers_40000800_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000800, resets, 0) -#define DT_N_S_soc_S_timers_40000800_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000800, resets, 0) -#define DT_N_S_soc_S_timers_40000800_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000800, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000800_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000800, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000800_P_resets_LEN 1 -#define DT_N_S_soc_S_timers_40000800_P_resets_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_st_prescaler 0 -#define DT_N_S_soc_S_timers_40000800_P_st_prescaler_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_P_st_countermode 0 -#define DT_N_S_soc_S_timers_40000800_P_st_countermode_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40000800_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40000800_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40000800/counter @@ -35302,6 +36191,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40000800_S_counter_FULL_NAME "counter" +#define DT_N_S_soc_S_timers_40000800_S_counter_FULL_NAME_UNQUOTED counter +#define DT_N_S_soc_S_timers_40000800_S_counter_FULL_NAME_TOKEN counter +#define DT_N_S_soc_S_timers_40000800_S_counter_FULL_NAME_UPPER_TOKEN COUNTER /* Node parent (/soc/timers@40000800) identifier: */ #define DT_N_S_soc_S_timers_40000800_S_counter_PARENT DT_N_S_soc_S_timers_40000800 @@ -35327,12 +36219,12 @@ #define DT_N_S_soc_S_timers_40000800_S_counter_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40000800_S_counter_ORD 258 -#define DT_N_S_soc_S_timers_40000800_S_counter_ORD_STR_SORTABLE 00258 +#define DT_N_S_soc_S_timers_40000800_S_counter_ORD 261 +#define DT_N_S_soc_S_timers_40000800_S_counter_ORD_STR_SORTABLE 00261 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40000800_S_counter_REQUIRES_ORDS \ - 257, /* /soc/timers@40000800 */ + 260, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40000800_S_counter_SUPPORTS_ORDS /* nothing */ @@ -35358,20 +36250,14 @@ #define DT_N_S_soc_S_timers_40000800_S_counter_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40000800_S_counter_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40000800_S_counter_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_S_counter_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40000800_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_S_counter_P_status "disabled" #define DT_N_S_soc_S_timers_40000800_S_counter_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40000800_S_counter_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40000800_S_counter_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40000800_S_counter_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40000800_S_counter_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_S_counter_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40000800_S_counter_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_S_counter_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40000800_S_counter_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40000800_S_counter_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40000800_S_counter_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_S_counter_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000800_S_counter, status, 0) #define DT_N_S_soc_S_timers_40000800_S_counter_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000800_S_counter, status, 0) #define DT_N_S_soc_S_timers_40000800_S_counter_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000800_S_counter, status, 0, __VA_ARGS__) @@ -35379,11 +36265,11 @@ #define DT_N_S_soc_S_timers_40000800_S_counter_P_status_LEN 1 #define DT_N_S_soc_S_timers_40000800_S_counter_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_S_counter_P_compatible {"st,stm32-counter"} +#define DT_N_S_soc_S_timers_40000800_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_S_counter_P_compatible_IDX_0 "st,stm32-counter" #define DT_N_S_soc_S_timers_40000800_S_counter_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-counter #define DT_N_S_soc_S_timers_40000800_S_counter_P_compatible_IDX_0_STRING_TOKEN st_stm32_counter #define DT_N_S_soc_S_timers_40000800_S_counter_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_COUNTER -#define DT_N_S_soc_S_timers_40000800_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_S_counter_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000800_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40000800_S_counter_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000800_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40000800_S_counter_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000800_S_counter, compatible, 0, __VA_ARGS__) @@ -35392,6 +36278,10 @@ #define DT_N_S_soc_S_timers_40000800_S_counter_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_S_counter_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40000800_S_counter_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_S_counter_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40000800_S_counter_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_S_counter_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40000800_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40000800/pwm @@ -35410,6 +36300,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40000800_S_pwm_FULL_NAME "pwm" +#define DT_N_S_soc_S_timers_40000800_S_pwm_FULL_NAME_UNQUOTED pwm +#define DT_N_S_soc_S_timers_40000800_S_pwm_FULL_NAME_TOKEN pwm +#define DT_N_S_soc_S_timers_40000800_S_pwm_FULL_NAME_UPPER_TOKEN PWM /* Node parent (/soc/timers@40000800) identifier: */ #define DT_N_S_soc_S_timers_40000800_S_pwm_PARENT DT_N_S_soc_S_timers_40000800 @@ -35435,12 +36328,12 @@ #define DT_N_S_soc_S_timers_40000800_S_pwm_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40000800_S_pwm_ORD 259 -#define DT_N_S_soc_S_timers_40000800_S_pwm_ORD_STR_SORTABLE 00259 +#define DT_N_S_soc_S_timers_40000800_S_pwm_ORD 262 +#define DT_N_S_soc_S_timers_40000800_S_pwm_ORD_STR_SORTABLE 00262 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40000800_S_pwm_REQUIRES_ORDS \ - 257, /* /soc/timers@40000800 */ + 260, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40000800_S_pwm_SUPPORTS_ORDS /* nothing */ @@ -35466,20 +36359,16 @@ #define DT_N_S_soc_S_timers_40000800_S_pwm_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40000800_S_pwm_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40000800_S_pwm_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_S_pwm_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40000800_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_S_pwm_P_four_channel_capture_support 0 +#define DT_N_S_soc_S_timers_40000800_S_pwm_P_four_channel_capture_support_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_S_pwm_P_status "disabled" #define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000800_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000800_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000800_S_pwm, status, 0, __VA_ARGS__) @@ -35487,11 +36376,11 @@ #define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_LEN 1 #define DT_N_S_soc_S_timers_40000800_S_pwm_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_S_pwm_P_compatible {"st,stm32-pwm"} +#define DT_N_S_soc_S_timers_40000800_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_S_pwm_P_compatible_IDX_0 "st,stm32-pwm" #define DT_N_S_soc_S_timers_40000800_S_pwm_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-pwm #define DT_N_S_soc_S_timers_40000800_S_pwm_P_compatible_IDX_0_STRING_TOKEN st_stm32_pwm #define DT_N_S_soc_S_timers_40000800_S_pwm_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_PWM -#define DT_N_S_soc_S_timers_40000800_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_S_pwm_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000800_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40000800_S_pwm_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000800_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40000800_S_pwm_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000800_S_pwm, compatible, 0, __VA_ARGS__) @@ -35500,8 +36389,10 @@ #define DT_N_S_soc_S_timers_40000800_S_pwm_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40000800_S_pwm_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40000800_S_pwm_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40000800_S_pwm_P_four_channel_capture_support 0 -#define DT_N_S_soc_S_timers_40000800_S_pwm_P_four_channel_capture_support_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_S_pwm_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40000800_S_pwm_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40000800_S_pwm_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40000800_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40000c00 @@ -35520,6 +36411,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40000c00_FULL_NAME "timers@40000c00" +#define DT_N_S_soc_S_timers_40000c00_FULL_NAME_UNQUOTED timers@40000c00 +#define DT_N_S_soc_S_timers_40000c00_FULL_NAME_TOKEN timers_40000c00 +#define DT_N_S_soc_S_timers_40000c00_FULL_NAME_UPPER_TOKEN TIMERS_40000C00 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timers_40000c00_PARENT DT_N_S_soc @@ -35545,20 +36439,20 @@ #define DT_N_S_soc_S_timers_40000c00_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40000c00_ORD 260 -#define DT_N_S_soc_S_timers_40000c00_ORD_STR_SORTABLE 00260 +#define DT_N_S_soc_S_timers_40000c00_ORD 263 +#define DT_N_S_soc_S_timers_40000c00_ORD_STR_SORTABLE 00263 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40000c00_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40000c00_SUPPORTS_ORDS \ - 261, /* /soc/timers@40000c00/counter */ \ - 262, /* /soc/timers@40000c00/pwm */ + 264, \ + 265, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_timers_40000c00_EXISTS 1 @@ -35568,8 +36462,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timers_40000c00_REG_NUM 1 #define DT_N_S_soc_S_timers_40000c00_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_REG_IDX_0_VAL_ADDRESS 1073744896 /* 0x40000c00 */ -#define DT_N_S_soc_S_timers_40000c00_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_timers_40000c00_REG_IDX_0_VAL_ADDRESS 1073744896 +#define DT_N_S_soc_S_timers_40000c00_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_timers_40000c00_RANGES_NUM 0 #define DT_N_S_soc_S_timers_40000c00_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timers_40000c00_IRQ_NUM 1 @@ -35597,20 +36491,46 @@ #define DT_N_S_soc_S_timers_40000c00_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40000c00_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40000c00_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40000c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_P_reg {1073744896, 1024} +#define DT_N_S_soc_S_timers_40000c00_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_P_reg_IDX_0 1073744896 +#define DT_N_S_soc_S_timers_40000c00_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_timers_40000c00_P_reg_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_timers_40000c00_P_clocks_IDX_0_VAL_bus 232 +#define DT_N_S_soc_S_timers_40000c00_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_P_clocks_IDX_0_VAL_bits 8 +#define DT_N_S_soc_S_timers_40000c00_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000c00, clocks, 0) +#define DT_N_S_soc_S_timers_40000c00_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000c00, clocks, 0) +#define DT_N_S_soc_S_timers_40000c00_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000c00, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000c00_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000c00, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000c00_P_clocks_LEN 1 +#define DT_N_S_soc_S_timers_40000c00_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_timers_40000c00_P_resets_IDX_0_VAL_id 4611 +#define DT_N_S_soc_S_timers_40000c00_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000c00, resets, 0) +#define DT_N_S_soc_S_timers_40000c00_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000c00, resets, 0) +#define DT_N_S_soc_S_timers_40000c00_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000c00, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000c00_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000c00, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40000c00_P_resets_LEN 1 +#define DT_N_S_soc_S_timers_40000c00_P_resets_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_P_st_prescaler 0 +#define DT_N_S_soc_S_timers_40000c00_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_P_st_countermode 0 +#define DT_N_S_soc_S_timers_40000c00_P_st_countermode_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_P_status "disabled" #define DT_N_S_soc_S_timers_40000c00_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40000c00_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40000c00_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40000c00_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40000c00_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40000c00_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40000c00_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40000c00_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40000c00_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000c00, status, 0) #define DT_N_S_soc_S_timers_40000c00_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000c00, status, 0) #define DT_N_S_soc_S_timers_40000c00_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000c00, status, 0, __VA_ARGS__) @@ -35618,69 +36538,41 @@ #define DT_N_S_soc_S_timers_40000c00_P_status_LEN 1 #define DT_N_S_soc_S_timers_40000c00_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_P_compatible {"st,stm32-timers"} +#define DT_N_S_soc_S_timers_40000c00_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_P_compatible_IDX_0 "st,stm32-timers" #define DT_N_S_soc_S_timers_40000c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-timers #define DT_N_S_soc_S_timers_40000c00_P_compatible_IDX_0_STRING_TOKEN st_stm32_timers #define DT_N_S_soc_S_timers_40000c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_TIMERS -#define DT_N_S_soc_S_timers_40000c00_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000c00, compatible, 0) #define DT_N_S_soc_S_timers_40000c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000c00, compatible, 0) #define DT_N_S_soc_S_timers_40000c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000c00, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000c00, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000c00_P_compatible_LEN 1 #define DT_N_S_soc_S_timers_40000c00_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_reg {1073744896 /* 0x40000c00 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_timers_40000c00_P_reg_IDX_0 1073744896 -#define DT_N_S_soc_S_timers_40000c00_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_timers_40000c00_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_reg_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_interrupts {50 /* 0x32 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_timers_40000c00_P_interrupts_IDX_0 50 +#define DT_N_S_soc_S_timers_40000c00_P_interrupts {50, 0} #define DT_N_S_soc_S_timers_40000c00_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_timers_40000c00_P_interrupts_IDX_0 50 #define DT_N_S_soc_S_timers_40000c00_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_timers_40000c00_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_P_interrupt_names {"global"} +#define DT_N_S_soc_S_timers_40000c00_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_P_interrupt_names_IDX_0 "global" #define DT_N_S_soc_S_timers_40000c00_P_interrupt_names_IDX_0_STRING_UNQUOTED global #define DT_N_S_soc_S_timers_40000c00_P_interrupt_names_IDX_0_STRING_TOKEN global #define DT_N_S_soc_S_timers_40000c00_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN GLOBAL -#define DT_N_S_soc_S_timers_40000c00_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000c00, interrupt_names, 0) #define DT_N_S_soc_S_timers_40000c00_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000c00, interrupt_names, 0) #define DT_N_S_soc_S_timers_40000c00_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000c00, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000c00_P_interrupt_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000c00, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40000c00_P_interrupt_names_LEN 1 #define DT_N_S_soc_S_timers_40000c00_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_timers_40000c00_P_clocks_IDX_0_VAL_bus 232 -#define DT_N_S_soc_S_timers_40000c00_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_clocks_IDX_0_VAL_bits 8 -#define DT_N_S_soc_S_timers_40000c00_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000c00, clocks, 0) -#define DT_N_S_soc_S_timers_40000c00_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000c00, clocks, 0) -#define DT_N_S_soc_S_timers_40000c00_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000c00, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000c00_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000c00, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000c00_P_clocks_LEN 1 -#define DT_N_S_soc_S_timers_40000c00_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40000c00_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_timers_40000c00_P_resets_IDX_0_VAL_id 4611 -#define DT_N_S_soc_S_timers_40000c00_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000c00, resets, 0) -#define DT_N_S_soc_S_timers_40000c00_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000c00, resets, 0) -#define DT_N_S_soc_S_timers_40000c00_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000c00, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000c00_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40000c00, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40000c00_P_resets_LEN 1 -#define DT_N_S_soc_S_timers_40000c00_P_resets_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_st_prescaler 0 -#define DT_N_S_soc_S_timers_40000c00_P_st_prescaler_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_P_st_countermode 0 -#define DT_N_S_soc_S_timers_40000c00_P_st_countermode_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40000c00_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40000c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40000c00/counter @@ -35699,6 +36591,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40000c00_S_counter_FULL_NAME "counter" +#define DT_N_S_soc_S_timers_40000c00_S_counter_FULL_NAME_UNQUOTED counter +#define DT_N_S_soc_S_timers_40000c00_S_counter_FULL_NAME_TOKEN counter +#define DT_N_S_soc_S_timers_40000c00_S_counter_FULL_NAME_UPPER_TOKEN COUNTER /* Node parent (/soc/timers@40000c00) identifier: */ #define DT_N_S_soc_S_timers_40000c00_S_counter_PARENT DT_N_S_soc_S_timers_40000c00 @@ -35724,12 +36619,12 @@ #define DT_N_S_soc_S_timers_40000c00_S_counter_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40000c00_S_counter_ORD 261 -#define DT_N_S_soc_S_timers_40000c00_S_counter_ORD_STR_SORTABLE 00261 +#define DT_N_S_soc_S_timers_40000c00_S_counter_ORD 264 +#define DT_N_S_soc_S_timers_40000c00_S_counter_ORD_STR_SORTABLE 00264 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40000c00_S_counter_REQUIRES_ORDS \ - 260, /* /soc/timers@40000c00 */ + 263, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40000c00_S_counter_SUPPORTS_ORDS /* nothing */ @@ -35755,20 +36650,14 @@ #define DT_N_S_soc_S_timers_40000c00_S_counter_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40000c00_S_counter_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40000c00_S_counter_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_S_counter_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40000c00_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_S_counter_P_status "disabled" #define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000c00_S_counter, status, 0) #define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000c00_S_counter, status, 0) #define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000c00_S_counter, status, 0, __VA_ARGS__) @@ -35776,11 +36665,11 @@ #define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_LEN 1 #define DT_N_S_soc_S_timers_40000c00_S_counter_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_S_counter_P_compatible {"st,stm32-counter"} +#define DT_N_S_soc_S_timers_40000c00_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_S_counter_P_compatible_IDX_0 "st,stm32-counter" #define DT_N_S_soc_S_timers_40000c00_S_counter_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-counter #define DT_N_S_soc_S_timers_40000c00_S_counter_P_compatible_IDX_0_STRING_TOKEN st_stm32_counter #define DT_N_S_soc_S_timers_40000c00_S_counter_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_COUNTER -#define DT_N_S_soc_S_timers_40000c00_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_S_counter_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000c00_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40000c00_S_counter_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000c00_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40000c00_S_counter_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000c00_S_counter, compatible, 0, __VA_ARGS__) @@ -35789,6 +36678,10 @@ #define DT_N_S_soc_S_timers_40000c00_S_counter_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_S_counter_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40000c00_S_counter_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_S_counter_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40000c00_S_counter_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_S_counter_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40000c00_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40000c00/pwm @@ -35807,6 +36700,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40000c00_S_pwm_FULL_NAME "pwm" +#define DT_N_S_soc_S_timers_40000c00_S_pwm_FULL_NAME_UNQUOTED pwm +#define DT_N_S_soc_S_timers_40000c00_S_pwm_FULL_NAME_TOKEN pwm +#define DT_N_S_soc_S_timers_40000c00_S_pwm_FULL_NAME_UPPER_TOKEN PWM /* Node parent (/soc/timers@40000c00) identifier: */ #define DT_N_S_soc_S_timers_40000c00_S_pwm_PARENT DT_N_S_soc_S_timers_40000c00 @@ -35832,12 +36728,12 @@ #define DT_N_S_soc_S_timers_40000c00_S_pwm_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40000c00_S_pwm_ORD 262 -#define DT_N_S_soc_S_timers_40000c00_S_pwm_ORD_STR_SORTABLE 00262 +#define DT_N_S_soc_S_timers_40000c00_S_pwm_ORD 265 +#define DT_N_S_soc_S_timers_40000c00_S_pwm_ORD_STR_SORTABLE 00265 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40000c00_S_pwm_REQUIRES_ORDS \ - 260, /* /soc/timers@40000c00 */ + 263, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40000c00_S_pwm_SUPPORTS_ORDS /* nothing */ @@ -35863,20 +36759,16 @@ #define DT_N_S_soc_S_timers_40000c00_S_pwm_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_four_channel_capture_support 0 +#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_four_channel_capture_support_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status "disabled" #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000c00_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000c00_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000c00_S_pwm, status, 0, __VA_ARGS__) @@ -35884,11 +36776,11 @@ #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_LEN 1 #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_compatible {"st,stm32-pwm"} +#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_compatible_IDX_0 "st,stm32-pwm" #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-pwm #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_compatible_IDX_0_STRING_TOKEN st_stm32_pwm #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_PWM -#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40000c00_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40000c00_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40000c00_S_pwm, compatible, 0, __VA_ARGS__) @@ -35897,8 +36789,10 @@ #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40000c00_S_pwm_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_four_channel_capture_support 0 -#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_four_channel_capture_support_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40000c00_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40001000 @@ -35917,6 +36811,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40001000_FULL_NAME "timers@40001000" +#define DT_N_S_soc_S_timers_40001000_FULL_NAME_UNQUOTED timers@40001000 +#define DT_N_S_soc_S_timers_40001000_FULL_NAME_TOKEN timers_40001000 +#define DT_N_S_soc_S_timers_40001000_FULL_NAME_UPPER_TOKEN TIMERS_40001000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timers_40001000_PARENT DT_N_S_soc @@ -35942,19 +36839,19 @@ #define DT_N_S_soc_S_timers_40001000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40001000_ORD 263 -#define DT_N_S_soc_S_timers_40001000_ORD_STR_SORTABLE 00263 +#define DT_N_S_soc_S_timers_40001000_ORD 266 +#define DT_N_S_soc_S_timers_40001000_ORD_STR_SORTABLE 00266 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40001000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40001000_SUPPORTS_ORDS \ - 264, /* /soc/timers@40001000/counter */ + 267, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_timers_40001000_EXISTS 1 @@ -35964,8 +36861,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timers_40001000_REG_NUM 1 #define DT_N_S_soc_S_timers_40001000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_REG_IDX_0_VAL_ADDRESS 1073745920 /* 0x40001000 */ -#define DT_N_S_soc_S_timers_40001000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_timers_40001000_REG_IDX_0_VAL_ADDRESS 1073745920 +#define DT_N_S_soc_S_timers_40001000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_timers_40001000_RANGES_NUM 0 #define DT_N_S_soc_S_timers_40001000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timers_40001000_IRQ_NUM 1 @@ -35993,20 +36890,46 @@ #define DT_N_S_soc_S_timers_40001000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40001000_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40001000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40001000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_P_reg {1073745920, 1024} +#define DT_N_S_soc_S_timers_40001000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_P_reg_IDX_0 1073745920 +#define DT_N_S_soc_S_timers_40001000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_timers_40001000_P_reg_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_timers_40001000_P_clocks_IDX_0_VAL_bus 232 +#define DT_N_S_soc_S_timers_40001000_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_P_clocks_IDX_0_VAL_bits 16 +#define DT_N_S_soc_S_timers_40001000_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001000, clocks, 0) +#define DT_N_S_soc_S_timers_40001000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001000, clocks, 0) +#define DT_N_S_soc_S_timers_40001000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001000_P_clocks_LEN 1 +#define DT_N_S_soc_S_timers_40001000_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_timers_40001000_P_resets_IDX_0_VAL_id 4612 +#define DT_N_S_soc_S_timers_40001000_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001000, resets, 0) +#define DT_N_S_soc_S_timers_40001000_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001000, resets, 0) +#define DT_N_S_soc_S_timers_40001000_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001000, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001000_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001000, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001000_P_resets_LEN 1 +#define DT_N_S_soc_S_timers_40001000_P_resets_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_P_st_prescaler 0 +#define DT_N_S_soc_S_timers_40001000_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_P_st_countermode 0 +#define DT_N_S_soc_S_timers_40001000_P_st_countermode_EXISTS 1 #define DT_N_S_soc_S_timers_40001000_P_status "disabled" #define DT_N_S_soc_S_timers_40001000_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40001000_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40001000_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40001000_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40001000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40001000_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40001000_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40001000_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40001000_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40001000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001000, status, 0) #define DT_N_S_soc_S_timers_40001000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001000, status, 0) #define DT_N_S_soc_S_timers_40001000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001000, status, 0, __VA_ARGS__) @@ -36014,69 +36937,41 @@ #define DT_N_S_soc_S_timers_40001000_P_status_LEN 1 #define DT_N_S_soc_S_timers_40001000_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40001000_P_compatible {"st,stm32-timers"} +#define DT_N_S_soc_S_timers_40001000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001000_P_compatible_IDX_0 "st,stm32-timers" #define DT_N_S_soc_S_timers_40001000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-timers #define DT_N_S_soc_S_timers_40001000_P_compatible_IDX_0_STRING_TOKEN st_stm32_timers #define DT_N_S_soc_S_timers_40001000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_TIMERS -#define DT_N_S_soc_S_timers_40001000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001000, compatible, 0) #define DT_N_S_soc_S_timers_40001000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001000, compatible, 0) #define DT_N_S_soc_S_timers_40001000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001000_P_compatible_LEN 1 #define DT_N_S_soc_S_timers_40001000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_reg {1073745920 /* 0x40001000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_timers_40001000_P_reg_IDX_0 1073745920 -#define DT_N_S_soc_S_timers_40001000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_timers_40001000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_interrupts {54 /* 0x36 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_timers_40001000_P_interrupts_IDX_0 54 +#define DT_N_S_soc_S_timers_40001000_P_interrupts {54, 0} #define DT_N_S_soc_S_timers_40001000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_timers_40001000_P_interrupts_IDX_0 54 #define DT_N_S_soc_S_timers_40001000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_timers_40001000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_timers_40001000_P_interrupt_names {"global"} +#define DT_N_S_soc_S_timers_40001000_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001000_P_interrupt_names_IDX_0 "global" #define DT_N_S_soc_S_timers_40001000_P_interrupt_names_IDX_0_STRING_UNQUOTED global #define DT_N_S_soc_S_timers_40001000_P_interrupt_names_IDX_0_STRING_TOKEN global #define DT_N_S_soc_S_timers_40001000_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN GLOBAL -#define DT_N_S_soc_S_timers_40001000_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001000_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001000, interrupt_names, 0) #define DT_N_S_soc_S_timers_40001000_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001000, interrupt_names, 0) #define DT_N_S_soc_S_timers_40001000_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001000, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001000_P_interrupt_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001000, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001000_P_interrupt_names_LEN 1 #define DT_N_S_soc_S_timers_40001000_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_timers_40001000_P_clocks_IDX_0_VAL_bus 232 -#define DT_N_S_soc_S_timers_40001000_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_clocks_IDX_0_VAL_bits 16 -#define DT_N_S_soc_S_timers_40001000_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001000, clocks, 0) -#define DT_N_S_soc_S_timers_40001000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001000, clocks, 0) -#define DT_N_S_soc_S_timers_40001000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001000_P_clocks_LEN 1 -#define DT_N_S_soc_S_timers_40001000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40001000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40001000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_timers_40001000_P_resets_IDX_0_VAL_id 4612 -#define DT_N_S_soc_S_timers_40001000_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001000, resets, 0) -#define DT_N_S_soc_S_timers_40001000_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001000, resets, 0) -#define DT_N_S_soc_S_timers_40001000_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001000, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001000_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001000, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001000_P_resets_LEN 1 -#define DT_N_S_soc_S_timers_40001000_P_resets_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_st_prescaler 0 -#define DT_N_S_soc_S_timers_40001000_P_st_prescaler_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_P_st_countermode 0 -#define DT_N_S_soc_S_timers_40001000_P_st_countermode_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40001000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40001000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40001000/counter @@ -36095,6 +36990,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40001000_S_counter_FULL_NAME "counter" +#define DT_N_S_soc_S_timers_40001000_S_counter_FULL_NAME_UNQUOTED counter +#define DT_N_S_soc_S_timers_40001000_S_counter_FULL_NAME_TOKEN counter +#define DT_N_S_soc_S_timers_40001000_S_counter_FULL_NAME_UPPER_TOKEN COUNTER /* Node parent (/soc/timers@40001000) identifier: */ #define DT_N_S_soc_S_timers_40001000_S_counter_PARENT DT_N_S_soc_S_timers_40001000 @@ -36120,12 +37018,12 @@ #define DT_N_S_soc_S_timers_40001000_S_counter_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40001000_S_counter_ORD 264 -#define DT_N_S_soc_S_timers_40001000_S_counter_ORD_STR_SORTABLE 00264 +#define DT_N_S_soc_S_timers_40001000_S_counter_ORD 267 +#define DT_N_S_soc_S_timers_40001000_S_counter_ORD_STR_SORTABLE 00267 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40001000_S_counter_REQUIRES_ORDS \ - 263, /* /soc/timers@40001000 */ + 266, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40001000_S_counter_SUPPORTS_ORDS /* nothing */ @@ -36151,20 +37049,14 @@ #define DT_N_S_soc_S_timers_40001000_S_counter_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40001000_S_counter_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40001000_S_counter_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_S_counter_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40001000_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_timers_40001000_S_counter_P_status "disabled" #define DT_N_S_soc_S_timers_40001000_S_counter_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40001000_S_counter_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40001000_S_counter_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40001000_S_counter_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40001000_S_counter_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_S_counter_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40001000_S_counter_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40001000_S_counter_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40001000_S_counter_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40001000_S_counter_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40001000_S_counter_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40001000_S_counter_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001000_S_counter, status, 0) #define DT_N_S_soc_S_timers_40001000_S_counter_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001000_S_counter, status, 0) #define DT_N_S_soc_S_timers_40001000_S_counter_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001000_S_counter, status, 0, __VA_ARGS__) @@ -36172,11 +37064,11 @@ #define DT_N_S_soc_S_timers_40001000_S_counter_P_status_LEN 1 #define DT_N_S_soc_S_timers_40001000_S_counter_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40001000_S_counter_P_compatible {"st,stm32-counter"} +#define DT_N_S_soc_S_timers_40001000_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001000_S_counter_P_compatible_IDX_0 "st,stm32-counter" #define DT_N_S_soc_S_timers_40001000_S_counter_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-counter #define DT_N_S_soc_S_timers_40001000_S_counter_P_compatible_IDX_0_STRING_TOKEN st_stm32_counter #define DT_N_S_soc_S_timers_40001000_S_counter_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_COUNTER -#define DT_N_S_soc_S_timers_40001000_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001000_S_counter_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001000_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40001000_S_counter_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001000_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40001000_S_counter_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001000_S_counter, compatible, 0, __VA_ARGS__) @@ -36185,6 +37077,10 @@ #define DT_N_S_soc_S_timers_40001000_S_counter_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40001000_S_counter_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40001000_S_counter_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_S_counter_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40001000_S_counter_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40001000_S_counter_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40001000_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40001400 @@ -36203,6 +37099,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40001400_FULL_NAME "timers@40001400" +#define DT_N_S_soc_S_timers_40001400_FULL_NAME_UNQUOTED timers@40001400 +#define DT_N_S_soc_S_timers_40001400_FULL_NAME_TOKEN timers_40001400 +#define DT_N_S_soc_S_timers_40001400_FULL_NAME_UPPER_TOKEN TIMERS_40001400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timers_40001400_PARENT DT_N_S_soc @@ -36228,19 +37127,19 @@ #define DT_N_S_soc_S_timers_40001400_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40001400_ORD 265 -#define DT_N_S_soc_S_timers_40001400_ORD_STR_SORTABLE 00265 +#define DT_N_S_soc_S_timers_40001400_ORD 268 +#define DT_N_S_soc_S_timers_40001400_ORD_STR_SORTABLE 00268 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40001400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40001400_SUPPORTS_ORDS \ - 266, /* /soc/timers@40001400/counter */ + 269, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_timers_40001400_EXISTS 1 @@ -36250,8 +37149,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timers_40001400_REG_NUM 1 #define DT_N_S_soc_S_timers_40001400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_REG_IDX_0_VAL_ADDRESS 1073746944 /* 0x40001400 */ -#define DT_N_S_soc_S_timers_40001400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_timers_40001400_REG_IDX_0_VAL_ADDRESS 1073746944 +#define DT_N_S_soc_S_timers_40001400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_timers_40001400_RANGES_NUM 0 #define DT_N_S_soc_S_timers_40001400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timers_40001400_IRQ_NUM 1 @@ -36279,20 +37178,46 @@ #define DT_N_S_soc_S_timers_40001400_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40001400_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40001400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40001400_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_P_reg {1073746944, 1024} +#define DT_N_S_soc_S_timers_40001400_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_P_reg_IDX_0 1073746944 +#define DT_N_S_soc_S_timers_40001400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_timers_40001400_P_reg_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_timers_40001400_P_clocks_IDX_0_VAL_bus 232 +#define DT_N_S_soc_S_timers_40001400_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_P_clocks_IDX_0_VAL_bits 32 +#define DT_N_S_soc_S_timers_40001400_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001400, clocks, 0) +#define DT_N_S_soc_S_timers_40001400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001400, clocks, 0) +#define DT_N_S_soc_S_timers_40001400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001400, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001400, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001400_P_clocks_LEN 1 +#define DT_N_S_soc_S_timers_40001400_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_timers_40001400_P_resets_IDX_0_VAL_id 4613 +#define DT_N_S_soc_S_timers_40001400_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001400, resets, 0) +#define DT_N_S_soc_S_timers_40001400_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001400, resets, 0) +#define DT_N_S_soc_S_timers_40001400_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001400, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001400_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001400, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001400_P_resets_LEN 1 +#define DT_N_S_soc_S_timers_40001400_P_resets_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_P_st_prescaler 0 +#define DT_N_S_soc_S_timers_40001400_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_P_st_countermode 0 +#define DT_N_S_soc_S_timers_40001400_P_st_countermode_EXISTS 1 #define DT_N_S_soc_S_timers_40001400_P_status "disabled" #define DT_N_S_soc_S_timers_40001400_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40001400_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40001400_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40001400_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40001400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40001400_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40001400_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40001400_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40001400_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40001400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001400, status, 0) #define DT_N_S_soc_S_timers_40001400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001400, status, 0) #define DT_N_S_soc_S_timers_40001400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001400, status, 0, __VA_ARGS__) @@ -36300,69 +37225,41 @@ #define DT_N_S_soc_S_timers_40001400_P_status_LEN 1 #define DT_N_S_soc_S_timers_40001400_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40001400_P_compatible {"st,stm32-timers"} +#define DT_N_S_soc_S_timers_40001400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001400_P_compatible_IDX_0 "st,stm32-timers" #define DT_N_S_soc_S_timers_40001400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-timers #define DT_N_S_soc_S_timers_40001400_P_compatible_IDX_0_STRING_TOKEN st_stm32_timers #define DT_N_S_soc_S_timers_40001400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_TIMERS -#define DT_N_S_soc_S_timers_40001400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001400, compatible, 0) #define DT_N_S_soc_S_timers_40001400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001400, compatible, 0) #define DT_N_S_soc_S_timers_40001400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001400_P_compatible_LEN 1 #define DT_N_S_soc_S_timers_40001400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_reg {1073746944 /* 0x40001400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_timers_40001400_P_reg_IDX_0 1073746944 -#define DT_N_S_soc_S_timers_40001400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_timers_40001400_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_interrupts {55 /* 0x37 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_timers_40001400_P_interrupts_IDX_0 55 +#define DT_N_S_soc_S_timers_40001400_P_interrupts {55, 0} #define DT_N_S_soc_S_timers_40001400_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_timers_40001400_P_interrupts_IDX_0 55 #define DT_N_S_soc_S_timers_40001400_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_timers_40001400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_timers_40001400_P_interrupt_names {"global"} +#define DT_N_S_soc_S_timers_40001400_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001400_P_interrupt_names_IDX_0 "global" #define DT_N_S_soc_S_timers_40001400_P_interrupt_names_IDX_0_STRING_UNQUOTED global #define DT_N_S_soc_S_timers_40001400_P_interrupt_names_IDX_0_STRING_TOKEN global #define DT_N_S_soc_S_timers_40001400_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN GLOBAL -#define DT_N_S_soc_S_timers_40001400_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001400_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001400, interrupt_names, 0) #define DT_N_S_soc_S_timers_40001400_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001400, interrupt_names, 0) #define DT_N_S_soc_S_timers_40001400_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001400, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001400_P_interrupt_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001400, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001400_P_interrupt_names_LEN 1 #define DT_N_S_soc_S_timers_40001400_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_timers_40001400_P_clocks_IDX_0_VAL_bus 232 -#define DT_N_S_soc_S_timers_40001400_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_clocks_IDX_0_VAL_bits 32 -#define DT_N_S_soc_S_timers_40001400_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001400, clocks, 0) -#define DT_N_S_soc_S_timers_40001400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001400, clocks, 0) -#define DT_N_S_soc_S_timers_40001400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001400, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001400, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001400_P_clocks_LEN 1 -#define DT_N_S_soc_S_timers_40001400_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40001400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40001400_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_timers_40001400_P_resets_IDX_0_VAL_id 4613 -#define DT_N_S_soc_S_timers_40001400_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001400, resets, 0) -#define DT_N_S_soc_S_timers_40001400_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001400, resets, 0) -#define DT_N_S_soc_S_timers_40001400_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001400, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001400_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001400, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001400_P_resets_LEN 1 -#define DT_N_S_soc_S_timers_40001400_P_resets_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_st_prescaler 0 -#define DT_N_S_soc_S_timers_40001400_P_st_prescaler_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_P_st_countermode 0 -#define DT_N_S_soc_S_timers_40001400_P_st_countermode_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40001400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40001400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40001400/counter @@ -36381,6 +37278,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40001400_S_counter_FULL_NAME "counter" +#define DT_N_S_soc_S_timers_40001400_S_counter_FULL_NAME_UNQUOTED counter +#define DT_N_S_soc_S_timers_40001400_S_counter_FULL_NAME_TOKEN counter +#define DT_N_S_soc_S_timers_40001400_S_counter_FULL_NAME_UPPER_TOKEN COUNTER /* Node parent (/soc/timers@40001400) identifier: */ #define DT_N_S_soc_S_timers_40001400_S_counter_PARENT DT_N_S_soc_S_timers_40001400 @@ -36406,12 +37306,12 @@ #define DT_N_S_soc_S_timers_40001400_S_counter_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40001400_S_counter_ORD 266 -#define DT_N_S_soc_S_timers_40001400_S_counter_ORD_STR_SORTABLE 00266 +#define DT_N_S_soc_S_timers_40001400_S_counter_ORD 269 +#define DT_N_S_soc_S_timers_40001400_S_counter_ORD_STR_SORTABLE 00269 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40001400_S_counter_REQUIRES_ORDS \ - 265, /* /soc/timers@40001400 */ + 268, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40001400_S_counter_SUPPORTS_ORDS /* nothing */ @@ -36437,20 +37337,14 @@ #define DT_N_S_soc_S_timers_40001400_S_counter_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40001400_S_counter_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40001400_S_counter_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_S_counter_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40001400_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_timers_40001400_S_counter_P_status "disabled" #define DT_N_S_soc_S_timers_40001400_S_counter_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40001400_S_counter_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40001400_S_counter_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40001400_S_counter_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40001400_S_counter_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_S_counter_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40001400_S_counter_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40001400_S_counter_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40001400_S_counter_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40001400_S_counter_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40001400_S_counter_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40001400_S_counter_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001400_S_counter, status, 0) #define DT_N_S_soc_S_timers_40001400_S_counter_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001400_S_counter, status, 0) #define DT_N_S_soc_S_timers_40001400_S_counter_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001400_S_counter, status, 0, __VA_ARGS__) @@ -36458,11 +37352,11 @@ #define DT_N_S_soc_S_timers_40001400_S_counter_P_status_LEN 1 #define DT_N_S_soc_S_timers_40001400_S_counter_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40001400_S_counter_P_compatible {"st,stm32-counter"} +#define DT_N_S_soc_S_timers_40001400_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001400_S_counter_P_compatible_IDX_0 "st,stm32-counter" #define DT_N_S_soc_S_timers_40001400_S_counter_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-counter #define DT_N_S_soc_S_timers_40001400_S_counter_P_compatible_IDX_0_STRING_TOKEN st_stm32_counter #define DT_N_S_soc_S_timers_40001400_S_counter_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_COUNTER -#define DT_N_S_soc_S_timers_40001400_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001400_S_counter_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001400_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40001400_S_counter_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001400_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40001400_S_counter_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001400_S_counter, compatible, 0, __VA_ARGS__) @@ -36471,6 +37365,10 @@ #define DT_N_S_soc_S_timers_40001400_S_counter_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40001400_S_counter_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40001400_S_counter_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_S_counter_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40001400_S_counter_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40001400_S_counter_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40001400_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40001800 @@ -36489,6 +37387,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40001800_FULL_NAME "timers@40001800" +#define DT_N_S_soc_S_timers_40001800_FULL_NAME_UNQUOTED timers@40001800 +#define DT_N_S_soc_S_timers_40001800_FULL_NAME_TOKEN timers_40001800 +#define DT_N_S_soc_S_timers_40001800_FULL_NAME_UPPER_TOKEN TIMERS_40001800 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timers_40001800_PARENT DT_N_S_soc @@ -36514,20 +37415,20 @@ #define DT_N_S_soc_S_timers_40001800_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40001800_ORD 267 -#define DT_N_S_soc_S_timers_40001800_ORD_STR_SORTABLE 00267 +#define DT_N_S_soc_S_timers_40001800_ORD 270 +#define DT_N_S_soc_S_timers_40001800_ORD_STR_SORTABLE 00270 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40001800_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40001800_SUPPORTS_ORDS \ - 268, /* /soc/timers@40001800/counter */ \ - 269, /* /soc/timers@40001800/pwm */ + 271, \ + 272, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_timers_40001800_EXISTS 1 @@ -36537,8 +37438,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timers_40001800_REG_NUM 1 #define DT_N_S_soc_S_timers_40001800_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_REG_IDX_0_VAL_ADDRESS 1073747968 /* 0x40001800 */ -#define DT_N_S_soc_S_timers_40001800_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_timers_40001800_REG_IDX_0_VAL_ADDRESS 1073747968 +#define DT_N_S_soc_S_timers_40001800_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_timers_40001800_RANGES_NUM 0 #define DT_N_S_soc_S_timers_40001800_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timers_40001800_IRQ_NUM 1 @@ -36566,20 +37467,46 @@ #define DT_N_S_soc_S_timers_40001800_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40001800_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40001800_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40001800_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_P_reg {1073747968, 1024} +#define DT_N_S_soc_S_timers_40001800_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_P_reg_IDX_0 1073747968 +#define DT_N_S_soc_S_timers_40001800_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_timers_40001800_P_reg_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_timers_40001800_P_clocks_IDX_0_VAL_bus 232 +#define DT_N_S_soc_S_timers_40001800_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_P_clocks_IDX_0_VAL_bits 64 +#define DT_N_S_soc_S_timers_40001800_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001800, clocks, 0) +#define DT_N_S_soc_S_timers_40001800_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001800, clocks, 0) +#define DT_N_S_soc_S_timers_40001800_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001800, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001800_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001800, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001800_P_clocks_LEN 1 +#define DT_N_S_soc_S_timers_40001800_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_timers_40001800_P_resets_IDX_0_VAL_id 4614 +#define DT_N_S_soc_S_timers_40001800_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001800, resets, 0) +#define DT_N_S_soc_S_timers_40001800_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001800, resets, 0) +#define DT_N_S_soc_S_timers_40001800_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001800, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001800_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001800, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001800_P_resets_LEN 1 +#define DT_N_S_soc_S_timers_40001800_P_resets_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_P_st_prescaler 0 +#define DT_N_S_soc_S_timers_40001800_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_P_st_countermode 0 +#define DT_N_S_soc_S_timers_40001800_P_st_countermode_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_P_status "disabled" #define DT_N_S_soc_S_timers_40001800_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40001800_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40001800_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40001800_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40001800_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40001800_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40001800_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40001800_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40001800_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001800, status, 0) #define DT_N_S_soc_S_timers_40001800_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001800, status, 0) #define DT_N_S_soc_S_timers_40001800_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001800, status, 0, __VA_ARGS__) @@ -36587,69 +37514,41 @@ #define DT_N_S_soc_S_timers_40001800_P_status_LEN 1 #define DT_N_S_soc_S_timers_40001800_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_P_compatible {"st,stm32-timers"} +#define DT_N_S_soc_S_timers_40001800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_P_compatible_IDX_0 "st,stm32-timers" #define DT_N_S_soc_S_timers_40001800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-timers #define DT_N_S_soc_S_timers_40001800_P_compatible_IDX_0_STRING_TOKEN st_stm32_timers #define DT_N_S_soc_S_timers_40001800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_TIMERS -#define DT_N_S_soc_S_timers_40001800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001800, compatible, 0) #define DT_N_S_soc_S_timers_40001800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001800, compatible, 0) #define DT_N_S_soc_S_timers_40001800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001800_P_compatible_LEN 1 #define DT_N_S_soc_S_timers_40001800_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_reg {1073747968 /* 0x40001800 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_timers_40001800_P_reg_IDX_0 1073747968 -#define DT_N_S_soc_S_timers_40001800_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_timers_40001800_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_reg_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_interrupts {43 /* 0x2b */, 0 /* 0x0 */} -#define DT_N_S_soc_S_timers_40001800_P_interrupts_IDX_0 43 +#define DT_N_S_soc_S_timers_40001800_P_interrupts {43, 0} #define DT_N_S_soc_S_timers_40001800_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_timers_40001800_P_interrupts_IDX_0 43 #define DT_N_S_soc_S_timers_40001800_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_timers_40001800_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_P_interrupt_names {"global"} +#define DT_N_S_soc_S_timers_40001800_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_P_interrupt_names_IDX_0 "global" #define DT_N_S_soc_S_timers_40001800_P_interrupt_names_IDX_0_STRING_UNQUOTED global #define DT_N_S_soc_S_timers_40001800_P_interrupt_names_IDX_0_STRING_TOKEN global #define DT_N_S_soc_S_timers_40001800_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN GLOBAL -#define DT_N_S_soc_S_timers_40001800_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001800, interrupt_names, 0) #define DT_N_S_soc_S_timers_40001800_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001800, interrupt_names, 0) #define DT_N_S_soc_S_timers_40001800_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001800, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001800_P_interrupt_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001800, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001800_P_interrupt_names_LEN 1 #define DT_N_S_soc_S_timers_40001800_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_timers_40001800_P_clocks_IDX_0_VAL_bus 232 -#define DT_N_S_soc_S_timers_40001800_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_clocks_IDX_0_VAL_bits 64 -#define DT_N_S_soc_S_timers_40001800_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001800, clocks, 0) -#define DT_N_S_soc_S_timers_40001800_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001800, clocks, 0) -#define DT_N_S_soc_S_timers_40001800_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001800, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001800_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001800, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001800_P_clocks_LEN 1 -#define DT_N_S_soc_S_timers_40001800_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40001800_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_timers_40001800_P_resets_IDX_0_VAL_id 4614 -#define DT_N_S_soc_S_timers_40001800_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001800, resets, 0) -#define DT_N_S_soc_S_timers_40001800_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001800, resets, 0) -#define DT_N_S_soc_S_timers_40001800_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001800, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001800_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001800, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001800_P_resets_LEN 1 -#define DT_N_S_soc_S_timers_40001800_P_resets_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_st_prescaler 0 -#define DT_N_S_soc_S_timers_40001800_P_st_prescaler_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_P_st_countermode 0 -#define DT_N_S_soc_S_timers_40001800_P_st_countermode_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40001800_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40001800_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40001800/counter @@ -36668,6 +37567,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40001800_S_counter_FULL_NAME "counter" +#define DT_N_S_soc_S_timers_40001800_S_counter_FULL_NAME_UNQUOTED counter +#define DT_N_S_soc_S_timers_40001800_S_counter_FULL_NAME_TOKEN counter +#define DT_N_S_soc_S_timers_40001800_S_counter_FULL_NAME_UPPER_TOKEN COUNTER /* Node parent (/soc/timers@40001800) identifier: */ #define DT_N_S_soc_S_timers_40001800_S_counter_PARENT DT_N_S_soc_S_timers_40001800 @@ -36693,12 +37595,12 @@ #define DT_N_S_soc_S_timers_40001800_S_counter_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40001800_S_counter_ORD 268 -#define DT_N_S_soc_S_timers_40001800_S_counter_ORD_STR_SORTABLE 00268 +#define DT_N_S_soc_S_timers_40001800_S_counter_ORD 271 +#define DT_N_S_soc_S_timers_40001800_S_counter_ORD_STR_SORTABLE 00271 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40001800_S_counter_REQUIRES_ORDS \ - 267, /* /soc/timers@40001800 */ + 270, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40001800_S_counter_SUPPORTS_ORDS /* nothing */ @@ -36724,20 +37626,14 @@ #define DT_N_S_soc_S_timers_40001800_S_counter_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40001800_S_counter_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40001800_S_counter_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_S_counter_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40001800_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_S_counter_P_status "disabled" #define DT_N_S_soc_S_timers_40001800_S_counter_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40001800_S_counter_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40001800_S_counter_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40001800_S_counter_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40001800_S_counter_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_S_counter_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40001800_S_counter_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_S_counter_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40001800_S_counter_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40001800_S_counter_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40001800_S_counter_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_S_counter_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001800_S_counter, status, 0) #define DT_N_S_soc_S_timers_40001800_S_counter_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001800_S_counter, status, 0) #define DT_N_S_soc_S_timers_40001800_S_counter_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001800_S_counter, status, 0, __VA_ARGS__) @@ -36745,11 +37641,11 @@ #define DT_N_S_soc_S_timers_40001800_S_counter_P_status_LEN 1 #define DT_N_S_soc_S_timers_40001800_S_counter_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_S_counter_P_compatible {"st,stm32-counter"} +#define DT_N_S_soc_S_timers_40001800_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_S_counter_P_compatible_IDX_0 "st,stm32-counter" #define DT_N_S_soc_S_timers_40001800_S_counter_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-counter #define DT_N_S_soc_S_timers_40001800_S_counter_P_compatible_IDX_0_STRING_TOKEN st_stm32_counter #define DT_N_S_soc_S_timers_40001800_S_counter_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_COUNTER -#define DT_N_S_soc_S_timers_40001800_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_S_counter_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001800_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40001800_S_counter_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001800_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40001800_S_counter_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001800_S_counter, compatible, 0, __VA_ARGS__) @@ -36758,6 +37654,10 @@ #define DT_N_S_soc_S_timers_40001800_S_counter_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_S_counter_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40001800_S_counter_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_S_counter_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40001800_S_counter_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_S_counter_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40001800_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40001800/pwm @@ -36776,6 +37676,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40001800_S_pwm_FULL_NAME "pwm" +#define DT_N_S_soc_S_timers_40001800_S_pwm_FULL_NAME_UNQUOTED pwm +#define DT_N_S_soc_S_timers_40001800_S_pwm_FULL_NAME_TOKEN pwm +#define DT_N_S_soc_S_timers_40001800_S_pwm_FULL_NAME_UPPER_TOKEN PWM /* Node parent (/soc/timers@40001800) identifier: */ #define DT_N_S_soc_S_timers_40001800_S_pwm_PARENT DT_N_S_soc_S_timers_40001800 @@ -36801,12 +37704,12 @@ #define DT_N_S_soc_S_timers_40001800_S_pwm_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40001800_S_pwm_ORD 269 -#define DT_N_S_soc_S_timers_40001800_S_pwm_ORD_STR_SORTABLE 00269 +#define DT_N_S_soc_S_timers_40001800_S_pwm_ORD 272 +#define DT_N_S_soc_S_timers_40001800_S_pwm_ORD_STR_SORTABLE 00272 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40001800_S_pwm_REQUIRES_ORDS \ - 267, /* /soc/timers@40001800 */ + 270, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40001800_S_pwm_SUPPORTS_ORDS /* nothing */ @@ -36832,20 +37735,16 @@ #define DT_N_S_soc_S_timers_40001800_S_pwm_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40001800_S_pwm_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40001800_S_pwm_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_S_pwm_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40001800_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_S_pwm_P_four_channel_capture_support 0 +#define DT_N_S_soc_S_timers_40001800_S_pwm_P_four_channel_capture_support_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_S_pwm_P_status "disabled" #define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001800_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001800_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001800_S_pwm, status, 0, __VA_ARGS__) @@ -36853,11 +37752,11 @@ #define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_LEN 1 #define DT_N_S_soc_S_timers_40001800_S_pwm_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_S_pwm_P_compatible {"st,stm32-pwm"} +#define DT_N_S_soc_S_timers_40001800_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_S_pwm_P_compatible_IDX_0 "st,stm32-pwm" #define DT_N_S_soc_S_timers_40001800_S_pwm_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-pwm #define DT_N_S_soc_S_timers_40001800_S_pwm_P_compatible_IDX_0_STRING_TOKEN st_stm32_pwm #define DT_N_S_soc_S_timers_40001800_S_pwm_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_PWM -#define DT_N_S_soc_S_timers_40001800_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_S_pwm_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001800_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40001800_S_pwm_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001800_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40001800_S_pwm_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001800_S_pwm, compatible, 0, __VA_ARGS__) @@ -36866,8 +37765,10 @@ #define DT_N_S_soc_S_timers_40001800_S_pwm_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40001800_S_pwm_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40001800_S_pwm_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40001800_S_pwm_P_four_channel_capture_support 0 -#define DT_N_S_soc_S_timers_40001800_S_pwm_P_four_channel_capture_support_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_S_pwm_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40001800_S_pwm_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40001800_S_pwm_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40001800_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40001c00 @@ -36886,6 +37787,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40001c00_FULL_NAME "timers@40001c00" +#define DT_N_S_soc_S_timers_40001c00_FULL_NAME_UNQUOTED timers@40001c00 +#define DT_N_S_soc_S_timers_40001c00_FULL_NAME_TOKEN timers_40001c00 +#define DT_N_S_soc_S_timers_40001c00_FULL_NAME_UPPER_TOKEN TIMERS_40001C00 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timers_40001c00_PARENT DT_N_S_soc @@ -36911,20 +37815,20 @@ #define DT_N_S_soc_S_timers_40001c00_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40001c00_ORD 270 -#define DT_N_S_soc_S_timers_40001c00_ORD_STR_SORTABLE 00270 +#define DT_N_S_soc_S_timers_40001c00_ORD 273 +#define DT_N_S_soc_S_timers_40001c00_ORD_STR_SORTABLE 00273 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40001c00_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40001c00_SUPPORTS_ORDS \ - 271, /* /soc/timers@40001c00/counter */ \ - 272, /* /soc/timers@40001c00/pwm */ + 274, \ + 275, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_timers_40001c00_EXISTS 1 @@ -36934,8 +37838,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timers_40001c00_REG_NUM 1 #define DT_N_S_soc_S_timers_40001c00_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_REG_IDX_0_VAL_ADDRESS 1073748992 /* 0x40001c00 */ -#define DT_N_S_soc_S_timers_40001c00_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_timers_40001c00_REG_IDX_0_VAL_ADDRESS 1073748992 +#define DT_N_S_soc_S_timers_40001c00_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_timers_40001c00_RANGES_NUM 0 #define DT_N_S_soc_S_timers_40001c00_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timers_40001c00_IRQ_NUM 1 @@ -36963,20 +37867,46 @@ #define DT_N_S_soc_S_timers_40001c00_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40001c00_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40001c00_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40001c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_P_reg {1073748992, 1024} +#define DT_N_S_soc_S_timers_40001c00_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_P_reg_IDX_0 1073748992 +#define DT_N_S_soc_S_timers_40001c00_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_timers_40001c00_P_reg_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_timers_40001c00_P_clocks_IDX_0_VAL_bus 232 +#define DT_N_S_soc_S_timers_40001c00_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_P_clocks_IDX_0_VAL_bits 128 +#define DT_N_S_soc_S_timers_40001c00_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001c00, clocks, 0) +#define DT_N_S_soc_S_timers_40001c00_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001c00, clocks, 0) +#define DT_N_S_soc_S_timers_40001c00_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001c00, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001c00_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001c00, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001c00_P_clocks_LEN 1 +#define DT_N_S_soc_S_timers_40001c00_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_timers_40001c00_P_resets_IDX_0_VAL_id 4615 +#define DT_N_S_soc_S_timers_40001c00_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001c00, resets, 0) +#define DT_N_S_soc_S_timers_40001c00_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001c00, resets, 0) +#define DT_N_S_soc_S_timers_40001c00_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001c00, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001c00_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001c00, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40001c00_P_resets_LEN 1 +#define DT_N_S_soc_S_timers_40001c00_P_resets_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_P_st_prescaler 0 +#define DT_N_S_soc_S_timers_40001c00_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_P_st_countermode 0 +#define DT_N_S_soc_S_timers_40001c00_P_st_countermode_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_P_status "disabled" #define DT_N_S_soc_S_timers_40001c00_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40001c00_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40001c00_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40001c00_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40001c00_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40001c00_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40001c00_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40001c00_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40001c00_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001c00, status, 0) #define DT_N_S_soc_S_timers_40001c00_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001c00, status, 0) #define DT_N_S_soc_S_timers_40001c00_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001c00, status, 0, __VA_ARGS__) @@ -36984,69 +37914,41 @@ #define DT_N_S_soc_S_timers_40001c00_P_status_LEN 1 #define DT_N_S_soc_S_timers_40001c00_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_P_compatible {"st,stm32-timers"} +#define DT_N_S_soc_S_timers_40001c00_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_P_compatible_IDX_0 "st,stm32-timers" #define DT_N_S_soc_S_timers_40001c00_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-timers #define DT_N_S_soc_S_timers_40001c00_P_compatible_IDX_0_STRING_TOKEN st_stm32_timers #define DT_N_S_soc_S_timers_40001c00_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_TIMERS -#define DT_N_S_soc_S_timers_40001c00_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001c00, compatible, 0) #define DT_N_S_soc_S_timers_40001c00_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001c00, compatible, 0) #define DT_N_S_soc_S_timers_40001c00_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001c00, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001c00_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001c00, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001c00_P_compatible_LEN 1 #define DT_N_S_soc_S_timers_40001c00_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_reg {1073748992 /* 0x40001c00 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_timers_40001c00_P_reg_IDX_0 1073748992 -#define DT_N_S_soc_S_timers_40001c00_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_timers_40001c00_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_reg_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_interrupts {44 /* 0x2c */, 0 /* 0x0 */} -#define DT_N_S_soc_S_timers_40001c00_P_interrupts_IDX_0 44 +#define DT_N_S_soc_S_timers_40001c00_P_interrupts {44, 0} #define DT_N_S_soc_S_timers_40001c00_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_timers_40001c00_P_interrupts_IDX_0 44 #define DT_N_S_soc_S_timers_40001c00_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_timers_40001c00_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_P_interrupt_names {"global"} +#define DT_N_S_soc_S_timers_40001c00_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_P_interrupt_names_IDX_0 "global" #define DT_N_S_soc_S_timers_40001c00_P_interrupt_names_IDX_0_STRING_UNQUOTED global #define DT_N_S_soc_S_timers_40001c00_P_interrupt_names_IDX_0_STRING_TOKEN global #define DT_N_S_soc_S_timers_40001c00_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN GLOBAL -#define DT_N_S_soc_S_timers_40001c00_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001c00, interrupt_names, 0) #define DT_N_S_soc_S_timers_40001c00_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001c00, interrupt_names, 0) #define DT_N_S_soc_S_timers_40001c00_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001c00, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001c00_P_interrupt_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001c00, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40001c00_P_interrupt_names_LEN 1 #define DT_N_S_soc_S_timers_40001c00_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_timers_40001c00_P_clocks_IDX_0_VAL_bus 232 -#define DT_N_S_soc_S_timers_40001c00_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_clocks_IDX_0_VAL_bits 128 -#define DT_N_S_soc_S_timers_40001c00_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001c00, clocks, 0) -#define DT_N_S_soc_S_timers_40001c00_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001c00, clocks, 0) -#define DT_N_S_soc_S_timers_40001c00_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001c00, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001c00_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001c00, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001c00_P_clocks_LEN 1 -#define DT_N_S_soc_S_timers_40001c00_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40001c00_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_timers_40001c00_P_resets_IDX_0_VAL_id 4615 -#define DT_N_S_soc_S_timers_40001c00_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001c00, resets, 0) -#define DT_N_S_soc_S_timers_40001c00_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001c00, resets, 0) -#define DT_N_S_soc_S_timers_40001c00_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001c00, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001c00_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40001c00, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40001c00_P_resets_LEN 1 -#define DT_N_S_soc_S_timers_40001c00_P_resets_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_st_prescaler 0 -#define DT_N_S_soc_S_timers_40001c00_P_st_prescaler_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_P_st_countermode 0 -#define DT_N_S_soc_S_timers_40001c00_P_st_countermode_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40001c00_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40001c00_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40001c00/counter @@ -37065,6 +37967,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40001c00_S_counter_FULL_NAME "counter" +#define DT_N_S_soc_S_timers_40001c00_S_counter_FULL_NAME_UNQUOTED counter +#define DT_N_S_soc_S_timers_40001c00_S_counter_FULL_NAME_TOKEN counter +#define DT_N_S_soc_S_timers_40001c00_S_counter_FULL_NAME_UPPER_TOKEN COUNTER /* Node parent (/soc/timers@40001c00) identifier: */ #define DT_N_S_soc_S_timers_40001c00_S_counter_PARENT DT_N_S_soc_S_timers_40001c00 @@ -37090,12 +37995,12 @@ #define DT_N_S_soc_S_timers_40001c00_S_counter_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40001c00_S_counter_ORD 271 -#define DT_N_S_soc_S_timers_40001c00_S_counter_ORD_STR_SORTABLE 00271 +#define DT_N_S_soc_S_timers_40001c00_S_counter_ORD 274 +#define DT_N_S_soc_S_timers_40001c00_S_counter_ORD_STR_SORTABLE 00274 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40001c00_S_counter_REQUIRES_ORDS \ - 270, /* /soc/timers@40001c00 */ + 273, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40001c00_S_counter_SUPPORTS_ORDS /* nothing */ @@ -37121,20 +38026,14 @@ #define DT_N_S_soc_S_timers_40001c00_S_counter_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40001c00_S_counter_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40001c00_S_counter_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_S_counter_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40001c00_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_S_counter_P_status "disabled" #define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001c00_S_counter, status, 0) #define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001c00_S_counter, status, 0) #define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001c00_S_counter, status, 0, __VA_ARGS__) @@ -37142,11 +38041,11 @@ #define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_LEN 1 #define DT_N_S_soc_S_timers_40001c00_S_counter_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_S_counter_P_compatible {"st,stm32-counter"} +#define DT_N_S_soc_S_timers_40001c00_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_S_counter_P_compatible_IDX_0 "st,stm32-counter" #define DT_N_S_soc_S_timers_40001c00_S_counter_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-counter #define DT_N_S_soc_S_timers_40001c00_S_counter_P_compatible_IDX_0_STRING_TOKEN st_stm32_counter #define DT_N_S_soc_S_timers_40001c00_S_counter_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_COUNTER -#define DT_N_S_soc_S_timers_40001c00_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_S_counter_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001c00_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40001c00_S_counter_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001c00_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40001c00_S_counter_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001c00_S_counter, compatible, 0, __VA_ARGS__) @@ -37155,6 +38054,10 @@ #define DT_N_S_soc_S_timers_40001c00_S_counter_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_S_counter_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40001c00_S_counter_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_S_counter_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40001c00_S_counter_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_S_counter_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40001c00_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40001c00/pwm @@ -37173,6 +38076,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40001c00_S_pwm_FULL_NAME "pwm" +#define DT_N_S_soc_S_timers_40001c00_S_pwm_FULL_NAME_UNQUOTED pwm +#define DT_N_S_soc_S_timers_40001c00_S_pwm_FULL_NAME_TOKEN pwm +#define DT_N_S_soc_S_timers_40001c00_S_pwm_FULL_NAME_UPPER_TOKEN PWM /* Node parent (/soc/timers@40001c00) identifier: */ #define DT_N_S_soc_S_timers_40001c00_S_pwm_PARENT DT_N_S_soc_S_timers_40001c00 @@ -37198,12 +38104,12 @@ #define DT_N_S_soc_S_timers_40001c00_S_pwm_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40001c00_S_pwm_ORD 272 -#define DT_N_S_soc_S_timers_40001c00_S_pwm_ORD_STR_SORTABLE 00272 +#define DT_N_S_soc_S_timers_40001c00_S_pwm_ORD 275 +#define DT_N_S_soc_S_timers_40001c00_S_pwm_ORD_STR_SORTABLE 00275 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40001c00_S_pwm_REQUIRES_ORDS \ - 270, /* /soc/timers@40001c00 */ + 273, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40001c00_S_pwm_SUPPORTS_ORDS /* nothing */ @@ -37229,20 +38135,16 @@ #define DT_N_S_soc_S_timers_40001c00_S_pwm_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_four_channel_capture_support 0 +#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_four_channel_capture_support_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status "disabled" #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001c00_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001c00_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001c00_S_pwm, status, 0, __VA_ARGS__) @@ -37250,11 +38152,11 @@ #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_LEN 1 #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_compatible {"st,stm32-pwm"} +#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_compatible_IDX_0 "st,stm32-pwm" #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-pwm #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_compatible_IDX_0_STRING_TOKEN st_stm32_pwm #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_PWM -#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40001c00_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40001c00_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40001c00_S_pwm, compatible, 0, __VA_ARGS__) @@ -37263,8 +38165,10 @@ #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40001c00_S_pwm_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_four_channel_capture_support 0 -#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_four_channel_capture_support_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40001c00_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40002000 @@ -37283,6 +38187,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40002000_FULL_NAME "timers@40002000" +#define DT_N_S_soc_S_timers_40002000_FULL_NAME_UNQUOTED timers@40002000 +#define DT_N_S_soc_S_timers_40002000_FULL_NAME_TOKEN timers_40002000 +#define DT_N_S_soc_S_timers_40002000_FULL_NAME_UPPER_TOKEN TIMERS_40002000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timers_40002000_PARENT DT_N_S_soc @@ -37308,20 +38215,20 @@ #define DT_N_S_soc_S_timers_40002000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40002000_ORD 273 -#define DT_N_S_soc_S_timers_40002000_ORD_STR_SORTABLE 00273 +#define DT_N_S_soc_S_timers_40002000_ORD 276 +#define DT_N_S_soc_S_timers_40002000_ORD_STR_SORTABLE 00276 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40002000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40002000_SUPPORTS_ORDS \ - 274, /* /soc/timers@40002000/counter */ \ - 275, /* /soc/timers@40002000/pwm */ + 277, \ + 278, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_timers_40002000_EXISTS 1 @@ -37331,8 +38238,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timers_40002000_REG_NUM 1 #define DT_N_S_soc_S_timers_40002000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_REG_IDX_0_VAL_ADDRESS 1073750016 /* 0x40002000 */ -#define DT_N_S_soc_S_timers_40002000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_timers_40002000_REG_IDX_0_VAL_ADDRESS 1073750016 +#define DT_N_S_soc_S_timers_40002000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_timers_40002000_RANGES_NUM 0 #define DT_N_S_soc_S_timers_40002000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timers_40002000_IRQ_NUM 1 @@ -37360,20 +38267,46 @@ #define DT_N_S_soc_S_timers_40002000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40002000_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40002000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40002000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_P_reg {1073750016, 1024} +#define DT_N_S_soc_S_timers_40002000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_P_reg_IDX_0 1073750016 +#define DT_N_S_soc_S_timers_40002000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_timers_40002000_P_reg_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_timers_40002000_P_clocks_IDX_0_VAL_bus 232 +#define DT_N_S_soc_S_timers_40002000_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_P_clocks_IDX_0_VAL_bits 256 +#define DT_N_S_soc_S_timers_40002000_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002000, clocks, 0) +#define DT_N_S_soc_S_timers_40002000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002000, clocks, 0) +#define DT_N_S_soc_S_timers_40002000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40002000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40002000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40002000_P_clocks_LEN 1 +#define DT_N_S_soc_S_timers_40002000_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_timers_40002000_P_resets_IDX_0_VAL_id 4616 +#define DT_N_S_soc_S_timers_40002000_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002000, resets, 0) +#define DT_N_S_soc_S_timers_40002000_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002000, resets, 0) +#define DT_N_S_soc_S_timers_40002000_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002000, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40002000_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40002000, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40002000_P_resets_LEN 1 +#define DT_N_S_soc_S_timers_40002000_P_resets_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_P_st_prescaler 0 +#define DT_N_S_soc_S_timers_40002000_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_P_st_countermode 0 +#define DT_N_S_soc_S_timers_40002000_P_st_countermode_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_P_status "disabled" #define DT_N_S_soc_S_timers_40002000_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40002000_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40002000_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40002000_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40002000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40002000_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40002000_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40002000_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40002000_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002000, status, 0) #define DT_N_S_soc_S_timers_40002000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002000, status, 0) #define DT_N_S_soc_S_timers_40002000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002000, status, 0, __VA_ARGS__) @@ -37381,69 +38314,41 @@ #define DT_N_S_soc_S_timers_40002000_P_status_LEN 1 #define DT_N_S_soc_S_timers_40002000_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_P_compatible {"st,stm32-timers"} +#define DT_N_S_soc_S_timers_40002000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_P_compatible_IDX_0 "st,stm32-timers" #define DT_N_S_soc_S_timers_40002000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-timers #define DT_N_S_soc_S_timers_40002000_P_compatible_IDX_0_STRING_TOKEN st_stm32_timers #define DT_N_S_soc_S_timers_40002000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_TIMERS -#define DT_N_S_soc_S_timers_40002000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002000, compatible, 0) #define DT_N_S_soc_S_timers_40002000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002000, compatible, 0) #define DT_N_S_soc_S_timers_40002000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40002000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40002000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40002000_P_compatible_LEN 1 #define DT_N_S_soc_S_timers_40002000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_reg {1073750016 /* 0x40002000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_timers_40002000_P_reg_IDX_0 1073750016 -#define DT_N_S_soc_S_timers_40002000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_timers_40002000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_interrupts {45 /* 0x2d */, 0 /* 0x0 */} -#define DT_N_S_soc_S_timers_40002000_P_interrupts_IDX_0 45 +#define DT_N_S_soc_S_timers_40002000_P_interrupts {45, 0} #define DT_N_S_soc_S_timers_40002000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_timers_40002000_P_interrupts_IDX_0 45 #define DT_N_S_soc_S_timers_40002000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_timers_40002000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_P_interrupt_names {"global"} +#define DT_N_S_soc_S_timers_40002000_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_P_interrupt_names_IDX_0 "global" #define DT_N_S_soc_S_timers_40002000_P_interrupt_names_IDX_0_STRING_UNQUOTED global #define DT_N_S_soc_S_timers_40002000_P_interrupt_names_IDX_0_STRING_TOKEN global #define DT_N_S_soc_S_timers_40002000_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN GLOBAL -#define DT_N_S_soc_S_timers_40002000_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002000, interrupt_names, 0) #define DT_N_S_soc_S_timers_40002000_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002000, interrupt_names, 0) #define DT_N_S_soc_S_timers_40002000_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002000, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40002000_P_interrupt_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40002000, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40002000_P_interrupt_names_LEN 1 #define DT_N_S_soc_S_timers_40002000_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_timers_40002000_P_clocks_IDX_0_VAL_bus 232 -#define DT_N_S_soc_S_timers_40002000_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_clocks_IDX_0_VAL_bits 256 -#define DT_N_S_soc_S_timers_40002000_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002000, clocks, 0) -#define DT_N_S_soc_S_timers_40002000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002000, clocks, 0) -#define DT_N_S_soc_S_timers_40002000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40002000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40002000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40002000_P_clocks_LEN 1 -#define DT_N_S_soc_S_timers_40002000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40002000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_timers_40002000_P_resets_IDX_0_VAL_id 4616 -#define DT_N_S_soc_S_timers_40002000_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002000, resets, 0) -#define DT_N_S_soc_S_timers_40002000_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002000, resets, 0) -#define DT_N_S_soc_S_timers_40002000_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002000, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40002000_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40002000, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40002000_P_resets_LEN 1 -#define DT_N_S_soc_S_timers_40002000_P_resets_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_st_prescaler 0 -#define DT_N_S_soc_S_timers_40002000_P_st_prescaler_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_P_st_countermode 0 -#define DT_N_S_soc_S_timers_40002000_P_st_countermode_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40002000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40002000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40002000/counter @@ -37462,6 +38367,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40002000_S_counter_FULL_NAME "counter" +#define DT_N_S_soc_S_timers_40002000_S_counter_FULL_NAME_UNQUOTED counter +#define DT_N_S_soc_S_timers_40002000_S_counter_FULL_NAME_TOKEN counter +#define DT_N_S_soc_S_timers_40002000_S_counter_FULL_NAME_UPPER_TOKEN COUNTER /* Node parent (/soc/timers@40002000) identifier: */ #define DT_N_S_soc_S_timers_40002000_S_counter_PARENT DT_N_S_soc_S_timers_40002000 @@ -37487,12 +38395,12 @@ #define DT_N_S_soc_S_timers_40002000_S_counter_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40002000_S_counter_ORD 274 -#define DT_N_S_soc_S_timers_40002000_S_counter_ORD_STR_SORTABLE 00274 +#define DT_N_S_soc_S_timers_40002000_S_counter_ORD 277 +#define DT_N_S_soc_S_timers_40002000_S_counter_ORD_STR_SORTABLE 00277 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40002000_S_counter_REQUIRES_ORDS \ - 273, /* /soc/timers@40002000 */ + 276, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40002000_S_counter_SUPPORTS_ORDS /* nothing */ @@ -37518,20 +38426,14 @@ #define DT_N_S_soc_S_timers_40002000_S_counter_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40002000_S_counter_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40002000_S_counter_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_S_counter_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40002000_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_S_counter_P_status "disabled" #define DT_N_S_soc_S_timers_40002000_S_counter_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40002000_S_counter_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40002000_S_counter_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40002000_S_counter_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40002000_S_counter_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_S_counter_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40002000_S_counter_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_S_counter_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40002000_S_counter_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40002000_S_counter_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40002000_S_counter_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_S_counter_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002000_S_counter, status, 0) #define DT_N_S_soc_S_timers_40002000_S_counter_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002000_S_counter, status, 0) #define DT_N_S_soc_S_timers_40002000_S_counter_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002000_S_counter, status, 0, __VA_ARGS__) @@ -37539,11 +38441,11 @@ #define DT_N_S_soc_S_timers_40002000_S_counter_P_status_LEN 1 #define DT_N_S_soc_S_timers_40002000_S_counter_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_S_counter_P_compatible {"st,stm32-counter"} +#define DT_N_S_soc_S_timers_40002000_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_S_counter_P_compatible_IDX_0 "st,stm32-counter" #define DT_N_S_soc_S_timers_40002000_S_counter_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-counter #define DT_N_S_soc_S_timers_40002000_S_counter_P_compatible_IDX_0_STRING_TOKEN st_stm32_counter #define DT_N_S_soc_S_timers_40002000_S_counter_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_COUNTER -#define DT_N_S_soc_S_timers_40002000_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_S_counter_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002000_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40002000_S_counter_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002000_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40002000_S_counter_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002000_S_counter, compatible, 0, __VA_ARGS__) @@ -37552,6 +38454,10 @@ #define DT_N_S_soc_S_timers_40002000_S_counter_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_S_counter_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40002000_S_counter_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_S_counter_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40002000_S_counter_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_S_counter_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40002000_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40002000/pwm @@ -37570,6 +38476,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40002000_S_pwm_FULL_NAME "pwm" +#define DT_N_S_soc_S_timers_40002000_S_pwm_FULL_NAME_UNQUOTED pwm +#define DT_N_S_soc_S_timers_40002000_S_pwm_FULL_NAME_TOKEN pwm +#define DT_N_S_soc_S_timers_40002000_S_pwm_FULL_NAME_UPPER_TOKEN PWM /* Node parent (/soc/timers@40002000) identifier: */ #define DT_N_S_soc_S_timers_40002000_S_pwm_PARENT DT_N_S_soc_S_timers_40002000 @@ -37595,12 +38504,12 @@ #define DT_N_S_soc_S_timers_40002000_S_pwm_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40002000_S_pwm_ORD 275 -#define DT_N_S_soc_S_timers_40002000_S_pwm_ORD_STR_SORTABLE 00275 +#define DT_N_S_soc_S_timers_40002000_S_pwm_ORD 278 +#define DT_N_S_soc_S_timers_40002000_S_pwm_ORD_STR_SORTABLE 00278 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40002000_S_pwm_REQUIRES_ORDS \ - 273, /* /soc/timers@40002000 */ + 276, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40002000_S_pwm_SUPPORTS_ORDS /* nothing */ @@ -37626,20 +38535,16 @@ #define DT_N_S_soc_S_timers_40002000_S_pwm_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40002000_S_pwm_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40002000_S_pwm_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_S_pwm_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40002000_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_S_pwm_P_four_channel_capture_support 0 +#define DT_N_S_soc_S_timers_40002000_S_pwm_P_four_channel_capture_support_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_S_pwm_P_status "disabled" #define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002000_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002000_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002000_S_pwm, status, 0, __VA_ARGS__) @@ -37647,11 +38552,11 @@ #define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_LEN 1 #define DT_N_S_soc_S_timers_40002000_S_pwm_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_S_pwm_P_compatible {"st,stm32-pwm"} +#define DT_N_S_soc_S_timers_40002000_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_S_pwm_P_compatible_IDX_0 "st,stm32-pwm" #define DT_N_S_soc_S_timers_40002000_S_pwm_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-pwm #define DT_N_S_soc_S_timers_40002000_S_pwm_P_compatible_IDX_0_STRING_TOKEN st_stm32_pwm #define DT_N_S_soc_S_timers_40002000_S_pwm_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_PWM -#define DT_N_S_soc_S_timers_40002000_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_S_pwm_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40002000_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40002000_S_pwm_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40002000_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40002000_S_pwm_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40002000_S_pwm, compatible, 0, __VA_ARGS__) @@ -37660,8 +38565,10 @@ #define DT_N_S_soc_S_timers_40002000_S_pwm_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40002000_S_pwm_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40002000_S_pwm_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40002000_S_pwm_P_four_channel_capture_support 0 -#define DT_N_S_soc_S_timers_40002000_S_pwm_P_four_channel_capture_support_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_S_pwm_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40002000_S_pwm_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40002000_S_pwm_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40002000_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40010000/pwm/pwmclock @@ -37680,6 +38587,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_FULL_NAME "pwmclock" +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_FULL_NAME_UNQUOTED pwmclock +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_FULL_NAME_TOKEN pwmclock +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_FULL_NAME_UPPER_TOKEN PWMCLOCK /* Node parent (/soc/timers@40010000/pwm) identifier: */ #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_PARENT DT_N_S_soc_S_timers_40010000_S_pwm @@ -37705,12 +38615,12 @@ #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_ORD 276 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_ORD_STR_SORTABLE 00276 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_ORD 279 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_ORD_STR_SORTABLE 00279 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_REQUIRES_ORDS \ - 87, /* /soc/timers@40010000/pwm */ + 87, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_SUPPORTS_ORDS /* nothing */ @@ -37733,20 +38643,32 @@ #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_PH DT_N_S_soc_S_timers_40010000_S_pwm +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_VAL_channel 3 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_VAL_channel_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_VAL_period 166 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_VAL_period_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_VAL_flags 0 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_VAL_flags_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, pwms, 0) +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, pwms, 0) +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, pwms, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, pwms, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_LEN 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_clock_frequency 0 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_clock_frequency_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwm_on_delay 0 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwm_on_delay_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status "okay" #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_STRING_UNQUOTED okay #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_STRING_TOKEN okay #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_STRING_UPPER_TOKEN OKAY #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_IDX_0 "okay" #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_ENUM_IDX 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_ENUM_VAL_okay_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_ENUM_TOKEN okay -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_ENUM_UPPER_TOKEN OKAY +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_IDX_0_ENUM_IDX 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_IDX_0_ENUM_VAL_okay_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, status, 0) #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, status, 0) #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, status, 0, __VA_ARGS__) @@ -37754,11 +38676,11 @@ #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_LEN 1 #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_compatible {"pwm-clock"} +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_compatible_IDX_0 "pwm-clock" #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_compatible_IDX_0_STRING_UNQUOTED pwm-clock #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_compatible_IDX_0_STRING_TOKEN pwm_clock #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_compatible_IDX_0_STRING_UPPER_TOKEN PWM_CLOCK -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, compatible, 0) #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, compatible, 0) #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, compatible, 0, __VA_ARGS__) @@ -37767,24 +38689,10 @@ #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_PH DT_N_S_soc_S_timers_40010000_S_pwm -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_VAL_channel 3 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_VAL_channel_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_VAL_period 166 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_VAL_period_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_VAL_flags 0 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_IDX_0_VAL_flags_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, pwms, 0) -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, pwms, 0) -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, pwms, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, pwms, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_LEN 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwms_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_clock_frequency 0 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_clock_frequency_EXISTS 1 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwm_on_delay 0 -#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_pwm_on_delay_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40010400 @@ -37803,6 +38711,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40010400_FULL_NAME "timers@40010400" +#define DT_N_S_soc_S_timers_40010400_FULL_NAME_UNQUOTED timers@40010400 +#define DT_N_S_soc_S_timers_40010400_FULL_NAME_TOKEN timers_40010400 +#define DT_N_S_soc_S_timers_40010400_FULL_NAME_UPPER_TOKEN TIMERS_40010400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timers_40010400_PARENT DT_N_S_soc @@ -37828,19 +38739,19 @@ #define DT_N_S_soc_S_timers_40010400_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40010400_ORD 277 -#define DT_N_S_soc_S_timers_40010400_ORD_STR_SORTABLE 00277 +#define DT_N_S_soc_S_timers_40010400_ORD 280 +#define DT_N_S_soc_S_timers_40010400_ORD_STR_SORTABLE 00280 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40010400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40010400_SUPPORTS_ORDS \ - 278, /* /soc/timers@40010400/pwm */ + 281, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_timers_40010400_EXISTS 1 @@ -37850,8 +38761,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timers_40010400_REG_NUM 1 #define DT_N_S_soc_S_timers_40010400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_REG_IDX_0_VAL_ADDRESS 1073808384 /* 0x40010400 */ -#define DT_N_S_soc_S_timers_40010400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_timers_40010400_REG_IDX_0_VAL_ADDRESS 1073808384 +#define DT_N_S_soc_S_timers_40010400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_timers_40010400_RANGES_NUM 0 #define DT_N_S_soc_S_timers_40010400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timers_40010400_IRQ_NUM 4 @@ -37915,20 +38826,46 @@ #define DT_N_S_soc_S_timers_40010400_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40010400_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40010400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40010400_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_reg {1073808384, 1024} +#define DT_N_S_soc_S_timers_40010400_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_reg_IDX_0 1073808384 +#define DT_N_S_soc_S_timers_40010400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_timers_40010400_P_reg_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_timers_40010400_P_clocks_IDX_0_VAL_bus 240 +#define DT_N_S_soc_S_timers_40010400_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_clocks_IDX_0_VAL_bits 2 +#define DT_N_S_soc_S_timers_40010400_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010400, clocks, 0) +#define DT_N_S_soc_S_timers_40010400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010400, clocks, 0) +#define DT_N_S_soc_S_timers_40010400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010400, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40010400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010400, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40010400_P_clocks_LEN 1 +#define DT_N_S_soc_S_timers_40010400_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_timers_40010400_P_resets_IDX_0_VAL_id 4865 +#define DT_N_S_soc_S_timers_40010400_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010400, resets, 0) +#define DT_N_S_soc_S_timers_40010400_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010400, resets, 0) +#define DT_N_S_soc_S_timers_40010400_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010400, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40010400_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010400, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40010400_P_resets_LEN 1 +#define DT_N_S_soc_S_timers_40010400_P_resets_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_st_prescaler 0 +#define DT_N_S_soc_S_timers_40010400_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_st_countermode 0 +#define DT_N_S_soc_S_timers_40010400_P_st_countermode_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_P_status "disabled" #define DT_N_S_soc_S_timers_40010400_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40010400_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40010400_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40010400_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40010400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40010400_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40010400_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40010400_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40010400_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010400, status, 0) #define DT_N_S_soc_S_timers_40010400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010400, status, 0) #define DT_N_S_soc_S_timers_40010400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010400, status, 0, __VA_ARGS__) @@ -37936,62 +38873,56 @@ #define DT_N_S_soc_S_timers_40010400_P_status_LEN 1 #define DT_N_S_soc_S_timers_40010400_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_P_compatible {"st,stm32-timers"} +#define DT_N_S_soc_S_timers_40010400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_P_compatible_IDX_0 "st,stm32-timers" #define DT_N_S_soc_S_timers_40010400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-timers #define DT_N_S_soc_S_timers_40010400_P_compatible_IDX_0_STRING_TOKEN st_stm32_timers #define DT_N_S_soc_S_timers_40010400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_TIMERS -#define DT_N_S_soc_S_timers_40010400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010400, compatible, 0) #define DT_N_S_soc_S_timers_40010400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010400, compatible, 0) #define DT_N_S_soc_S_timers_40010400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40010400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40010400_P_compatible_LEN 1 #define DT_N_S_soc_S_timers_40010400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_reg {1073808384 /* 0x40010400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_timers_40010400_P_reg_IDX_0 1073808384 -#define DT_N_S_soc_S_timers_40010400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_timers_40010400_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_interrupts {43 /* 0x2b */, 0 /* 0x0 */, 44 /* 0x2c */, 0 /* 0x0 */, 45 /* 0x2d */, 0 /* 0x0 */, 46 /* 0x2e */, 0 /* 0x0 */} -#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_0 43 +#define DT_N_S_soc_S_timers_40010400_P_interrupts {43, 0, 44, 0, 45, 0, 46, 0} #define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_0 43 #define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_2 44 +#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_2_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_3 0 +#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_2 44 #define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_3_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_4 45 +#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_3 0 #define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_4_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_5 0 +#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_4 45 #define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_5_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_6 46 +#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_5 0 #define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_6_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_7 0 +#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_6 46 #define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_7_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_interrupts_IDX_7 0 #define DT_N_S_soc_S_timers_40010400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_P_interrupt_names {"brk", "up", "trgcom", "cc"} +#define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_0 "brk" #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_0_STRING_UNQUOTED brk #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_0_STRING_TOKEN brk #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN BRK -#define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_1_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_1 "up" #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_1_STRING_UNQUOTED up #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_1_STRING_TOKEN up #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_1_STRING_UPPER_TOKEN UP -#define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_2_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_2 "trgcom" #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_2_STRING_UNQUOTED trgcom #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_2_STRING_TOKEN trgcom #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_2_STRING_UPPER_TOKEN TRGCOM -#define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_2_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_3_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_3 "cc" #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_3_STRING_UNQUOTED cc #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_3_STRING_TOKEN cc #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_3_STRING_UPPER_TOKEN CC -#define DT_N_S_soc_S_timers_40010400_P_interrupt_names_IDX_3_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010400, interrupt_names, 0) \ fn(DT_N_S_soc_S_timers_40010400, interrupt_names, 1) \ fn(DT_N_S_soc_S_timers_40010400, interrupt_names, 2) \ @@ -38010,34 +38941,12 @@ fn(DT_N_S_soc_S_timers_40010400, interrupt_names, 3, __VA_ARGS__) #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_LEN 4 #define DT_N_S_soc_S_timers_40010400_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_timers_40010400_P_clocks_IDX_0_VAL_bus 240 -#define DT_N_S_soc_S_timers_40010400_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_clocks_IDX_0_VAL_bits 2 -#define DT_N_S_soc_S_timers_40010400_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010400, clocks, 0) -#define DT_N_S_soc_S_timers_40010400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010400, clocks, 0) -#define DT_N_S_soc_S_timers_40010400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010400, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40010400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010400, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40010400_P_clocks_LEN 1 -#define DT_N_S_soc_S_timers_40010400_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40010400_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_timers_40010400_P_resets_IDX_0_VAL_id 4865 -#define DT_N_S_soc_S_timers_40010400_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010400, resets, 0) -#define DT_N_S_soc_S_timers_40010400_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010400, resets, 0) -#define DT_N_S_soc_S_timers_40010400_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010400, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40010400_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40010400, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40010400_P_resets_LEN 1 -#define DT_N_S_soc_S_timers_40010400_P_resets_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_st_prescaler 0 -#define DT_N_S_soc_S_timers_40010400_P_st_prescaler_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_P_st_countermode 0 -#define DT_N_S_soc_S_timers_40010400_P_st_countermode_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40010400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40010400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40010400/pwm @@ -38056,6 +38965,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40010400_S_pwm_FULL_NAME "pwm" +#define DT_N_S_soc_S_timers_40010400_S_pwm_FULL_NAME_UNQUOTED pwm +#define DT_N_S_soc_S_timers_40010400_S_pwm_FULL_NAME_TOKEN pwm +#define DT_N_S_soc_S_timers_40010400_S_pwm_FULL_NAME_UPPER_TOKEN PWM /* Node parent (/soc/timers@40010400) identifier: */ #define DT_N_S_soc_S_timers_40010400_S_pwm_PARENT DT_N_S_soc_S_timers_40010400 @@ -38081,12 +38993,12 @@ #define DT_N_S_soc_S_timers_40010400_S_pwm_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40010400_S_pwm_ORD 278 -#define DT_N_S_soc_S_timers_40010400_S_pwm_ORD_STR_SORTABLE 00278 +#define DT_N_S_soc_S_timers_40010400_S_pwm_ORD 281 +#define DT_N_S_soc_S_timers_40010400_S_pwm_ORD_STR_SORTABLE 00281 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40010400_S_pwm_REQUIRES_ORDS \ - 277, /* /soc/timers@40010400 */ + 280, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40010400_S_pwm_SUPPORTS_ORDS /* nothing */ @@ -38112,20 +39024,16 @@ #define DT_N_S_soc_S_timers_40010400_S_pwm_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40010400_S_pwm_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40010400_S_pwm_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_S_pwm_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40010400_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_S_pwm_P_four_channel_capture_support 0 +#define DT_N_S_soc_S_timers_40010400_S_pwm_P_four_channel_capture_support_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_S_pwm_P_status "disabled" #define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010400_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010400_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010400_S_pwm, status, 0, __VA_ARGS__) @@ -38133,11 +39041,11 @@ #define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_LEN 1 #define DT_N_S_soc_S_timers_40010400_S_pwm_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_S_pwm_P_compatible {"st,stm32-pwm"} +#define DT_N_S_soc_S_timers_40010400_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_S_pwm_P_compatible_IDX_0 "st,stm32-pwm" #define DT_N_S_soc_S_timers_40010400_S_pwm_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-pwm #define DT_N_S_soc_S_timers_40010400_S_pwm_P_compatible_IDX_0_STRING_TOKEN st_stm32_pwm #define DT_N_S_soc_S_timers_40010400_S_pwm_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_PWM -#define DT_N_S_soc_S_timers_40010400_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_S_pwm_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40010400_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40010400_S_pwm_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40010400_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40010400_S_pwm_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40010400_S_pwm, compatible, 0, __VA_ARGS__) @@ -38146,8 +39054,10 @@ #define DT_N_S_soc_S_timers_40010400_S_pwm_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40010400_S_pwm_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40010400_S_pwm_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40010400_S_pwm_P_four_channel_capture_support 0 -#define DT_N_S_soc_S_timers_40010400_S_pwm_P_four_channel_capture_support_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_S_pwm_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40010400_S_pwm_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40010400_S_pwm_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40010400_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40014000 @@ -38166,6 +39076,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40014000_FULL_NAME "timers@40014000" +#define DT_N_S_soc_S_timers_40014000_FULL_NAME_UNQUOTED timers@40014000 +#define DT_N_S_soc_S_timers_40014000_FULL_NAME_TOKEN timers_40014000 +#define DT_N_S_soc_S_timers_40014000_FULL_NAME_UPPER_TOKEN TIMERS_40014000 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timers_40014000_PARENT DT_N_S_soc @@ -38191,20 +39104,20 @@ #define DT_N_S_soc_S_timers_40014000_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40014000_ORD 279 -#define DT_N_S_soc_S_timers_40014000_ORD_STR_SORTABLE 00279 +#define DT_N_S_soc_S_timers_40014000_ORD 282 +#define DT_N_S_soc_S_timers_40014000_ORD_STR_SORTABLE 00282 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40014000_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40014000_SUPPORTS_ORDS \ - 280, /* /soc/timers@40014000/counter */ \ - 281, /* /soc/timers@40014000/pwm */ + 283, \ + 284, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_timers_40014000_EXISTS 1 @@ -38214,8 +39127,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timers_40014000_REG_NUM 1 #define DT_N_S_soc_S_timers_40014000_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_REG_IDX_0_VAL_ADDRESS 1073823744 /* 0x40014000 */ -#define DT_N_S_soc_S_timers_40014000_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_timers_40014000_REG_IDX_0_VAL_ADDRESS 1073823744 +#define DT_N_S_soc_S_timers_40014000_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_timers_40014000_RANGES_NUM 0 #define DT_N_S_soc_S_timers_40014000_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timers_40014000_IRQ_NUM 1 @@ -38243,20 +39156,46 @@ #define DT_N_S_soc_S_timers_40014000_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40014000_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40014000_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40014000_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_P_reg {1073823744, 1024} +#define DT_N_S_soc_S_timers_40014000_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_P_reg_IDX_0 1073823744 +#define DT_N_S_soc_S_timers_40014000_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_timers_40014000_P_reg_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_timers_40014000_P_clocks_IDX_0_VAL_bus 240 +#define DT_N_S_soc_S_timers_40014000_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_P_clocks_IDX_0_VAL_bits 65536 +#define DT_N_S_soc_S_timers_40014000_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014000, clocks, 0) +#define DT_N_S_soc_S_timers_40014000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014000, clocks, 0) +#define DT_N_S_soc_S_timers_40014000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40014000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014000, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40014000_P_clocks_LEN 1 +#define DT_N_S_soc_S_timers_40014000_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_timers_40014000_P_resets_IDX_0_VAL_id 4880 +#define DT_N_S_soc_S_timers_40014000_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014000, resets, 0) +#define DT_N_S_soc_S_timers_40014000_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014000, resets, 0) +#define DT_N_S_soc_S_timers_40014000_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014000, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40014000_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014000, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40014000_P_resets_LEN 1 +#define DT_N_S_soc_S_timers_40014000_P_resets_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_P_st_prescaler 0 +#define DT_N_S_soc_S_timers_40014000_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_P_st_countermode 0 +#define DT_N_S_soc_S_timers_40014000_P_st_countermode_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_P_status "disabled" #define DT_N_S_soc_S_timers_40014000_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40014000_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40014000_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40014000_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40014000_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40014000_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40014000_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40014000_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40014000_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014000, status, 0) #define DT_N_S_soc_S_timers_40014000_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014000, status, 0) #define DT_N_S_soc_S_timers_40014000_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014000, status, 0, __VA_ARGS__) @@ -38264,69 +39203,41 @@ #define DT_N_S_soc_S_timers_40014000_P_status_LEN 1 #define DT_N_S_soc_S_timers_40014000_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_P_compatible {"st,stm32-timers"} +#define DT_N_S_soc_S_timers_40014000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_P_compatible_IDX_0 "st,stm32-timers" #define DT_N_S_soc_S_timers_40014000_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-timers #define DT_N_S_soc_S_timers_40014000_P_compatible_IDX_0_STRING_TOKEN st_stm32_timers #define DT_N_S_soc_S_timers_40014000_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_TIMERS -#define DT_N_S_soc_S_timers_40014000_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014000, compatible, 0) #define DT_N_S_soc_S_timers_40014000_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014000, compatible, 0) #define DT_N_S_soc_S_timers_40014000_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40014000_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014000, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40014000_P_compatible_LEN 1 #define DT_N_S_soc_S_timers_40014000_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_reg {1073823744 /* 0x40014000 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_timers_40014000_P_reg_IDX_0 1073823744 -#define DT_N_S_soc_S_timers_40014000_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_timers_40014000_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_reg_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_interrupts {116 /* 0x74 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_timers_40014000_P_interrupts_IDX_0 116 +#define DT_N_S_soc_S_timers_40014000_P_interrupts {116, 0} #define DT_N_S_soc_S_timers_40014000_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_timers_40014000_P_interrupts_IDX_0 116 #define DT_N_S_soc_S_timers_40014000_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_timers_40014000_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_P_interrupt_names {"global"} +#define DT_N_S_soc_S_timers_40014000_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_P_interrupt_names_IDX_0 "global" #define DT_N_S_soc_S_timers_40014000_P_interrupt_names_IDX_0_STRING_UNQUOTED global #define DT_N_S_soc_S_timers_40014000_P_interrupt_names_IDX_0_STRING_TOKEN global #define DT_N_S_soc_S_timers_40014000_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN GLOBAL -#define DT_N_S_soc_S_timers_40014000_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014000, interrupt_names, 0) #define DT_N_S_soc_S_timers_40014000_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014000, interrupt_names, 0) #define DT_N_S_soc_S_timers_40014000_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014000, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40014000_P_interrupt_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014000, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40014000_P_interrupt_names_LEN 1 #define DT_N_S_soc_S_timers_40014000_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_timers_40014000_P_clocks_IDX_0_VAL_bus 240 -#define DT_N_S_soc_S_timers_40014000_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_clocks_IDX_0_VAL_bits 65536 -#define DT_N_S_soc_S_timers_40014000_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014000, clocks, 0) -#define DT_N_S_soc_S_timers_40014000_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014000, clocks, 0) -#define DT_N_S_soc_S_timers_40014000_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40014000_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014000, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40014000_P_clocks_LEN 1 -#define DT_N_S_soc_S_timers_40014000_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40014000_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_timers_40014000_P_resets_IDX_0_VAL_id 4880 -#define DT_N_S_soc_S_timers_40014000_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014000, resets, 0) -#define DT_N_S_soc_S_timers_40014000_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014000, resets, 0) -#define DT_N_S_soc_S_timers_40014000_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014000, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40014000_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014000, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40014000_P_resets_LEN 1 -#define DT_N_S_soc_S_timers_40014000_P_resets_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_st_prescaler 0 -#define DT_N_S_soc_S_timers_40014000_P_st_prescaler_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_P_st_countermode 0 -#define DT_N_S_soc_S_timers_40014000_P_st_countermode_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40014000_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40014000_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40014000/counter @@ -38345,6 +39256,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40014000_S_counter_FULL_NAME "counter" +#define DT_N_S_soc_S_timers_40014000_S_counter_FULL_NAME_UNQUOTED counter +#define DT_N_S_soc_S_timers_40014000_S_counter_FULL_NAME_TOKEN counter +#define DT_N_S_soc_S_timers_40014000_S_counter_FULL_NAME_UPPER_TOKEN COUNTER /* Node parent (/soc/timers@40014000) identifier: */ #define DT_N_S_soc_S_timers_40014000_S_counter_PARENT DT_N_S_soc_S_timers_40014000 @@ -38370,12 +39284,12 @@ #define DT_N_S_soc_S_timers_40014000_S_counter_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40014000_S_counter_ORD 280 -#define DT_N_S_soc_S_timers_40014000_S_counter_ORD_STR_SORTABLE 00280 +#define DT_N_S_soc_S_timers_40014000_S_counter_ORD 283 +#define DT_N_S_soc_S_timers_40014000_S_counter_ORD_STR_SORTABLE 00283 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40014000_S_counter_REQUIRES_ORDS \ - 279, /* /soc/timers@40014000 */ + 282, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40014000_S_counter_SUPPORTS_ORDS /* nothing */ @@ -38401,20 +39315,14 @@ #define DT_N_S_soc_S_timers_40014000_S_counter_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40014000_S_counter_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40014000_S_counter_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_S_counter_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40014000_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_S_counter_P_status "disabled" #define DT_N_S_soc_S_timers_40014000_S_counter_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40014000_S_counter_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40014000_S_counter_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40014000_S_counter_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40014000_S_counter_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_S_counter_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40014000_S_counter_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_S_counter_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40014000_S_counter_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40014000_S_counter_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40014000_S_counter_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_S_counter_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014000_S_counter, status, 0) #define DT_N_S_soc_S_timers_40014000_S_counter_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014000_S_counter, status, 0) #define DT_N_S_soc_S_timers_40014000_S_counter_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014000_S_counter, status, 0, __VA_ARGS__) @@ -38422,11 +39330,11 @@ #define DT_N_S_soc_S_timers_40014000_S_counter_P_status_LEN 1 #define DT_N_S_soc_S_timers_40014000_S_counter_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_S_counter_P_compatible {"st,stm32-counter"} +#define DT_N_S_soc_S_timers_40014000_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_S_counter_P_compatible_IDX_0 "st,stm32-counter" #define DT_N_S_soc_S_timers_40014000_S_counter_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-counter #define DT_N_S_soc_S_timers_40014000_S_counter_P_compatible_IDX_0_STRING_TOKEN st_stm32_counter #define DT_N_S_soc_S_timers_40014000_S_counter_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_COUNTER -#define DT_N_S_soc_S_timers_40014000_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_S_counter_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014000_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40014000_S_counter_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014000_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40014000_S_counter_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014000_S_counter, compatible, 0, __VA_ARGS__) @@ -38435,6 +39343,10 @@ #define DT_N_S_soc_S_timers_40014000_S_counter_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_S_counter_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40014000_S_counter_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_S_counter_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40014000_S_counter_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_S_counter_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40014000_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40014000/pwm @@ -38453,6 +39365,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40014000_S_pwm_FULL_NAME "pwm" +#define DT_N_S_soc_S_timers_40014000_S_pwm_FULL_NAME_UNQUOTED pwm +#define DT_N_S_soc_S_timers_40014000_S_pwm_FULL_NAME_TOKEN pwm +#define DT_N_S_soc_S_timers_40014000_S_pwm_FULL_NAME_UPPER_TOKEN PWM /* Node parent (/soc/timers@40014000) identifier: */ #define DT_N_S_soc_S_timers_40014000_S_pwm_PARENT DT_N_S_soc_S_timers_40014000 @@ -38478,12 +39393,12 @@ #define DT_N_S_soc_S_timers_40014000_S_pwm_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40014000_S_pwm_ORD 281 -#define DT_N_S_soc_S_timers_40014000_S_pwm_ORD_STR_SORTABLE 00281 +#define DT_N_S_soc_S_timers_40014000_S_pwm_ORD 284 +#define DT_N_S_soc_S_timers_40014000_S_pwm_ORD_STR_SORTABLE 00284 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40014000_S_pwm_REQUIRES_ORDS \ - 279, /* /soc/timers@40014000 */ + 282, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40014000_S_pwm_SUPPORTS_ORDS /* nothing */ @@ -38509,20 +39424,16 @@ #define DT_N_S_soc_S_timers_40014000_S_pwm_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40014000_S_pwm_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40014000_S_pwm_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_S_pwm_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40014000_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_S_pwm_P_four_channel_capture_support 0 +#define DT_N_S_soc_S_timers_40014000_S_pwm_P_four_channel_capture_support_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_S_pwm_P_status "disabled" #define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014000_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014000_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014000_S_pwm, status, 0, __VA_ARGS__) @@ -38530,11 +39441,11 @@ #define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_LEN 1 #define DT_N_S_soc_S_timers_40014000_S_pwm_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_S_pwm_P_compatible {"st,stm32-pwm"} +#define DT_N_S_soc_S_timers_40014000_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_S_pwm_P_compatible_IDX_0 "st,stm32-pwm" #define DT_N_S_soc_S_timers_40014000_S_pwm_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-pwm #define DT_N_S_soc_S_timers_40014000_S_pwm_P_compatible_IDX_0_STRING_TOKEN st_stm32_pwm #define DT_N_S_soc_S_timers_40014000_S_pwm_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_PWM -#define DT_N_S_soc_S_timers_40014000_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_S_pwm_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014000_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40014000_S_pwm_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014000_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40014000_S_pwm_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014000_S_pwm, compatible, 0, __VA_ARGS__) @@ -38543,8 +39454,10 @@ #define DT_N_S_soc_S_timers_40014000_S_pwm_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40014000_S_pwm_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40014000_S_pwm_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40014000_S_pwm_P_four_channel_capture_support 0 -#define DT_N_S_soc_S_timers_40014000_S_pwm_P_four_channel_capture_support_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_S_pwm_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40014000_S_pwm_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40014000_S_pwm_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40014000_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40014400 @@ -38563,6 +39476,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40014400_FULL_NAME "timers@40014400" +#define DT_N_S_soc_S_timers_40014400_FULL_NAME_UNQUOTED timers@40014400 +#define DT_N_S_soc_S_timers_40014400_FULL_NAME_TOKEN timers_40014400 +#define DT_N_S_soc_S_timers_40014400_FULL_NAME_UPPER_TOKEN TIMERS_40014400 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timers_40014400_PARENT DT_N_S_soc @@ -38588,20 +39504,20 @@ #define DT_N_S_soc_S_timers_40014400_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40014400_ORD 282 -#define DT_N_S_soc_S_timers_40014400_ORD_STR_SORTABLE 00282 +#define DT_N_S_soc_S_timers_40014400_ORD 285 +#define DT_N_S_soc_S_timers_40014400_ORD_STR_SORTABLE 00285 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40014400_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40014400_SUPPORTS_ORDS \ - 283, /* /soc/timers@40014400/counter */ \ - 284, /* /soc/timers@40014400/pwm */ + 286, \ + 287, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_timers_40014400_EXISTS 1 @@ -38611,8 +39527,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timers_40014400_REG_NUM 1 #define DT_N_S_soc_S_timers_40014400_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_REG_IDX_0_VAL_ADDRESS 1073824768 /* 0x40014400 */ -#define DT_N_S_soc_S_timers_40014400_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_timers_40014400_REG_IDX_0_VAL_ADDRESS 1073824768 +#define DT_N_S_soc_S_timers_40014400_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_timers_40014400_RANGES_NUM 0 #define DT_N_S_soc_S_timers_40014400_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timers_40014400_IRQ_NUM 1 @@ -38640,20 +39556,46 @@ #define DT_N_S_soc_S_timers_40014400_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40014400_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40014400_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40014400_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_P_reg {1073824768, 1024} +#define DT_N_S_soc_S_timers_40014400_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_P_reg_IDX_0 1073824768 +#define DT_N_S_soc_S_timers_40014400_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_timers_40014400_P_reg_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_timers_40014400_P_clocks_IDX_0_VAL_bus 240 +#define DT_N_S_soc_S_timers_40014400_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_P_clocks_IDX_0_VAL_bits 131072 +#define DT_N_S_soc_S_timers_40014400_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014400, clocks, 0) +#define DT_N_S_soc_S_timers_40014400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014400, clocks, 0) +#define DT_N_S_soc_S_timers_40014400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014400, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40014400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014400, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40014400_P_clocks_LEN 1 +#define DT_N_S_soc_S_timers_40014400_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_timers_40014400_P_resets_IDX_0_VAL_id 4881 +#define DT_N_S_soc_S_timers_40014400_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014400, resets, 0) +#define DT_N_S_soc_S_timers_40014400_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014400, resets, 0) +#define DT_N_S_soc_S_timers_40014400_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014400, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40014400_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014400, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40014400_P_resets_LEN 1 +#define DT_N_S_soc_S_timers_40014400_P_resets_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_P_st_prescaler 0 +#define DT_N_S_soc_S_timers_40014400_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_P_st_countermode 0 +#define DT_N_S_soc_S_timers_40014400_P_st_countermode_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_P_status "disabled" #define DT_N_S_soc_S_timers_40014400_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40014400_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40014400_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40014400_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40014400_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40014400_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40014400_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40014400_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40014400_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014400, status, 0) #define DT_N_S_soc_S_timers_40014400_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014400, status, 0) #define DT_N_S_soc_S_timers_40014400_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014400, status, 0, __VA_ARGS__) @@ -38661,69 +39603,41 @@ #define DT_N_S_soc_S_timers_40014400_P_status_LEN 1 #define DT_N_S_soc_S_timers_40014400_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_P_compatible {"st,stm32-timers"} +#define DT_N_S_soc_S_timers_40014400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_P_compatible_IDX_0 "st,stm32-timers" #define DT_N_S_soc_S_timers_40014400_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-timers #define DT_N_S_soc_S_timers_40014400_P_compatible_IDX_0_STRING_TOKEN st_stm32_timers #define DT_N_S_soc_S_timers_40014400_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_TIMERS -#define DT_N_S_soc_S_timers_40014400_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014400, compatible, 0) #define DT_N_S_soc_S_timers_40014400_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014400, compatible, 0) #define DT_N_S_soc_S_timers_40014400_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40014400_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014400, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40014400_P_compatible_LEN 1 #define DT_N_S_soc_S_timers_40014400_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_reg {1073824768 /* 0x40014400 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_timers_40014400_P_reg_IDX_0 1073824768 -#define DT_N_S_soc_S_timers_40014400_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_timers_40014400_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_reg_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_interrupts {117 /* 0x75 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_timers_40014400_P_interrupts_IDX_0 117 +#define DT_N_S_soc_S_timers_40014400_P_interrupts {117, 0} #define DT_N_S_soc_S_timers_40014400_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_timers_40014400_P_interrupts_IDX_0 117 #define DT_N_S_soc_S_timers_40014400_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_timers_40014400_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_P_interrupt_names {"global"} +#define DT_N_S_soc_S_timers_40014400_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_P_interrupt_names_IDX_0 "global" #define DT_N_S_soc_S_timers_40014400_P_interrupt_names_IDX_0_STRING_UNQUOTED global #define DT_N_S_soc_S_timers_40014400_P_interrupt_names_IDX_0_STRING_TOKEN global #define DT_N_S_soc_S_timers_40014400_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN GLOBAL -#define DT_N_S_soc_S_timers_40014400_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014400, interrupt_names, 0) #define DT_N_S_soc_S_timers_40014400_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014400, interrupt_names, 0) #define DT_N_S_soc_S_timers_40014400_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014400, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40014400_P_interrupt_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014400, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40014400_P_interrupt_names_LEN 1 #define DT_N_S_soc_S_timers_40014400_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_timers_40014400_P_clocks_IDX_0_VAL_bus 240 -#define DT_N_S_soc_S_timers_40014400_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_clocks_IDX_0_VAL_bits 131072 -#define DT_N_S_soc_S_timers_40014400_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014400, clocks, 0) -#define DT_N_S_soc_S_timers_40014400_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014400, clocks, 0) -#define DT_N_S_soc_S_timers_40014400_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014400, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40014400_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014400, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40014400_P_clocks_LEN 1 -#define DT_N_S_soc_S_timers_40014400_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40014400_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_timers_40014400_P_resets_IDX_0_VAL_id 4881 -#define DT_N_S_soc_S_timers_40014400_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014400, resets, 0) -#define DT_N_S_soc_S_timers_40014400_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014400, resets, 0) -#define DT_N_S_soc_S_timers_40014400_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014400, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40014400_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014400, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40014400_P_resets_LEN 1 -#define DT_N_S_soc_S_timers_40014400_P_resets_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_st_prescaler 0 -#define DT_N_S_soc_S_timers_40014400_P_st_prescaler_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_P_st_countermode 0 -#define DT_N_S_soc_S_timers_40014400_P_st_countermode_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40014400_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40014400_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40014400/counter @@ -38742,6 +39656,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40014400_S_counter_FULL_NAME "counter" +#define DT_N_S_soc_S_timers_40014400_S_counter_FULL_NAME_UNQUOTED counter +#define DT_N_S_soc_S_timers_40014400_S_counter_FULL_NAME_TOKEN counter +#define DT_N_S_soc_S_timers_40014400_S_counter_FULL_NAME_UPPER_TOKEN COUNTER /* Node parent (/soc/timers@40014400) identifier: */ #define DT_N_S_soc_S_timers_40014400_S_counter_PARENT DT_N_S_soc_S_timers_40014400 @@ -38767,12 +39684,12 @@ #define DT_N_S_soc_S_timers_40014400_S_counter_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40014400_S_counter_ORD 283 -#define DT_N_S_soc_S_timers_40014400_S_counter_ORD_STR_SORTABLE 00283 +#define DT_N_S_soc_S_timers_40014400_S_counter_ORD 286 +#define DT_N_S_soc_S_timers_40014400_S_counter_ORD_STR_SORTABLE 00286 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40014400_S_counter_REQUIRES_ORDS \ - 282, /* /soc/timers@40014400 */ + 285, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40014400_S_counter_SUPPORTS_ORDS /* nothing */ @@ -38798,20 +39715,14 @@ #define DT_N_S_soc_S_timers_40014400_S_counter_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40014400_S_counter_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40014400_S_counter_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_S_counter_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40014400_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_S_counter_P_status "disabled" #define DT_N_S_soc_S_timers_40014400_S_counter_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40014400_S_counter_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40014400_S_counter_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40014400_S_counter_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40014400_S_counter_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_S_counter_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40014400_S_counter_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_S_counter_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40014400_S_counter_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40014400_S_counter_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40014400_S_counter_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_S_counter_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014400_S_counter, status, 0) #define DT_N_S_soc_S_timers_40014400_S_counter_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014400_S_counter, status, 0) #define DT_N_S_soc_S_timers_40014400_S_counter_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014400_S_counter, status, 0, __VA_ARGS__) @@ -38819,11 +39730,11 @@ #define DT_N_S_soc_S_timers_40014400_S_counter_P_status_LEN 1 #define DT_N_S_soc_S_timers_40014400_S_counter_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_S_counter_P_compatible {"st,stm32-counter"} +#define DT_N_S_soc_S_timers_40014400_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_S_counter_P_compatible_IDX_0 "st,stm32-counter" #define DT_N_S_soc_S_timers_40014400_S_counter_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-counter #define DT_N_S_soc_S_timers_40014400_S_counter_P_compatible_IDX_0_STRING_TOKEN st_stm32_counter #define DT_N_S_soc_S_timers_40014400_S_counter_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_COUNTER -#define DT_N_S_soc_S_timers_40014400_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_S_counter_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014400_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40014400_S_counter_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014400_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40014400_S_counter_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014400_S_counter, compatible, 0, __VA_ARGS__) @@ -38832,6 +39743,10 @@ #define DT_N_S_soc_S_timers_40014400_S_counter_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_S_counter_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40014400_S_counter_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_S_counter_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40014400_S_counter_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_S_counter_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40014400_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40014400/pwm @@ -38850,6 +39765,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40014400_S_pwm_FULL_NAME "pwm" +#define DT_N_S_soc_S_timers_40014400_S_pwm_FULL_NAME_UNQUOTED pwm +#define DT_N_S_soc_S_timers_40014400_S_pwm_FULL_NAME_TOKEN pwm +#define DT_N_S_soc_S_timers_40014400_S_pwm_FULL_NAME_UPPER_TOKEN PWM /* Node parent (/soc/timers@40014400) identifier: */ #define DT_N_S_soc_S_timers_40014400_S_pwm_PARENT DT_N_S_soc_S_timers_40014400 @@ -38875,12 +39793,12 @@ #define DT_N_S_soc_S_timers_40014400_S_pwm_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40014400_S_pwm_ORD 284 -#define DT_N_S_soc_S_timers_40014400_S_pwm_ORD_STR_SORTABLE 00284 +#define DT_N_S_soc_S_timers_40014400_S_pwm_ORD 287 +#define DT_N_S_soc_S_timers_40014400_S_pwm_ORD_STR_SORTABLE 00287 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40014400_S_pwm_REQUIRES_ORDS \ - 282, /* /soc/timers@40014400 */ + 285, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40014400_S_pwm_SUPPORTS_ORDS /* nothing */ @@ -38906,20 +39824,16 @@ #define DT_N_S_soc_S_timers_40014400_S_pwm_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40014400_S_pwm_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40014400_S_pwm_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_S_pwm_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40014400_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_S_pwm_P_four_channel_capture_support 0 +#define DT_N_S_soc_S_timers_40014400_S_pwm_P_four_channel_capture_support_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_S_pwm_P_status "disabled" #define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014400_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014400_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014400_S_pwm, status, 0, __VA_ARGS__) @@ -38927,11 +39841,11 @@ #define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_LEN 1 #define DT_N_S_soc_S_timers_40014400_S_pwm_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_S_pwm_P_compatible {"st,stm32-pwm"} +#define DT_N_S_soc_S_timers_40014400_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_S_pwm_P_compatible_IDX_0 "st,stm32-pwm" #define DT_N_S_soc_S_timers_40014400_S_pwm_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-pwm #define DT_N_S_soc_S_timers_40014400_S_pwm_P_compatible_IDX_0_STRING_TOKEN st_stm32_pwm #define DT_N_S_soc_S_timers_40014400_S_pwm_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_PWM -#define DT_N_S_soc_S_timers_40014400_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_S_pwm_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014400_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40014400_S_pwm_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014400_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40014400_S_pwm_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014400_S_pwm, compatible, 0, __VA_ARGS__) @@ -38940,8 +39854,10 @@ #define DT_N_S_soc_S_timers_40014400_S_pwm_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40014400_S_pwm_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40014400_S_pwm_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40014400_S_pwm_P_four_channel_capture_support 0 -#define DT_N_S_soc_S_timers_40014400_S_pwm_P_four_channel_capture_support_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_S_pwm_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40014400_S_pwm_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40014400_S_pwm_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40014400_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40014800 @@ -38960,6 +39876,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40014800_FULL_NAME "timers@40014800" +#define DT_N_S_soc_S_timers_40014800_FULL_NAME_UNQUOTED timers@40014800 +#define DT_N_S_soc_S_timers_40014800_FULL_NAME_TOKEN timers_40014800 +#define DT_N_S_soc_S_timers_40014800_FULL_NAME_UPPER_TOKEN TIMERS_40014800 /* Node parent (/soc) identifier: */ #define DT_N_S_soc_S_timers_40014800_PARENT DT_N_S_soc @@ -38985,20 +39904,20 @@ #define DT_N_S_soc_S_timers_40014800_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40014800_ORD 285 -#define DT_N_S_soc_S_timers_40014800_ORD_STR_SORTABLE 00285 +#define DT_N_S_soc_S_timers_40014800_ORD 288 +#define DT_N_S_soc_S_timers_40014800_ORD_STR_SORTABLE 00288 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40014800_REQUIRES_ORDS \ - 4, /* /soc */ \ - 5, /* /soc/interrupt-controller@e000e100 */ \ - 9, /* /soc/rcc@58024400 */ \ - 54, /* /soc/rcc@58024400/reset-controller */ + 4, \ + 5, \ + 9, \ + 54, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40014800_SUPPORTS_ORDS \ - 286, /* /soc/timers@40014800/counter */ \ - 287, /* /soc/timers@40014800/pwm */ + 289, \ + 290, /* Existence and alternate IDs: */ #define DT_N_S_soc_S_timers_40014800_EXISTS 1 @@ -39008,8 +39927,8 @@ /* Macros for properties that are special in the specification: */ #define DT_N_S_soc_S_timers_40014800_REG_NUM 1 #define DT_N_S_soc_S_timers_40014800_REG_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_REG_IDX_0_VAL_ADDRESS 1073825792 /* 0x40014800 */ -#define DT_N_S_soc_S_timers_40014800_REG_IDX_0_VAL_SIZE 1024 /* 0x400 */ +#define DT_N_S_soc_S_timers_40014800_REG_IDX_0_VAL_ADDRESS 1073825792 +#define DT_N_S_soc_S_timers_40014800_REG_IDX_0_VAL_SIZE 1024 #define DT_N_S_soc_S_timers_40014800_RANGES_NUM 0 #define DT_N_S_soc_S_timers_40014800_FOREACH_RANGE(fn) #define DT_N_S_soc_S_timers_40014800_IRQ_NUM 1 @@ -39037,20 +39956,46 @@ #define DT_N_S_soc_S_timers_40014800_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40014800_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40014800_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40014800_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_P_reg {1073825792, 1024} +#define DT_N_S_soc_S_timers_40014800_P_reg_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_P_reg_IDX_0 1073825792 +#define DT_N_S_soc_S_timers_40014800_P_reg_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_P_reg_IDX_1 1024 +#define DT_N_S_soc_S_timers_40014800_P_reg_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_P_clocks_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 +#define DT_N_S_soc_S_timers_40014800_P_clocks_IDX_0_VAL_bus 240 +#define DT_N_S_soc_S_timers_40014800_P_clocks_IDX_0_VAL_bus_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_P_clocks_IDX_0_VAL_bits 262144 +#define DT_N_S_soc_S_timers_40014800_P_clocks_IDX_0_VAL_bits_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014800, clocks, 0) +#define DT_N_S_soc_S_timers_40014800_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014800, clocks, 0) +#define DT_N_S_soc_S_timers_40014800_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014800, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40014800_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014800, clocks, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40014800_P_clocks_LEN 1 +#define DT_N_S_soc_S_timers_40014800_P_clocks_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_P_resets_IDX_0_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller +#define DT_N_S_soc_S_timers_40014800_P_resets_IDX_0_VAL_id 4882 +#define DT_N_S_soc_S_timers_40014800_P_resets_IDX_0_VAL_id_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014800, resets, 0) +#define DT_N_S_soc_S_timers_40014800_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014800, resets, 0) +#define DT_N_S_soc_S_timers_40014800_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014800, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40014800_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014800, resets, 0, __VA_ARGS__) +#define DT_N_S_soc_S_timers_40014800_P_resets_LEN 1 +#define DT_N_S_soc_S_timers_40014800_P_resets_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_P_st_prescaler 0 +#define DT_N_S_soc_S_timers_40014800_P_st_prescaler_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_P_st_countermode 0 +#define DT_N_S_soc_S_timers_40014800_P_st_countermode_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_P_status "disabled" #define DT_N_S_soc_S_timers_40014800_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40014800_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40014800_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40014800_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40014800_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40014800_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40014800_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40014800_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40014800_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014800, status, 0) #define DT_N_S_soc_S_timers_40014800_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014800, status, 0) #define DT_N_S_soc_S_timers_40014800_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014800, status, 0, __VA_ARGS__) @@ -39058,69 +40003,41 @@ #define DT_N_S_soc_S_timers_40014800_P_status_LEN 1 #define DT_N_S_soc_S_timers_40014800_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_P_compatible {"st,stm32-timers"} +#define DT_N_S_soc_S_timers_40014800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_P_compatible_IDX_0 "st,stm32-timers" #define DT_N_S_soc_S_timers_40014800_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-timers #define DT_N_S_soc_S_timers_40014800_P_compatible_IDX_0_STRING_TOKEN st_stm32_timers #define DT_N_S_soc_S_timers_40014800_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_TIMERS -#define DT_N_S_soc_S_timers_40014800_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014800, compatible, 0) #define DT_N_S_soc_S_timers_40014800_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014800, compatible, 0) #define DT_N_S_soc_S_timers_40014800_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40014800_P_compatible_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014800, compatible, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40014800_P_compatible_LEN 1 #define DT_N_S_soc_S_timers_40014800_P_compatible_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_reg {1073825792 /* 0x40014800 */, 1024 /* 0x400 */} -#define DT_N_S_soc_S_timers_40014800_P_reg_IDX_0 1073825792 -#define DT_N_S_soc_S_timers_40014800_P_reg_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_reg_IDX_1 1024 -#define DT_N_S_soc_S_timers_40014800_P_reg_IDX_1_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_reg_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_interrupts {118 /* 0x76 */, 0 /* 0x0 */} -#define DT_N_S_soc_S_timers_40014800_P_interrupts_IDX_0 118 +#define DT_N_S_soc_S_timers_40014800_P_interrupts {118, 0} #define DT_N_S_soc_S_timers_40014800_P_interrupts_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_interrupts_IDX_1 0 +#define DT_N_S_soc_S_timers_40014800_P_interrupts_IDX_0 118 #define DT_N_S_soc_S_timers_40014800_P_interrupts_IDX_1_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_P_interrupts_IDX_1 0 #define DT_N_S_soc_S_timers_40014800_P_interrupts_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_P_interrupt_names {"global"} +#define DT_N_S_soc_S_timers_40014800_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_P_interrupt_names_IDX_0 "global" #define DT_N_S_soc_S_timers_40014800_P_interrupt_names_IDX_0_STRING_UNQUOTED global #define DT_N_S_soc_S_timers_40014800_P_interrupt_names_IDX_0_STRING_TOKEN global #define DT_N_S_soc_S_timers_40014800_P_interrupt_names_IDX_0_STRING_UPPER_TOKEN GLOBAL -#define DT_N_S_soc_S_timers_40014800_P_interrupt_names_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_P_interrupt_names_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014800, interrupt_names, 0) #define DT_N_S_soc_S_timers_40014800_P_interrupt_names_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014800, interrupt_names, 0) #define DT_N_S_soc_S_timers_40014800_P_interrupt_names_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014800, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40014800_P_interrupt_names_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014800, interrupt_names, 0, __VA_ARGS__) #define DT_N_S_soc_S_timers_40014800_P_interrupt_names_LEN 1 #define DT_N_S_soc_S_timers_40014800_P_interrupt_names_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_clocks_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_clocks_IDX_0_PH DT_N_S_soc_S_rcc_58024400 -#define DT_N_S_soc_S_timers_40014800_P_clocks_IDX_0_VAL_bus 240 -#define DT_N_S_soc_S_timers_40014800_P_clocks_IDX_0_VAL_bus_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_clocks_IDX_0_VAL_bits 262144 -#define DT_N_S_soc_S_timers_40014800_P_clocks_IDX_0_VAL_bits_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_clocks_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014800, clocks, 0) -#define DT_N_S_soc_S_timers_40014800_P_clocks_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014800, clocks, 0) -#define DT_N_S_soc_S_timers_40014800_P_clocks_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014800, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40014800_P_clocks_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014800, clocks, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40014800_P_clocks_LEN 1 -#define DT_N_S_soc_S_timers_40014800_P_clocks_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40014800_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_resets_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_resets_IDX_0_PH DT_N_S_soc_S_rcc_58024400_S_reset_controller -#define DT_N_S_soc_S_timers_40014800_P_resets_IDX_0_VAL_id 4882 -#define DT_N_S_soc_S_timers_40014800_P_resets_IDX_0_VAL_id_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_resets_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014800, resets, 0) -#define DT_N_S_soc_S_timers_40014800_P_resets_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014800, resets, 0) -#define DT_N_S_soc_S_timers_40014800_P_resets_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014800, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40014800_P_resets_FOREACH_PROP_ELEM_SEP_VARGS(fn, sep, ...) fn(DT_N_S_soc_S_timers_40014800, resets, 0, __VA_ARGS__) -#define DT_N_S_soc_S_timers_40014800_P_resets_LEN 1 -#define DT_N_S_soc_S_timers_40014800_P_resets_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_st_prescaler 0 -#define DT_N_S_soc_S_timers_40014800_P_st_prescaler_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_P_st_countermode 0 -#define DT_N_S_soc_S_timers_40014800_P_st_countermode_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40014800_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40014800_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40014800/counter @@ -39139,6 +40056,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40014800_S_counter_FULL_NAME "counter" +#define DT_N_S_soc_S_timers_40014800_S_counter_FULL_NAME_UNQUOTED counter +#define DT_N_S_soc_S_timers_40014800_S_counter_FULL_NAME_TOKEN counter +#define DT_N_S_soc_S_timers_40014800_S_counter_FULL_NAME_UPPER_TOKEN COUNTER /* Node parent (/soc/timers@40014800) identifier: */ #define DT_N_S_soc_S_timers_40014800_S_counter_PARENT DT_N_S_soc_S_timers_40014800 @@ -39164,12 +40084,12 @@ #define DT_N_S_soc_S_timers_40014800_S_counter_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40014800_S_counter_ORD 286 -#define DT_N_S_soc_S_timers_40014800_S_counter_ORD_STR_SORTABLE 00286 +#define DT_N_S_soc_S_timers_40014800_S_counter_ORD 289 +#define DT_N_S_soc_S_timers_40014800_S_counter_ORD_STR_SORTABLE 00289 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40014800_S_counter_REQUIRES_ORDS \ - 285, /* /soc/timers@40014800 */ + 288, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40014800_S_counter_SUPPORTS_ORDS /* nothing */ @@ -39195,20 +40115,14 @@ #define DT_N_S_soc_S_timers_40014800_S_counter_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40014800_S_counter_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40014800_S_counter_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_S_counter_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40014800_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_S_counter_P_status "disabled" #define DT_N_S_soc_S_timers_40014800_S_counter_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40014800_S_counter_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40014800_S_counter_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40014800_S_counter_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40014800_S_counter_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_S_counter_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40014800_S_counter_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_S_counter_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40014800_S_counter_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40014800_S_counter_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40014800_S_counter_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_S_counter_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014800_S_counter, status, 0) #define DT_N_S_soc_S_timers_40014800_S_counter_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014800_S_counter, status, 0) #define DT_N_S_soc_S_timers_40014800_S_counter_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014800_S_counter, status, 0, __VA_ARGS__) @@ -39216,11 +40130,11 @@ #define DT_N_S_soc_S_timers_40014800_S_counter_P_status_LEN 1 #define DT_N_S_soc_S_timers_40014800_S_counter_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_S_counter_P_compatible {"st,stm32-counter"} +#define DT_N_S_soc_S_timers_40014800_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_S_counter_P_compatible_IDX_0 "st,stm32-counter" #define DT_N_S_soc_S_timers_40014800_S_counter_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-counter #define DT_N_S_soc_S_timers_40014800_S_counter_P_compatible_IDX_0_STRING_TOKEN st_stm32_counter #define DT_N_S_soc_S_timers_40014800_S_counter_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_COUNTER -#define DT_N_S_soc_S_timers_40014800_S_counter_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_S_counter_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014800_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40014800_S_counter_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014800_S_counter, compatible, 0) #define DT_N_S_soc_S_timers_40014800_S_counter_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014800_S_counter, compatible, 0, __VA_ARGS__) @@ -39229,6 +40143,10 @@ #define DT_N_S_soc_S_timers_40014800_S_counter_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_S_counter_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40014800_S_counter_P_zephyr_deferred_init_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_S_counter_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40014800_S_counter_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_S_counter_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40014800_S_counter_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Devicetree node: /soc/timers@40014800/pwm @@ -39247,6 +40165,9 @@ /* Node's name with unit-address: */ #define DT_N_S_soc_S_timers_40014800_S_pwm_FULL_NAME "pwm" +#define DT_N_S_soc_S_timers_40014800_S_pwm_FULL_NAME_UNQUOTED pwm +#define DT_N_S_soc_S_timers_40014800_S_pwm_FULL_NAME_TOKEN pwm +#define DT_N_S_soc_S_timers_40014800_S_pwm_FULL_NAME_UPPER_TOKEN PWM /* Node parent (/soc/timers@40014800) identifier: */ #define DT_N_S_soc_S_timers_40014800_S_pwm_PARENT DT_N_S_soc_S_timers_40014800 @@ -39272,12 +40193,12 @@ #define DT_N_S_soc_S_timers_40014800_S_pwm_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(fn, sep, ...) /* Node's dependency ordinal: */ -#define DT_N_S_soc_S_timers_40014800_S_pwm_ORD 287 -#define DT_N_S_soc_S_timers_40014800_S_pwm_ORD_STR_SORTABLE 00287 +#define DT_N_S_soc_S_timers_40014800_S_pwm_ORD 290 +#define DT_N_S_soc_S_timers_40014800_S_pwm_ORD_STR_SORTABLE 00290 /* Ordinals for what this node depends on directly: */ #define DT_N_S_soc_S_timers_40014800_S_pwm_REQUIRES_ORDS \ - 285, /* /soc/timers@40014800 */ + 288, /* Ordinals for what depends directly on this node: */ #define DT_N_S_soc_S_timers_40014800_S_pwm_SUPPORTS_ORDS /* nothing */ @@ -39303,20 +40224,16 @@ #define DT_N_S_soc_S_timers_40014800_S_pwm_PINCTRL_NUM 0 /* Generic property macros: */ -#define DT_N_S_soc_S_timers_40014800_S_pwm_P_wakeup_source 0 -#define DT_N_S_soc_S_timers_40014800_S_pwm_P_wakeup_source_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_S_pwm_P_zephyr_pm_device_runtime_auto 0 -#define DT_N_S_soc_S_timers_40014800_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_S_pwm_P_four_channel_capture_support 0 +#define DT_N_S_soc_S_timers_40014800_S_pwm_P_four_channel_capture_support_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_S_pwm_P_status "disabled" #define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_STRING_UNQUOTED disabled #define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_STRING_TOKEN disabled #define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_STRING_UPPER_TOKEN DISABLED #define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_IDX_0 "disabled" #define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_IDX_0_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_ENUM_IDX 2 -#define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_ENUM_VAL_disabled_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_ENUM_TOKEN disabled -#define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_ENUM_UPPER_TOKEN DISABLED +#define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_IDX_0_ENUM_IDX 2 +#define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_IDX_0_ENUM_VAL_disabled_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014800_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014800_S_pwm, status, 0) #define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014800_S_pwm, status, 0, __VA_ARGS__) @@ -39324,11 +40241,11 @@ #define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_LEN 1 #define DT_N_S_soc_S_timers_40014800_S_pwm_P_status_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_S_pwm_P_compatible {"st,stm32-pwm"} +#define DT_N_S_soc_S_timers_40014800_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_S_pwm_P_compatible_IDX_0 "st,stm32-pwm" #define DT_N_S_soc_S_timers_40014800_S_pwm_P_compatible_IDX_0_STRING_UNQUOTED st,stm32-pwm #define DT_N_S_soc_S_timers_40014800_S_pwm_P_compatible_IDX_0_STRING_TOKEN st_stm32_pwm #define DT_N_S_soc_S_timers_40014800_S_pwm_P_compatible_IDX_0_STRING_UPPER_TOKEN ST_STM32_PWM -#define DT_N_S_soc_S_timers_40014800_S_pwm_P_compatible_IDX_0_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_S_pwm_P_compatible_FOREACH_PROP_ELEM(fn) fn(DT_N_S_soc_S_timers_40014800_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40014800_S_pwm_P_compatible_FOREACH_PROP_ELEM_SEP(fn, sep) fn(DT_N_S_soc_S_timers_40014800_S_pwm, compatible, 0) #define DT_N_S_soc_S_timers_40014800_S_pwm_P_compatible_FOREACH_PROP_ELEM_VARGS(fn, ...) fn(DT_N_S_soc_S_timers_40014800_S_pwm, compatible, 0, __VA_ARGS__) @@ -39337,8 +40254,10 @@ #define DT_N_S_soc_S_timers_40014800_S_pwm_P_compatible_EXISTS 1 #define DT_N_S_soc_S_timers_40014800_S_pwm_P_zephyr_deferred_init 0 #define DT_N_S_soc_S_timers_40014800_S_pwm_P_zephyr_deferred_init_EXISTS 1 -#define DT_N_S_soc_S_timers_40014800_S_pwm_P_four_channel_capture_support 0 -#define DT_N_S_soc_S_timers_40014800_S_pwm_P_four_channel_capture_support_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_S_pwm_P_wakeup_source 0 +#define DT_N_S_soc_S_timers_40014800_S_pwm_P_wakeup_source_EXISTS 1 +#define DT_N_S_soc_S_timers_40014800_S_pwm_P_zephyr_pm_device_runtime_auto 0 +#define DT_N_S_soc_S_timers_40014800_S_pwm_P_zephyr_pm_device_runtime_auto_EXISTS 1 /* * Chosen nodes @@ -39367,10 +40286,10 @@ #define DT_CHOSEN_zephyr_camera_EXISTS 1 /* Macros for iterating over all nodes and enabled nodes */ -#define DT_FOREACH_HELPER(fn) fn(DT_N) fn(DT_N_S_chosen) fn(DT_N_S_aliases) fn(DT_N_S_soc) fn(DT_N_S_soc_S_interrupt_controller_e000e100) fn(DT_N_S_soc_S_timer_e000e010) fn(DT_N_S_soc_S_flash_controller_52002000) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000) fn(DT_N_S_soc_S_rcc_58024400) fn(DT_N_S_soc_S_rcc_58024400_S_reset_controller) fn(DT_N_S_soc_S_interrupt_controller_58000000) fn(DT_N_S_soc_S_pin_controller_58020000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6) fn(DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12) fn(DT_N_S_soc_S_watchdog_58004800) fn(DT_N_S_soc_S_watchdog_50003000) fn(DT_N_S_soc_S_serial_40011000) fn(DT_N_S_soc_S_serial_40004400) fn(DT_N_S_soc_S_serial_40004800) fn(DT_N_S_soc_S_serial_40004c00) fn(DT_N_S_soc_S_serial_40005000) fn(DT_N_S_soc_S_serial_40011400) fn(DT_N_S_soc_S_serial_40007800) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx) fn(DT_N_S_soc_S_serial_40007c00) fn(DT_N_S_soc_S_serial_58000c00) fn(DT_N_S_soc_S_rtc_58004000) fn(DT_N_S_soc_S_rtc_58004000_S_backup_regs) fn(DT_N_S_soc_S_i2c_40005400) fn(DT_N_S_soc_S_i2c_40005800) fn(DT_N_S_soc_S_i2c_40005c00) fn(DT_N_S_soc_S_i2c_58001c00) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint) fn(DT_N_S_soc_S_spi_40013000) fn(DT_N_S_soc_S_spi_40003800) fn(DT_N_S_soc_S_spi_40003c00) fn(DT_N_S_soc_S_spi_40013400) fn(DT_N_S_soc_S_spi_40015000) fn(DT_N_S_soc_S_spi_58001400) fn(DT_N_S_soc_S_i2s_40013000) fn(DT_N_S_soc_S_i2s_40003800) fn(DT_N_S_soc_S_i2s_40003c00) fn(DT_N_S_soc_S_can_4000a000) fn(DT_N_S_soc_S_can_4000a400) fn(DT_N_S_soc_S_timers_40010000) fn(DT_N_S_soc_S_timers_40010000_S_pwm) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock) fn(DT_N_S_soc_S_timers_40000000) fn(DT_N_S_soc_S_timers_40000000_S_pwm) fn(DT_N_S_soc_S_timers_40000000_S_counter) fn(DT_N_S_soc_S_timers_40000400) fn(DT_N_S_soc_S_timers_40000400_S_pwm) fn(DT_N_S_soc_S_timers_40000400_S_counter) fn(DT_N_S_soc_S_timers_40000800) fn(DT_N_S_soc_S_timers_40000800_S_pwm) fn(DT_N_S_soc_S_timers_40000800_S_counter) fn(DT_N_S_soc_S_timers_40000c00) fn(DT_N_S_soc_S_timers_40000c00_S_pwm) fn(DT_N_S_soc_S_timers_40000c00_S_counter) fn(DT_N_S_soc_S_timers_40001000) fn(DT_N_S_soc_S_timers_40001000_S_counter) fn(DT_N_S_soc_S_timers_40001400) fn(DT_N_S_soc_S_timers_40001400_S_counter) fn(DT_N_S_soc_S_timers_40010400) fn(DT_N_S_soc_S_timers_40010400_S_pwm) fn(DT_N_S_soc_S_timers_40001800) fn(DT_N_S_soc_S_timers_40001800_S_pwm) fn(DT_N_S_soc_S_timers_40001800_S_counter) fn(DT_N_S_soc_S_timers_40001c00) fn(DT_N_S_soc_S_timers_40001c00_S_pwm) fn(DT_N_S_soc_S_timers_40001c00_S_counter) fn(DT_N_S_soc_S_timers_40002000) fn(DT_N_S_soc_S_timers_40002000_S_pwm) fn(DT_N_S_soc_S_timers_40002000_S_counter) fn(DT_N_S_soc_S_timers_40014000) fn(DT_N_S_soc_S_timers_40014000_S_pwm) fn(DT_N_S_soc_S_timers_40014000_S_counter) fn(DT_N_S_soc_S_timers_40014400) fn(DT_N_S_soc_S_timers_40014400_S_pwm) fn(DT_N_S_soc_S_timers_40014400_S_counter) fn(DT_N_S_soc_S_timers_40014800) fn(DT_N_S_soc_S_timers_40014800_S_pwm) fn(DT_N_S_soc_S_timers_40014800_S_counter) fn(DT_N_S_soc_S_timers_40002400) fn(DT_N_S_soc_S_adc_40022000) fn(DT_N_S_soc_S_adc_40022000_S_channel_4) fn(DT_N_S_soc_S_adc_40022000_S_channel_8) fn(DT_N_S_soc_S_adc_40022000_S_channel_9) fn(DT_N_S_soc_S_adc_40022000_S_channel_5) fn(DT_N_S_soc_S_adc_40022000_S_channel_d) fn(DT_N_S_soc_S_adc_40022000_S_channel_c) fn(DT_N_S_soc_S_adc_40022000_S_channel_a) fn(DT_N_S_soc_S_adc_40022000_S_channel_10) fn(DT_N_S_soc_S_adc_40022000_S_channel_12) fn(DT_N_S_soc_S_adc_40022000_S_channel_13) fn(DT_N_S_soc_S_adc_40022000_S_channel_0) fn(DT_N_S_soc_S_adc_40022000_S_channel_1) fn(DT_N_S_soc_S_adc_40022100) fn(DT_N_S_soc_S_adc_40022300) fn(DT_N_S_soc_S_adc_58026000) fn(DT_N_S_soc_S_adc_58026000_S_channel_0) fn(DT_N_S_soc_S_adc_58026000_S_channel_1) fn(DT_N_S_soc_S_dac_40007400) fn(DT_N_S_soc_S_dma_40020000) fn(DT_N_S_soc_S_dma_40020400) fn(DT_N_S_soc_S_bdma_58025400) fn(DT_N_S_soc_S_dmamux_40020800) fn(DT_N_S_soc_S_dmamux_58025800) fn(DT_N_S_soc_S_rng_48021800) fn(DT_N_S_soc_S_sdmmc_52007000) fn(DT_N_S_soc_S_sdmmc_48022400) fn(DT_N_S_soc_S_ethernet_40028000) fn(DT_N_S_soc_S_ethernet_40028000_S_mdio) fn(DT_N_S_soc_S_memory_controller_52004000) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0) fn(DT_N_S_soc_S_memory_38800000) fn(DT_N_S_soc_S_quadspi_52005000) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000) fn(DT_N_S_soc_S_dcmi_48020000) fn(DT_N_S_soc_S_dcmi_48020000_S_port) fn(DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint) fn(DT_N_S_soc_S_mailbox_58026400) fn(DT_N_S_soc_S_display_controller_50001000) fn(DT_N_S_soc_S_usb_40040000) fn(DT_N_S_soc_S_usb_40080000) fn(DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0) fn(DT_N_S_soc_S_dsihost_50000000) fn(DT_N_S_cpus) fn(DT_N_S_cpus_S_cpu_0) fn(DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90) fn(DT_N_S_memory_90000000) fn(DT_N_S_clocks) fn(DT_N_S_clocks_S_clk_hse) fn(DT_N_S_clocks_S_clk_hsi) fn(DT_N_S_clocks_S_clk_hsi48) fn(DT_N_S_clocks_S_clk_csi) fn(DT_N_S_clocks_S_clk_lse) fn(DT_N_S_clocks_S_clk_lsi) fn(DT_N_S_clocks_S_pll_0) fn(DT_N_S_clocks_S_pll_1) fn(DT_N_S_clocks_S_pll_2) fn(DT_N_S_clocks_S_perck) fn(DT_N_S_dietemp) fn(DT_N_S_vbat) fn(DT_N_S_vref) fn(DT_N_S_smbus1) fn(DT_N_S_smbus2) fn(DT_N_S_smbus3) fn(DT_N_S_smbus4) fn(DT_N_S_memory_24000000) fn(DT_N_S_memory_30000000) fn(DT_N_S_memory_30020000) fn(DT_N_S_memory_30040000) fn(DT_N_S_memory_38000000) fn(DT_N_S_otghs_fs_phy) fn(DT_N_S_connector) fn(DT_N_S_leds) fn(DT_N_S_leds_S_led_0) fn(DT_N_S_leds_S_led_1) fn(DT_N_S_leds_S_led_2) fn(DT_N_S_gpio_keys) fn(DT_N_S_gpio_keys_S_button_0) fn(DT_N_S_sdram_c0000000) fn(DT_N_S_gpio_deadbeef) fn(DT_N_S_zephyr_user) -#define DT_FOREACH_OKAY_HELPER(fn) fn(DT_N) fn(DT_N_S_chosen) fn(DT_N_S_aliases) fn(DT_N_S_soc) fn(DT_N_S_soc_S_interrupt_controller_e000e100) fn(DT_N_S_soc_S_timer_e000e010) fn(DT_N_S_soc_S_flash_controller_52002000) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000) fn(DT_N_S_soc_S_rcc_58024400) fn(DT_N_S_soc_S_rcc_58024400_S_reset_controller) fn(DT_N_S_soc_S_interrupt_controller_58000000) fn(DT_N_S_soc_S_pin_controller_58020000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6) fn(DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12) fn(DT_N_S_soc_S_serial_40011000) fn(DT_N_S_soc_S_serial_40004400) fn(DT_N_S_soc_S_serial_40004c00) fn(DT_N_S_soc_S_serial_40011400) fn(DT_N_S_soc_S_serial_40007800) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx) fn(DT_N_S_soc_S_i2c_40005400) fn(DT_N_S_soc_S_i2c_40005800) fn(DT_N_S_soc_S_i2c_58001c00) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint) fn(DT_N_S_soc_S_spi_40013000) fn(DT_N_S_soc_S_spi_40015000) fn(DT_N_S_soc_S_can_4000a400) fn(DT_N_S_soc_S_timers_40010000) fn(DT_N_S_soc_S_timers_40010000_S_pwm) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock) fn(DT_N_S_soc_S_adc_40022000) fn(DT_N_S_soc_S_adc_40022000_S_channel_4) fn(DT_N_S_soc_S_adc_40022000_S_channel_8) fn(DT_N_S_soc_S_adc_40022000_S_channel_9) fn(DT_N_S_soc_S_adc_40022000_S_channel_5) fn(DT_N_S_soc_S_adc_40022000_S_channel_d) fn(DT_N_S_soc_S_adc_40022000_S_channel_c) fn(DT_N_S_soc_S_adc_40022000_S_channel_a) fn(DT_N_S_soc_S_adc_40022000_S_channel_10) fn(DT_N_S_soc_S_adc_40022000_S_channel_12) fn(DT_N_S_soc_S_adc_40022000_S_channel_13) fn(DT_N_S_soc_S_adc_40022000_S_channel_0) fn(DT_N_S_soc_S_adc_40022000_S_channel_1) fn(DT_N_S_soc_S_adc_58026000) fn(DT_N_S_soc_S_adc_58026000_S_channel_0) fn(DT_N_S_soc_S_adc_58026000_S_channel_1) fn(DT_N_S_soc_S_dac_40007400) fn(DT_N_S_soc_S_dma_40020000) fn(DT_N_S_soc_S_dmamux_40020800) fn(DT_N_S_soc_S_rng_48021800) fn(DT_N_S_soc_S_memory_controller_52004000) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0) fn(DT_N_S_soc_S_quadspi_52005000) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000) fn(DT_N_S_soc_S_dcmi_48020000) fn(DT_N_S_soc_S_dcmi_48020000_S_port) fn(DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint) fn(DT_N_S_soc_S_mailbox_58026400) fn(DT_N_S_soc_S_usb_40080000) fn(DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0) fn(DT_N_S_cpus) fn(DT_N_S_cpus_S_cpu_0) fn(DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90) fn(DT_N_S_memory_90000000) fn(DT_N_S_clocks) fn(DT_N_S_clocks_S_clk_hse) fn(DT_N_S_clocks_S_clk_hsi48) fn(DT_N_S_clocks_S_clk_lse) fn(DT_N_S_clocks_S_pll_0) fn(DT_N_S_memory_24000000) fn(DT_N_S_memory_30000000) fn(DT_N_S_memory_30020000) fn(DT_N_S_memory_30040000) fn(DT_N_S_memory_38000000) fn(DT_N_S_otghs_fs_phy) fn(DT_N_S_connector) fn(DT_N_S_leds) fn(DT_N_S_leds_S_led_0) fn(DT_N_S_leds_S_led_1) fn(DT_N_S_leds_S_led_2) fn(DT_N_S_gpio_keys) fn(DT_N_S_gpio_keys_S_button_0) fn(DT_N_S_sdram_c0000000) fn(DT_N_S_gpio_deadbeef) fn(DT_N_S_zephyr_user) -#define DT_FOREACH_VARGS_HELPER(fn, ...) fn(DT_N, __VA_ARGS__) fn(DT_N_S_chosen, __VA_ARGS__) fn(DT_N_S_aliases, __VA_ARGS__) fn(DT_N_S_soc, __VA_ARGS__) fn(DT_N_S_soc_S_interrupt_controller_e000e100, __VA_ARGS__) fn(DT_N_S_soc_S_timer_e000e010, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000, __VA_ARGS__) fn(DT_N_S_soc_S_rcc_58024400, __VA_ARGS__) fn(DT_N_S_soc_S_rcc_58024400_S_reset_controller, __VA_ARGS__) fn(DT_N_S_soc_S_interrupt_controller_58000000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12, __VA_ARGS__) fn(DT_N_S_soc_S_watchdog_58004800, __VA_ARGS__) fn(DT_N_S_soc_S_watchdog_50003000, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40011000, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40004400, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40004800, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40004c00, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40005000, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40011400, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40007800, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40007c00, __VA_ARGS__) fn(DT_N_S_soc_S_serial_58000c00, __VA_ARGS__) fn(DT_N_S_soc_S_rtc_58004000, __VA_ARGS__) fn(DT_N_S_soc_S_rtc_58004000_S_backup_regs, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_40005400, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_40005800, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_40005c00, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint, __VA_ARGS__) fn(DT_N_S_soc_S_spi_40013000, __VA_ARGS__) fn(DT_N_S_soc_S_spi_40003800, __VA_ARGS__) fn(DT_N_S_soc_S_spi_40003c00, __VA_ARGS__) fn(DT_N_S_soc_S_spi_40013400, __VA_ARGS__) fn(DT_N_S_soc_S_spi_40015000, __VA_ARGS__) fn(DT_N_S_soc_S_spi_58001400, __VA_ARGS__) fn(DT_N_S_soc_S_i2s_40013000, __VA_ARGS__) fn(DT_N_S_soc_S_i2s_40003800, __VA_ARGS__) fn(DT_N_S_soc_S_i2s_40003c00, __VA_ARGS__) fn(DT_N_S_soc_S_can_4000a000, __VA_ARGS__) fn(DT_N_S_soc_S_can_4000a400, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010000, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010000_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000000, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000000_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000000_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000400, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000400_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000400_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000800, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000800_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000800_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000c00, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000c00_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000c00_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001000, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001000_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001400, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001400_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010400, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010400_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001800, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001800_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001800_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001c00, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001c00_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001c00_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40002000, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40002000_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40002000_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014000, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014000_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014000_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014400, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014400_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014400_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014800, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014800_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014800_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40002400, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_4, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_8, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_9, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_5, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_d, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_c, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_a, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_10, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_12, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_13, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_0, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_1, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022100, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022300, __VA_ARGS__) fn(DT_N_S_soc_S_adc_58026000, __VA_ARGS__) fn(DT_N_S_soc_S_adc_58026000_S_channel_0, __VA_ARGS__) fn(DT_N_S_soc_S_adc_58026000_S_channel_1, __VA_ARGS__) fn(DT_N_S_soc_S_dac_40007400, __VA_ARGS__) fn(DT_N_S_soc_S_dma_40020000, __VA_ARGS__) fn(DT_N_S_soc_S_dma_40020400, __VA_ARGS__) fn(DT_N_S_soc_S_bdma_58025400, __VA_ARGS__) fn(DT_N_S_soc_S_dmamux_40020800, __VA_ARGS__) fn(DT_N_S_soc_S_dmamux_58025800, __VA_ARGS__) fn(DT_N_S_soc_S_rng_48021800, __VA_ARGS__) fn(DT_N_S_soc_S_sdmmc_52007000, __VA_ARGS__) fn(DT_N_S_soc_S_sdmmc_48022400, __VA_ARGS__) fn(DT_N_S_soc_S_ethernet_40028000, __VA_ARGS__) fn(DT_N_S_soc_S_ethernet_40028000_S_mdio, __VA_ARGS__) fn(DT_N_S_soc_S_memory_controller_52004000, __VA_ARGS__) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram, __VA_ARGS__) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0, __VA_ARGS__) fn(DT_N_S_soc_S_memory_38800000, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000, __VA_ARGS__) fn(DT_N_S_soc_S_dcmi_48020000, __VA_ARGS__) fn(DT_N_S_soc_S_dcmi_48020000_S_port, __VA_ARGS__) fn(DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint, __VA_ARGS__) fn(DT_N_S_soc_S_mailbox_58026400, __VA_ARGS__) fn(DT_N_S_soc_S_display_controller_50001000, __VA_ARGS__) fn(DT_N_S_soc_S_usb_40040000, __VA_ARGS__) fn(DT_N_S_soc_S_usb_40080000, __VA_ARGS__) fn(DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0, __VA_ARGS__) fn(DT_N_S_soc_S_dsihost_50000000, __VA_ARGS__) fn(DT_N_S_cpus, __VA_ARGS__) fn(DT_N_S_cpus_S_cpu_0, __VA_ARGS__) fn(DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90, __VA_ARGS__) fn(DT_N_S_memory_90000000, __VA_ARGS__) fn(DT_N_S_clocks, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_hse, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_hsi, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_hsi48, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_csi, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_lse, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_lsi, __VA_ARGS__) fn(DT_N_S_clocks_S_pll_0, __VA_ARGS__) fn(DT_N_S_clocks_S_pll_1, __VA_ARGS__) fn(DT_N_S_clocks_S_pll_2, __VA_ARGS__) fn(DT_N_S_clocks_S_perck, __VA_ARGS__) fn(DT_N_S_dietemp, __VA_ARGS__) fn(DT_N_S_vbat, __VA_ARGS__) fn(DT_N_S_vref, __VA_ARGS__) fn(DT_N_S_smbus1, __VA_ARGS__) fn(DT_N_S_smbus2, __VA_ARGS__) fn(DT_N_S_smbus3, __VA_ARGS__) fn(DT_N_S_smbus4, __VA_ARGS__) fn(DT_N_S_memory_24000000, __VA_ARGS__) fn(DT_N_S_memory_30000000, __VA_ARGS__) fn(DT_N_S_memory_30020000, __VA_ARGS__) fn(DT_N_S_memory_30040000, __VA_ARGS__) fn(DT_N_S_memory_38000000, __VA_ARGS__) fn(DT_N_S_otghs_fs_phy, __VA_ARGS__) fn(DT_N_S_connector, __VA_ARGS__) fn(DT_N_S_leds, __VA_ARGS__) fn(DT_N_S_leds_S_led_0, __VA_ARGS__) fn(DT_N_S_leds_S_led_1, __VA_ARGS__) fn(DT_N_S_leds_S_led_2, __VA_ARGS__) fn(DT_N_S_gpio_keys, __VA_ARGS__) fn(DT_N_S_gpio_keys_S_button_0, __VA_ARGS__) fn(DT_N_S_sdram_c0000000, __VA_ARGS__) fn(DT_N_S_gpio_deadbeef, __VA_ARGS__) fn(DT_N_S_zephyr_user, __VA_ARGS__) -#define DT_FOREACH_OKAY_VARGS_HELPER(fn, ...) fn(DT_N, __VA_ARGS__) fn(DT_N_S_chosen, __VA_ARGS__) fn(DT_N_S_aliases, __VA_ARGS__) fn(DT_N_S_soc, __VA_ARGS__) fn(DT_N_S_soc_S_interrupt_controller_e000e100, __VA_ARGS__) fn(DT_N_S_soc_S_timer_e000e010, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000, __VA_ARGS__) fn(DT_N_S_soc_S_rcc_58024400, __VA_ARGS__) fn(DT_N_S_soc_S_rcc_58024400_S_reset_controller, __VA_ARGS__) fn(DT_N_S_soc_S_interrupt_controller_58000000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40011000, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40004400, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40004c00, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40011400, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40007800, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_40005400, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_40005800, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint, __VA_ARGS__) fn(DT_N_S_soc_S_spi_40013000, __VA_ARGS__) fn(DT_N_S_soc_S_spi_40015000, __VA_ARGS__) fn(DT_N_S_soc_S_can_4000a400, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010000, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010000_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_4, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_8, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_9, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_5, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_d, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_c, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_a, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_10, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_12, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_13, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_0, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_1, __VA_ARGS__) fn(DT_N_S_soc_S_adc_58026000, __VA_ARGS__) fn(DT_N_S_soc_S_adc_58026000_S_channel_0, __VA_ARGS__) fn(DT_N_S_soc_S_adc_58026000_S_channel_1, __VA_ARGS__) fn(DT_N_S_soc_S_dac_40007400, __VA_ARGS__) fn(DT_N_S_soc_S_dma_40020000, __VA_ARGS__) fn(DT_N_S_soc_S_dmamux_40020800, __VA_ARGS__) fn(DT_N_S_soc_S_rng_48021800, __VA_ARGS__) fn(DT_N_S_soc_S_memory_controller_52004000, __VA_ARGS__) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram, __VA_ARGS__) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000, __VA_ARGS__) fn(DT_N_S_soc_S_dcmi_48020000, __VA_ARGS__) fn(DT_N_S_soc_S_dcmi_48020000_S_port, __VA_ARGS__) fn(DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint, __VA_ARGS__) fn(DT_N_S_soc_S_mailbox_58026400, __VA_ARGS__) fn(DT_N_S_soc_S_usb_40080000, __VA_ARGS__) fn(DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0, __VA_ARGS__) fn(DT_N_S_cpus, __VA_ARGS__) fn(DT_N_S_cpus_S_cpu_0, __VA_ARGS__) fn(DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90, __VA_ARGS__) fn(DT_N_S_memory_90000000, __VA_ARGS__) fn(DT_N_S_clocks, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_hse, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_hsi48, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_lse, __VA_ARGS__) fn(DT_N_S_clocks_S_pll_0, __VA_ARGS__) fn(DT_N_S_memory_24000000, __VA_ARGS__) fn(DT_N_S_memory_30000000, __VA_ARGS__) fn(DT_N_S_memory_30020000, __VA_ARGS__) fn(DT_N_S_memory_30040000, __VA_ARGS__) fn(DT_N_S_memory_38000000, __VA_ARGS__) fn(DT_N_S_otghs_fs_phy, __VA_ARGS__) fn(DT_N_S_connector, __VA_ARGS__) fn(DT_N_S_leds, __VA_ARGS__) fn(DT_N_S_leds_S_led_0, __VA_ARGS__) fn(DT_N_S_leds_S_led_1, __VA_ARGS__) fn(DT_N_S_leds_S_led_2, __VA_ARGS__) fn(DT_N_S_gpio_keys, __VA_ARGS__) fn(DT_N_S_gpio_keys_S_button_0, __VA_ARGS__) fn(DT_N_S_sdram_c0000000, __VA_ARGS__) fn(DT_N_S_gpio_deadbeef, __VA_ARGS__) fn(DT_N_S_zephyr_user, __VA_ARGS__) +#define DT_FOREACH_HELPER(fn) fn(DT_N) fn(DT_N_S_chosen) fn(DT_N_S_aliases) fn(DT_N_S_soc) fn(DT_N_S_soc_S_interrupt_controller_e000e100) fn(DT_N_S_soc_S_timer_e000e010) fn(DT_N_S_soc_S_flash_controller_52002000) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000) fn(DT_N_S_soc_S_rcc_58024400) fn(DT_N_S_soc_S_rcc_58024400_S_reset_controller) fn(DT_N_S_soc_S_interrupt_controller_58000000) fn(DT_N_S_soc_S_pin_controller_58020000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6) fn(DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12) fn(DT_N_S_soc_S_watchdog_58004800) fn(DT_N_S_soc_S_watchdog_50003000) fn(DT_N_S_soc_S_serial_40011000) fn(DT_N_S_soc_S_serial_40004400) fn(DT_N_S_soc_S_serial_40004800) fn(DT_N_S_soc_S_serial_40004c00) fn(DT_N_S_soc_S_serial_40005000) fn(DT_N_S_soc_S_serial_40011400) fn(DT_N_S_soc_S_serial_40007800) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx) fn(DT_N_S_soc_S_serial_40007c00) fn(DT_N_S_soc_S_serial_58000c00) fn(DT_N_S_soc_S_rtc_58004000) fn(DT_N_S_soc_S_rtc_58004000_S_backup_regs) fn(DT_N_S_soc_S_i2c_40005400) fn(DT_N_S_soc_S_i2c_40005800) fn(DT_N_S_soc_S_i2c_40005c00) fn(DT_N_S_soc_S_i2c_58001c00) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint) fn(DT_N_S_soc_S_spi_40013000) fn(DT_N_S_soc_S_spi_40003800) fn(DT_N_S_soc_S_spi_40003c00) fn(DT_N_S_soc_S_spi_40013400) fn(DT_N_S_soc_S_spi_40015000) fn(DT_N_S_soc_S_spi_58001400) fn(DT_N_S_soc_S_i2s_40013000) fn(DT_N_S_soc_S_i2s_40003800) fn(DT_N_S_soc_S_i2s_40003c00) fn(DT_N_S_soc_S_can_4000a000) fn(DT_N_S_soc_S_can_4000a400) fn(DT_N_S_soc_S_timers_40010000) fn(DT_N_S_soc_S_timers_40010000_S_pwm) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock) fn(DT_N_S_soc_S_timers_40000000) fn(DT_N_S_soc_S_timers_40000000_S_pwm) fn(DT_N_S_soc_S_timers_40000000_S_counter) fn(DT_N_S_soc_S_timers_40000400) fn(DT_N_S_soc_S_timers_40000400_S_pwm) fn(DT_N_S_soc_S_timers_40000400_S_counter) fn(DT_N_S_soc_S_timers_40000800) fn(DT_N_S_soc_S_timers_40000800_S_pwm) fn(DT_N_S_soc_S_timers_40000800_S_counter) fn(DT_N_S_soc_S_timers_40000c00) fn(DT_N_S_soc_S_timers_40000c00_S_pwm) fn(DT_N_S_soc_S_timers_40000c00_S_counter) fn(DT_N_S_soc_S_timers_40001000) fn(DT_N_S_soc_S_timers_40001000_S_counter) fn(DT_N_S_soc_S_timers_40001400) fn(DT_N_S_soc_S_timers_40001400_S_counter) fn(DT_N_S_soc_S_timers_40010400) fn(DT_N_S_soc_S_timers_40010400_S_pwm) fn(DT_N_S_soc_S_timers_40001800) fn(DT_N_S_soc_S_timers_40001800_S_pwm) fn(DT_N_S_soc_S_timers_40001800_S_counter) fn(DT_N_S_soc_S_timers_40001c00) fn(DT_N_S_soc_S_timers_40001c00_S_pwm) fn(DT_N_S_soc_S_timers_40001c00_S_counter) fn(DT_N_S_soc_S_timers_40002000) fn(DT_N_S_soc_S_timers_40002000_S_pwm) fn(DT_N_S_soc_S_timers_40002000_S_counter) fn(DT_N_S_soc_S_timers_40014000) fn(DT_N_S_soc_S_timers_40014000_S_pwm) fn(DT_N_S_soc_S_timers_40014000_S_counter) fn(DT_N_S_soc_S_timers_40014400) fn(DT_N_S_soc_S_timers_40014400_S_pwm) fn(DT_N_S_soc_S_timers_40014400_S_counter) fn(DT_N_S_soc_S_timers_40014800) fn(DT_N_S_soc_S_timers_40014800_S_pwm) fn(DT_N_S_soc_S_timers_40014800_S_counter) fn(DT_N_S_soc_S_timers_40002400) fn(DT_N_S_soc_S_adc_40022000) fn(DT_N_S_soc_S_adc_40022000_S_channel_4) fn(DT_N_S_soc_S_adc_40022000_S_channel_8) fn(DT_N_S_soc_S_adc_40022000_S_channel_9) fn(DT_N_S_soc_S_adc_40022000_S_channel_5) fn(DT_N_S_soc_S_adc_40022000_S_channel_d) fn(DT_N_S_soc_S_adc_40022000_S_channel_c) fn(DT_N_S_soc_S_adc_40022000_S_channel_a) fn(DT_N_S_soc_S_adc_40022000_S_channel_10) fn(DT_N_S_soc_S_adc_40022000_S_channel_12) fn(DT_N_S_soc_S_adc_40022000_S_channel_13) fn(DT_N_S_soc_S_adc_40022000_S_channel_0) fn(DT_N_S_soc_S_adc_40022000_S_channel_1) fn(DT_N_S_soc_S_adc_40022100) fn(DT_N_S_soc_S_adc_40022300) fn(DT_N_S_soc_S_adc_58026000) fn(DT_N_S_soc_S_adc_58026000_S_channel_0) fn(DT_N_S_soc_S_adc_58026000_S_channel_1) fn(DT_N_S_soc_S_dac_40007400) fn(DT_N_S_soc_S_dma_40020000) fn(DT_N_S_soc_S_dma_40020400) fn(DT_N_S_soc_S_bdma_58025400) fn(DT_N_S_soc_S_dmamux_40020800) fn(DT_N_S_soc_S_dmamux_58025800) fn(DT_N_S_soc_S_rng_48021800) fn(DT_N_S_soc_S_sdmmc_52007000) fn(DT_N_S_soc_S_sdmmc_48022400) fn(DT_N_S_soc_S_ethernet_40028000) fn(DT_N_S_soc_S_ethernet_40028000_S_mdio) fn(DT_N_S_soc_S_memory_controller_52004000) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0) fn(DT_N_S_soc_S_memory_38800000) fn(DT_N_S_soc_S_quadspi_52005000) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000) fn(DT_N_S_soc_S_dcmi_48020000) fn(DT_N_S_soc_S_dcmi_48020000_S_port) fn(DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint) fn(DT_N_S_soc_S_mailbox_58026400) fn(DT_N_S_soc_S_display_controller_50001000) fn(DT_N_S_soc_S_usb_40040000) fn(DT_N_S_soc_S_usb_40080000) fn(DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0) fn(DT_N_S_soc_S_dsihost_50000000) fn(DT_N_S_cpus) fn(DT_N_S_cpus_S_cpu_0) fn(DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90) fn(DT_N_S_memory_90000000) fn(DT_N_S_clocks) fn(DT_N_S_clocks_S_clk_hse) fn(DT_N_S_clocks_S_clk_hsi) fn(DT_N_S_clocks_S_clk_hsi48) fn(DT_N_S_clocks_S_clk_csi) fn(DT_N_S_clocks_S_clk_lse) fn(DT_N_S_clocks_S_clk_lsi) fn(DT_N_S_clocks_S_pll_0) fn(DT_N_S_clocks_S_pll_1) fn(DT_N_S_clocks_S_pll_2) fn(DT_N_S_clocks_S_perck) fn(DT_N_S_mcos) fn(DT_N_S_mcos_S_mco1) fn(DT_N_S_mcos_S_mco2) fn(DT_N_S_dietemp) fn(DT_N_S_vbat) fn(DT_N_S_vref) fn(DT_N_S_smbus1) fn(DT_N_S_smbus2) fn(DT_N_S_smbus3) fn(DT_N_S_smbus4) fn(DT_N_S_memory_24000000) fn(DT_N_S_memory_30000000) fn(DT_N_S_memory_30020000) fn(DT_N_S_memory_30040000) fn(DT_N_S_memory_38000000) fn(DT_N_S_otghs_fs_phy) fn(DT_N_S_connector) fn(DT_N_S_leds) fn(DT_N_S_leds_S_led_0) fn(DT_N_S_leds_S_led_1) fn(DT_N_S_leds_S_led_2) fn(DT_N_S_gpio_keys) fn(DT_N_S_gpio_keys_S_button_0) fn(DT_N_S_sdram_c0000000) fn(DT_N_S_gpio_deadbeef) fn(DT_N_S_zephyr_user) +#define DT_FOREACH_OKAY_HELPER(fn) fn(DT_N) fn(DT_N_S_chosen) fn(DT_N_S_aliases) fn(DT_N_S_soc) fn(DT_N_S_soc_S_interrupt_controller_e000e100) fn(DT_N_S_soc_S_timer_e000e010) fn(DT_N_S_soc_S_flash_controller_52002000) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000) fn(DT_N_S_soc_S_rcc_58024400) fn(DT_N_S_soc_S_rcc_58024400_S_reset_controller) fn(DT_N_S_soc_S_interrupt_controller_58000000) fn(DT_N_S_soc_S_pin_controller_58020000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6) fn(DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12) fn(DT_N_S_soc_S_serial_40011000) fn(DT_N_S_soc_S_serial_40004400) fn(DT_N_S_soc_S_serial_40004c00) fn(DT_N_S_soc_S_serial_40011400) fn(DT_N_S_soc_S_serial_40007800) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx) fn(DT_N_S_soc_S_i2c_40005400) fn(DT_N_S_soc_S_i2c_40005800) fn(DT_N_S_soc_S_i2c_58001c00) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint) fn(DT_N_S_soc_S_spi_40013000) fn(DT_N_S_soc_S_spi_40015000) fn(DT_N_S_soc_S_can_4000a400) fn(DT_N_S_soc_S_timers_40010000) fn(DT_N_S_soc_S_timers_40010000_S_pwm) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock) fn(DT_N_S_soc_S_adc_40022000) fn(DT_N_S_soc_S_adc_40022000_S_channel_4) fn(DT_N_S_soc_S_adc_40022000_S_channel_8) fn(DT_N_S_soc_S_adc_40022000_S_channel_9) fn(DT_N_S_soc_S_adc_40022000_S_channel_5) fn(DT_N_S_soc_S_adc_40022000_S_channel_d) fn(DT_N_S_soc_S_adc_40022000_S_channel_c) fn(DT_N_S_soc_S_adc_40022000_S_channel_a) fn(DT_N_S_soc_S_adc_40022000_S_channel_10) fn(DT_N_S_soc_S_adc_40022000_S_channel_12) fn(DT_N_S_soc_S_adc_40022000_S_channel_13) fn(DT_N_S_soc_S_adc_40022000_S_channel_0) fn(DT_N_S_soc_S_adc_40022000_S_channel_1) fn(DT_N_S_soc_S_adc_58026000) fn(DT_N_S_soc_S_adc_58026000_S_channel_0) fn(DT_N_S_soc_S_adc_58026000_S_channel_1) fn(DT_N_S_soc_S_dac_40007400) fn(DT_N_S_soc_S_dma_40020000) fn(DT_N_S_soc_S_dmamux_40020800) fn(DT_N_S_soc_S_rng_48021800) fn(DT_N_S_soc_S_memory_controller_52004000) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0) fn(DT_N_S_soc_S_quadspi_52005000) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000) fn(DT_N_S_soc_S_dcmi_48020000) fn(DT_N_S_soc_S_dcmi_48020000_S_port) fn(DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint) fn(DT_N_S_soc_S_mailbox_58026400) fn(DT_N_S_soc_S_usb_40080000) fn(DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0) fn(DT_N_S_cpus) fn(DT_N_S_cpus_S_cpu_0) fn(DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90) fn(DT_N_S_memory_90000000) fn(DT_N_S_clocks) fn(DT_N_S_clocks_S_clk_hse) fn(DT_N_S_clocks_S_clk_hsi48) fn(DT_N_S_clocks_S_clk_lse) fn(DT_N_S_clocks_S_pll_0) fn(DT_N_S_mcos) fn(DT_N_S_memory_24000000) fn(DT_N_S_memory_30000000) fn(DT_N_S_memory_30020000) fn(DT_N_S_memory_30040000) fn(DT_N_S_memory_38000000) fn(DT_N_S_otghs_fs_phy) fn(DT_N_S_connector) fn(DT_N_S_leds) fn(DT_N_S_leds_S_led_0) fn(DT_N_S_leds_S_led_1) fn(DT_N_S_leds_S_led_2) fn(DT_N_S_gpio_keys) fn(DT_N_S_gpio_keys_S_button_0) fn(DT_N_S_sdram_c0000000) fn(DT_N_S_gpio_deadbeef) fn(DT_N_S_zephyr_user) +#define DT_FOREACH_VARGS_HELPER(fn, ...) fn(DT_N, __VA_ARGS__) fn(DT_N_S_chosen, __VA_ARGS__) fn(DT_N_S_aliases, __VA_ARGS__) fn(DT_N_S_soc, __VA_ARGS__) fn(DT_N_S_soc_S_interrupt_controller_e000e100, __VA_ARGS__) fn(DT_N_S_soc_S_timer_e000e010, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000, __VA_ARGS__) fn(DT_N_S_soc_S_rcc_58024400, __VA_ARGS__) fn(DT_N_S_soc_S_rcc_58024400_S_reset_controller, __VA_ARGS__) fn(DT_N_S_soc_S_interrupt_controller_58000000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12, __VA_ARGS__) fn(DT_N_S_soc_S_watchdog_58004800, __VA_ARGS__) fn(DT_N_S_soc_S_watchdog_50003000, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40011000, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40004400, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40004800, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40004c00, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40005000, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40011400, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40007800, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40007c00, __VA_ARGS__) fn(DT_N_S_soc_S_serial_58000c00, __VA_ARGS__) fn(DT_N_S_soc_S_rtc_58004000, __VA_ARGS__) fn(DT_N_S_soc_S_rtc_58004000_S_backup_regs, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_40005400, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_40005800, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_40005c00, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint, __VA_ARGS__) fn(DT_N_S_soc_S_spi_40013000, __VA_ARGS__) fn(DT_N_S_soc_S_spi_40003800, __VA_ARGS__) fn(DT_N_S_soc_S_spi_40003c00, __VA_ARGS__) fn(DT_N_S_soc_S_spi_40013400, __VA_ARGS__) fn(DT_N_S_soc_S_spi_40015000, __VA_ARGS__) fn(DT_N_S_soc_S_spi_58001400, __VA_ARGS__) fn(DT_N_S_soc_S_i2s_40013000, __VA_ARGS__) fn(DT_N_S_soc_S_i2s_40003800, __VA_ARGS__) fn(DT_N_S_soc_S_i2s_40003c00, __VA_ARGS__) fn(DT_N_S_soc_S_can_4000a000, __VA_ARGS__) fn(DT_N_S_soc_S_can_4000a400, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010000, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010000_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000000, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000000_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000000_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000400, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000400_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000400_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000800, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000800_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000800_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000c00, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000c00_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40000c00_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001000, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001000_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001400, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001400_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010400, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010400_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001800, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001800_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001800_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001c00, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001c00_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40001c00_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40002000, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40002000_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40002000_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014000, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014000_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014000_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014400, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014400_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014400_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014800, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014800_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40014800_S_counter, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40002400, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_4, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_8, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_9, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_5, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_d, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_c, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_a, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_10, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_12, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_13, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_0, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_1, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022100, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022300, __VA_ARGS__) fn(DT_N_S_soc_S_adc_58026000, __VA_ARGS__) fn(DT_N_S_soc_S_adc_58026000_S_channel_0, __VA_ARGS__) fn(DT_N_S_soc_S_adc_58026000_S_channel_1, __VA_ARGS__) fn(DT_N_S_soc_S_dac_40007400, __VA_ARGS__) fn(DT_N_S_soc_S_dma_40020000, __VA_ARGS__) fn(DT_N_S_soc_S_dma_40020400, __VA_ARGS__) fn(DT_N_S_soc_S_bdma_58025400, __VA_ARGS__) fn(DT_N_S_soc_S_dmamux_40020800, __VA_ARGS__) fn(DT_N_S_soc_S_dmamux_58025800, __VA_ARGS__) fn(DT_N_S_soc_S_rng_48021800, __VA_ARGS__) fn(DT_N_S_soc_S_sdmmc_52007000, __VA_ARGS__) fn(DT_N_S_soc_S_sdmmc_48022400, __VA_ARGS__) fn(DT_N_S_soc_S_ethernet_40028000, __VA_ARGS__) fn(DT_N_S_soc_S_ethernet_40028000_S_mdio, __VA_ARGS__) fn(DT_N_S_soc_S_memory_controller_52004000, __VA_ARGS__) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram, __VA_ARGS__) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0, __VA_ARGS__) fn(DT_N_S_soc_S_memory_38800000, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000, __VA_ARGS__) fn(DT_N_S_soc_S_dcmi_48020000, __VA_ARGS__) fn(DT_N_S_soc_S_dcmi_48020000_S_port, __VA_ARGS__) fn(DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint, __VA_ARGS__) fn(DT_N_S_soc_S_mailbox_58026400, __VA_ARGS__) fn(DT_N_S_soc_S_display_controller_50001000, __VA_ARGS__) fn(DT_N_S_soc_S_usb_40040000, __VA_ARGS__) fn(DT_N_S_soc_S_usb_40080000, __VA_ARGS__) fn(DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0, __VA_ARGS__) fn(DT_N_S_soc_S_dsihost_50000000, __VA_ARGS__) fn(DT_N_S_cpus, __VA_ARGS__) fn(DT_N_S_cpus_S_cpu_0, __VA_ARGS__) fn(DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90, __VA_ARGS__) fn(DT_N_S_memory_90000000, __VA_ARGS__) fn(DT_N_S_clocks, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_hse, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_hsi, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_hsi48, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_csi, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_lse, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_lsi, __VA_ARGS__) fn(DT_N_S_clocks_S_pll_0, __VA_ARGS__) fn(DT_N_S_clocks_S_pll_1, __VA_ARGS__) fn(DT_N_S_clocks_S_pll_2, __VA_ARGS__) fn(DT_N_S_clocks_S_perck, __VA_ARGS__) fn(DT_N_S_mcos, __VA_ARGS__) fn(DT_N_S_mcos_S_mco1, __VA_ARGS__) fn(DT_N_S_mcos_S_mco2, __VA_ARGS__) fn(DT_N_S_dietemp, __VA_ARGS__) fn(DT_N_S_vbat, __VA_ARGS__) fn(DT_N_S_vref, __VA_ARGS__) fn(DT_N_S_smbus1, __VA_ARGS__) fn(DT_N_S_smbus2, __VA_ARGS__) fn(DT_N_S_smbus3, __VA_ARGS__) fn(DT_N_S_smbus4, __VA_ARGS__) fn(DT_N_S_memory_24000000, __VA_ARGS__) fn(DT_N_S_memory_30000000, __VA_ARGS__) fn(DT_N_S_memory_30020000, __VA_ARGS__) fn(DT_N_S_memory_30040000, __VA_ARGS__) fn(DT_N_S_memory_38000000, __VA_ARGS__) fn(DT_N_S_otghs_fs_phy, __VA_ARGS__) fn(DT_N_S_connector, __VA_ARGS__) fn(DT_N_S_leds, __VA_ARGS__) fn(DT_N_S_leds_S_led_0, __VA_ARGS__) fn(DT_N_S_leds_S_led_1, __VA_ARGS__) fn(DT_N_S_leds_S_led_2, __VA_ARGS__) fn(DT_N_S_gpio_keys, __VA_ARGS__) fn(DT_N_S_gpio_keys_S_button_0, __VA_ARGS__) fn(DT_N_S_sdram_c0000000, __VA_ARGS__) fn(DT_N_S_gpio_deadbeef, __VA_ARGS__) fn(DT_N_S_zephyr_user, __VA_ARGS__) +#define DT_FOREACH_OKAY_VARGS_HELPER(fn, ...) fn(DT_N, __VA_ARGS__) fn(DT_N_S_chosen, __VA_ARGS__) fn(DT_N_S_aliases, __VA_ARGS__) fn(DT_N_S_soc, __VA_ARGS__) fn(DT_N_S_soc_S_interrupt_controller_e000e100, __VA_ARGS__) fn(DT_N_S_soc_S_timer_e000e010, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000, __VA_ARGS__) fn(DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_e0000, __VA_ARGS__) fn(DT_N_S_soc_S_rcc_58024400, __VA_ARGS__) fn(DT_N_S_soc_S_rcc_58024400_S_reset_controller, __VA_ARGS__) fn(DT_N_S_soc_S_interrupt_controller_58000000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020400, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020800, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58020c00, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021400, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021800, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58021c00, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022000, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022400, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_gpio_58022800, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp16_pa0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp0_pa0_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp1_pa1_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp18_pa4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp19_pa5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp9_pb0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp5_pb1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp10_pc0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp12_pc2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp13_pc3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp4_pc4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc1_inp8_pc5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp0_pc2_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_adc3_inp1_pc3_c, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out1_pa4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dac1_out2_pa5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_pixclk_pa6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d3_pg11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_hsync_ph8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d0_ph9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d1_ph10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d2_ph11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d4_ph14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d5_pi4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_vsync_pi5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d6_pi6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_dcmi_d7_pi7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_rx_pb5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fdcan2_tx_pb13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d2_pd0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d3_pd1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d13_pd8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d14_pd9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d15_pd10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d0_pd14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d1_pd15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl0_pe0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_nbl1_pe1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d4_pe7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d5_pe8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d6_pe9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d7_pe10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d8_pe11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d9_pe12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d10_pe13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d11_pe14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_d12_pe15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a0_pf0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a1_pf1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a2_pf2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a3_pf3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a4_pf4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a5_pf5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnras_pf11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a6_pf12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a7_pf13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a8_pf14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a9_pf15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a10_pg0, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a11_pg1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a12_pg2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a14_pg4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_a15_pg5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdclk_pg8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdncas_pg15, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdcke0_ph2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdne0_ph3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_fmc_sdnwe_ph5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_scl_pb8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_scl_ph4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_scl_pb6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c1_sda_pb9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c2_sda_pb11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_i2c4_sda_ph12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io0_pd11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io1_pd12, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io2_pe2, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_io3_pf6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_clk_pf10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_quadspi_bk1_ncs_pg6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_miso_pg9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_miso_pj11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_mosi_pd7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_mosi_pj10, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_nss_pa4, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_nss_pk1, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi1_sck_pb3, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_spi5_sck_ph6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_tim1_ch3_pj9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_cts_pf9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rts_pf8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_rx_pb7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_rx_pd6, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_rx_pi9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_rx_pc7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_rx_pa8, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart1_tx_pa9, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart2_tx_pd5, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart4_tx_ph13, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usart6_tx_pg14, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_uart7_tx_pf7, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dm_pa11, __VA_ARGS__) fn(DT_N_S_soc_S_pin_controller_58020000_S_usb_otg_fs_dp_pa12, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40011000, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40004400, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40004c00, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40011400, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40007800, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart, __VA_ARGS__) fn(DT_N_S_soc_S_serial_40007800_S_bt_hci_uart_S_murata_1dx, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_40005400, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_40005800, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port, __VA_ARGS__) fn(DT_N_S_soc_S_i2c_58001c00_S_ov7670_21_S_port_S_endpoint, __VA_ARGS__) fn(DT_N_S_soc_S_spi_40013000, __VA_ARGS__) fn(DT_N_S_soc_S_spi_40015000, __VA_ARGS__) fn(DT_N_S_soc_S_can_4000a400, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010000, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010000_S_pwm, __VA_ARGS__) fn(DT_N_S_soc_S_timers_40010000_S_pwm_S_pwmclock, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_4, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_8, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_9, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_5, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_d, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_c, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_a, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_10, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_12, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_13, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_0, __VA_ARGS__) fn(DT_N_S_soc_S_adc_40022000_S_channel_1, __VA_ARGS__) fn(DT_N_S_soc_S_adc_58026000, __VA_ARGS__) fn(DT_N_S_soc_S_adc_58026000_S_channel_0, __VA_ARGS__) fn(DT_N_S_soc_S_adc_58026000_S_channel_1, __VA_ARGS__) fn(DT_N_S_soc_S_dac_40007400, __VA_ARGS__) fn(DT_N_S_soc_S_dma_40020000, __VA_ARGS__) fn(DT_N_S_soc_S_dmamux_40020800, __VA_ARGS__) fn(DT_N_S_soc_S_rng_48021800, __VA_ARGS__) fn(DT_N_S_soc_S_memory_controller_52004000, __VA_ARGS__) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram, __VA_ARGS__) fn(DT_N_S_soc_S_memory_controller_52004000_S_sdram_S_bank_0, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_0, __VA_ARGS__) fn(DT_N_S_soc_S_quadspi_52005000_S_qspi_nor_flash_90000000_S_partitions_S_partition_100000, __VA_ARGS__) fn(DT_N_S_soc_S_dcmi_48020000, __VA_ARGS__) fn(DT_N_S_soc_S_dcmi_48020000_S_port, __VA_ARGS__) fn(DT_N_S_soc_S_dcmi_48020000_S_port_S_endpoint, __VA_ARGS__) fn(DT_N_S_soc_S_mailbox_58026400, __VA_ARGS__) fn(DT_N_S_soc_S_usb_40080000, __VA_ARGS__) fn(DT_N_S_soc_S_usb_40080000_S_cdc_acm_uart0, __VA_ARGS__) fn(DT_N_S_cpus, __VA_ARGS__) fn(DT_N_S_cpus_S_cpu_0, __VA_ARGS__) fn(DT_N_S_cpus_S_cpu_0_S_mpu_e000ed90, __VA_ARGS__) fn(DT_N_S_memory_90000000, __VA_ARGS__) fn(DT_N_S_clocks, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_hse, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_hsi48, __VA_ARGS__) fn(DT_N_S_clocks_S_clk_lse, __VA_ARGS__) fn(DT_N_S_clocks_S_pll_0, __VA_ARGS__) fn(DT_N_S_mcos, __VA_ARGS__) fn(DT_N_S_memory_24000000, __VA_ARGS__) fn(DT_N_S_memory_30000000, __VA_ARGS__) fn(DT_N_S_memory_30020000, __VA_ARGS__) fn(DT_N_S_memory_30040000, __VA_ARGS__) fn(DT_N_S_memory_38000000, __VA_ARGS__) fn(DT_N_S_otghs_fs_phy, __VA_ARGS__) fn(DT_N_S_connector, __VA_ARGS__) fn(DT_N_S_leds, __VA_ARGS__) fn(DT_N_S_leds_S_led_0, __VA_ARGS__) fn(DT_N_S_leds_S_led_1, __VA_ARGS__) fn(DT_N_S_leds_S_led_2, __VA_ARGS__) fn(DT_N_S_gpio_keys, __VA_ARGS__) fn(DT_N_S_gpio_keys_S_button_0, __VA_ARGS__) fn(DT_N_S_sdram_c0000000, __VA_ARGS__) fn(DT_N_S_gpio_deadbeef, __VA_ARGS__) fn(DT_N_S_zephyr_user, __VA_ARGS__) #define DT_COMPAT_fixed_partitions_LABEL_bootloader DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_0 #define DT_COMPAT_fixed_partitions_LABEL_bootloader_EXISTS 1 #define DT_COMPAT_fixed_partitions_LABEL_image_0 DT_N_S_soc_S_flash_controller_52002000_S_flash_8000000_S_partitions_S_partition_40000 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/driver-validation.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/driver-validation.h index 136c9d4d..b1f07dc4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/driver-validation.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/driver-validation.h @@ -8,6 +8,8 @@ #define K_SYSCALL_DRIVER_DMA(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, dma, DMA) +#define K_SYSCALL_DRIVER_ENTROPY(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, entropy, ENTROPY) + #define K_SYSCALL_DRIVER_FLASH(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, flash, FLASH) #define K_SYSCALL_DRIVER_GPIO(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, gpio, GPIO) @@ -20,8 +22,6 @@ #define K_SYSCALL_DRIVER_RESET(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, reset, RESET) -#define K_SYSCALL_DRIVER_UART(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, uart, UART) - #define K_SYSCALL_DRIVER_SPI(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, spi, SPI) #define K_SYSCALL_DRIVER_SHARED_IRQ(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, shared_irq, SHARED_IRQ) @@ -42,6 +42,8 @@ #define K_SYSCALL_DRIVER_CLOCK_CONTROL(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, clock_control, CLOCK_CONTROL) +#define K_SYSCALL_DRIVER_COMPARATOR(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, comparator, COMPARATOR) + #define K_SYSCALL_DRIVER_COREDUMP(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, coredump, COREDUMP) #define K_SYSCALL_DRIVER_COUNTER(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, counter, COUNTER) @@ -62,8 +64,6 @@ #define K_SYSCALL_DRIVER_EMUL_SENSOR(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, emul_sensor, EMUL_SENSOR) -#define K_SYSCALL_DRIVER_ENTROPY(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, entropy, ENTROPY) - #define K_SYSCALL_DRIVER_ESPI(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, espi, ESPI) #define K_SYSCALL_DRIVER_ESPI_SAF(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, espi_saf, ESPI_SAF) @@ -74,6 +74,8 @@ #define K_SYSCALL_DRIVER_GNSS(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, gnss, GNSS) +#define K_SYSCALL_DRIVER_HAPTICS(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, haptics, HAPTICS) + #define K_SYSCALL_DRIVER_HWSPINLOCK(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, hwspinlock, HWSPINLOCK) #define K_SYSCALL_DRIVER_I2S(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, i2s, I2S) @@ -120,6 +122,8 @@ #define K_SYSCALL_DRIVER_SMBUS(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, smbus, SMBUS) +#define K_SYSCALL_DRIVER_STEPPER(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, stepper, STEPPER) + #define K_SYSCALL_DRIVER_SYSCON(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, syscon, SYSCON) #define K_SYSCALL_DRIVER_TEE(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, tee, TEE) @@ -132,6 +136,8 @@ #define K_SYSCALL_DRIVER_CAN_TRANSCEIVER(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, can_transceiver, CAN_TRANSCEIVER) +#define K_SYSCALL_DRIVER_NRF_CLOCK_CONTROL(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, nrf_clock_control, NRF_CLOCK_CONTROL) + #define K_SYSCALL_DRIVER_I3C_TARGET(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, i3c_target, I3C_TARGET) #define K_SYSCALL_DRIVER_ITS(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, its, ITS) @@ -146,6 +152,8 @@ #define K_SYSCALL_DRIVER_SVC(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, svc, SVC) +#define K_SYSCALL_DRIVER_UART(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, uart, UART) + #define K_SYSCALL_DRIVER_BC12_EMUL(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, bc12_emul, BC12_EMUL) #define K_SYSCALL_DRIVER_BC12(ptr, op) K_SYSCALL_DRIVER_GEN(ptr, op, bc12, BC12) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/kobj-types-enum.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/kobj-types-enum.h index bc465b92..13243796 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/kobj-types-enum.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/kobj-types-enum.h @@ -42,13 +42,13 @@ K_OBJ_SENSOR_DECODER_API, /* Driver subsystems */ K_OBJ_DRIVER_ADC, K_OBJ_DRIVER_DMA, +K_OBJ_DRIVER_ENTROPY, K_OBJ_DRIVER_FLASH, K_OBJ_DRIVER_GPIO, K_OBJ_DRIVER_I2C, K_OBJ_DRIVER_I2C_TARGET, K_OBJ_DRIVER_PWM, K_OBJ_DRIVER_RESET, -K_OBJ_DRIVER_UART, K_OBJ_DRIVER_SPI, K_OBJ_DRIVER_SHARED_IRQ, K_OBJ_DRIVER_CRYPTO, @@ -59,6 +59,7 @@ K_OBJ_DRIVER_CAN, K_OBJ_DRIVER_CELLULAR, K_OBJ_DRIVER_CHARGER, K_OBJ_DRIVER_CLOCK_CONTROL, +K_OBJ_DRIVER_COMPARATOR, K_OBJ_DRIVER_COREDUMP, K_OBJ_DRIVER_COUNTER, K_OBJ_DRIVER_DAC, @@ -69,12 +70,12 @@ K_OBJ_DRIVER_EEPROM, K_OBJ_DRIVER_EMUL_BBRAM, K_OBJ_DRIVER_FUEL_GAUGE_EMUL, K_OBJ_DRIVER_EMUL_SENSOR, -K_OBJ_DRIVER_ENTROPY, K_OBJ_DRIVER_ESPI, K_OBJ_DRIVER_ESPI_SAF, K_OBJ_DRIVER_FPGA, K_OBJ_DRIVER_FUEL_GAUGE, K_OBJ_DRIVER_GNSS, +K_OBJ_DRIVER_HAPTICS, K_OBJ_DRIVER_HWSPINLOCK, K_OBJ_DRIVER_I2S, K_OBJ_DRIVER_I3C, @@ -98,12 +99,14 @@ K_OBJ_DRIVER_RTC, K_OBJ_DRIVER_SDHC, K_OBJ_DRIVER_SENSOR, K_OBJ_DRIVER_SMBUS, +K_OBJ_DRIVER_STEPPER, K_OBJ_DRIVER_SYSCON, K_OBJ_DRIVER_TEE, K_OBJ_DRIVER_VIDEO, K_OBJ_DRIVER_W1, K_OBJ_DRIVER_WDT, K_OBJ_DRIVER_CAN_TRANSCEIVER, +K_OBJ_DRIVER_NRF_CLOCK_CONTROL, K_OBJ_DRIVER_I3C_TARGET, K_OBJ_DRIVER_ITS, K_OBJ_DRIVER_VTD, @@ -111,6 +114,7 @@ K_OBJ_DRIVER_TGPIO, K_OBJ_DRIVER_PCIE_CTRL, K_OBJ_DRIVER_PCIE_EP, K_OBJ_DRIVER_SVC, +K_OBJ_DRIVER_UART, K_OBJ_DRIVER_BC12_EMUL, K_OBJ_DRIVER_BC12, K_OBJ_DRIVER_USBC_PPC, diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/offsets.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/offsets.h index 01476ffd..e8fe036a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/offsets.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/offsets.h @@ -24,6 +24,7 @@ #define ___thread_t_stack_info_OFFSET 0x98 #define ___thread_t_tls_OFFSET 0xa8 #define __z_interrupt_stack_SIZEOF 0x800 +#define __z_interrupt_all_stacks_SIZEOF 0x800 #define _PM_DEVICE_STRUCT_FLAGS_OFFSET 0x0 #define ___thread_arch_t_basepri_OFFSET 0x0 #define ___thread_arch_t_swap_return_value_OFFSET 0x4 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/otype-to-str.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/otype-to-str.h index 7d7fbdfe..8948d60c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/otype-to-str.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/otype-to-str.h @@ -42,13 +42,13 @@ case K_OBJ_SENSOR_DECODER_API: ret = "sensor_decoder_api"; break; /* Driver subsystems */ case K_OBJ_DRIVER_ADC: ret = "adc driver"; break; case K_OBJ_DRIVER_DMA: ret = "dma driver"; break; +case K_OBJ_DRIVER_ENTROPY: ret = "entropy driver"; break; case K_OBJ_DRIVER_FLASH: ret = "flash driver"; break; case K_OBJ_DRIVER_GPIO: ret = "gpio driver"; break; case K_OBJ_DRIVER_I2C: ret = "i2c driver"; break; case K_OBJ_DRIVER_I2C_TARGET: ret = "i2c_target driver"; break; case K_OBJ_DRIVER_PWM: ret = "pwm driver"; break; case K_OBJ_DRIVER_RESET: ret = "reset driver"; break; -case K_OBJ_DRIVER_UART: ret = "uart driver"; break; case K_OBJ_DRIVER_SPI: ret = "spi driver"; break; case K_OBJ_DRIVER_SHARED_IRQ: ret = "shared_irq driver"; break; case K_OBJ_DRIVER_CRYPTO: ret = "crypto driver"; break; @@ -59,6 +59,7 @@ case K_OBJ_DRIVER_CAN: ret = "can driver"; break; case K_OBJ_DRIVER_CELLULAR: ret = "cellular driver"; break; case K_OBJ_DRIVER_CHARGER: ret = "charger driver"; break; case K_OBJ_DRIVER_CLOCK_CONTROL: ret = "clock_control driver"; break; +case K_OBJ_DRIVER_COMPARATOR: ret = "comparator driver"; break; case K_OBJ_DRIVER_COREDUMP: ret = "coredump driver"; break; case K_OBJ_DRIVER_COUNTER: ret = "counter driver"; break; case K_OBJ_DRIVER_DAC: ret = "dac driver"; break; @@ -69,12 +70,12 @@ case K_OBJ_DRIVER_EEPROM: ret = "eeprom driver"; break; case K_OBJ_DRIVER_EMUL_BBRAM: ret = "emul_bbram driver"; break; case K_OBJ_DRIVER_FUEL_GAUGE_EMUL: ret = "fuel_gauge_emul driver"; break; case K_OBJ_DRIVER_EMUL_SENSOR: ret = "emul_sensor driver"; break; -case K_OBJ_DRIVER_ENTROPY: ret = "entropy driver"; break; case K_OBJ_DRIVER_ESPI: ret = "espi driver"; break; case K_OBJ_DRIVER_ESPI_SAF: ret = "espi_saf driver"; break; case K_OBJ_DRIVER_FPGA: ret = "fpga driver"; break; case K_OBJ_DRIVER_FUEL_GAUGE: ret = "fuel_gauge driver"; break; case K_OBJ_DRIVER_GNSS: ret = "gnss driver"; break; +case K_OBJ_DRIVER_HAPTICS: ret = "haptics driver"; break; case K_OBJ_DRIVER_HWSPINLOCK: ret = "hwspinlock driver"; break; case K_OBJ_DRIVER_I2S: ret = "i2s driver"; break; case K_OBJ_DRIVER_I3C: ret = "i3c driver"; break; @@ -98,12 +99,14 @@ case K_OBJ_DRIVER_RTC: ret = "rtc driver"; break; case K_OBJ_DRIVER_SDHC: ret = "sdhc driver"; break; case K_OBJ_DRIVER_SENSOR: ret = "sensor driver"; break; case K_OBJ_DRIVER_SMBUS: ret = "smbus driver"; break; +case K_OBJ_DRIVER_STEPPER: ret = "stepper driver"; break; case K_OBJ_DRIVER_SYSCON: ret = "syscon driver"; break; case K_OBJ_DRIVER_TEE: ret = "tee driver"; break; case K_OBJ_DRIVER_VIDEO: ret = "video driver"; break; case K_OBJ_DRIVER_W1: ret = "w1 driver"; break; case K_OBJ_DRIVER_WDT: ret = "wdt driver"; break; case K_OBJ_DRIVER_CAN_TRANSCEIVER: ret = "can_transceiver driver"; break; +case K_OBJ_DRIVER_NRF_CLOCK_CONTROL: ret = "nrf_clock_control driver"; break; case K_OBJ_DRIVER_I3C_TARGET: ret = "i3c_target driver"; break; case K_OBJ_DRIVER_ITS: ret = "its driver"; break; case K_OBJ_DRIVER_VTD: ret = "vtd driver"; break; @@ -111,6 +114,7 @@ case K_OBJ_DRIVER_TGPIO: ret = "tgpio driver"; break; case K_OBJ_DRIVER_PCIE_CTRL: ret = "pcie_ctrl driver"; break; case K_OBJ_DRIVER_PCIE_EP: ret = "pcie_ep driver"; break; case K_OBJ_DRIVER_SVC: ret = "svc driver"; break; +case K_OBJ_DRIVER_UART: ret = "uart driver"; break; case K_OBJ_DRIVER_BC12_EMUL: ret = "bc12_emul driver"; break; case K_OBJ_DRIVER_BC12: ret = "bc12 driver"; break; case K_OBJ_DRIVER_USBC_PPC: ret = "usbc_ppc driver"; break; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscall_list.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscall_list.h index 74704a43..bdea1cac 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscall_list.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscall_list.h @@ -17,547 +17,563 @@ #define K_SYSCALL_DMA_START 11 #define K_SYSCALL_DMA_STOP 12 #define K_SYSCALL_DMA_SUSPEND 13 -#define K_SYSCALL_FLASH_ERASE 14 -#define K_SYSCALL_FLASH_EX_OP 15 -#define K_SYSCALL_FLASH_FILL 16 -#define K_SYSCALL_FLASH_FLATTEN 17 -#define K_SYSCALL_FLASH_GET_PAGE_COUNT 18 -#define K_SYSCALL_FLASH_GET_PAGE_INFO_BY_IDX 19 -#define K_SYSCALL_FLASH_GET_PAGE_INFO_BY_OFFS 20 -#define K_SYSCALL_FLASH_GET_PARAMETERS 21 -#define K_SYSCALL_FLASH_GET_WRITE_BLOCK_SIZE 22 -#define K_SYSCALL_FLASH_READ 23 -#define K_SYSCALL_FLASH_READ_JEDEC_ID 24 -#define K_SYSCALL_FLASH_SFDP_READ 25 -#define K_SYSCALL_FLASH_WRITE 26 -#define K_SYSCALL_GPIO_GET_PENDING_INT 27 -#define K_SYSCALL_GPIO_PIN_CONFIGURE 28 -#define K_SYSCALL_GPIO_PIN_GET_CONFIG 29 -#define K_SYSCALL_GPIO_PIN_INTERRUPT_CONFIGURE 30 -#define K_SYSCALL_GPIO_PORT_CLEAR_BITS_RAW 31 -#define K_SYSCALL_GPIO_PORT_GET_DIRECTION 32 -#define K_SYSCALL_GPIO_PORT_GET_RAW 33 -#define K_SYSCALL_GPIO_PORT_SET_BITS_RAW 34 -#define K_SYSCALL_GPIO_PORT_SET_MASKED_RAW 35 -#define K_SYSCALL_GPIO_PORT_TOGGLE_BITS 36 -#define K_SYSCALL_HWINFO_CLEAR_RESET_CAUSE 37 -#define K_SYSCALL_HWINFO_GET_DEVICE_EUI64 38 -#define K_SYSCALL_HWINFO_GET_DEVICE_ID 39 -#define K_SYSCALL_HWINFO_GET_RESET_CAUSE 40 -#define K_SYSCALL_HWINFO_GET_SUPPORTED_RESET_CAUSE 41 -#define K_SYSCALL_I2C_CONFIGURE 42 -#define K_SYSCALL_I2C_GET_CONFIG 43 -#define K_SYSCALL_I2C_RECOVER_BUS 44 -#define K_SYSCALL_I2C_TARGET_DRIVER_REGISTER 45 -#define K_SYSCALL_I2C_TARGET_DRIVER_UNREGISTER 46 -#define K_SYSCALL_I2C_TRANSFER 47 -#define K_SYSCALL_K_BUSY_WAIT 48 -#define K_SYSCALL_K_CONDVAR_BROADCAST 49 -#define K_SYSCALL_K_CONDVAR_INIT 50 -#define K_SYSCALL_K_CONDVAR_SIGNAL 51 -#define K_SYSCALL_K_CONDVAR_WAIT 52 -#define K_SYSCALL_K_EVENT_CLEAR 53 -#define K_SYSCALL_K_EVENT_INIT 54 -#define K_SYSCALL_K_EVENT_POST 55 -#define K_SYSCALL_K_EVENT_SET 56 -#define K_SYSCALL_K_EVENT_SET_MASKED 57 -#define K_SYSCALL_K_EVENT_WAIT 58 -#define K_SYSCALL_K_EVENT_WAIT_ALL 59 -#define K_SYSCALL_K_FLOAT_DISABLE 60 -#define K_SYSCALL_K_FLOAT_ENABLE 61 -#define K_SYSCALL_K_FUTEX_WAIT 62 -#define K_SYSCALL_K_FUTEX_WAKE 63 -#define K_SYSCALL_K_IS_PREEMPT_THREAD 64 -#define K_SYSCALL_K_MSGQ_ALLOC_INIT 65 -#define K_SYSCALL_K_MSGQ_GET 66 -#define K_SYSCALL_K_MSGQ_GET_ATTRS 67 -#define K_SYSCALL_K_MSGQ_NUM_FREE_GET 68 -#define K_SYSCALL_K_MSGQ_NUM_USED_GET 69 -#define K_SYSCALL_K_MSGQ_PEEK 70 -#define K_SYSCALL_K_MSGQ_PEEK_AT 71 -#define K_SYSCALL_K_MSGQ_PURGE 72 -#define K_SYSCALL_K_MSGQ_PUT 73 -#define K_SYSCALL_K_MUTEX_INIT 74 -#define K_SYSCALL_K_MUTEX_LOCK 75 -#define K_SYSCALL_K_MUTEX_UNLOCK 76 -#define K_SYSCALL_K_OBJECT_ACCESS_GRANT 77 -#define K_SYSCALL_K_OBJECT_ALLOC 78 -#define K_SYSCALL_K_OBJECT_ALLOC_SIZE 79 -#define K_SYSCALL_K_OBJECT_RELEASE 80 -#define K_SYSCALL_K_PIPE_ALLOC_INIT 81 -#define K_SYSCALL_K_PIPE_BUFFER_FLUSH 82 -#define K_SYSCALL_K_PIPE_FLUSH 83 -#define K_SYSCALL_K_PIPE_GET 84 -#define K_SYSCALL_K_PIPE_PUT 85 -#define K_SYSCALL_K_PIPE_READ_AVAIL 86 -#define K_SYSCALL_K_PIPE_WRITE_AVAIL 87 -#define K_SYSCALL_K_POLL 88 -#define K_SYSCALL_K_POLL_SIGNAL_CHECK 89 -#define K_SYSCALL_K_POLL_SIGNAL_INIT 90 -#define K_SYSCALL_K_POLL_SIGNAL_RAISE 91 -#define K_SYSCALL_K_POLL_SIGNAL_RESET 92 -#define K_SYSCALL_K_QUEUE_ALLOC_APPEND 93 -#define K_SYSCALL_K_QUEUE_ALLOC_PREPEND 94 -#define K_SYSCALL_K_QUEUE_CANCEL_WAIT 95 -#define K_SYSCALL_K_QUEUE_GET 96 -#define K_SYSCALL_K_QUEUE_INIT 97 -#define K_SYSCALL_K_QUEUE_IS_EMPTY 98 -#define K_SYSCALL_K_QUEUE_PEEK_HEAD 99 -#define K_SYSCALL_K_QUEUE_PEEK_TAIL 100 -#define K_SYSCALL_K_SCHED_CURRENT_THREAD_QUERY 101 -#define K_SYSCALL_K_SEM_COUNT_GET 102 -#define K_SYSCALL_K_SEM_GIVE 103 -#define K_SYSCALL_K_SEM_INIT 104 -#define K_SYSCALL_K_SEM_RESET 105 -#define K_SYSCALL_K_SEM_TAKE 106 -#define K_SYSCALL_K_SLEEP 107 -#define K_SYSCALL_K_STACK_ALLOC_INIT 108 -#define K_SYSCALL_K_STACK_POP 109 -#define K_SYSCALL_K_STACK_PUSH 110 -#define K_SYSCALL_K_STR_OUT 111 -#define K_SYSCALL_K_THREAD_ABORT 112 -#define K_SYSCALL_K_THREAD_CREATE 113 -#define K_SYSCALL_K_THREAD_CUSTOM_DATA_GET 114 -#define K_SYSCALL_K_THREAD_CUSTOM_DATA_SET 115 -#define K_SYSCALL_K_THREAD_DEADLINE_SET 116 -#define K_SYSCALL_K_THREAD_JOIN 117 -#define K_SYSCALL_K_THREAD_NAME_COPY 118 -#define K_SYSCALL_K_THREAD_NAME_SET 119 -#define K_SYSCALL_K_THREAD_PRIORITY_GET 120 -#define K_SYSCALL_K_THREAD_PRIORITY_SET 121 -#define K_SYSCALL_K_THREAD_RESUME 122 -#define K_SYSCALL_K_THREAD_STACK_ALLOC 123 -#define K_SYSCALL_K_THREAD_STACK_FREE 124 -#define K_SYSCALL_K_THREAD_STACK_SPACE_GET 125 -#define K_SYSCALL_K_THREAD_START 126 -#define K_SYSCALL_K_THREAD_SUSPEND 127 -#define K_SYSCALL_K_THREAD_TIMEOUT_EXPIRES_TICKS 128 -#define K_SYSCALL_K_THREAD_TIMEOUT_REMAINING_TICKS 129 -#define K_SYSCALL_K_TIMER_EXPIRES_TICKS 130 -#define K_SYSCALL_K_TIMER_REMAINING_TICKS 131 -#define K_SYSCALL_K_TIMER_START 132 -#define K_SYSCALL_K_TIMER_STATUS_GET 133 -#define K_SYSCALL_K_TIMER_STATUS_SYNC 134 -#define K_SYSCALL_K_TIMER_STOP 135 -#define K_SYSCALL_K_TIMER_USER_DATA_GET 136 -#define K_SYSCALL_K_TIMER_USER_DATA_SET 137 -#define K_SYSCALL_K_UPTIME_TICKS 138 -#define K_SYSCALL_K_USLEEP 139 -#define K_SYSCALL_K_WAKEUP 140 -#define K_SYSCALL_K_YIELD 141 -#define K_SYSCALL_LLEXT_GET_FN_TABLE 142 -#define K_SYSCALL_LOG_BUFFERED_CNT 143 -#define K_SYSCALL_LOG_FILTER_SET 144 -#define K_SYSCALL_LOG_FRONTEND_FILTER_SET 145 -#define K_SYSCALL_LOG_PANIC 146 -#define K_SYSCALL_LOG_PROCESS 147 -#define K_SYSCALL_PWM_CAPTURE_CYCLES 148 -#define K_SYSCALL_PWM_DISABLE_CAPTURE 149 -#define K_SYSCALL_PWM_ENABLE_CAPTURE 150 -#define K_SYSCALL_PWM_GET_CYCLES_PER_SEC 151 -#define K_SYSCALL_PWM_SET_CYCLES 152 -#define K_SYSCALL_RESET_LINE_ASSERT 153 -#define K_SYSCALL_RESET_LINE_DEASSERT 154 -#define K_SYSCALL_RESET_LINE_TOGGLE 155 -#define K_SYSCALL_RESET_STATUS 156 -#define K_SYSCALL_SPI_RELEASE 157 -#define K_SYSCALL_SPI_TRANSCEIVE 158 -#define K_SYSCALL_SYS_CACHE_DATA_FLUSH_AND_INVD_RANGE 159 -#define K_SYSCALL_SYS_CACHE_DATA_FLUSH_RANGE 160 -#define K_SYSCALL_SYS_CACHE_DATA_INVD_RANGE 161 -#define K_SYSCALL_SYS_CLOCK_HW_CYCLES_PER_SEC_RUNTIME_GET 162 -#define K_SYSCALL_UART_CONFIGURE 163 -#define K_SYSCALL_UART_CONFIG_GET 164 -#define K_SYSCALL_UART_DRV_CMD 165 -#define K_SYSCALL_UART_ERR_CHECK 166 -#define K_SYSCALL_UART_IRQ_ERR_DISABLE 167 -#define K_SYSCALL_UART_IRQ_ERR_ENABLE 168 -#define K_SYSCALL_UART_IRQ_IS_PENDING 169 -#define K_SYSCALL_UART_IRQ_RX_DISABLE 170 -#define K_SYSCALL_UART_IRQ_RX_ENABLE 171 -#define K_SYSCALL_UART_IRQ_TX_DISABLE 172 -#define K_SYSCALL_UART_IRQ_TX_ENABLE 173 -#define K_SYSCALL_UART_IRQ_UPDATE 174 -#define K_SYSCALL_UART_LINE_CTRL_GET 175 -#define K_SYSCALL_UART_LINE_CTRL_SET 176 -#define K_SYSCALL_UART_POLL_IN 177 -#define K_SYSCALL_UART_POLL_IN_U16 178 -#define K_SYSCALL_UART_POLL_OUT 179 -#define K_SYSCALL_UART_POLL_OUT_U16 180 -#define K_SYSCALL_UART_RX_DISABLE 181 -#define K_SYSCALL_UART_RX_ENABLE 182 -#define K_SYSCALL_UART_RX_ENABLE_U16 183 -#define K_SYSCALL_UART_TX 184 -#define K_SYSCALL_UART_TX_ABORT 185 -#define K_SYSCALL_UART_TX_U16 186 -#define K_SYSCALL_ZEPHYR_FPUTC 187 -#define K_SYSCALL_ZEPHYR_FWRITE 188 -#define K_SYSCALL_ZEPHYR_READ_STDIN 189 -#define K_SYSCALL_ZEPHYR_WRITE_STDOUT 190 -#define K_SYSCALL_Z_LOG_MSG_SIMPLE_CREATE_0 191 -#define K_SYSCALL_Z_LOG_MSG_SIMPLE_CREATE_1 192 -#define K_SYSCALL_Z_LOG_MSG_SIMPLE_CREATE_2 193 -#define K_SYSCALL_Z_LOG_MSG_STATIC_CREATE 194 -#define K_SYSCALL_Z_SYS_MUTEX_KERNEL_LOCK 195 -#define K_SYSCALL_Z_SYS_MUTEX_KERNEL_UNLOCK 196 -#define K_SYSCALL_BAD 197 -#define K_SYSCALL_LIMIT 198 +#define K_SYSCALL_ENTROPY_GET_ENTROPY 14 +#define K_SYSCALL_FLASH_COPY 15 +#define K_SYSCALL_FLASH_ERASE 16 +#define K_SYSCALL_FLASH_EX_OP 17 +#define K_SYSCALL_FLASH_FILL 18 +#define K_SYSCALL_FLASH_FLATTEN 19 +#define K_SYSCALL_FLASH_GET_PAGE_COUNT 20 +#define K_SYSCALL_FLASH_GET_PAGE_INFO_BY_IDX 21 +#define K_SYSCALL_FLASH_GET_PAGE_INFO_BY_OFFS 22 +#define K_SYSCALL_FLASH_GET_PARAMETERS 23 +#define K_SYSCALL_FLASH_GET_SIZE 24 +#define K_SYSCALL_FLASH_GET_WRITE_BLOCK_SIZE 25 +#define K_SYSCALL_FLASH_READ 26 +#define K_SYSCALL_FLASH_READ_JEDEC_ID 27 +#define K_SYSCALL_FLASH_SFDP_READ 28 +#define K_SYSCALL_FLASH_WRITE 29 +#define K_SYSCALL_GPIO_GET_PENDING_INT 30 +#define K_SYSCALL_GPIO_PIN_CONFIGURE 31 +#define K_SYSCALL_GPIO_PIN_GET_CONFIG 32 +#define K_SYSCALL_GPIO_PIN_INTERRUPT_CONFIGURE 33 +#define K_SYSCALL_GPIO_PORT_CLEAR_BITS_RAW 34 +#define K_SYSCALL_GPIO_PORT_GET_DIRECTION 35 +#define K_SYSCALL_GPIO_PORT_GET_RAW 36 +#define K_SYSCALL_GPIO_PORT_SET_BITS_RAW 37 +#define K_SYSCALL_GPIO_PORT_SET_MASKED_RAW 38 +#define K_SYSCALL_GPIO_PORT_TOGGLE_BITS 39 +#define K_SYSCALL_HWINFO_CLEAR_RESET_CAUSE 40 +#define K_SYSCALL_HWINFO_GET_DEVICE_EUI64 41 +#define K_SYSCALL_HWINFO_GET_DEVICE_ID 42 +#define K_SYSCALL_HWINFO_GET_RESET_CAUSE 43 +#define K_SYSCALL_HWINFO_GET_SUPPORTED_RESET_CAUSE 44 +#define K_SYSCALL_I2C_CONFIGURE 45 +#define K_SYSCALL_I2C_GET_CONFIG 46 +#define K_SYSCALL_I2C_RECOVER_BUS 47 +#define K_SYSCALL_I2C_TARGET_DRIVER_REGISTER 48 +#define K_SYSCALL_I2C_TARGET_DRIVER_UNREGISTER 49 +#define K_SYSCALL_I2C_TRANSFER 50 +#define K_SYSCALL_K_BUSY_WAIT 51 +#define K_SYSCALL_K_CONDVAR_BROADCAST 52 +#define K_SYSCALL_K_CONDVAR_INIT 53 +#define K_SYSCALL_K_CONDVAR_SIGNAL 54 +#define K_SYSCALL_K_CONDVAR_WAIT 55 +#define K_SYSCALL_K_EVENT_CLEAR 56 +#define K_SYSCALL_K_EVENT_INIT 57 +#define K_SYSCALL_K_EVENT_POST 58 +#define K_SYSCALL_K_EVENT_SET 59 +#define K_SYSCALL_K_EVENT_SET_MASKED 60 +#define K_SYSCALL_K_EVENT_WAIT 61 +#define K_SYSCALL_K_EVENT_WAIT_ALL 62 +#define K_SYSCALL_K_FLOAT_DISABLE 63 +#define K_SYSCALL_K_FLOAT_ENABLE 64 +#define K_SYSCALL_K_FUTEX_WAIT 65 +#define K_SYSCALL_K_FUTEX_WAKE 66 +#define K_SYSCALL_K_IS_PREEMPT_THREAD 67 +#define K_SYSCALL_K_MSGQ_ALLOC_INIT 68 +#define K_SYSCALL_K_MSGQ_GET 69 +#define K_SYSCALL_K_MSGQ_GET_ATTRS 70 +#define K_SYSCALL_K_MSGQ_NUM_FREE_GET 71 +#define K_SYSCALL_K_MSGQ_NUM_USED_GET 72 +#define K_SYSCALL_K_MSGQ_PEEK 73 +#define K_SYSCALL_K_MSGQ_PEEK_AT 74 +#define K_SYSCALL_K_MSGQ_PURGE 75 +#define K_SYSCALL_K_MSGQ_PUT 76 +#define K_SYSCALL_K_MUTEX_INIT 77 +#define K_SYSCALL_K_MUTEX_LOCK 78 +#define K_SYSCALL_K_MUTEX_UNLOCK 79 +#define K_SYSCALL_K_OBJECT_ACCESS_GRANT 80 +#define K_SYSCALL_K_OBJECT_ALLOC 81 +#define K_SYSCALL_K_OBJECT_ALLOC_SIZE 82 +#define K_SYSCALL_K_OBJECT_RELEASE 83 +#define K_SYSCALL_K_PIPE_ALLOC_INIT 84 +#define K_SYSCALL_K_PIPE_BUFFER_FLUSH 85 +#define K_SYSCALL_K_PIPE_FLUSH 86 +#define K_SYSCALL_K_PIPE_GET 87 +#define K_SYSCALL_K_PIPE_PUT 88 +#define K_SYSCALL_K_PIPE_READ_AVAIL 89 +#define K_SYSCALL_K_PIPE_WRITE_AVAIL 90 +#define K_SYSCALL_K_POLL 91 +#define K_SYSCALL_K_POLL_SIGNAL_CHECK 92 +#define K_SYSCALL_K_POLL_SIGNAL_INIT 93 +#define K_SYSCALL_K_POLL_SIGNAL_RAISE 94 +#define K_SYSCALL_K_POLL_SIGNAL_RESET 95 +#define K_SYSCALL_K_QUEUE_ALLOC_APPEND 96 +#define K_SYSCALL_K_QUEUE_ALLOC_PREPEND 97 +#define K_SYSCALL_K_QUEUE_CANCEL_WAIT 98 +#define K_SYSCALL_K_QUEUE_GET 99 +#define K_SYSCALL_K_QUEUE_INIT 100 +#define K_SYSCALL_K_QUEUE_IS_EMPTY 101 +#define K_SYSCALL_K_QUEUE_PEEK_HEAD 102 +#define K_SYSCALL_K_QUEUE_PEEK_TAIL 103 +#define K_SYSCALL_K_SCHED_CURRENT_THREAD_QUERY 104 +#define K_SYSCALL_K_SEM_COUNT_GET 105 +#define K_SYSCALL_K_SEM_GIVE 106 +#define K_SYSCALL_K_SEM_INIT 107 +#define K_SYSCALL_K_SEM_RESET 108 +#define K_SYSCALL_K_SEM_TAKE 109 +#define K_SYSCALL_K_SLEEP 110 +#define K_SYSCALL_K_STACK_ALLOC_INIT 111 +#define K_SYSCALL_K_STACK_POP 112 +#define K_SYSCALL_K_STACK_PUSH 113 +#define K_SYSCALL_K_STR_OUT 114 +#define K_SYSCALL_K_THREAD_ABORT 115 +#define K_SYSCALL_K_THREAD_CREATE 116 +#define K_SYSCALL_K_THREAD_CUSTOM_DATA_GET 117 +#define K_SYSCALL_K_THREAD_CUSTOM_DATA_SET 118 +#define K_SYSCALL_K_THREAD_DEADLINE_SET 119 +#define K_SYSCALL_K_THREAD_JOIN 120 +#define K_SYSCALL_K_THREAD_NAME_COPY 121 +#define K_SYSCALL_K_THREAD_NAME_SET 122 +#define K_SYSCALL_K_THREAD_PRIORITY_GET 123 +#define K_SYSCALL_K_THREAD_PRIORITY_SET 124 +#define K_SYSCALL_K_THREAD_RESUME 125 +#define K_SYSCALL_K_THREAD_STACK_ALLOC 126 +#define K_SYSCALL_K_THREAD_STACK_FREE 127 +#define K_SYSCALL_K_THREAD_STACK_SPACE_GET 128 +#define K_SYSCALL_K_THREAD_SUSPEND 129 +#define K_SYSCALL_K_THREAD_TIMEOUT_EXPIRES_TICKS 130 +#define K_SYSCALL_K_THREAD_TIMEOUT_REMAINING_TICKS 131 +#define K_SYSCALL_K_TIMER_EXPIRES_TICKS 132 +#define K_SYSCALL_K_TIMER_REMAINING_TICKS 133 +#define K_SYSCALL_K_TIMER_START 134 +#define K_SYSCALL_K_TIMER_STATUS_GET 135 +#define K_SYSCALL_K_TIMER_STATUS_SYNC 136 +#define K_SYSCALL_K_TIMER_STOP 137 +#define K_SYSCALL_K_TIMER_USER_DATA_GET 138 +#define K_SYSCALL_K_TIMER_USER_DATA_SET 139 +#define K_SYSCALL_K_UPTIME_TICKS 140 +#define K_SYSCALL_K_USLEEP 141 +#define K_SYSCALL_K_WAKEUP 142 +#define K_SYSCALL_K_YIELD 143 +#define K_SYSCALL_LLEXT_GET_FN_TABLE 144 +#define K_SYSCALL_LOG_BUFFERED_CNT 145 +#define K_SYSCALL_LOG_FILTER_SET 146 +#define K_SYSCALL_LOG_FRONTEND_FILTER_SET 147 +#define K_SYSCALL_LOG_PANIC 148 +#define K_SYSCALL_LOG_PROCESS 149 +#define K_SYSCALL_PWM_CAPTURE_CYCLES 150 +#define K_SYSCALL_PWM_DISABLE_CAPTURE 151 +#define K_SYSCALL_PWM_ENABLE_CAPTURE 152 +#define K_SYSCALL_PWM_GET_CYCLES_PER_SEC 153 +#define K_SYSCALL_PWM_SET_CYCLES 154 +#define K_SYSCALL_RESET_LINE_ASSERT 155 +#define K_SYSCALL_RESET_LINE_DEASSERT 156 +#define K_SYSCALL_RESET_LINE_TOGGLE 157 +#define K_SYSCALL_RESET_STATUS 158 +#define K_SYSCALL_SPI_RELEASE 159 +#define K_SYSCALL_SPI_TRANSCEIVE 160 +#define K_SYSCALL_SYS_CACHE_DATA_FLUSH_AND_INVD_RANGE 161 +#define K_SYSCALL_SYS_CACHE_DATA_FLUSH_RANGE 162 +#define K_SYSCALL_SYS_CACHE_DATA_INVD_RANGE 163 +#define K_SYSCALL_SYS_CLOCK_HW_CYCLES_PER_SEC_RUNTIME_GET 164 +#define K_SYSCALL_SYS_CSRAND_GET 165 +#define K_SYSCALL_SYS_RAND_GET 166 +#define K_SYSCALL_UART_CONFIGURE 167 +#define K_SYSCALL_UART_CONFIG_GET 168 +#define K_SYSCALL_UART_DRV_CMD 169 +#define K_SYSCALL_UART_ERR_CHECK 170 +#define K_SYSCALL_UART_IRQ_ERR_DISABLE 171 +#define K_SYSCALL_UART_IRQ_ERR_ENABLE 172 +#define K_SYSCALL_UART_IRQ_IS_PENDING 173 +#define K_SYSCALL_UART_IRQ_RX_DISABLE 174 +#define K_SYSCALL_UART_IRQ_RX_ENABLE 175 +#define K_SYSCALL_UART_IRQ_TX_DISABLE 176 +#define K_SYSCALL_UART_IRQ_TX_ENABLE 177 +#define K_SYSCALL_UART_IRQ_UPDATE 178 +#define K_SYSCALL_UART_LINE_CTRL_GET 179 +#define K_SYSCALL_UART_LINE_CTRL_SET 180 +#define K_SYSCALL_UART_POLL_IN 181 +#define K_SYSCALL_UART_POLL_IN_U16 182 +#define K_SYSCALL_UART_POLL_OUT 183 +#define K_SYSCALL_UART_POLL_OUT_U16 184 +#define K_SYSCALL_UART_RX_DISABLE 185 +#define K_SYSCALL_UART_RX_ENABLE 186 +#define K_SYSCALL_UART_RX_ENABLE_U16 187 +#define K_SYSCALL_UART_TX 188 +#define K_SYSCALL_UART_TX_ABORT 189 +#define K_SYSCALL_UART_TX_U16 190 +#define K_SYSCALL_ZEPHYR_FPUTC 191 +#define K_SYSCALL_ZEPHYR_FWRITE 192 +#define K_SYSCALL_ZEPHYR_READ_STDIN 193 +#define K_SYSCALL_ZEPHYR_WRITE_STDOUT 194 +#define K_SYSCALL_Z_LOG_MSG_SIMPLE_CREATE_0 195 +#define K_SYSCALL_Z_LOG_MSG_SIMPLE_CREATE_1 196 +#define K_SYSCALL_Z_LOG_MSG_SIMPLE_CREATE_2 197 +#define K_SYSCALL_Z_LOG_MSG_STATIC_CREATE 198 +#define K_SYSCALL_Z_SYS_MUTEX_KERNEL_LOCK 199 +#define K_SYSCALL_Z_SYS_MUTEX_KERNEL_UNLOCK 200 +#define K_SYSCALL_BAD 201 +#define K_SYSCALL_LIMIT 202 /* Following syscalls are not used in image */ -#define K_SYSCALL_ATOMIC_ADD 199 -#define K_SYSCALL_ATOMIC_AND 200 -#define K_SYSCALL_ATOMIC_CAS 201 -#define K_SYSCALL_ATOMIC_NAND 202 -#define K_SYSCALL_ATOMIC_OR 203 -#define K_SYSCALL_ATOMIC_PTR_CAS 204 -#define K_SYSCALL_ATOMIC_PTR_SET 205 -#define K_SYSCALL_ATOMIC_SET 206 -#define K_SYSCALL_ATOMIC_SUB 207 -#define K_SYSCALL_ATOMIC_XOR 208 -#define K_SYSCALL_AUXDISPLAY_BACKLIGHT_GET 209 -#define K_SYSCALL_AUXDISPLAY_BACKLIGHT_SET 210 -#define K_SYSCALL_AUXDISPLAY_BRIGHTNESS_GET 211 -#define K_SYSCALL_AUXDISPLAY_BRIGHTNESS_SET 212 -#define K_SYSCALL_AUXDISPLAY_CAPABILITIES_GET 213 -#define K_SYSCALL_AUXDISPLAY_CLEAR 214 -#define K_SYSCALL_AUXDISPLAY_CURSOR_POSITION_GET 215 -#define K_SYSCALL_AUXDISPLAY_CURSOR_POSITION_SET 216 -#define K_SYSCALL_AUXDISPLAY_CURSOR_SET_ENABLED 217 -#define K_SYSCALL_AUXDISPLAY_CURSOR_SHIFT_SET 218 -#define K_SYSCALL_AUXDISPLAY_CUSTOM_CHARACTER_SET 219 -#define K_SYSCALL_AUXDISPLAY_CUSTOM_COMMAND 220 -#define K_SYSCALL_AUXDISPLAY_DISPLAY_OFF 221 -#define K_SYSCALL_AUXDISPLAY_DISPLAY_ON 222 -#define K_SYSCALL_AUXDISPLAY_DISPLAY_POSITION_GET 223 -#define K_SYSCALL_AUXDISPLAY_DISPLAY_POSITION_SET 224 -#define K_SYSCALL_AUXDISPLAY_IS_BUSY 225 -#define K_SYSCALL_AUXDISPLAY_POSITION_BLINKING_SET_ENABLED 226 -#define K_SYSCALL_AUXDISPLAY_WRITE 227 -#define K_SYSCALL_BBRAM_CHECK_INVALID 228 -#define K_SYSCALL_BBRAM_CHECK_POWER 229 -#define K_SYSCALL_BBRAM_CHECK_STANDBY_POWER 230 -#define K_SYSCALL_BBRAM_GET_SIZE 231 -#define K_SYSCALL_BBRAM_READ 232 -#define K_SYSCALL_BBRAM_WRITE 233 -#define K_SYSCALL_BC12_SET_RESULT_CB 234 -#define K_SYSCALL_BC12_SET_ROLE 235 -#define K_SYSCALL_CAN_ADD_RX_FILTER_MSGQ 236 -#define K_SYSCALL_CAN_CALC_TIMING 237 -#define K_SYSCALL_CAN_CALC_TIMING_DATA 238 -#define K_SYSCALL_CAN_GET_BITRATE_MAX 239 -#define K_SYSCALL_CAN_GET_BITRATE_MIN 240 -#define K_SYSCALL_CAN_GET_CAPABILITIES 241 -#define K_SYSCALL_CAN_GET_CORE_CLOCK 242 -#define K_SYSCALL_CAN_GET_MAX_FILTERS 243 -#define K_SYSCALL_CAN_GET_MODE 244 -#define K_SYSCALL_CAN_GET_STATE 245 -#define K_SYSCALL_CAN_GET_TIMING_DATA_MAX 246 -#define K_SYSCALL_CAN_GET_TIMING_DATA_MIN 247 -#define K_SYSCALL_CAN_GET_TIMING_MAX 248 -#define K_SYSCALL_CAN_GET_TIMING_MIN 249 -#define K_SYSCALL_CAN_GET_TRANSCEIVER 250 -#define K_SYSCALL_CAN_RECOVER 251 -#define K_SYSCALL_CAN_REMOVE_RX_FILTER 252 -#define K_SYSCALL_CAN_SEND 253 -#define K_SYSCALL_CAN_SET_BITRATE 254 -#define K_SYSCALL_CAN_SET_BITRATE_DATA 255 -#define K_SYSCALL_CAN_SET_MODE 256 -#define K_SYSCALL_CAN_SET_TIMING 257 -#define K_SYSCALL_CAN_SET_TIMING_DATA 258 -#define K_SYSCALL_CAN_START 259 -#define K_SYSCALL_CAN_STATS_GET_ACK_ERRORS 260 -#define K_SYSCALL_CAN_STATS_GET_BIT0_ERRORS 261 -#define K_SYSCALL_CAN_STATS_GET_BIT1_ERRORS 262 -#define K_SYSCALL_CAN_STATS_GET_BIT_ERRORS 263 -#define K_SYSCALL_CAN_STATS_GET_CRC_ERRORS 264 -#define K_SYSCALL_CAN_STATS_GET_FORM_ERRORS 265 -#define K_SYSCALL_CAN_STATS_GET_RX_OVERRUNS 266 -#define K_SYSCALL_CAN_STATS_GET_STUFF_ERRORS 267 -#define K_SYSCALL_CAN_STOP 268 -#define K_SYSCALL_CHARGER_CHARGE_ENABLE 269 -#define K_SYSCALL_CHARGER_GET_PROP 270 -#define K_SYSCALL_CHARGER_SET_PROP 271 -#define K_SYSCALL_COUNTER_CANCEL_CHANNEL_ALARM 272 -#define K_SYSCALL_COUNTER_GET_FREQUENCY 273 -#define K_SYSCALL_COUNTER_GET_GUARD_PERIOD 274 -#define K_SYSCALL_COUNTER_GET_MAX_TOP_VALUE 275 -#define K_SYSCALL_COUNTER_GET_NUM_OF_CHANNELS 276 -#define K_SYSCALL_COUNTER_GET_PENDING_INT 277 -#define K_SYSCALL_COUNTER_GET_TOP_VALUE 278 -#define K_SYSCALL_COUNTER_GET_VALUE 279 -#define K_SYSCALL_COUNTER_GET_VALUE_64 280 -#define K_SYSCALL_COUNTER_IS_COUNTING_UP 281 -#define K_SYSCALL_COUNTER_SET_CHANNEL_ALARM 282 -#define K_SYSCALL_COUNTER_SET_GUARD_PERIOD 283 -#define K_SYSCALL_COUNTER_SET_TOP_VALUE 284 -#define K_SYSCALL_COUNTER_START 285 -#define K_SYSCALL_COUNTER_STOP 286 -#define K_SYSCALL_COUNTER_TICKS_TO_US 287 -#define K_SYSCALL_COUNTER_US_TO_TICKS 288 -#define K_SYSCALL_DAC_CHANNEL_SETUP 289 -#define K_SYSCALL_DAC_WRITE_VALUE 290 -#define K_SYSCALL_DEVMUX_SELECT_GET 291 -#define K_SYSCALL_DEVMUX_SELECT_SET 292 -#define K_SYSCALL_EEPROM_GET_SIZE 293 -#define K_SYSCALL_EEPROM_READ 294 -#define K_SYSCALL_EEPROM_WRITE 295 -#define K_SYSCALL_EMUL_FUEL_GAUGE_IS_BATTERY_CUTOFF 296 -#define K_SYSCALL_EMUL_FUEL_GAUGE_SET_BATTERY_CHARGING 297 -#define K_SYSCALL_ENTROPY_GET_ENTROPY 298 -#define K_SYSCALL_ESPI_CONFIG 299 -#define K_SYSCALL_ESPI_FLASH_ERASE 300 -#define K_SYSCALL_ESPI_GET_CHANNEL_STATUS 301 -#define K_SYSCALL_ESPI_READ_FLASH 302 -#define K_SYSCALL_ESPI_READ_LPC_REQUEST 303 -#define K_SYSCALL_ESPI_READ_REQUEST 304 -#define K_SYSCALL_ESPI_RECEIVE_OOB 305 -#define K_SYSCALL_ESPI_RECEIVE_VWIRE 306 -#define K_SYSCALL_ESPI_SAF_ACTIVATE 307 -#define K_SYSCALL_ESPI_SAF_CONFIG 308 -#define K_SYSCALL_ESPI_SAF_FLASH_ERASE 309 -#define K_SYSCALL_ESPI_SAF_FLASH_READ 310 -#define K_SYSCALL_ESPI_SAF_FLASH_UNSUCCESS 311 -#define K_SYSCALL_ESPI_SAF_FLASH_WRITE 312 -#define K_SYSCALL_ESPI_SAF_GET_CHANNEL_STATUS 313 -#define K_SYSCALL_ESPI_SAF_SET_PROTECTION_REGIONS 314 -#define K_SYSCALL_ESPI_SEND_OOB 315 -#define K_SYSCALL_ESPI_SEND_VWIRE 316 -#define K_SYSCALL_ESPI_WRITE_FLASH 317 -#define K_SYSCALL_ESPI_WRITE_LPC_REQUEST 318 -#define K_SYSCALL_ESPI_WRITE_REQUEST 319 -#define K_SYSCALL_FLASH_SIMULATOR_GET_MEMORY 320 -#define K_SYSCALL_FUEL_GAUGE_BATTERY_CUTOFF 321 -#define K_SYSCALL_FUEL_GAUGE_GET_BUFFER_PROP 322 -#define K_SYSCALL_FUEL_GAUGE_GET_PROP 323 -#define K_SYSCALL_FUEL_GAUGE_GET_PROPS 324 -#define K_SYSCALL_FUEL_GAUGE_SET_PROP 325 -#define K_SYSCALL_FUEL_GAUGE_SET_PROPS 326 -#define K_SYSCALL_GNSS_GET_ENABLED_SYSTEMS 327 -#define K_SYSCALL_GNSS_GET_FIX_RATE 328 -#define K_SYSCALL_GNSS_GET_NAVIGATION_MODE 329 -#define K_SYSCALL_GNSS_GET_PERIODIC_CONFIG 330 -#define K_SYSCALL_GNSS_GET_SUPPORTED_SYSTEMS 331 -#define K_SYSCALL_GNSS_SET_ENABLED_SYSTEMS 332 -#define K_SYSCALL_GNSS_SET_FIX_RATE 333 -#define K_SYSCALL_GNSS_SET_NAVIGATION_MODE 334 -#define K_SYSCALL_GNSS_SET_PERIODIC_CONFIG 335 -#define K_SYSCALL_HWSPINLOCK_GET_MAX_ID 336 -#define K_SYSCALL_HWSPINLOCK_LOCK 337 -#define K_SYSCALL_HWSPINLOCK_TRYLOCK 338 -#define K_SYSCALL_HWSPINLOCK_UNLOCK 339 -#define K_SYSCALL_I2S_BUF_READ 340 -#define K_SYSCALL_I2S_BUF_WRITE 341 -#define K_SYSCALL_I2S_CONFIGURE 342 -#define K_SYSCALL_I2S_TRIGGER 343 -#define K_SYSCALL_I3C_DO_CCC 344 -#define K_SYSCALL_I3C_TRANSFER 345 -#define K_SYSCALL_IPM_COMPLETE 346 -#define K_SYSCALL_IPM_MAX_DATA_SIZE_GET 347 -#define K_SYSCALL_IPM_MAX_ID_VAL_GET 348 -#define K_SYSCALL_IPM_SEND 349 -#define K_SYSCALL_IPM_SET_ENABLED 350 -#define K_SYSCALL_IVSHMEM_ENABLE_INTERRUPTS 351 -#define K_SYSCALL_IVSHMEM_GET_ID 352 -#define K_SYSCALL_IVSHMEM_GET_MAX_PEERS 353 -#define K_SYSCALL_IVSHMEM_GET_MEM 354 -#define K_SYSCALL_IVSHMEM_GET_OUTPUT_MEM_SECTION 355 -#define K_SYSCALL_IVSHMEM_GET_PROTOCOL 356 -#define K_SYSCALL_IVSHMEM_GET_RW_MEM_SECTION 357 -#define K_SYSCALL_IVSHMEM_GET_STATE 358 -#define K_SYSCALL_IVSHMEM_GET_VECTORS 359 -#define K_SYSCALL_IVSHMEM_INT_PEER 360 -#define K_SYSCALL_IVSHMEM_REGISTER_HANDLER 361 -#define K_SYSCALL_IVSHMEM_SET_STATE 362 -#define K_SYSCALL_KSCAN_CONFIG 363 -#define K_SYSCALL_KSCAN_DISABLE_CALLBACK 364 -#define K_SYSCALL_KSCAN_ENABLE_CALLBACK 365 -#define K_SYSCALL_K_MEM_PAGING_HISTOGRAM_BACKING_STORE_PAGE_IN_GET 366 -#define K_SYSCALL_K_MEM_PAGING_HISTOGRAM_BACKING_STORE_PAGE_OUT_GET 367 -#define K_SYSCALL_K_MEM_PAGING_HISTOGRAM_EVICTION_GET 368 -#define K_SYSCALL_K_MEM_PAGING_STATS_GET 369 -#define K_SYSCALL_K_MEM_PAGING_THREAD_STATS_GET 370 -#define K_SYSCALL_LED_BLINK 371 -#define K_SYSCALL_LED_GET_INFO 372 -#define K_SYSCALL_LED_OFF 373 -#define K_SYSCALL_LED_ON 374 -#define K_SYSCALL_LED_SET_BRIGHTNESS 375 -#define K_SYSCALL_LED_SET_CHANNEL 376 -#define K_SYSCALL_LED_SET_COLOR 377 -#define K_SYSCALL_LED_WRITE_CHANNELS 378 -#define K_SYSCALL_MAXIM_DS3231_GET_SYNCPOINT 379 -#define K_SYSCALL_MAXIM_DS3231_REQ_SYNCPOINT 380 -#define K_SYSCALL_MBOX_MAX_CHANNELS_GET 381 -#define K_SYSCALL_MBOX_MTU_GET 382 -#define K_SYSCALL_MBOX_SEND 383 -#define K_SYSCALL_MBOX_SET_ENABLED 384 -#define K_SYSCALL_MDIO_BUS_DISABLE 385 -#define K_SYSCALL_MDIO_BUS_ENABLE 386 -#define K_SYSCALL_MDIO_READ 387 -#define K_SYSCALL_MDIO_READ_C45 388 -#define K_SYSCALL_MDIO_WRITE 389 -#define K_SYSCALL_MDIO_WRITE_C45 390 -#define K_SYSCALL_MSPI_CONFIG 391 -#define K_SYSCALL_MSPI_DEV_CONFIG 392 -#define K_SYSCALL_MSPI_GET_CHANNEL_STATUS 393 -#define K_SYSCALL_MSPI_SCRAMBLE_CONFIG 394 -#define K_SYSCALL_MSPI_TIMING_CONFIG 395 -#define K_SYSCALL_MSPI_TRANSCEIVE 396 -#define K_SYSCALL_MSPI_XIP_CONFIG 397 -#define K_SYSCALL_NET_ADDR_NTOP 398 -#define K_SYSCALL_NET_ADDR_PTON 399 -#define K_SYSCALL_NET_ETH_GET_PTP_CLOCK_BY_INDEX 400 -#define K_SYSCALL_NET_IF_GET_BY_INDEX 401 -#define K_SYSCALL_NET_IF_IPV4_ADDR_ADD_BY_INDEX 402 -#define K_SYSCALL_NET_IF_IPV4_ADDR_LOOKUP_BY_INDEX 403 -#define K_SYSCALL_NET_IF_IPV4_ADDR_RM_BY_INDEX 404 -#define K_SYSCALL_NET_IF_IPV4_SET_GW_BY_INDEX 405 -#define K_SYSCALL_NET_IF_IPV4_SET_NETMASK_BY_ADDR_BY_INDEX 406 -#define K_SYSCALL_NET_IF_IPV4_SET_NETMASK_BY_INDEX 407 -#define K_SYSCALL_NET_IF_IPV6_ADDR_ADD_BY_INDEX 408 -#define K_SYSCALL_NET_IF_IPV6_ADDR_LOOKUP_BY_INDEX 409 -#define K_SYSCALL_NET_IF_IPV6_ADDR_RM_BY_INDEX 410 -#define K_SYSCALL_NET_SOCKET_SERVICE_REGISTER 411 -#define K_SYSCALL_NRF_QSPI_NOR_XIP_ENABLE 412 -#define K_SYSCALL_PECI_CONFIG 413 -#define K_SYSCALL_PECI_DISABLE 414 -#define K_SYSCALL_PECI_ENABLE 415 -#define K_SYSCALL_PECI_TRANSFER 416 -#define K_SYSCALL_PS2_CONFIG 417 -#define K_SYSCALL_PS2_DISABLE_CALLBACK 418 -#define K_SYSCALL_PS2_ENABLE_CALLBACK 419 -#define K_SYSCALL_PS2_READ 420 -#define K_SYSCALL_PS2_WRITE 421 -#define K_SYSCALL_PTP_CLOCK_GET 422 -#define K_SYSCALL_RETAINED_MEM_CLEAR 423 -#define K_SYSCALL_RETAINED_MEM_READ 424 -#define K_SYSCALL_RETAINED_MEM_SIZE 425 -#define K_SYSCALL_RETAINED_MEM_WRITE 426 -#define K_SYSCALL_RTC_ALARM_GET_SUPPORTED_FIELDS 427 -#define K_SYSCALL_RTC_ALARM_GET_TIME 428 -#define K_SYSCALL_RTC_ALARM_IS_PENDING 429 -#define K_SYSCALL_RTC_ALARM_SET_CALLBACK 430 -#define K_SYSCALL_RTC_ALARM_SET_TIME 431 -#define K_SYSCALL_RTC_GET_CALIBRATION 432 -#define K_SYSCALL_RTC_GET_TIME 433 -#define K_SYSCALL_RTC_SET_CALIBRATION 434 -#define K_SYSCALL_RTC_SET_TIME 435 -#define K_SYSCALL_RTC_UPDATE_SET_CALLBACK 436 -#define K_SYSCALL_RTIO_CQE_COPY_OUT 437 -#define K_SYSCALL_RTIO_CQE_GET_MEMPOOL_BUFFER 438 -#define K_SYSCALL_RTIO_RELEASE_BUFFER 439 -#define K_SYSCALL_RTIO_SQE_CANCEL 440 -#define K_SYSCALL_RTIO_SQE_COPY_IN_GET_HANDLES 441 -#define K_SYSCALL_RTIO_SUBMIT 442 -#define K_SYSCALL_SDHC_CARD_BUSY 443 -#define K_SYSCALL_SDHC_CARD_PRESENT 444 -#define K_SYSCALL_SDHC_DISABLE_INTERRUPT 445 -#define K_SYSCALL_SDHC_ENABLE_INTERRUPT 446 -#define K_SYSCALL_SDHC_EXECUTE_TUNING 447 -#define K_SYSCALL_SDHC_GET_HOST_PROPS 448 -#define K_SYSCALL_SDHC_HW_RESET 449 -#define K_SYSCALL_SDHC_REQUEST 450 -#define K_SYSCALL_SDHC_SET_IO 451 -#define K_SYSCALL_SENSOR_ATTR_GET 452 -#define K_SYSCALL_SENSOR_ATTR_SET 453 -#define K_SYSCALL_SENSOR_CHANNEL_GET 454 -#define K_SYSCALL_SENSOR_GET_DECODER 455 -#define K_SYSCALL_SENSOR_RECONFIGURE_READ_IODEV 456 -#define K_SYSCALL_SENSOR_SAMPLE_FETCH 457 -#define K_SYSCALL_SENSOR_SAMPLE_FETCH_CHAN 458 -#define K_SYSCALL_SIP_SUPERVISORY_CALL 459 -#define K_SYSCALL_SIP_SVC_PLAT_ASYNC_RES_REQ 460 -#define K_SYSCALL_SIP_SVC_PLAT_ASYNC_RES_RES 461 -#define K_SYSCALL_SIP_SVC_PLAT_FORMAT_TRANS_ID 462 -#define K_SYSCALL_SIP_SVC_PLAT_FREE_ASYNC_MEMORY 463 -#define K_SYSCALL_SIP_SVC_PLAT_FUNC_ID_VALID 464 -#define K_SYSCALL_SIP_SVC_PLAT_GET_ERROR_CODE 465 -#define K_SYSCALL_SIP_SVC_PLAT_GET_TRANS_IDX 466 -#define K_SYSCALL_SIP_SVC_PLAT_UPDATE_TRANS_ID 467 -#define K_SYSCALL_SMBUS_BLOCK_PCALL 468 -#define K_SYSCALL_SMBUS_BLOCK_READ 469 -#define K_SYSCALL_SMBUS_BLOCK_WRITE 470 -#define K_SYSCALL_SMBUS_BYTE_DATA_READ 471 -#define K_SYSCALL_SMBUS_BYTE_DATA_WRITE 472 -#define K_SYSCALL_SMBUS_BYTE_READ 473 -#define K_SYSCALL_SMBUS_BYTE_WRITE 474 -#define K_SYSCALL_SMBUS_CONFIGURE 475 -#define K_SYSCALL_SMBUS_GET_CONFIG 476 -#define K_SYSCALL_SMBUS_HOST_NOTIFY_REMOVE_CB 477 -#define K_SYSCALL_SMBUS_PCALL 478 -#define K_SYSCALL_SMBUS_QUICK 479 -#define K_SYSCALL_SMBUS_SMBALERT_REMOVE_CB 480 -#define K_SYSCALL_SMBUS_WORD_DATA_READ 481 -#define K_SYSCALL_SMBUS_WORD_DATA_WRITE 482 -#define K_SYSCALL_SYSCON_GET_BASE 483 -#define K_SYSCALL_SYSCON_GET_SIZE 484 -#define K_SYSCALL_SYSCON_READ_REG 485 -#define K_SYSCALL_SYSCON_WRITE_REG 486 -#define K_SYSCALL_SYS_CSRAND_GET 487 -#define K_SYSCALL_SYS_RAND_GET 488 -#define K_SYSCALL_TEE_CANCEL 489 -#define K_SYSCALL_TEE_CLOSE_SESSION 490 -#define K_SYSCALL_TEE_GET_VERSION 491 -#define K_SYSCALL_TEE_INVOKE_FUNC 492 -#define K_SYSCALL_TEE_OPEN_SESSION 493 -#define K_SYSCALL_TEE_SHM_ALLOC 494 -#define K_SYSCALL_TEE_SHM_FREE 495 -#define K_SYSCALL_TEE_SHM_REGISTER 496 -#define K_SYSCALL_TEE_SHM_UNREGISTER 497 -#define K_SYSCALL_TEE_SUPPL_RECV 498 -#define K_SYSCALL_TEE_SUPPL_SEND 499 -#define K_SYSCALL_TGPIO_PIN_CONFIG_EXT_TIMESTAMP 500 -#define K_SYSCALL_TGPIO_PIN_DISABLE 501 -#define K_SYSCALL_TGPIO_PIN_PERIODIC_OUTPUT 502 -#define K_SYSCALL_TGPIO_PIN_READ_TS_EC 503 -#define K_SYSCALL_TGPIO_PORT_GET_CYCLES_PER_SECOND 504 -#define K_SYSCALL_TGPIO_PORT_GET_TIME 505 -#define K_SYSCALL_UPDATEHUB_AUTOHANDLER 506 -#define K_SYSCALL_UPDATEHUB_CONFIRM 507 -#define K_SYSCALL_UPDATEHUB_PROBE 508 -#define K_SYSCALL_UPDATEHUB_REBOOT 509 -#define K_SYSCALL_UPDATEHUB_UPDATE 510 -#define K_SYSCALL_USER_FAULT 511 -#define K_SYSCALL_W1_CHANGE_BUS_LOCK 512 -#define K_SYSCALL_W1_CONFIGURE 513 -#define K_SYSCALL_W1_GET_SLAVE_COUNT 514 -#define K_SYSCALL_W1_READ_BIT 515 -#define K_SYSCALL_W1_READ_BLOCK 516 -#define K_SYSCALL_W1_READ_BYTE 517 -#define K_SYSCALL_W1_RESET_BUS 518 -#define K_SYSCALL_W1_SEARCH_BUS 519 -#define K_SYSCALL_W1_WRITE_BIT 520 -#define K_SYSCALL_W1_WRITE_BLOCK 521 -#define K_SYSCALL_W1_WRITE_BYTE 522 -#define K_SYSCALL_WDT_DISABLE 523 -#define K_SYSCALL_WDT_FEED 524 -#define K_SYSCALL_WDT_SETUP 525 -#define K_SYSCALL_XTENSA_USER_FAULT 526 -#define K_SYSCALL_ZSOCK_ACCEPT 527 -#define K_SYSCALL_ZSOCK_BIND 528 -#define K_SYSCALL_ZSOCK_CLOSE 529 -#define K_SYSCALL_ZSOCK_CONNECT 530 -#define K_SYSCALL_ZSOCK_FCNTL_IMPL 531 -#define K_SYSCALL_ZSOCK_GETHOSTNAME 532 -#define K_SYSCALL_ZSOCK_GETPEERNAME 533 -#define K_SYSCALL_ZSOCK_GETSOCKNAME 534 -#define K_SYSCALL_ZSOCK_GETSOCKOPT 535 -#define K_SYSCALL_ZSOCK_GET_CONTEXT_OBJECT 536 -#define K_SYSCALL_ZSOCK_INET_PTON 537 -#define K_SYSCALL_ZSOCK_IOCTL_IMPL 538 -#define K_SYSCALL_ZSOCK_LISTEN 539 -#define K_SYSCALL_ZSOCK_POLL 540 -#define K_SYSCALL_ZSOCK_RECVFROM 541 -#define K_SYSCALL_ZSOCK_RECVMSG 542 -#define K_SYSCALL_ZSOCK_SELECT 543 -#define K_SYSCALL_ZSOCK_SENDMSG 544 -#define K_SYSCALL_ZSOCK_SENDTO 545 -#define K_SYSCALL_ZSOCK_SETSOCKOPT 546 -#define K_SYSCALL_ZSOCK_SHUTDOWN 547 -#define K_SYSCALL_ZSOCK_SOCKET 548 -#define K_SYSCALL_ZSOCK_SOCKETPAIR 549 -#define K_SYSCALL_Z_ERRNO 550 -#define K_SYSCALL_Z_ZSOCK_GETADDRINFO_INTERNAL 551 +#define K_SYSCALL_ATOMIC_ADD 203 +#define K_SYSCALL_ATOMIC_AND 204 +#define K_SYSCALL_ATOMIC_CAS 205 +#define K_SYSCALL_ATOMIC_NAND 206 +#define K_SYSCALL_ATOMIC_OR 207 +#define K_SYSCALL_ATOMIC_PTR_CAS 208 +#define K_SYSCALL_ATOMIC_PTR_SET 209 +#define K_SYSCALL_ATOMIC_SET 210 +#define K_SYSCALL_ATOMIC_SUB 211 +#define K_SYSCALL_ATOMIC_XOR 212 +#define K_SYSCALL_AUXDISPLAY_BACKLIGHT_GET 213 +#define K_SYSCALL_AUXDISPLAY_BACKLIGHT_SET 214 +#define K_SYSCALL_AUXDISPLAY_BRIGHTNESS_GET 215 +#define K_SYSCALL_AUXDISPLAY_BRIGHTNESS_SET 216 +#define K_SYSCALL_AUXDISPLAY_CAPABILITIES_GET 217 +#define K_SYSCALL_AUXDISPLAY_CLEAR 218 +#define K_SYSCALL_AUXDISPLAY_CURSOR_POSITION_GET 219 +#define K_SYSCALL_AUXDISPLAY_CURSOR_POSITION_SET 220 +#define K_SYSCALL_AUXDISPLAY_CURSOR_SET_ENABLED 221 +#define K_SYSCALL_AUXDISPLAY_CURSOR_SHIFT_SET 222 +#define K_SYSCALL_AUXDISPLAY_CUSTOM_CHARACTER_SET 223 +#define K_SYSCALL_AUXDISPLAY_CUSTOM_COMMAND 224 +#define K_SYSCALL_AUXDISPLAY_DISPLAY_OFF 225 +#define K_SYSCALL_AUXDISPLAY_DISPLAY_ON 226 +#define K_SYSCALL_AUXDISPLAY_DISPLAY_POSITION_GET 227 +#define K_SYSCALL_AUXDISPLAY_DISPLAY_POSITION_SET 228 +#define K_SYSCALL_AUXDISPLAY_IS_BUSY 229 +#define K_SYSCALL_AUXDISPLAY_POSITION_BLINKING_SET_ENABLED 230 +#define K_SYSCALL_AUXDISPLAY_WRITE 231 +#define K_SYSCALL_BBRAM_CHECK_INVALID 232 +#define K_SYSCALL_BBRAM_CHECK_POWER 233 +#define K_SYSCALL_BBRAM_CHECK_STANDBY_POWER 234 +#define K_SYSCALL_BBRAM_GET_SIZE 235 +#define K_SYSCALL_BBRAM_READ 236 +#define K_SYSCALL_BBRAM_WRITE 237 +#define K_SYSCALL_BC12_SET_RESULT_CB 238 +#define K_SYSCALL_BC12_SET_ROLE 239 +#define K_SYSCALL_CAN_ADD_RX_FILTER_MSGQ 240 +#define K_SYSCALL_CAN_CALC_TIMING 241 +#define K_SYSCALL_CAN_CALC_TIMING_DATA 242 +#define K_SYSCALL_CAN_GET_BITRATE_MAX 243 +#define K_SYSCALL_CAN_GET_BITRATE_MIN 244 +#define K_SYSCALL_CAN_GET_CAPABILITIES 245 +#define K_SYSCALL_CAN_GET_CORE_CLOCK 246 +#define K_SYSCALL_CAN_GET_MAX_FILTERS 247 +#define K_SYSCALL_CAN_GET_MODE 248 +#define K_SYSCALL_CAN_GET_STATE 249 +#define K_SYSCALL_CAN_GET_TIMING_DATA_MAX 250 +#define K_SYSCALL_CAN_GET_TIMING_DATA_MIN 251 +#define K_SYSCALL_CAN_GET_TIMING_MAX 252 +#define K_SYSCALL_CAN_GET_TIMING_MIN 253 +#define K_SYSCALL_CAN_GET_TRANSCEIVER 254 +#define K_SYSCALL_CAN_RECOVER 255 +#define K_SYSCALL_CAN_REMOVE_RX_FILTER 256 +#define K_SYSCALL_CAN_SEND 257 +#define K_SYSCALL_CAN_SET_BITRATE 258 +#define K_SYSCALL_CAN_SET_BITRATE_DATA 259 +#define K_SYSCALL_CAN_SET_MODE 260 +#define K_SYSCALL_CAN_SET_TIMING 261 +#define K_SYSCALL_CAN_SET_TIMING_DATA 262 +#define K_SYSCALL_CAN_START 263 +#define K_SYSCALL_CAN_STATS_GET_ACK_ERRORS 264 +#define K_SYSCALL_CAN_STATS_GET_BIT0_ERRORS 265 +#define K_SYSCALL_CAN_STATS_GET_BIT1_ERRORS 266 +#define K_SYSCALL_CAN_STATS_GET_BIT_ERRORS 267 +#define K_SYSCALL_CAN_STATS_GET_CRC_ERRORS 268 +#define K_SYSCALL_CAN_STATS_GET_FORM_ERRORS 269 +#define K_SYSCALL_CAN_STATS_GET_RX_OVERRUNS 270 +#define K_SYSCALL_CAN_STATS_GET_STUFF_ERRORS 271 +#define K_SYSCALL_CAN_STOP 272 +#define K_SYSCALL_CHARGER_CHARGE_ENABLE 273 +#define K_SYSCALL_CHARGER_GET_PROP 274 +#define K_SYSCALL_CHARGER_SET_PROP 275 +#define K_SYSCALL_COMPARATOR_GET_OUTPUT 276 +#define K_SYSCALL_COMPARATOR_SET_TRIGGER 277 +#define K_SYSCALL_COMPARATOR_TRIGGER_IS_PENDING 278 +#define K_SYSCALL_COUNTER_CANCEL_CHANNEL_ALARM 279 +#define K_SYSCALL_COUNTER_GET_FREQUENCY 280 +#define K_SYSCALL_COUNTER_GET_GUARD_PERIOD 281 +#define K_SYSCALL_COUNTER_GET_MAX_TOP_VALUE 282 +#define K_SYSCALL_COUNTER_GET_NUM_OF_CHANNELS 283 +#define K_SYSCALL_COUNTER_GET_PENDING_INT 284 +#define K_SYSCALL_COUNTER_GET_TOP_VALUE 285 +#define K_SYSCALL_COUNTER_GET_VALUE 286 +#define K_SYSCALL_COUNTER_GET_VALUE_64 287 +#define K_SYSCALL_COUNTER_IS_COUNTING_UP 288 +#define K_SYSCALL_COUNTER_SET_CHANNEL_ALARM 289 +#define K_SYSCALL_COUNTER_SET_GUARD_PERIOD 290 +#define K_SYSCALL_COUNTER_SET_TOP_VALUE 291 +#define K_SYSCALL_COUNTER_START 292 +#define K_SYSCALL_COUNTER_STOP 293 +#define K_SYSCALL_COUNTER_TICKS_TO_US 294 +#define K_SYSCALL_COUNTER_US_TO_TICKS 295 +#define K_SYSCALL_DAC_CHANNEL_SETUP 296 +#define K_SYSCALL_DAC_WRITE_VALUE 297 +#define K_SYSCALL_DEVMUX_SELECT_GET 298 +#define K_SYSCALL_DEVMUX_SELECT_SET 299 +#define K_SYSCALL_EEPROM_GET_SIZE 300 +#define K_SYSCALL_EEPROM_READ 301 +#define K_SYSCALL_EEPROM_WRITE 302 +#define K_SYSCALL_EMUL_FUEL_GAUGE_IS_BATTERY_CUTOFF 303 +#define K_SYSCALL_EMUL_FUEL_GAUGE_SET_BATTERY_CHARGING 304 +#define K_SYSCALL_ESPI_CONFIG 305 +#define K_SYSCALL_ESPI_FLASH_ERASE 306 +#define K_SYSCALL_ESPI_GET_CHANNEL_STATUS 307 +#define K_SYSCALL_ESPI_READ_FLASH 308 +#define K_SYSCALL_ESPI_READ_LPC_REQUEST 309 +#define K_SYSCALL_ESPI_READ_REQUEST 310 +#define K_SYSCALL_ESPI_RECEIVE_OOB 311 +#define K_SYSCALL_ESPI_RECEIVE_VWIRE 312 +#define K_SYSCALL_ESPI_SAF_ACTIVATE 313 +#define K_SYSCALL_ESPI_SAF_CONFIG 314 +#define K_SYSCALL_ESPI_SAF_FLASH_ERASE 315 +#define K_SYSCALL_ESPI_SAF_FLASH_READ 316 +#define K_SYSCALL_ESPI_SAF_FLASH_UNSUCCESS 317 +#define K_SYSCALL_ESPI_SAF_FLASH_WRITE 318 +#define K_SYSCALL_ESPI_SAF_GET_CHANNEL_STATUS 319 +#define K_SYSCALL_ESPI_SAF_SET_PROTECTION_REGIONS 320 +#define K_SYSCALL_ESPI_SEND_OOB 321 +#define K_SYSCALL_ESPI_SEND_VWIRE 322 +#define K_SYSCALL_ESPI_WRITE_FLASH 323 +#define K_SYSCALL_ESPI_WRITE_LPC_REQUEST 324 +#define K_SYSCALL_ESPI_WRITE_REQUEST 325 +#define K_SYSCALL_FLASH_SIMULATOR_GET_MEMORY 326 +#define K_SYSCALL_FUEL_GAUGE_BATTERY_CUTOFF 327 +#define K_SYSCALL_FUEL_GAUGE_GET_BUFFER_PROP 328 +#define K_SYSCALL_FUEL_GAUGE_GET_PROP 329 +#define K_SYSCALL_FUEL_GAUGE_GET_PROPS 330 +#define K_SYSCALL_FUEL_GAUGE_SET_PROP 331 +#define K_SYSCALL_FUEL_GAUGE_SET_PROPS 332 +#define K_SYSCALL_GNSS_GET_ENABLED_SYSTEMS 333 +#define K_SYSCALL_GNSS_GET_FIX_RATE 334 +#define K_SYSCALL_GNSS_GET_LATEST_TIMEPULSE 335 +#define K_SYSCALL_GNSS_GET_NAVIGATION_MODE 336 +#define K_SYSCALL_GNSS_GET_SUPPORTED_SYSTEMS 337 +#define K_SYSCALL_GNSS_SET_ENABLED_SYSTEMS 338 +#define K_SYSCALL_GNSS_SET_FIX_RATE 339 +#define K_SYSCALL_GNSS_SET_NAVIGATION_MODE 340 +#define K_SYSCALL_HAPTICS_START_OUTPUT 341 +#define K_SYSCALL_HAPTICS_STOP_OUTPUT 342 +#define K_SYSCALL_HWSPINLOCK_GET_MAX_ID 343 +#define K_SYSCALL_HWSPINLOCK_LOCK 344 +#define K_SYSCALL_HWSPINLOCK_TRYLOCK 345 +#define K_SYSCALL_HWSPINLOCK_UNLOCK 346 +#define K_SYSCALL_I2S_BUF_READ 347 +#define K_SYSCALL_I2S_BUF_WRITE 348 +#define K_SYSCALL_I2S_CONFIGURE 349 +#define K_SYSCALL_I2S_TRIGGER 350 +#define K_SYSCALL_I3C_DO_CCC 351 +#define K_SYSCALL_I3C_TRANSFER 352 +#define K_SYSCALL_IPM_COMPLETE 353 +#define K_SYSCALL_IPM_MAX_DATA_SIZE_GET 354 +#define K_SYSCALL_IPM_MAX_ID_VAL_GET 355 +#define K_SYSCALL_IPM_SEND 356 +#define K_SYSCALL_IPM_SET_ENABLED 357 +#define K_SYSCALL_IVSHMEM_ENABLE_INTERRUPTS 358 +#define K_SYSCALL_IVSHMEM_GET_ID 359 +#define K_SYSCALL_IVSHMEM_GET_MAX_PEERS 360 +#define K_SYSCALL_IVSHMEM_GET_MEM 361 +#define K_SYSCALL_IVSHMEM_GET_OUTPUT_MEM_SECTION 362 +#define K_SYSCALL_IVSHMEM_GET_PROTOCOL 363 +#define K_SYSCALL_IVSHMEM_GET_RW_MEM_SECTION 364 +#define K_SYSCALL_IVSHMEM_GET_STATE 365 +#define K_SYSCALL_IVSHMEM_GET_VECTORS 366 +#define K_SYSCALL_IVSHMEM_INT_PEER 367 +#define K_SYSCALL_IVSHMEM_REGISTER_HANDLER 368 +#define K_SYSCALL_IVSHMEM_SET_STATE 369 +#define K_SYSCALL_KSCAN_CONFIG 370 +#define K_SYSCALL_KSCAN_DISABLE_CALLBACK 371 +#define K_SYSCALL_KSCAN_ENABLE_CALLBACK 372 +#define K_SYSCALL_K_MEM_PAGING_HISTOGRAM_BACKING_STORE_PAGE_IN_GET 373 +#define K_SYSCALL_K_MEM_PAGING_HISTOGRAM_BACKING_STORE_PAGE_OUT_GET 374 +#define K_SYSCALL_K_MEM_PAGING_HISTOGRAM_EVICTION_GET 375 +#define K_SYSCALL_K_MEM_PAGING_STATS_GET 376 +#define K_SYSCALL_K_MEM_PAGING_THREAD_STATS_GET 377 +#define K_SYSCALL_LED_BLINK 378 +#define K_SYSCALL_LED_GET_INFO 379 +#define K_SYSCALL_LED_OFF 380 +#define K_SYSCALL_LED_ON 381 +#define K_SYSCALL_LED_SET_BRIGHTNESS 382 +#define K_SYSCALL_LED_SET_CHANNEL 383 +#define K_SYSCALL_LED_SET_COLOR 384 +#define K_SYSCALL_LED_WRITE_CHANNELS 385 +#define K_SYSCALL_MAXIM_DS3231_GET_SYNCPOINT 386 +#define K_SYSCALL_MAXIM_DS3231_REQ_SYNCPOINT 387 +#define K_SYSCALL_MBOX_MAX_CHANNELS_GET 388 +#define K_SYSCALL_MBOX_MTU_GET 389 +#define K_SYSCALL_MBOX_SEND 390 +#define K_SYSCALL_MBOX_SET_ENABLED 391 +#define K_SYSCALL_MDIO_BUS_DISABLE 392 +#define K_SYSCALL_MDIO_BUS_ENABLE 393 +#define K_SYSCALL_MDIO_READ 394 +#define K_SYSCALL_MDIO_READ_C45 395 +#define K_SYSCALL_MDIO_WRITE 396 +#define K_SYSCALL_MDIO_WRITE_C45 397 +#define K_SYSCALL_MSPI_CONFIG 398 +#define K_SYSCALL_MSPI_DEV_CONFIG 399 +#define K_SYSCALL_MSPI_GET_CHANNEL_STATUS 400 +#define K_SYSCALL_MSPI_SCRAMBLE_CONFIG 401 +#define K_SYSCALL_MSPI_TIMING_CONFIG 402 +#define K_SYSCALL_MSPI_TRANSCEIVE 403 +#define K_SYSCALL_MSPI_XIP_CONFIG 404 +#define K_SYSCALL_NET_ADDR_NTOP 405 +#define K_SYSCALL_NET_ADDR_PTON 406 +#define K_SYSCALL_NET_ETH_GET_PTP_CLOCK_BY_INDEX 407 +#define K_SYSCALL_NET_IF_GET_BY_INDEX 408 +#define K_SYSCALL_NET_IF_IPV4_ADDR_ADD_BY_INDEX 409 +#define K_SYSCALL_NET_IF_IPV4_ADDR_LOOKUP_BY_INDEX 410 +#define K_SYSCALL_NET_IF_IPV4_ADDR_RM_BY_INDEX 411 +#define K_SYSCALL_NET_IF_IPV4_SET_GW_BY_INDEX 412 +#define K_SYSCALL_NET_IF_IPV4_SET_NETMASK_BY_ADDR_BY_INDEX 413 +#define K_SYSCALL_NET_IF_IPV4_SET_NETMASK_BY_INDEX 414 +#define K_SYSCALL_NET_IF_IPV6_ADDR_ADD_BY_INDEX 415 +#define K_SYSCALL_NET_IF_IPV6_ADDR_LOOKUP_BY_INDEX 416 +#define K_SYSCALL_NET_IF_IPV6_ADDR_RM_BY_INDEX 417 +#define K_SYSCALL_NET_SOCKET_SERVICE_REGISTER 418 +#define K_SYSCALL_NRF_QSPI_NOR_XIP_ENABLE 419 +#define K_SYSCALL_PECI_CONFIG 420 +#define K_SYSCALL_PECI_DISABLE 421 +#define K_SYSCALL_PECI_ENABLE 422 +#define K_SYSCALL_PECI_TRANSFER 423 +#define K_SYSCALL_PS2_CONFIG 424 +#define K_SYSCALL_PS2_DISABLE_CALLBACK 425 +#define K_SYSCALL_PS2_ENABLE_CALLBACK 426 +#define K_SYSCALL_PS2_READ 427 +#define K_SYSCALL_PS2_WRITE 428 +#define K_SYSCALL_PTP_CLOCK_GET 429 +#define K_SYSCALL_RETAINED_MEM_CLEAR 430 +#define K_SYSCALL_RETAINED_MEM_READ 431 +#define K_SYSCALL_RETAINED_MEM_SIZE 432 +#define K_SYSCALL_RETAINED_MEM_WRITE 433 +#define K_SYSCALL_RTC_ALARM_GET_SUPPORTED_FIELDS 434 +#define K_SYSCALL_RTC_ALARM_GET_TIME 435 +#define K_SYSCALL_RTC_ALARM_IS_PENDING 436 +#define K_SYSCALL_RTC_ALARM_SET_CALLBACK 437 +#define K_SYSCALL_RTC_ALARM_SET_TIME 438 +#define K_SYSCALL_RTC_GET_CALIBRATION 439 +#define K_SYSCALL_RTC_GET_TIME 440 +#define K_SYSCALL_RTC_SET_CALIBRATION 441 +#define K_SYSCALL_RTC_SET_TIME 442 +#define K_SYSCALL_RTC_UPDATE_SET_CALLBACK 443 +#define K_SYSCALL_RTIO_CQE_COPY_OUT 444 +#define K_SYSCALL_RTIO_CQE_GET_MEMPOOL_BUFFER 445 +#define K_SYSCALL_RTIO_RELEASE_BUFFER 446 +#define K_SYSCALL_RTIO_SQE_CANCEL 447 +#define K_SYSCALL_RTIO_SQE_COPY_IN_GET_HANDLES 448 +#define K_SYSCALL_RTIO_SUBMIT 449 +#define K_SYSCALL_SDHC_CARD_BUSY 450 +#define K_SYSCALL_SDHC_CARD_PRESENT 451 +#define K_SYSCALL_SDHC_DISABLE_INTERRUPT 452 +#define K_SYSCALL_SDHC_ENABLE_INTERRUPT 453 +#define K_SYSCALL_SDHC_EXECUTE_TUNING 454 +#define K_SYSCALL_SDHC_GET_HOST_PROPS 455 +#define K_SYSCALL_SDHC_HW_RESET 456 +#define K_SYSCALL_SDHC_REQUEST 457 +#define K_SYSCALL_SDHC_SET_IO 458 +#define K_SYSCALL_SENSOR_ATTR_GET 459 +#define K_SYSCALL_SENSOR_ATTR_SET 460 +#define K_SYSCALL_SENSOR_CHANNEL_GET 461 +#define K_SYSCALL_SENSOR_GET_DECODER 462 +#define K_SYSCALL_SENSOR_RECONFIGURE_READ_IODEV 463 +#define K_SYSCALL_SENSOR_SAMPLE_FETCH 464 +#define K_SYSCALL_SENSOR_SAMPLE_FETCH_CHAN 465 +#define K_SYSCALL_SIP_SUPERVISORY_CALL 466 +#define K_SYSCALL_SIP_SVC_PLAT_ASYNC_RES_REQ 467 +#define K_SYSCALL_SIP_SVC_PLAT_ASYNC_RES_RES 468 +#define K_SYSCALL_SIP_SVC_PLAT_FORMAT_TRANS_ID 469 +#define K_SYSCALL_SIP_SVC_PLAT_FREE_ASYNC_MEMORY 470 +#define K_SYSCALL_SIP_SVC_PLAT_FUNC_ID_VALID 471 +#define K_SYSCALL_SIP_SVC_PLAT_GET_ERROR_CODE 472 +#define K_SYSCALL_SIP_SVC_PLAT_GET_TRANS_IDX 473 +#define K_SYSCALL_SIP_SVC_PLAT_UPDATE_TRANS_ID 474 +#define K_SYSCALL_SMBUS_BLOCK_PCALL 475 +#define K_SYSCALL_SMBUS_BLOCK_READ 476 +#define K_SYSCALL_SMBUS_BLOCK_WRITE 477 +#define K_SYSCALL_SMBUS_BYTE_DATA_READ 478 +#define K_SYSCALL_SMBUS_BYTE_DATA_WRITE 479 +#define K_SYSCALL_SMBUS_BYTE_READ 480 +#define K_SYSCALL_SMBUS_BYTE_WRITE 481 +#define K_SYSCALL_SMBUS_CONFIGURE 482 +#define K_SYSCALL_SMBUS_GET_CONFIG 483 +#define K_SYSCALL_SMBUS_HOST_NOTIFY_REMOVE_CB 484 +#define K_SYSCALL_SMBUS_PCALL 485 +#define K_SYSCALL_SMBUS_QUICK 486 +#define K_SYSCALL_SMBUS_SMBALERT_REMOVE_CB 487 +#define K_SYSCALL_SMBUS_WORD_DATA_READ 488 +#define K_SYSCALL_SMBUS_WORD_DATA_WRITE 489 +#define K_SYSCALL_STEPPER_ENABLE 490 +#define K_SYSCALL_STEPPER_GET_ACTUAL_POSITION 491 +#define K_SYSCALL_STEPPER_GET_MICRO_STEP_RES 492 +#define K_SYSCALL_STEPPER_IS_MOVING 493 +#define K_SYSCALL_STEPPER_MOVE_BY 494 +#define K_SYSCALL_STEPPER_MOVE_TO 495 +#define K_SYSCALL_STEPPER_RUN 496 +#define K_SYSCALL_STEPPER_SET_EVENT_CALLBACK 497 +#define K_SYSCALL_STEPPER_SET_MAX_VELOCITY 498 +#define K_SYSCALL_STEPPER_SET_MICRO_STEP_RES 499 +#define K_SYSCALL_STEPPER_SET_REFERENCE_POSITION 500 +#define K_SYSCALL_SYSCON_GET_BASE 501 +#define K_SYSCALL_SYSCON_GET_SIZE 502 +#define K_SYSCALL_SYSCON_READ_REG 503 +#define K_SYSCALL_SYSCON_WRITE_REG 504 +#define K_SYSCALL_TEE_CANCEL 505 +#define K_SYSCALL_TEE_CLOSE_SESSION 506 +#define K_SYSCALL_TEE_GET_VERSION 507 +#define K_SYSCALL_TEE_INVOKE_FUNC 508 +#define K_SYSCALL_TEE_OPEN_SESSION 509 +#define K_SYSCALL_TEE_SHM_ALLOC 510 +#define K_SYSCALL_TEE_SHM_FREE 511 +#define K_SYSCALL_TEE_SHM_REGISTER 512 +#define K_SYSCALL_TEE_SHM_UNREGISTER 513 +#define K_SYSCALL_TEE_SUPPL_RECV 514 +#define K_SYSCALL_TEE_SUPPL_SEND 515 +#define K_SYSCALL_TGPIO_PIN_CONFIG_EXT_TIMESTAMP 516 +#define K_SYSCALL_TGPIO_PIN_DISABLE 517 +#define K_SYSCALL_TGPIO_PIN_PERIODIC_OUTPUT 518 +#define K_SYSCALL_TGPIO_PIN_READ_TS_EC 519 +#define K_SYSCALL_TGPIO_PORT_GET_CYCLES_PER_SECOND 520 +#define K_SYSCALL_TGPIO_PORT_GET_TIME 521 +#define K_SYSCALL_UPDATEHUB_AUTOHANDLER 522 +#define K_SYSCALL_UPDATEHUB_CONFIRM 523 +#define K_SYSCALL_UPDATEHUB_PROBE 524 +#define K_SYSCALL_UPDATEHUB_REBOOT 525 +#define K_SYSCALL_UPDATEHUB_UPDATE 526 +#define K_SYSCALL_USER_FAULT 527 +#define K_SYSCALL_W1_CHANGE_BUS_LOCK 528 +#define K_SYSCALL_W1_CONFIGURE 529 +#define K_SYSCALL_W1_GET_SLAVE_COUNT 530 +#define K_SYSCALL_W1_READ_BIT 531 +#define K_SYSCALL_W1_READ_BLOCK 532 +#define K_SYSCALL_W1_READ_BYTE 533 +#define K_SYSCALL_W1_RESET_BUS 534 +#define K_SYSCALL_W1_SEARCH_BUS 535 +#define K_SYSCALL_W1_WRITE_BIT 536 +#define K_SYSCALL_W1_WRITE_BLOCK 537 +#define K_SYSCALL_W1_WRITE_BYTE 538 +#define K_SYSCALL_WDT_DISABLE 539 +#define K_SYSCALL_WDT_FEED 540 +#define K_SYSCALL_WDT_SETUP 541 +#define K_SYSCALL_XTENSA_USER_FAULT 542 +#define K_SYSCALL_ZSOCK_ACCEPT 543 +#define K_SYSCALL_ZSOCK_BIND 544 +#define K_SYSCALL_ZSOCK_CLOSE 545 +#define K_SYSCALL_ZSOCK_CONNECT 546 +#define K_SYSCALL_ZSOCK_FCNTL_IMPL 547 +#define K_SYSCALL_ZSOCK_GETHOSTNAME 548 +#define K_SYSCALL_ZSOCK_GETPEERNAME 549 +#define K_SYSCALL_ZSOCK_GETSOCKNAME 550 +#define K_SYSCALL_ZSOCK_GETSOCKOPT 551 +#define K_SYSCALL_ZSOCK_GET_CONTEXT_OBJECT 552 +#define K_SYSCALL_ZSOCK_INET_PTON 553 +#define K_SYSCALL_ZSOCK_IOCTL_IMPL 554 +#define K_SYSCALL_ZSOCK_LISTEN 555 +#define K_SYSCALL_ZSOCK_RECVFROM 556 +#define K_SYSCALL_ZSOCK_RECVMSG 557 +#define K_SYSCALL_ZSOCK_SENDMSG 558 +#define K_SYSCALL_ZSOCK_SENDTO 559 +#define K_SYSCALL_ZSOCK_SETSOCKOPT 560 +#define K_SYSCALL_ZSOCK_SHUTDOWN 561 +#define K_SYSCALL_ZSOCK_SOCKET 562 +#define K_SYSCALL_ZSOCK_SOCKETPAIR 563 +#define K_SYSCALL_ZVFS_POLL 564 +#define K_SYSCALL_ZVFS_SELECT 565 +#define K_SYSCALL_Z_ERRNO 566 +#define K_SYSCALL_Z_ZSOCK_GETADDRINFO_INTERNAL 567 #ifndef _ASMLANGUAGE diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/comparator.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/comparator.h new file mode 100644 index 00000000..dfae6e51 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/comparator.h @@ -0,0 +1,98 @@ +/* auto-generated by gen_syscalls.py, don't edit */ + +#ifndef Z_INCLUDE_SYSCALLS_COMPARATOR_H +#define Z_INCLUDE_SYSCALLS_COMPARATOR_H + + +#include + +#ifndef _ASMLANGUAGE + +#include + +#include +#include + +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +extern int z_impl_comparator_get_output(const struct device * dev); + +__pinned_func +static inline int comparator_get_output(const struct device * dev) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + return (int) arch_syscall_invoke1(parm0.x, K_SYSCALL_COMPARATOR_GET_OUTPUT); + } +#endif + compiler_barrier(); + return z_impl_comparator_get_output(dev); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define comparator_get_output(dev) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_COMPARATOR_GET_OUTPUT, comparator_get_output, dev); syscall__retval = comparator_get_output(dev); sys_port_trace_syscall_exit(K_SYSCALL_COMPARATOR_GET_OUTPUT, comparator_get_output, dev, syscall__retval); syscall__retval; }) +#endif +#endif + + +extern int z_impl_comparator_set_trigger(const struct device * dev, enum comparator_trigger trigger); + +__pinned_func +static inline int comparator_set_trigger(const struct device * dev, enum comparator_trigger trigger) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + union { uintptr_t x; enum comparator_trigger val; } parm1 = { .val = trigger }; + return (int) arch_syscall_invoke2(parm0.x, parm1.x, K_SYSCALL_COMPARATOR_SET_TRIGGER); + } +#endif + compiler_barrier(); + return z_impl_comparator_set_trigger(dev, trigger); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define comparator_set_trigger(dev, trigger) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_COMPARATOR_SET_TRIGGER, comparator_set_trigger, dev, trigger); syscall__retval = comparator_set_trigger(dev, trigger); sys_port_trace_syscall_exit(K_SYSCALL_COMPARATOR_SET_TRIGGER, comparator_set_trigger, dev, trigger, syscall__retval); syscall__retval; }) +#endif +#endif + + +extern int z_impl_comparator_trigger_is_pending(const struct device * dev); + +__pinned_func +static inline int comparator_trigger_is_pending(const struct device * dev) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + return (int) arch_syscall_invoke1(parm0.x, K_SYSCALL_COMPARATOR_TRIGGER_IS_PENDING); + } +#endif + compiler_barrier(); + return z_impl_comparator_trigger_is_pending(dev); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define comparator_trigger_is_pending(dev) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_COMPARATOR_TRIGGER_IS_PENDING, comparator_trigger_is_pending, dev); syscall__retval = comparator_trigger_is_pending(dev); sys_port_trace_syscall_exit(K_SYSCALL_COMPARATOR_TRIGGER_IS_PENDING, comparator_trigger_is_pending, dev, syscall__retval); syscall__retval; }) +#endif +#endif + + +#ifdef __cplusplus +} +#endif + +#endif +#endif /* include guard */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/devmux.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/devmux.h index d9a48740..dc5b4a91 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/devmux.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/devmux.h @@ -20,15 +20,15 @@ extern "C" { #endif -extern ssize_t z_impl_devmux_select_get(const struct device * dev); +extern int z_impl_devmux_select_get(const struct device * dev); __pinned_func -static inline ssize_t devmux_select_get(const struct device * dev) +static inline int devmux_select_get(const struct device * dev) { #ifdef CONFIG_USERSPACE if (z_syscall_trap()) { union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; - return (ssize_t) arch_syscall_invoke1(parm0.x, K_SYSCALL_DEVMUX_SELECT_GET); + return (int) arch_syscall_invoke1(parm0.x, K_SYSCALL_DEVMUX_SELECT_GET); } #endif compiler_barrier(); @@ -38,7 +38,7 @@ static inline ssize_t devmux_select_get(const struct device * dev) #if defined(CONFIG_TRACING_SYSCALL) #ifndef DISABLE_SYSCALL_TRACING -#define devmux_select_get(dev) ({ ssize_t syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_DEVMUX_SELECT_GET, devmux_select_get, dev); syscall__retval = devmux_select_get(dev); sys_port_trace_syscall_exit(K_SYSCALL_DEVMUX_SELECT_GET, devmux_select_get, dev, syscall__retval); syscall__retval; }) +#define devmux_select_get(dev) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_DEVMUX_SELECT_GET, devmux_select_get, dev); syscall__retval = devmux_select_get(dev); sys_port_trace_syscall_exit(K_SYSCALL_DEVMUX_SELECT_GET, devmux_select_get, dev, syscall__retval); syscall__retval; }) #endif #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/fdtable.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/fdtable.h new file mode 100644 index 00000000..7ef41145 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/fdtable.h @@ -0,0 +1,81 @@ +/* auto-generated by gen_syscalls.py, don't edit */ + +#ifndef Z_INCLUDE_SYSCALLS_FDTABLE_H +#define Z_INCLUDE_SYSCALLS_FDTABLE_H + + +#include + +#ifndef _ASMLANGUAGE + +#include + +#include +#include + +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +extern int z_impl_zvfs_poll(struct zvfs_pollfd * fds, int nfds, int poll_timeout); + +__pinned_func +static inline int zvfs_poll(struct zvfs_pollfd * fds, int nfds, int poll_timeout) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; struct zvfs_pollfd * val; } parm0 = { .val = fds }; + union { uintptr_t x; int val; } parm1 = { .val = nfds }; + union { uintptr_t x; int val; } parm2 = { .val = poll_timeout }; + return (int) arch_syscall_invoke3(parm0.x, parm1.x, parm2.x, K_SYSCALL_ZVFS_POLL); + } +#endif + compiler_barrier(); + return z_impl_zvfs_poll(fds, nfds, poll_timeout); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define zvfs_poll(fds, nfds, poll_timeout) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_ZVFS_POLL, zvfs_poll, fds, nfds, poll_timeout); syscall__retval = zvfs_poll(fds, nfds, poll_timeout); sys_port_trace_syscall_exit(K_SYSCALL_ZVFS_POLL, zvfs_poll, fds, nfds, poll_timeout, syscall__retval); syscall__retval; }) +#endif +#endif + + +extern int z_impl_zvfs_select(int nfds, struct zvfs_fd_set *ZRESTRICT readfds, struct zvfs_fd_set *ZRESTRICT writefds, struct zvfs_fd_set *ZRESTRICT errorfds, const struct timespec *ZRESTRICT timeout, const void *ZRESTRICT sigmask); + +__pinned_func +static inline int zvfs_select(int nfds, struct zvfs_fd_set *ZRESTRICT readfds, struct zvfs_fd_set *ZRESTRICT writefds, struct zvfs_fd_set *ZRESTRICT errorfds, const struct timespec *ZRESTRICT timeout, const void *ZRESTRICT sigmask) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; int val; } parm0 = { .val = nfds }; + union { uintptr_t x; struct zvfs_fd_set *ZRESTRICT val; } parm1 = { .val = readfds }; + union { uintptr_t x; struct zvfs_fd_set *ZRESTRICT val; } parm2 = { .val = writefds }; + union { uintptr_t x; struct zvfs_fd_set *ZRESTRICT val; } parm3 = { .val = errorfds }; + union { uintptr_t x; const struct timespec *ZRESTRICT val; } parm4 = { .val = timeout }; + union { uintptr_t x; const void *ZRESTRICT val; } parm5 = { .val = sigmask }; + return (int) arch_syscall_invoke6(parm0.x, parm1.x, parm2.x, parm3.x, parm4.x, parm5.x, K_SYSCALL_ZVFS_SELECT); + } +#endif + compiler_barrier(); + return z_impl_zvfs_select(nfds, readfds, writefds, errorfds, timeout, sigmask); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define zvfs_select(nfds, readfds, writefds, errorfds, timeout, sigmask) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_ZVFS_SELECT, zvfs_select, nfds, readfds, writefds, errorfds, timeout, sigmask); syscall__retval = zvfs_select(nfds, readfds, writefds, errorfds, timeout, sigmask); sys_port_trace_syscall_exit(K_SYSCALL_ZVFS_SELECT, zvfs_select, nfds, readfds, writefds, errorfds, timeout, sigmask, syscall__retval); syscall__retval; }) +#endif +#endif + + +#ifdef __cplusplus +} +#endif + +#endif +#endif /* include guard */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/flash.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/flash.h index 670314e6..b9d580dd 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/flash.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/flash.h @@ -97,6 +97,30 @@ static inline int flash_erase(const struct device * dev, off_t offset, size_t si #endif +extern int z_impl_flash_get_size(const struct device * dev, uint64_t * size); + +__pinned_func +static inline int flash_get_size(const struct device * dev, uint64_t * size) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + union { uintptr_t x; uint64_t * val; } parm1 = { .val = size }; + return (int) arch_syscall_invoke2(parm0.x, parm1.x, K_SYSCALL_FLASH_GET_SIZE); + } +#endif + compiler_barrier(); + return z_impl_flash_get_size(dev, size); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define flash_get_size(dev, size) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_FLASH_GET_SIZE, flash_get_size, dev, size); syscall__retval = flash_get_size(dev, size); sys_port_trace_syscall_exit(K_SYSCALL_FLASH_GET_SIZE, flash_get_size, dev, size, syscall__retval); syscall__retval; }) +#endif +#endif + + extern int z_impl_flash_fill(const struct device * dev, uint8_t val, off_t offset, size_t size); __pinned_func @@ -343,6 +367,39 @@ static inline int flash_ex_op(const struct device * dev, uint16_t code, const ui #endif +extern int z_impl_flash_copy(const struct device * src_dev, off_t src_offset, const struct device * dst_dev, off_t dst_offset, off_t size, uint8_t * buf, size_t buf_size); + +__pinned_func +static inline int flash_copy(const struct device * src_dev, off_t src_offset, const struct device * dst_dev, off_t dst_offset, off_t size, uint8_t * buf, size_t buf_size) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = src_dev }; + union { uintptr_t x; off_t val; } parm1 = { .val = src_offset }; + union { uintptr_t x; const struct device * val; } parm2 = { .val = dst_dev }; + union { uintptr_t x; off_t val; } parm3 = { .val = dst_offset }; + union { uintptr_t x; off_t val; } parm4 = { .val = size }; + union { uintptr_t x; uint8_t * val; } parm5 = { .val = buf }; + union { uintptr_t x; size_t val; } parm6 = { .val = buf_size }; + uintptr_t more[] = { + parm5.x, + parm6.x + }; + return (int) arch_syscall_invoke6(parm0.x, parm1.x, parm2.x, parm3.x, parm4.x, (uintptr_t) &more, K_SYSCALL_FLASH_COPY); + } +#endif + compiler_barrier(); + return z_impl_flash_copy(src_dev, src_offset, dst_dev, dst_offset, size, buf, buf_size); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define flash_copy(src_dev, src_offset, dst_dev, dst_offset, size, buf, buf_size) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_FLASH_COPY, flash_copy, src_dev, src_offset, dst_dev, dst_offset, size, buf, buf_size); syscall__retval = flash_copy(src_dev, src_offset, dst_dev, dst_offset, size, buf, buf_size); sys_port_trace_syscall_exit(K_SYSCALL_FLASH_COPY, flash_copy, src_dev, src_offset, dst_dev, dst_offset, size, buf, buf_size, syscall__retval); syscall__retval; }) +#endif +#endif + + #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/gnss.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/gnss.h index f8c2fc7a..0c645979 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/gnss.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/gnss.h @@ -68,54 +68,6 @@ static inline int gnss_get_fix_rate(const struct device * dev, uint32_t * fix_in #endif -extern int z_impl_gnss_set_periodic_config(const struct device * dev, const struct gnss_periodic_config * config); - -__pinned_func -static inline int gnss_set_periodic_config(const struct device * dev, const struct gnss_periodic_config * config) -{ -#ifdef CONFIG_USERSPACE - if (z_syscall_trap()) { - union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; - union { uintptr_t x; const struct gnss_periodic_config * val; } parm1 = { .val = config }; - return (int) arch_syscall_invoke2(parm0.x, parm1.x, K_SYSCALL_GNSS_SET_PERIODIC_CONFIG); - } -#endif - compiler_barrier(); - return z_impl_gnss_set_periodic_config(dev, config); -} - -#if defined(CONFIG_TRACING_SYSCALL) -#ifndef DISABLE_SYSCALL_TRACING - -#define gnss_set_periodic_config(dev, config) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_GNSS_SET_PERIODIC_CONFIG, gnss_set_periodic_config, dev, config); syscall__retval = gnss_set_periodic_config(dev, config); sys_port_trace_syscall_exit(K_SYSCALL_GNSS_SET_PERIODIC_CONFIG, gnss_set_periodic_config, dev, config, syscall__retval); syscall__retval; }) -#endif -#endif - - -extern int z_impl_gnss_get_periodic_config(const struct device * dev, struct gnss_periodic_config * config); - -__pinned_func -static inline int gnss_get_periodic_config(const struct device * dev, struct gnss_periodic_config * config) -{ -#ifdef CONFIG_USERSPACE - if (z_syscall_trap()) { - union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; - union { uintptr_t x; struct gnss_periodic_config * val; } parm1 = { .val = config }; - return (int) arch_syscall_invoke2(parm0.x, parm1.x, K_SYSCALL_GNSS_GET_PERIODIC_CONFIG); - } -#endif - compiler_barrier(); - return z_impl_gnss_get_periodic_config(dev, config); -} - -#if defined(CONFIG_TRACING_SYSCALL) -#ifndef DISABLE_SYSCALL_TRACING - -#define gnss_get_periodic_config(dev, config) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_GNSS_GET_PERIODIC_CONFIG, gnss_get_periodic_config, dev, config); syscall__retval = gnss_get_periodic_config(dev, config); sys_port_trace_syscall_exit(K_SYSCALL_GNSS_GET_PERIODIC_CONFIG, gnss_get_periodic_config, dev, config, syscall__retval); syscall__retval; }) -#endif -#endif - - extern int z_impl_gnss_set_navigation_mode(const struct device * dev, enum gnss_navigation_mode mode); __pinned_func @@ -236,6 +188,30 @@ static inline int gnss_get_supported_systems(const struct device * dev, gnss_sys #endif +extern int z_impl_gnss_get_latest_timepulse(const struct device * dev, k_ticks_t * timestamp); + +__pinned_func +static inline int gnss_get_latest_timepulse(const struct device * dev, k_ticks_t * timestamp) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + union { uintptr_t x; k_ticks_t * val; } parm1 = { .val = timestamp }; + return (int) arch_syscall_invoke2(parm0.x, parm1.x, K_SYSCALL_GNSS_GET_LATEST_TIMEPULSE); + } +#endif + compiler_barrier(); + return z_impl_gnss_get_latest_timepulse(dev, timestamp); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define gnss_get_latest_timepulse(dev, timestamp) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_GNSS_GET_LATEST_TIMEPULSE, gnss_get_latest_timepulse, dev, timestamp); syscall__retval = gnss_get_latest_timepulse(dev, timestamp); sys_port_trace_syscall_exit(K_SYSCALL_GNSS_GET_LATEST_TIMEPULSE, gnss_get_latest_timepulse, dev, timestamp, syscall__retval); syscall__retval; }) +#endif +#endif + + #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/haptics.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/haptics.h new file mode 100644 index 00000000..b6e30be9 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/haptics.h @@ -0,0 +1,74 @@ +/* auto-generated by gen_syscalls.py, don't edit */ + +#ifndef Z_INCLUDE_SYSCALLS_HAPTICS_H +#define Z_INCLUDE_SYSCALLS_HAPTICS_H + + +#include + +#ifndef _ASMLANGUAGE + +#include + +#include +#include + +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +extern int z_impl_haptics_start_output(const struct device * dev); + +__pinned_func +static inline int haptics_start_output(const struct device * dev) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + return (int) arch_syscall_invoke1(parm0.x, K_SYSCALL_HAPTICS_START_OUTPUT); + } +#endif + compiler_barrier(); + return z_impl_haptics_start_output(dev); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define haptics_start_output(dev) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_HAPTICS_START_OUTPUT, haptics_start_output, dev); syscall__retval = haptics_start_output(dev); sys_port_trace_syscall_exit(K_SYSCALL_HAPTICS_START_OUTPUT, haptics_start_output, dev, syscall__retval); syscall__retval; }) +#endif +#endif + + +extern int z_impl_haptics_stop_output(const struct device * dev); + +__pinned_func +static inline int haptics_stop_output(const struct device * dev) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + return (int) arch_syscall_invoke1(parm0.x, K_SYSCALL_HAPTICS_STOP_OUTPUT); + } +#endif + compiler_barrier(); + return z_impl_haptics_stop_output(dev); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define haptics_stop_output(dev) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_HAPTICS_STOP_OUTPUT, haptics_stop_output, dev); syscall__retval = haptics_stop_output(dev); sys_port_trace_syscall_exit(K_SYSCALL_HAPTICS_STOP_OUTPUT, haptics_stop_output, dev, syscall__retval); syscall__retval; }) +#endif +#endif + + +#ifdef __cplusplus +} +#endif + +#endif +#endif /* include guard */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/kernel.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/kernel.h index 152fbfee..83a2d765 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/kernel.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/kernel.h @@ -234,23 +234,6 @@ static inline void k_thread_abort(k_tid_t thread) } -extern void z_impl_k_thread_start(k_tid_t thread); - -__pinned_func -static inline void k_thread_start(k_tid_t thread) -{ -#ifdef CONFIG_USERSPACE - if (z_syscall_trap()) { - union { uintptr_t x; k_tid_t val; } parm0 = { .val = thread }; - (void) arch_syscall_invoke1(parm0.x, K_SYSCALL_K_THREAD_START); - return; - } -#endif - compiler_barrier(); - z_impl_k_thread_start(thread); -} - - extern k_ticks_t z_impl_k_thread_timeout_expires_ticks(const struct k_thread * thread); __pinned_func diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/socket.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/socket.h index b46faf72..548884c2 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/socket.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/socket.h @@ -399,31 +399,6 @@ static inline int zsock_ioctl_impl(int sock, unsigned long request, va_list ap) #endif -extern int z_impl_zsock_poll(struct zsock_pollfd * fds, int nfds, int timeout); - -__pinned_func -static inline int zsock_poll(struct zsock_pollfd * fds, int nfds, int timeout) -{ -#ifdef CONFIG_USERSPACE - if (z_syscall_trap()) { - union { uintptr_t x; struct zsock_pollfd * val; } parm0 = { .val = fds }; - union { uintptr_t x; int val; } parm1 = { .val = nfds }; - union { uintptr_t x; int val; } parm2 = { .val = timeout }; - return (int) arch_syscall_invoke3(parm0.x, parm1.x, parm2.x, K_SYSCALL_ZSOCK_POLL); - } -#endif - compiler_barrier(); - return z_impl_zsock_poll(fds, nfds, timeout); -} - -#if defined(CONFIG_TRACING_SYSCALL) -#ifndef DISABLE_SYSCALL_TRACING - -#define zsock_poll(fds, nfds, timeout) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_ZSOCK_POLL, zsock_poll, fds, nfds, timeout); syscall__retval = zsock_poll(fds, nfds, timeout); sys_port_trace_syscall_exit(K_SYSCALL_ZSOCK_POLL, zsock_poll, fds, nfds, timeout, syscall__retval); syscall__retval; }) -#endif -#endif - - extern int z_impl_zsock_getsockopt(int sock, int level, int optname, void * optval, socklen_t * optlen); __pinned_func diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/stepper.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/stepper.h new file mode 100644 index 00000000..598cd51c --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/syscalls/stepper.h @@ -0,0 +1,294 @@ +/* auto-generated by gen_syscalls.py, don't edit */ + +#ifndef Z_INCLUDE_SYSCALLS_STEPPER_H +#define Z_INCLUDE_SYSCALLS_STEPPER_H + + +#include + +#ifndef _ASMLANGUAGE + +#include + +#include +#include + +#include + + +#ifdef __cplusplus +extern "C" { +#endif + +extern int z_impl_stepper_enable(const struct device * dev, const bool enable); + +__pinned_func +static inline int stepper_enable(const struct device * dev, const bool enable) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + union { uintptr_t x; const bool val; } parm1 = { .val = enable }; + return (int) arch_syscall_invoke2(parm0.x, parm1.x, K_SYSCALL_STEPPER_ENABLE); + } +#endif + compiler_barrier(); + return z_impl_stepper_enable(dev, enable); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define stepper_enable(dev, enable) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_STEPPER_ENABLE, stepper_enable, dev, enable); syscall__retval = stepper_enable(dev, enable); sys_port_trace_syscall_exit(K_SYSCALL_STEPPER_ENABLE, stepper_enable, dev, enable, syscall__retval); syscall__retval; }) +#endif +#endif + + +extern int z_impl_stepper_move_by(const struct device * dev, int32_t micro_steps); + +__pinned_func +static inline int stepper_move_by(const struct device * dev, int32_t micro_steps) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + union { uintptr_t x; int32_t val; } parm1 = { .val = micro_steps }; + return (int) arch_syscall_invoke2(parm0.x, parm1.x, K_SYSCALL_STEPPER_MOVE_BY); + } +#endif + compiler_barrier(); + return z_impl_stepper_move_by(dev, micro_steps); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define stepper_move_by(dev, micro_steps) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_STEPPER_MOVE_BY, stepper_move_by, dev, micro_steps); syscall__retval = stepper_move_by(dev, micro_steps); sys_port_trace_syscall_exit(K_SYSCALL_STEPPER_MOVE_BY, stepper_move_by, dev, micro_steps, syscall__retval); syscall__retval; }) +#endif +#endif + + +extern int z_impl_stepper_set_max_velocity(const struct device * dev, uint32_t micro_steps_per_second); + +__pinned_func +static inline int stepper_set_max_velocity(const struct device * dev, uint32_t micro_steps_per_second) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + union { uintptr_t x; uint32_t val; } parm1 = { .val = micro_steps_per_second }; + return (int) arch_syscall_invoke2(parm0.x, parm1.x, K_SYSCALL_STEPPER_SET_MAX_VELOCITY); + } +#endif + compiler_barrier(); + return z_impl_stepper_set_max_velocity(dev, micro_steps_per_second); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define stepper_set_max_velocity(dev, micro_steps_per_second) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_STEPPER_SET_MAX_VELOCITY, stepper_set_max_velocity, dev, micro_steps_per_second); syscall__retval = stepper_set_max_velocity(dev, micro_steps_per_second); sys_port_trace_syscall_exit(K_SYSCALL_STEPPER_SET_MAX_VELOCITY, stepper_set_max_velocity, dev, micro_steps_per_second, syscall__retval); syscall__retval; }) +#endif +#endif + + +extern int z_impl_stepper_set_micro_step_res(const struct device * dev, enum stepper_micro_step_resolution resolution); + +__pinned_func +static inline int stepper_set_micro_step_res(const struct device * dev, enum stepper_micro_step_resolution resolution) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + union { uintptr_t x; enum stepper_micro_step_resolution val; } parm1 = { .val = resolution }; + return (int) arch_syscall_invoke2(parm0.x, parm1.x, K_SYSCALL_STEPPER_SET_MICRO_STEP_RES); + } +#endif + compiler_barrier(); + return z_impl_stepper_set_micro_step_res(dev, resolution); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define stepper_set_micro_step_res(dev, resolution) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_STEPPER_SET_MICRO_STEP_RES, stepper_set_micro_step_res, dev, resolution); syscall__retval = stepper_set_micro_step_res(dev, resolution); sys_port_trace_syscall_exit(K_SYSCALL_STEPPER_SET_MICRO_STEP_RES, stepper_set_micro_step_res, dev, resolution, syscall__retval); syscall__retval; }) +#endif +#endif + + +extern int z_impl_stepper_get_micro_step_res(const struct device * dev, enum stepper_micro_step_resolution * resolution); + +__pinned_func +static inline int stepper_get_micro_step_res(const struct device * dev, enum stepper_micro_step_resolution * resolution) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + union { uintptr_t x; enum stepper_micro_step_resolution * val; } parm1 = { .val = resolution }; + return (int) arch_syscall_invoke2(parm0.x, parm1.x, K_SYSCALL_STEPPER_GET_MICRO_STEP_RES); + } +#endif + compiler_barrier(); + return z_impl_stepper_get_micro_step_res(dev, resolution); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define stepper_get_micro_step_res(dev, resolution) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_STEPPER_GET_MICRO_STEP_RES, stepper_get_micro_step_res, dev, resolution); syscall__retval = stepper_get_micro_step_res(dev, resolution); sys_port_trace_syscall_exit(K_SYSCALL_STEPPER_GET_MICRO_STEP_RES, stepper_get_micro_step_res, dev, resolution, syscall__retval); syscall__retval; }) +#endif +#endif + + +extern int z_impl_stepper_set_reference_position(const struct device * dev, int32_t value); + +__pinned_func +static inline int stepper_set_reference_position(const struct device * dev, int32_t value) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + union { uintptr_t x; int32_t val; } parm1 = { .val = value }; + return (int) arch_syscall_invoke2(parm0.x, parm1.x, K_SYSCALL_STEPPER_SET_REFERENCE_POSITION); + } +#endif + compiler_barrier(); + return z_impl_stepper_set_reference_position(dev, value); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define stepper_set_reference_position(dev, value) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_STEPPER_SET_REFERENCE_POSITION, stepper_set_reference_position, dev, value); syscall__retval = stepper_set_reference_position(dev, value); sys_port_trace_syscall_exit(K_SYSCALL_STEPPER_SET_REFERENCE_POSITION, stepper_set_reference_position, dev, value, syscall__retval); syscall__retval; }) +#endif +#endif + + +extern int z_impl_stepper_get_actual_position(const struct device * dev, int32_t * value); + +__pinned_func +static inline int stepper_get_actual_position(const struct device * dev, int32_t * value) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + union { uintptr_t x; int32_t * val; } parm1 = { .val = value }; + return (int) arch_syscall_invoke2(parm0.x, parm1.x, K_SYSCALL_STEPPER_GET_ACTUAL_POSITION); + } +#endif + compiler_barrier(); + return z_impl_stepper_get_actual_position(dev, value); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define stepper_get_actual_position(dev, value) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_STEPPER_GET_ACTUAL_POSITION, stepper_get_actual_position, dev, value); syscall__retval = stepper_get_actual_position(dev, value); sys_port_trace_syscall_exit(K_SYSCALL_STEPPER_GET_ACTUAL_POSITION, stepper_get_actual_position, dev, value, syscall__retval); syscall__retval; }) +#endif +#endif + + +extern int z_impl_stepper_move_to(const struct device * dev, int32_t micro_steps); + +__pinned_func +static inline int stepper_move_to(const struct device * dev, int32_t micro_steps) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + union { uintptr_t x; int32_t val; } parm1 = { .val = micro_steps }; + return (int) arch_syscall_invoke2(parm0.x, parm1.x, K_SYSCALL_STEPPER_MOVE_TO); + } +#endif + compiler_barrier(); + return z_impl_stepper_move_to(dev, micro_steps); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define stepper_move_to(dev, micro_steps) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_STEPPER_MOVE_TO, stepper_move_to, dev, micro_steps); syscall__retval = stepper_move_to(dev, micro_steps); sys_port_trace_syscall_exit(K_SYSCALL_STEPPER_MOVE_TO, stepper_move_to, dev, micro_steps, syscall__retval); syscall__retval; }) +#endif +#endif + + +extern int z_impl_stepper_is_moving(const struct device * dev, bool * is_moving); + +__pinned_func +static inline int stepper_is_moving(const struct device * dev, bool * is_moving) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + union { uintptr_t x; bool * val; } parm1 = { .val = is_moving }; + return (int) arch_syscall_invoke2(parm0.x, parm1.x, K_SYSCALL_STEPPER_IS_MOVING); + } +#endif + compiler_barrier(); + return z_impl_stepper_is_moving(dev, is_moving); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define stepper_is_moving(dev, is_moving) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_STEPPER_IS_MOVING, stepper_is_moving, dev, is_moving); syscall__retval = stepper_is_moving(dev, is_moving); sys_port_trace_syscall_exit(K_SYSCALL_STEPPER_IS_MOVING, stepper_is_moving, dev, is_moving, syscall__retval); syscall__retval; }) +#endif +#endif + + +extern int z_impl_stepper_run(const struct device * dev, enum stepper_direction direction, uint32_t velocity); + +__pinned_func +static inline int stepper_run(const struct device * dev, enum stepper_direction direction, uint32_t velocity) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + union { uintptr_t x; enum stepper_direction val; } parm1 = { .val = direction }; + union { uintptr_t x; uint32_t val; } parm2 = { .val = velocity }; + return (int) arch_syscall_invoke3(parm0.x, parm1.x, parm2.x, K_SYSCALL_STEPPER_RUN); + } +#endif + compiler_barrier(); + return z_impl_stepper_run(dev, direction, velocity); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define stepper_run(dev, direction, velocity) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_STEPPER_RUN, stepper_run, dev, direction, velocity); syscall__retval = stepper_run(dev, direction, velocity); sys_port_trace_syscall_exit(K_SYSCALL_STEPPER_RUN, stepper_run, dev, direction, velocity, syscall__retval); syscall__retval; }) +#endif +#endif + + +extern int z_impl_stepper_set_event_callback(const struct device * dev, stepper_event_callback_t callback, void * user_data); + +__pinned_func +static inline int stepper_set_event_callback(const struct device * dev, stepper_event_callback_t callback, void * user_data) +{ +#ifdef CONFIG_USERSPACE + if (z_syscall_trap()) { + union { uintptr_t x; const struct device * val; } parm0 = { .val = dev }; + union { uintptr_t x; stepper_event_callback_t val; } parm1 = { .val = callback }; + union { uintptr_t x; void * val; } parm2 = { .val = user_data }; + return (int) arch_syscall_invoke3(parm0.x, parm1.x, parm2.x, K_SYSCALL_STEPPER_SET_EVENT_CALLBACK); + } +#endif + compiler_barrier(); + return z_impl_stepper_set_event_callback(dev, callback, user_data); +} + +#if defined(CONFIG_TRACING_SYSCALL) +#ifndef DISABLE_SYSCALL_TRACING + +#define stepper_set_event_callback(dev, callback, user_data) ({ int syscall__retval; sys_port_trace_syscall_enter(K_SYSCALL_STEPPER_SET_EVENT_CALLBACK, stepper_set_event_callback, dev, callback, user_data); syscall__retval = stepper_set_event_callback(dev, callback, user_data); sys_port_trace_syscall_exit(K_SYSCALL_STEPPER_SET_EVENT_CALLBACK, stepper_set_event_callback, dev, callback, user_data, syscall__retval); syscall__retval; }) +#endif +#endif + + +#ifdef __cplusplus +} +#endif + +#endif +#endif /* include guard */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/version.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/version.h index 8733cd47..4cdd915b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/version.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/generated/zephyr/version.h @@ -6,20 +6,20 @@ * alternatively user defined BUILD_VERSION. */ -#define ZEPHYR_VERSION_CODE 198400 +#define ZEPHYR_VERSION_CODE 262243 #define ZEPHYR_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) -#define KERNELVERSION 0x3070000 -#define KERNEL_VERSION_NUMBER 0x30700 -#define KERNEL_VERSION_MAJOR 3 -#define KERNEL_VERSION_MINOR 7 -#define KERNEL_PATCHLEVEL 0 +#define KERNELVERSION 0x4006300 +#define KERNEL_VERSION_NUMBER 0x40063 +#define KERNEL_VERSION_MAJOR 4 +#define KERNEL_VERSION_MINOR 0 +#define KERNEL_PATCHLEVEL 99 #define KERNEL_TWEAK 0 -#define KERNEL_VERSION_STRING "3.7.0" -#define KERNEL_VERSION_EXTENDED_STRING "3.7.0+0" -#define KERNEL_VERSION_TWEAK_STRING "3.7.0+0" +#define KERNEL_VERSION_STRING "4.0.99" +#define KERNEL_VERSION_EXTENDED_STRING "4.0.99+0" +#define KERNEL_VERSION_TWEAK_STRING "4.0.99+0" -#define BUILD_VERSION v3.7.0-35-gfbc79e8814e1 +#define BUILD_VERSION v3.7.0-8117-gd5cc72a5209a #endif /* _KERNEL_VERSION_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/app_memory/mem_domain.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/app_memory/mem_domain.h index 8fe75eb3..b950235f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/app_memory/mem_domain.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/app_memory/mem_domain.h @@ -5,8 +5,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef INCLUDE_APP_MEMORY_MEM_DOMAIN_H -#define INCLUDE_APP_MEMORY_MEM_DOMAIN_H +#ifndef ZEPHYR_INCLUDE_APP_MEMORY_MEM_DOMAIN_H_ +#define ZEPHYR_INCLUDE_APP_MEMORY_MEM_DOMAIN_H_ #include #include @@ -193,4 +193,4 @@ int k_mem_domain_add_thread(struct k_mem_domain *domain, #endif /** @} */ -#endif /* INCLUDE_APP_MEMORY_MEM_DOMAIN_H */ +#endif /* ZEPHYR_INCLUDE_APP_MEMORY_MEM_DOMAIN_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arc/arch_inlines.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arc/arch_inlines.h index 1d1e0b92..b15888fb 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arc/arch_inlines.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arc/arch_inlines.h @@ -5,8 +5,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef ZEPHYR_INCLUDE_ARCH_XTENSA_ARCH_INLINES_H_ -#define ZEPHYR_INCLUDE_ARCH_XTENSA_ARCH_INLINES_H_ +#ifndef ZEPHYR_INCLUDE_ARCH_ARC_ARCH_INLINES_H_ +#define ZEPHYR_INCLUDE_ARCH_ARC_ARCH_INLINES_H_ #ifndef _ASMLANGUAGE @@ -42,4 +42,4 @@ static ALWAYS_INLINE unsigned int arch_num_cpus(void) } #endif /* !_ASMLANGUAGE */ -#endif /* ZEPHYR_INCLUDE_ARCH_XTENSA_ARCH_INLINES_H_ */ +#endif /* ZEPHYR_INCLUDE_ARCH_ARC_ARCH_INLINES_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arc/v2/arcv2_irq_unit.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arc/v2/arcv2_irq_unit.h index 18cb0fa2..a8f3760a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arc/v2/arcv2_irq_unit.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arc/v2/arcv2_irq_unit.h @@ -199,9 +199,11 @@ bool z_arc_v2_irq_unit_is_in_isr(void) /** * @brief Sets an IRQ line to level/pulse trigger * - * Sets the IRQ line to trigger an interrupt based on the level or the - * edge of the signal. Valid values for are _ARC_V2_INT_LEVEL and + * Sets the IRQ line @p irq to trigger an interrupt based on the level or the + * edge of the signal. Valid values for @p trigger are _ARC_V2_INT_LEVEL and * _ARC_V2_INT_PULSE. + * @param irq IRQ line + * @param trigger Trigger state */ static ALWAYS_INLINE void z_arc_v2_irq_unit_trigger_set(int irq, unsigned int trigger) @@ -217,8 +219,10 @@ void z_arc_v2_irq_unit_trigger_set(int irq, unsigned int trigger) /** * @brief Returns an IRQ line trigger type * - * Gets the IRQ line trigger type. - * Valid values for are _ARC_V2_INT_LEVEL and _ARC_V2_INT_PULSE. + * Gets the IRQ line @p irq trigger type. + * Valid values for @retval trigger are _ARC_V2_INT_LEVEL and _ARC_V2_INT_PULSE. + * + * @param irq IRQ line * * @return trigger state */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arc/v2/vpx/arc_vpx.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arc/v2/vpx/arc_vpx.h new file mode 100644 index 00000000..904c44cd --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arc/v2/vpx/arc_vpx.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2024 Synopsys. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_ARCH_ARC_V2_VPX_ARC_VPX_H_ +#define ZEPHYR_INCLUDE_ARCH_ARC_V2_VPX_ARC_VPX_H_ + +#include + +/** + * @brief Obtain a cooperative lock on the VPX vector registers + * + * This function is used to obtain a cooperative lock on the current CPU's + * VPX vector registers before the calling thread uses them. Callers + * attempting to obtain the cooperative lock must be already restricted to + * executing on a single CPU, and continue to execute on that same CPU while + * both waiting and holding the lock. + * + * This routine is not callable from an ISR. + * + * @param timeout Waiting period to obtain the lock, or one of the special + * values K_NO_WAIT and K_FOREVER. + * + * @return Zero on success, otherwise error code + */ +int arc_vpx_lock(k_timeout_t timeout); + +/** + * @brief Release cooperative lock on the VPX vector registers + * + * This function is used to release the cooperative lock on the current CPU's + * VPX vector registers. It is called after the current thread no longer needs + * to use the VPX vector registers, thereby allowing another thread to use them. + * + * This routine is not callable from an ISR. + */ +void arc_vpx_unlock(void); + +/** + * @brief Release cooperative lock on a CPU's VPX vector registers + * + * This function is used to release the cooperative lock on the specified CPU's + * VPX vector registers. This routine should not be used except by a system + * monitor to release the cooperative lock in case the locking thread where it + * is known that the locking thread is unable to release it (e.g. it was + * aborted while holding the lock). + * + * @param cpu_id CPU ID of the VPX vector register set to be unlocked + */ +void arc_vpx_unlock_force(unsigned int cpu_id); + +#endif /* ZEPHYR_INCLUDE_ARCH_ARC_V2_VPX_ARC_VPX_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arch_inlines.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arch_inlines.h index 0f32159e..04c4a649 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arch_inlines.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arch_inlines.h @@ -34,4 +34,6 @@ #include #endif +#include + #endif /* ZEPHYR_INCLUDE_ARCH_INLINES_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arch_interface.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arch_interface.h index ae51b4a3..0f081d06 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arch_interface.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arch_interface.h @@ -455,6 +455,13 @@ bool arch_irq_is_used(unsigned int irq); * @param parameter Value to pass to the function when invoked */ void arch_irq_offload(irq_offload_routine_t routine, const void *parameter); + + +/** + * Initialize the architecture-specific portion of the irq_offload subsystem + */ +void arch_irq_offload_init(void); + #endif /* CONFIG_IRQ_OFFLOAD */ /** @} */ @@ -1251,6 +1258,17 @@ bool arch_pcie_msi_vector_connect(msi_vector_t *vector, */ void arch_spin_relax(void); +/** + * @defgroup arch-stackwalk Architecture-specific Stack Walk APIs + * @ingroup arch-interface + * + * To add API support to an architecture, `arch_stack_walk()` should be implemented and a non-user + * configurable Kconfig `ARCH_HAS_STACKWALK` that is default to `y` should be created in the + * architecture's top level Kconfig, with all the relevant dependencies. + * + * @{ + */ + /** * stack_trace_callback_fn - Callback for @ref arch_stack_walk * @param cookie Caller supplied pointer handed back by @ref arch_stack_walk @@ -1271,13 +1289,18 @@ typedef bool (*stack_trace_callback_fn)(void *cookie, unsigned long addr); * ============ ======= ============================================ * thread esf * ============ ======= ============================================ - * thread NULL Stack trace from thread (can be _current) + * thread NULL Stack trace from thread (can be arch_current_thread()) * thread esf Stack trace starting on esf * ============ ======= ============================================ */ void arch_stack_walk(stack_trace_callback_fn callback_fn, void *cookie, const struct k_thread *thread, const struct arch_esf *esf); +/** + * arch-stackwalk + * @} + */ + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/arch.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/arch.h index 804e1d23..9bbcc237 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/arch.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/arch.h @@ -19,9 +19,6 @@ /* Add include for DTS generated information */ #include -/* ARM GPRs are often designated by two different names */ -#define sys_define_gpr_with_alias(name1, name2) union { uint32_t name1, name2; } - #include #include #include @@ -270,9 +267,9 @@ enum k_fatal_error_reason_arch { #ifdef CONFIG_CPU_HAS_ARM_MPU #include #endif /* CONFIG_CPU_HAS_ARM_MPU */ -#ifdef CONFIG_CPU_HAS_NXP_MPU +#ifdef CONFIG_CPU_HAS_NXP_SYSMPU #include -#endif /* CONFIG_CPU_HAS_NXP_MPU */ +#endif /* CONFIG_CPU_HAS_NXP_SYSMPU */ #endif /* CONFIG_ARM_MPU */ #ifdef CONFIG_ARM_AARCH32_MMU #include diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_a_r/cpu.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_a_r/cpu.h index 13455fe6..74021eba 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_a_r/cpu.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_a_r/cpu.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2018 Lexmark International, Inc. + * Copyright 2024 Arm Limited and/or its affiliates * * SPDX-License-Identifier: Apache-2.0 */ @@ -55,6 +56,12 @@ #define SCTLR_C_BIT BIT(2) #define SCTLR_I_BIT BIT(12) +/* Armv8-R Cortex-R52 Cache Segregation Control Register */ +#define IMP_CSCTLR_DFLW_SHIFT (0) +#define IMP_CSCTLR_IFLW_SHIFT (8) +#define IMP_CSCTLR(iway, dway) ((iway << IMP_CSCTLR_IFLW_SHIFT) | \ + ((dway << IMP_CSCTLR_DFLW_SHIFT))) + /* Hyp System Control Register */ #define HSCTLR_RES1 (BIT(29) | BIT(28) | BIT(23) | \ BIT(22) | BIT(18) | BIT(16) | \ @@ -84,8 +91,8 @@ #define ICC_SRE_ELx_DIB_BIT BIT(2) #define ICC_SRE_EL3_EN_BIT BIT(3) -/* MPIDR */ -#define MPIDR_AFFLVL_MASK (0xff) +/* MPIDR mask to extract Aff0, Aff1, and Aff2 */ +#define MPIDR_AFFLVL_MASK (0xffffff) #define MPIDR_AFF0_SHIFT (0) #define MPIDR_AFF1_SHIFT (8) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_a_r/exception.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_a_r/exception.h index cd8377bc..8fcc6d0e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_a_r/exception.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_a_r/exception.h @@ -54,6 +54,9 @@ struct __extra_esf_info { }; #endif /* CONFIG_EXTRA_EXCEPTION_INFO */ +/* ARM GPRs are often designated by two different names */ +#define sys_define_gpr_with_alias(name1, name2) union { uint32_t name1, name2; } + struct arch_esf { #if defined(CONFIG_EXTRA_EXCEPTION_INFO) struct __extra_esf_info extra_info; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_a_r/mpu.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_a_r/mpu.h index e660247e..896b73e2 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_a_r/mpu.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_a_r/mpu.h @@ -32,7 +32,7 @@ #define MPU_RASR_B_Pos 0 #define MPU_RASR_B_Msk (1UL << MPU_RASR_B_Pos) -#if defined(CONFIG_CPU_CORTEX_R4) || defined(CONFIG_CPU_CORTEX_R5) +#if defined(CONFIG_CPU_CORTEX_R4) || defined(CONFIG_CPU_CORTEX_R5) || defined(CONFIG_CPU_CORTEX_R8) #define ARM_MPU_REGION_SIZE_32B ((uint8_t)0x04U) #define ARM_MPU_REGION_SIZE_64B ((uint8_t)0x05U) #define ARM_MPU_REGION_SIZE_128B ((uint8_t)0x06U) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_m/arm_mpu_mem_cfg.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_m/arm_mpu_mem_cfg.h index 7f0d3e3e..3f74451c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_m/arm_mpu_mem_cfg.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_m/arm_mpu_mem_cfg.h @@ -37,6 +37,12 @@ #define REGION_FLASH_SIZE REGION_256M #elif CONFIG_FLASH_SIZE <= 524288 #define REGION_FLASH_SIZE REGION_512M +#elif CONFIG_FLASH_SIZE <= 1048576 +#define REGION_FLASH_SIZE REGION_1G +#elif CONFIG_FLASH_SIZE <= 2097152 +#define REGION_FLASH_SIZE REGION_2G +#elif CONFIG_FLASH_SIZE <= 4194304 +#define REGION_FLASH_SIZE REGION_4G #else #error "Unsupported flash size configuration" #endif @@ -64,10 +70,22 @@ #define REGION_SRAM_SIZE REGION_8M #elif CONFIG_SRAM_SIZE <= 16384 #define REGION_SRAM_SIZE REGION_16M -#elif CONFIG_SRAM_SIZE == 32768 +#elif CONFIG_SRAM_SIZE <= 32768 #define REGION_SRAM_SIZE REGION_32M -#elif CONFIG_SRAM_SIZE == 65536 +#elif CONFIG_SRAM_SIZE <= 65536 #define REGION_SRAM_SIZE REGION_64M +#elif CONFIG_SRAM_SIZE <= 131072 +#define REGION_SRAM_SIZE REGION_128M +#elif CONFIG_SRAM_SIZE <= 262144 +#define REGION_SRAM_SIZE REGION_256M +#elif CONFIG_SRAM_SIZE <= 524288 +#define REGION_SRAM_SIZE REGION_512M +#elif CONFIG_SRAM_SIZE <= 1048576 +#define REGION_SRAM_SIZE REGION_1G +#elif CONFIG_SRAM_SIZE <= 2097152 +#define REGION_SRAM_SIZE REGION_2G +#elif CONFIG_SRAM_SIZE <= 4194304 +#define REGION_SRAM_SIZE REGION_4G #else #error "Unsupported sram size configuration" #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_m/cpu.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_m/cpu.h index c8318bd9..064d8f92 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_m/cpu.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_m/cpu.h @@ -54,16 +54,21 @@ extern "C" { struct __cpu_context { /* GPRs are saved onto the stack */ uint32_t msp; - uint32_t msplim; uint32_t psp; - uint32_t psplim; - uint32_t apsr; - uint32_t ipsr; - uint32_t epsr; uint32_t primask; + uint32_t control; + +#if defined(CONFIG_ARMV7_M_ARMV8_M_MAINLINE) + /* Registers present only on ARMv7-M and ARMv8-M Mainline */ uint32_t faultmask; uint32_t basepri; - uint32_t control; +#endif /* CONFIG_ARMV7_M_ARMV8_M_MAINLINE */ + +#if defined(CONFIG_CPU_CORTEX_M_HAS_SPLIM) + /* Registers present only on certain ARMv8-M implementations */ + uint32_t msplim; + uint32_t psplim; +#endif /* CONFIG_CPU_CORTEX_M_HAS_SPLIM */ }; typedef struct __cpu_context _cpu_context_t; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_m/exception.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_m/exception.h index 2deed9bd..6f603178 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_m/exception.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/cortex_m/exception.h @@ -98,6 +98,9 @@ struct __extra_esf_info { }; #endif /* CONFIG_EXTRA_EXCEPTION_INFO */ +/* ARM GPRs are often designated by two different names */ +#define sys_define_gpr_with_alias(name1, name2) union { uint32_t name1, name2; } + struct arch_esf { struct __basic_sf { sys_define_gpr_with_alias(a1, r0); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/gdbstub.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/gdbstub.h index 55fceff1..5eb4ea15 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/gdbstub.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/gdbstub.h @@ -7,7 +7,7 @@ #ifndef ZEPHYR_INCLUDE_ARCH_ARM_AARCH32_GDBSTUB_H_ #define ZEPHYR_INCLUDE_ARCH_ARM_AARCH32_GDBSTUB_H_ -#include +#include #ifndef _ASMLANGUAGE diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/mpu/arm_mpu_v8.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/mpu/arm_mpu_v8.h index 11d4a2e7..77deb64b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/mpu/arm_mpu_v8.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm/mpu/arm_mpu_v8.h @@ -82,7 +82,7 @@ (((base & MPU_RBAR_BASE_Msk) + size - 1) & MPU_RLAR_LIMIT_Msk) /* Attribute flags for cache-ability */ -#if defined(CONFIG_AARCH32_ARMV8_R) + /* Memory Attributes for Device Memory * 1.Gathering (G/nG) * Determines whether multiple accesses can be merged into a single @@ -105,7 +105,6 @@ #define DEVICE_nGnRE 0x4U #define DEVICE_nGRE 0x8U #define DEVICE_GRE 0xCU -#endif /* Read/Write Allocation Configurations for Cacheable Memory */ #define R_NON_W_NON 0x0 /* Do not allocate Read/Write */ @@ -152,8 +151,6 @@ #define MPU_MAIR_INDEX_SRAM 1 #define MPU_MAIR_ATTR_SRAM_NOCACHE MPU_CACHE_ATTRIBUTES_SRAM_NOCACHE #define MPU_MAIR_INDEX_SRAM_NOCACHE 2 - -#if defined(CONFIG_AARCH32_ARMV8_R) #define MPU_MAIR_ATTR_DEVICE DEVICE_nGnRnE #define MPU_MAIR_INDEX_DEVICE 3 /* Flash region(s): Attribute-0 @@ -166,17 +163,6 @@ (MPU_MAIR_ATTR_SRAM << (MPU_MAIR_INDEX_SRAM * 8)) | \ (MPU_MAIR_ATTR_SRAM_NOCACHE << (MPU_MAIR_INDEX_SRAM_NOCACHE * 8)) | \ (MPU_MAIR_ATTR_DEVICE << (MPU_MAIR_INDEX_DEVICE * 8))) -#else -/* Flash region(s): Attribute-0 - * SRAM region(s): Attribute-1 - * SRAM no cache-able regions(s): Attribute-2 - */ -#define MPU_MAIR_ATTRS \ - (((MPU_MAIR_ATTR_FLASH << MPU_MAIR0_Attr0_Pos) & MPU_MAIR0_Attr0_Msk) | \ - ((MPU_MAIR_ATTR_SRAM << MPU_MAIR0_Attr1_Pos) & MPU_MAIR0_Attr1_Msk) | \ - ((MPU_MAIR_ATTR_SRAM_NOCACHE << MPU_MAIR0_Attr2_Pos) & \ - MPU_MAIR0_Attr2_Msk)) -#endif /* Some helper defines for common regions. * @@ -309,6 +295,13 @@ } #endif /* CONFIG_MPU_ALLOW_FLASH_WRITE */ +#define REGION_DEVICE_ATTR(base, size) \ + { \ + /* AP, XN, SH */ \ + .rbar = NOT_EXEC | P_RW_U_NA_Msk | NON_SHAREABLE_Msk, /* Cache-ability */ \ + .mair_idx = MPU_MAIR_INDEX_DEVICE, \ + .r_limit = REGION_LIMIT_ADDR(base, size), /* Region Limit */ \ + } #endif struct arm_mpu_region_attr { diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm64/arm_mmu.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm64/arm_mmu.h index 65aab01f..450a8238 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm64/arm_mmu.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm64/arm_mmu.h @@ -45,6 +45,7 @@ * attrs[7] : Mirror RO/RW permissions to EL0 * attrs[8] : Overwrite existing mapping if any * attrs[9] : non-Global mapping (nG) + * attrs[10]: Paged-out mapping * */ #define MT_PERM_SHIFT 3U @@ -54,6 +55,7 @@ #define MT_RW_AP_SHIFT 7U #define MT_NO_OVERWRITE_SHIFT 8U #define MT_NON_GLOBAL_SHIFT 9U +#define MT_PAGED_OUT_SHIFT 10U #define MT_RO (0U << MT_PERM_SHIFT) #define MT_RW (1U << MT_PERM_SHIFT) @@ -75,6 +77,8 @@ #define MT_G (0U << MT_NON_GLOBAL_SHIFT) #define MT_NG (1U << MT_NON_GLOBAL_SHIFT) +#define MT_PAGED_OUT (1U << MT_PAGED_OUT_SHIFT) + #define MT_P_RW_U_RW (MT_RW | MT_RW_AP_ELx | MT_P_EXECUTE_NEVER | MT_U_EXECUTE_NEVER) #define MT_P_RW_U_NA (MT_RW | MT_RW_AP_EL_HIGHER | MT_P_EXECUTE_NEVER | MT_U_EXECUTE_NEVER) #define MT_P_RO_U_RO (MT_RO | MT_RW_AP_ELx | MT_P_EXECUTE_NEVER | MT_U_EXECUTE_NEVER) @@ -89,6 +93,19 @@ #define MT_DEFAULT_SECURE_STATE MT_SECURE #endif +/* Definitions used by arch_page_info_get() */ +#define ARCH_DATA_PAGE_LOADED BIT(0) +#define ARCH_DATA_PAGE_ACCESSED BIT(1) +#define ARCH_DATA_PAGE_DIRTY BIT(2) +#define ARCH_DATA_PAGE_NOT_MAPPED BIT(3) + +/* + * Special unpaged "location" tags (highest possible descriptor physical + * address values unlikely to conflict with backing store locations) + */ +#define ARCH_UNPAGED_ANON_ZERO 0x0000fffffffff000 +#define ARCH_UNPAGED_ANON_UNINIT 0x0000ffffffffe000 + #ifndef _ASMLANGUAGE /* Region definition data structure */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm64/cache.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm64/cache.h index cddd901b..e0a7a603 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm64/cache.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/arm64/cache.h @@ -236,6 +236,10 @@ static ALWAYS_INLINE void arch_icache_disable(void) #endif /* CONFIG_ICACHE */ +static ALWAYS_INLINE void arch_cache_init(void) +{ +} + #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/cache.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/cache.h index 1516f03e..088de27c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/cache.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/cache.h @@ -349,6 +349,9 @@ void *arch_cache_uncached_ptr_get(void __sparse_cache *ptr); #define cache_uncached_ptr(ptr) arch_cache_uncached_ptr_get(ptr) #endif /* CONFIG_CACHE_DOUBLEMAP */ + +void arch_cache_init(void); + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/common/arch_inlines.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/common/arch_inlines.h new file mode 100644 index 00000000..8c0ba334 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/common/arch_inlines.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2024 Meta Platforms. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_ZEPHYR_ARCH_COMMON_ARCH_INLINES_H_ +#define ZEPHYR_INCLUDE_ZEPHYR_ARCH_COMMON_ARCH_INLINES_H_ + +#ifndef ZEPHYR_INCLUDE_ARCH_INLINES_H_ +#error "This header shouldn't be included directly" +#endif /* ZEPHYR_INCLUDE_ARCH_INLINES_H_ */ + +#ifndef _ASMLANGUAGE + +#include + +#ifndef CONFIG_ARCH_HAS_CUSTOM_CURRENT_IMPL +static ALWAYS_INLINE struct k_thread *arch_current_thread(void) +{ +#ifdef CONFIG_SMP + /* In SMP, arch_current_thread() is a field read from _current_cpu, which + * can race with preemption before it is read. We must lock + * local interrupts when reading it. + */ + unsigned int k = arch_irq_lock(); + + struct k_thread *ret = _current_cpu->current; + + arch_irq_unlock(k); +#else + struct k_thread *ret = _kernel.cpus[0].current; +#endif /* CONFIG_SMP */ + return ret; +} + +static ALWAYS_INLINE void arch_current_thread_set(struct k_thread *thread) +{ + _current_cpu->current = thread; +} +#endif /* CONFIG_ARCH_HAS_CUSTOM_CURRENT_IMPL */ + +#endif /* _ASMLANGUAGE */ + +#endif /* ZEPHYR_INCLUDE_ZEPHYR_ARCH_COMMON_ARCH_INLINES_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/common/ffs.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/common/ffs.h index 11f85659..2660faa2 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/common/ffs.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/common/ffs.h @@ -57,26 +57,13 @@ static ALWAYS_INLINE unsigned int find_lsb_set(uint32_t op) #else /* - * Toolchain does not have __builtin_ffs(). - * Need to do this manually. + * Toolchain does not have __builtin_ffs(). Leverage find_lsb_set() + * by first clearing all but the lowest set bit. */ - int bit; - if (op == 0) { - return 0; - } + op = op ^ (op & (op - 1)); - for (bit = 0; bit < 32; bit++) { - if ((op & (1 << bit)) != 0) { - return (bit + 1); - } - } - - /* - * This should never happen but we need to keep - * compiler happy. - */ - return 0; + return find_msb_set(op); #endif /* CONFIG_TOOLCHAIN_HAS_BUILTIN_FFS */ } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/common/pm_s2ram.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/common/pm_s2ram.h index 451794a5..ad9ab8ad 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/common/pm_s2ram.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/common/pm_s2ram.h @@ -7,6 +7,7 @@ * * @brief public S2RAM APIs. * @defgroup pm_s2ram S2RAM APIs + * @ingroup subsys_pm * @{ */ @@ -64,6 +65,11 @@ int arch_pm_s2ram_suspend(pm_s2ram_system_off_fn_t system_off); * * Default implementation is setting a magic word in RAM. CONFIG_PM_S2RAM_CUSTOM_MARKING * allows custom implementation. + * The following requirements must be fulfilled: + * - the function cannot use stack (asm function or function with 'naked' attribute) + * - the content of the R1 and R4 registers must remain unchanged + * - returning from the function should be performed with the `bx lr` instruction + * */ void pm_s2ram_mark_set(void); @@ -75,6 +81,11 @@ void pm_s2ram_mark_set(void); * * Default implementation is checking a magic word in RAM. CONFIG_PM_S2RAM_CUSTOM_MARKING * allows custom implementation. + * The following requirements must be fulfilled: + * - the function cannot use stack (most likely asm function) + * - the content of the R1 and R4 registers must remain unchanged + * - the function's return value is passed by R0 register + * - returning from the function should be performed with the `bx lr` instruction * * @retval true if marking is found which indicates resuming after suspend-to-RAM. * @retval false if marking is not found which indicates standard boot. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/arch_inlines.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/arch_inlines.h index 36dc2e64..c97413a5 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/arch_inlines.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/arch_inlines.h @@ -11,6 +11,7 @@ #include #include "csr.h" +#include "reg.h" static ALWAYS_INLINE uint32_t arch_proc_id(void) { @@ -26,6 +27,16 @@ static ALWAYS_INLINE _cpu_t *arch_curr_cpu(void) #endif } +#ifdef CONFIG_RISCV_CURRENT_VIA_GP +register struct k_thread *__arch_current_thread __asm__("gp"); + +#define arch_current_thread() __arch_current_thread +#define arch_current_thread_set(thread) \ + do { \ + __arch_current_thread = _current_cpu->current = (thread); \ + } while (0) +#endif /* CONFIG_RISCV_CURRENT_VIA_GP */ + static ALWAYS_INLINE unsigned int arch_num_cpus(void) { return CONFIG_MP_MAX_NUM_CPUS; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/elf.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/elf.h new file mode 100644 index 00000000..fe40dc88 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/elf.h @@ -0,0 +1,298 @@ +/** + * @file + * @brief RISCV-Specific constants for ELF binaries. + * + * References can be found here: + * https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/master/riscv-elf.adoc + */ +/* + * Copyright (c) 2024 CISPA Helmholtz Center for Information Security gGmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_ARCH_RISCV_ELF_H +#define ZEPHYR_ARCH_RISCV_ELF_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Relocation names for RISCV-specific relocations + * @cond ignore + */ + +#define R_RISCV_NONE 0 +#define R_RISCV_32 1 +#define R_RISCV_64 2 +#define R_RISCV_RELATIVE 3 +#define R_RISCV_COPY 4 +#define R_RISCV_JUMP_SLOT 5 +#define R_RISCV_TLS_DTPMOD32 6 +#define R_RISCV_TLS_DTPMOD64 7 +#define R_RISCV_TLS_DTPREL32 8 +#define R_RISCV_TLS_DTPREL64 9 +#define R_RISCV_TLS_TPREL32 10 +#define R_RISCV_TLS_TPREL64 11 +#define R_RISCV_TLSDESC 12 +/* 13-15 reserved */ +#define R_RISCV_BRANCH 16 +#define R_RISCV_JAL 17 +#define R_RISCV_CALL 18 +#define R_RISCV_CALL_PLT 19 +#define R_RISCV_GOT_HI20 20 +#define R_RISCV_TLS_GOT_HI20 21 +#define R_RISCV_TLS_GD_HI20 22 +#define R_RISCV_PCREL_HI20 23 +#define R_RISCV_PCREL_LO12_I 24 +#define R_RISCV_PCREL_LO12_S 25 +#define R_RISCV_HI20 26 +#define R_RISCV_LO12_I 27 +#define R_RISCV_LO12_S 28 +#define R_RISCV_TPREL_HI20 29 +#define R_RISCV_TPREL_LO12_I 30 +#define R_RISCV_TPREL_LO12_S 31 +#define R_RISCV_TPREL_ADD 32 +#define R_RISCV_ADD8 33 +#define R_RISCV_ADD16 34 +#define R_RISCV_ADD32 35 +#define R_RISCV_ADD64 36 +#define R_RISCV_SUB8 37 +#define R_RISCV_SUB16 38 +#define R_RISCV_SUB32 39 +#define R_RISCV_SUB64 40 +#define R_RISCV_GOT32_PCREL 41 +/* 42 reserved */ +#define R_RISCV_ALIGN 43 +/* next two refer to compressed instructions */ +#define R_RISCV_RVC_BRANCH 44 +#define R_RISCV_RVC_JUMP 45 +/* 46-50 reserved */ +#define R_RISCV_RELAX 51 +#define R_RISCV_SUB6 52 +#define R_RISCV_SET6 53 +#define R_RISCV_SET8 54 +#define R_RISCV_SET16 55 +#define R_RISCV_SET32 56 +#define R_RISCV_32_PCREL 57 +#define R_RISCV_IRELATIVE 58 +#define R_RISCV_PLT32 59 +#define R_RISCV_SET_ULEB128 60 +#define R_RISCV_SUB_ULEB128 61 +#define R_RISCV_TLSDESC_HI20 62 +#define R_RISCV_TLSDESC_LOAD_LO12 63 +#define R_RISCV_TLSDESC_ADD_LO12 64 +#define R_RISCV_TLSDESC_CALL 65 +/* 66-190 reserved */ +#define R_RISCV_VENDOR 191 +/* 192-255 reserved */ +/** @endcond */ + +/** + * "wordclass" from RISC-V specification + * @cond ignore + */ +#if defined(CONFIG_64BIT) +typedef uint64_t r_riscv_wordclass_t; +#else +typedef uint32_t r_riscv_wordclass_t; +#endif +/** @endcond */ + +/** @brief Extract bit from immediate + * + * @param imm8 immediate value (usually upper 20 or lower 12 bit) + * @param bit which bit to extract + */ +#define R_RISCV_IMM8_GET_BIT(imm8, bit) (((imm8) & BIT(bit)) >> (bit)) + +/** @brief Generate mask for immediate in B-type RISC-V instruction + * + * @param imm8 immediate value, lower 12 bits used; + * due to alignment requirements, imm8[0] is implicitly 0 + * + */ +#define R_RISCV_BTYPE_IMM8_MASK(imm8) \ + ((R_RISCV_IMM8_GET_BIT(imm8, 12) << 31) | (R_RISCV_IMM8_GET_BIT(imm8, 10) << 30) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 9) << 29) | (R_RISCV_IMM8_GET_BIT(imm8, 8) << 28) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 7) << 27) | (R_RISCV_IMM8_GET_BIT(imm8, 6) << 26) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 5) << 25) | (R_RISCV_IMM8_GET_BIT(imm8, 4) << 11) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 3) << 10) | (R_RISCV_IMM8_GET_BIT(imm8, 2) << 9) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 1) << 8) | (R_RISCV_IMM8_GET_BIT(imm8, 11) << 7)) + +/** @brief Generate mask for immediate in J-type RISC-V instruction + * + * @param imm8 immediate value, lower 21 bits used; + * due to alignment requirements, imm8[0] is implicitly 0 + * + */ +#define R_RISCV_JTYPE_IMM8_MASK(imm8) \ + ((R_RISCV_IMM8_GET_BIT(imm8, 20) << 31) | (R_RISCV_IMM8_GET_BIT(imm8, 10) << 30) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 9) << 29) | (R_RISCV_IMM8_GET_BIT(imm8, 8) << 28) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 7) << 27) | (R_RISCV_IMM8_GET_BIT(imm8, 6) << 26) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 5) << 25) | (R_RISCV_IMM8_GET_BIT(imm8, 4) << 24) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 3) << 23) | (R_RISCV_IMM8_GET_BIT(imm8, 2) << 22) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 1) << 21) | (R_RISCV_IMM8_GET_BIT(imm8, 11) << 20) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 19) << 19) | (R_RISCV_IMM8_GET_BIT(imm8, 18) << 18) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 17) << 17) | (R_RISCV_IMM8_GET_BIT(imm8, 16) << 16) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 15) << 15) | (R_RISCV_IMM8_GET_BIT(imm8, 14) << 14) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 13) << 13) | (R_RISCV_IMM8_GET_BIT(imm8, 12) << 12)) + +/** @brief Generate mask for immediate in S-type RISC-V instruction + * + * @param imm8 immediate value, lower 12 bits used + * + */ +#define R_RISCV_STYPE_IMM8_MASK(imm8) \ + ((R_RISCV_IMM8_GET_BIT(imm8, 11) << 31) | (R_RISCV_IMM8_GET_BIT(imm8, 10) << 30) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 9) << 29) | (R_RISCV_IMM8_GET_BIT(imm8, 8) << 28) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 7) << 27) | (R_RISCV_IMM8_GET_BIT(imm8, 6) << 26) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 5) << 25) | (R_RISCV_IMM8_GET_BIT(imm8, 4) << 11) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 3) << 10) | (R_RISCV_IMM8_GET_BIT(imm8, 2) << 9) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 1) << 8) | (R_RISCV_IMM8_GET_BIT(imm8, 0) << 7)) + +/** @brief Generate mask for immediate in compressed J-type RISC-V instruction + * + * @param imm8 immediate value, lower 12 bits used; + * due to alignment requirements, imm8[0] is implicitly 0 + * + */ +#define R_RISCV_CJTYPE_IMM8_MASK(imm8) \ + ((R_RISCV_IMM8_GET_BIT(imm8, 11) << 12) | (R_RISCV_IMM8_GET_BIT(imm8, 4) << 11) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 9) << 10) | (R_RISCV_IMM8_GET_BIT(imm8, 8) << 9) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 10) << 8) | (R_RISCV_IMM8_GET_BIT(imm8, 6) << 7) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 7) << 6) | (R_RISCV_IMM8_GET_BIT(imm8, 3) << 5) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 2) << 4) | (R_RISCV_IMM8_GET_BIT(imm8, 1) << 3) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 5) << 2)) + +/** @brief Generate mask for immediate in compressed B-type RISC-V instruction + * + * @param imm8 immediate value, lower 9 bits used; + * due to alignment requirements, imm8[0] is implicitly 0 + * + */ +#define R_RISCV_CBTYPE_IMM8_MASK(imm8) \ + ((R_RISCV_IMM8_GET_BIT(imm8, 8) << 12) | (R_RISCV_IMM8_GET_BIT(imm8, 4) << 11) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 3) << 10) | (R_RISCV_IMM8_GET_BIT(imm8, 7) << 6) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 6) << 5) | (R_RISCV_IMM8_GET_BIT(imm8, 2) << 4) | \ + (R_RISCV_IMM8_GET_BIT(imm8, 1) << 3) | (R_RISCV_IMM8_GET_BIT(imm8, 5) << 2)) + +/** @brief Clear immediate bits in B-type instruction. + * + * @param operand Address of RISC-V instruction, B-type + * + */ +#define R_RISCV_CLEAR_BTYPE_IMM8(operand) ((operand) & ~R_RISCV_BTYPE_IMM8_MASK((uint32_t) -1)) + +/** @brief Overwrite immediate in B-type instruction + * + * @param operand Address of RISC-V instruction, B-type + * @param imm8 New immediate + * + */ +#define R_RISCV_SET_BTYPE_IMM8(operand, imm8) \ + ((R_RISCV_CLEAR_BTYPE_IMM8(operand)) | R_RISCV_BTYPE_IMM8_MASK(imm8)) + +/** @brief Clear immediate bits in J-type instruction. + * + * @param operand Address of RISC-V instruction, J-type + * + */ +#define R_RISCV_CLEAR_JTYPE_IMM8(operand) ((operand) & ~R_RISCV_JTYPE_IMM8_MASK((uint32_t) -1)) + +/** @brief Overwrite immediate in J-type instruction + * + * @param operand Address of RISC-V instruction, J-type + * @param imm8 New immediate + * + */ +#define R_RISCV_SET_JTYPE_IMM8(operand, imm8) \ + ((R_RISCV_CLEAR_JTYPE_IMM8(operand)) | R_RISCV_JTYPE_IMM8_MASK(imm8)) + +/** @brief Clear immediate bits in S-type instruction. + * + * @param operand Address of RISC-V instruction, S-type + * + */ +#define R_RISCV_CLEAR_STYPE_IMM8(operand) ((operand) & ~R_RISCV_STYPE_IMM8_MASK((uint32_t) -1)) + +/** @brief Overwrite immediate in S-type instruction + * + * @param operand Address of RISC-V instruction, S-type + * @param imm8 New immediate + * + */ +#define R_RISCV_SET_STYPE_IMM8(operand, imm8) \ + ((R_RISCV_CLEAR_STYPE_IMM8(operand)) | R_RISCV_STYPE_IMM8_MASK(imm8)) + +/** @brief Clear immediate bits in compressed J-type instruction. + * + * @param operand Address of RISC-V instruction, compressed-J-type + * + */ +#define R_RISCV_CLEAR_CJTYPE_IMM8(operand) ((operand) & ~R_RISCV_CJTYPE_IMM8_MASK((uint32_t) -1)) + +/** @brief Overwrite immediate in compressed J-type instruction + * + * @param operand Address of RISC-V instruction, compressed-J-type + * @param imm8 New immediate + * + */ +#define R_RISCV_SET_CJTYPE_IMM8(operand, imm8) \ + ((R_RISCV_CLEAR_CJTYPE_IMM8(operand)) | R_RISCV_CJTYPE_IMM8_MASK(imm8)) + +/** @brief Clear immediate bits in compressed B-type instruction. + * + * @param operand Address of RISC-V instruction, compressed-B-type + * + */ +#define R_RISCV_CLEAR_CBTYPE_IMM8(operand) ((operand) & ~R_RISCV_CBTYPE_IMM8_MASK((uint32_t) -1)) + +/** @brief Overwrite immediate in compressed B-type instruction + * + * @param operand Address of RISC-V instruction, compressed-B-type + * @param imm8 New immediate + * + */ +#define R_RISCV_SET_CBTYPE_IMM8(operand, imm8) \ + ((R_RISCV_CLEAR_CBTYPE_IMM8(operand)) | R_RISCV_CBTYPE_IMM8_MASK(imm8)) + +/** @brief Clear immediate bits in U-type instruction. + * + * @param operand Address of RISC-V instruction, U-type + * + */ +#define R_RISCV_CLEAR_UTYPE_IMM8(operand) ((operand) & ~(0xFFFFF000)) + +/** @brief Overwrite immediate in U-type instruction + * + * @param operand Address of RISC-V instruction, U-type + * @param imm8 New immediate + * + */ +#define R_RISCV_SET_UTYPE_IMM8(operand, imm8) \ + ((R_RISCV_CLEAR_UTYPE_IMM8(operand)) | ((imm8) & 0xFFFFF000)) + +/** @brief Clear immediate bits in I-type instruction. + * + * @param operand Address of RISC-V instruction, I-type + * + */ +#define R_RISCV_CLEAR_ITYPE_IMM8(operand) ((operand) & ~(0xFFF00000)) + +/** @brief Overwrite immediate in I-type instruction + * + * @param operand Address of RISC-V instruction, I-type + * @param imm8 New immediate + * + */ +#define R_RISCV_SET_ITYPE_IMM8(operand, imm8) ((R_RISCV_CLEAR_ITYPE_IMM8(operand)) | ((imm8) << 20)) + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_ARCH_RISCV_ELF_H */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/exception.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/exception.h index 09777622..4e464170 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/exception.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/exception.h @@ -45,6 +45,12 @@ struct soc_esf { }; #endif +#ifdef CONFIG_EXTRA_EXCEPTION_INFO +/* Forward declaration */ +struct _callee_saved; +typedef struct _callee_saved _callee_saved_t; +#endif /* CONFIG_EXTRA_EXCEPTION_INFO */ + #if defined(CONFIG_RISCV_SOC_HAS_ISR_STACKING) SOC_ISR_STACKING_ESF_DECLARE; #else @@ -81,6 +87,10 @@ struct arch_esf { unsigned long sp; /* preserved (user or kernel) stack pointer */ #endif +#ifdef CONFIG_EXTRA_EXCEPTION_INFO + _callee_saved_t *csf; /* pointer to callee-saved-registers */ +#endif /* CONFIG_EXTRA_EXCEPTION_INFO */ + #ifdef CONFIG_RISCV_SOC_CONTEXT_SAVE struct soc_esf soc_context; #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/irq.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/irq.h index 1cebd2ae..84089127 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/irq.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/irq.h @@ -62,6 +62,12 @@ extern void z_riscv_irq_priority_set(unsigned int irq, #define z_riscv_irq_priority_set(i, p, f) /* Nothing */ #endif /* CONFIG_RISCV_HAS_PLIC || CONFIG_RISCV_HAS_CLIC */ +#ifdef CONFIG_RISCV_HAS_CLIC +extern void z_riscv_irq_vector_set(unsigned int irq); +#else +#define z_riscv_irq_vector_set(i) /* Nothing */ +#endif /* CONFIG_RISCV_HAS_CLIC */ + #define ARCH_IRQ_CONNECT(irq_p, priority_p, isr_p, isr_param_p, flags_p) \ { \ Z_ISR_DECLARE(irq_p + CONFIG_RISCV_RESERVED_IRQ_ISR_TABLES_OFFSET, \ @@ -74,6 +80,7 @@ extern void z_riscv_irq_priority_set(unsigned int irq, Z_ISR_DECLARE_DIRECT(irq_p + CONFIG_RISCV_RESERVED_IRQ_ISR_TABLES_OFFSET, \ ISR_FLAG_DIRECT, isr_p); \ z_riscv_irq_priority_set(irq_p, priority_p, flags_p); \ + z_riscv_irq_vector_set(irq_p); \ } #define ARCH_ISR_DIRECT_HEADER() arch_isr_direct_header() diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/reg.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/reg.h new file mode 100644 index 00000000..2c0650f0 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/reg.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2024 Meta Platforms + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_ZEPHYR_ARCH_RISCV_REG_H_ +#define ZEPHYR_INCLUDE_ZEPHYR_ARCH_RISCV_REG_H_ + +#include + +#define reg_read(reg) \ + ({ \ + register unsigned long __rv; \ + __asm__ volatile("mv %0, " STRINGIFY(reg) : "=r"(__rv)); \ + __rv; \ + }) + +#define reg_write(reg, val) ({ __asm__("mv " STRINGIFY(reg) ", %0" : : "r"(val)); }) + +#endif /* ZEPHYR_INCLUDE_ZEPHYR_ARCH_RISCV_REG_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/sys_io.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/sys_io.h index 0437053d..2bda1f7b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/sys_io.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/sys_io.h @@ -41,7 +41,7 @@ static ALWAYS_INLINE uint8_t sys_read8(mem_addr_t addr) static ALWAYS_INLINE void sys_write8(uint8_t data, mem_addr_t addr) { - return z_soc_sys_write8(data, addr); + z_soc_sys_write8(data, addr); } static ALWAYS_INLINE uint16_t sys_read16(mem_addr_t addr) @@ -51,7 +51,7 @@ static ALWAYS_INLINE uint16_t sys_read16(mem_addr_t addr) static ALWAYS_INLINE void sys_write16(uint16_t data, mem_addr_t addr) { - return z_soc_sys_write16(data, addr); + z_soc_sys_write16(data, addr); } static ALWAYS_INLINE uint32_t sys_read32(mem_addr_t addr) @@ -61,7 +61,7 @@ static ALWAYS_INLINE uint32_t sys_read32(mem_addr_t addr) static ALWAYS_INLINE void sys_write32(uint32_t data, mem_addr_t addr) { - return z_soc_sys_write32(data, addr); + z_soc_sys_write32(data, addr); } static ALWAYS_INLINE uint64_t sys_read64(mem_addr_t addr) @@ -71,7 +71,7 @@ static ALWAYS_INLINE uint64_t sys_read64(mem_addr_t addr) static ALWAYS_INLINE void sys_write64(uint64_t data, mem_addr_t addr) { - return z_soc_sys_write64(data, addr); + z_soc_sys_write64(data, addr); } #endif /* CONFIG_RISCV_SOC_HAS_CUSTOM_SYS_IO */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/syscall.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/syscall.h index 8865bd67..e88cd4e8 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/syscall.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/riscv/syscall.h @@ -158,7 +158,7 @@ static inline bool arch_is_user_context(void) } /* Defined in arch/riscv/core/thread.c */ - extern __thread uint8_t is_user_mode; + extern Z_THREAD_LOCAL uint8_t is_user_mode; return is_user_mode != 0; } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/ia32/arch.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/ia32/arch.h index b82e0db0..e2f961c8 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/ia32/arch.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/ia32/arch.h @@ -305,7 +305,7 @@ static inline void arch_isr_direct_footer(int swap) * 3) Next thread to run in the ready queue is not this thread */ if (swap != 0 && _kernel.cpus[0].nested == 0 && - _kernel.ready_q.cache != _current) { + _kernel.ready_q.cache != arch_current_thread()) { unsigned int flags; /* Fetch EFLAGS argument to z_swap() */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/mmustructs.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/mmustructs.h index d02d517f..8e079714 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/mmustructs.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/mmustructs.h @@ -32,6 +32,20 @@ /* Use an PAT bit for this one since it's never set in a mapped PTE */ #define ARCH_DATA_PAGE_NOT_MAPPED ((uintptr_t)BIT(7)) +/* + * Special unpaged "location" tags. These are defined as the highest possible + * PTE address values unlikely to conflict with backing store locations. + * As noted in arch_page_info_get(), those values on PAE systems, whose + * pentry_t is larger than uintptr_t get truncated. + */ +#if defined(CONFIG_X86_64) || defined(CONFIG_X86_PAE) +#define ARCH_UNPAGED_ANON_ZERO ((uintptr_t)0x07FFFFFFFFFFF000ULL) +#define ARCH_UNPAGED_ANON_UNINIT ((uintptr_t)0x07FFFFFFFFFFE000ULL) +#else +#define ARCH_UNPAGED_ANON_ZERO ((uintptr_t)0xFFFFF000U) +#define ARCH_UNPAGED_ANON_UNINIT ((uintptr_t)0xFFFFE000U) +#endif + /* Always true with 32-bit page tables, don't enable * CONFIG_EXECUTE_XOR_WRITE and expect it to work for you */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/multiboot.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/multiboot.h index 66c312e4..379f03dd 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/multiboot.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/multiboot.h @@ -9,32 +9,7 @@ #ifndef _ASMLANGUAGE -#include - -/* - * Multiboot (version 1) boot information structure. - * - * Only fields/values of interest to Zephyr are enumerated: at - * present, that means only those pertaining to the framebuffer. - */ - -struct multiboot_info { - uint32_t flags; - uint32_t mem_lower; - uint32_t mem_upper; - uint32_t unused0[8]; - uint32_t mmap_length; - uint32_t mmap_addr; - uint32_t unused1[9]; - uint32_t fb_addr_lo; - uint32_t fb_addr_hi; - uint32_t fb_pitch; - uint32_t fb_width; - uint32_t fb_height; - uint8_t fb_bpp; - uint8_t fb_type; - uint8_t fb_color_info[6]; -}; +#include "multiboot_info.h" extern struct multiboot_info multiboot_info; @@ -105,9 +80,10 @@ struct multiboot_mmap { /* The flags in the boot info structure tell us which fields are valid. */ -#define MULTIBOOT_INFO_FLAGS_MEM (1 << 0) /* mem_* valid */ -#define MULTIBOOT_INFO_FLAGS_MMAP (1 << 6) /* mmap_* valid */ -#define MULTIBOOT_INFO_FLAGS_FB (1 << 12) /* fb_* valid */ +#define MULTIBOOT_INFO_FLAGS_MEM BIT(0) /* mem_* valid */ +#define MULTIBOOT_INFO_FLAGS_CMDLINE BIT(2) /* cmdline* valid */ +#define MULTIBOOT_INFO_FLAGS_MMAP BIT(6) /* mmap_* valid */ +#define MULTIBOOT_INFO_FLAGS_FB BIT(12) /* fb_* valid */ /* The only fb_type we support is RGB. No text modes and no color palettes. */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/multiboot_info.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/multiboot_info.h new file mode 100644 index 00000000..5ff7ca2c --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/x86/multiboot_info.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2019 Intel Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_ARCH_X86_MULTIBOOT_INFO_H_ +#define ZEPHYR_INCLUDE_ARCH_X86_MULTIBOOT_INFO_H_ + +#include + +/* + * Multiboot (version 1) boot information structure. + * + * Only fields/values of interest to Zephyr are enumerated + */ + +struct multiboot_info { + uint32_t flags; + uint32_t mem_lower; + uint32_t mem_upper; + uint32_t unused0; + uint32_t cmdline; + uint32_t unused1[6]; + uint32_t mmap_length; + uint32_t mmap_addr; + uint32_t unused2[9]; + uint32_t fb_addr_lo; + uint32_t fb_addr_hi; + uint32_t fb_pitch; + uint32_t fb_width; + uint32_t fb_height; + uint8_t fb_bpp; + uint8_t fb_type; + uint8_t fb_color_info[6]; +}; + +typedef struct multiboot_info multiboot_info_t; + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/xtensa/arch.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/xtensa/arch.h index c69f0835..794bd1b5 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/xtensa/arch.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/xtensa/arch.h @@ -45,6 +45,7 @@ /** * @defgroup xtensa_apis Xtensa APIs + * @ingroup arch-interface * @{ * @} * @@ -62,7 +63,7 @@ extern "C" { struct arch_mem_domain { #ifdef CONFIG_XTENSA_MMU - uint32_t *ptables __aligned(CONFIG_MMU_PAGE_SIZE); + uint32_t *ptables; uint8_t asid; bool dirty; #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/xtensa/cache.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/xtensa/cache.h index c5964c16..f090bbd1 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/xtensa/cache.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/xtensa/cache.h @@ -331,6 +331,10 @@ static inline void *arch_cache_uncached_ptr_get(void *ptr) } #endif +static ALWAYS_INLINE void arch_cache_init(void) +{ +} + #ifdef __cplusplus } /* extern "C" */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/xtensa/syscall.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/xtensa/syscall.h index cc19f23d..9fdbe2b0 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/xtensa/syscall.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/arch/xtensa/syscall.h @@ -31,10 +31,18 @@ extern "C" { #endif #ifdef CONFIG_XTENSA_SYSCALL_USE_HELPER -uintptr_t xtensa_syscall_helper(uintptr_t arg1, uintptr_t arg2, - uintptr_t arg3, uintptr_t arg4, - uintptr_t arg5, uintptr_t arg6, - uintptr_t call_id); +uintptr_t xtensa_syscall_helper_args_6(uintptr_t arg1, uintptr_t arg2, + uintptr_t arg3, uintptr_t arg4, + uintptr_t arg5, uintptr_t arg6, + uintptr_t call_id); + +uintptr_t xtensa_syscall_helper_args_5(uintptr_t arg1, uintptr_t arg2, + uintptr_t arg3, uintptr_t arg4, + uintptr_t arg5, uintptr_t call_id); + +uintptr_t xtensa_syscall_helper_args_4(uintptr_t arg1, uintptr_t arg2, + uintptr_t arg3, uintptr_t arg4, + uintptr_t call_id); #define SYSINL ALWAYS_INLINE #else @@ -50,13 +58,14 @@ uintptr_t xtensa_syscall_helper(uintptr_t arg1, uintptr_t arg2, * **/ + static SYSINL uintptr_t arch_syscall_invoke6(uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, uintptr_t arg5, uintptr_t arg6, uintptr_t call_id) { #ifdef CONFIG_XTENSA_SYSCALL_USE_HELPER - return xtensa_syscall_helper(arg1, arg2, arg3, arg4, arg5, arg6, call_id); + return xtensa_syscall_helper_args_6(arg1, arg2, arg3, arg4, arg5, arg6, call_id); #else register uintptr_t a2 __asm__("%a2") = call_id; register uintptr_t a6 __asm__("%a6") = arg1; @@ -77,11 +86,11 @@ static SYSINL uintptr_t arch_syscall_invoke6(uintptr_t arg1, uintptr_t arg2, } static SYSINL uintptr_t arch_syscall_invoke5(uintptr_t arg1, uintptr_t arg2, - uintptr_t arg3, uintptr_t arg4, - uintptr_t arg5, uintptr_t call_id) + uintptr_t arg3, uintptr_t arg4, + uintptr_t arg5, uintptr_t call_id) { #ifdef CONFIG_XTENSA_SYSCALL_USE_HELPER - return xtensa_syscall_helper(arg1, arg2, arg3, arg4, arg5, 0, call_id); + return xtensa_syscall_helper_args_5(arg1, arg2, arg3, arg4, arg5, call_id); #else register uintptr_t a2 __asm__("%a2") = call_id; register uintptr_t a6 __asm__("%a6") = arg1; @@ -101,11 +110,11 @@ static SYSINL uintptr_t arch_syscall_invoke5(uintptr_t arg1, uintptr_t arg2, } static SYSINL uintptr_t arch_syscall_invoke4(uintptr_t arg1, uintptr_t arg2, - uintptr_t arg3, uintptr_t arg4, - uintptr_t call_id) + uintptr_t arg3, uintptr_t arg4, + uintptr_t call_id) { #ifdef CONFIG_XTENSA_SYSCALL_USE_HELPER - return xtensa_syscall_helper(arg1, arg2, arg3, arg4, 0, 0, call_id); + return xtensa_syscall_helper_args_4(arg1, arg2, arg3, arg4, call_id); #else register uintptr_t a2 __asm__("%a2") = call_id; register uintptr_t a6 __asm__("%a6") = arg1; @@ -123,12 +132,9 @@ static SYSINL uintptr_t arch_syscall_invoke4(uintptr_t arg1, uintptr_t arg2, #endif /* CONFIG_XTENSA_SYSCALL_USE_HELPER */ } -static SYSINL uintptr_t arch_syscall_invoke3(uintptr_t arg1, uintptr_t arg2, - uintptr_t arg3, uintptr_t call_id) +static inline uintptr_t arch_syscall_invoke3(uintptr_t arg1, uintptr_t arg2, + uintptr_t arg3, uintptr_t call_id) { -#ifdef CONFIG_XTENSA_SYSCALL_USE_HELPER - return xtensa_syscall_helper(arg1, arg2, arg3, 0, 0, 0, call_id); -#else register uintptr_t a2 __asm__("%a2") = call_id; register uintptr_t a6 __asm__("%a6") = arg1; register uintptr_t a3 __asm__("%a3") = arg2; @@ -140,15 +146,11 @@ static SYSINL uintptr_t arch_syscall_invoke3(uintptr_t arg1, uintptr_t arg2, : "memory"); return a2; -#endif /* CONFIG_XTENSA_SYSCALL_USE_HELPER */ } -static SYSINL uintptr_t arch_syscall_invoke2(uintptr_t arg1, uintptr_t arg2, - uintptr_t call_id) +static inline uintptr_t arch_syscall_invoke2(uintptr_t arg1, uintptr_t arg2, + uintptr_t call_id) { -#ifdef CONFIG_XTENSA_SYSCALL_USE_HELPER - return xtensa_syscall_helper(arg1, arg2, 0, 0, 0, 0, call_id); -#else register uintptr_t a2 __asm__("%a2") = call_id; register uintptr_t a6 __asm__("%a6") = arg1; register uintptr_t a3 __asm__("%a3") = arg2; @@ -159,15 +161,10 @@ static SYSINL uintptr_t arch_syscall_invoke2(uintptr_t arg1, uintptr_t arg2, : "memory"); return a2; -#endif } -static SYSINL uintptr_t arch_syscall_invoke1(uintptr_t arg1, - uintptr_t call_id) +static inline uintptr_t arch_syscall_invoke1(uintptr_t arg1, uintptr_t call_id) { -#ifdef CONFIG_XTENSA_SYSCALL_USE_HELPER - return xtensa_syscall_helper(arg1, 0, 0, 0, 0, 0, call_id); -#else register uintptr_t a2 __asm__("%a2") = call_id; register uintptr_t a6 __asm__("%a6") = arg1; @@ -177,14 +174,10 @@ static SYSINL uintptr_t arch_syscall_invoke1(uintptr_t arg1, : "memory"); return a2; -#endif } -static SYSINL uintptr_t arch_syscall_invoke0(uintptr_t call_id) +static inline uintptr_t arch_syscall_invoke0(uintptr_t call_id) { -#ifdef CONFIG_XTENSA_SYSCALL_USE_HELPER - return xtensa_syscall_helper(0, 0, 0, 0, 0, 0, call_id); -#else register uintptr_t a2 __asm__("%a2") = call_id; __asm__ volatile("syscall\n\t" @@ -193,7 +186,6 @@ static SYSINL uintptr_t arch_syscall_invoke0(uintptr_t call_id) : "memory"); return a2; -#endif } /* @@ -211,7 +203,7 @@ static inline bool arch_is_user_context(void) : "=a" (thread) ); #ifdef CONFIG_THREAD_LOCAL_STORAGE - extern __thread uint32_t is_user_mode; + extern Z_THREAD_LOCAL uint32_t is_user_mode; if (!thread) { return false; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/audio/codec.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/audio/codec.h index 1f56f006..7b2c15db 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/audio/codec.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/audio/codec.h @@ -35,7 +35,9 @@ extern "C" { */ typedef enum { AUDIO_PCM_RATE_8K = 8000, /**< 8 kHz sample rate */ + AUDIO_PCM_RATE_11P025K = 11025, /**< 11.025 kHz sample rate */ AUDIO_PCM_RATE_16K = 16000, /**< 16 kHz sample rate */ + AUDIO_PCM_RATE_22P05K = 22050, /**< 22.05 kHz sample rate */ AUDIO_PCM_RATE_24K = 24000, /**< 24 kHz sample rate */ AUDIO_PCM_RATE_32K = 32000, /**< 32 kHz sample rate */ AUDIO_PCM_RATE_44P1K = 44100, /**< 44.1 kHz sample rate */ @@ -59,6 +61,10 @@ typedef enum { */ typedef enum { AUDIO_DAI_TYPE_I2S, /**< I2S Interface */ + AUDIO_DAI_TYPE_LEFT_JUSTIFIED, /**< I2S Interface, left justified */ + AUDIO_DAI_TYPE_RIGHT_JUSTIFIED, /**< I2S Interface, right justified */ + AUDIO_DAI_TYPE_PCMA, /**< PCM Interface, variant A */ + AUDIO_DAI_TYPE_PCMB, /**< PCM Interface, variant B */ AUDIO_DAI_TYPE_INVALID, /**< Other interfaces can be added here */ } audio_dai_type_t; @@ -68,6 +74,8 @@ typedef enum { typedef enum { AUDIO_PROPERTY_OUTPUT_VOLUME, /**< Output volume */ AUDIO_PROPERTY_OUTPUT_MUTE, /**< Output mute/unmute */ + AUDIO_PROPERTY_INPUT_VOLUME, /**< Input volume */ + AUDIO_PROPERTY_INPUT_MUTE /**< Input mute/unmute */ } audio_property_t; /** @@ -83,6 +91,8 @@ typedef enum { AUDIO_CHANNEL_REAR_CENTER, /**< Rear center channel */ AUDIO_CHANNEL_SIDE_LEFT, /**< Side left channel */ AUDIO_CHANNEL_SIDE_RIGHT, /**< Side right channel */ + AUDIO_CHANNEL_HEADPHONE_LEFT, /**< Headphone left */ + AUDIO_CHANNEL_HEADPHONE_RIGHT, /**< Headphone right */ AUDIO_CHANNEL_ALL, /**< All channels */ } audio_channel_t; @@ -96,6 +106,16 @@ typedef union { /* Other DAI types go here */ } audio_dai_cfg_t; +/* + * DAI Route types + */ +typedef enum { + AUDIO_ROUTE_BYPASS, + AUDIO_ROUTE_PLAYBACK, + AUDIO_ROUTE_PLAYBACK_CAPTURE, + AUDIO_ROUTE_CAPTURE, +} audio_route_t; + /** * Codec configuration parameters */ @@ -103,13 +123,14 @@ struct audio_codec_cfg { uint32_t mclk_freq; /**< MCLK input frequency in Hz */ audio_dai_type_t dai_type; /**< Digital interface type */ audio_dai_cfg_t dai_cfg; /**< DAI configuration info */ + audio_route_t dai_route; /**< Codec route type */ }; /** * Codec property values */ typedef union { - int vol; /**< Volume level in 0.5dB resolution */ + int vol; /**< Volume level (codec-specific) */ bool mute; /**< Mute if @a true, unmute if @a false */ } audio_property_value_t; @@ -160,6 +181,8 @@ struct audio_codec_api { int (*clear_errors)(const struct device *dev); int (*register_error_callback)(const struct device *dev, audio_codec_error_callback_t cb); + int (*route_input)(const struct device *dev, audio_channel_t channel, uint32_t input); + int (*route_output)(const struct device *dev, audio_channel_t channel, uint32_t output); }; /** * @endcond @@ -306,6 +329,56 @@ static inline int audio_codec_register_error_callback(const struct device *dev, return api->register_error_callback(dev, cb); } +/** + * @brief Sets up signal routing for a given input channel. + * + * Some codecs can do input routing (multiplexing) from a chosen set of + * physical inputs. This function maps a given audio (stream) channel to + * a given physical input terminal. + * + * @param dev Pointer to the audio codec device + * @param channel The channel to map + * @param input The input terminal index, codec-specific + * + * @return 0 if successful, negative errno code if failure. + */ +static inline int audio_codec_route_input(const struct device *dev, audio_channel_t channel, + uint32_t input) +{ + const struct audio_codec_api *api = (const struct audio_codec_api *)dev->api; + + if (api->route_input == NULL) { + return -ENOSYS; + } + + return api->route_input(dev, channel, input); +} + +/** + * @brief Sets up signal routing for a given output channel. + * + * Some codecs can do output routing (multiplexing) from a chosen set of + * physical output. This function maps a given audio (stream) channel to + * a given physical output terminal. + * + * @param dev Pointer to the audio codec device + * @param channel The channel to map + * @param output The output terminal index, codec-specific + * + * @return 0 if successful, negative errno code if failure. + */ +static inline int audio_codec_route_output(const struct device *dev, audio_channel_t channel, + uint32_t output) +{ + const struct audio_codec_api *api = (const struct audio_codec_api *)dev->api; + + if (api->route_output == NULL) { + return -ENOSYS; + } + + return api->route_output(dev, channel, output); +} + #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bindesc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bindesc.h index a4daaf66..88e51dbf 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bindesc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bindesc.h @@ -23,6 +23,8 @@ extern "C" { #define BINDESC_TYPE_STR 0x1 #define BINDESC_TYPE_BYTES 0x2 #define BINDESC_TYPE_DESCRIPTORS_END 0xf +/* sizeof ignores the data as it's a flexible array */ +#define BINDESC_ENTRY_HEADER_SIZE (sizeof(struct bindesc_entry)) /** * @brief Binary Descriptor Definition @@ -51,6 +53,9 @@ extern "C" { /** The app version number such as 0x10203 */ #define BINDESC_ID_APP_VERSION_NUMBER 0x804 +/** The app git reference such as "v3.3.0-18-g2c85d9224fca" */ +#define BINDESC_ID_APP_BUILD_VERSION 0x805 + /** The kernel version string such as "3.4.0" */ #define BINDESC_ID_KERNEL_VERSION_STRING 0x900 @@ -66,6 +71,9 @@ extern "C" { /** The kernel version number such as 0x30400 */ #define BINDESC_ID_KERNEL_VERSION_NUMBER 0x904 +/** The kernel git reference such as "v3.3.0-18-g2c85d9224fca" */ +#define BINDESC_ID_KERNEL_BUILD_VERSION 0x905 + /** The year the image was compiled in */ #define BINDESC_ID_BUILD_TIME_YEAR 0xa00 @@ -125,13 +133,21 @@ extern "C" { */ #define BINDESC_TAG(type, id) ((BINDESC_TYPE_##type & 0xf) << 12 | (id & 0x0fff)) +/** + * @brief Utility macro to get the type of a bindesc tag + * + * @param tag Tag to get the type of + */ +#define BINDESC_GET_TAG_TYPE(tag) ((tag >> 12) & 0xf) + /** * @endcond */ -#if !defined(_LINKER) +#if !defined(_LINKER) || defined(__DOXYGEN__) #include +#include /** * @cond INTERNAL_HIDDEN @@ -165,12 +181,15 @@ extern "C" { * @param id Unique ID of the descriptor * @param value A string value for the descriptor */ -#define BINDESC_STR_DEFINE(name, id, value) \ - __BINDESC_ENTRY_DEFINE(name) = { \ - .tag = BINDESC_TAG(STR, id), \ - .len = (uint16_t)sizeof(value), \ - .data = value, \ - } +#define BINDESC_STR_DEFINE(name, id, value) \ + __BINDESC_ENTRY_DEFINE(name) = { \ + .tag = BINDESC_TAG(STR, id), \ + .len = (uint16_t)sizeof(value), \ + .data = value, \ + }; \ + BUILD_ASSERT(sizeof(value) <= CONFIG_BINDESC_DEFINE_MAX_DATA_SIZE, \ + "Bindesc " STRINGIFY(name) " exceeded maximum size, consider reducing the" \ + " size or changing CONFIG_BINDESC_DEFINE_MAX_DATA_SIZE. ") /** * @brief Define a binary descriptor of type uint. @@ -211,12 +230,16 @@ extern "C" { * @param id Unique ID of the descriptor * @param value A uint8_t array as data for the descriptor */ -#define BINDESC_BYTES_DEFINE(name, id, value) \ - __BINDESC_ENTRY_DEFINE(name) = { \ - .tag = BINDESC_TAG(BYTES, id), \ - .len = (uint16_t)sizeof((uint8_t [])__DEBRACKET value), \ - .data = __DEBRACKET value, \ - } +#define BINDESC_BYTES_DEFINE(name, id, value) \ + __BINDESC_ENTRY_DEFINE(name) = { \ + .tag = BINDESC_TAG(BYTES, id), \ + .len = (uint16_t)sizeof((uint8_t [])__DEBRACKET value), \ + .data = __DEBRACKET value, \ + }; \ + BUILD_ASSERT(sizeof((uint8_t [])__DEBRACKET value) <= \ + CONFIG_BINDESC_DEFINE_MAX_DATA_SIZE, \ + "Bindesc " STRINGIFY(name) " exceeded maximum size, consider reducing the" \ + " size or changing CONFIG_BINDESC_DEFINE_MAX_DATA_SIZE. ") /** * @brief Get the value of a string binary descriptor @@ -265,6 +288,10 @@ extern "C" { */ #define BINDESC_GET_SIZE(name) BINDESC_NAME(name).len +/** + * @} + */ + /* * An entry of the binary descriptor header. Each descriptor is * described by one of these entries. @@ -288,6 +315,176 @@ BUILD_ASSERT(offsetof(struct bindesc_entry, tag) == 0, "Incorrect memory layout" BUILD_ASSERT(offsetof(struct bindesc_entry, len) == 2, "Incorrect memory layout"); BUILD_ASSERT(offsetof(struct bindesc_entry, data) == 4, "Incorrect memory layout"); +struct bindesc_handle { + const uint8_t *address; + enum { + BINDESC_HANDLE_TYPE_RAM, + BINDESC_HANDLE_TYPE_MEMORY_MAPPED_FLASH, + BINDESC_HANDLE_TYPE_FLASH, + } type; + size_t size_limit; +#if IS_ENABLED(CONFIG_BINDESC_READ_FLASH) + const struct device *flash_device; + uint8_t buffer[sizeof(struct bindesc_entry) + + CONFIG_BINDESC_READ_FLASH_MAX_DATA_SIZE] __aligned(BINDESC_ALIGNMENT); +#endif /* IS_ENABLED(CONFIG_BINDESC_READ_FLASH) */ +}; + +/** + * @brief Reading Binary Descriptors of other images. + * @defgroup bindesc_read Bindesc Read + * @ingroup os_services + * @{ + */ + +/** + * @brief Callback type to be called on descriptors found during a walk + * + * @param entry Current descriptor + * @param user_data The user_data given to @ref bindesc_foreach + * + * @return Any non zero value will halt the walk + */ +typedef int (*bindesc_callback_t)(const struct bindesc_entry *entry, void *user_data); + +/** + * @brief Open an image's binary descriptors for reading, from a memory mapped flash + * + * @details + * Initializes a bindesc handle for subsequent calls to bindesc API. + * Memory mapped flash is any flash that can be directly accessed by the CPU, + * without needing to use the flash API for copying the data to RAM. + * + * @param handle Bindesc handle to be given to subsequent calls + * @param offset The offset from the beginning of the flash that the bindesc magic can be found at + * + * @retval 0 On success + * @retval -ENOENT If no bindesc magic was found at the given offset + */ +int bindesc_open_memory_mapped_flash(struct bindesc_handle *handle, size_t offset); + +/** + * @brief Open an image's binary descriptors for reading, from RAM + * + * @details + * Initializes a bindesc handle for subsequent calls to bindesc API. + * It's assumed that the whole bindesc context was copied to RAM prior to calling + * this function, either by the user or by a bootloader. + * + * @note The given address must be aligned to BINDESC_ALIGNMENT + * + * @param handle Bindesc handle to be given to subsequent calls + * @param address The address that the bindesc magic can be found at + * @param max_size Maximum size of the given buffer + * + * @retval 0 On success + * @retval -ENOENT If no bindesc magic was found at the given address + * @retval -EINVAL If the given address is not aligned + */ +int bindesc_open_ram(struct bindesc_handle *handle, const uint8_t *address, size_t max_size); + +/** + * @brief Open an image's binary descriptors for reading, from flash + * + * @details + * Initializes a bindesc handle for subsequent calls to bindesc API. + * As opposed to reading bindesc from RAM or memory mapped flash, this + * backend requires reading the data from flash to an internal buffer + * using the flash API + * + * @param handle Bindesc handle to be given to subsequent calls + * @param offset The offset from the beginning of the flash that the bindesc magic can be found at + * @param flash_device Flash device to read descriptors from + * + * @retval 0 On success + * @retval -ENOENT If no bindesc magic was found at the given offset + */ +int bindesc_open_flash(struct bindesc_handle *handle, size_t offset, + const struct device *flash_device); + +/** + * @brief Walk the binary descriptors and run a user defined callback on each of them + * + * @note + * If the callback returns a non zero value, the walk stops. + * + * @param handle An initialized bindesc handle + * @param callback A user defined callback to be called on each descriptor + * @param user_data User defined data to be given to the callback + * + * @return If the walk was finished prematurely by the callback, + * return the callback's retval, zero otherwise + */ +int bindesc_foreach(struct bindesc_handle *handle, bindesc_callback_t callback, void *user_data); + +/** + * @brief Find a specific descriptor of type string + * + * @warning + * When using the flash backend, result will be invalidated by the next call to any bindesc API. + * Use the value immediately or copy it elsewhere. + * + * @param handle An initialized bindesc handle + * @param id ID to search for + * @param result Pointer to the found string + * + * @retval 0 If the descriptor was found + * @retval -ENOENT If the descriptor was not found + */ +int bindesc_find_str(struct bindesc_handle *handle, uint16_t id, const char **result); + +/** + * @brief Find a specific descriptor of type uint + * + * @warning + * When using the flash backend, result will be invalidated by the next call to any bindesc API. + * Use the value immediately or copy it elsewhere. + * + * @param handle An initialized bindesc handle + * @param id ID to search for + * @param result Pointer to the found uint + * + * @retval 0 If the descriptor was found + * @retval -ENOENT If the descriptor was not found + */ +int bindesc_find_uint(struct bindesc_handle *handle, uint16_t id, const uint32_t **result); + +/** + * @brief Find a specific descriptor of type bytes + * + * @warning + * When using the flash backend, result will be invalidated by the next call to any bindesc API. + * Use the value immediately or copy it elsewhere. + * + * @param handle An initialized bindesc handle + * @param id ID to search for + * @param result Pointer to the found bytes + * @param result_size Size of the found bytes + * + * @retval 0 If the descriptor was found + * @retval -ENOENT If the descriptor was not found + */ +int bindesc_find_bytes(struct bindesc_handle *handle, uint16_t id, const uint8_t **result, + size_t *result_size); + +/** + * @brief Get the size of an image's binary descriptors + * + * @details + * Walks the binary descriptor structure to caluculate the total size of the structure + * in bytes. This is useful, for instance, if the whole structure is to be copied to RAM. + * + * @param handle An initialized bindesc handle + * @param result Pointer to write result to + * + * @return 0 On success, negative errno otherwise + */ +int bindesc_get_size(struct bindesc_handle *handle, size_t *result); + +/** + * @} + */ + #if defined(CONFIG_BINDESC_KERNEL_VERSION_STRING) extern const struct bindesc_entry BINDESC_NAME(kernel_version_string); #endif /* defined(CONFIG_BINDESC_KERNEL_VERSION_STRING) */ @@ -308,6 +505,10 @@ extern const struct bindesc_entry BINDESC_NAME(kernel_version_patchlevel); extern const struct bindesc_entry BINDESC_NAME(kernel_version_number); #endif /* defined(CONFIG_BINDESC_KERNEL_VERSION_NUMBER) */ +#if defined(CONFIG_BINDESC_KERNEL_BUILD_VERSION) +extern const struct bindesc_entry BINDESC_NAME(kernel_build_version); +#endif /* defined(CONFIG_BINDESC_KERNEL_BUILD_VERSION) */ + #if defined(CONFIG_BINDESC_APP_VERSION_STRING) extern const struct bindesc_entry BINDESC_NAME(app_version_string); #endif /* defined(CONFIG_BINDESC_APP_VERSION_STRING) */ @@ -328,6 +529,10 @@ extern const struct bindesc_entry BINDESC_NAME(app_version_patchlevel); extern const struct bindesc_entry BINDESC_NAME(app_version_number); #endif /* defined(CONFIG_BINDESC_APP_VERSION_NUMBER) */ +#if defined(CONFIG_BINDESC_APP_BUILD_VERSION) +extern const struct bindesc_entry BINDESC_NAME(app_build_version); +#endif /* defined(CONFIG_BINDESC_APP_BUILD_VERSION) */ + #if defined(CONFIG_BINDESC_BUILD_TIME_YEAR) extern const struct bindesc_entry BINDESC_NAME(build_time_year); #endif /* defined(CONFIG_BINDESC_BUILD_TIME_YEAR) */ @@ -390,10 +595,6 @@ extern const struct bindesc_entry BINDESC_NAME(cxx_compiler_version); #endif /* !defined(_LINKER) */ -/** - * @} - */ - #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/aics.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/aics.h index 17f4fea4..9c57d90b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/aics.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/aics.h @@ -15,7 +15,7 @@ /** * @brief Audio Input Control Service (AICS) * - * @defgroup bt_gatt_aics Audio Input Control Service (AICS) + * @defgroup bt_aics Audio Input Control Service (AICS) * * @since 2.6 * @version 0.8.0 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/audio.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/audio.h index 3a826179..86b59fd7 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/audio.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/audio.h @@ -47,9 +47,8 @@ extern "C" { #define BT_AUDIO_PD_PREF_NONE 0x000000U /** Maximum presentation delay in microseconds */ #define BT_AUDIO_PD_MAX 0xFFFFFFU -/** Maximum size of the broadcast code in octets */ -#define BT_AUDIO_BROADCAST_CODE_SIZE 16 - +/** Indicates that the unicast server does not have a preference for any retransmission number */ +#define BT_AUDIO_RTN_PREF_NONE 0xFFU /** The minimum size of a Broadcast Name as defined by Bluetooth Assigned Numbers */ #define BT_AUDIO_BROADCAST_NAME_LEN_MIN 4 /** The maximum size of a Broadcast Name as defined by Bluetooth Assigned Numbers */ @@ -419,6 +418,12 @@ enum bt_audio_active_state { BT_AUDIO_ACTIVE_STATE_ENABLED = 0x01, }; +/** Assisted Listening Stream defined by the Generic Audio assigned numbers (bluetooth.com). */ +enum bt_audio_assisted_listening_stream { + /** Unspecified audio enhancement */ + BT_AUDIO_ASSISTED_LISTENING_STREAM_UNSPECIFIED = 0x00, +}; + /** * @brief Codec metadata type IDs * @@ -435,7 +440,7 @@ enum bt_audio_metadata_type { * * See the BT_AUDIO_CONTEXT_* for valid values. */ - BT_AUDIO_METADATA_TYPE_PREF_CONTEXT = 0x01, + BT_AUDIO_METADATA_TYPE_PREF_CONTEXT = 0x01, /** * @brief Streaming audio context. @@ -447,10 +452,10 @@ enum bt_audio_metadata_type { * * See the BT_AUDIO_CONTEXT_* for valid values. */ - BT_AUDIO_METADATA_TYPE_STREAM_CONTEXT = 0x02, + BT_AUDIO_METADATA_TYPE_STREAM_CONTEXT = 0x02, /** UTF-8 encoded title or summary of stream content */ - BT_AUDIO_METADATA_TYPE_PROGRAM_INFO = 0x03, + BT_AUDIO_METADATA_TYPE_PROGRAM_INFO = 0x03, /** * @brief Language @@ -458,36 +463,46 @@ enum bt_audio_metadata_type { * 3 octet lower case language code defined by ISO 639-3 * Possible values can be found at https://iso639-3.sil.org/code_tables/639/data */ - BT_AUDIO_METADATA_TYPE_LANG = 0x04, + BT_AUDIO_METADATA_TYPE_LANG = 0x04, /** Array of 8-bit CCID values */ - BT_AUDIO_METADATA_TYPE_CCID_LIST = 0x05, + BT_AUDIO_METADATA_TYPE_CCID_LIST = 0x05, /** * @brief Parental rating * * See @ref bt_audio_parental_rating for valid values. */ - BT_AUDIO_METADATA_TYPE_PARENTAL_RATING = 0x06, + BT_AUDIO_METADATA_TYPE_PARENTAL_RATING = 0x06, /** UTF-8 encoded URI for additional Program information */ - BT_AUDIO_METADATA_TYPE_PROGRAM_INFO_URI = 0x07, + BT_AUDIO_METADATA_TYPE_PROGRAM_INFO_URI = 0x07, /** * @brief Audio active state * * See @ref bt_audio_active_state for valid values. */ - BT_AUDIO_METADATA_TYPE_AUDIO_STATE = 0x08, + BT_AUDIO_METADATA_TYPE_AUDIO_STATE = 0x08, /** Broadcast Audio Immediate Rendering flag */ BT_AUDIO_METADATA_TYPE_BROADCAST_IMMEDIATE = 0x09, + /** + * @brief Assisted listening stream + * + * See @ref bt_audio_assisted_listening_stream for valid values. + */ + BT_AUDIO_METADATA_TYPE_ASSISTED_LISTENING_STREAM = 0x0A, + + /** UTF-8 encoded Broadcast name */ + BT_AUDIO_METADATA_TYPE_BROADCAST_NAME = 0x0B, + /** Extended metadata */ - BT_AUDIO_METADATA_TYPE_EXTENDED = 0xFE, + BT_AUDIO_METADATA_TYPE_EXTENDED = 0xFE, /** Vendor specific metadata */ - BT_AUDIO_METADATA_TYPE_VENDOR = 0xFF, + BT_AUDIO_METADATA_TYPE_VENDOR = 0xFF, }; /** @@ -743,13 +758,31 @@ struct bt_audio_codec_cfg { * true to continue parsing, or false to stop parsing. * @param user_data User data to be passed to the callback. * - * @retval 0 if all entries were parsed. - * @retval -EINVAL if the data is incorrectly encoded - * @retval -ECANCELED if parsing was prematurely cancelled by the callback + * @retval 0 All entries were parsed. + * @retval -EINVAL The data is incorrectly encoded + * @retval -ECANCELED Parsing was prematurely cancelled by the callback */ int bt_audio_data_parse(const uint8_t ltv[], size_t size, bool (*func)(struct bt_data *data, void *user_data), void *user_data); +/** + * @brief Get the value of a specific data type in an length-type-value data array + * + * @param[in] ltv_data The array containing the length-type-value tuples + * @param[in] size The size of @p ltv_data + * @param[in] type The type to get the value for. May be any type, but typically either + * @ref bt_audio_codec_cap_type, @ref bt_audio_codec_cfg_type or + * @ref bt_audio_metadata_type. + * @param[out] data Pointer to the data-pointer to update when item is found. + * Any found data will be little endian. + * + * @retval length The length of found @p data (may be 0). + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + */ +int bt_audio_data_get_val(const uint8_t ltv_data[], size_t size, uint8_t type, + const uint8_t **data); + /** * @brief Function to get the number of channels from the channel allocation * @@ -777,251 +810,6 @@ enum bt_audio_dir { BT_AUDIO_DIR_SOURCE = 0x02, }; -/** - * @brief Helper to declare elements of bt_audio_codec_qos - * - * @param _interval SDU interval (usec) - * @param _framing Framing - * @param _phy Target PHY - * @param _sdu Maximum SDU Size - * @param _rtn Retransmission number - * @param _latency Maximum Transport Latency (msec) - * @param _pd Presentation Delay (usec) - */ -#define BT_AUDIO_CODEC_QOS(_interval, _framing, _phy, _sdu, _rtn, _latency, _pd) \ - ((struct bt_audio_codec_qos){ \ - .interval = _interval, \ - .framing = _framing, \ - .phy = _phy, \ - .sdu = _sdu, \ - .rtn = _rtn, \ - IF_ENABLED(UTIL_OR(IS_ENABLED(CONFIG_BT_BAP_BROADCAST_SOURCE), \ - IS_ENABLED(CONFIG_BT_BAP_UNICAST)), \ - (.latency = _latency,)) \ - .pd = _pd, \ - }) - -/** @brief Codec QoS Framing */ -enum bt_audio_codec_qos_framing { - /** Packets may be framed or unframed */ - BT_AUDIO_CODEC_QOS_FRAMING_UNFRAMED = 0x00, - /** Packets are always framed */ - BT_AUDIO_CODEC_QOS_FRAMING_FRAMED = 0x01, -}; - -/** @brief Codec QoS Preferred PHY */ -enum { - /** LE 1M PHY */ - BT_AUDIO_CODEC_QOS_1M = BIT(0), - /** LE 2M PHY */ - BT_AUDIO_CODEC_QOS_2M = BIT(1), - /** LE Coded PHY */ - BT_AUDIO_CODEC_QOS_CODED = BIT(2), -}; - -/** - * @brief Helper to declare Input Unframed bt_audio_codec_qos - * - * @param _interval SDU interval (usec) - * @param _sdu Maximum SDU Size - * @param _rtn Retransmission number - * @param _latency Maximum Transport Latency (msec) - * @param _pd Presentation Delay (usec) - */ -#define BT_AUDIO_CODEC_QOS_UNFRAMED(_interval, _sdu, _rtn, _latency, _pd) \ - BT_AUDIO_CODEC_QOS(_interval, BT_AUDIO_CODEC_QOS_FRAMING_UNFRAMED, BT_AUDIO_CODEC_QOS_2M, \ - _sdu, _rtn, _latency, _pd) - -/** - * @brief Helper to declare Input Framed bt_audio_codec_qos - * - * @param _interval SDU interval (usec) - * @param _sdu Maximum SDU Size - * @param _rtn Retransmission number - * @param _latency Maximum Transport Latency (msec) - * @param _pd Presentation Delay (usec) - */ -#define BT_AUDIO_CODEC_QOS_FRAMED(_interval, _sdu, _rtn, _latency, _pd) \ - BT_AUDIO_CODEC_QOS(_interval, BT_AUDIO_CODEC_QOS_FRAMING_FRAMED, BT_AUDIO_CODEC_QOS_2M, \ - _sdu, _rtn, _latency, _pd) - -/** @brief Codec QoS structure. */ -struct bt_audio_codec_qos { - /** - * @brief Presentation Delay in microseconds - * - * This value can be changed up and until bt_bap_stream_qos() has been called. - * Once a stream has been QoS configured, modifying this field does not modify the value. - * It is however possible to modify this field and call bt_bap_stream_qos() again to update - * the value, assuming that the stream is in the correct state. - * - * Value range 0 to @ref BT_AUDIO_PD_MAX. - */ - uint32_t pd; - - /** - * @brief Connected Isochronous Group (CIG) parameters - * - * The fields in this struct affect the value sent to the controller via HCI - * when creating the CIG. Once the group has been created with - * bt_bap_unicast_group_create(), modifying these fields will not affect the group. - */ - struct { - /** QoS Framing */ - enum bt_audio_codec_qos_framing framing; - - /** - * @brief PHY - * - * Allowed values are @ref BT_AUDIO_CODEC_QOS_1M, @ref BT_AUDIO_CODEC_QOS_2M and - * @ref BT_AUDIO_CODEC_QOS_CODED. - */ - uint8_t phy; - - /** - * @brief Retransmission Number - * - * This a recommendation to the controller, and the actual retransmission number - * may be different than this. - */ - uint8_t rtn; - - /** - * @brief Maximum SDU size - * - * Value range @ref BT_ISO_MIN_SDU to @ref BT_ISO_MAX_SDU. - */ - uint16_t sdu; - -#if defined(CONFIG_BT_BAP_BROADCAST_SOURCE) || defined(CONFIG_BT_BAP_UNICAST) || \ - defined(__DOXYGEN__) - /** - * @brief Maximum Transport Latency - * - * Not used for the @kconfig{CONFIG_BT_BAP_BROADCAST_SINK} role. - */ - uint16_t latency; -#endif /* CONFIG_BT_BAP_BROADCAST_SOURCE || CONFIG_BT_BAP_UNICAST */ - - /** - * @brief SDU Interval - * - * Value range @ref BT_ISO_SDU_INTERVAL_MIN to @ref BT_ISO_SDU_INTERVAL_MAX - */ - uint32_t interval; - -#if defined(CONFIG_BT_ISO_TEST_PARAMS) || defined(__DOXYGEN__) - /** - * @brief Maximum PDU size - * - * Maximum size, in octets, of the payload from link layer to link layer. - * - * Value range @ref BT_ISO_CONNECTED_PDU_MIN to @ref BT_ISO_PDU_MAX for - * connected ISO. - * - * Value range @ref BT_ISO_BROADCAST_PDU_MIN to @ref BT_ISO_PDU_MAX for - * broadcast ISO. - */ - uint16_t max_pdu; - - /** - * @brief Burst number - * - * Value range @ref BT_ISO_BN_MIN to @ref BT_ISO_BN_MAX. - */ - uint8_t burst_number; - - /** - * @brief Number of subevents - * - * Maximum number of subevents in each CIS or BIS event. - * - * Value range @ref BT_ISO_NSE_MIN to @ref BT_ISO_NSE_MAX. - */ - uint8_t num_subevents; -#endif /* CONFIG_BT_ISO_TEST_PARAMS */ - }; -}; - -/** - * @brief Helper to declare elements of @ref bt_audio_codec_qos_pref - * - * @param _unframed_supported Unframed PDUs supported - * @param _phy Preferred Target PHY - * @param _rtn Preferred Retransmission number - * @param _latency Preferred Maximum Transport Latency (msec) - * @param _pd_min Minimum Presentation Delay (usec) - * @param _pd_max Maximum Presentation Delay (usec) - * @param _pref_pd_min Preferred Minimum Presentation Delay (usec) - * @param _pref_pd_max Preferred Maximum Presentation Delay (usec) - */ -#define BT_AUDIO_CODEC_QOS_PREF(_unframed_supported, _phy, _rtn, _latency, _pd_min, _pd_max, \ - _pref_pd_min, _pref_pd_max) \ - { \ - .unframed_supported = _unframed_supported, \ - .phy = _phy, \ - .rtn = _rtn, \ - .latency = _latency, \ - .pd_min = _pd_min, \ - .pd_max = _pd_max, \ - .pref_pd_min = _pref_pd_min, \ - .pref_pd_max = _pref_pd_max, \ - } - -/** @brief Audio Stream Quality of Service Preference structure. */ -struct bt_audio_codec_qos_pref { - /** - * @brief Unframed PDUs supported - * - * Unlike the other fields, this is not a preference but whether - * the codec supports unframed ISOAL PDUs. - */ - bool unframed_supported; - - /** Preferred PHY */ - uint8_t phy; - - /** Preferred Retransmission Number */ - uint8_t rtn; - - /** Preferred Transport Latency */ - uint16_t latency; - - /** - * @brief Minimum Presentation Delay in microseconds - * - * Unlike the other fields, this is not a preference but a minimum requirement. - * - * Value range 0 to @ref BT_AUDIO_PD_MAX, or @ref BT_AUDIO_PD_PREF_NONE - * to indicate no preference. - */ - uint32_t pd_min; - - /** - * @brief Maximum Presentation Delay - * - * Unlike the other fields, this is not a preference but a maximum requirement. - * - * Value range 0 to @ref BT_AUDIO_PD_MAX, or @ref BT_AUDIO_PD_PREF_NONE - * to indicate no preference. - */ - uint32_t pd_max; - - /** - * @brief Preferred minimum Presentation Delay - * - * Value range 0 to @ref BT_AUDIO_PD_MAX. - */ - uint32_t pref_pd_min; - - /** - * @brief Preferred maximum Presentation Delay - * - * Value range 0 to @ref BT_AUDIO_PD_MAX. - */ - uint32_t pref_pd_max; -}; - /** * @brief Audio codec Config APIs * @defgroup bt_audio_codec_cfg Codec config parsing APIs @@ -1036,8 +824,8 @@ struct bt_audio_codec_qos_pref { * * @param freq The assigned numbers frequency to convert. * - * @retval -EINVAL if arguments are invalid. - * @retval The converted frequency value in Hz. + * @retval frequency The converted frequency value in Hz. + * @retval -EINVAL Arguments are invalid. */ int bt_audio_codec_cfg_freq_to_freq_hz(enum bt_audio_codec_cfg_freq freq); @@ -1046,8 +834,8 @@ int bt_audio_codec_cfg_freq_to_freq_hz(enum bt_audio_codec_cfg_freq freq); * * @param freq_hz The frequency value to convert. * - * @retval -EINVAL if arguments are invalid. - * @retval The assigned numbers frequency (@ref bt_audio_codec_cfg_freq). + * @retval frequency The assigned numbers frequency (@ref bt_audio_codec_cfg_freq). + * @retval -EINVAL Arguments are invalid. */ int bt_audio_codec_cfg_freq_hz_to_freq(uint32_t freq_hz); @@ -1056,10 +844,10 @@ int bt_audio_codec_cfg_freq_hz_to_freq(uint32_t freq_hz); * * @param codec_cfg The codec configuration to extract data from. * - * @retval A @ref bt_audio_codec_cfg_freq value - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size or value + * @retval frequency A @ref bt_audio_codec_cfg_freq value + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size or value */ int bt_audio_codec_cfg_get_freq(const struct bt_audio_codec_cfg *codec_cfg); @@ -1069,9 +857,9 @@ int bt_audio_codec_cfg_get_freq(const struct bt_audio_codec_cfg *codec_cfg); * @param codec_cfg The codec configuration to set data for. * @param freq The assigned numbers frequency to set. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_set_freq(struct bt_audio_codec_cfg *codec_cfg, enum bt_audio_codec_cfg_freq freq); @@ -1081,8 +869,8 @@ int bt_audio_codec_cfg_set_freq(struct bt_audio_codec_cfg *codec_cfg, * * @param frame_dur The assigned numbers frame duration to convert. * - * @retval -EINVAL if arguments are invalid. - * @retval The converted frame duration value in microseconds. + * @retval duration The converted frame duration value in microseconds. + * @retval -EINVAL Arguments are invalid. */ int bt_audio_codec_cfg_frame_dur_to_frame_dur_us(enum bt_audio_codec_cfg_frame_dur frame_dur); @@ -1091,8 +879,8 @@ int bt_audio_codec_cfg_frame_dur_to_frame_dur_us(enum bt_audio_codec_cfg_frame_d * * @param frame_dur_us The frame duration in microseconds to convert. * - * @retval -EINVAL if arguments are invalid. - * @retval The assigned numbers frame duration (@ref bt_audio_codec_cfg_frame_dur). + * @retval duration The assigned numbers frame duration (@ref bt_audio_codec_cfg_frame_dur). + * @retval -EINVAL Arguments are invalid. */ int bt_audio_codec_cfg_frame_dur_us_to_frame_dur(uint32_t frame_dur_us); @@ -1101,10 +889,10 @@ int bt_audio_codec_cfg_frame_dur_us_to_frame_dur(uint32_t frame_dur_us); * * @param codec_cfg The codec configuration to extract data from. * - * @retval A @ref bt_audio_codec_cfg_frame_dur value - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size or value + * @retval frequency A @ref bt_audio_codec_cfg_frame_dur value + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size or value */ int bt_audio_codec_cfg_get_frame_dur(const struct bt_audio_codec_cfg *codec_cfg); @@ -1114,9 +902,9 @@ int bt_audio_codec_cfg_get_frame_dur(const struct bt_audio_codec_cfg *codec_cfg) * @param codec_cfg The codec configuration to set data for. * @param frame_dur The assigned numbers frame duration to set. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_set_frame_dur(struct bt_audio_codec_cfg *codec_cfg, enum bt_audio_codec_cfg_frame_dur frame_dur); @@ -1136,10 +924,10 @@ int bt_audio_codec_cfg_set_frame_dur(struct bt_audio_codec_cfg *codec_cfg, * @ref BT_AUDIO_LOCATION_MONO_AUDIO if the type is not found when @p codec_cfg.id is @ref * BT_HCI_CODING_FORMAT_LC3. * - * @retval 0 if value is found and stored in the pointer provided - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size or value + * @retval 0 Value is found and stored in the pointer provided + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size or value */ int bt_audio_codec_cfg_get_chan_allocation(const struct bt_audio_codec_cfg *codec_cfg, enum bt_audio_location *chan_allocation, @@ -1151,9 +939,9 @@ int bt_audio_codec_cfg_get_chan_allocation(const struct bt_audio_codec_cfg *code * @param codec_cfg The codec configuration to set data for. * @param chan_allocation The channel allocation to set. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_set_chan_allocation(struct bt_audio_codec_cfg *codec_cfg, enum bt_audio_location chan_allocation); @@ -1172,10 +960,10 @@ int bt_audio_codec_cfg_set_chan_allocation(struct bt_audio_codec_cfg *codec_cfg, * * @param codec_cfg The codec configuration to extract data from. * - * @retval Frame length in octets - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size or value + * @retval frame_length Frame length in octets + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size or value */ int bt_audio_codec_cfg_get_octets_per_frame(const struct bt_audio_codec_cfg *codec_cfg); @@ -1185,9 +973,9 @@ int bt_audio_codec_cfg_get_octets_per_frame(const struct bt_audio_codec_cfg *cod * @param codec_cfg The codec configuration to set data for. * @param octets_per_frame The octets per codec frame to set. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_set_octets_per_frame(struct bt_audio_codec_cfg *codec_cfg, uint16_t octets_per_frame); @@ -1207,10 +995,10 @@ int bt_audio_codec_cfg_set_octets_per_frame(struct bt_audio_codec_cfg *codec_cfg * @param fallback_to_default If true this function will return the default value of 1 * if the type is not found when @p codec_cfg.id is @ref BT_HCI_CODING_FORMAT_LC3. * - * @retval The count of codec frame blocks in each SDU. - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size or value + * @retval frame_blocks_per_sdu The count of codec frame blocks in each SDU. + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size or value */ int bt_audio_codec_cfg_get_frame_blocks_per_sdu(const struct bt_audio_codec_cfg *codec_cfg, bool fallback_to_default); @@ -1221,9 +1009,9 @@ int bt_audio_codec_cfg_get_frame_blocks_per_sdu(const struct bt_audio_codec_cfg * @param codec_cfg The codec configuration to set data for. * @param frame_blocks The frame blocks per SDU to set. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_set_frame_blocks_per_sdu(struct bt_audio_codec_cfg *codec_cfg, uint8_t frame_blocks); @@ -1235,9 +1023,9 @@ int bt_audio_codec_cfg_set_frame_blocks_per_sdu(struct bt_audio_codec_cfg *codec * @param[in] type The type id to look for * @param[out] data Pointer to the data-pointer to update when item is found * - * @retval Length of found @p data (may be 0) - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found + * @retval len Length of found @p data (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found */ int bt_audio_codec_cfg_get_val(const struct bt_audio_codec_cfg *codec_cfg, enum bt_audio_codec_cfg_type type, const uint8_t **data); @@ -1250,9 +1038,9 @@ int bt_audio_codec_cfg_get_val(const struct bt_audio_codec_cfg *codec_cfg, * @param data Pointer to the data-pointer to set * @param data_len Length of @p data * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_set_val(struct bt_audio_codec_cfg *codec_cfg, enum bt_audio_codec_cfg_type type, const uint8_t *data, @@ -1266,8 +1054,8 @@ int bt_audio_codec_cfg_set_val(struct bt_audio_codec_cfg *codec_cfg, * @param codec_cfg The codec data to set the value in. * @param type The type id to unset. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid */ int bt_audio_codec_cfg_unset_val(struct bt_audio_codec_cfg *codec_cfg, enum bt_audio_codec_cfg_type type); @@ -1280,9 +1068,9 @@ int bt_audio_codec_cfg_unset_val(struct bt_audio_codec_cfg *codec_cfg, * @param[in] type The type id to look for * @param[out] data Pointer to the data-pointer to update when item is found * - * @retval Length of found @p data (may be 0) - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found + * @retval len Length of found @p data (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found */ int bt_audio_codec_cfg_meta_get_val(const struct bt_audio_codec_cfg *codec_cfg, uint8_t type, const uint8_t **data); @@ -1295,9 +1083,9 @@ int bt_audio_codec_cfg_meta_get_val(const struct bt_audio_codec_cfg *codec_cfg, * @param data Pointer to the data-pointer to set. * @param data_len Length of @p data. * - * @retval The meta_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval meta_len The @p codec_cfg.meta_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_meta_set_val(struct bt_audio_codec_cfg *codec_cfg, enum bt_audio_metadata_type type, const uint8_t *data, @@ -1311,8 +1099,8 @@ int bt_audio_codec_cfg_meta_set_val(struct bt_audio_codec_cfg *codec_cfg, * @param codec_cfg The codec data to set the value in. * @param type The type id to unset. * - * @retval The meta_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid + * @retval meta_len The of @p codec_cfg.meta_len success + * @retval -EINVAL Arguments are invalid */ int bt_audio_codec_cfg_meta_unset_val(struct bt_audio_codec_cfg *codec_cfg, enum bt_audio_metadata_type type); @@ -1326,10 +1114,10 @@ int bt_audio_codec_cfg_meta_unset_val(struct bt_audio_codec_cfg *codec_cfg, * @ref BT_AUDIO_CONTEXT_TYPE_UNSPECIFIED if the type is not found when @p codec_cfg.id is * @ref BT_HCI_CODING_FORMAT_LC3. * - * @retval The preferred context type if positive or 0 - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size + * @retval context The preferred context type if positive or 0 + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size */ int bt_audio_codec_cfg_meta_get_pref_context(const struct bt_audio_codec_cfg *codec_cfg, bool fallback_to_default); @@ -1340,9 +1128,9 @@ int bt_audio_codec_cfg_meta_get_pref_context(const struct bt_audio_codec_cfg *co * @param codec_cfg The codec configuration to set data for. * @param ctx The preferred context to set. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_meta_set_pref_context(struct bt_audio_codec_cfg *codec_cfg, enum bt_audio_context ctx); @@ -1354,10 +1142,10 @@ int bt_audio_codec_cfg_meta_set_pref_context(struct bt_audio_codec_cfg *codec_cf * * @param codec_cfg The codec data to search in. * - * @retval The stream context type if positive or 0 - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size + * @retval context The stream context type if positive or 0 + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size */ int bt_audio_codec_cfg_meta_get_stream_context(const struct bt_audio_codec_cfg *codec_cfg); @@ -1367,9 +1155,9 @@ int bt_audio_codec_cfg_meta_get_stream_context(const struct bt_audio_codec_cfg * * @param codec_cfg The codec configuration to set data for. * @param ctx The stream context to set. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_meta_set_stream_context(struct bt_audio_codec_cfg *codec_cfg, enum bt_audio_context ctx); @@ -1382,9 +1170,9 @@ int bt_audio_codec_cfg_meta_set_stream_context(struct bt_audio_codec_cfg *codec_ * @param[in] codec_cfg The codec data to search in. * @param[out] program_info Pointer to the UTF-8 formatted program info. * - * @retval The length of the @p program_info (may be 0) - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found + * @retval len The length of the @p program_info (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found */ int bt_audio_codec_cfg_meta_get_program_info(const struct bt_audio_codec_cfg *codec_cfg, const uint8_t **program_info); @@ -1396,9 +1184,9 @@ int bt_audio_codec_cfg_meta_get_program_info(const struct bt_audio_codec_cfg *co * @param program_info The program info to set. * @param program_info_len The length of @p program_info. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_meta_set_program_info(struct bt_audio_codec_cfg *codec_cfg, const uint8_t *program_info, size_t program_info_len); @@ -1411,10 +1199,10 @@ int bt_audio_codec_cfg_meta_set_program_info(struct bt_audio_codec_cfg *codec_cf * @param[in] codec_cfg The codec data to search in. * @param[out] lang Pointer to the language bytes (of length BT_AUDIO_LANG_SIZE) * - * @retval The language if positive or 0 - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size + * @retval 0 Success + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size */ int bt_audio_codec_cfg_meta_get_lang(const struct bt_audio_codec_cfg *codec_cfg, const uint8_t **lang); @@ -1425,9 +1213,9 @@ int bt_audio_codec_cfg_meta_get_lang(const struct bt_audio_codec_cfg *codec_cfg, * @param codec_cfg The codec configuration to set data for. * @param lang The 24-bit language to set. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_meta_set_lang(struct bt_audio_codec_cfg *codec_cfg, const uint8_t lang[BT_AUDIO_LANG_SIZE]); @@ -1440,9 +1228,9 @@ int bt_audio_codec_cfg_meta_set_lang(struct bt_audio_codec_cfg *codec_cfg, * @param[in] codec_cfg The codec data to search in. * @param[out] ccid_list Pointer to the array containing 8-bit CCIDs. * - * @retval The length of the @p ccid_list (may be 0) - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found + * @retval len The length of the @p ccid_list (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found */ int bt_audio_codec_cfg_meta_get_ccid_list(const struct bt_audio_codec_cfg *codec_cfg, const uint8_t **ccid_list); @@ -1454,9 +1242,9 @@ int bt_audio_codec_cfg_meta_get_ccid_list(const struct bt_audio_codec_cfg *codec * @param ccid_list The program info to set. * @param ccid_list_len The length of @p ccid_list. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_meta_set_ccid_list(struct bt_audio_codec_cfg *codec_cfg, const uint8_t *ccid_list, size_t ccid_list_len); @@ -1468,10 +1256,10 @@ int bt_audio_codec_cfg_meta_set_ccid_list(struct bt_audio_codec_cfg *codec_cfg, * * @param codec_cfg The codec data to search in. * - * @retval The parental rating if positive or 0 - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size + * @retval parental_rating The parental rating if positive or 0 + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size */ int bt_audio_codec_cfg_meta_get_parental_rating(const struct bt_audio_codec_cfg *codec_cfg); @@ -1481,9 +1269,9 @@ int bt_audio_codec_cfg_meta_get_parental_rating(const struct bt_audio_codec_cfg * @param codec_cfg The codec configuration to set data for. * @param parental_rating The parental rating to set. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_meta_set_parental_rating(struct bt_audio_codec_cfg *codec_cfg, enum bt_audio_parental_rating parental_rating); @@ -1496,9 +1284,9 @@ int bt_audio_codec_cfg_meta_set_parental_rating(struct bt_audio_codec_cfg *codec * @param[in] codec_cfg The codec data to search in. * @param[out] program_info_uri Pointer to the UTF-8 formatted program info URI. * - * @retval The length of the @p ccid_list (may be 0) - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found + * @retval len The length of the @p program_info_uri (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found */ int bt_audio_codec_cfg_meta_get_program_info_uri(const struct bt_audio_codec_cfg *codec_cfg, const uint8_t **program_info_uri); @@ -1510,9 +1298,9 @@ int bt_audio_codec_cfg_meta_get_program_info_uri(const struct bt_audio_codec_cfg * @param program_info_uri The program info URI to set. * @param program_info_uri_len The length of @p program_info_uri. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_meta_set_program_info_uri(struct bt_audio_codec_cfg *codec_cfg, const uint8_t *program_info_uri, @@ -1525,10 +1313,10 @@ int bt_audio_codec_cfg_meta_set_program_info_uri(struct bt_audio_codec_cfg *code * * @param codec_cfg The codec data to search in. * - * @retval The preferred context type if positive or 0 - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size + * @retval context The preferred context type if positive or 0 + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size */ int bt_audio_codec_cfg_meta_get_audio_active_state(const struct bt_audio_codec_cfg *codec_cfg); @@ -1538,9 +1326,9 @@ int bt_audio_codec_cfg_meta_get_audio_active_state(const struct bt_audio_codec_c * @param codec_cfg The codec configuration to set data for. * @param state The audio active state to set. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_meta_set_audio_active_state(struct bt_audio_codec_cfg *codec_cfg, enum bt_audio_active_state state); @@ -1552,9 +1340,9 @@ int bt_audio_codec_cfg_meta_set_audio_active_state(struct bt_audio_codec_cfg *co * * @param codec_cfg The codec data to search in. * - * @retval 0 if the flag was found - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not the flag was not found + * @retval 0 The flag was found + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA The flag was not found */ int bt_audio_codec_cfg_meta_get_bcast_audio_immediate_rend_flag( const struct bt_audio_codec_cfg *codec_cfg); @@ -1564,13 +1352,71 @@ int bt_audio_codec_cfg_meta_get_bcast_audio_immediate_rend_flag( * * @param codec_cfg The codec configuration to set data for. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_meta_set_bcast_audio_immediate_rend_flag( struct bt_audio_codec_cfg *codec_cfg); +/** + * @brief Extract assisted listening stream + * + * See @ref BT_AUDIO_METADATA_TYPE_ASSISTED_LISTENING_STREAM for more information about this value. + * + * @param codec_cfg The codec data to search in. + * + * @retval value The assisted listening stream value if positive or 0 + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size + */ +int bt_audio_codec_cfg_meta_get_assisted_listening_stream( + const struct bt_audio_codec_cfg *codec_cfg); + +/** + * @brief Set the assisted listening stream value of a codec configuration metadata. + * + * @param codec_cfg The codec configuration to set data for. + * @param val The assisted listening stream value to set. + * + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory + */ +int bt_audio_codec_cfg_meta_set_assisted_listening_stream( + struct bt_audio_codec_cfg *codec_cfg, enum bt_audio_assisted_listening_stream val); + +/** + * @brief Extract broadcast name + * + * See @ref BT_AUDIO_METADATA_TYPE_BROADCAST_NAME for more information about this value. + * + * @param[in] codec_cfg The codec data to search in. + * @param[out] broadcast_name Pointer to the UTF-8 formatted broadcast name. + * + * @retval length The length of the @p broadcast_name (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + */ +int bt_audio_codec_cfg_meta_get_broadcast_name(const struct bt_audio_codec_cfg *codec_cfg, + const uint8_t **broadcast_name); + +/** + * @brief Set the broadcast name of a codec configuration metadata. + * + * @param codec_cfg The codec configuration to set data for. + * @param broadcast_name The broadcast name to set. + * @param broadcast_name_len The length of @p broadcast_name. + * + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory + */ +int bt_audio_codec_cfg_meta_set_broadcast_name(struct bt_audio_codec_cfg *codec_cfg, + const uint8_t *broadcast_name, + size_t broadcast_name_len); + /** * @brief Extract extended metadata * @@ -1579,9 +1425,9 @@ int bt_audio_codec_cfg_meta_set_bcast_audio_immediate_rend_flag( * @param[in] codec_cfg The codec data to search in. * @param[out] extended_meta Pointer to the extended metadata. * - * @retval The length of the @p ccid_list (may be 0) - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found + * @retval len The length of the @p extended_meta (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found */ int bt_audio_codec_cfg_meta_get_extended(const struct bt_audio_codec_cfg *codec_cfg, const uint8_t **extended_meta); @@ -1593,9 +1439,9 @@ int bt_audio_codec_cfg_meta_get_extended(const struct bt_audio_codec_cfg *codec_ * @param extended_meta The extended metadata to set. * @param extended_meta_len The length of @p extended_meta. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_meta_set_extended(struct bt_audio_codec_cfg *codec_cfg, const uint8_t *extended_meta, size_t extended_meta_len); @@ -1608,9 +1454,9 @@ int bt_audio_codec_cfg_meta_set_extended(struct bt_audio_codec_cfg *codec_cfg, * @param[in] codec_cfg The codec data to search in. * @param[out] vendor_meta Pointer to the vendor specific metadata. * - * @retval The length of the @p ccid_list (may be 0) - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found + * @retval len The length of the @p vendor_meta (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found */ int bt_audio_codec_cfg_meta_get_vendor(const struct bt_audio_codec_cfg *codec_cfg, const uint8_t **vendor_meta); @@ -1622,9 +1468,9 @@ int bt_audio_codec_cfg_meta_get_vendor(const struct bt_audio_codec_cfg *codec_cf * @param vendor_meta The vendor specific metadata to set. * @param vendor_meta_len The length of @p vendor_meta. * - * @retval The data_len of @p codec_cfg on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cfg.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cfg_meta_set_vendor(struct bt_audio_codec_cfg *codec_cfg, const uint8_t *vendor_meta, size_t vendor_meta_len); @@ -1647,9 +1493,9 @@ int bt_audio_codec_cfg_meta_set_vendor(struct bt_audio_codec_cfg *codec_cfg, * @param[in] type The type id to look for * @param[out] data Pointer to the data-pointer to update when item is found * - * @retval Length of found @p data (may be 0) - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found + * @retval len Length of found @p data (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found */ int bt_audio_codec_cap_get_val(const struct bt_audio_codec_cap *codec_cap, enum bt_audio_codec_cap_type type, const uint8_t **data); @@ -1662,9 +1508,9 @@ int bt_audio_codec_cap_get_val(const struct bt_audio_codec_cap *codec_cap, * @param data Pointer to the data-pointer to set * @param data_len Length of @p data * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_set_val(struct bt_audio_codec_cap *codec_cap, enum bt_audio_codec_cap_type type, const uint8_t *data, @@ -1678,8 +1524,8 @@ int bt_audio_codec_cap_set_val(struct bt_audio_codec_cap *codec_cap, * @param codec_cap The codec data to set the value in. * @param type The type id to unset. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid */ int bt_audio_codec_cap_unset_val(struct bt_audio_codec_cap *codec_cap, enum bt_audio_codec_cap_type type); @@ -1689,10 +1535,11 @@ int bt_audio_codec_cap_unset_val(struct bt_audio_codec_cap *codec_cap, * * @param codec_cap The codec capabilities to extract data from. * - * @retval Bitfield of supported frequencies (@ref bt_audio_codec_cap_freq) if 0 or positive - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size or value + * @retval frequencies Bitfield of supported frequencies (@ref bt_audio_codec_cap_freq) if 0 or + * positive + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size or value */ int bt_audio_codec_cap_get_freq(const struct bt_audio_codec_cap *codec_cap); @@ -1702,9 +1549,9 @@ int bt_audio_codec_cap_get_freq(const struct bt_audio_codec_cap *codec_cap); * @param codec_cap The codec capabilities to set data for. * @param freq The supported frequencies to set. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_set_freq(struct bt_audio_codec_cap *codec_cap, enum bt_audio_codec_cap_freq freq); @@ -1714,10 +1561,10 @@ int bt_audio_codec_cap_set_freq(struct bt_audio_codec_cap *codec_cap, * * @param codec_cap The codec capabilities to extract data from. * - * @retval Bitfield of supported frame durations if 0 or positive - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size or value + * @retval durations Bitfield of supported frame durations if 0 or positive + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size or value */ int bt_audio_codec_cap_get_frame_dur(const struct bt_audio_codec_cap *codec_cap); @@ -1727,9 +1574,9 @@ int bt_audio_codec_cap_get_frame_dur(const struct bt_audio_codec_cap *codec_cap) * @param codec_cap The codec capabilities to set data for. * @param frame_dur The frame duration to set. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_set_frame_dur(struct bt_audio_codec_cap *codec_cap, enum bt_audio_codec_cap_frame_dur frame_dur); @@ -1741,10 +1588,10 @@ int bt_audio_codec_cap_set_frame_dur(struct bt_audio_codec_cap *codec_cap, * @param fallback_to_default If true this function will provide the default value of 1 * if the type is not found when @p codec_cap.id is @ref BT_HCI_CODING_FORMAT_LC3. * - * @retval Number of supported channel counts if 0 or positive - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size or value + * @retval channel_counts Number of supported channel counts if 0 or positive + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size or value */ int bt_audio_codec_cap_get_supported_audio_chan_counts(const struct bt_audio_codec_cap *codec_cap, bool fallback_to_default); @@ -1755,9 +1602,9 @@ int bt_audio_codec_cap_get_supported_audio_chan_counts(const struct bt_audio_cod * @param codec_cap The codec capabilities to set data for. * @param chan_count The channel count frequency to set. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_set_supported_audio_chan_counts( struct bt_audio_codec_cap *codec_cap, enum bt_audio_codec_cap_chan_count chan_count); @@ -1768,10 +1615,10 @@ int bt_audio_codec_cap_set_supported_audio_chan_counts( * @param[in] codec_cap The codec capabilities to extract data from. * @param[out] codec_frame Struct to place the resulting values in * - * @retval 0 on success - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size or value + * @retval 0 Success + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size or value */ int bt_audio_codec_cap_get_octets_per_frame( const struct bt_audio_codec_cap *codec_cap, @@ -1783,9 +1630,9 @@ int bt_audio_codec_cap_get_octets_per_frame( * @param codec_cap The codec capabilities to set data for. * @param codec_frame The octets per codec frame to set. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_set_octets_per_frame( struct bt_audio_codec_cap *codec_cap, @@ -1798,10 +1645,10 @@ int bt_audio_codec_cap_set_octets_per_frame( * @param fallback_to_default If true this function will provide the default value of 1 * if the type is not found when @p codec_cap.id is @ref BT_HCI_CODING_FORMAT_LC3. * - * @retval Maximum number of codec frames per SDU supported - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size or value + * @retval codec_frames_per_sdu Maximum number of codec frames per SDU supported + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size or value */ int bt_audio_codec_cap_get_max_codec_frames_per_sdu(const struct bt_audio_codec_cap *codec_cap, bool fallback_to_default); @@ -1812,9 +1659,9 @@ int bt_audio_codec_cap_get_max_codec_frames_per_sdu(const struct bt_audio_codec_ * @param codec_cap The codec capabilities to set data for. * @param codec_frames_per_sdu The maximum codec frames per SDU to set. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_set_max_codec_frames_per_sdu(struct bt_audio_codec_cap *codec_cap, uint8_t codec_frames_per_sdu); @@ -1826,9 +1673,9 @@ int bt_audio_codec_cap_set_max_codec_frames_per_sdu(struct bt_audio_codec_cap *c * @param[in] type The type id to look for * @param[out] data Pointer to the data-pointer to update when item is found * - * @retval Length of found @p data (may be 0) - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found + * @retval len Length of found @p data (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found */ int bt_audio_codec_cap_meta_get_val(const struct bt_audio_codec_cap *codec_cap, uint8_t type, const uint8_t **data); @@ -1841,9 +1688,9 @@ int bt_audio_codec_cap_meta_get_val(const struct bt_audio_codec_cap *codec_cap, * @param data Pointer to the data-pointer to set. * @param data_len Length of @p data. * - * @retval The meta_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval meta_len The @p codec_cap.meta_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_meta_set_val(struct bt_audio_codec_cap *codec_cap, enum bt_audio_metadata_type type, const uint8_t *data, @@ -1857,8 +1704,8 @@ int bt_audio_codec_cap_meta_set_val(struct bt_audio_codec_cap *codec_cap, * @param codec_cap The codec data to set the value in. * @param type The type id to unset. * - * @retval The meta_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid + * @retval meta_len The of @p codec_cap.meta_len on success + * @retval -EINVAL Arguments are invalid */ int bt_audio_codec_cap_meta_unset_val(struct bt_audio_codec_cap *codec_cap, enum bt_audio_metadata_type type); @@ -1871,9 +1718,9 @@ int bt_audio_codec_cap_meta_unset_val(struct bt_audio_codec_cap *codec_cap, * @param codec_cap The codec data to search in. * * @retval The preferred context type if positive or 0 - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size */ int bt_audio_codec_cap_meta_get_pref_context(const struct bt_audio_codec_cap *codec_cap); @@ -1883,9 +1730,9 @@ int bt_audio_codec_cap_meta_get_pref_context(const struct bt_audio_codec_cap *co * @param codec_cap The codec capability to set data for. * @param ctx The preferred context to set. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_meta_set_pref_context(struct bt_audio_codec_cap *codec_cap, enum bt_audio_context ctx); @@ -1897,10 +1744,10 @@ int bt_audio_codec_cap_meta_set_pref_context(struct bt_audio_codec_cap *codec_ca * * @param codec_cap The codec data to search in. * - * @retval The stream context type if positive or 0 - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size + * @retval context The stream context type if positive or 0 + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size */ int bt_audio_codec_cap_meta_get_stream_context(const struct bt_audio_codec_cap *codec_cap); @@ -1910,9 +1757,9 @@ int bt_audio_codec_cap_meta_get_stream_context(const struct bt_audio_codec_cap * * @param codec_cap The codec capability to set data for. * @param ctx The stream context to set. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_meta_set_stream_context(struct bt_audio_codec_cap *codec_cap, enum bt_audio_context ctx); @@ -1925,9 +1772,9 @@ int bt_audio_codec_cap_meta_set_stream_context(struct bt_audio_codec_cap *codec_ * @param[in] codec_cap The codec data to search in. * @param[out] program_info Pointer to the UTF-8 formatted program info. * - * @retval The length of the @p program_info (may be 0) - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found + * @retval len The length of the @p program_info (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found */ int bt_audio_codec_cap_meta_get_program_info(const struct bt_audio_codec_cap *codec_cap, const uint8_t **program_info); @@ -1939,9 +1786,9 @@ int bt_audio_codec_cap_meta_get_program_info(const struct bt_audio_codec_cap *co * @param program_info The program info to set. * @param program_info_len The length of @p program_info. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_meta_set_program_info(struct bt_audio_codec_cap *codec_cap, const uint8_t *program_info, size_t program_info_len); @@ -1954,10 +1801,10 @@ int bt_audio_codec_cap_meta_set_program_info(struct bt_audio_codec_cap *codec_ca * @param[in] codec_cap The codec data to search in. * @param[out] lang Pointer to the language bytes (of length BT_AUDIO_LANG_SIZE) * - * @retval 0 On success - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size + * @retval 0 Success + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size */ int bt_audio_codec_cap_meta_get_lang(const struct bt_audio_codec_cap *codec_cap, const uint8_t **lang); @@ -1968,9 +1815,9 @@ int bt_audio_codec_cap_meta_get_lang(const struct bt_audio_codec_cap *codec_cap, * @param codec_cap The codec capability to set data for. * @param lang The 24-bit language to set. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_meta_set_lang(struct bt_audio_codec_cap *codec_cap, const uint8_t lang[BT_AUDIO_LANG_SIZE]); @@ -1983,9 +1830,9 @@ int bt_audio_codec_cap_meta_set_lang(struct bt_audio_codec_cap *codec_cap, * @param[in] codec_cap The codec data to search in. * @param[out] ccid_list Pointer to the array containing 8-bit CCIDs. * - * @retval The length of the @p ccid_list (may be 0) - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found + * @retval len The length of the @p ccid_list (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found */ int bt_audio_codec_cap_meta_get_ccid_list(const struct bt_audio_codec_cap *codec_cap, const uint8_t **ccid_list); @@ -1997,9 +1844,9 @@ int bt_audio_codec_cap_meta_get_ccid_list(const struct bt_audio_codec_cap *codec * @param ccid_list The program info to set. * @param ccid_list_len The length of @p ccid_list. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_meta_set_ccid_list(struct bt_audio_codec_cap *codec_cap, const uint8_t *ccid_list, size_t ccid_list_len); @@ -2012,9 +1859,9 @@ int bt_audio_codec_cap_meta_set_ccid_list(struct bt_audio_codec_cap *codec_cap, * @param codec_cap The codec data to search in. * * @retval The parental rating if positive or 0 - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size */ int bt_audio_codec_cap_meta_get_parental_rating(const struct bt_audio_codec_cap *codec_cap); @@ -2024,9 +1871,9 @@ int bt_audio_codec_cap_meta_get_parental_rating(const struct bt_audio_codec_cap * @param codec_cap The codec capability to set data for. * @param parental_rating The parental rating to set. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_meta_set_parental_rating(struct bt_audio_codec_cap *codec_cap, enum bt_audio_parental_rating parental_rating); @@ -2039,9 +1886,9 @@ int bt_audio_codec_cap_meta_set_parental_rating(struct bt_audio_codec_cap *codec * @param[in] codec_cap The codec data to search in. * @param[out] program_info_uri Pointer to the UTF-8 formatted program info URI. * - * @retval The length of the @p ccid_list (may be 0) - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found + * @retval len The length of the @p program_info_uri (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found */ int bt_audio_codec_cap_meta_get_program_info_uri(const struct bt_audio_codec_cap *codec_cap, const uint8_t **program_info_uri); @@ -2053,9 +1900,9 @@ int bt_audio_codec_cap_meta_get_program_info_uri(const struct bt_audio_codec_cap * @param program_info_uri The program info URI to set. * @param program_info_uri_len The length of @p program_info_uri. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_meta_set_program_info_uri(struct bt_audio_codec_cap *codec_cap, const uint8_t *program_info_uri, @@ -2068,10 +1915,10 @@ int bt_audio_codec_cap_meta_set_program_info_uri(struct bt_audio_codec_cap *code * * @param codec_cap The codec data to search in. * - * @retval The preferred context type if positive or 0 - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found - * @retval -EBADMSG if found value has invalid size + * @retval context The preferred context type if positive or 0 + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size */ int bt_audio_codec_cap_meta_get_audio_active_state(const struct bt_audio_codec_cap *codec_cap); @@ -2081,9 +1928,9 @@ int bt_audio_codec_cap_meta_get_audio_active_state(const struct bt_audio_codec_c * @param codec_cap The codec capability to set data for. * @param state The audio active state to set. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_meta_set_audio_active_state(struct bt_audio_codec_cap *codec_cap, enum bt_audio_active_state state); @@ -2095,9 +1942,9 @@ int bt_audio_codec_cap_meta_set_audio_active_state(struct bt_audio_codec_cap *co * * @param codec_cap The codec data to search in. * - * @retval 0 if the flag was found - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not the flag was not found + * @retval 0 The flag was found + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA The flag was not found */ int bt_audio_codec_cap_meta_get_bcast_audio_immediate_rend_flag( const struct bt_audio_codec_cap *codec_cap); @@ -2107,13 +1954,70 @@ int bt_audio_codec_cap_meta_get_bcast_audio_immediate_rend_flag( * * @param codec_cap The codec capability to set data for. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_meta_set_bcast_audio_immediate_rend_flag( struct bt_audio_codec_cap *codec_cap); +/** + * @brief Extract assisted listening stream + * + * See @ref BT_AUDIO_METADATA_TYPE_ASSISTED_LISTENING_STREAM for more information about this value. + * + * @param codec_cap The codec data to search in. + * + * @retval value The assisted listening stream value if positive or 0 + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + * @retval -EBADMSG The found value has invalid size + */ +int bt_audio_codec_cap_meta_get_assisted_listening_stream( + const struct bt_audio_codec_cap *codec_cap); + +/** + * @brief Set the assisted listening stream value of a codec capability metadata. + * + * @param codec_cap The codec capability to set data for. + * @param val The assisted listening stream value to set. + * + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory + */ +int bt_audio_codec_cap_meta_set_assisted_listening_stream( + struct bt_audio_codec_cap *codec_cap, enum bt_audio_assisted_listening_stream val); + +/** + * @brief Extract broadcast name + * + * See @ref BT_AUDIO_METADATA_TYPE_BROADCAST_NAME for more information about this value. + * + * @param[in] codec_cap The codec data to search in. + * @param[out] broadcast_name Pointer to the UTF-8 formatted broadcast name. + * + * @retval length The length of the @p broadcast_name (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found + */ +int bt_audio_codec_cap_meta_get_broadcast_name(const struct bt_audio_codec_cap *codec_cap, + const uint8_t **broadcast_name); + +/** + * @brief Set the broadcast name of a codec capability metadata. + * + * @param codec_cap The codec capability to set data for. + * @param broadcast_name The broadcast name to set. + * @param broadcast_name_len The length of @p broadcast_name. + * + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory + */ +int bt_audio_codec_cap_meta_set_broadcast_name(struct bt_audio_codec_cap *codec_cap, + const uint8_t *broadcast_name, + size_t broadcast_name_len); /** * @brief Extract extended metadata * @@ -2122,9 +2026,9 @@ int bt_audio_codec_cap_meta_set_bcast_audio_immediate_rend_flag( * @param[in] codec_cap The codec data to search in. * @param[out] extended_meta Pointer to the extended metadata. * - * @retval The length of the @p ccid_list (may be 0) - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found + * @retval len The length of the @p extended_meta (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found */ int bt_audio_codec_cap_meta_get_extended(const struct bt_audio_codec_cap *codec_cap, const uint8_t **extended_meta); @@ -2136,9 +2040,9 @@ int bt_audio_codec_cap_meta_get_extended(const struct bt_audio_codec_cap *codec_ * @param extended_meta The extended metadata to set. * @param extended_meta_len The length of @p extended_meta. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_meta_set_extended(struct bt_audio_codec_cap *codec_cap, const uint8_t *extended_meta, size_t extended_meta_len); @@ -2151,9 +2055,9 @@ int bt_audio_codec_cap_meta_set_extended(struct bt_audio_codec_cap *codec_cap, * @param[in] codec_cap The codec data to search in. * @param[out] vendor_meta Pointer to the vendor specific metadata. * - * @retval The length of the @p ccid_list (may be 0) - * @retval -EINVAL if arguments are invalid - * @retval -ENODATA if not found + * @retval len The length of the @p vendor_meta (may be 0) + * @retval -EINVAL Arguments are invalid + * @retval -ENODATA Data not found */ int bt_audio_codec_cap_meta_get_vendor(const struct bt_audio_codec_cap *codec_cap, const uint8_t **vendor_meta); @@ -2165,15 +2069,312 @@ int bt_audio_codec_cap_meta_get_vendor(const struct bt_audio_codec_cap *codec_ca * @param vendor_meta The vendor specific metadata to set. * @param vendor_meta_len The length of @p vendor_meta. * - * @retval The data_len of @p codec_cap on success - * @retval -EINVAL if arguments are invalid - * @retval -ENOMEM if the new value could not set or added due to memory + * @retval data_len The @p codec_cap.data_len on success + * @retval -EINVAL Arguments are invalid + * @retval -ENOMEM The new value could not be set or added due to lack of memory */ int bt_audio_codec_cap_meta_set_vendor(struct bt_audio_codec_cap *codec_cap, const uint8_t *vendor_meta, size_t vendor_meta_len); /** @} */ /* End of bt_audio_codec_cap */ +/** + * @brief Assigned numbers to string API + * @defgroup bt_audio_to_str Assigned numbers to string API + * + * Functions to return string representation of Bluetooth Audio assigned number values. + * + * @{ + */ + +/** + * @brief Returns a string representation of a specific @ref bt_audio_context bit + * + * If @p context contains multiple bits, it will return "Unknown context" + * + * @param context A single context bit + * + * @return String representation of the supplied bit + */ +static inline char *bt_audio_context_bit_to_str(enum bt_audio_context context) +{ + switch (context) { + case BT_AUDIO_CONTEXT_TYPE_PROHIBITED: + return "Prohibited"; + case BT_AUDIO_CONTEXT_TYPE_UNSPECIFIED: + return "Unspecified"; + case BT_AUDIO_CONTEXT_TYPE_CONVERSATIONAL: + return "Conversational"; + case BT_AUDIO_CONTEXT_TYPE_MEDIA: + return "Media"; + case BT_AUDIO_CONTEXT_TYPE_GAME: + return "Game"; + case BT_AUDIO_CONTEXT_TYPE_INSTRUCTIONAL: + return "Instructional"; + case BT_AUDIO_CONTEXT_TYPE_VOICE_ASSISTANTS: + return "Voice assistant"; + case BT_AUDIO_CONTEXT_TYPE_LIVE: + return "Live"; + case BT_AUDIO_CONTEXT_TYPE_SOUND_EFFECTS: + return "Sound effects"; + case BT_AUDIO_CONTEXT_TYPE_NOTIFICATIONS: + return "Notifications"; + case BT_AUDIO_CONTEXT_TYPE_RINGTONE: + return "Ringtone"; + case BT_AUDIO_CONTEXT_TYPE_ALERTS: + return "Alerts"; + case BT_AUDIO_CONTEXT_TYPE_EMERGENCY_ALARM: + return "Emergency alarm"; + default: + return "Unknown context"; + } +} + +/** + * @brief Returns a string representation of a @ref bt_audio_parental_rating value + * + * @param parental_rating The parental rating value + * + * @return String representation of the supplied parental rating value + */ +static inline char *bt_audio_parental_rating_to_str(enum bt_audio_parental_rating parental_rating) +{ + switch (parental_rating) { + case BT_AUDIO_PARENTAL_RATING_NO_RATING: + return "No rating"; + case BT_AUDIO_PARENTAL_RATING_AGE_ANY: + return "Any"; + case BT_AUDIO_PARENTAL_RATING_AGE_5_OR_ABOVE: + return "Age 5 or above"; + case BT_AUDIO_PARENTAL_RATING_AGE_6_OR_ABOVE: + return "Age 6 or above"; + case BT_AUDIO_PARENTAL_RATING_AGE_7_OR_ABOVE: + return "Age 7 or above"; + case BT_AUDIO_PARENTAL_RATING_AGE_8_OR_ABOVE: + return "Age 8 or above"; + case BT_AUDIO_PARENTAL_RATING_AGE_9_OR_ABOVE: + return "Age 9 or above"; + case BT_AUDIO_PARENTAL_RATING_AGE_10_OR_ABOVE: + return "Age 10 or above"; + case BT_AUDIO_PARENTAL_RATING_AGE_11_OR_ABOVE: + return "Age 11 or above"; + case BT_AUDIO_PARENTAL_RATING_AGE_12_OR_ABOVE: + return "Age 12 or above"; + case BT_AUDIO_PARENTAL_RATING_AGE_13_OR_ABOVE: + return "Age 13 or above"; + case BT_AUDIO_PARENTAL_RATING_AGE_14_OR_ABOVE: + return "Age 14 or above"; + case BT_AUDIO_PARENTAL_RATING_AGE_15_OR_ABOVE: + return "Age 15 or above"; + case BT_AUDIO_PARENTAL_RATING_AGE_16_OR_ABOVE: + return "Age 16 or above"; + case BT_AUDIO_PARENTAL_RATING_AGE_17_OR_ABOVE: + return "Age 17 or above"; + case BT_AUDIO_PARENTAL_RATING_AGE_18_OR_ABOVE: + return "Age 18 or above"; + default: + return "Unknown rating"; + } +} + +/** + * @brief Returns a string representation of a @ref bt_audio_active_state value + * + * @param state The active state value + * + * @return String representation of the supplied active state value + */ +static inline char *bt_audio_active_state_to_str(enum bt_audio_active_state state) +{ + switch (state) { + case BT_AUDIO_ACTIVE_STATE_DISABLED: + return "Disabled"; + case BT_AUDIO_ACTIVE_STATE_ENABLED: + return "Enabled"; + default: + return "Unknown active state"; + } +} + +/** + * @brief Returns a string representation of a specific @ref bt_audio_codec_cap_freq bit + * + * If @p freq contains multiple bits, it will return "Unknown supported frequency" + * + * @param freq A single frequency bit + * + * @return String representation of the supplied bit + */ +static inline char *bt_audio_codec_cap_freq_bit_to_str(enum bt_audio_codec_cap_freq freq) +{ + switch (freq) { + case BT_AUDIO_CODEC_CAP_FREQ_8KHZ: + return "8000 Hz"; + case BT_AUDIO_CODEC_CAP_FREQ_11KHZ: + return "11025 Hz"; + case BT_AUDIO_CODEC_CAP_FREQ_16KHZ: + return "16000 Hz"; + case BT_AUDIO_CODEC_CAP_FREQ_22KHZ: + return "22050 Hz"; + case BT_AUDIO_CODEC_CAP_FREQ_24KHZ: + return "24000 Hz"; + case BT_AUDIO_CODEC_CAP_FREQ_32KHZ: + return "32000 Hz"; + case BT_AUDIO_CODEC_CAP_FREQ_44KHZ: + return "44100 Hz"; + case BT_AUDIO_CODEC_CAP_FREQ_48KHZ: + return "48000 Hz"; + case BT_AUDIO_CODEC_CAP_FREQ_88KHZ: + return "88200 Hz"; + case BT_AUDIO_CODEC_CAP_FREQ_96KHZ: + return "96000 Hz"; + case BT_AUDIO_CODEC_CAP_FREQ_176KHZ: + return "176400 Hz"; + case BT_AUDIO_CODEC_CAP_FREQ_192KHZ: + return "192000 Hz"; + case BT_AUDIO_CODEC_CAP_FREQ_384KHZ: + return "384000 Hz"; + default: + return "Unknown supported frequency"; + } +} + +/** + * @brief Returns a string representation of a specific @ref bt_audio_codec_cap_frame_dur bit + * + * If @p frame_dur contains multiple bits, it will return "Unknown frame duration" + * + * @param frame_dur A single frame duration bit + * + * @return String representation of the supplied bit + */ +static inline char * +bt_audio_codec_cap_frame_dur_bit_to_str(enum bt_audio_codec_cap_frame_dur frame_dur) +{ + switch (frame_dur) { + case BT_AUDIO_CODEC_CAP_DURATION_7_5: + return "7.5 ms"; + case BT_AUDIO_CODEC_CAP_DURATION_10: + return "10 ms"; + case BT_AUDIO_CODEC_CAP_DURATION_PREFER_7_5: + return "7.5 ms preferred"; + case BT_AUDIO_CODEC_CAP_DURATION_PREFER_10: + return "10 ms preferred"; + default: + return "Unknown frame duration"; + } +} + +/** + * @brief Returns a string representation of a specific @ref bt_audio_codec_cap_chan_count bit + * + * If @p chan_count contains multiple bits, it will return "Unknown channel count" + * + * @param chan_count A single frame channel count bit + * + * @return String representation of the supplied bit + */ +static inline char * +bt_audio_codec_cap_chan_count_bit_to_str(enum bt_audio_codec_cap_chan_count chan_count) +{ + switch (chan_count) { + case BT_AUDIO_CODEC_CAP_CHAN_COUNT_1: + return "1 channel"; + case BT_AUDIO_CODEC_CAP_CHAN_COUNT_2: + return "2 channels"; + case BT_AUDIO_CODEC_CAP_CHAN_COUNT_3: + return "3 channels"; + case BT_AUDIO_CODEC_CAP_CHAN_COUNT_4: + return "4 channels"; + case BT_AUDIO_CODEC_CAP_CHAN_COUNT_5: + return "5 channels"; + case BT_AUDIO_CODEC_CAP_CHAN_COUNT_6: + return "6 channels"; + case BT_AUDIO_CODEC_CAP_CHAN_COUNT_7: + return "7 channels"; + case BT_AUDIO_CODEC_CAP_CHAN_COUNT_8: + return "8 channels"; + default: + return "Unknown channel count"; + } +} + +/** + * @brief Returns a string representation of a specific @ref bt_audio_location bit + * + * If @p location contains multiple bits, it will return "Unknown location" + * + * @param location A single location bit + * + * @return String representation of the supplied bit + */ +static inline char *bt_audio_location_bit_to_str(enum bt_audio_location location) +{ + switch (location) { + case BT_AUDIO_LOCATION_MONO_AUDIO: + return "Mono"; + case BT_AUDIO_LOCATION_FRONT_LEFT: + return "Front left"; + case BT_AUDIO_LOCATION_FRONT_RIGHT: + return "Front right"; + case BT_AUDIO_LOCATION_FRONT_CENTER: + return "Front center"; + case BT_AUDIO_LOCATION_LOW_FREQ_EFFECTS_1: + return "Low frequency effects 1"; + case BT_AUDIO_LOCATION_BACK_LEFT: + return "Back left"; + case BT_AUDIO_LOCATION_BACK_RIGHT: + return "Back right"; + case BT_AUDIO_LOCATION_FRONT_LEFT_OF_CENTER: + return "Front left of center"; + case BT_AUDIO_LOCATION_FRONT_RIGHT_OF_CENTER: + return "Front right of center"; + case BT_AUDIO_LOCATION_BACK_CENTER: + return "Back center"; + case BT_AUDIO_LOCATION_LOW_FREQ_EFFECTS_2: + return "Low frequency effects 2"; + case BT_AUDIO_LOCATION_SIDE_LEFT: + return "Side left"; + case BT_AUDIO_LOCATION_SIDE_RIGHT: + return "Side right"; + case BT_AUDIO_LOCATION_TOP_FRONT_LEFT: + return "Top front left"; + case BT_AUDIO_LOCATION_TOP_FRONT_RIGHT: + return "Top front right"; + case BT_AUDIO_LOCATION_TOP_FRONT_CENTER: + return "Top front center"; + case BT_AUDIO_LOCATION_TOP_CENTER: + return "Top center"; + case BT_AUDIO_LOCATION_TOP_BACK_LEFT: + return "Top back left"; + case BT_AUDIO_LOCATION_TOP_BACK_RIGHT: + return "Top back right"; + case BT_AUDIO_LOCATION_TOP_SIDE_LEFT: + return "Top side left"; + case BT_AUDIO_LOCATION_TOP_SIDE_RIGHT: + return "Top side right"; + case BT_AUDIO_LOCATION_TOP_BACK_CENTER: + return "Top back center"; + case BT_AUDIO_LOCATION_BOTTOM_FRONT_CENTER: + return "Bottom front center"; + case BT_AUDIO_LOCATION_BOTTOM_FRONT_LEFT: + return "Bottom front left"; + case BT_AUDIO_LOCATION_BOTTOM_FRONT_RIGHT: + return "Bottom front right"; + case BT_AUDIO_LOCATION_FRONT_LEFT_WIDE: + return "Front left wide"; + case BT_AUDIO_LOCATION_FRONT_RIGHT_WIDE: + return "Front right wde"; + case BT_AUDIO_LOCATION_LEFT_SURROUND: + return "Left surround"; + case BT_AUDIO_LOCATION_RIGHT_SURROUND: + return "Right surround"; + default: + return "Unknown location"; + } +} + +/** @} */ /* End of bt_audio_to_str */ #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/bap.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/bap.h index 1d61c07a..17e53ca6 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/bap.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/bap.h @@ -33,13 +33,289 @@ #include #include #include -#include +#include #include +#include #ifdef __cplusplus extern "C" { #endif +#if defined(CONFIG_BT_BAP_BASS_MAX_SUBGROUPS) +#define BT_BAP_BASS_MAX_SUBGROUPS CONFIG_BT_BAP_BASS_MAX_SUBGROUPS +#else +#define BT_BAP_BASS_MAX_SUBGROUPS 0 +#endif /* CONFIG_BT_BAP_BASS_MAX_SUBGROUPS*/ + +/** An invalid Broadcast ID */ +#define BT_BAP_INVALID_BROADCAST_ID 0xFFFFFFFFU + +/** + * @brief Check if a BAP BASS BIS_Sync bitfield is valid + * + * Valid options are eiter a bitmask of valid BIS indices, including none (0x00000000) + * or @ref BT_BAP_BIS_SYNC_NO_PREF (0xFFFFFFFF). + * + * @param _bis_bitfield BIS_Sync bitfield (uint32) + */ +#define BT_BAP_BASS_VALID_BIT_BITFIELD(_bis_bitfield) \ + ((_bis_bitfield) == 0U || (_bis_bitfield) == BT_BAP_BIS_SYNC_NO_PREF || \ + BT_ISO_VALID_BIS_BITFIELD(_bis_bitfield)) + +/** + * @brief Helper to declare elements of bt_bap_qos_cfg + * + * @param _interval SDU interval (usec) + * @param _framing Framing + * @param _phy Target PHY + * @param _sdu Maximum SDU Size + * @param _rtn Retransmission number + * @param _latency Maximum Transport Latency (msec) + * @param _pd Presentation Delay (usec) + */ +#define BT_BAP_QOS_CFG(_interval, _framing, _phy, _sdu, _rtn, _latency, _pd) \ + ((struct bt_bap_qos_cfg){ \ + .interval = _interval, \ + .framing = _framing, \ + .phy = _phy, \ + .sdu = _sdu, \ + .rtn = _rtn, \ + IF_ENABLED(UTIL_OR(IS_ENABLED(CONFIG_BT_BAP_BROADCAST_SOURCE), \ + IS_ENABLED(CONFIG_BT_BAP_UNICAST)), \ + (.latency = _latency,)) \ + .pd = _pd, \ + }) + +/** @brief QoS Framing */ +enum bt_bap_qos_cfg_framing { + /** Packets may be framed or unframed */ + BT_BAP_QOS_CFG_FRAMING_UNFRAMED = 0x00, + /** Packets are always framed */ + BT_BAP_QOS_CFG_FRAMING_FRAMED = 0x01, +}; + +/** @brief QoS Preferred PHY */ +enum { + /** LE 1M PHY */ + BT_BAP_QOS_CFG_1M = BIT(0), + /** LE 2M PHY */ + BT_BAP_QOS_CFG_2M = BIT(1), + /** LE Coded PHY */ + BT_BAP_QOS_CFG_CODED = BIT(2), +}; + +/** + * @brief Helper to declare Input Unframed bt_bap_qos_cfg + * + * @param _interval SDU interval (usec) + * @param _sdu Maximum SDU Size + * @param _rtn Retransmission number + * @param _latency Maximum Transport Latency (msec) + * @param _pd Presentation Delay (usec) + */ +#define BT_BAP_QOS_CFG_UNFRAMED(_interval, _sdu, _rtn, _latency, _pd) \ + BT_BAP_QOS_CFG(_interval, BT_BAP_QOS_CFG_FRAMING_UNFRAMED, BT_BAP_QOS_CFG_2M, _sdu, _rtn, \ + _latency, _pd) + +/** + * @brief Helper to declare Input Framed bt_bap_qos_cfg + * + * @param _interval SDU interval (usec) + * @param _sdu Maximum SDU Size + * @param _rtn Retransmission number + * @param _latency Maximum Transport Latency (msec) + * @param _pd Presentation Delay (usec) + */ +#define BT_BAP_QOS_CFG_FRAMED(_interval, _sdu, _rtn, _latency, _pd) \ + BT_BAP_QOS_CFG(_interval, BT_BAP_QOS_CFG_FRAMING_FRAMED, BT_BAP_QOS_CFG_2M, _sdu, _rtn, \ + _latency, _pd) + +/** @brief QoS configuration structure. */ +struct bt_bap_qos_cfg { + /** + * @brief Presentation Delay in microseconds + * + * This value can be changed up and until bt_bap_stream_qos() has been called. + * Once a stream has been QoS configured, modifying this field does not modify the value. + * It is however possible to modify this field and call bt_bap_stream_qos() again to update + * the value, assuming that the stream is in the correct state. + * + * Value range 0 to @ref BT_AUDIO_PD_MAX. + */ + uint32_t pd; + + /** + * @brief Connected Isochronous Group (CIG) parameters + * + * The fields in this struct affect the value sent to the controller via HCI + * when creating the CIG. Once the group has been created with + * bt_bap_unicast_group_create(), modifying these fields will not affect the group. + */ + struct { + /** QoS Framing */ + enum bt_bap_qos_cfg_framing framing; + + /** + * @brief PHY + * + * Allowed values are @ref BT_BAP_QOS_CFG_1M, @ref BT_BAP_QOS_CFG_2M and + * @ref BT_BAP_QOS_CFG_CODED. + */ + uint8_t phy; + + /** + * @brief Retransmission Number + * + * This a recommendation to the controller, and the actual retransmission number + * may be different than this. + */ + uint8_t rtn; + + /** + * @brief Maximum SDU size + * + * Value range @ref BT_ISO_MIN_SDU to @ref BT_ISO_MAX_SDU. + */ + uint16_t sdu; + +#if defined(CONFIG_BT_BAP_BROADCAST_SOURCE) || defined(CONFIG_BT_BAP_UNICAST) || \ + defined(__DOXYGEN__) + /** + * @brief Maximum Transport Latency + * + * Not used for the @kconfig{CONFIG_BT_BAP_BROADCAST_SINK} role. + */ + uint16_t latency; +#endif /* CONFIG_BT_BAP_BROADCAST_SOURCE || CONFIG_BT_BAP_UNICAST */ + + /** + * @brief SDU Interval + * + * Value range @ref BT_ISO_SDU_INTERVAL_MIN to @ref BT_ISO_SDU_INTERVAL_MAX + */ + uint32_t interval; + +#if defined(CONFIG_BT_ISO_TEST_PARAMS) || defined(__DOXYGEN__) + /** + * @brief Maximum PDU size + * + * Maximum size, in octets, of the payload from link layer to link layer. + * + * Value range @ref BT_ISO_CONNECTED_PDU_MIN to @ref BT_ISO_PDU_MAX for + * connected ISO. + * + * Value range @ref BT_ISO_BROADCAST_PDU_MIN to @ref BT_ISO_PDU_MAX for + * broadcast ISO. + */ + uint16_t max_pdu; + + /** + * @brief Burst number + * + * Value range @ref BT_ISO_BN_MIN to @ref BT_ISO_BN_MAX. + */ + uint8_t burst_number; + + /** + * @brief Number of subevents + * + * Maximum number of subevents in each CIS or BIS event. + * + * Value range @ref BT_ISO_NSE_MIN to @ref BT_ISO_NSE_MAX. + */ + uint8_t num_subevents; +#endif /* CONFIG_BT_ISO_TEST_PARAMS */ + }; +}; + +/** + * @brief Helper to declare elements of @ref bt_bap_qos_cfg_pref + * + * @param _unframed_supported Unframed PDUs supported + * @param _phy Preferred Target PHY + * @param _rtn Preferred Retransmission number + * @param _latency Preferred Maximum Transport Latency (msec) + * @param _pd_min Minimum Presentation Delay (usec) + * @param _pd_max Maximum Presentation Delay (usec) + * @param _pref_pd_min Preferred Minimum Presentation Delay (usec) + * @param _pref_pd_max Preferred Maximum Presentation Delay (usec) + */ +#define BT_BAP_QOS_CFG_PREF(_unframed_supported, _phy, _rtn, _latency, _pd_min, _pd_max, \ + _pref_pd_min, _pref_pd_max) \ + { \ + .unframed_supported = _unframed_supported, .phy = _phy, .rtn = _rtn, \ + .latency = _latency, .pd_min = _pd_min, .pd_max = _pd_max, \ + .pref_pd_min = _pref_pd_min, .pref_pd_max = _pref_pd_max, \ + } + +/** @brief Audio Stream Quality of Service Preference structure. */ +struct bt_bap_qos_cfg_pref { + /** + * @brief Unframed PDUs supported + * + * Unlike the other fields, this is not a preference but whether + * the codec supports unframed ISOAL PDUs. + */ + bool unframed_supported; + + /** + * @brief Preferred PHY bitfield + * + * Bitfield consisting of one or more of @ref BT_GAP_LE_PHY_1M, @ref BT_GAP_LE_PHY_2M and + * @ref BT_GAP_LE_PHY_CODED. + */ + uint8_t phy; + + /** + * @brief Preferred Retransmission Number + * + * @ref BT_AUDIO_RTN_PREF_NONE indicates no preference. + */ + uint8_t rtn; + + /** + * Preferred Transport Latency + * + * Value range @ref BT_ISO_LATENCY_MIN to @ref BT_ISO_LATENCY_MAX + */ + uint16_t latency; + + /** + * @brief Minimum Presentation Delay in microseconds + * + * Unlike the other fields, this is not a preference but a minimum requirement. + * + * Value range 0 to @ref BT_AUDIO_PD_MAX + */ + uint32_t pd_min; + + /** + * @brief Maximum Presentation Delay in microseconds + * + * Unlike the other fields, this is not a preference but a maximum requirement. + * + * Value range @ref bt_bap_qos_cfg_pref.pd_min to @ref BT_AUDIO_PD_MAX + */ + uint32_t pd_max; + + /** + * @brief Preferred minimum Presentation Delay in microseconds + * + * Value range @ref bt_bap_qos_cfg_pref.pd_min to @ref bt_bap_qos_cfg_pref.pd_max, or + * @ref BT_AUDIO_PD_PREF_NONE to indicate no preference. + */ + uint32_t pref_pd_min; + + /** + * @brief Preferred maximum Presentation Delay in microseconds + * + * Value range @ref bt_bap_qos_cfg_pref.pd_min to @ref bt_bap_qos_cfg_pref.pd_max, + * and higher than or equal to @ref bt_bap_qos_cfg_pref.pref_pd_min, or + * @ref BT_AUDIO_PD_PREF_NONE to indicate no preference. + */ + uint32_t pref_pd_max; +}; + /** Periodic advertising state reported by the Scan Delegator */ enum bt_bap_pa_state { /** The periodic advertising has not been synchronized */ @@ -91,7 +367,9 @@ enum bt_bap_bass_att_err { * Value indicating that the Broadcast Assistant has no preference to which BIS * the Scan Delegator syncs to */ -#define BT_BAP_BIS_SYNC_NO_PREF 0xFFFFFFFF +#define BT_BAP_BIS_SYNC_NO_PREF 0xFFFFFFFF +/** BIS sync value indicating that the BIG sync has failed for any reason */ +#define BT_BAP_BIS_SYNC_FAILED 0xFFFFFFFF /** Endpoint states */ enum bt_bap_ep_state { @@ -300,19 +578,23 @@ struct bt_bap_scan_delegator_recv_state { * * Only valid if encrypt_state is @ref BT_BAP_BIG_ENC_STATE_BCODE_REQ */ - uint8_t bad_code[BT_AUDIO_BROADCAST_CODE_SIZE]; + uint8_t bad_code[BT_ISO_BROADCAST_CODE_SIZE]; /** Number of subgroups */ uint8_t num_subgroups; - /** Subgroup specific information */ - struct bt_bap_bass_subgroup subgroups[CONFIG_BT_BAP_BASS_MAX_SUBGROUPS]; + /** Subgroup specific information + * + * If the @ref bt_bap_bass_subgroup.bis_sync value is @ref BT_BAP_BIS_SYNC_FAILED then it + * indicates that the BIG sync failed. + */ + struct bt_bap_bass_subgroup subgroups[BT_BAP_BASS_MAX_SUBGROUPS]; }; /** * @brief Struct to hold the Basic Audio Profile Scan Delegator callbacks * - * These can be registered for usage with bt_bap_scan_delegator_register_cb(). + * These can be registered for usage with bt_bap_scan_delegator_register(). */ struct bt_bap_scan_delegator_cb { /** @@ -376,7 +658,7 @@ struct bt_bap_scan_delegator_cb { */ void (*broadcast_code)(struct bt_conn *conn, const struct bt_bap_scan_delegator_recv_state *recv_state, - const uint8_t broadcast_code[BT_AUDIO_BROADCAST_CODE_SIZE]); + const uint8_t broadcast_code[BT_ISO_BROADCAST_CODE_SIZE]); /** * @brief Broadcast Isochronous Stream synchronize request * @@ -400,7 +682,17 @@ struct bt_bap_scan_delegator_cb { */ int (*bis_sync_req)(struct bt_conn *conn, const struct bt_bap_scan_delegator_recv_state *recv_state, - const uint32_t bis_sync_req[CONFIG_BT_BAP_BASS_MAX_SUBGROUPS]); + const uint32_t bis_sync_req[BT_BAP_BASS_MAX_SUBGROUPS]); + /** + * @brief Broadcast Assistant scanning state callback + * + * Callback triggered when a Broadcast Assistant notifies the Scan Delegator about the + * assistants scanning state. + * + * @param conn Pointer to the connection that initiated the scan. + * @param is_scanning true if scanning started, false if scanning stopped. + */ + void (*scanning_state)(struct bt_conn *conn, bool is_scanning); }; /** Structure holding information of audio stream endpoint */ @@ -429,7 +721,7 @@ struct bt_bap_ep_info { struct bt_bap_ep *paired_ep; /** Pointer to the preferred QoS settings associated with the endpoint */ - const struct bt_audio_codec_qos_pref *qos_pref; + const struct bt_bap_qos_cfg_pref *qos_pref; }; /** @@ -462,7 +754,7 @@ struct bt_bap_stream { struct bt_audio_codec_cfg *codec_cfg; /** QoS Configuration */ - struct bt_audio_codec_qos *qos; + struct bt_bap_qos_cfg *qos; /** Audio stream operations */ struct bt_bap_stream_ops *ops; @@ -502,8 +794,7 @@ struct bt_bap_stream_ops { * @param stream Stream object that has been configured. * @param pref Remote QoS preferences. */ - void (*configured)(struct bt_bap_stream *stream, - const struct bt_audio_codec_qos_pref *pref); + void (*configured)(struct bt_bap_stream *stream, const struct bt_bap_qos_cfg_pref *pref); /** * @brief Stream QoS set callback @@ -635,6 +926,22 @@ struct bt_bap_stream_ops { void (*disconnected)(struct bt_bap_stream *stream, uint8_t reason); }; +/** Structure for registering Unicast Server */ +struct bt_bap_unicast_server_register_param { + /** + * @brief Sink Count to register. + * + * Should be in range 0 to @kconfig{CONFIG_BT_ASCS_MAX_ASE_SNK_COUNT} + */ + uint8_t snk_cnt; + + /** @brief Source Count to register. + * + * Should be in range 0 to @kconfig{CONFIG_BT_ASCS_MAX_ASE_SRC_COUNT} + */ + uint8_t src_cnt; +}; + /** * @brief Register Audio callbacks for a stream. * @@ -793,6 +1100,16 @@ int bt_bap_stream_start(struct bt_bap_stream *stream); * * @param stream Stream object * + * @retval 0 Success + * @retval -EINVAL The @p stream does not have an endpoint or a connection, of the stream's + * connection's role is not @p BT_HCI_ROLE_CENTRAL + * @retval -EBADMSG The state of the @p stream endpoint is not @ref BT_BAP_EP_STATE_DISABLING + * @retval -EALREADY The CIS state of the @p is not in a connected state, and thus is already + * stopping + * @retval -EBUSY The @p stream is busy with another operation + * @retval -ENOTCONN The @p stream ACL connection is not connected + * @retval -ENOMEM No memory to send request + * @retval -ENOEXEC The request was rejected by GATT * @return 0 in case of success or negative value in case of error. */ int bt_bap_stream_stop(struct bt_bap_stream *stream); @@ -895,7 +1212,7 @@ struct bt_bap_unicast_server_cb { */ int (*config)(struct bt_conn *conn, const struct bt_bap_ep *ep, enum bt_audio_dir dir, const struct bt_audio_codec_cfg *codec_cfg, struct bt_bap_stream **stream, - struct bt_audio_codec_qos_pref *const pref, struct bt_bap_ascs_rsp *rsp); + struct bt_bap_qos_cfg_pref *const pref, struct bt_bap_ascs_rsp *rsp); /** * @brief Stream reconfig request callback @@ -915,7 +1232,7 @@ struct bt_bap_unicast_server_cb { */ int (*reconfig)(struct bt_bap_stream *stream, enum bt_audio_dir dir, const struct bt_audio_codec_cfg *codec_cfg, - struct bt_audio_codec_qos_pref *const pref, struct bt_bap_ascs_rsp *rsp); + struct bt_bap_qos_cfg_pref *const pref, struct bt_bap_ascs_rsp *rsp); /** * @brief Stream QoS request callback @@ -930,7 +1247,7 @@ struct bt_bap_unicast_server_cb { * * @return 0 in case of success or negative value in case of error. */ - int (*qos)(struct bt_bap_stream *stream, const struct bt_audio_codec_qos *qos, + int (*qos)(struct bt_bap_stream *stream, const struct bt_bap_qos_cfg *qos, struct bt_bap_ascs_rsp *rsp); /** @@ -1019,11 +1336,41 @@ struct bt_bap_unicast_server_cb { int (*release)(struct bt_bap_stream *stream, struct bt_bap_ascs_rsp *rsp); }; +/** + * @brief Register the Unicast Server. + * + * Register the Unicast Server. Only a single Unicast Server can be registered at any one time. + * This will register ASCS in the GATT database. + * + * @param param Registration parameters for ascs. + * + * @return 0 in case of success, negative error code otherwise. + */ +int bt_bap_unicast_server_register(const struct bt_bap_unicast_server_register_param *param); + +/** + * @brief Unregister the Unicast Server. + * + * Unregister the Unicast Server. + * This will unregister ASCS in the GATT database. + * Before calling this function, any callbacks registered through + * bt_bap_unicast_server_register_cb() needs to be unregistered with + * bt_bap_unicast_server_unregister_cb(). + * + * Calling this function will issue an release operation on any ASE + * in a non-idle state. + * + * @return 0 in case of success, negative error code otherwise. + */ +int bt_bap_unicast_server_unregister(void); + /** * @brief Register unicast server callbacks. * * Only one callback structure can be registered, and attempting to * registering more than one will result in an error. + * Prior to calling this function the Unicast Server needs to be + * registered with bt_bap_unicast_server_register(). * * @param cb Unicast server callback structure. * @@ -1037,6 +1384,9 @@ int bt_bap_unicast_server_register_cb(const struct bt_bap_unicast_server_cb *cb) * May only unregister a callback structure that has previously been * registered by bt_bap_unicast_server_register_cb(). * + * Calling this function will issue an release operation on any ASE + * in a non-idle state. + * * @param cb Unicast server callback structure. * * @return 0 in case of success or negative value in case of error. @@ -1073,7 +1423,7 @@ void bt_bap_unicast_server_foreach_ep(struct bt_conn *conn, bt_bap_ep_func_t fun */ int bt_bap_unicast_server_config_ase(struct bt_conn *conn, struct bt_bap_stream *stream, struct bt_audio_codec_cfg *codec_cfg, - const struct bt_audio_codec_qos_pref *qos_pref); + const struct bt_bap_qos_cfg_pref *qos_pref); /** @} */ /* End of group bt_bap_unicast_server */ @@ -1089,7 +1439,7 @@ struct bt_bap_unicast_group_stream_param { struct bt_bap_stream *stream; /** The QoS settings for the stream object. */ - struct bt_audio_codec_qos *qos; + struct bt_bap_qos_cfg *qos; }; /** @@ -1156,10 +1506,12 @@ struct bt_bap_unicast_group_param { }; /** - * @brief Create audio unicast group. + * @brief Create unicast group. * - * Create a new audio unicast group with one or more audio streams as a unicast client. Streams in - * a unicast group shall share the same interval, framing and latency (see @ref bt_audio_codec_qos). + * Create a new audio unicast group with one or more audio streams as a unicast client. + * All streams shall share the same framing. + * All streams in the same direction shall share the same interval and latency (see + * @ref bt_bap_qos_cfg). * * @param[in] param The unicast group create parameters. * @param[out] unicast_group Pointer to the unicast group created. @@ -1169,6 +1521,24 @@ struct bt_bap_unicast_group_param { int bt_bap_unicast_group_create(struct bt_bap_unicast_group_param *param, struct bt_bap_unicast_group **unicast_group); +/** + * @brief Reconfigure unicast group. + * + * Reconfigure a unicast group with one or more audio streams as a unicast client. + * All streams shall share the same framing. + * All streams in the same direction shall share the same interval and latency (see + * @ref bt_bap_qos_cfg). + * All streams in @p param shall already belong to @p unicast_group. + * Use bt_bap_unicast_group_add_streams() to add additional streams. + * + * @param unicast_group Pointer to the unicast group created. + * @param param The unicast group reconfigure parameters. + * + * @return Zero on success or (negative) error code otherwise. + */ +int bt_bap_unicast_group_reconfig(struct bt_bap_unicast_group *unicast_group, + const struct bt_bap_unicast_group_param *param); + /** * @brief Add streams to a unicast group as a unicast client * @@ -1387,6 +1757,11 @@ struct bt_bap_unicast_client_cb { * If discovery procedure has complete both @p codec and @p ep are set to NULL. */ void (*discover)(struct bt_conn *conn, int err, enum bt_audio_dir dir); + + /** @cond INTERNAL_HIDDEN */ + /** Internally used field for list handling */ + sys_snode_t _node; + /** @endcond */ }; /** @@ -1397,9 +1772,11 @@ struct bt_bap_unicast_client_cb { * * @param cb Unicast client callback structure. * - * @return 0 in case of success or negative value in case of error. + * @retval 0 Success + * @retval -EINVAL @p cb is NULL. + * @retval -EEXIST @p cb is already registered. */ -int bt_bap_unicast_client_register_cb(const struct bt_bap_unicast_client_cb *cb); +int bt_bap_unicast_client_register_cb(struct bt_bap_unicast_client_cb *cb); /** * @brief Discover remote capabilities and endpoints @@ -1624,6 +2001,53 @@ int bt_bap_base_subgroup_bis_codec_to_codec_cfg(const struct bt_bap_base_subgrou * @{ */ +/** + * @brief Struct to hold the Broadcast Source callbacks + * + * These can be registered for usage with bt_bap_broadcast_source_register_cb(). + */ +struct bt_bap_broadcast_source_cb { + /** + * @brief The Broadcast Source has started and all of the streams are ready for audio data + * + * @param source The started Broadcast Source + */ + void (*started)(struct bt_bap_broadcast_source *source); + + /** + * @brief The Broadcast Source has stopped and none of the streams are ready for audio data + * + * @param source The stopped Broadcast Source + * @param reason The reason why the Broadcast Source stopped (see the BT_HCI_ERR_* values) + */ + void (*stopped)(struct bt_bap_broadcast_source *source, uint8_t reason); + + /** @internal Internally used field for list handling */ + sys_snode_t _node; +}; + +/** + * @brief Registers callbacks for Broadcast Sources + * + * @param cb Pointer to the callback structure. + * + * @retval 0 on success + * @retval -EINVAL if @p cb is NULL + * @retval -EEXIST if @p cb is already registered + */ +int bt_bap_broadcast_source_register_cb(struct bt_bap_broadcast_source_cb *cb); + +/** + * @brief Unregisters callbacks for Broadcast Sources + * + * @param cb Pointer to the callback structure. + * + * @retval 0 on success + * @retval -EINVAL if @p cb is NULL + * @retval -ENOENT if @p cb is not registered + */ +int bt_bap_broadcast_source_unregister_cb(struct bt_bap_broadcast_source_cb *cb); + /** Broadcast Source stream parameters */ struct bt_bap_broadcast_source_stream_param { /** Audio stream */ @@ -1663,7 +2087,7 @@ struct bt_bap_broadcast_source_param { struct bt_bap_broadcast_source_subgroup_param *params; /** Quality of Service configuration. */ - struct bt_audio_codec_qos *qos; + struct bt_bap_qos_cfg *qos; /** * @brief Broadcast Source packing mode. @@ -1687,7 +2111,7 @@ struct bt_bap_broadcast_source_param { * The string "Broadcast Code" shall be * [42 72 6F 61 64 63 61 73 74 20 43 6F 64 65 00 00] */ - uint8_t broadcast_code[BT_AUDIO_BROADCAST_CODE_SIZE]; + uint8_t broadcast_code[BT_ISO_BROADCAST_CODE_SIZE]; #if defined(CONFIG_BT_ISO_TEST_PARAMS) || defined(__DOXYGEN__) /** @@ -1813,22 +2237,6 @@ int bt_bap_broadcast_source_stop(struct bt_bap_broadcast_source *source); */ int bt_bap_broadcast_source_delete(struct bt_bap_broadcast_source *source); -/** - * @brief Get the broadcast ID of a broadcast source - * - * This will return the 3-octet broadcast ID that should be advertised in the - * extended advertising data with @ref BT_UUID_BROADCAST_AUDIO_VAL as @ref BT_DATA_SVC_DATA16. - * - * See table 3.14 in the Basic Audio Profile v1.0.1 for the structure. - * - * @param[in] source Pointer to the broadcast source. - * @param[out] broadcast_id Pointer to the 3-octet broadcast ID. - * - * @return Zero on success or (negative) error code otherwise. - */ -int bt_bap_broadcast_source_get_id(struct bt_bap_broadcast_source *source, - uint32_t *const broadcast_id); - /** * @brief Get the Broadcast Audio Stream Endpoint of a broadcast source * @@ -1884,6 +2292,22 @@ struct bt_bap_broadcast_sink_cb { */ void (*syncable)(struct bt_bap_broadcast_sink *sink, const struct bt_iso_biginfo *biginfo); + /** + * @brief The Broadcast Sink has started and audio data may be received from all of the + * streams + * + * @param sink The started Broadcast Sink + */ + void (*started)(struct bt_bap_broadcast_sink *sink); + + /** + * @brief The Broadcast Sink has stopped and none of the streams will receive audio data + * + * @param sink The stopped Broadcast Sink + * @param reason The reason why the Broadcast Sink stopped (see the BT_HCI_ERR_* values) + */ + void (*stopped)(struct bt_bap_broadcast_sink *sink, uint8_t reason); + /** @internal Internally used list node */ sys_snode_t _node; }; @@ -1894,11 +2318,12 @@ struct bt_bap_broadcast_sink_cb { * It is possible to register multiple struct of callbacks, but a single struct can only be * registered once. * Registering the same callback multiple times is undefined behavior and may break the stack. - * + * @param cb Broadcast sink callback structure. * - * @retval 0 in case of success + * @retval 0 on success * @retval -EINVAL if @p cb is NULL + * @retval -EALREADY if @p cb was already registered */ int bt_bap_broadcast_sink_register_cb(struct bt_bap_broadcast_sink_cb *cb); @@ -1943,7 +2368,8 @@ int bt_bap_broadcast_sink_create(struct bt_le_per_adv_sync *pa_sync, uint32_t br * @return 0 in case of success or negative value in case of error. */ int bt_bap_broadcast_sink_sync(struct bt_bap_broadcast_sink *sink, uint32_t indexes_bitfield, - struct bt_bap_stream *streams[], const uint8_t broadcast_code[16]); + struct bt_bap_stream *streams[], + const uint8_t broadcast_code[BT_ISO_BROADCAST_CODE_SIZE]); /** * @brief Stop audio broadcast sink. @@ -1973,14 +2399,29 @@ int bt_bap_broadcast_sink_delete(struct bt_bap_broadcast_sink *sink); /** @} */ /* End of group bt_bap_broadcast_sink */ /** - * @brief Register the callbacks for the Basic Audio Profile Scan Delegator + * @brief Register the Basic Audio Profile Scan Delegator and BASS. + * + * Register the scan deligator and Broadcast Audio Scan Service (BASS) + * dynamically at runtime. * * Only one set of callbacks can be registered at any one time, and calling this function multiple * times will override any previously registered callbacks. * * @param cb Pointer to the callback struct + * + * @return 0 in case of success or negative value in case of error. */ -void bt_bap_scan_delegator_register_cb(struct bt_bap_scan_delegator_cb *cb); +int bt_bap_scan_delegator_register(struct bt_bap_scan_delegator_cb *cb); + +/** + * @brief unregister the Basic Audio Profile Scan Delegator and BASS. + * + * Unregister the scan deligator and Broadcast Audio Scan Service (BASS) + * dynamically at runtime. + * + * @return 0 in case of success or negative value in case of error. + */ +int bt_bap_scan_delegator_unregister(void); /** * @brief Set the periodic advertising sync state to syncing @@ -2006,14 +2447,16 @@ int bt_bap_scan_delegator_set_pa_state(uint8_t src_id, * subgroup. * @return int Error value. 0 on success, ERRNO on fail. */ -int bt_bap_scan_delegator_set_bis_sync_state( - uint8_t src_id, - uint32_t bis_synced[CONFIG_BT_BAP_BASS_MAX_SUBGROUPS]); +int bt_bap_scan_delegator_set_bis_sync_state(uint8_t src_id, + uint32_t bis_synced[BT_BAP_BASS_MAX_SUBGROUPS]); /** Parameters for bt_bap_scan_delegator_add_src() */ struct bt_bap_scan_delegator_add_src_param { - /** The periodic adverting sync */ - struct bt_le_per_adv_sync *pa_sync; + /** Periodic Advertiser Address */ + bt_addr_le_t addr; + + /** Advertiser SID */ + uint8_t sid; /** The broadcast isochronous group encryption state */ enum bt_bap_big_enc_state encrypt_state; @@ -2025,7 +2468,7 @@ struct bt_bap_scan_delegator_add_src_param { uint8_t num_subgroups; /** Subgroup specific information */ - struct bt_bap_bass_subgroup subgroups[CONFIG_BT_BAP_BASS_MAX_SUBGROUPS]; + struct bt_bap_bass_subgroup subgroups[BT_BAP_BASS_MAX_SUBGROUPS]; }; /** @@ -2063,7 +2506,7 @@ struct bt_bap_scan_delegator_mod_src_param { * If a subgroup's metadata_len is set to 0, the existing metadata * for the subgroup will remain unchanged */ - struct bt_bap_bass_subgroup subgroups[CONFIG_BT_BAP_BASS_MAX_SUBGROUPS]; + struct bt_bap_bass_subgroup subgroups[BT_BAP_BASS_MAX_SUBGROUPS]; }; /** @@ -2223,7 +2666,7 @@ struct bt_bap_broadcast_assistant_cb { void (*mod_src)(struct bt_conn *conn, int err); /** - * @brief Callback function for bt_bap_broadcast_assistant_broadcast_code(). + * @brief Callback function for bt_bap_broadcast_assistant_set_broadcast_code(). * * @param conn The connection to the peer device. * @param err Error value. 0 on success, GATT error on fail. @@ -2249,7 +2692,13 @@ struct bt_bap_broadcast_assistant_cb { * new connection, will delete all previous data. * * @param conn The connection - * @return int Error value. 0 on success, GATT error or ERRNO on fail. + * + * @retval 0 Success + * @retval -EINVAL @p conn is NULL + * @retval -EBUSY Another operation is already in progress for this @p conn + * @retval -ENOTCONN @p conn is not connected + * @retval -ENOMEM Could not allocated memory for the request + * @retval -ENOEXEC Unexpected GATT error */ int bt_bap_broadcast_assistant_discover(struct bt_conn *conn); @@ -2268,7 +2717,14 @@ int bt_bap_broadcast_assistant_discover(struct bt_conn *conn); * Used to let the server know that we are scanning. * @param start_scan Start scanning if true. If false, the application should * enable scan itself. - * @return int Error value. 0 on success, GATT error or ERRNO on fail. + + * @retval 0 Success + * @retval -EINVAL @p conn is NULL of if @p conn has not done discovery + * @retval -EBUSY Another operation is already in progress for this @p conn + * @retval -EAGAIN Bluetooth has not been enabled. + * @retval -ENOTCONN @p conn is not connected + * @retval -ENOMEM Could not allocated memory for the request + * @retval -ENOEXEC Unexpected scan or GATT error */ int bt_bap_broadcast_assistant_scan_start(struct bt_conn *conn, bool start_scan); @@ -2277,7 +2733,14 @@ int bt_bap_broadcast_assistant_scan_start(struct bt_conn *conn, * @brief Stop remote scanning for BISes for a server. * * @param conn Connection to the server. - * @return int Error value. 0 on success, GATT error or ERRNO on fail. + + * @retval 0 Success + * @retval -EINVAL @p conn is NULL of if @p conn has not done discovery + * @retval -EBUSY Another operation is already in progress for this @p conn + * @retval -EAGAIN Bluetooth has not been enabled. + * @retval -ENOTCONN @p conn is not connected + * @retval -ENOMEM Could not allocated memory for the request + * @retval -ENOEXEC Unexpected scan or GATT error */ int bt_bap_broadcast_assistant_scan_stop(struct bt_conn *conn); @@ -2328,7 +2791,11 @@ struct bt_bap_broadcast_assistant_add_src_param { /** Number of subgroups */ uint8_t num_subgroups; - /** Pointer to array of subgroups */ + /** Pointer to array of subgroups + * + * The @ref bt_bap_bass_subgroup.bis_sync value can be set to BT_BAP_BIS_SYNC_NO_PREF to + * let the broadcast sink decide which BIS to synchronize to. + */ struct bt_bap_bass_subgroup *subgroups; }; @@ -2338,7 +2805,12 @@ struct bt_bap_broadcast_assistant_add_src_param { * @param conn Connection to the server. * @param param Parameter struct. * - * @return Error value. 0 on success, GATT error or ERRNO on fail. + * @retval 0 Success + * @retval -EINVAL @p conn is NULL or %p conn has not done discovery or if @p param is invalid + * @retval -EBUSY Another operation is already in progress for this @p conn + * @retval -ENOTCONN @p conn is not connected + * @retval -ENOMEM Could not allocated memory for the request + * @retval -ENOEXEC Unexpected scan or GATT error */ int bt_bap_broadcast_assistant_add_src( struct bt_conn *conn, const struct bt_bap_broadcast_assistant_add_src_param *param); @@ -2371,7 +2843,12 @@ struct bt_bap_broadcast_assistant_mod_src_param { * @param conn Connection to the server. * @param param Parameter struct. * - * @return Error value. 0 on success, GATT error or ERRNO on fail. + * @retval 0 Success + * @retval -EINVAL @p conn is NULL or %p conn has not done discovery or if @p param is invalid + * @retval -EBUSY Another operation is already in progress for this @p conn + * @retval -ENOTCONN @p conn is not connected + * @retval -ENOMEM Could not allocated memory for the request + * @retval -ENOEXEC Unexpected scan or GATT error */ int bt_bap_broadcast_assistant_mod_src( struct bt_conn *conn, const struct bt_bap_broadcast_assistant_mod_src_param *param); @@ -2383,11 +2860,16 @@ int bt_bap_broadcast_assistant_mod_src( * @param src_id Source ID of the receive state. * @param broadcast_code The broadcast code. * - * @return Error value. 0 on success, GATT error or ERRNO on fail. + * @retval 0 Success + * @retval -EINVAL @p conn is NULL or %p conn has not done discovery or @p src_id is invalid + * @retval -EBUSY Another operation is already in progress for this @p conn + * @retval -ENOTCONN @p conn is not connected + * @retval -ENOMEM Could not allocated memory for the request + * @retval -ENOEXEC Unexpected scan or GATT error */ int bt_bap_broadcast_assistant_set_broadcast_code( struct bt_conn *conn, uint8_t src_id, - const uint8_t broadcast_code[BT_AUDIO_BROADCAST_CODE_SIZE]); + const uint8_t broadcast_code[BT_ISO_BROADCAST_CODE_SIZE]); /** * @brief Remove a source from the server. @@ -2395,7 +2877,12 @@ int bt_bap_broadcast_assistant_set_broadcast_code( * @param conn Connection to the server. * @param src_id Source ID of the receive state. * - * @return Error value. 0 on success, GATT error or ERRNO on fail. + * @retval 0 Success + * @retval -EINVAL @p conn is NULL or %p conn has not done discovery or @p src_id is invalid + * @retval -EBUSY Another operation is already in progress for this @p conn + * @retval -ENOTCONN @p conn is not connected + * @retval -ENOMEM Could not allocated memory for the request + * @retval -ENOEXEC Unexpected scan or GATT error */ int bt_bap_broadcast_assistant_rem_src(struct bt_conn *conn, uint8_t src_id); @@ -2406,7 +2893,12 @@ int bt_bap_broadcast_assistant_rem_src(struct bt_conn *conn, uint8_t src_id); * @param idx The index of the receive start (0 up to the value from * bt_bap_broadcast_assistant_discover_cb) * - * @return Error value. 0 on success, GATT error or ERRNO on fail. + * @retval 0 Success + * @retval -EINVAL @p conn is NULL or %p conn has not done discovery or @p src_id is invalid + * @retval -EBUSY Another operation is already in progress for this @p conn + * @retval -ENOTCONN @p conn is not connected + * @retval -ENOMEM Could not allocated memory for the request + * @retval -ENOEXEC Unexpected scan or GATT error */ int bt_bap_broadcast_assistant_read_recv_state(struct bt_conn *conn, uint8_t idx); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/bap_lc3_preset.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/bap_lc3_preset.h index ac9b9533..2a4005dd 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/bap_lc3_preset.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/bap_lc3_preset.h @@ -21,12 +21,13 @@ * @ingroup bluetooth * @{ * - * These APIs provide preset for codec configuration and codec QoS based on values supplied by the + * These APIs provide preset for codec configuration and QoS based on values supplied by the * codec configuration tables in the BAP specification. * */ #include +#include #include #ifdef __cplusplus @@ -38,7 +39,7 @@ struct bt_bap_lc3_preset { /** The LC3 Codec */ struct bt_audio_codec_cfg codec_cfg; /** The BAP spec defined QoS values */ - struct bt_audio_codec_qos qos; + struct bt_bap_qos_cfg qos; }; /** Helper to declare an LC3 preset structure */ @@ -59,7 +60,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 26u, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 26u, 2u, 8u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 26u, 2u, 8u, 40000u)) /** * @brief Helper to declare LC3 Unicast 8_2_1 codec configuration @@ -71,7 +72,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 30U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 30u, 2u, 10u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 30u, 2u, 10u, 40000u)) /** * @brief Helper to declare LC3 Unicast 16_1_1 codec configuration @@ -83,7 +84,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 30U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 30u, 2u, 8u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 30u, 2u, 8u, 40000u)) /** * @brief Helper to declare LC3 Unicast 16_2_1 codec configuration @@ -97,7 +98,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 40U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 40u, 2u, 10u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 40u, 2u, 10u, 40000u)) /** * @brief Helper to declare LC3 Unicast 24_1_1 codec configuration @@ -109,7 +110,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 45U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 45u, 2u, 8u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 45u, 2u, 8u, 40000u)) /** * @brief Helper to declare LC3 Unicast 24_2_1 codec configuration @@ -123,7 +124,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 60U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 60u, 2u, 10u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 60u, 2u, 10u, 40000u)) /** * @brief Helper to declare LC3 Unicast 32_1_1 codec configuration @@ -135,7 +136,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 60U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 60u, 2u, 8u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 60u, 2u, 8u, 40000u)) /** * @brief Helper to declare LC3 Unicast 32_2_1 codec configuration @@ -147,7 +148,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 80U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 80u, 2u, 10u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 80u, 2u, 10u, 40000u)) /** * @brief Helper to declare LC3 Unicast 441_1_1 codec configuration @@ -159,7 +160,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 97U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_FRAMED(8163u, 97u, 5u, 24u, 40000u)) + BT_BAP_QOS_CFG_FRAMED(8163u, 97u, 5u, 24u, 40000u)) /** * @brief Helper to declare LC3 Unicast 441_2_1 codec configuration @@ -171,7 +172,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 130U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_FRAMED(10884u, 130u, 5u, 31u, 40000u)) + BT_BAP_QOS_CFG_FRAMED(10884u, 130u, 5u, 31u, 40000u)) /** * @brief Helper to declare LC3 Unicast 48_1_1 codec configuration @@ -183,7 +184,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 75U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 75u, 5u, 15u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 75u, 5u, 15u, 40000u)) /** * @brief Helper to declare LC3 Unicast 48_2_1 codec configuration @@ -195,7 +196,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 100U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 100u, 5u, 20u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 100u, 5u, 20u, 40000u)) /** * @brief Helper to declare LC3 Unicast 48_3_1 codec configuration @@ -207,7 +208,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 90U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 90u, 5u, 15u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 90u, 5u, 15u, 40000u)) /** * @brief Helper to declare LC3 Unicast 48_4_1 codec configuration @@ -219,7 +220,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 120u, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 120u, 5u, 20u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 120u, 5u, 20u, 40000u)) /** * @brief Helper to declare LC3 Unicast 8_5_1 codec configuration @@ -231,7 +232,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 117u, \ 1, _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 117u, 5u, 15u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 117u, 5u, 15u, 40000u)) /** * @brief Helper to declare LC3 Unicast 48_6_1 codec configuration @@ -243,7 +244,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 155u, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 155u, 5u, 20u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 155u, 5u, 20u, 40000u)) /** * @brief Helper to declare LC3 Unicast 8_1_2 codec configuration @@ -256,7 +257,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 26u, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 26u, 13u, 75u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 26u, 13u, 75u, 40000u)) /** * @brief Helper to declare LC3 Unicast 8_2_2 codec configuration @@ -268,7 +269,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 30U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 30u, 13u, 95u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 30u, 13u, 95u, 40000u)) /** * @brief Helper to declare LC3 Unicast 16_1_2 codec configuration @@ -280,7 +281,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 30U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 30u, 13u, 75u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 30u, 13u, 75u, 40000u)) /** * @brief Helper to declare LC3 Unicast 16_2_2 codec configuration @@ -292,7 +293,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 40U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 40u, 13u, 95u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 40u, 13u, 95u, 40000u)) /** * @brief Helper to declare LC3 Unicast 24_1_2 codec configuration @@ -304,7 +305,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 45U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 45u, 13u, 75u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 45u, 13u, 75u, 40000u)) /** * @brief Helper to declare LC3 Unicast 24_2_2 codec configuration @@ -316,7 +317,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 60U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 60u, 13u, 95u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 60u, 13u, 95u, 40000u)) /** * @brief Helper to declare LC3 Unicast 32_1_2 codec configuration @@ -328,7 +329,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 60U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 60u, 13u, 75u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 60u, 13u, 75u, 40000u)) /** * @brief Helper to declare LC3 Unicast 32_2_2 codec configuration @@ -340,7 +341,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 80U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 80u, 13u, 95u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 80u, 13u, 95u, 40000u)) /** * @brief Helper to declare LC3 Unicast 441_1_2 codec configuration @@ -352,7 +353,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 97U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_FRAMED(8163u, 97u, 13u, 80u, 40000u)) + BT_BAP_QOS_CFG_FRAMED(8163u, 97u, 13u, 80u, 40000u)) /** * @brief Helper to declare LC3 Unicast 441_2_2 codec configuration @@ -364,7 +365,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 130U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_FRAMED(10884u, 130u, 13u, 85u, 40000u)) + BT_BAP_QOS_CFG_FRAMED(10884u, 130u, 13u, 85u, 40000u)) /** * @brief Helper to declare LC3 Unicast 48_1_2 codec configuration @@ -376,7 +377,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 75U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 75u, 13u, 75u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 75u, 13u, 75u, 40000u)) /** * @brief Helper to declare LC3 Unicast 48_2_2 codec configuration @@ -388,7 +389,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 100U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 100u, 13u, 95u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 100u, 13u, 95u, 40000u)) /** * @brief Helper to declare LC3 Unicast 48_3_2 codec configuration @@ -400,7 +401,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 90U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 90u, 13u, 75u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 90u, 13u, 75u, 40000u)) /** * @brief Helper to declare LC3 Unicast 48_4_2 codec configuration @@ -412,7 +413,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 120u, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 120u, 13u, 100u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 120u, 13u, 100u, 40000u)) /** * @brief Helper to declare LC3 Unicast 48_5_2 codec configuration @@ -424,7 +425,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 117u, \ 1, _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 117u, 13u, 75u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 117u, 13u, 75u, 40000u)) /** * @brief Helper to declare LC3 Unicast 48_6_2 codec configuration @@ -436,7 +437,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 155u, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 155u, 13u, 100u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 155u, 13u, 100u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 8_1_1 codec configuration @@ -449,7 +450,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 26u, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 26u, 2u, 8u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 26u, 2u, 8u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 8_2_1 codec configuration @@ -461,7 +462,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 30U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 30u, 2u, 10u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 30u, 2u, 10u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 16_1_1 codec configuration @@ -473,7 +474,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 30U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 30u, 2u, 8u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 30u, 2u, 8u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 16_2_1 codec configuration @@ -487,7 +488,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 40U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 40u, 2u, 10u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 40u, 2u, 10u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 24_1_1 codec configuration @@ -499,7 +500,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 45U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 45u, 2u, 8u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 45u, 2u, 8u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 24_2_1 codec configuration @@ -513,7 +514,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 60U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 60u, 2u, 10u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 60u, 2u, 10u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 32_1_1 codec configuration @@ -525,7 +526,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 60U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 60u, 2u, 8u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 60u, 2u, 8u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 32_2_1 codec configuration @@ -537,7 +538,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 80U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 80u, 2u, 10u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 80u, 2u, 10u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 441_1_1 codec configuration @@ -549,7 +550,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 97U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_FRAMED(8163u, 97u, 4u, 24u, 40000u)) + BT_BAP_QOS_CFG_FRAMED(8163u, 97u, 4u, 24u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 441_2_1 codec configuration @@ -561,7 +562,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 130U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_FRAMED(10884u, 130u, 4u, 31u, 40000u)) + BT_BAP_QOS_CFG_FRAMED(10884u, 130u, 4u, 31u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 48_1_1 codec configuration @@ -573,7 +574,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 75U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 75u, 4u, 15u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 75u, 4u, 15u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 48_2_1 codec configuration @@ -585,7 +586,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 100U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 100u, 4u, 20u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 100u, 4u, 20u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 48_3_1 codec configuration @@ -597,7 +598,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 90U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 90u, 4u, 15u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 90u, 4u, 15u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 48_4_1 codec configuration @@ -609,7 +610,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 120u, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 120u, 4u, 20u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 120u, 4u, 20u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 48_5_1 codec configuration @@ -621,7 +622,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 117u, \ 1, _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 117u, 4u, 15u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 117u, 4u, 15u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 48_6_1 codec configuration @@ -633,7 +634,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 155u, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 155u, 4u, 20u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 155u, 4u, 20u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 8_1_2 codec configuration @@ -646,7 +647,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 26u, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 26u, 4u, 45u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 26u, 4u, 45u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 8_2_2 codec configuration @@ -658,7 +659,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_8KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 30U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 30u, 4u, 60u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 30u, 4u, 60u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 16_1_2 codec configuration @@ -670,7 +671,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 30U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 30u, 4u, 45u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 30u, 4u, 45u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 16_2_2 codec configuration @@ -684,7 +685,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 40U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 40u, 4u, 60u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 40u, 4u, 60u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 24_1_2 codec configuration @@ -696,7 +697,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 45U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 45u, 4u, 45u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 45u, 4u, 45u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 24_2_2 codec configuration @@ -710,7 +711,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_24KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 60U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 60u, 4u, 60u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 60u, 4u, 60u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 32_1_2 codec configuration @@ -722,7 +723,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 60U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 60u, 4u, 45u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 60u, 4u, 45u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 32_2_2 codec configuration @@ -734,7 +735,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 80U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 80u, 4u, 60u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 80u, 4u, 60u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 441_1_2 codec configuration @@ -746,7 +747,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 97U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_FRAMED(8163u, 97u, 4u, 54u, 40000u)) + BT_BAP_QOS_CFG_FRAMED(8163u, 97u, 4u, 54u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 441_2_2 codec configuration @@ -758,7 +759,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_44KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 130U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_FRAMED(10884u, 130u, 4u, 60u, 40000u)) + BT_BAP_QOS_CFG_FRAMED(10884u, 130u, 4u, 60u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 48_1_2 codec configuration @@ -770,7 +771,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 75U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 75u, 4u, 50u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 75u, 4u, 50u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 48_2_2 codec configuration @@ -782,7 +783,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 100U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 100u, 4u, 65u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 100u, 4u, 65u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 48_3_2 codec configuration @@ -794,7 +795,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 90U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 90u, 4u, 50u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 90u, 4u, 50u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 48_4_2 codec configuration @@ -806,7 +807,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 120u, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 120u, 4u, 65u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 120u, 4u, 65u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 48_5_2 codec configuration @@ -818,7 +819,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 117u, \ 1, _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 117u, 4u, 50u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 117u, 4u, 50u, 40000u)) /** * @brief Helper to declare LC3 Broadcast 48_6_2 codec configuration @@ -830,7 +831,7 @@ struct bt_bap_lc3_preset { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 155u, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 155u, 4u, 65u, 40000u)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 155u, 4u, 65u, 40000u)) #ifdef __cplusplus } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/cap.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/cap.h index f04c5c82..b539a463 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/cap.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/cap.h @@ -41,7 +41,7 @@ #include #include #include -#include +#include #ifdef __cplusplus extern "C" { @@ -128,6 +128,22 @@ struct bt_cap_initiator_cb { */ void (*unicast_stop_complete)(int err, struct bt_conn *conn); #endif /* CONFIG_BT_BAP_UNICAST_CLIENT */ +#if defined(CONFIG_BT_BAP_BROADCAST_SOURCE) + /** + * @brief The Broadcast Source has started and all of the streams are ready for audio data + * + * @param source The started Broadcast Source + */ + void (*broadcast_started)(struct bt_cap_broadcast_source *source); + + /** + * @brief The Broadcast Source has stopped and none of the streams are ready for audio data + * + * @param source The stopped Broadcast Source + * @param reason The reason why the Broadcast Source stopped (see the BT_HCI_ERR_* values) + */ + void (*broadcast_stopped)(struct bt_cap_broadcast_source *source, uint8_t reason); +#endif /* CONFIG_BT_BAP_BROADCAST_SOURCE */ }; /** @@ -312,6 +328,9 @@ struct bt_cap_unicast_audio_stop_param { /** Array of streams to stop */ struct bt_cap_stream **streams; + + /** Whether to release the streams after they have stopped */ + bool release; }; /** @@ -346,7 +365,10 @@ int bt_cap_initiator_unregister_cb(const struct bt_cap_initiator_cb *cb); * * @param param Parameters to start the audio streams. * - * @return 0 on success or negative error value on failure. + * @retval 0 on success + * @retval -EBUSY if a CAP procedure is already in progress + * @retval -EINVAL if any parameter is invalid + * @retval -EALREADY All streams are already in the streaming state */ int bt_cap_initiator_unicast_audio_start(const struct bt_cap_unicast_audio_start_param *param); @@ -376,7 +398,10 @@ int bt_cap_initiator_unicast_audio_update(const struct bt_cap_unicast_audio_upda * * @param param Stop parameters. * - * @return 0 on success or negative error value on failure. + * @return 0 on success + * @retval -EBUSY if a CAP procedure is already in progress + * @retval -EINVAL if any parameter is invalid + * @retval -EALREADY if no state changes will occur */ int bt_cap_initiator_unicast_audio_stop(const struct bt_cap_unicast_audio_stop_param *param); @@ -447,7 +472,7 @@ struct bt_cap_initiator_broadcast_create_param { struct bt_cap_initiator_broadcast_subgroup_param *subgroup_params; /** Quality of Service configuration. */ - struct bt_audio_codec_qos *qos; + struct bt_bap_qos_cfg *qos; /** * @brief Broadcast Source packing mode. @@ -473,7 +498,7 @@ struct bt_cap_initiator_broadcast_create_param { * The string "Broadcast Code" shall be * [42 72 6F 61 64 63 61 73 74 20 43 6F 64 65 00 00] */ - uint8_t broadcast_code[BT_AUDIO_BROADCAST_CODE_SIZE]; + uint8_t broadcast_code[BT_ISO_BROADCAST_CODE_SIZE]; #if defined(CONFIG_BT_ISO_TEST_PARAMS) || defined(__DOXYGEN__) /** @@ -594,23 +619,6 @@ int bt_cap_initiator_broadcast_audio_stop(struct bt_cap_broadcast_source *broadc */ int bt_cap_initiator_broadcast_audio_delete(struct bt_cap_broadcast_source *broadcast_source); -/** - * @brief Get the broadcast ID of a Common Audio Profile broadcast source - * - * This will return the 3-octet broadcast ID that should be advertised in the - * extended advertising data with @ref BT_UUID_BROADCAST_AUDIO_VAL as - * @ref BT_DATA_SVC_DATA16. - * - * See table 3.14 in the Basic Audio Profile v1.0.1 for the structure. - * - * @param[in] broadcast_source Pointer to the broadcast source. - * @param[out] broadcast_id Pointer to the 3-octet broadcast ID. - * - * @return int 0 if on success, errno on error. - */ -int bt_cap_initiator_broadcast_get_id(const struct bt_cap_broadcast_source *broadcast_source, - uint32_t *const broadcast_id); - /** * @brief Get the Broadcast Audio Stream Endpoint of a Common Audio Profile broadcast source * @@ -817,6 +825,28 @@ struct bt_cap_commander_cb { * by bt_cap_commander_cancel(). */ void (*broadcast_reception_start)(struct bt_conn *conn, int err); + /** + * @brief Callback for bt_cap_commander_broadcast_reception_stop(). + * + * @param conn Pointer to the connection where the error + * occurred. NULL if @p err is 0 or if cancelled by + * bt_cap_commander_cancel() + * @param err 0 on success, BT_GATT_ERR() with a + * specific ATT (BT_ATT_ERR_*) error code or -ECANCELED if cancelled + * by bt_cap_commander_cancel(). + */ + void (*broadcast_reception_stop)(struct bt_conn *conn, int err); + /** + * @brief Callback for bt_cap_commander_distribute_broadcast_code(). + * + * @param conn Pointer to the connection where the error + * occurred. NULL if @p err is 0 or if cancelled by + * bt_cap_commander_cancel() + * @param err 0 on success, BT_GATT_ERR() with a + * specific ATT (BT_ATT_ERR_*) error code or -ECANCELED if cancelled + * by bt_cap_commander_cancel(). + */ + void (*distribute_broadcast_code)(struct bt_conn *conn, int err); #endif /* CONFIG_BT_BAP_BROADCAST_ASSISTANT */ }; @@ -915,7 +945,7 @@ struct bt_cap_commander_broadcast_reception_start_member_param { * * At least one bit in one of the subgroups bis_sync parameters shall be set. */ - struct bt_bap_bass_subgroup subgroups[CONFIG_BT_BAP_BASS_MAX_SUBGROUPS]; + struct bt_bap_bass_subgroup subgroups[BT_BAP_BASS_MAX_SUBGROUPS]; /** Number of subgroups */ size_t num_subgroups; @@ -945,14 +975,25 @@ int bt_cap_commander_broadcast_reception_start( const struct bt_cap_commander_broadcast_reception_start_param *param); /** Parameters for stopping broadcast reception */ +struct bt_cap_commander_broadcast_reception_stop_member_param { + /** Coordinated or ad-hoc set member. */ + union bt_cap_set_member member; + + /** Source ID of the receive state. */ + uint8_t src_id; + + /** Number of subgroups */ + size_t num_subgroups; +}; + struct bt_cap_commander_broadcast_reception_stop_param { /** The type of the set. */ enum bt_cap_set_type type; - /** Coordinated or ad-hoc set member. */ - union bt_cap_set_member *members; + /** The set of devices for this procedure */ + struct bt_cap_commander_broadcast_reception_stop_member_param *param; - /** The number of members in @p members */ + /** The number of parameters in @p param */ size_t count; }; @@ -967,6 +1008,49 @@ struct bt_cap_commander_broadcast_reception_stop_param { int bt_cap_commander_broadcast_reception_stop( const struct bt_cap_commander_broadcast_reception_stop_param *param); +/** Parameters for distributing broadcast code */ +struct bt_cap_commander_distribute_broadcast_code_member_param { + /** Coordinated or ad-hoc set member. */ + union bt_cap_set_member member; + + /** Source ID of the receive state. */ + uint8_t src_id; +}; + +struct bt_cap_commander_distribute_broadcast_code_param { + /** The type of the set. */ + enum bt_cap_set_type type; + + /** The set of devices for this procedure */ + struct bt_cap_commander_distribute_broadcast_code_member_param *param; + + /** The number of parameters in @p param */ + size_t count; + + /** + * @brief 16-octet broadcast code. + * + * If the value is a string or a the value is less than 16 octets, + * the remaining octets shall be 0. + * + * Example: + * The string "Broadcast Code" shall be + * [42 72 6F 61 64 63 61 73 74 20 43 6F 64 65 00 00] + */ + uint8_t broadcast_code[BT_ISO_BROADCAST_CODE_SIZE]; +}; + +/** + * @brief Distributes the broadcast code on one or more remote Common Audio Profile + * Acceptors + * + * @param param The parameters for distributing the broadcast code + * + * @return 0 on success or negative error value on failure. + */ +int bt_cap_commander_distribute_broadcast_code( + const struct bt_cap_commander_distribute_broadcast_code_param *param); + /** Parameters for changing absolute volume */ struct bt_cap_commander_change_volume_param { /** The type of the set. */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/ccid.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/ccid.h new file mode 100644 index 00000000..9340ab87 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/ccid.h @@ -0,0 +1,74 @@ +/** + * @file + * @brief Header for Bluetooth Audio Content Control Identifier. + * + * Copyright (c) 2020 Bose Corporation + * Copyright (c) 2021-2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_CCID_H_ +#define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_CCID_H_ + +/** + * @brief Bluetooth Content Control Identifier (CCID) + * @defgroup bt_ccid Bluetooth Content Control Identifier + * + * @since 3.7 + * @version 0.8.0 + * + * @ingroup bluetooth + * @{ + * + * The Content Control Identifier (CCID) API manages CCIDs for @ref BT_UUID_CCID characteristics. + */ + +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** Minimum CCID value */ +#define BT_CCID_MIN 0 +/** Maximum CCID value */ +#define BT_CCID_MAX 255 + +/** + * @brief Allocates a CCID value. + * + * This should always be called right before registering a GATT service that contains a + * @ref BT_UUID_CCID characteristic. Allocating a CCID without registering the characteristic + * may (in very rare cases) result in duplicated CCIDs on the device. + * + * Requires that @kconfig{CONFIG_BT_CONN} is enabled. + * + * @retval ccid 8-bit unsigned CCID value on success + * @retval -ENOMEM No more CCIDs can be allocated + */ +int bt_ccid_alloc_value(void); + +/** + * @brief Get the GATT attribute of a CCID value + * + * Searches the current GATT database for a CCID characteristic that has the supplied CCID value. + * + * Requires that @kconfig{CONFIG_BT_CONN} is enabled. + * + * @param ccid The CCID to search for + * + * @retval NULL None was found + * @retval attr Pointer to a GATT attribute + */ +const struct bt_gatt_attr *bt_ccid_find_attr(uint8_t ccid); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_CCID_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/csip.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/csip.h index c813c81a..e5e059d3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/csip.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/csip.h @@ -15,7 +15,7 @@ /** * @brief Coordinated Set Identification Profile (CSIP) * - * @defgroup bt_gatt_csip Coordinated Set Identification Profile (CSIP) + * @defgroup bt_csip Coordinated Set Identification Profile (CSIP) * * @since 3.0 * @version 0.8.0 @@ -494,6 +494,8 @@ int bt_csip_set_coordinator_ordered_access( * * The members will be locked starting from lowest rank going up. * + * @kconfig_dep{CONFIG_BT_CSIP_SET_COORDINATOR,CONFIG_BT_BONDABLE} + * * TODO: If locking fails, the already locked members will not be unlocked. * * @param members Array of set members to lock. @@ -512,6 +514,8 @@ int bt_csip_set_coordinator_lock(const struct bt_csip_set_coordinator_set_member * * The members will be released starting from highest rank going down. * + * @kconfig_dep{CONFIG_BT_CSIP_SET_COORDINATOR,CONFIG_BT_BONDABLE} + * * @param members Array of set members to lock. * @param count Number of set members in @p members. * @param set_info Pointer to the a specific set_info struct, as a member may diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/gmap.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/gmap.h index 0fb5c3b0..edb38d04 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/gmap.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/gmap.h @@ -89,7 +89,7 @@ enum bt_gmap_ugt_feat { /** * @brief Source support * - * Requires @kconfig{CONFIG_BT_ASCS_ASE_SRC_COUNT} > 0 + * Requires @kconfig{CONFIG_BT_ASCS_MAX_ASE_SNK_COUNT} > 0 */ BT_GMAP_UGT_FEAT_SOURCE = BIT(0), /** @@ -101,7 +101,7 @@ enum bt_gmap_ugt_feat { /** * @brief Sink support * - * Requires @kconfig{CONFIG_BT_ASCS_ASE_SNK_COUNT} > 0 + * Requires @kconfig{CONFIG_BT_ASCS_MAX_ASE_SNK_COUNT} > 0 */ BT_GMAP_UGT_FEAT_SINK = BIT(2), /** @@ -119,14 +119,14 @@ enum bt_gmap_ugt_feat { /** * @brief Support for receiving at least two audio channels, each in a separate CIS * - * Requires @kconfig{CONFIG_BT_ASCS_ASE_SNK_COUNT} > 1 and + * Requires @kconfig{CONFIG_BT_ASCS_MAX_ASE_SNK_COUNT} > 1 and * @kconfig{CONFIG_BT_ASCS_MAX_ACTIVE_ASES} > 1, and BT_GMAP_UGT_FEAT_SINK to be set as well */ BT_GMAP_UGT_FEAT_MULTISINK = BIT(5), /** * @brief Support for sending at least two audio channels, each in a separate CIS * - * Requires @kconfig{CONFIG_BT_ASCS_ASE_SRC_COUNT} > 1 and + * Requires @kconfig{CONFIG_BT_ASCS_MAX_ASE_SNK_COUNT} > 1 and * @kconfig{CONFIG_BT_ASCS_MAX_ACTIVE_ASES} > 1, and BT_GMAP_UGT_FEAT_SOURCE to be set * as well */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/gmap_lc3_preset.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/gmap_lc3_preset.h index 35bce011..73217d9d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/gmap_lc3_preset.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/gmap_lc3_preset.h @@ -21,7 +21,7 @@ * @ingroup bluetooth * @{ * - * These APIs provide presets for codec configuration and codec QoS based on values supplied by the + * These APIs provide presets for codec configuration and QoS based on values supplied by the * codec configurations from table 3.16 in the GMAP v1.0 specification */ @@ -43,7 +43,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 60U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 60U, 1U, 15U, 10000U)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 60U, 1U, 15U, 10000U)) /** * @brief Helper to declare LC3 32_2_gr codec configuration @@ -55,7 +55,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 80U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 80U, 1U, 20U, 10000U)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 80U, 1U, 20U, 10000U)) /** * @brief Helper to declare LC3 48_1_gr codec configuration @@ -67,7 +67,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 75U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 75U, 1U, 15U, 10000U)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 75U, 1U, 15U, 10000U)) /** * @brief Helper to declare LC3 48_2_gr codec configuration @@ -81,7 +81,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 100U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 100U, 1U, 20U, 10000U)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 100U, 1U, 20U, 10000U)) /** * @brief Helper to declare LC3 48_3_gr codec configuration @@ -93,7 +93,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 90U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 90U, 1U, 15U, 10000U)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 90U, 1U, 15U, 10000U)) /** * @brief Helper to declare LC3 48_4_gr codec configuration @@ -107,7 +107,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 120u, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 120U, 1U, 20U, 10000U)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 120U, 1U, 20U, 10000U)) /** * @brief Helper to declare LC3 16_1_gs codec configuration @@ -119,7 +119,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 30U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 30U, 1U, 15U, 60000U)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 30U, 1U, 15U, 60000U)) /** * @brief Helper to declare LC3 16_2_gs codec configuration @@ -131,7 +131,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_16KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 40U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 40U, 1U, 20U, 60000U)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 40U, 1U, 20U, 60000U)) /** * @brief Helper to declare LC3 32_1_gs codec configuration @@ -143,7 +143,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 60U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 60U, 1U, 15U, 60000U)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 60U, 1U, 15U, 60000U)) /** * @brief Helper to declare LC3 32_2_gs codec configuration @@ -155,7 +155,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_32KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 80U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 80U, 1U, 20U, 60000U)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 80U, 1U, 20U, 60000U)) /** * @brief Helper to declare LC3 48_1_gs codec configuration @@ -167,7 +167,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 75U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 75U, 1U, 15U, 60000U)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 75U, 1U, 15U, 60000U)) /** * @brief Helper to declare LC3 48_2_gs codec configuration @@ -179,7 +179,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 100U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 100U, 1U, 20U, 60000U)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 100U, 1U, 20U, 60000U)) /* GMAP LC3 broadcast presets defined by table 3.22 in the GMAP v1.0 specification */ @@ -193,7 +193,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 75U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 75U, 1U, 8U, 10000U)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 75U, 1U, 8U, 10000U)) /** * @brief Helper to declare LC3 48_2_g codec configuration @@ -205,7 +205,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 100U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 100U, 1U, 10U, 10000U)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 100U, 1U, 10U, 10000U)) /** * @brief Helper to declare LC3 48_3_g codec configuration @@ -217,7 +217,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_7_5, _loc, 90U, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(7500u, 90U, 1U, 8U, 10000U)) + BT_BAP_QOS_CFG_UNFRAMED(7500u, 90U, 1U, 8U, 10000U)) /** * @brief Helper to declare LC3 48_4_g codec configuration @@ -229,7 +229,7 @@ extern "C" { BT_BAP_LC3_PRESET(BT_AUDIO_CODEC_LC3_CONFIG(BT_AUDIO_CODEC_CFG_FREQ_48KHZ, \ BT_AUDIO_CODEC_CFG_DURATION_10, _loc, 120u, 1, \ _stream_context), \ - BT_AUDIO_CODEC_QOS_UNFRAMED(10000u, 120U, 1U, 10U, 10000U)) + BT_BAP_QOS_CFG_UNFRAMED(10000u, 120U, 1U, 10U, 10000U)) #ifdef __cplusplus } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/lc3.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/lc3.h index b206a241..3b8d4e6a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/lc3.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/lc3.h @@ -14,7 +14,11 @@ /** * @brief LC3 - * @defgroup BT_AUDIO_CODEC_LC3 AUDIO + * @defgroup bt_lc3 Bluetooth LC3 codec + + * @since 3.0 + * @version 0.8.0 + * @ingroup bluetooth * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/mcc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/mcc.h index 6b6d0dcf..2b617554 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/mcc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/mcc.h @@ -17,7 +17,7 @@ * * Updated to the Media Control Profile specification revision 1.0 * - * @defgroup bt_gatt_mcc Media Control Client (MCC) + * @defgroup bt_mcc Media Control Client (MCC) * * @since 3.0 * @version 0.8.0 @@ -30,7 +30,7 @@ #include #include -#include +#include #include #ifdef __cplusplus diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/micp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/micp.h index ea79de94..45d75c51 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/micp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/micp.h @@ -15,7 +15,7 @@ /** * @brief Microphone Control Profile (MICP) * - * @defgroup bt_gatt_micp Microphone Control Profile (MICP) + * @defgroup bt_micp Microphone Control Profile (MICP) * * @since 2.7 * @version 0.8.0 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/pacs.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/pacs.h index 12023280..e956e0da 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/pacs.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/pacs.h @@ -15,7 +15,7 @@ /** * @brief Published Audio Capabilities Service (PACS) * - * @defgroup bt_gatt_csip Coordinated Set Identification Profile (CSIP) + * @defgroup bt_pacs Published Audio Capabilities Service (PACS) * * @since 3.0 * @version 0.8.0 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/pbp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/pbp.h index d577bfe7..db649e52 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/pbp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/pbp.h @@ -30,7 +30,7 @@ #include #include #include -#include +#include #include #include diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/tbs.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/tbs.h index 6c0451fb..6f408ff8 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/tbs.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/tbs.h @@ -30,6 +30,7 @@ #include #include +#include #include #ifdef __cplusplus @@ -125,6 +126,8 @@ extern "C" { #define BT_TBS_FEATURE_HOLD BIT(0) /** Join Call Control Point Opcode supported */ #define BT_TBS_FEATURE_JOIN BIT(1) +/** All Control Point Opcodes supported */ +#define BT_TBS_FEATURE_ALL (BT_TBS_FEATURE_HOLD | BT_TBS_FEATURE_JOIN) /** @} */ /** @@ -246,8 +249,6 @@ typedef void (*bt_tbs_call_change_cb)(struct bt_conn *conn, /** * @brief Callback function for authorizing a client. * - * Only used if BT_TBS_AUTHORIZATION is enabled. - * * @param conn The connection used. * * @return true if authorized, false otherwise @@ -461,6 +462,98 @@ int bt_tbs_set_uri_scheme_list(uint8_t bearer_index, const char **uri_list, */ void bt_tbs_register_cb(struct bt_tbs_cb *cbs); +struct bt_tbs_register_param { + /** The name of the provider, for example a cellular service provider */ + char *provider_name; + + /** + * @brief The Uniform Caller Identifier of the bearer + * + * See the Uniform Caller Identifiers table in Bluetooth Assigned Numbers + */ + char *uci; + + /** + * The Uniform Resource Identifiers schemes supported by this bearer as an UTF-8 string + * + * See https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml for possible values. + * If multiple values are used, these shall be comma separated, e.g. "tel,skype". + */ + char *uri_schemes_supported; + + /** + * @brief Whether this bearer shall be registered as a Generic Telephone Bearer server + * + * A GTBS shall be registered before any non-GTBS services. There can only be a single GTBS + * registered. + */ + bool gtbs; + + /** + * @brief Whether the application will need to authorize changes to calls + * + * If set to false then the service will automatically accept write requests from clients. + */ + bool authorization_required; + + /** + * @brief The technology of the bearer + * + * See the BT_TBS_TECHNOLOGY_* values. + */ + uint8_t technology; + + /** + * @brief The optional supported features of the bearer + * + * See the BT_TBS_FEATURE_* values. + */ + uint8_t supported_features; +}; + +/** + * @brief Register a Telephone Bearer + * + * This will register a Telephone Bearer Service (TBS) (or a Generic Telephone Bearer service + * (GTBS)) with the provided parameters. + * + * As per the TBS specification, the GTBS shall be instantiated for the feature, and as such a GTBS + * shall always be registered before any TBS can be registered. + * Similarly, all TBS shall be unregistered before the GTBS can be unregistered with + * bt_tbs_unregister_bearer(). + * + * @param param The parameters to initialize the bearer. + + * @retval index The bearer index if return value is >= 0 + * @retval -EINVAL @p param contains invalid data + * @retval -EALREADY @p param.gtbs is true and GTBS has already been registered + * @retval -EAGAIN @p param.gtbs is false and GTBS has not been registered + * @retval -ENOMEM @p param.gtbs is false and no more TBS can be registered (see + * @kconfig{CONFIG_BT_TBS_BEARER_COUNT}) + * @retval -ENOEXEC The service failed to be registered + */ +int bt_tbs_register_bearer(const struct bt_tbs_register_param *param); + +/** + * @brief Unregister a Telephone Bearer + * + * This will unregister a Telephone Bearer Service (TBS) (or a Generic Telephone Bearer service + * (GTBS)) with the provided parameters. The bearer shall be registered first by + * bt_tbs_register_bearer() before it can be unregistered. + * + * Similarly, all TBS shall be unregistered before the GTBS can be unregistered with. + * + * @param bearer_index The index of the bearer to unregister. + * + * @retval 0 Success + * @retval -EINVAL @p bearer_index is invalid + * @retval -EALREADY The bearer identified by @p bearer_index is not registered + * @retval -EAGAIN The bearer identified by @p bearer_index is GTBS and there are TBS instances + * registered. + * @retval -ENOEXEC The service failed to be unregistered + */ +int bt_tbs_unregister_bearer(uint8_t bearer_index); + /** @brief Prints all calls of all services to the debug log */ void bt_tbs_dbg_print_calls(void); @@ -680,6 +773,9 @@ struct bt_tbs_client_cb { /** Bearer friendly name has been read */ bt_tbs_client_read_string_cb friendly_name; #endif /* defined(CONFIG_BT_TBS_CLIENT_CALL_FRIENDLY_NAME) */ + + /** @internal Internally used field for list handling */ + sys_snode_t _node; }; /** @@ -998,8 +1094,12 @@ int bt_tbs_client_read_optional_opcodes(struct bt_conn *conn, * @brief Register the callbacks for CCP. * * @param cbs Pointer to the callback structure. + * + * @retval 0 Success + * @retval -EINVAL @p cbs is NULL + * @retval -EEXIST @p cbs is already registered */ -void bt_tbs_client_register_cb(const struct bt_tbs_client_cb *cbs); +int bt_tbs_client_register_cb(struct bt_tbs_client_cb *cbs); /** * @brief Look up Telephone Bearer Service instance by CCID diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/tmap.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/tmap.h index 94682cee..ad16aead 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/tmap.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/tmap.h @@ -11,6 +11,21 @@ #ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_TMAP_ #define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_TMAP_ +/** + * @brief Telephone and Media Audio Profile (TMAP) + * + * @defgroup bt_tmap Telephone and Media Audio Profile (TMAP) + * + * @since 3.4 + * @version 0.8.0 + * + * @ingroup bluetooth + * @{ + * + * The Telephone and Media Audio Profile (TMAP) uses a collection of Bluetooth features and profiles + * to enable interoperability between devices for telephony and media audio. + */ + #include #include #include @@ -138,4 +153,8 @@ int bt_tmap_discover(struct bt_conn *conn, const struct bt_tmap_cb *tmap_cb); */ void bt_tmap_set_role(enum bt_tmap_role role); +/** + * @} + */ + #endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_TMAP_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/vcp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/vcp.h index ae26112c..29662ffe 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/vcp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/vcp.h @@ -15,7 +15,7 @@ /** * @brief Volume Control Profile (VCP) * - * @defgroup bt_gatt_vcp Volume Control Profile (VCP) + * @defgroup bt_vcp Volume Control Profile (VCP) * * @since 2.7 * @version 0.8.0 @@ -163,12 +163,14 @@ struct bt_vcp_vol_rend_cb { * bt_vcp_vol_rend_get_state(), or if the state is changed by either * the Volume Renderer or a remote Volume Controller. * + * @param conn Pointer to the connection to a remote device if + * the change was caused by it, otherwise NULL. * @param err Error value. 0 on success, GATT error on positive value * or errno on negative value. * @param volume The volume of the Volume Control Service server. * @param mute The mute setting of the Volume Control Service server. */ - void (*state)(int err, uint8_t volume, uint8_t mute); + void (*state)(struct bt_conn *conn, int err, uint8_t volume, uint8_t mute); /** * @brief Callback function for Volume Control Service flags. @@ -177,11 +179,13 @@ struct bt_vcp_vol_rend_cb { * Called when the value is remotely read as the client. * Called if the value is changed by either the server or client. * + * @param conn Pointer to the connection to a remote device if + * the change was caused by it, otherwise NULL. * @param err Error value. 0 on success, GATT error on positive value * or errno on negative value. * @param flags The flags of the Volume Control Service server. */ - void (*flags)(int err, uint8_t flags); + void (*flags)(struct bt_conn *conn, int err, uint8_t flags); }; /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/vocs.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/vocs.h index 7de2d686..7a17c095 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/vocs.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/audio/vocs.h @@ -15,7 +15,7 @@ /** * @brief Volume Offset Control Service (VOCS) * - * @defgroup bt_gatt_vocs Volume Offset Control Service (VOCS) + * @defgroup bt_vocs Volume Offset Control Service (VOCS) * * @since 2.6 * @version 0.8.0 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/bluetooth.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/bluetooth.h index f26d72c5..b488e8d0 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/bluetooth.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/bluetooth.h @@ -22,10 +22,12 @@ #include #include -#include +#include #include #include #include +#include +#include #ifdef __cplusplus extern "C" { @@ -220,7 +222,7 @@ typedef void (*bt_ready_cb_t)(int err); * earlier. * * @param cb Callback to notify completion or NULL to perform the - * enabling synchronously. + * enabling synchronously. The callback is called from the system workqueue. * * @return Zero on success or (negative) error code otherwise. */ @@ -236,7 +238,8 @@ int bt_enable(bt_ready_cb_t cb); * with settings_load() before reenabling the stack. * * This API does _not_ clear previously registered callbacks - * like @ref bt_le_scan_cb_register and @ref bt_conn_cb_register. + * like @ref bt_le_scan_cb_register, @ref bt_conn_cb_register + * AND @ref bt_br_discovery_cb_register. * That is, the application shall not re-register them when * the Bluetooth subsystem is re-enabled later. * @@ -523,16 +526,42 @@ enum { /** * @brief Advertise as connectable. * + * @deprecated Use @ref BT_LE_ADV_OPT_CONN instead. + * * Advertise as connectable. If not connectable then the type of * advertising is determined by providing scan response data. * The advertiser address is determined by the type of advertising * and/or enabling privacy @kconfig{CONFIG_BT_PRIVACY}. + * + * Starting connectable advertising preallocates a connection + * object. If this fails, the API returns @c -ENOMEM. + * + * When an advertiser set results in a connection creation, the + * controller automatically disables that advertising set. + * + * If the advertising set was started with @ref bt_le_adv_start + * without @ref BT_LE_ADV_OPT_ONE_TIME, the host will attempt to + * resume the advertiser under some conditions. + */ + BT_LE_ADV_OPT_CONNECTABLE __deprecated = BIT(0), + + /** + * @internal + * + * Internal access to the deprecated value to maintain the + * implementation of the deprecated feature. + * + * At the end of the deprecation period, ABI will change so + * `BT_LE_ADV_OPT_CONN` is just `BIT(0)`, removing the need for this + * symbol. */ - BT_LE_ADV_OPT_CONNECTABLE = BIT(0), + _BT_LE_ADV_OPT_CONNECTABLE = BIT(0), /** * @brief Advertise one time. * + * @deprecated Use @ref BT_LE_ADV_OPT_CONN instead. + * * Don't try to resume connectable advertising after a connection. * This option is only meaningful when used together with * BT_LE_ADV_OPT_CONNECTABLE. If set the advertising will be stopped @@ -544,7 +573,35 @@ enum { * @ref bt_le_ext_adv_start then this behavior is the default behavior * and this flag has no effect. */ - BT_LE_ADV_OPT_ONE_TIME = BIT(1), + BT_LE_ADV_OPT_ONE_TIME __deprecated = BIT(1), + + /** + * @internal + * + * Internal access to the deprecated value to maintain + * the implementation of the deprecated feature. + */ + _BT_LE_ADV_OPT_ONE_TIME = BIT(1), + + /** + * @brief Connectable advertising + * + * Starting connectable advertising preallocates a connection + * object. If this fails, the API returns @c -ENOMEM. + * + * The advertising set stops immediately after it creates a + * connection. This happens automatically in the controller. + * + * @note To continue advertising after a connection is created, + * the application should listen for the @ref bt_conn_cb.connected + * event and start the advertising set again. Note that the + * advertiser cannot be started when all connection objects are + * in use. In that case, defer starting the advertiser until + * @ref bt_conn_cb.recycled. To continue after a disconnection, + * listen for @ref bt_conn_cb.recycled. + + */ + BT_LE_ADV_OPT_CONN = BIT(0) | BIT(1), /** * @brief Advertise using identity address. @@ -623,8 +680,7 @@ enum { * @brief Support scan response data. * * When used together with @ref BT_LE_ADV_OPT_EXT_ADV then this option - * cannot be used together with the @ref BT_LE_ADV_OPT_CONNECTABLE - * option. + * cannot be used together with the @ref BT_LE_ADV_OPT_CONN option. * When used together with @ref BT_LE_ADV_OPT_EXT_ADV then scan * response data must be set. */ @@ -912,20 +968,61 @@ struct bt_le_per_adv_param { BT_LE_ADV_PARAM_INIT(_options, _int_min, _int_max, _peer) \ }) -#define BT_LE_ADV_CONN_DIR(_peer) BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | \ - BT_LE_ADV_OPT_ONE_TIME, 0, 0,\ - _peer) +#define BT_LE_ADV_CONN_DIR(_peer) BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONN, 0, 0, _peer) +/** + * @deprecated This is a convenience macro for @ref + * BT_LE_ADV_OPT_CONNECTABLE, which is deprecated. Please use + * @ref BT_LE_ADV_CONN_FAST_1 or @ref BT_LE_ADV_CONN_FAST_2 + * instead. + */ +#define BT_LE_ADV_CONN \ + BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE, BT_GAP_ADV_FAST_INT_MIN_2, \ + BT_GAP_ADV_FAST_INT_MAX_2, NULL) \ + __DEPRECATED_MACRO -#define BT_LE_ADV_CONN BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE, \ - BT_GAP_ADV_FAST_INT_MIN_2, \ - BT_GAP_ADV_FAST_INT_MAX_2, NULL) +/** @brief GAP recommended connectable advertising + * + * This is the recommended default for when a person is likely + * to be waiting the device to connect or be discovered. + * + * Use a longer interval to conserve battery at the cost of + * responsiveness. Consider entering a lower power state with + * longer intervals after a timeout. + * + * GAP recommends advertisers use this "when user-initiated". + * The application developer decides what this means. It can by + * any time the user interacts with the device, a press on a + * dedicated Bluetooth wakeup button, or anything in-between. + * + * This is the recommended setting for limited discoverable + * mode. + * + * See Bluetooth Core Specification: + * - 3.C.A "Timers and Constants", T_GAP(adv_fast_interval1) + * - 3.C.9.3.11 "Connection Establishment Timing parameters" + */ +#define BT_LE_ADV_CONN_FAST_1 \ + BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONN, BT_GAP_ADV_FAST_INT_MIN_1, BT_GAP_ADV_FAST_INT_MAX_1, \ + NULL) -/** This is the recommended default for connectable advertisers. +/** @brief Connectable advertising with + * T_GAP(adv_fast_interval2) + * + * The advertising interval corresponds to what was offered as + * `BT_LE_ADV_CONN` in Zephyr 3.6 and earlier, but unlike + * `BT_LE_ADV_CONN`, the host does not automatically resume the + * advertiser after it results in a connection. + * + * See Bluetooth Core Specification: + * - 3.C.A "Timers and Constants", T_GAP(adv_fast_interval1) + * - 3.C.9.3.11 "Connection Establishment Timing parameters" */ -#define BT_LE_ADV_CONN_ONE_TIME \ - BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_ONE_TIME, \ - BT_GAP_ADV_FAST_INT_MIN_2, BT_GAP_ADV_FAST_INT_MAX_2, NULL) +#define BT_LE_ADV_CONN_FAST_2 \ + BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONN, BT_GAP_ADV_FAST_INT_MIN_2, BT_GAP_ADV_FAST_INT_MAX_2, \ + NULL) + +#define BT_LE_ADV_CONN_ONE_TIME BT_LE_ADV_CONN_FAST_2 __DEPRECATED_MACRO /** * @deprecated This macro will be removed in the near future, see @@ -948,11 +1045,9 @@ struct bt_le_per_adv_param { BT_GAP_ADV_FAST_INT_MAX_2, NULL) \ __DEPRECATED_MACRO -#define BT_LE_ADV_CONN_DIR_LOW_DUTY(_peer) \ - BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_ONE_TIME | \ - BT_LE_ADV_OPT_DIR_MODE_LOW_DUTY, \ - BT_GAP_ADV_FAST_INT_MIN_2, BT_GAP_ADV_FAST_INT_MAX_2, \ - _peer) +#define BT_LE_ADV_CONN_DIR_LOW_DUTY(_peer) \ + BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONN | BT_LE_ADV_OPT_DIR_MODE_LOW_DUTY, \ + BT_GAP_ADV_FAST_INT_MIN_2, BT_GAP_ADV_FAST_INT_MAX_2, _peer) /** Non-connectable advertising with private address */ #define BT_LE_ADV_NCONN BT_LE_ADV_PARAM(0, BT_GAP_ADV_FAST_INT_MIN_2, \ @@ -976,11 +1071,9 @@ struct bt_le_per_adv_param { NULL) /** Connectable extended advertising */ -#define BT_LE_EXT_ADV_CONN BT_LE_ADV_PARAM(BT_LE_ADV_OPT_EXT_ADV | \ - BT_LE_ADV_OPT_CONNECTABLE, \ - BT_GAP_ADV_FAST_INT_MIN_2, \ - BT_GAP_ADV_FAST_INT_MAX_2, \ - NULL) +#define BT_LE_EXT_ADV_CONN \ + BT_LE_ADV_PARAM(BT_LE_ADV_OPT_EXT_ADV | BT_LE_ADV_OPT_CONN, BT_GAP_ADV_FAST_INT_MIN_2, \ + BT_GAP_ADV_FAST_INT_MAX_2, NULL) /** * @deprecated This macro will be removed in the near future, see @@ -2065,12 +2158,26 @@ struct bt_le_scan_param { uint8_t type; /** Bit-field of scanning options. */ - uint32_t options; + uint8_t options; - /** Scan interval (N * 0.625 ms) */ + /** Scan interval (N * 0.625 ms). + * + * @note When @kconfig{CONFIG_BT_SCAN_AND_INITIATE_IN_PARALLEL} is enabled + * and the application wants to scan and connect in parallel, + * the Bluetooth Controller may require the scan interval used + * for scanning and connection establishment to be equal to + * obtain the best performance. + */ uint16_t interval; - /** Scan window (N * 0.625 ms) */ + /** Scan window (N * 0.625 ms) + * + * @note When @kconfig{CONFIG_BT_SCAN_AND_INITIATE_IN_PARALLEL} is enabled + * and the application wants to scan and connect in parallel, + * the Bluetooth Controller may require the scan window used + * for scanning and connection establishment to be equal to + * obtain the best performance. + */ uint16_t window; /** @@ -2294,6 +2401,7 @@ BUILD_ASSERT(BT_GAP_SCAN_FAST_WINDOW == BT_GAP_SCAN_FAST_INTERVAL_MIN, * * @return Zero on success or error code otherwise, positive in case of * protocol error or negative (POSIX) in case of stack internal error. + * @retval -EBUSY if the scanner is already being started in a different thread. */ int bt_le_scan_start(const struct bt_le_scan_param *param, bt_le_scan_cb_t cb); @@ -2506,126 +2614,6 @@ int bt_le_oob_get_local(uint8_t id, struct bt_le_oob *oob); int bt_le_ext_adv_oob_get_local(struct bt_le_ext_adv *adv, struct bt_le_oob *oob); -/** @brief BR/EDR discovery result structure */ -struct bt_br_discovery_result { - /** private */ - uint8_t _priv[4]; - - /** Remote device address */ - bt_addr_t addr; - - /** RSSI from inquiry */ - int8_t rssi; - - /** Class of Device */ - uint8_t cod[3]; - - /** Extended Inquiry Response */ - uint8_t eir[240]; -}; - -/** - * @typedef bt_br_discovery_cb_t - * @brief Callback type for reporting BR/EDR discovery (inquiry) - * results. - * - * A callback of this type is given to the bt_br_discovery_start() - * function and will be called at the end of the discovery with - * information about found devices populated in the results array. - * - * @param results Storage used for discovery results - * @param count Number of valid discovery results. - */ -typedef void bt_br_discovery_cb_t(struct bt_br_discovery_result *results, - size_t count); - -/** BR/EDR discovery parameters */ -struct bt_br_discovery_param { - /** Maximum length of the discovery in units of 1.28 seconds. - * Valid range is 0x01 - 0x30. - */ - uint8_t length; - - /** True if limited discovery procedure is to be used. */ - bool limited; -}; - -/** - * @brief Start BR/EDR discovery - * - * Start BR/EDR discovery (inquiry) and provide results through the specified - * callback. When bt_br_discovery_cb_t is called it indicates that discovery - * has completed. If more inquiry results were received during session than - * fits in provided result storage, only ones with highest RSSI will be - * reported. - * - * @param param Discovery parameters. - * @param results Storage for discovery results. - * @param count Number of results in storage. Valid range: 1-255. - * @param cb Callback to notify discovery results. - * - * @return Zero on success or error code otherwise, positive in case - * of protocol error or negative (POSIX) in case of stack internal error - */ -int bt_br_discovery_start(const struct bt_br_discovery_param *param, - struct bt_br_discovery_result *results, size_t count, - bt_br_discovery_cb_t cb); - -/** - * @brief Stop BR/EDR discovery. - * - * Stops ongoing BR/EDR discovery. If discovery was stopped by this call - * results won't be reported - * - * @return Zero on success or error code otherwise, positive in case of - * protocol error or negative (POSIX) in case of stack internal error. - */ -int bt_br_discovery_stop(void); - -struct bt_br_oob { - /** BR/EDR address. */ - bt_addr_t addr; -}; - -/** - * @brief Get BR/EDR local Out Of Band information - * - * This function allows to get local controller information that are useful - * for Out Of Band pairing or connection creation process. - * - * @param oob Out Of Band information - */ -int bt_br_oob_get_local(struct bt_br_oob *oob); - - -/** - * @brief Enable/disable set controller in discoverable state. - * - * Allows make local controller to listen on INQUIRY SCAN channel and responds - * to devices making general inquiry. To enable this state it's mandatory - * to first be in connectable state. - * - * @param enable Value allowing/disallowing controller to become discoverable. - * - * @return Negative if fail set to requested state or requested state has been - * already set. Zero if done successfully. - */ -int bt_br_set_discoverable(bool enable); - -/** - * @brief Enable/disable set controller in connectable state. - * - * Allows make local controller to be connectable. It means the controller - * start listen to devices requests on PAGE SCAN channel. If disabled also - * resets discoverability if was set. - * - * @param enable Value allowing/disallowing controller to be connectable. - * - * @return Negative if fail set to requested state or requested state has been - * already set. Zero if done successfully. - */ -int bt_br_set_connectable(bool enable); - /** * @brief Clear pairing information. * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/buf.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/buf.h index b373ab5b..dd452342 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/buf.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/buf.h @@ -20,7 +20,7 @@ #include -#include +#include #include #include @@ -28,22 +28,22 @@ extern "C" { #endif -/** Possible types of buffers passed around the Bluetooth stack */ +/** Possible types of buffers passed around the Bluetooth stack in a form of bitmask. */ enum bt_buf_type { /** HCI command */ - BT_BUF_CMD, + BT_BUF_CMD = BIT(0), /** HCI event */ - BT_BUF_EVT, + BT_BUF_EVT = BIT(1), /** Outgoing ACL data */ - BT_BUF_ACL_OUT, + BT_BUF_ACL_OUT = BIT(2), /** Incoming ACL data */ - BT_BUF_ACL_IN, + BT_BUF_ACL_IN = BIT(3), /** Outgoing ISO data */ - BT_BUF_ISO_OUT, + BT_BUF_ISO_OUT = BIT(4), /** Incoming ISO data */ - BT_BUF_ISO_IN, + BT_BUF_ISO_IN = BIT(5), /** H:4 data */ - BT_BUF_H4, + BT_BUF_H4 = BIT(6), }; /** @brief This is a base type for bt_buf user data. */ @@ -85,13 +85,41 @@ struct bt_buf_data { #define BT_BUF_ISO_RX_COUNT 0 #endif /* CONFIG_BT_ISO */ +/* see Core Spec v6.0 vol.4 part E 7.4.5 */ +#define BT_BUF_ACL_RX_COUNT_MAX 65535 + +#if defined(CONFIG_BT_CONN) && defined(CONFIG_BT_HCI_HOST) + /* The host needs more ACL buffers than maximum ACL links. This is because of + * the way we re-assemble ACL packets into L2CAP PDUs. + * + * We keep around the first buffer (that comes from the driver) to do + * re-assembly into, and if all links are re-assembling, there will be no buffer + * available for the HCI driver to allocate from. + * + * TODO: When CONFIG_BT_BUF_ACL_RX_COUNT is removed, + * remove the MAX and only keep (CONFIG_BT_MAX_CONN + 1) + */ +#define BT_BUF_ACL_RX_COUNT \ + (MAX(CONFIG_BT_BUF_ACL_RX_COUNT, (CONFIG_BT_MAX_CONN + 1)) + \ + CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA) +#else +#define BT_BUF_ACL_RX_COUNT 0 +#endif /* CONFIG_BT_CONN && CONFIG_BT_HCI_HOST */ + +#if defined(CONFIG_BT_BUF_ACL_RX_COUNT) && CONFIG_BT_BUF_ACL_RX_COUNT > 0 +#warning "CONFIG_BT_BUF_ACL_RX_COUNT is deprecated, see Zephyr 4.1 migration guide" +#endif /* CONFIG_BT_BUF_ACL_RX_COUNT && CONFIG_BT_BUF_ACL_RX_COUNT > 0 */ + +BUILD_ASSERT(BT_BUF_ACL_RX_COUNT <= BT_BUF_ACL_RX_COUNT_MAX, + "Maximum number of ACL RX buffer is 65535, reduce CONFIG_BT_BUF_ACL_RX_COUNT_EXTRA"); + /** Data size needed for HCI ACL, HCI ISO or Event RX buffers */ #define BT_BUF_RX_SIZE (MAX(MAX(BT_BUF_ACL_RX_SIZE, BT_BUF_EVT_RX_SIZE), \ BT_BUF_ISO_RX_SIZE)) /** Buffer count needed for HCI ACL, HCI ISO or Event RX buffers */ #define BT_BUF_RX_COUNT (MAX(MAX(CONFIG_BT_BUF_EVT_RX_COUNT, \ - CONFIG_BT_BUF_ACL_RX_COUNT), \ + BT_BUF_ACL_RX_COUNT), \ BT_BUF_ISO_RX_COUNT)) /** Data size needed for HCI Command buffers. */ @@ -110,6 +138,27 @@ struct bt_buf_data { */ struct net_buf *bt_buf_get_rx(enum bt_buf_type type, k_timeout_t timeout); +/** A callback to notify about freed buffer in the incoming data pool. + * + * This callback is called when a buffer of a given type is freed and can be requested through the + * @ref bt_buf_get_rx function. However, this callback is called from the context of the buffer + * freeing operation and must not attempt to allocate a new buffer from the same pool. + * + * @warning When this callback is called, the scheduler is locked and the callee must not perform + * any action that makes the current thread unready. This callback must only be used for very + * short non-blocking operation (e.g. submitting a work item). + * + * @param type_mask A bit mask of buffer types that have been freed. + */ +typedef void (*bt_buf_rx_freed_cb_t)(enum bt_buf_type type_mask); + +/** Set the callback to notify about freed buffer in the incoming data pool. + * + * @param cb Callback to notify about freed buffer in the incoming data pool. If NULL, the callback + * is disabled. + */ +void bt_buf_rx_freed_cb_set(bt_buf_rx_freed_cb_t cb); + /** Allocate a buffer for outgoing data * * This will set the buffer type so bt_buf_set_type() does not need to diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/byteorder.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/byteorder.h index 8ac17da4..d8432c5d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/byteorder.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/byteorder.h @@ -107,6 +107,78 @@ extern "C" { BT_BYTES_LIST_LE32(_v), \ BT_BYTES_LIST_LE32((_v) >> 32) \ +/** @brief Encode 16-bit value into array values in big-endian format. + * + * Helper macro to encode 16-bit values into comma separated values. + * + * @note @p _v is evaluated 2 times. + * + * @param _v 16-bit integer in host endianness. + * + * @return The comma separated values for the 16-bit value. + */ +#define BT_BYTES_LIST_BE16(_v) (((_v) >> 8) & 0xFFU), (((_v) >> 0) & 0xFFU) + +/** @brief Encode 24-bit value into array values in big-endian format. + * + * Helper macro to encode 24-bit values into comma separated values. + * + * @note @p _v is evaluated 3 times. + * + * @param _v 24-bit integer in host endianness. + * + * @return The comma separated values for the 24-bit value. + */ +#define BT_BYTES_LIST_BE24(_v) (((_v) >> 16) & 0xFFU), BT_BYTES_LIST_BE16(_v) + +/** @brief Encode 32-bit value into array values in big-endian format. + * + * Helper macro to encode 32-bit values into comma separated values. + * + * @note @p _v is evaluated 4 times. + * + * @param _v 32-bit integer in host endianness. + * + * @return The comma separated values for the 32-bit value. + */ +#define BT_BYTES_LIST_BE32(_v) (((_v) >> 24) & 0xFFU), BT_BYTES_LIST_BE24(_v) + +/** @brief Encode 40-bit value into array values in big-endian format. + * + * Helper macro to encode 40-bit values into comma separated values. + * + * @note @p _v is evaluated 5 times. + * + * @param _v 40-bit integer in host endianness. + * + * @return The comma separated values for the 40-bit value. + */ +#define BT_BYTES_LIST_BE40(_v) BT_BYTES_LIST_BE16((_v) >> 24), BT_BYTES_LIST_BE24(_v) + +/** @brief Encode 48-bit value into array values in big-endian format. + * + * Helper macro to encode 48-bit values into comma separated values. + * + * @note @p _v is evaluated 6 times. + * + * @param _v 48-bit integer in host endianness. + * + * @return The comma separated values for the 48-bit value. + */ +#define BT_BYTES_LIST_BE48(_v) BT_BYTES_LIST_BE16((_v) >> 32), BT_BYTES_LIST_BE32(_v) + +/** @brief Encode 64-bit value into array values in big-endian format. + * + * Helper macro to encode 64-bit values into comma separated values. + * + * @note @p _v is evaluated 8 times. + * + * @param _v 64-bit integer in host endianness. + * + * @return The comma separated values for the 64-bit value. + */ +#define BT_BYTES_LIST_BE64(_v) BT_BYTES_LIST_BE32((_v) >> 32), BT_BYTES_LIST_BE32(_v) + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/classic/avrcp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/classic/avrcp.h new file mode 100644 index 00000000..4c422570 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/classic/avrcp.h @@ -0,0 +1,127 @@ +/** @file + * @brief Audio Video Remote Control Profile header. + */ + +/* + * Copyright (c) 2015-2016 Intel Corporation + * Copyright (C) 2024 Xiaomi Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_BLUETOOTH_AVRCP_H_ +#define ZEPHYR_INCLUDE_BLUETOOTH_AVRCP_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** @brief AVRCP structure */ +struct bt_avrcp; + +struct bt_avrcp_unit_info_rsp { + uint8_t unit_type; + uint32_t company_id; +}; + +struct bt_avrcp_subunit_info_rsp { + uint8_t subunit_type; + uint8_t max_subunit_id; + const uint8_t *extended_subunit_type; /**< contains max_subunit_id items */ + const uint8_t *extended_subunit_id; /**< contains max_subunit_id items */ +}; + +struct bt_avrcp_cb { + /** @brief An AVRCP connection has been established. + * + * This callback notifies the application of an avrcp connection, + * i.e., an AVCTP L2CAP connection. + * + * @param avrcp AVRCP connection object. + */ + void (*connected)(struct bt_avrcp *avrcp); + /** @brief An AVRCP connection has been disconnected. + * + * This callback notifies the application that an avrcp connection + * has been disconnected. + * + * @param avrcp AVRCP connection object. + */ + void (*disconnected)(struct bt_avrcp *avrcp); + /** @brief Callback function for bt_avrcp_get_unit_info(). + * + * Called when the get unit info process is completed. + * + * @param avrcp AVRCP connection object. + * @param rsp The response for UNIT INFO command. + */ + void (*unit_info_rsp)(struct bt_avrcp *avrcp, struct bt_avrcp_unit_info_rsp *rsp); + /** @brief Callback function for bt_avrcp_get_subunit_info(). + * + * Called when the get subunit info process is completed. + * + * @param avrcp AVRCP connection object. + * @param rsp The response for SUBUNIT INFO command. + */ + void (*subunit_info_rsp)(struct bt_avrcp *avrcp, struct bt_avrcp_subunit_info_rsp *rsp); +}; + +/** @brief Connect AVRCP. + * + * This function is to be called after the conn parameter is obtained by + * performing a GAP procedure. The API is to be used to establish AVRCP + * connection between devices. + * + * @param conn Pointer to bt_conn structure. + * + * @return pointer to struct bt_avrcp in case of success or NULL in case + * of error. + */ +struct bt_avrcp *bt_avrcp_connect(struct bt_conn *conn); + +/** @brief Disconnect AVRCP. + * + * This function close AVCTP L2CAP connection. + * + * @param avrcp The AVRCP instance. + * + * @return 0 in case of success or error code in case of error. + */ +int bt_avrcp_disconnect(struct bt_avrcp *avrcp); + +/** @brief Register callback. + * + * Register AVRCP callbacks to monitor the state and interact with the remote device. + * + * @param cb The callback function. + * + * @return 0 in case of success or error code in case of error. + */ +int bt_avrcp_register_cb(const struct bt_avrcp_cb *cb); + +/** @brief Get AVRCP Unit Info. + * + * This function obtains information that pertains to the AV/C unit as a whole. + * + * @param avrcp The AVRCP instance. + * + * @return 0 in case of success or error code in case of error. + */ +int bt_avrcp_get_unit_info(struct bt_avrcp *avrcp); + +/** @brief Get AVRCP Subunit Info. + * + * This function obtains information about the subunit(s) of an AV/C unit. A device with AVRCP + * may support other subunits than the panel subunit if other profiles co-exist in the device. + * + * @param avrcp The AVRCP instance. + * + * @return 0 in case of success or error code in case of error. + */ +int bt_avrcp_get_subunit_info(struct bt_avrcp *avrcp); + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_BLUETOOTH_AVRCP_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/classic/classic.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/classic/classic.h new file mode 100644 index 00000000..be7cf8dc --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/classic/classic.h @@ -0,0 +1,210 @@ +/** @file + * @brief Bluetooth subsystem classic core APIs. + */ + +/* + * Copyright (c) 2015-2016 Intel Corporation + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_BLUETOOTH_CLASSIC_H_ +#define ZEPHYR_INCLUDE_BLUETOOTH_CLASSIC_H_ + +/** + * @brief Bluetooth APIs + * @defgroup bluetooth Bluetooth APIs + * @ingroup connectivity + * @{ + */ + +#include +#include + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Generic Access Profile (GAP) + * @defgroup bt_gap Generic Access Profile (GAP) + * @since 1.0 + * @version 1.0.0 + * @ingroup bluetooth + * @{ + */ + +/** + * @private + * @brief BR/EDR discovery private structure + */ +struct bt_br_discovery_priv { + /** Clock offset */ + uint16_t clock_offset; + /** Page scan repetition mode */ + uint8_t pscan_rep_mode; + /** Resolving remote name*/ + bool resolving; +}; + +/** @brief BR/EDR discovery result structure */ +struct bt_br_discovery_result { + /** Private data */ + struct bt_br_discovery_priv _priv; + + /** Remote device address */ + bt_addr_t addr; + + /** RSSI from inquiry */ + int8_t rssi; + + /** Class of Device */ + uint8_t cod[3]; + + /** Extended Inquiry Response */ + uint8_t eir[240]; +}; + +/** BR/EDR discovery parameters */ +struct bt_br_discovery_param { + /** Maximum length of the discovery in units of 1.28 seconds. + * Valid range is 0x01 - 0x30. + */ + uint8_t length; + + /** True if limited discovery procedure is to be used. */ + bool limited; +}; + +/** + * @brief Start BR/EDR discovery + * + * Start BR/EDR discovery (inquiry) and provide results through the specified + * callback. The discovery results will be notified through callbacks + * registered by @ref bt_br_discovery_cb_register. + * If more inquiry results were received during session than + * fits in provided result storage, only ones with highest RSSI will be + * reported. + * + * @param param Discovery parameters. + * @param results Storage for discovery results. + * @param count Number of results in storage. Valid range: 1-255. + * + * @return Zero on success or error code otherwise, positive in case + * of protocol error or negative (POSIX) in case of stack internal error + */ +int bt_br_discovery_start(const struct bt_br_discovery_param *param, + struct bt_br_discovery_result *results, size_t count); + +/** + * @brief Stop BR/EDR discovery. + * + * Stops ongoing BR/EDR discovery. If discovery was stopped by this call + * results won't be reported + * + * @return Zero on success or error code otherwise, positive in case of + * protocol error or negative (POSIX) in case of stack internal error. + */ +int bt_br_discovery_stop(void); + +struct bt_br_discovery_cb { + + /** + * @brief An inquiry response received callback. + * + * @param result Storage used for discovery results + */ + void (*recv)(const struct bt_br_discovery_result *result); + + /** @brief The inquiry has stopped after discovery timeout. + * + * @param results Storage used for discovery results + * @param count Number of valid discovery results. + */ + void (*timeout)(const struct bt_br_discovery_result *results, + size_t count); + + sys_snode_t node; +}; + +/** + * @brief Register discovery packet callbacks. + * + * Adds the callback structure to the list of callback structures that monitors + * inquiry activity. + * + * This callback will be called for all inquiry activity, regardless of what + * API was used to start the discovery. + * + * @param cb Callback struct. Must point to memory that remains valid. + */ +void bt_br_discovery_cb_register(struct bt_br_discovery_cb *cb); + +/** + * @brief Unregister discovery packet callbacks. + * + * Remove the callback structure from the list of discovery callbacks. + * + * @param cb Callback struct. Must point to memory that remains valid. + */ +void bt_br_discovery_cb_unregister(struct bt_br_discovery_cb *cb); + +struct bt_br_oob { + /** BR/EDR address. */ + bt_addr_t addr; +}; + +/** + * @brief Get BR/EDR local Out Of Band information + * + * This function allows to get local controller information that are useful + * for Out Of Band pairing or connection creation process. + * + * @param oob Out Of Band information + */ +int bt_br_oob_get_local(struct bt_br_oob *oob); + +/** + * @brief Enable/disable set controller in discoverable state. + * + * Allows make local controller to listen on INQUIRY SCAN channel and responds + * to devices making general inquiry. To enable this state it's mandatory + * to first be in connectable state. + * + * @param enable Value allowing/disallowing controller to become discoverable. + * + * @return Negative if fail set to requested state or requested state has been + * already set. Zero if done successfully. + */ +int bt_br_set_discoverable(bool enable); + +/** + * @brief Enable/disable set controller in connectable state. + * + * Allows make local controller to be connectable. It means the controller + * start listen to devices requests on PAGE SCAN channel. If disabled also + * resets discoverability if was set. + * + * @param enable Value allowing/disallowing controller to be connectable. + * + * @return Negative if fail set to requested state or requested state has been + * already set. Zero if done successfully. + */ +int bt_br_set_connectable(bool enable); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_BLUETOOTH_CLASSIC_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/classic/sdp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/classic/sdp.h index 686c0e71..ac0f9d2a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/classic/sdp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/classic/sdp.h @@ -481,8 +481,6 @@ struct bt_sdp_client_result { struct net_buf *resp_buf; /** flag pointing that there are more result chunks for given UUID */ bool next_record_hint; - /** Reference to UUID object on behalf one discovery was started */ - const struct bt_uuid *uuid; }; /** @brief Helper enum to be used as return value of bt_sdp_discover_func_t. @@ -493,6 +491,8 @@ enum { BT_SDP_DISCOVER_UUID_CONTINUE, }; +struct bt_sdp_discover_params; + /** @typedef bt_sdp_discover_func_t * * @brief Callback type reporting to user that there is a resolved result @@ -514,24 +514,41 @@ enum { * * @param conn Connection object identifying connection to queried remote. * @param result Object pointing to logical unparsed SDP record collected on - * base of response driven by given UUID. + * base of response driven by given discover params. + * @param params Discover parameters. * * @return BT_SDP_DISCOVER_UUID_STOP in case of no more need to read next * record data and continue discovery for given UUID. By returning - * BT_SDP_DISCOVER_UUID_CONTINUE user allows this discovery continuation. + * @return BT_SDP_DISCOVER_UUID_CONTINUE user allows this discovery continuation. */ -typedef uint8_t (*bt_sdp_discover_func_t) - (struct bt_conn *conn, struct bt_sdp_client_result *result); +typedef uint8_t (*bt_sdp_discover_func_t)(struct bt_conn *conn, struct bt_sdp_client_result *result, + const struct bt_sdp_discover_params *params); + +/** SDP Discover types */ +enum { + /** Discover Service Search. */ + BT_SDP_DISCOVER_SERVICE_SEARCH, + /** Discover Service Attribute. */ + BT_SDP_DISCOVER_SERVICE_ATTR, + /** Discover Service Search Attribute. */ + BT_SDP_DISCOVER_SERVICE_SEARCH_ATTR, +}; /** @brief Main user structure used in SDP discovery of remote. */ struct bt_sdp_discover_params { - sys_snode_t _node; - /** UUID (service) to be discovered on remote SDP entity */ - const struct bt_uuid *uuid; + sys_snode_t _node; + union { + /** UUID (service) to be discovered on remote SDP entity */ + const struct bt_uuid *uuid; + /** Service record handle */ + uint32_t handle; + }; /** Discover callback to be called on resolved SDP record */ - bt_sdp_discover_func_t func; + bt_sdp_discover_func_t func; /** Memory buffer enabled by user for SDP query results */ - struct net_buf_pool *pool; + struct net_buf_pool *pool; + /** Discover type */ + uint8_t type; }; /** @brief Allows user to start SDP discovery session. @@ -543,6 +560,21 @@ struct bt_sdp_discover_params { * On the service discovery completion the callback function will be * called to get feedback to user about findings. * + * Service Search: The SDP Client generates an + * SDP_SERVICE_SEARCH_REQ to locate service + * records that match the service search + * pattern (`params->uuid`) given as the first + * parameter of the PDU. + * Service Attribute: The SDP Client generates an + * SDP_SERVICE_ATTR_REQ to retrieve specified + * attribute values from a specific service + * record (`params->handle`). + * Service Search Attribute: The SDP Client generates an + * SDP_SERVICE_SEARCH_ATTR_REQ to retrieve + * specified attribute values that match the + * service search pattern (`params->uuid`) + * given as the first parameter of the PDU. + * * @param conn Object identifying connection to remote. * @param params SDP discovery parameters. * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/conn.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/conn.h index 5a5525df..73a14b09 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/conn.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/conn.h @@ -74,9 +74,9 @@ struct bt_le_conn_param { * Latency: 0 * Timeout: 4 s */ -#define BT_LE_CONN_PARAM_DEFAULT BT_LE_CONN_PARAM(BT_GAP_INIT_CONN_INT_MIN, \ - BT_GAP_INIT_CONN_INT_MAX, \ - 0, 400) +#define BT_LE_CONN_PARAM_DEFAULT \ + BT_LE_CONN_PARAM(BT_GAP_INIT_CONN_INT_MIN, BT_GAP_INIT_CONN_INT_MAX, 0, \ + BT_GAP_MS_TO_CONN_TIMEOUT(4000)) /** Connection PHY information for LE connections */ struct bt_conn_le_phy_info { @@ -196,6 +196,57 @@ struct bt_conn_le_data_len_param { BT_CONN_LE_DATA_LEN_PARAM(BT_GAP_DATA_LEN_MAX, \ BT_GAP_DATA_TIME_MAX) +/** Connection subrating parameters for LE connections */ +struct bt_conn_le_subrate_param { + /** Minimum subrate factor. */ + uint16_t subrate_min; + /** Maximum subrate factor. */ + uint16_t subrate_max; + /** Maximum Peripheral latency in units of subrated connection intervals. */ + uint16_t max_latency; + /** Minimum number of underlying connection events to remain active + * after a packet containing a Link Layer PDU with a non-zero Length + * field is sent or received. + */ + uint16_t continuation_number; + /** Connection Supervision timeout (N * 10 ms). + * If using @ref bt_conn_le_subrate_set_defaults, this is the + * maximum supervision timeout allowed in requests by a peripheral. + */ + uint16_t supervision_timeout; +}; + +/** Subrating information for LE connections */ +struct bt_conn_le_subrating_info { + /** Connection subrate factor. */ + uint16_t factor; + /** Number of underlying connection events to remain active after + * a packet containing a Link Layer PDU with a non-zero Length + * field is sent or received. + */ + uint16_t continuation_number; +}; + +/** Updated subrating connection parameters for LE connections */ +struct bt_conn_le_subrate_changed { + /** HCI Status from LE Subrate Changed event. + * The remaining parameters will be unchanged if status is not + * BT_HCI_ERR_SUCCESS. + */ + uint8_t status; + /** Connection subrate factor. */ + uint16_t factor; + /** Number of underlying connection events to remain active after + * a packet containing a Link Layer PDU with a non-zero Length + * field is sent or received. + */ + uint16_t continuation_number; + /** Peripheral latency in units of subrated connection intervals. */ + uint16_t peripheral_latency; + /** Connection Supervision timeout (N * 10 ms). */ + uint16_t supervision_timeout; +}; + /** Connection Type */ enum __packed bt_conn_type { /** LE Connection Type */ @@ -211,6 +262,407 @@ enum __packed bt_conn_type { BT_CONN_TYPE_SCO | BT_CONN_TYPE_ISO, }; +/** Supported AA-Only RTT precision. */ +enum bt_conn_le_cs_capability_rtt_aa_only { + /** AA-Only RTT variant is not supported. */ + BT_CONN_LE_CS_RTT_AA_ONLY_NOT_SUPP = 0, + /** 10ns time-of-flight accuracy. */ + BT_CONN_LE_CS_RTT_AA_ONLY_10NS, + /** 150ns time-of-flight accuracy. */ + BT_CONN_LE_CS_RTT_AA_ONLY_150NS, +}; + +/** Supported Sounding Sequence RTT precision. */ +enum bt_conn_le_cs_capability_rtt_sounding { + /** Sounding Sequence RTT variant is not supported. */ + BT_CONN_LE_CS_RTT_SOUNDING_NOT_SUPP = 0, + /** 10ns time-of-flight accuracy. */ + BT_CONN_LE_CS_RTT_SOUNDING_10NS, + /** 150ns time-of-flight accuracy. */ + BT_CONN_LE_CS_RTT_SOUNDING_150NS, +}; + +/** Supported Random Payload RTT precision. */ +enum bt_conn_le_cs_capability_rtt_random_payload { + /** Random Payload RTT variant is not supported. */ + BT_CONN_LE_CS_RTT_RANDOM_PAYLOAD_NOT_SUPP = 0, + /** 10ns time-of-flight accuracy. */ + BT_CONN_LE_CS_RTT_RANDOM_PAYLOAD_10NS, + /** 150ns time-of-flight accuracy. */ + BT_CONN_LE_CS_RTT_RANDOM_PAYLOAD_150NS, +}; + +/** Remote channel sounding capabilities for LE connections supporting CS */ +struct bt_conn_le_cs_capabilities { + /** Number of CS configurations */ + uint8_t num_config_supported; + /** Maximum number of consecutive CS procedures. + * + * When set to zero, indicates support for both fixed and indefinite + * numbers of CS procedures before termination. + */ + uint16_t max_consecutive_procedures_supported; + /** Number of antennas. */ + uint8_t num_antennas_supported; + /** Maximum number of antenna paths. */ + uint8_t max_antenna_paths_supported; + /** Initiator role. */ + bool initiator_supported; + /** Reflector role. */ + bool reflector_supported; + /** Mode-3 */ + bool mode_3_supported; + /** RTT AA-Only */ + enum bt_conn_le_cs_capability_rtt_aa_only rtt_aa_only_precision; + /** RTT Sounding */ + enum bt_conn_le_cs_capability_rtt_sounding rtt_sounding_precision; + /** RTT Random Payload */ + enum bt_conn_le_cs_capability_rtt_random_payload rtt_random_payload_precision; + /** Number of CS steps needed to achieve the + * accuracy requirements for RTT AA Only. + * + * Set to 0 if RTT AA Only isn't supported. + */ + uint8_t rtt_aa_only_n; + /** Number of CS steps needed to achieve the + * accuracy requirements for RTT Sounding. + * + * Set to 0 if RTT Sounding isn't supported + */ + uint8_t rtt_sounding_n; + /** Number of CS steps needed to achieve the + * accuracy requirements for RTT Random Payload. + * + * Set to 0 if RTT Random Payload isn't supported. + */ + uint8_t rtt_random_payload_n; + /** Phase-based normalized attack detector metric + * when a CS_SYNC with sounding sequence is received. + */ + bool phase_based_nadm_sounding_supported; + /** Phase-based normalized attack detector metric + * when a CS_SYNC with random sequence is received. + */ + bool phase_based_nadm_random_supported; + /** CS_SYNC LE 2M PHY. */ + bool cs_sync_2m_phy_supported; + /** CS_SYNC LE 2M 2BT PHY. */ + bool cs_sync_2m_2bt_phy_supported; + /** Subfeature: CS with no Frequency Actuation Error. */ + bool cs_without_fae_supported; + /** Subfeature: Channel Selection Algorithm #3c */ + bool chsel_alg_3c_supported; + /** Subfeature: Phase-based Ranging from RTT sounding sequence. */ + bool pbr_from_rtt_sounding_seq_supported; + /** Optional T_IP1 time durations during CS steps. + * + * - Bit 0: 10 us + * - Bit 1: 20 us + * - Bit 2: 30 us + * - Bit 3: 40 us + * - Bit 4: 50 us + * - Bit 5: 60 us + * - Bit 6: 80 us + */ + uint16_t t_ip1_times_supported; + /** Optional T_IP2 time durations during CS steps. + * + * - Bit 0: 10 us + * - Bit 1: 20 us + * - Bit 2: 30 us + * - Bit 3: 40 us + * - Bit 4: 50 us + * - Bit 5: 60 us + * - Bit 6: 80 us + */ + uint16_t t_ip2_times_supported; + /** Optional T_FCS time durations during CS steps. + * + * - Bit 0: 15 us + * - Bit 1: 20 us + * - Bit 2: 30 us + * - Bit 3: 40 us + * - Bit 4: 50 us + * - Bit 5: 60 us + * - Bit 6: 80 us + * - Bit 7: 100 us + * - Bit 8: 120 us + */ + uint16_t t_fcs_times_supported; + /** Optional T_PM time durations during CS steps. + * + * - Bit 0: 10 us + * - Bit 1: 20 us + */ + uint16_t t_pm_times_supported; + /** Time in microseconds for the antenna switch period of the CS tones. */ + uint8_t t_sw_time; + /** Supported SNR levels used in RTT packets. + * + * - Bit 0: 18dB + * - Bit 1: 21dB + * - Bit 2: 24dB + * - Bit 3: 27dB + * - Bit 4: 30dB + */ + uint8_t tx_snr_capability; +}; + +/** Remote FAE Table for LE connections supporting CS */ +struct bt_conn_le_cs_fae_table { + int8_t *remote_fae_table; +}; + +/** Channel sounding main mode */ +enum bt_conn_le_cs_main_mode { + /** Mode-1 (RTT) */ + BT_CONN_LE_CS_MAIN_MODE_1 = BT_HCI_OP_LE_CS_MAIN_MODE_1, + /** Mode-2 (PBR) */ + BT_CONN_LE_CS_MAIN_MODE_2 = BT_HCI_OP_LE_CS_MAIN_MODE_2, + /** Mode-3 (RTT and PBR) */ + BT_CONN_LE_CS_MAIN_MODE_3 = BT_HCI_OP_LE_CS_MAIN_MODE_3, +}; + +/** Channel sounding sub mode */ +enum bt_conn_le_cs_sub_mode { + /** Unused */ + BT_CONN_LE_CS_SUB_MODE_UNUSED = BT_HCI_OP_LE_CS_SUB_MODE_UNUSED, + /** Mode-1 (RTT) */ + BT_CONN_LE_CS_SUB_MODE_1 = BT_HCI_OP_LE_CS_SUB_MODE_1, + /** Mode-2 (PBR) */ + BT_CONN_LE_CS_SUB_MODE_2 = BT_HCI_OP_LE_CS_SUB_MODE_2, + /** Mode-3 (RTT and PBR) */ + BT_CONN_LE_CS_SUB_MODE_3 = BT_HCI_OP_LE_CS_SUB_MODE_3, +}; + +/** Channel sounding role */ +enum bt_conn_le_cs_role { + /** CS initiator role */ + BT_CONN_LE_CS_ROLE_INITIATOR, + /** CS reflector role */ + BT_CONN_LE_CS_ROLE_REFLECTOR, +}; + +/** Channel sounding RTT type */ +enum bt_conn_le_cs_rtt_type { + /** RTT AA only */ + BT_CONN_LE_CS_RTT_TYPE_AA_ONLY = BT_HCI_OP_LE_CS_RTT_TYPE_AA_ONLY, + /** RTT with 32-bit sounding sequence */ + BT_CONN_LE_CS_RTT_TYPE_32_BIT_SOUNDING = BT_HCI_OP_LE_CS_RTT_TYPE_32BIT_SOUND, + /** RTT with 96-bit sounding sequence */ + BT_CONN_LE_CS_RTT_TYPE_96_BIT_SOUNDING = BT_HCI_OP_LE_CS_RTT_TYPE_96BIT_SOUND, + /** RTT with 32-bit random sequence */ + BT_CONN_LE_CS_RTT_TYPE_32_BIT_RANDOM = BT_HCI_OP_LE_CS_RTT_TYPE_32BIT_RAND, + /** RTT with 64-bit random sequence */ + BT_CONN_LE_CS_RTT_TYPE_64_BIT_RANDOM = BT_HCI_OP_LE_CS_RTT_TYPE_64BIT_RAND, + /** RTT with 96-bit random sequence */ + BT_CONN_LE_CS_RTT_TYPE_96_BIT_RANDOM = BT_HCI_OP_LE_CS_RTT_TYPE_96BIT_RAND, + /** RTT with 128-bit random sequence */ + BT_CONN_LE_CS_RTT_TYPE_128_BIT_RANDOM = BT_HCI_OP_LE_CS_RTT_TYPE_128BIT_RAND, +}; + +/** Channel sounding PHY used for CS sync */ +enum bt_conn_le_cs_sync_phy { + /** LE 1M PHY */ + BT_CONN_LE_CS_SYNC_1M_PHY = BT_HCI_OP_LE_CS_CS_SYNC_1M, + /** LE 2M PHY */ + BT_CONN_LE_CS_SYNC_2M_PHY = BT_HCI_OP_LE_CS_CS_SYNC_2M, + /** LE 2M 2BT PHY */ + BT_CONN_LE_CS_SYNC_2M_2BT_PHY = BT_HCI_OP_LE_CS_CS_SYNC_2M_2BT, +}; + +/** Channel sounding channel selection type */ +enum bt_conn_le_cs_chsel_type { + /** Use Channel Selection Algorithm #3b for non-mode-0 CS steps */ + BT_CONN_LE_CS_CHSEL_TYPE_3B = BT_HCI_OP_LE_CS_TEST_CHSEL_TYPE_3B, + /** Use Channel Selection Algorithm #3c for non-mode-0 CS steps */ + BT_CONN_LE_CS_CHSEL_TYPE_3C = BT_HCI_OP_LE_CS_TEST_CHSEL_TYPE_3C, +}; + +/** Channel sounding channel sequence shape */ +enum bt_conn_le_cs_ch3c_shape { + /** Use Hat shape for user-specified channel sequence */ + BT_CONN_LE_CS_CH3C_SHAPE_HAT = BT_HCI_OP_LE_CS_TEST_CH3C_SHAPE_HAT, + /** Use X shape for user-specified channel sequence */ + BT_CONN_LE_CS_CH3C_SHAPE_X = BT_HCI_OP_LE_CS_TEST_CH3C_SHAPE_X, +}; + +/** Channel sounding configuration */ +struct bt_conn_le_cs_config { + /** CS configuration ID */ + uint8_t id; + /** Main CS mode type */ + enum bt_conn_le_cs_main_mode main_mode_type; + /** Sub CS mode type */ + enum bt_conn_le_cs_sub_mode sub_mode_type; + /** Minimum number of CS main mode steps to be executed before a submode step is executed */ + uint8_t min_main_mode_steps; + /** Maximum number of CS main mode steps to be executed before a submode step is executed */ + uint8_t max_main_mode_steps; + /** Number of main mode steps taken from the end of the last CS subevent to be repeated + * at the beginning of the current CS subevent directly after the last mode-0 step of that + * event + */ + uint8_t main_mode_repetition; + /** Number of CS mode-0 steps to be included at the beginning of each CS subevent */ + uint8_t mode_0_steps; + /** CS role */ + enum bt_conn_le_cs_role role; + /** RTT type */ + enum bt_conn_le_cs_rtt_type rtt_type; + /** CS Sync PHY */ + enum bt_conn_le_cs_sync_phy cs_sync_phy; + /** The number of times the Channel_Map field will be cycled through for non-mode-0 steps + * within a CS procedure + */ + uint8_t channel_map_repetition; + /** Channel selection type */ + enum bt_conn_le_cs_chsel_type channel_selection_type; + /** User-specified channel sequence shape */ + enum bt_conn_le_cs_ch3c_shape ch3c_shape; + /** Number of channels skipped in each rising and falling sequence */ + uint8_t ch3c_jump; + /** Interlude time in microseconds between the RTT packets */ + uint8_t t_ip1_time_us; + /** Interlude time in microseconds between the CS tones */ + uint8_t t_ip2_time_us; + /** Time in microseconds for frequency changes */ + uint8_t t_fcs_time_us; + /** Time in microseconds for the phase measurement period of the CS tones */ + uint8_t t_pm_time_us; + /** Channel map used for CS procedure + * Channels n = 0, 1, 23, 24, 25, 77, and 78 are not allowed and shall be set to zero. + * Channel 79 is reserved for future use and shall be set to zero. + * At least 15 channels shall be enabled. + */ + uint8_t channel_map[10]; +}; + +/** Procedure done status */ +enum bt_conn_le_cs_procedure_done_status { + BT_CONN_LE_CS_PROCEDURE_COMPLETE = BT_HCI_LE_CS_PROCEDURE_DONE_STATUS_COMPLETE, + BT_CONN_LE_CS_PROCEDURE_INCOMPLETE = BT_HCI_LE_CS_PROCEDURE_DONE_STATUS_PARTIAL, + BT_CONN_LE_CS_PROCEDURE_ABORTED = BT_HCI_LE_CS_PROCEDURE_DONE_STATUS_ABORTED, +}; + +/** Subevent done status */ +enum bt_conn_le_cs_subevent_done_status { + BT_CONN_LE_CS_SUBEVENT_COMPLETE = BT_HCI_LE_CS_SUBEVENT_DONE_STATUS_COMPLETE, + BT_CONN_LE_CS_SUBEVENT_ABORTED = BT_HCI_LE_CS_SUBEVENT_DONE_STATUS_ABORTED, +}; + +/** Procedure abort reason */ +enum bt_conn_le_cs_procedure_abort_reason { + BT_CONN_LE_CS_PROCEDURE_NOT_ABORTED = BT_HCI_LE_CS_PROCEDURE_ABORT_REASON_NO_ABORT, + BT_CONN_LE_CS_PROCEDURE_ABORT_REQUESTED = + BT_HCI_LE_CS_PROCEDURE_ABORT_REASON_LOCAL_HOST_OR_REMOTE_REQUEST, + BT_CONN_LE_CS_PROCEDURE_ABORT_TOO_FEW_CHANNELS = + BT_HCI_LE_CS_PROCEDURE_ABORT_REASON_TOO_FEW_CHANNELS, + BT_CONN_LE_CS_PROCEDURE_ABORT_CHMAP_INSTANT_PASSED = + BT_HCI_LE_CS_PROCEDURE_ABORT_REASON_CHMAP_INSTANT_PASSED, + BT_CONN_LE_CS_PROCEDURE_ABORT_UNSPECIFIED = BT_HCI_LE_CS_PROCEDURE_ABORT_REASON_UNSPECIFIED, +}; + +/** Subevent abort reason */ +enum bt_conn_le_cs_subevent_abort_reason { + BT_CONN_LE_CS_SUBEVENT_NOT_ABORTED = BT_HCI_LE_CS_SUBEVENT_ABORT_REASON_NO_ABORT, + BT_CONN_LE_CS_SUBEVENT_ABORT_REQUESTED = + BT_HCI_LE_CS_SUBEVENT_ABORT_REASON_LOCAL_HOST_OR_REMOTE_REQUEST, + BT_CONN_LE_CS_SUBEVENT_ABORT_NO_CS_SYNC = + BT_HCI_LE_CS_SUBEVENT_ABORT_REASON_NO_CS_SYNC_RECEIVED, + BT_CONN_LE_CS_SUBEVENT_ABORT_SCHED_CONFLICT = + BT_HCI_LE_CS_SUBEVENT_ABORT_REASON_SCHED_CONFLICT, + BT_CONN_LE_CS_SUBEVENT_ABORT_UNSPECIFIED = BT_HCI_LE_CS_SUBEVENT_ABORT_REASON_UNSPECIFIED, +}; + +/** Subevent data for LE connections supporting CS */ +struct bt_conn_le_cs_subevent_result { + struct { + /** CS configuration identifier. + * + * Range: 0 to 3 + * + * If these results were generated by a CS Test, + * this value will be set to 0 and has no meaning. + */ + uint8_t config_id; + /** Starting ACL connection event counter. + * + * If these results were generated by a CS Test, + * this value will be set to 0 and has no meaning. + */ + uint16_t start_acl_conn_event; + /** CS procedure count associated with these results. + * + * This is the CS procedure count since the completion of + * the Channel Sounding Security Start procedure. + */ + uint16_t procedure_counter; + /** Frequency compensation value in units of 0.01 ppm. + * + * This is a 15-bit signed integer in the range [-100, 100] ppm. + * + * A value of @ref BT_HCI_LE_CS_SUBEVENT_RESULT_FREQ_COMPENSATION_NOT_AVAILABLE + * indicates that the role is not the initiator, or that the + * frequency compensation value is unavailable. + */ + uint16_t frequency_compensation; + /** Reference power level in dBm. + * + * Range: -127 to 20 + * + * A value of @ref BT_HCI_LE_CS_REF_POWER_LEVEL_UNAVAILABLE indicates + * that the reference power level was not available during a subevent. + */ + int8_t reference_power_level; + /** Procedure status. */ + enum bt_conn_le_cs_procedure_done_status procedure_done_status; + /** Subevent status + * + * For aborted subevents, this will be set to @ref BT_CONN_LE_CS_SUBEVENT_ABORTED + * and abort_step will contain the step number on which the subevent was aborted. + * Consider the following example: + * + * subevent_done_status = @ref BT_CONN_LE_CS_SUBEVENT_ABORTED + * num_steps_reported = 160 + * abort_step = 100 + * + * this would mean that steps from 0 to 99 are complete and steps from 100 to 159 + * are aborted. + */ + enum bt_conn_le_cs_subevent_done_status subevent_done_status; + /** Abort reason. + * + * If the procedure status is + * @ref BT_CONN_LE_CS_PROCEDURE_ABORTED, this field will + * specify the reason for the abortion. + */ + enum bt_conn_le_cs_procedure_abort_reason procedure_abort_reason; + /** Abort reason. + * + * If the subevent status is + * @ref BT_CONN_LE_CS_SUBEVENT_ABORTED, this field will + * specify the reason for the abortion. + */ + enum bt_conn_le_cs_subevent_abort_reason subevent_abort_reason; + /** Number of antenna paths used during the phase measurement stage. + */ + uint8_t num_antenna_paths; + /** Number of CS steps in the subevent. + */ + uint8_t num_steps_reported; + /** Step number, on which the subevent was aborted + * if subevent_done_status is @ref BT_CONN_LE_CS_SUBEVENT_COMPLETE + * then abort_step will be unused and set to 255 + */ + uint8_t abort_step; + } header; + /** Pointer to buffer containing step data. + * NULL if num_steps_reported is 0. + */ + struct net_buf_simple *step_data_buf; +}; + /** @brief Increment a connection's reference count. * * Increment the reference count of a connection object. @@ -310,6 +762,11 @@ struct bt_conn_le_info { /* Connection maximum single fragment parameters */ const struct bt_conn_le_data_len_info *data_len; #endif /* defined(CONFIG_BT_USER_DATA_LEN_UPDATE) */ + +#if defined(CONFIG_BT_SUBRATING) + /* Connection subrating parameters */ + const struct bt_conn_le_subrating_info *subrate; +#endif /* defined(CONFIG_BT_SUBRATING) */ }; /** @brief Convert connection interval to milliseconds @@ -676,6 +1133,36 @@ int bt_conn_le_set_path_loss_mon_param(struct bt_conn *conn, */ int bt_conn_le_set_path_loss_mon_enable(struct bt_conn *conn, bool enable); +/** @brief Set Default Connection Subrating Parameters. + * + * Change the default subrating parameters for all future + * ACL connections where the local device is the central. + * This command does not affect any existing connection. + * Parameters set for specific connection will always have precedence. + * + * @note To use this API @kconfig{CONFIG_BT_SUBRATING} and + * @kconfig{CONFIG_BT_CENTRAL} must be set. + * + * @param params Subrating parameters. + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_conn_le_subrate_set_defaults(const struct bt_conn_le_subrate_param *params); + +/** @brief Request New Subrating Parameters. + * + * Request a change to the subrating parameters of a connection. + * + * @note To use this API @kconfig{CONFIG_BT_SUBRATING} must be set. + * + * @param conn Connection object. + * @param params Subrating parameters. + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_conn_le_subrate_request(struct bt_conn *conn, + const struct bt_conn_le_subrate_param *params); + /** @brief Update the connection parameters. * * If the local device is in the peripheral role then updating the connection @@ -761,10 +1248,24 @@ struct bt_conn_le_create_param { /** Bit-field of create connection options. */ uint32_t options; - /** Scan interval (N * 0.625 ms) */ + /** Scan interval (N * 0.625 ms) + * + * @note When @kconfig{CONFIG_BT_SCAN_AND_INITIATE_IN_PARALLEL} is enabled + * and the application wants to scan and connect in parallel, + * the Bluetooth Controller may require the scan interval used + * for scanning and connection establishment to be equal to + * obtain the best performance. + */ uint16_t interval; - /** Scan window (N * 0.625 ms) */ + /** Scan window (N * 0.625 ms) + * + * @note When @kconfig{CONFIG_BT_SCAN_AND_INITIATE_IN_PARALLEL} is enabled + * and the application wants to scan and connect in parallel, + * the Bluetooth Controller may require the scan window used + * for scanning and connection establishment to be equal to + * obtain the best performance. + */ uint16_t window; /** @brief Scan interval LE Coded PHY (N * 0.625 MS) @@ -838,7 +1339,9 @@ struct bt_conn_le_create_param { * Allows initiate new LE link to remote peer using its address. * * The caller gets a new reference to the connection object which must be - * released with bt_conn_unref() once done using the object. + * released with bt_conn_unref() once done using the object. If + * @kconfig{CONFIG_BT_CONN_CHECK_NULL_BEFORE_CREATE} is enabled, this function + * will return -EINVAL if dereferenced @p conn is not NULL. * * This uses the General Connection Establishment procedure. * @@ -877,7 +1380,9 @@ struct bt_conn_le_create_synced_param { * with Responses (PAwR) train. * * The caller gets a new reference to the connection object which must be - * released with bt_conn_unref() once done using the object. + * released with bt_conn_unref() once done using the object. If + * @kconfig{CONFIG_BT_CONN_CHECK_NULL_BEFORE_CREATE} is enabled, this function + * will return -EINVAL if dereferenced @p conn is not NULL. * * This uses the Periodic Advertising Connection Procedure. * @@ -930,8 +1435,8 @@ int bt_conn_create_auto_stop(void); * * @return Zero on success or error code otherwise. */ -int bt_le_set_auto_conn(const bt_addr_le_t *addr, - const struct bt_le_conn_param *param); +__deprecated int bt_le_set_auto_conn(const bt_addr_le_t *addr, + const struct bt_le_conn_param *param); /** @brief Set security level for a connection. * @@ -1020,6 +1525,86 @@ enum bt_security_err { BT_SECURITY_ERR_UNSPECIFIED, }; +enum bt_conn_le_cs_procedure_enable_state { + BT_CONN_LE_CS_PROCEDURES_DISABLED = BT_HCI_OP_LE_CS_PROCEDURES_DISABLED, + BT_CONN_LE_CS_PROCEDURES_ENABLED = BT_HCI_OP_LE_CS_PROCEDURES_ENABLED, +}; + +/** CS Test Tone Antennna Config Selection. + * + * These enum values are indices in the following table, where N_AP is the maximum + * number of antenna paths (in the range [1, 4]). + * + * +--------------+-------------+-------------------+-------------------+--------+ + * | Config Index | Total Paths | Dev A: # Antennas | Dev B: # Antennas | Config | + * +--------------+-------------+-------------------+-------------------+--------+ + * | 0 | 1 | 1 | 1 | 1:1 | + * | 1 | 2 | 2 | 1 | N_AP:1 | + * | 2 | 3 | 3 | 1 | N_AP:1 | + * | 3 | 4 | 4 | 1 | N_AP:1 | + * | 4 | 2 | 1 | 2 | 1:N_AP | + * | 5 | 3 | 1 | 3 | 1:N_AP | + * | 6 | 4 | 1 | 4 | 1:N_AP | + * | 7 | 4 | 2 | 2 | 2:2 | + * +--------------+-------------+-------------------+-------------------+--------+ + * + * There are therefore four groups of possible antenna configurations: + * + * - 1:1 configuration, where both A and B support 1 antenna each + * - 1:N_AP configuration, where A supports 1 antenna, B supports N_AP antennas, and + * N_AP is a value in the range [2, 4] + * - N_AP:1 configuration, where A supports N_AP antennas, B supports 1 antenna, and + * N_AP is a value in the range [2, 4] + * - 2:2 configuration, where both A and B support 2 antennas and N_AP = 4 + */ +enum bt_conn_le_cs_tone_antenna_config_selection { + BT_LE_CS_TONE_ANTENNA_CONFIGURATION_INDEX_ONE = BT_HCI_OP_LE_CS_ACI_0, + BT_LE_CS_TONE_ANTENNA_CONFIGURATION_INDEX_TWO = BT_HCI_OP_LE_CS_ACI_1, + BT_LE_CS_TONE_ANTENNA_CONFIGURATION_INDEX_THREE = BT_HCI_OP_LE_CS_ACI_2, + BT_LE_CS_TONE_ANTENNA_CONFIGURATION_INDEX_FOUR = BT_HCI_OP_LE_CS_ACI_3, + BT_LE_CS_TONE_ANTENNA_CONFIGURATION_INDEX_FIVE = BT_HCI_OP_LE_CS_ACI_4, + BT_LE_CS_TONE_ANTENNA_CONFIGURATION_INDEX_SIX = BT_HCI_OP_LE_CS_ACI_5, + BT_LE_CS_TONE_ANTENNA_CONFIGURATION_INDEX_SEVEN = BT_HCI_OP_LE_CS_ACI_6, + BT_LE_CS_TONE_ANTENNA_CONFIGURATION_INDEX_EIGHT = BT_HCI_OP_LE_CS_ACI_7, +}; + +struct bt_conn_le_cs_procedure_enable_complete { + /* The ID associated with the desired configuration (0 to 3) */ + uint8_t config_id; + + /* State of the CS procedure */ + enum bt_conn_le_cs_procedure_enable_state state; + + /* Antenna configuration index */ + enum bt_conn_le_cs_tone_antenna_config_selection tone_antenna_config_selection; + + /* Transmit power level used for CS procedures (-127 to 20 dB; 0x7F if unavailable) */ + int8_t selected_tx_power; + + /* Duration of each CS subevent in microseconds (1250 us to 4 s) */ + uint32_t subevent_len; + + /* Number of CS subevents anchored off the same ACL connection event (0x01 to 0x20) */ + uint8_t subevents_per_event; + + /* Time between consecutive CS subevents anchored off the same ACL connection event in + * units of 0.625 ms + */ + uint16_t subevent_interval; + + /* Number of ACL connection events between consecutive CS event anchor points */ + uint16_t event_interval; + + /* Number of ACL connection events between consecutive CS procedure anchor points */ + uint16_t procedure_interval; + + /* Number of CS procedures to be scheduled (0 if procedures to continue until disabled) */ + uint16_t procedure_count; + + /* Maximum duration for each procedure in units of 0.625 ms (0x0001 to 0xFFFF) */ + uint16_t max_procedure_len; +}; + /** @brief Connection callback structure. * * This structure is used for tracking the state of a connection. @@ -1244,6 +1829,97 @@ struct bt_conn_cb { const struct bt_conn_le_path_loss_threshold_report *report); #endif /* CONFIG_BT_PATH_LOSS_MONITORING */ +#if defined(CONFIG_BT_SUBRATING) + /** @brief LE Subrate Changed event. + * + * This callback notifies the application that the subrating parameters + * of the connection may have changed. + * The connection subrating parameters will be unchanged + * if status is not BT_HCI_ERR_SUCCESS. + * + * @param conn Connection object. + * @param params New subrating parameters. + */ + void (*subrate_changed)(struct bt_conn *conn, + const struct bt_conn_le_subrate_changed *params); +#endif /* CONFIG_BT_SUBRATING */ + +#if defined(CONFIG_BT_CHANNEL_SOUNDING) + /** @brief LE CS Read Remote Supported Capabilities Complete event. + * + * This callback notifies the application that the remote channel + * sounding capabilities have been received from the peer. + * + * @param conn Connection object. + * @param remote_cs_capabilities Remote Channel Sounding Capabilities. + */ + void (*le_cs_remote_capabilities_available)(struct bt_conn *conn, + struct bt_conn_le_cs_capabilities *params); + + /** @brief LE CS Read Remote FAE Table Complete event. + * + * This callback notifies the application that the remote mode-0 + * FAE Table has been received from the peer. + * + * @param conn Connection object. + * @param params FAE Table. + */ + void (*le_cs_remote_fae_table_available)(struct bt_conn *conn, + struct bt_conn_le_cs_fae_table *params); + + /** @brief LE CS Config created. + * + * This callback notifies the application that a Channel Sounding + * Configuration procedure has completed and a new CS config is created + * + * @param conn Connection object. + * @param config CS configuration. + */ + void (*le_cs_config_created)(struct bt_conn *conn, struct bt_conn_le_cs_config *config); + + /** @brief LE CS Config removed. + * + * This callback notifies the application that a Channel Sounding + * Configuration procedure has completed and a CS config is removed + * + * @param conn Connection object. + * @param config_id ID of the CS configuration that was removed. + */ + void (*le_cs_config_removed)(struct bt_conn *conn, uint8_t config_id); + + /** @brief Subevent Results from a CS procedure are available. + * + * This callback notifies the user that CS subevent results are + * available for the given connection object. + * + * @param conn Connection objects. + * @param result Subevent results + */ + void (*le_cs_subevent_data_available)(struct bt_conn *conn, + struct bt_conn_le_cs_subevent_result *result); + + /** @brief LE CS Security Enabled. + * + * This callback notifies the application that a Channel Sounding + * Security Enable procedure has completed + * + * @param conn Connection object. + */ + void (*le_cs_security_enabled)(struct bt_conn *conn); + + /** @brief LE CS Procedure Enabled. + * + * This callback notifies the application that a Channel Sounding + * Procedure Enable procedure has completed + * + * @param conn Connection object. + * @param params CS Procedure Enable parameters + */ + void (*le_cs_procedure_enabled)( + struct bt_conn *conn, struct bt_conn_le_cs_procedure_enable_complete *params); + +#endif + /** @internal Internally used field for list handling */ sys_snode_t _node; }; @@ -1311,6 +1987,17 @@ static inline const char *bt_security_err_to_str(enum bt_security_err err) */ void bt_set_bondable(bool enable); +/** @brief Get bonding flag. + * + * Get current bonding flag. + * The initial value of this flag depends on @kconfig{CONFIG_BT_BONDABLE} Kconfig + * setting. + * The Bonding flag can be updated using bt_set_bondable(). + * + * @return Current bonding flag. + */ +bool bt_get_bondable(void); + /** @brief Set/clear the bonding flag for a given connection. * * Set/clear the Bonding flag in the Authentication Requirements of @@ -1511,7 +2198,8 @@ struct bt_conn_auth_cb { * This callback may be unregistered in which case pairing continues * as if the Kconfig flag was not set. * - * This callback is not called for BR/EDR Secure Simple Pairing (SSP). + * For BR/EDR Secure Simple Pairing (SSP), this callback is called + * when receiving the BT_HCI_EVT_IO_CAPA_REQ hci event. * * @param conn Connection where pairing is initiated. * @param feat Pairing req/resp info. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/cs.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/cs.h new file mode 100644 index 00000000..6e712627 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/cs.h @@ -0,0 +1,889 @@ +/** @file + * @brief Bluetooth Channel Sounding handling + */ + +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_BLUETOOTH_CS_H_ +#define ZEPHYR_INCLUDE_BLUETOOTH_CS_H_ + +/** + * @brief LE Channel Sounding (CS) + * @defgroup bt_le_cs Channel Sounding (CS) + * @ingroup bluetooth + * @{ + */ + +#include +#include + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Macro for getting a specific channel bit in CS channel map + * + * @param[in] chmap Channel map array + * @param[in] bit Bit number to be accessed + * + * @return Bit value, either 1 or 0 + */ +#define BT_LE_CS_CHANNEL_BIT_GET(chmap, bit) (((chmap)[(bit) / 8] >> ((bit) % 8)) & 1) + +/** + * @brief Macro for setting a specific channel bit value in CS channel map + * + * @param[in] chmap Channel map array + * @param[in] bit Bit number to be accessed + * @param[in] val Bit value to be set, either 1 or 0 + */ +#define BT_LE_CS_CHANNEL_BIT_SET_VAL(chmap, bit, val) \ + ((chmap)[(bit) / 8] = ((chmap)[(bit) / 8] & ~BIT((bit) % 8)) | ((val) << ((bit) % 8))) + +enum bt_le_cs_sync_antenna_selection_opt { + /** Use antenna identifier 1 for CS_SYNC packets. */ + BT_LE_CS_ANTENNA_SELECTION_OPT_ONE = BT_HCI_OP_LE_CS_ANTENNA_SEL_ONE, + /** Use antenna identifier 2 for CS_SYNC packets. */ + BT_LE_CS_ANTENNA_SELECTION_OPT_TWO = BT_HCI_OP_LE_CS_ANTENNA_SEL_TWO, + /** Use antenna identifier 3 for CS_SYNC packets. */ + BT_LE_CS_ANTENNA_SELECTION_OPT_THREE = BT_HCI_OP_LE_CS_ANTENNA_SEL_THREE, + /** Use antenna identifier 4 for CS_SYNC packets. */ + BT_LE_CS_ANTENNA_SELECTION_OPT_FOUR = BT_HCI_OP_LE_CS_ANTENNA_SEL_FOUR, + /** Use antennas in repetitive order from 1 to 4 for CS_SYNC packets. */ + BT_LE_CS_ANTENNA_SELECTION_OPT_REPETITIVE = BT_HCI_OP_LE_CS_ANTENNA_SEL_REP, + /** No recommendation for local controller antenna selection. */ + BT_LE_CS_ANTENNA_SELECTION_OPT_NO_RECOMMENDATION = BT_HCI_OP_LE_CS_ANTENNA_SEL_NONE, +}; + +/** Default CS settings in the local Controller */ +struct bt_le_cs_set_default_settings_param { + /** Enable CS initiator role. */ + bool enable_initiator_role; + /** Enable CS reflector role. */ + bool enable_reflector_role; + /** Antenna identifier to be used for CS_SYNC packets by the local controller. + */ + enum bt_le_cs_sync_antenna_selection_opt cs_sync_antenna_selection; + /** Maximum output power (Effective Isotropic Radiated Power) to be used + * for all CS transmissions. + * + * Value range is @ref BT_HCI_OP_LE_CS_MIN_MAX_TX_POWER to + * @ref BT_HCI_OP_LE_CS_MAX_MAX_TX_POWER. + */ + int8_t max_tx_power; +}; + +/** CS Test CS_SYNC Antenna Identifier */ +enum bt_le_cs_test_cs_sync_antenna_selection { + BT_LE_CS_TEST_CS_SYNC_ANTENNA_SELECTION_ONE = BT_HCI_OP_LE_CS_ANTENNA_SEL_ONE, + BT_LE_CS_TEST_CS_SYNC_ANTENNA_SELECTION_TWO = BT_HCI_OP_LE_CS_ANTENNA_SEL_TWO, + BT_LE_CS_TEST_CS_SYNC_ANTENNA_SELECTION_THREE = BT_HCI_OP_LE_CS_ANTENNA_SEL_THREE, + BT_LE_CS_TEST_CS_SYNC_ANTENNA_SELECTION_FOUR = BT_HCI_OP_LE_CS_ANTENNA_SEL_FOUR, +}; + +/** CS SNR control options */ +enum bt_le_cs_snr_control { + BT_LE_CS_SNR_CONTROL_18dB = BT_HCI_OP_LE_CS_SNR_18, + BT_LE_CS_SNR_CONTROL_21dB = BT_HCI_OP_LE_CS_SNR_21, + BT_LE_CS_SNR_CONTROL_24dB = BT_HCI_OP_LE_CS_SNR_24, + BT_LE_CS_SNR_CONTROL_27dB = BT_HCI_OP_LE_CS_SNR_27, + BT_LE_CS_SNR_CONTROL_30dB = BT_HCI_OP_LE_CS_SNR_30, + BT_LE_CS_SNR_CONTROL_NOT_USED = BT_HCI_OP_LE_CS_SNR_NOT_USED, +}; + +/** CS Test Override 3 T_PM Tone Extension */ +enum bt_le_cs_test_override_3_pm_tone_ext { + /** Initiator and reflector tones sent without tone extension */ + BT_LE_CS_TEST_OVERRIDE_3_NO_TONE_EXT = BT_HCI_OP_LE_CS_TEST_TONE_EXT_NONE, + /** Initiator tone sent with extension, reflector tone sent without tone extension */ + BT_LE_CS_TEST_OVERRIDE_3_INITIATOR_TONE_EXT_ONLY = BT_HCI_OP_LE_CS_TEST_TONE_EXT_INIT, + /** Initiator tone sent without extension, reflector tone sent with tone extension */ + BT_LE_CS_TEST_OVERRIDE_3_REFLECTOR_TONE_EXT_ONLY = BT_HCI_OP_LE_CS_TEST_TONE_EXT_REFL, + /** Initiator and reflector tones sent with tone extension */ + BT_LE_CS_TEST_OVERRIDE_3_INITIATOR_AND_REFLECTOR_TONE_EXT = + BT_HCI_OP_LE_CS_TEST_TONE_EXT_BOTH, + /** Applicable for mode-2 and mode-3 only: + * + * Loop through: + * - @ref BT_LE_CS_TEST_OVERRIDE_3_NO_TONE_EXT + * - @ref BT_LE_CS_TEST_OVERRIDE_3_INITIATOR_TONE_EXT_ONLY + * - @ref BT_LE_CS_TEST_OVERRIDE_3_REFLECTOR_TONE_EXT_ONLY + * - @ref BT_LE_CS_TEST_OVERRIDE_3_INITIATOR_AND_REFLECTOR_TONE_EXT + */ + BT_LE_CS_TEST_OVERRIDE_3_REPETITIVE_TONE_EXT = BT_HCI_OP_LE_CS_TEST_TONE_EXT_REPEAT, +}; + +/** CS Test Override 4 Tone Antenna Permutation. + * + * These values represent indices in an antenna path permutation table. + * + * Which table is applicable (and which indices are valid) + * depends on the maximum number of antenna paths (N_AP). + * + * If N_AP = 2, the permutation table is: + * + * +--------------------------------+------------------------------------------+ + * | Antenna Path Permutation Index | Antenna Path Positions After Permutation | + * +--------------------------------+------------------------------------------+ + * | 0 | A1 A2 | + * | 1 | A2 A1 | + * +--------------------------------+------------------------------------------+ + * + * If N_AP = 3, the permutation table is: + * + * +--------------------------------+------------------------------------------+ + * | Antenna Path Permutation Index | Antenna Path Positions After Permutation | + * +--------------------------------+------------------------------------------+ + * | 0 | A1 A2 A3 | + * | 1 | A2 A1 A3 | + * | 2 | A1 A3 A2 | + * | 3 | A3 A1 A2 | + * | 4 | A3 A2 A1 | + * | 5 | A2 A3 A1 | + * +--------------------------------+------------------------------------------+ + * + * If N_AP = 4, the permutation table is: + * + * +--------------------------------+------------------------------------------+ + * | Antenna Path Permutation Index | Antenna Path Positions After Permutation | + * +--------------------------------+------------------------------------------+ + * | 0 | A1 A2 A3 A4 | + * | 1 | A2 A1 A3 A4 | + * | 2 | A1 A3 A2 A4 | + * | 3 | A3 A1 A2 A4 | + * | 4 | A3 A2 A1 A4 | + * | 5 | A2 A3 A1 A4 | + * | 6 | A1 A2 A4 A3 | + * | 7 | A2 A1 A4 A3 | + * | 8 | A1 A4 A2 A3 | + * | 9 | A4 A1 A2 A3 | + * | 10 | A4 A2 A1 A3 | + * | 11 | A2 A4 A1 A3 | + * | 12 | A1 A4 A3 A2 | + * | 13 | A4 A1 A3 A2 | + * | 14 | A1 A3 A4 A2 | + * | 15 | A3 A1 A4 A2 | + * | 16 | A3 A4 A1 A2 | + * | 17 | A4 A3 A1 A2 | + * | 18 | A4 A2 A3 A1 | + * | 19 | A2 A4 A3 A1 | + * | 20 | A4 A3 A2 A1 | + * | 21 | A3 A4 A2 A1 | + * | 22 | A3 A2 A4 A1 | + * | 23 | A2 A3 A4 A1 | + * +--------------------------------+------------------------------------------+ + */ +enum bt_le_cs_test_override_4_tone_antenna_permutation { + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_00 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_00, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_01 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_01, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_02 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_02, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_03 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_03, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_04 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_04, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_05 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_05, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_06 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_06, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_07 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_07, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_08 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_08, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_09 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_09, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_10 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_10, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_11 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_11, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_12 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_12, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_13 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_13, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_14 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_14, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_15 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_15, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_16 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_16, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_17 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_17, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_18 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_18, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_19 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_19, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_20 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_20, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_21 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_21, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_22 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_22, + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_23 = BT_HCI_OP_LE_CS_TEST_AP_INDEX_23, + /** Loop through all valid Antenna Permutation Indices starting + * from the lowest index. + */ + BT_LE_CS_TEST_OVERRIDE_4_ANTENNA_PERMUTATION_INDEX_LOOP = + BT_HCI_OP_LE_CS_TEST_AP_INDEX_LOOP, +}; + +/** CS Test Override 7 Sounding Sequence Marker Value */ +enum bt_le_cs_test_override_7_ss_marker_value { + BT_LE_CS_TEST_OVERRIDE_7_SS_MARKER_VAL_0011 = BT_HCI_OP_LE_CS_TEST_SS_MARKER_VAL_0011, + BT_LE_CS_TEST_OVERRIDE_7_SS_MARKER_VAL_1100 = BT_HCI_OP_LE_CS_TEST_SS_MARKER_VAL_1100, + /** Loop through pattern '0011' and '1100' (in transmission order) */ + BT_LE_CS_TEST_OVERRIDE_7_SS_MARKER_VAL_LOOP = BT_HCI_OP_LE_CS_TEST_SS_MARKER_VAL_LOOP, +}; + +/** CS Test Override 8 CS_SYNC Payload Pattern */ +enum bt_le_cs_test_override_8_cs_sync_payload_pattern { + /** PRBS9 payload sequence. */ + BT_LE_CS_TEST_OVERRIDE_8_PAYLOAD_PATTERN_PRBS9 = BT_HCI_OP_LE_CS_TEST_PAYLOAD_PRBS9, + /** Repeated '11110000' payload sequence. */ + BT_LE_CS_TEST_OVERRIDE_8_PAYLOAD_PATTERN_11110000 = BT_HCI_OP_LE_CS_TEST_PAYLOAD_11110000, + /** Repeated '10101010' payload sequence. */ + BT_LE_CS_TEST_OVERRIDE_8_PAYLOAD_PATTERN_10101010 = BT_HCI_OP_LE_CS_TEST_PAYLOAD_10101010, + /** PRBS15 payload sequence. */ + BT_LE_CS_TEST_OVERRIDE_8_PAYLOAD_PATTERN_PRBS15 = BT_HCI_OP_LE_CS_TEST_PAYLOAD_PRBS15, + /** Repeated '11111111' payload sequence. */ + BT_LE_CS_TEST_OVERRIDE_8_PAYLOAD_PATTERN_11111111 = BT_HCI_OP_LE_CS_TEST_PAYLOAD_11111111, + /** Repeated '00000000' payload sequence. */ + BT_LE_CS_TEST_OVERRIDE_8_PAYLOAD_PATTERN_00000000 = BT_HCI_OP_LE_CS_TEST_PAYLOAD_00000000, + /** Repeated '00001111' payload sequence. */ + BT_LE_CS_TEST_OVERRIDE_8_PAYLOAD_PATTERN_00001111 = BT_HCI_OP_LE_CS_TEST_PAYLOAD_00001111, + /** Repeated '01010101' payload sequence. */ + BT_LE_CS_TEST_OVERRIDE_8_PAYLOAD_PATTERN_01010101 = BT_HCI_OP_LE_CS_TEST_PAYLOAD_01010101, + /** Custom payload provided by the user. */ + BT_LE_CS_TEST_OVERRIDE_8_PAYLOAD_PATTERN_USER = BT_HCI_OP_LE_CS_TEST_PAYLOAD_USER, +}; + +/** CS Test parameters */ +struct bt_le_cs_test_param { + /** CS mode to be used during the CS procedure. */ + enum bt_conn_le_cs_main_mode main_mode; + /** CS sub-mode to be used during the CS procedure. */ + enum bt_conn_le_cs_sub_mode sub_mode; + /** Number of main mode steps taken from the end of the last CS subevent + * to be repeated at the beginning of the current CS subevent directly + * after the last mode-0 step of that event. + */ + uint8_t main_mode_repetition; + /** Number of CS mode-0 steps at the beginning of the test CS subevent. */ + uint8_t mode_0_steps; + /** CS Test role */ + enum bt_conn_le_cs_role role; + /** RTT variant */ + enum bt_conn_le_cs_rtt_type rtt_type; + /** CS_SYNC PHY */ + enum bt_conn_le_cs_sync_phy cs_sync_phy; + /** Antenna identifier to be used for CS_SYNC packets. */ + enum bt_le_cs_test_cs_sync_antenna_selection cs_sync_antenna_selection; + /** CS subevent length in microseconds. + * + * Range: 1250us to 4s + */ + uint32_t subevent_len; + /** Gap between the start of two consecutive CS subevents (N * 0.625 ms) + * + * A value of 0 means that there is only one CS subevent. + */ + uint16_t subevent_interval; + /** Maximum allowed number of subevents in the procedure. + * + * A value of 0 means that this parameter is ignored. + */ + uint8_t max_num_subevents; + /** Desired TX power level for the CS procedure. + * + * Value range is @ref BT_HCI_OP_LE_CS_MIN_MAX_TX_POWER to + * @ref BT_HCI_OP_LE_CS_MAX_MAX_TX_POWER. + * + * Special values: + * - @ref BT_HCI_OP_LE_CS_TEST_MAXIMIZE_TX_POWER tells the controller + * it should use as high a transmit power as possible + * - @ref BT_HCI_OP_LE_CS_TEST_MINIMIZE_TX_POWER tells the controller + * it should use as low a transmit power as possible + */ + uint8_t transmit_power_level; + /** Interlude time in microseconds between the RTT packets. + * + * Valid options are: + * - 10 us + * - 20 us + * - 30 us + * - 40 us + * - 50 us + * - 60 us + * - 80 us + * - 145 us + */ + uint8_t t_ip1_time; + /** Interlude time in microseconds between the CS tones. + * + * Valid options are: + * - 10 us + * - 20 us + * - 30 us + * - 40 us + * - 50 us + * - 60 us + * - 80 us + * - 145 us + */ + uint8_t t_ip2_time; + /** Time in microseconds for frequency changes. + * + * Valid options are: + * - 15 us + * - 20 us + * - 30 us + * - 40 us + * - 50 us + * - 60 us + * - 80 us + * - 100 us + * - 120 us + * - 150 us + */ + uint8_t t_fcs_time; + /** Time in microseconds for the phase measurement period of the CS tones. + * + * Valid options are: + * - 10 us + * - 20 us + * - 40 us + */ + uint8_t t_pm_time; + /** Time in microseconds for the antenna switch period of the CS tones. + * + * Valid options are: + * - 0 us + * - 1 us + * - 2 us + * - 4 us + * - 10 us + */ + uint8_t t_sw_time; + /** Antenna Configuration Index used during antenna switching during + * the tone phases of CS steps. + */ + enum bt_conn_le_cs_tone_antenna_config_selection tone_antenna_config_selection; + /** Initiator SNR control options */ + enum bt_le_cs_snr_control initiator_snr_control; + /** Reflector SNR control options */ + enum bt_le_cs_snr_control reflector_snr_control; + /** Determines octets 14 and 15 of the initial value of the DRBG nonce. */ + uint16_t drbg_nonce; + + /** Override configuration. + * + * This parameter is used to override CS parameters from the DRBG. + * Each bit configures a different set of parameters. + * + * All overrides are optional, except for those configured by bit 0. + * + * These are: + * - Bit 0 set: Override using list of channels + * - Bit 0 not set: Override using channel map + * - Bit 2 set: Override main mode steps + * - Bit 3 set: Override T_PM_Tone_Ext + * - Bit 4 set: Override tone antenna permutation + * - Bit 5 set: Override CS_SYNC AA + * - Bit 6 set: Override SS marker positions + * - Bit 7 set: Override SS marker value + * - Bit 8 set: Override CS_SYNC payload pattern and user payload + * - Bit 10 set: Procedure is replaced with a stable phase test + */ + uint16_t override_config; + + /** override config bit 0. */ + struct { + /** Number of times the channels indicated by the channel map or channel field + * are cycled through for non-mode-0 steps within a CS procedure. + */ + uint8_t channel_map_repetition; + union { + struct { + uint8_t num_channels; + uint8_t *channels; + } set; + struct { + uint8_t channel_map[10]; + enum bt_conn_le_cs_chsel_type channel_selection_type; + enum bt_conn_le_cs_ch3c_shape ch3c_shape; + uint8_t ch3c_jump; + } not_set; + }; + } override_config_0; + + /** Override config bit 2. These parameters are ignored if the bit is not set. */ + struct { + uint8_t main_mode_steps; + } override_config_2; + + /** Override config bit 3. These parameters are ignored if the bit is not set. */ + struct { + enum bt_le_cs_test_override_3_pm_tone_ext t_pm_tone_ext; + } override_config_3; + + /** Override config bit 4. These parameters are ignored if the bit is not set. */ + struct { + enum bt_le_cs_test_override_4_tone_antenna_permutation tone_antenna_permutation; + } override_config_4; + + /** Override config bit 5. These parameters are ignored if the bit is not set. */ + struct { + /** Access Address used in CS_SYNC packets sent by the initiator. */ + uint32_t cs_sync_aa_initiator; + /** Access Address used in CS_SYNC packets sent by the reflector. */ + uint32_t cs_sync_aa_reflector; + } override_config_5; + + /** Override config bit 6. These parameters are ignored if the bit is not set. */ + struct { + /** Bit number where the first marker in the channel sounding sequence starts. + * + * Must be between 0 and 28 when using @ref BT_CONN_LE_CS_RTT_TYPE_32_BIT_SOUNDING. + */ + uint8_t ss_marker1_position; + /** Bit number where the second marker in the channel sounding sequence starts. + * + * Must be between 67 and 92 when using @ref + * BT_CONN_LE_CS_RTT_TYPE_96_BIT_SOUNDING. + * + * A value of @ref BT_HCI_OP_LE_CS_TEST_SS_MARKER_2_POSITION_NOT_PRESENT + * indicates that this sounding sequence or marker is not present. + */ + uint8_t ss_marker2_position; + } override_config_6; + + /** Override config bit 7. These parameters are ignored if the bit is not set. */ + struct { + /** Value of the Sounding Sequence marker. */ + enum bt_le_cs_test_override_7_ss_marker_value ss_marker_value; + } override_config_7; + + /** Override config bit 8. These parameters are ignored if the bit is not set. */ + struct { + /** CS_SYNC payload pattern selection. */ + enum bt_le_cs_test_override_8_cs_sync_payload_pattern cs_sync_payload_pattern; + /** User payload for CS_SYNC packets. + * + * This parameter is only used when using + * @ref BT_LE_CS_TEST_OVERRIDE_8_PAYLOAD_PATTERN_USER + * + * The least significant bit corresponds to the most significant bit + * of the CS payload. When the sequence is less than 16 octets, + * the least significant octets shall be padded with zeros. + */ + uint8_t cs_sync_user_payload[16]; + } override_config_8; +}; + +/** CS config creation context */ +enum bt_le_cs_create_config_context { + /** Write CS configuration in local Controller only */ + BT_LE_CS_CREATE_CONFIG_CONTEXT_LOCAL_ONLY, + /** Write CS configuration in both local and remote Controller using Channel Sounding + * Configuration procedure + */ + BT_LE_CS_CREATE_CONFIG_CONTEXT_LOCAL_AND_REMOTE +}; + +/** CS Create Config params */ +struct bt_le_cs_create_config_params { + /** CS configuration ID */ + uint8_t id; + /** Main CS mode type */ + enum bt_conn_le_cs_main_mode main_mode_type; + /** Sub CS mode type */ + enum bt_conn_le_cs_sub_mode sub_mode_type; + /** Minimum number of CS main mode steps to be executed before a submode step is executed */ + uint8_t min_main_mode_steps; + /** Maximum number of CS main mode steps to be executed before a submode step is executed */ + uint8_t max_main_mode_steps; + /** Number of main mode steps taken from the end of the last CS subevent to be repeated + * at the beginning of the current CS subevent directly after the last mode-0 step of that + * event + */ + uint8_t main_mode_repetition; + /** Number of CS mode-0 steps to be included at the beginning of each CS subevent */ + uint8_t mode_0_steps; + /** CS role */ + enum bt_conn_le_cs_role role; + /** RTT type */ + enum bt_conn_le_cs_rtt_type rtt_type; + /** CS Sync PHY */ + enum bt_conn_le_cs_sync_phy cs_sync_phy; + /** The number of times the Channel_Map field will be cycled through for non-mode-0 steps + * within a CS procedure + */ + uint8_t channel_map_repetition; + /** Channel selection type */ + enum bt_conn_le_cs_chsel_type channel_selection_type; + /** User-specified channel sequence shape */ + enum bt_conn_le_cs_ch3c_shape ch3c_shape; + /** Number of channels skipped in each rising and falling sequence */ + uint8_t ch3c_jump; + /** Channel map used for CS procedure + * Channels n = 0, 1, 23, 24, 25, 77, and 78 are not allowed and shall be set to zero. + * Channel 79 is reserved for future use and shall be set to zero. + * At least 15 channels shall be enabled. + */ + uint8_t channel_map[10]; +}; + +/** Callbacks for CS Test */ +struct bt_le_cs_test_cb { + /**@brief CS Test Subevent data. + * + * @param[in] Subevent results. + */ + void (*le_cs_test_subevent_data_available)(struct bt_conn_le_cs_subevent_result *data); + /**@brief CS Test End Complete. */ + void (*le_cs_test_end_complete)(void); +}; + +/** Subevent result step */ +struct bt_le_cs_subevent_step { + /** CS step mode. */ + uint8_t mode; + /** CS step channel index. */ + uint8_t channel; + /** Length of role- and mode-specific information being reported. */ + uint8_t data_len; + /** Pointer to role- and mode-specific information. */ + const uint8_t *data; +}; + +/** Sign-extended IQ value extracted from step data. */ +struct bt_le_cs_iq_sample { + int16_t i; + int16_t q; +}; + +/** @brief Extract in-phase and quadrature terms from HCI-formatted PCT. + * + * Convenience function for processing 24-bit phase correction terms found + * in CS step data. The 12-bit signed real and imaginary components are + * converted to host endianness and sign-extended. + * + * @param pct 24-bit little-endian phase correction term. + * + * @return struct bt_le_cs_iq_sample containing real and imaginary terms as int16_t + */ +struct bt_le_cs_iq_sample bt_le_cs_parse_pct(const uint8_t pct[3]); + +/** @brief Set all valid channel map bits + * + * This command is used to enable all valid channels in a + * given CS channel map + * + * @param channel_map Chanel map + */ +void bt_le_cs_set_valid_chmap_bits(uint8_t channel_map[10]); + +/** @brief Read Remote Supported Capabilities + * + * This command is used to query the CS capabilities that are supported + * by the remote controller. + * + * @note To use this API @kconfig{CONFIG_BT_CHANNEL_SOUNDING} must be set. + * + * @param conn Connection Object. + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_le_cs_read_remote_supported_capabilities(struct bt_conn *conn); + +/** @brief Set Channel Sounding default settings. + * + * This command is used to set default Channel Sounding settings for this + * connection. + * + * @note To use this API @kconfig{CONFIG_BT_CHANNEL_SOUNDING} must be set. + * + * @param conn Connection Object. + * @param params Channel sounding default settings parameters. + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_le_cs_set_default_settings(struct bt_conn *conn, + const struct bt_le_cs_set_default_settings_param *params); + +/** @brief Read Remote FAE Table + * + * This command is used to read the per-channel mode-0 Frequency Actuation Error + * table of the remote Controller. + * + * @note To use this API @kconfig{CONFIG_BT_CHANNEL_SOUNDING} must be set. + * + * @param conn Connection Object. + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_le_cs_read_remote_fae_table(struct bt_conn *conn); + +/** @brief Register callbacks for the CS Test mode. + * + * Existing callbacks can be unregistered by providing NULL function + * pointers. + * + * @note To use this API @kconfig{CONFIG_BT_CHANNEL_SOUNDING_TEST} must be set. + * + * @param cs_test_cb Set of callbacks to be used with CS Test + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_le_cs_test_cb_register(struct bt_le_cs_test_cb cs_test_cb); + +/** @brief Start a CS test + * + * This command is used to start a CS test where the IUT is placed in the role + * of either the initiator or reflector. + * + * The first mode-0 channel in the list is used as the starting channel for + * the test. At the beginning of any test, the IUT in the reflector role shall + * listen on the first mode-0 channel until it receives the first transmission + * from the initiator. Similarly, with the IUT in the initiator role, the tester + * will start by listening on the first mode-0 channel and the IUT shall transmit + * on that channel for the first half of the first CS step. Thereafter, the + * parameters of this command describe the required transmit and receive behavior + * for the CS test. + * + * @note To use this API @kconfig{CONFIG_BT_CHANNEL_SOUNDING_TEST} must be set. + * + * @param params CS Test parameters + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_le_cs_start_test(const struct bt_le_cs_test_param *params); + +/** @brief Create CS configuration + * + * This command is used to create a new CS configuration or update an + * existing one with the config id specified. + * + * @note To use this API @kconfig{CONFIG_BT_CHANNEL_SOUNDING} must be set. + * + * @param conn Connection Object. + * @param params CS Create Config parameters + * @param context Controls whether the configuration is written to the local controller or + * both the local and the remote controller + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_le_cs_create_config(struct bt_conn *conn, struct bt_le_cs_create_config_params *params, + enum bt_le_cs_create_config_context context); + +/** @brief Create CS configuration + * + * This command is used to remove a CS configuration from the local controller + * identified by the config_id + * + * @note To use this API @kconfig{CONFIG_BT_CHANNEL_SOUNDING} must be set. + * + * @param conn Connection Object. + * @param config_id CS Config ID + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_le_cs_remove_config(struct bt_conn *conn, uint8_t config_id); + +/** @brief Stop ongoing CS Test + * + * This command is used to stop any CS test that is in progress. + * + * The controller is expected to finish reporting any subevent results + * before completing this termination. + * + * @note To use this API @kconfig{CONFIG_BT_CHANNEL_SOUNDING_TEST} must be set. + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_le_cs_stop_test(void); + +/** @brief Parse CS Subevent Step Data + * + * A helper for parsing HCI-formatted step data found in channel sounding subevent results. + * + * A typical use-case is filtering out data which does not meet certain packet quality or NADM + * requirements. + * + * @warning This function will consume the data when parsing. + * + * @param step_data_buf Pointer to a buffer containing the step data. + * @param func Callback function which will be called for each step data found. + * The callback should return true to continue parsing, or false to stop. + * @param user_data User data to be passed to the callback. + */ +void bt_le_cs_step_data_parse(struct net_buf_simple *step_data_buf, + bool (*func)(struct bt_le_cs_subevent_step *step, void *user_data), + void *user_data); + +/** @brief CS Security Enable + * + * This command is used to start or restart the Channel Sounding Security + * Start procedure in the local Controller for the ACL connection identified + * in the conn parameter. + * + * @note To use this API @kconfig{CONFIG_BT_CHANNEL_SOUNDING} must be set. + * + * @param conn Connection Object. + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_le_cs_security_enable(struct bt_conn *conn); + +struct bt_le_cs_procedure_enable_param { + uint8_t config_id; + enum bt_conn_le_cs_procedure_enable_state enable; +}; + +/** @brief CS Procedure Enable + * + * This command is used to enable or disable the scheduling of CS procedures + * by the local Controller, with the remote device identified in the conn + * parameter. + * + * @note To use this API @kconfig{CONFIG_BT_CHANNEL_SOUNDING} must be set. + * + * @param conn Connection Object. + * @param params Parameters for the CS Procedure Enable command. + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_le_cs_procedure_enable(struct bt_conn *conn, + const struct bt_le_cs_procedure_enable_param *params); + +enum bt_le_cs_procedure_phy { + BT_LE_CS_PROCEDURE_PHY_1M = BT_HCI_OP_LE_CS_PROCEDURE_PHY_1M, + BT_LE_CS_PROCEDURE_PHY_2M = BT_HCI_OP_LE_CS_PROCEDURE_PHY_2M, + BT_LE_CS_PROCEDURE_PHY_CODED_S8 = BT_HCI_OP_LE_CS_PROCEDURE_PHY_CODED_S8, + BT_LE_CS_PROCEDURE_PHY_CODED_S2 = BT_HCI_OP_LE_CS_PROCEDURE_PHY_CODED_S2, +}; + +#define BT_LE_CS_PROCEDURE_PREFERRED_PEER_ANTENNA_1 BIT(0) +#define BT_LE_CS_PROCEDURE_PREFERRED_PEER_ANTENNA_2 BIT(1) +#define BT_LE_CS_PROCEDURE_PREFERRED_PEER_ANTENNA_3 BIT(2) +#define BT_LE_CS_PROCEDURE_PREFERRED_PEER_ANTENNA_4 BIT(3) + +struct bt_le_cs_set_procedure_parameters_param { + /* The ID associated with the desired configuration (0 to 3) */ + uint8_t config_id; + + /* Max. duration for each CS procedure, where T = N * 0.625 ms (0x0001 to 0xFFFF) */ + uint16_t max_procedure_len; + + /* Min. number of connection events between consecutive CS procedures (0x0001 to 0xFFFF) */ + uint16_t min_procedure_interval; + + /* Max. number of connection events between consecutive CS procedures (0x0001 to 0xFFFF) */ + uint16_t max_procedure_interval; + + /* Max. number of procedures to be scheduled (0x0000 for no limit; otherwise 0x0001 + * to 0xFFFF) + */ + uint16_t max_procedure_count; + + /* Min. suggested duration for each CS subevent in microseconds (1250 us to 4 s) */ + uint32_t min_subevent_len; + + /* Max. suggested duration for each CS subevent in microseconds (1250 us to 4 s) */ + uint32_t max_subevent_len; + + /* Antenna configuration index */ + enum bt_conn_le_cs_tone_antenna_config_selection tone_antenna_config_selection; + + /* Phy */ + enum bt_le_cs_procedure_phy phy; + + /* Transmit power delta, in signed dB, to indicate the recommended difference between the + * remote device's power level for the CS tones and RTT packets and the existing power + * level for the Phy indicated by the Phy parameter (0x80 for no recommendation) + */ + int8_t tx_power_delta; + + /* Preferred peer antenna (Bitmask of BT_LE_CS_PROCEDURE_PREFERRED_PEER_ANTENNA_*) */ + uint8_t preferred_peer_antenna; + + /* Initiator SNR control adjustment */ + enum bt_le_cs_snr_control snr_control_initiator; + + /* Reflector SNR control adjustment */ + enum bt_le_cs_snr_control snr_control_reflector; +}; + +/** @brief CS Set Procedure Parameters + * + * This command is used to set the parameters for the scheduling of one + * or more CS procedures by the local controller. + * + * @note To use this API @kconfig{CONFIG_BT_CHANNEL_SOUNDING} must be set. + * + * @param conn Connection Object. + * @param params Parameters for the CS Set Procedure Parameters command. + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_le_cs_set_procedure_parameters(struct bt_conn *conn, + const struct bt_le_cs_set_procedure_parameters_param *params); + +/** @brief CS Set Channel Classification + * + * This command is used to update the channel classification based on + * its local information. + * + * The nth bitfield (in the range 0 to 78) contains the value for the CS + * channel index n. Channel Enabled = 1; Channel Disabled = 0. + * + * Channels n = 0, 1, 23, 24, 25, 77, and 78 shall be reserved for future + * use and shall be set to zero. At least 15 channels shall be enabled. + * + * The most significant bit (bit 79) is reserved for future use. + * + * @note To use this API, @kconfig{CONFIG_BT_CHANNEL_SOUNDING} must be set. + * + * @param channel_classification Bit fields + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_le_cs_set_channel_classification(uint8_t channel_classification[10]); + +/** @brief CS Read Local Supported Capabilities + * + * This command is used to read the CS capabilities that are supported + * by the local Controller. + * + * @note To use this API @kconfig{CONFIG_BT_CHANNEL_SOUNDING} must be set. + * + * @param ret Return values for the CS Procedure Enable command. + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_le_cs_read_local_supported_capabilities(struct bt_conn_le_cs_capabilities *ret); + +/** @brief CS Write Cached Remote Supported Capabilities + * + * This command is used to write the cached copy of the CS capabilities + * that are supported by the remote Controller for the connection + * identified. + * + * @note To use this API @kconfig{CONFIG_BT_CHANNEL_SOUNDING} must be set. + * + * @param conn Connection Object. + * @param params Parameters for the CS Write Cached Remote Supported Capabilities command. + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_le_cs_write_cached_remote_supported_capabilities( + struct bt_conn *conn, const struct bt_conn_le_cs_capabilities *params); + +/** @brief CS Write Cached Remote FAE Table + * + * This command is used to write a cached copy of the per-channel mode-0 + * Frequency Actuation Error table of the remote device in the local Controller. + * + * @note To use this API @kconfig{CONFIG_BT_CHANNEL_SOUNDING} must be set. + * + * @param conn Connection Object. + * @param remote_fae_table Per-channel mode-0 FAE table of the local Controller + * + * @return Zero on success or (negative) error code on failure. + */ +int bt_le_cs_write_cached_remote_fae_table(struct bt_conn *conn, int8_t remote_fae_table[72]); + +#ifdef __cplusplus +} +#endif + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_BLUETOOTH_CS_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/gap.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/gap.h index 16026d21..1b1569e3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/gap.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/gap.h @@ -38,56 +38,62 @@ extern "C" { * @name EIR/AD data type definitions * @{ */ -#define BT_DATA_FLAGS 0x01 /**< AD flags */ -#define BT_DATA_UUID16_SOME 0x02 /**< 16-bit UUID, more available */ -#define BT_DATA_UUID16_ALL 0x03 /**< 16-bit UUID, all listed */ -#define BT_DATA_UUID32_SOME 0x04 /**< 32-bit UUID, more available */ -#define BT_DATA_UUID32_ALL 0x05 /**< 32-bit UUID, all listed */ -#define BT_DATA_UUID128_SOME 0x06 /**< 128-bit UUID, more available */ -#define BT_DATA_UUID128_ALL 0x07 /**< 128-bit UUID, all listed */ -#define BT_DATA_NAME_SHORTENED 0x08 /**< Shortened name */ -#define BT_DATA_NAME_COMPLETE 0x09 /**< Complete name */ -#define BT_DATA_TX_POWER 0x0a /**< Tx Power */ -#define BT_DATA_SM_TK_VALUE 0x10 /**< Security Manager TK Value */ -#define BT_DATA_SM_OOB_FLAGS 0x11 /**< Security Manager OOB Flags */ -#define BT_DATA_PERIPHERAL_INT_RANGE 0x12 /**< Peripheral Connection Interval Range */ -#define BT_DATA_SOLICIT16 0x14 /**< Solicit UUIDs, 16-bit */ -#define BT_DATA_SOLICIT128 0x15 /**< Solicit UUIDs, 128-bit */ -#define BT_DATA_SVC_DATA16 0x16 /**< Service data, 16-bit UUID */ -#define BT_DATA_PUB_TARGET_ADDR 0x17 /**< Public Target Address */ -#define BT_DATA_RAND_TARGET_ADDR 0x18 /**< Random Target Address */ -#define BT_DATA_GAP_APPEARANCE 0x19 /**< GAP appearance */ -#define BT_DATA_ADV_INT 0x1a /**< Advertising Interval */ -#define BT_DATA_LE_BT_DEVICE_ADDRESS 0x1b /**< LE Bluetooth Device Address */ -#define BT_DATA_LE_ROLE 0x1c /**< LE Role */ -#define BT_DATA_SIMPLE_PAIRING_HASH 0x1d /**< Simple Pairing Hash C256 */ -#define BT_DATA_SIMPLE_PAIRING_RAND 0x1e /**< Simple Pairing Randomizer R256 */ -#define BT_DATA_SOLICIT32 0x1f /**< Solicit UUIDs, 32-bit */ -#define BT_DATA_SVC_DATA32 0x20 /**< Service data, 32-bit UUID */ -#define BT_DATA_SVC_DATA128 0x21 /**< Service data, 128-bit UUID */ -#define BT_DATA_LE_SC_CONFIRM_VALUE 0x22 /**< LE SC Confirmation Value */ -#define BT_DATA_LE_SC_RANDOM_VALUE 0x23 /**< LE SC Random Value */ -#define BT_DATA_URI 0x24 /**< URI */ -#define BT_DATA_INDOOR_POS 0x25 /**< Indoor Positioning */ -#define BT_DATA_TRANS_DISCOVER_DATA 0x26 /**< Transport Discovery Data */ -#define BT_DATA_LE_SUPPORTED_FEATURES 0x27 /**< LE Supported Features */ -#define BT_DATA_CHANNEL_MAP_UPDATE_IND 0x28 /**< Channel Map Update Indication */ -#define BT_DATA_MESH_PROV 0x29 /**< Mesh Provisioning PDU */ -#define BT_DATA_MESH_MESSAGE 0x2a /**< Mesh Networking PDU */ -#define BT_DATA_MESH_BEACON 0x2b /**< Mesh Beacon */ -#define BT_DATA_BIG_INFO 0x2c /**< BIGInfo */ -#define BT_DATA_BROADCAST_CODE 0x2d /**< Broadcast Code */ -#define BT_DATA_CSIS_RSI 0x2e /**< CSIS Random Set ID type */ -#define BT_DATA_ADV_INT_LONG 0x2f /**< Advertising Interval long */ -#define BT_DATA_BROADCAST_NAME 0x30 /**< Broadcast Name */ -#define BT_DATA_ENCRYPTED_AD_DATA 0x31 /**< Encrypted Advertising Data */ -#define BT_DATA_3D_INFO 0x3D /**< 3D Information Data */ - -#define BT_DATA_MANUFACTURER_DATA 0xff /**< Manufacturer Specific Data */ - -#define BT_LE_AD_LIMITED 0x01 /**< Limited Discoverable */ -#define BT_LE_AD_GENERAL 0x02 /**< General Discoverable */ -#define BT_LE_AD_NO_BREDR 0x04 /**< BR/EDR not supported */ +#define BT_DATA_FLAGS 0x01 /**< AD flags */ +#define BT_DATA_UUID16_SOME 0x02 /**< 16-bit UUID, more available */ +#define BT_DATA_UUID16_ALL 0x03 /**< 16-bit UUID, all listed */ +#define BT_DATA_UUID32_SOME 0x04 /**< 32-bit UUID, more available */ +#define BT_DATA_UUID32_ALL 0x05 /**< 32-bit UUID, all listed */ +#define BT_DATA_UUID128_SOME 0x06 /**< 128-bit UUID, more available */ +#define BT_DATA_UUID128_ALL 0x07 /**< 128-bit UUID, all listed */ +#define BT_DATA_NAME_SHORTENED 0x08 /**< Shortened name */ +#define BT_DATA_NAME_COMPLETE 0x09 /**< Complete name */ +#define BT_DATA_TX_POWER 0x0a /**< Tx Power */ +#define BT_DATA_DEVICE_CLASS 0x0d /**< Class of Device */ +#define BT_DATA_SIMPLE_PAIRING_HASH_C192 0x0e /**< Simple Pairing Hash C-192 */ +#define BT_DATA_SIMPLE_PAIRING_RAND_C192 0x0f /**< Simple Pairing Randomizer R-192 */ +#define BT_DATA_DEVICE_ID 0x10 /**< Device ID (Profile) */ +#define BT_DATA_SM_TK_VALUE 0x10 /**< Security Manager TK Value */ +#define BT_DATA_SM_OOB_FLAGS 0x11 /**< Security Manager OOB Flags */ +#define BT_DATA_PERIPHERAL_INT_RANGE 0x12 /**< Peripheral Connection Interval Range */ +#define BT_DATA_SOLICIT16 0x14 /**< Solicit UUIDs, 16-bit */ +#define BT_DATA_SOLICIT128 0x15 /**< Solicit UUIDs, 128-bit */ +#define BT_DATA_SVC_DATA16 0x16 /**< Service data, 16-bit UUID */ +#define BT_DATA_PUB_TARGET_ADDR 0x17 /**< Public Target Address */ +#define BT_DATA_RAND_TARGET_ADDR 0x18 /**< Random Target Address */ +#define BT_DATA_GAP_APPEARANCE 0x19 /**< GAP appearance */ +#define BT_DATA_ADV_INT 0x1a /**< Advertising Interval */ +#define BT_DATA_LE_BT_DEVICE_ADDRESS 0x1b /**< LE Bluetooth Device Address */ +#define BT_DATA_LE_ROLE 0x1c /**< LE Role */ +#define BT_DATA_SIMPLE_PAIRING_HASH 0x1d /**< Simple Pairing Hash C256 */ +#define BT_DATA_SIMPLE_PAIRING_RAND 0x1e /**< Simple Pairing Randomizer R256 */ +#define BT_DATA_SOLICIT32 0x1f /**< Solicit UUIDs, 32-bit */ +#define BT_DATA_SVC_DATA32 0x20 /**< Service data, 32-bit UUID */ +#define BT_DATA_SVC_DATA128 0x21 /**< Service data, 128-bit UUID */ +#define BT_DATA_LE_SC_CONFIRM_VALUE 0x22 /**< LE SC Confirmation Value */ +#define BT_DATA_LE_SC_RANDOM_VALUE 0x23 /**< LE SC Random Value */ +#define BT_DATA_URI 0x24 /**< URI */ +#define BT_DATA_INDOOR_POS 0x25 /**< Indoor Positioning */ +#define BT_DATA_TRANS_DISCOVER_DATA 0x26 /**< Transport Discovery Data */ +#define BT_DATA_LE_SUPPORTED_FEATURES 0x27 /**< LE Supported Features */ +#define BT_DATA_CHANNEL_MAP_UPDATE_IND 0x28 /**< Channel Map Update Indication */ +#define BT_DATA_MESH_PROV 0x29 /**< Mesh Provisioning PDU */ +#define BT_DATA_MESH_MESSAGE 0x2a /**< Mesh Networking PDU */ +#define BT_DATA_MESH_BEACON 0x2b /**< Mesh Beacon */ +#define BT_DATA_BIG_INFO 0x2c /**< BIGInfo */ +#define BT_DATA_BROADCAST_CODE 0x2d /**< Broadcast Code */ +#define BT_DATA_CSIS_RSI 0x2e /**< CSIS Random Set ID type */ +#define BT_DATA_ADV_INT_LONG 0x2f /**< Advertising Interval long */ +#define BT_DATA_BROADCAST_NAME 0x30 /**< Broadcast Name */ +#define BT_DATA_ENCRYPTED_AD_DATA 0x31 /**< Encrypted Advertising Data */ +#define BT_DATA_PAWR_TIMING_INFO 0x32 /**< Periodic Advertising Response Timing Info */ +#define BT_DATA_ESL 0x34 /**< Electronic Shelf Label Profile */ +#define BT_DATA_3D_INFO 0x3D /**< 3D Information Data */ + +#define BT_DATA_MANUFACTURER_DATA 0xff /**< Manufacturer Specific Data */ + +#define BT_LE_AD_LIMITED 0x01 /**< Limited Discoverable */ +#define BT_LE_AD_GENERAL 0x02 /**< General Discoverable */ +#define BT_LE_AD_NO_BREDR 0x04 /**< BR/EDR not supported */ /** * @} */ @@ -819,12 +825,225 @@ enum { /** Maximum Periodic Advertising Interval (N * 1.25 ms) */ #define BT_GAP_PER_ADV_MAX_INTERVAL 0xFFFF /* 81.91875 s */ +/** + * @brief Convert periodic advertising interval (N * 0.625 ms) to microseconds + * + * Value range of @p _interval is @ref BT_LE_ADV_INTERVAL_MIN to @ref BT_LE_ADV_INTERVAL_MAX + */ +#define BT_GAP_ADV_INTERVAL_TO_US(_interval) ((uint32_t)((_interval) * 625U)) + +/** + * @brief Convert periodic advertising interval (N * 0.625 ms) to milliseconds + * + * Value range of @p _interval is @ref BT_LE_ADV_INTERVAL_MIN to @ref BT_LE_ADV_INTERVAL_MAX + * + * @note When intervals cannot be represented in milliseconds, this will round down. + * For example BT_GAP_ADV_INTERVAL_TO_MS(0x0021) will become 20 ms instead of 20.625 ms + */ +#define BT_GAP_ADV_INTERVAL_TO_MS(_interval) (BT_GAP_ADV_INTERVAL_TO_US(_interval) / USEC_PER_MSEC) + +/** + * @brief Convert isochronous interval (N * 1.25 ms) to microseconds + * + * Value range of @p _interval is @ref BT_HCI_ISO_INTERVAL_MIN to @ref BT_HCI_ISO_INTERVAL_MAX + */ +#define BT_GAP_ISO_INTERVAL_TO_US(_interval) ((uint32_t)((_interval) * 1250U)) + +/** + * @brief Convert isochronous interval (N * 1.25 ms) to milliseconds + * + * Value range of @p _interval is @ref BT_HCI_ISO_INTERVAL_MIN to @ref BT_HCI_ISO_INTERVAL_MAX + * + * @note When intervals cannot be represented in milliseconds, this will round down. + * For example BT_GAP_ISO_INTERVAL_TO_MS(0x0005) will become 6 ms instead of 6.25 ms + */ +#define BT_GAP_ISO_INTERVAL_TO_MS(_interval) (BT_GAP_ISO_INTERVAL_TO_US(_interval) / USEC_PER_MSEC) + +/** @brief Convert periodic advertising interval (N * 1.25 ms) to microseconds * + * + * Value range of @p _interval is @ref BT_HCI_LE_PER_ADV_INTERVAL_MIN to @ref + * BT_HCI_LE_PER_ADV_INTERVAL_MAX + */ +#define BT_GAP_PER_ADV_INTERVAL_TO_US(_interval) ((uint32_t)((_interval) * 1250U)) + /** * @brief Convert periodic advertising interval (N * 1.25 ms) to milliseconds * - * 5 / 4 represents 1.25 ms unit. + * @note When intervals cannot be represented in milliseconds, this will round down. + * For example BT_GAP_PER_ADV_INTERVAL_TO_MS(0x0009) will become 11 ms instead of 11.25 ms + */ +#define BT_GAP_PER_ADV_INTERVAL_TO_MS(_interval) \ + (BT_GAP_PER_ADV_INTERVAL_TO_US(_interval) / USEC_PER_MSEC) + +/** + * @brief Convert microseconds to advertising interval units (0.625 ms) + * + * Value range of @p _interval is 20000 to 1024000 + * + * @note If @p _interval is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_US_TO_ADV_INTERVAL(21000) will become 20625 microseconds + */ +#define BT_GAP_US_TO_ADV_INTERVAL(_interval) ((uint16_t)((_interval) / 625U)) + +/** + * @brief Convert milliseconds to advertising interval units (0.625 ms) + * + * Value range of @p _interval is 20 to 1024 + * + * @note If @p _interval is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_MS_TO_ADV_INTERVAL(21) will become 20.625 milliseconds + */ +#define BT_GAP_MS_TO_ADV_INTERVAL(_interval) \ + (BT_GAP_US_TO_ADV_INTERVAL((_interval) * USEC_PER_MSEC)) + +/** + * @brief Convert microseconds to periodic advertising interval units (1.25 ms) + * + * Value range of @p _interval is 7500 to 81918750 + * + * @note If @p _interval is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_US_TO_PER_ADV_INTERVAL(11000) will become 10000 microseconds + */ +#define BT_GAP_US_TO_PER_ADV_INTERVAL(_interval) ((uint16_t)((_interval) / 1250U)) + +/** + * @brief Convert milliseconds to periodic advertising interval units (1.25 ms) + * + * Value range of @p _interval is 7.5 to 81918.75 + * + * @note If @p _interval is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_MS_TO_PER_ADV_INTERVAL(11) will become 10 milliseconds + */ +#define BT_GAP_MS_TO_PER_ADV_INTERVAL(_interval) \ + (BT_GAP_US_TO_PER_ADV_INTERVAL((_interval) * USEC_PER_MSEC)) + +/** + * @brief Convert milliseconds to periodic advertising sync timeout units (10 ms) + * + * Value range of @p _timeout is 100 to 163840 + * + * @note If @p _timeout is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_MS_TO_PER_ADV_SYNC_TIMEOUT(4005) will become 4000 milliseconds + */ +#define BT_GAP_MS_TO_PER_ADV_SYNC_TIMEOUT(_timeout) ((uint16_t)((_timeout) / 10U)) + +/** + * @brief Convert microseconds to periodic advertising sync timeout units (10 ms) + * + * Value range of @p _timeout is 100000 to 163840000 + * + * @note If @p _timeout is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_MS_TO_PER_ADV_SYNC_TIMEOUT(4005000) will become 4000000 microseconds + */ +#define BT_GAP_US_TO_PER_ADV_SYNC_TIMEOUT(_timeout) \ + (BT_GAP_MS_TO_PER_ADV_SYNC_TIMEOUT((_timeout) / USEC_PER_MSEC)) + +/** + * @brief Convert microseconds to scan interval units (0.625 ms) + * + * Value range of @p _interval is 2500 to 40959375 if @kconfig{CONFIG_BT_EXT_ADV} else + * 2500 to 10240000 + * + * @note If @p _interval is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_US_TO_SCAN_INTERVAL(21000) will become 20625 microseconds + */ +#define BT_GAP_US_TO_SCAN_INTERVAL(_interval) ((uint16_t)((_interval) / 625U)) + +/** + * @brief Convert milliseconds to scan interval units (0.625 ms) + * + * Value range of @p _interval is 2.5 to 40959.375 if @kconfig{CONFIG_BT_EXT_ADV} else + * 2500 to 10240 + * + * @note If @p _interval is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_MS_TO_SCAN_INTERVAL(21) will become 20.625 milliseconds + */ +#define BT_GAP_MS_TO_SCAN_INTERVAL(_interval) \ + (BT_GAP_US_TO_SCAN_INTERVAL((_interval) * USEC_PER_MSEC)) + +/** + * @brief Convert microseconds to scan window units (0.625 ms) + * + * Value range of @p _window is 2500 to 40959375 if @kconfig{CONFIG_BT_EXT_ADV} else + * 2500 to 10240000 + * + * @note If @p _window is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_US_TO_SCAN_WINDOW(21000) will become 20625 microseconds + */ +#define BT_GAP_US_TO_SCAN_WINDOW(_window) ((uint16_t)((_window) / 625U)) + +/** + * @brief Convert milliseconds to scan window units (0.625 ms) + * + * Value range of @p _window is 2.5 to 40959.375 if @kconfig{CONFIG_BT_EXT_ADV} else + * 2500 to 10240 + * + * @note If @p _window is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_MS_TO_SCAN_WINDOW(21) will become 20.625 milliseconds + */ +#define BT_GAP_MS_TO_SCAN_WINDOW(_window) (BT_GAP_US_TO_SCAN_WINDOW((_window) * USEC_PER_MSEC)) + +/** + * @brief Convert microseconds to connection interval units (1.25 ms) + * + * Value range of @p _interval is 7500 to 4000000 + * + * @note If @p _interval is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_US_TO_CONN_INTERVAL(21000) will become 20000 microseconds + */ +#define BT_GAP_US_TO_CONN_INTERVAL(_interval) ((uint16_t)((_interval) / 1250U)) + +/** + * @brief Convert milliseconds to connection interval units (1.25 ms) + * + * Value range of @p _interval is 7.5 to 4000 + * + * @note If @p _interval is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_MS_TO_CONN_INTERVAL(21) will become 20 milliseconds + */ +#define BT_GAP_MS_TO_CONN_INTERVAL(_interval) \ + (BT_GAP_US_TO_CONN_INTERVAL((_interval) * USEC_PER_MSEC)) + +/** + * @brief Convert milliseconds to connection supervision timeout units (10 ms) + * + * Value range of @p _timeout is 100 to 32000 + * + * @note If @p _timeout is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_MS_TO_CONN_TIMEOUT(4005) will become 4000 milliseconds + */ +#define BT_GAP_MS_TO_CONN_TIMEOUT(_timeout) ((uint16_t)((_timeout) / 10U)) + +/** + * @brief Convert microseconds to connection supervision timeout units (10 ms) + + * Value range of @p _timeout is 100000 to 32000000 + * + * @note If @p _timeout is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_MS_TO_CONN_TIMEOUT(4005000) will become 4000000 microseconds + */ +#define BT_GAP_US_TO_CONN_TIMEOUT(_timeout) (BT_GAP_MS_TO_CONN_TIMEOUT((_timeout) / USEC_PER_MSEC)) + +/** + * @brief Convert milliseconds to connection event length units (0.625) + * + * Value range of @p _event_len is 0 to 40959375 + * + * @note If @p _event_len is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_US_TO_CONN_EVENT_LEN(21000) will become 20625 milliseconds + */ +#define BT_GAP_US_TO_CONN_EVENT_LEN(_event_len) ((uint16_t)((_event_len) / 625U)) + +/** + * @brief Convert milliseconds to connection event length units (0.625) + * + * Value range of @p _event_len is 0 to 40959.375 + * + * @note If @p _event_len is not a multiple of the unit, it will round down to nearest. + * For example BT_GAP_MS_TO_CONN_EVENT_LEN(21) will become 20.625 milliseconds */ -#define BT_GAP_PER_ADV_INTERVAL_TO_MS(interval) ((interval) * 5 / 4) +#define BT_GAP_MS_TO_CONN_EVENT_LEN(_event_len) \ + (BT_GAP_US_TO_CONN_EVENT_LEN((_event_len) * USEC_PER_MSEC)) /** Constant Tone Extension (CTE) types */ enum { diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/gatt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/gatt.h index 78a6aab2..5a20771e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/gatt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/gatt.h @@ -130,10 +130,25 @@ struct bt_gatt_attr; /** @typedef bt_gatt_attr_read_func_t * @brief Attribute read callback * - * The callback can also be used locally to read the contents of the - * attribute in which case no connection will be set. + * This is the type of the bt_gatt_attr.read() method. * - * @param conn The connection that is requesting to read + * This function may safely assume the Attribute Permissions + * are satisfied for this read. Callers are responsible for + * this. + * + * Callers may set @p conn to emulate a GATT client read, or + * leave it NULL for local reads. + * + * @note GATT server relies on this method to handle read + * operations from remote GATT clients. But this method is not + * reserved for the GATT server. E.g. You can lookup attributes + * in the local ATT database and invoke this method. + * + * @note The GATT server propagates the return value from this + * method back to the remote client. + * + * @param conn The connection that is requesting to read. + * NULL if local. * @param attr The attribute that's being read * @param buf Buffer to place the read result in * @param len Length of data to read @@ -148,7 +163,32 @@ typedef ssize_t (*bt_gatt_attr_read_func_t)(struct bt_conn *conn, uint16_t offset); /** @typedef bt_gatt_attr_write_func_t - * @brief Attribute write callback + * @brief Attribute Value write implementation + * + * This is the type of the bt_gatt_attr.write() method. + * + * This function may safely assume the Attribute Permissions + * are satisfied for this write. Callers are responsible for + * this. + * + * Callers may set @p conn to emulate a GATT client write, or + * leave it NULL for local writes. + * + * If @p flags contains @ref BT_GATT_WRITE_FLAG_PREPARE, then + * the method shall not perform a write, but instead only check + * if the write is authorized and return an error code if not. + * + * Attribute Value write implementations can and often do have + * side effects besides potentially storing the value. E.g. + * togging an LED. + * + * @note GATT server relies on this method to handle write + * operations from remote GATT clients. But this method is not + * reserved for the GATT server. E.g. You can lookup attributes + * in the local ATT database and invoke this method. + * + * @note The GATT server propagates the return value from this + * method back to the remote client. * * @param conn The connection that is requesting to write * @param attr The attribute that's being written @@ -165,23 +205,110 @@ typedef ssize_t (*bt_gatt_attr_write_func_t)(struct bt_conn *conn, const void *buf, uint16_t len, uint16_t offset, uint8_t flags); -/** @brief GATT Attribute structure. */ +/** @brief GATT Attribute + * + * This type primarily represents an ATT Attribute that may be + * an entry in the local ATT database. The objects of this type + * must be part of an array that forms a GATT service. + * + * While the formed GATT service is registered with the local + * GATT server, pointers to this type can typically be given to + * GATT server APIs, like bt_gatt_notify(). + * + * @note This type is given as an argument to the + * bt_gatt_discover() application callback, but it's not a + * proper object of this type. The field @ref perm, and methods + * read() and write() are not available, and it's unsound to + * pass the pointer to GATT server APIs. + */ struct bt_gatt_attr { - /** Attribute UUID */ + /** @brief Attribute Type, aka. "UUID" + * + * The Attribute Type determines the interface that can + * be expected from the read() and write() methods and + * the possible permission configurations. + * + * E.g. Attribute of type @ref BT_UUID_GATT_CPF will act as a + * GATT Characteristic Presentation Format descriptor as + * specified in Core Specification 3.G.3.3.3.5. + * + * You can define a new Attribute Type. + */ const struct bt_uuid *uuid; - /** Attribute read callback */ + + /** @brief Attribute Value read method + * + * Readable Attributes must implement this method. + * + * Must be NULL if the attribute is not readable. + * + * The behavior of this method is determined by the Attribute + * Type. + * + * See @ref bt_gatt_attr_read_func_t. + */ bt_gatt_attr_read_func_t read; - /** Attribute write callback */ + + /** @brief Attribute Value write method + * + * Writeable Attributes must implement this method. + * + * Must be NULL if the attribute is not writable. + * + * The behavior of this method is determined by the Attribute + * Type. + * + * See @ref bt_gatt_attr_write_func_t. + */ bt_gatt_attr_write_func_t write; - /** Attribute user data */ + + /** @brief Private data for read() and write() implementation + * + * The meaning of this field varies and is not specified here. + * + * @note Attributes may have the same Attribute Type but have + * different implementations, with incompatible user data. + * Attribute Type alone must not be used to infer the type of + * the user data. + * + * @sa bt_gatt_discover_func_t about this field. + */ void *user_data; - /** Attribute handle */ + + /** @brief Attribute Handle or zero, maybe? + * + * The meaning of this field varies and is not specified here. + * Some APIs use this field as input/output. It does not always + * contain the Attribute Handle. + * + * @note Use bt_gatt_attr_get_handle() for attributes in the + * local ATT database. + * + * @sa bt_gatt_discover_func_t about this field. + */ uint16_t handle; - /** @brief Attribute permissions. + + /** @brief Attribute Permissions + * + * Bit field of @ref bt_gatt_perm. + * + * The permissions are security requirements that must be + * satisfied before calling read() or write(). * - * Will be 0 if returned from ``bt_gatt_discover()``. + * @sa bt_gatt_discover_func_t about this field. */ - uint16_t perm; + uint16_t perm: 15; + + /** @cond INTERNAL_HIDDEN + * Indicates if the attribute handle was assigned automatically. + * + * This flag is set to 1 if the attribute handle was assigned by the stack, + * and 0 if it was manually set by the application. + * + * @note Applications must not modify this field. + */ + bool _auto_assigned_handle: 1; + /** @endcond */ }; /** @brief GATT Service structure */ @@ -578,7 +705,8 @@ struct bt_gatt_attr *bt_gatt_find_by_uuid(const struct bt_gatt_attr *attr, /** @brief Get Attribute handle. * - * @param attr Attribute object. + * @param attr An attribute object currently registered in the + * local ATT server. * * @return Handle of the corresponding attribute or zero if the attribute * could not be found. @@ -1371,6 +1499,23 @@ bool bt_gatt_is_subscribed(struct bt_conn *conn, */ uint16_t bt_gatt_get_mtu(struct bt_conn *conn); +/** @brief Get Unenhanced ATT (UATT) MTU for a connection + * + * Get UATT connection MTU. + * + * The ATT_MTU defines the largest size of an ATT PDU, encompassing the ATT + * opcode, additional fields, and any attribute value payload. Consequently, + * the maximum size of a value payload is less and varies based on the type + * of ATT PDU. For example, in an ATT_HANDLE_VALUE_NTF PDU, the Attribute Value + * field can contain up to ATT_MTU - 3 octets (size of opcode and handle). + * + * @param conn Connection object. + * + * @return 0 if @p conn does not have an UATT ATT_MTU (e.g: disconnected). + * @return Current UATT ATT_MTU. + */ +uint16_t bt_gatt_get_uatt_mtu(struct bt_conn *conn); + /** @} */ /** @@ -1510,6 +1655,9 @@ enum { BT_GATT_DISCOVER_STD_CHAR_DESC, }; +/** Handle value to denote that the CCC will be automatically discovered */ +#define BT_GATT_AUTO_DISCOVER_CCC_HANDLE 0x0000U + /** @brief GATT Discover Attributes parameters */ struct bt_gatt_discover_params { /** Discover UUID type */ @@ -1759,11 +1907,6 @@ int bt_gatt_write(struct bt_conn *conn, struct bt_gatt_write_params *params); * The number of pending callbacks can be increased with the * @kconfig{CONFIG_BT_CONN_TX_MAX} option. * - * @note By using a callback it also disable the internal flow control - * which would prevent sending multiple commands without waiting for - * their transmissions to complete, so if that is required the caller - * shall not submit more data until the callback is called. - * * This function will block while the ATT request queue is full, except when * called from the BT RX thread, as this would cause a deadlock. * @@ -1915,7 +2058,7 @@ struct bt_gatt_subscribe_params { #if defined(CONFIG_BT_GATT_AUTO_DISCOVER_CCC) || defined(__DOXYGEN__) /** Subscribe End handle (for automatic discovery) */ uint16_t end_handle; - /** Discover parameters used when ccc_handle = 0 */ + /** Discover parameters used when ccc_handle = @ref BT_GATT_AUTO_DISCOVER_CCC_HANDLE */ struct bt_gatt_discover_params *disc_params; #endif /* defined(CONFIG_BT_GATT_AUTO_DISCOVER_CCC) || defined(__DOXYGEN__) */ /** Subscribe value */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/hci.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/hci.h index 21b6925e..7687abdb 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/hci.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/hci.h @@ -11,7 +11,7 @@ #include #include -#include +#include #include #include #include @@ -113,6 +113,18 @@ int bt_hci_cmd_send_sync(uint16_t opcode, struct net_buf *buf, */ int bt_hci_get_conn_handle(const struct bt_conn *conn, uint16_t *conn_handle); +/** @brief Get connection given a connection handle. + * + * The caller gets a new reference to the connection object which must be + * released with bt_conn_unref() once done using the object. + * + * @param handle The connection handle + * + * @returns The corresponding connection object on success. + * NULL if it does not exist. + */ +struct bt_conn *bt_hci_conn_lookup_handle(uint16_t handle); + /** @brief Get advertising handle for an advertising set. * * @param adv Advertising set. @@ -122,6 +134,15 @@ int bt_hci_get_conn_handle(const struct bt_conn *conn, uint16_t *conn_handle); */ int bt_hci_get_adv_handle(const struct bt_le_ext_adv *adv, uint8_t *adv_handle); +/** @brief Get advertising set given an advertising handle + * + * @param handle The advertising handle + * + * @returns The corresponding advertising set on success, + * NULL if it does not exist. + */ +struct bt_le_ext_adv *bt_hci_adv_lookup_handle(uint8_t handle); + /** @brief Get periodic advertising sync handle. * * @param sync Periodic advertising sync set. @@ -131,6 +152,15 @@ int bt_hci_get_adv_handle(const struct bt_le_ext_adv *adv, uint8_t *adv_handle); */ int bt_hci_get_adv_sync_handle(const struct bt_le_per_adv_sync *sync, uint16_t *sync_handle); +/** @brief Get periodic advertising sync given an periodic advertising sync handle. + * + * @param handle The periodic sync set handle + * + * @retval The corresponding periodic advertising sync set object on success, + * NULL if it does not exist. + */ +struct bt_le_per_adv_sync *bt_hci_per_adv_sync_lookup_handle(uint16_t handle); + /** @brief Obtain the version string given a core version number. * * The core version of a controller can be obtained by issuing diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/hci_types.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/hci_types.h index 1aa5aa91..e7d20350 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/hci_types.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/hci_types.h @@ -33,7 +33,8 @@ extern "C" { #define BT_HCI_H4_EVT 0x04 /* HCI Event packet */ #define BT_HCI_H4_ISO 0x05 /* HCI ISO Data packet */ -/* Special own address types for LL privacy (used in adv & scan parameters) */ +#define BT_HCI_OWN_ADDR_PUBLIC 0x00 +#define BT_HCI_OWN_ADDR_RANDOM 0x01 #define BT_HCI_OWN_ADDR_RPA_OR_PUBLIC 0x02 #define BT_HCI_OWN_ADDR_RPA_OR_RANDOM 0x03 #define BT_HCI_OWN_ADDR_RPA_MASK 0x02 @@ -201,6 +202,9 @@ struct bt_hci_cmd_hdr { #define BT_LE_FEAT_BIT_PAWR_ADVERTISER 43 #define BT_LE_FEAT_BIT_PAWR_SCANNER 44 +#define BT_LE_FEAT_BIT_CHANNEL_SOUNDING 46 +#define BT_LE_FEAT_BIT_CHANNEL_SOUNDING_HOST 47 + #define BT_LE_FEAT_TEST(feat, n) (feat[(n) >> 3] & \ BIT((n) & 7)) @@ -268,6 +272,10 @@ struct bt_hci_cmd_hdr { BT_LE_FEAT_BIT_PAWR_ADVERTISER) #define BT_FEAT_LE_PAWR_SCANNER(feat) BT_LE_FEAT_TEST(feat, \ BT_LE_FEAT_BIT_PAWR_SCANNER) +#define BT_FEAT_LE_CHANNEL_SOUNDING(feat) BT_LE_FEAT_TEST(feat, \ + BT_LE_FEAT_BIT_CHANNEL_SOUNDING) +#define BT_FEAT_LE_CHANNEL_SOUNDING_HOST(feat) BT_LE_FEAT_TEST(feat, \ + BT_LE_FEAT_BIT_CHANNEL_SOUNDING_HOST) #define BT_FEAT_LE_CIS(feat) (BT_FEAT_LE_CIS_CENTRAL(feat) | \ BT_FEAT_LE_CIS_PERIPHERAL(feat)) @@ -704,6 +712,26 @@ struct bt_hci_cp_le_set_path_loss_reporting_enable { #define BT_HCI_LE_PATH_LOSS_REPORTING_ENABLE 0x01 #define BT_HCI_OP_LE_SET_PATH_LOSS_REPORTING_ENABLE BT_OP(BT_OGF_LE, 0x0079) /* 0x2079 */ +struct bt_hci_cp_le_set_default_subrate { + uint16_t subrate_min; + uint16_t subrate_max; + uint16_t max_latency; + uint16_t continuation_number; + uint16_t supervision_timeout; +} __packed; + +struct bt_hci_cp_le_subrate_request { + uint16_t handle; + uint16_t subrate_min; + uint16_t subrate_max; + uint16_t max_latency; + uint16_t continuation_number; + uint16_t supervision_timeout; +} __packed; + +#define BT_HCI_OP_LE_SET_DEFAULT_SUBRATE BT_OP(BT_OGF_LE, 0x007D) /* 0x207D */ +#define BT_HCI_OP_LE_SUBRATE_REQUEST BT_OP(BT_OGF_LE, 0x007E) /* 0x207E */ + #define BT_HCI_CTL_TO_HOST_FLOW_DISABLE 0x00 #define BT_HCI_CTL_TO_HOST_FLOW_ENABLE 0x01 #define BT_HCI_OP_SET_CTL_TO_HOST_FLOW BT_OP(BT_OGF_BASEBAND, 0x0031) /* 0x0c31 */ @@ -805,6 +833,7 @@ struct bt_hci_rp_configure_data_path { #define BT_HCI_VERSION_5_2 11 #define BT_HCI_VERSION_5_3 12 #define BT_HCI_VERSION_5_4 13 +#define BT_HCI_VERSION_6_0 14 #define BT_HCI_OP_READ_LOCAL_VERSION_INFO BT_OP(BT_OGF_INFO, 0x0001) /* 0x1001 */ struct bt_hci_rp_read_local_version_info { @@ -2374,6 +2403,313 @@ struct bt_hci_cp_le_tx_test_v4_tx_power { int8_t tx_power; } __packed; +#define BT_HCI_OP_LE_CS_READ_LOCAL_SUPPORTED_CAPABILITIES BT_OP(BT_OGF_LE, 0x0089) /* 0x2089 */ + +struct bt_hci_rp_le_read_local_supported_capabilities { + uint8_t status; + uint8_t num_config_supported; + uint16_t max_consecutive_procedures_supported; + uint8_t num_antennas_supported; + uint8_t max_antenna_paths_supported; + uint8_t roles_supported; + uint8_t modes_supported; + uint8_t rtt_capability; + uint8_t rtt_aa_only_n; + uint8_t rtt_sounding_n; + uint8_t rtt_random_payload_n; + uint16_t nadm_sounding_capability; + uint16_t nadm_random_capability; + uint8_t cs_sync_phys_supported; + uint16_t subfeatures_supported; + uint16_t t_ip1_times_supported; + uint16_t t_ip2_times_supported; + uint16_t t_fcs_times_supported; + uint16_t t_pm_times_supported; + uint8_t t_sw_time_supported; + uint8_t tx_snr_capability; +} __packed; + +#define BT_HCI_OP_LE_CS_READ_REMOTE_SUPPORTED_CAPABILITIES BT_OP(BT_OGF_LE, 0x008A) /* 0x208A */ + +struct bt_hci_cp_le_read_remote_supported_capabilities { + uint16_t handle; +} __packed; + +#define BT_HCI_OP_LE_CS_WRITE_CACHED_REMOTE_SUPPORTED_CAPABILITIES \ + BT_OP(BT_OGF_LE, 0x008B) /* 0x208B */ + +struct bt_hci_cp_le_write_cached_remote_supported_capabilities { + uint16_t handle; + uint8_t num_config_supported; + uint16_t max_consecutive_procedures_supported; + uint8_t num_antennas_supported; + uint8_t max_antenna_paths_supported; + uint8_t roles_supported; + uint8_t modes_supported; + uint8_t rtt_capability; + uint8_t rtt_aa_only_n; + uint8_t rtt_sounding_n; + uint8_t rtt_random_payload_n; + uint16_t nadm_sounding_capability; + uint16_t nadm_random_capability; + uint8_t cs_sync_phys_supported; + uint16_t subfeatures_supported; + uint16_t t_ip1_times_supported; + uint16_t t_ip2_times_supported; + uint16_t t_fcs_times_supported; + uint16_t t_pm_times_supported; + uint8_t t_sw_time_supported; + uint8_t tx_snr_capability; +} __packed; + +#define BT_HCI_OP_LE_CS_SECURITY_ENABLE BT_OP(BT_OGF_LE, 0x008C) /* 0x208C */ + +struct bt_hci_cp_le_security_enable { + uint16_t handle; +} __packed; + +#define BT_HCI_OP_LE_CS_SET_DEFAULT_SETTINGS BT_OP(BT_OGF_LE, 0x008D) /* 0x208D */ + +#define BT_HCI_OP_LE_CS_INITIATOR_ROLE_MASK BIT(0) +#define BT_HCI_OP_LE_CS_REFLECTOR_ROLE_MASK BIT(1) + +#define BT_HCI_OP_LE_CS_MIN_MAX_TX_POWER -127 +#define BT_HCI_OP_LE_CS_MAX_MAX_TX_POWER 20 + +#define BT_HCI_OP_LE_CS_ANTENNA_SEL_ONE 0x01 +#define BT_HCI_OP_LE_CS_ANTENNA_SEL_TWO 0x02 +#define BT_HCI_OP_LE_CS_ANTENNA_SEL_THREE 0x03 +#define BT_HCI_OP_LE_CS_ANTENNA_SEL_FOUR 0x04 +#define BT_HCI_OP_LE_CS_ANTENNA_SEL_REP 0xFE +#define BT_HCI_OP_LE_CS_ANTENNA_SEL_NONE 0xFF + +struct bt_hci_cp_le_cs_set_default_settings { + uint16_t handle; + uint8_t role_enable; + uint8_t cs_sync_antenna_selection; + int8_t max_tx_power; +} __packed; + +#define BT_HCI_OP_LE_CS_READ_REMOTE_FAE_TABLE BT_OP(BT_OGF_LE, 0x008E) /* 0x208E */ + +struct bt_hci_cp_le_read_remote_fae_table { + uint16_t handle; +} __packed; + +#define BT_HCI_OP_LE_CS_WRITE_CACHED_REMOTE_FAE_TABLE BT_OP(BT_OGF_LE, 0x008F) /* 0x208F */ + +struct bt_hci_cp_le_write_cached_remote_fae_table { + uint16_t handle; + int8_t remote_fae_table[72]; +} __packed; + +#define BT_HCI_OP_LE_CS_SET_CHANNEL_CLASSIFICATION BT_OP(BT_OGF_LE, 0x0092) /* 0x2092 */ + +#define BT_HCI_OP_LE_CS_SET_PROCEDURE_PARAMETERS BT_OP(BT_OGF_LE, 0x0093) /* 0x2093 */ + +#define BT_HCI_OP_LE_CS_PROCEDURE_PHY_1M 0x01 +#define BT_HCI_OP_LE_CS_PROCEDURE_PHY_2M 0x02 +#define BT_HCI_OP_LE_CS_PROCEDURE_PHY_CODED_S8 0x03 +#define BT_HCI_OP_LE_CS_PROCEDURE_PHY_CODED_S2 0x04 + +struct bt_hci_cp_le_set_procedure_parameters { + uint16_t handle; + uint8_t config_id; + uint16_t max_procedure_len; + uint16_t min_procedure_interval; + uint16_t max_procedure_interval; + uint16_t max_procedure_count; + uint8_t min_subevent_len[3]; + uint8_t max_subevent_len[3]; + uint8_t tone_antenna_config_selection; + uint8_t phy; + uint8_t tx_power_delta; + uint8_t preferred_peer_antenna; + uint8_t snr_control_initiator; + uint8_t snr_control_reflector; +} __packed; + +#define BT_HCI_OP_LE_CS_PROCEDURE_ENABLE BT_OP(BT_OGF_LE, 0x0094) /* 0x2094 */ + +#define BT_HCI_OP_LE_CS_PROCEDURES_DISABLED 0x00 +#define BT_HCI_OP_LE_CS_PROCEDURES_ENABLED 0x01 + +struct bt_hci_cp_le_procedure_enable { + uint16_t handle; + uint8_t config_id; + uint8_t enable; +} __packed; + +#define BT_HCI_OP_LE_CS_TEST BT_OP(BT_OGF_LE, 0x0095) /* 0x2095 */ + +#define BT_HCI_OP_LE_CS_MAIN_MODE_1 0x1 +#define BT_HCI_OP_LE_CS_MAIN_MODE_2 0x2 +#define BT_HCI_OP_LE_CS_MAIN_MODE_3 0x3 + +#define BT_HCI_OP_LE_CS_SUB_MODE_1 0x1 +#define BT_HCI_OP_LE_CS_SUB_MODE_2 0x2 +#define BT_HCI_OP_LE_CS_SUB_MODE_3 0x3 +#define BT_HCI_OP_LE_CS_SUB_MODE_UNUSED 0xFF + +#define BT_HCI_OP_LE_CS_INITIATOR_ROLE 0x0 +#define BT_HCI_OP_LE_CS_REFLECTOR_ROLE 0x1 + +#define BT_HCI_OP_LE_CS_RTT_TYPE_AA_ONLY 0x0 +#define BT_HCI_OP_LE_CS_RTT_TYPE_32BIT_SOUND 0x1 +#define BT_HCI_OP_LE_CS_RTT_TYPE_96BIT_SOUND 0x2 +#define BT_HCI_OP_LE_CS_RTT_TYPE_32BIT_RAND 0x3 +#define BT_HCI_OP_LE_CS_RTT_TYPE_64BIT_RAND 0x4 +#define BT_HCI_OP_LE_CS_RTT_TYPE_96BIT_RAND 0x5 +#define BT_HCI_OP_LE_CS_RTT_TYPE_128BIT_RAND 0x6 + +#define BT_HCI_OP_LE_CS_CS_SYNC_1M 0x1 +#define BT_HCI_OP_LE_CS_CS_SYNC_2M 0x2 +#define BT_HCI_OP_LE_CS_CS_SYNC_2M_2BT 0x3 + +#define BT_HCI_OP_LE_CS_TEST_MINIMIZE_TX_POWER 0x7E +#define BT_HCI_OP_LE_CS_TEST_MAXIMIZE_TX_POWER 0x7F + +#define BT_HCI_OP_LE_CS_ACI_0 0x0 +#define BT_HCI_OP_LE_CS_ACI_1 0x1 +#define BT_HCI_OP_LE_CS_ACI_2 0x2 +#define BT_HCI_OP_LE_CS_ACI_3 0x3 +#define BT_HCI_OP_LE_CS_ACI_4 0x4 +#define BT_HCI_OP_LE_CS_ACI_5 0x5 +#define BT_HCI_OP_LE_CS_ACI_6 0x6 +#define BT_HCI_OP_LE_CS_ACI_7 0x7 + +#define BT_HCI_OP_LE_CS_SNR_18 0x0 +#define BT_HCI_OP_LE_CS_SNR_21 0x1 +#define BT_HCI_OP_LE_CS_SNR_24 0x2 +#define BT_HCI_OP_LE_CS_SNR_27 0x3 +#define BT_HCI_OP_LE_CS_SNR_30 0x4 +#define BT_HCI_OP_LE_CS_SNR_NOT_USED 0xFF + +#define BT_HCI_OP_LE_CS_TEST_OVERRIDE_CONFIG_0_MASK BIT(0) +#define BT_HCI_OP_LE_CS_TEST_OVERRIDE_CONFIG_2_MASK BIT(2) +#define BT_HCI_OP_LE_CS_TEST_OVERRIDE_CONFIG_3_MASK BIT(3) +#define BT_HCI_OP_LE_CS_TEST_OVERRIDE_CONFIG_4_MASK BIT(4) +#define BT_HCI_OP_LE_CS_TEST_OVERRIDE_CONFIG_5_MASK BIT(5) +#define BT_HCI_OP_LE_CS_TEST_OVERRIDE_CONFIG_6_MASK BIT(6) +#define BT_HCI_OP_LE_CS_TEST_OVERRIDE_CONFIG_7_MASK BIT(7) +#define BT_HCI_OP_LE_CS_TEST_OVERRIDE_CONFIG_8_MASK BIT(8) +#define BT_HCI_OP_LE_CS_TEST_OVERRIDE_CONFIG_10_MASK BIT(10) + +#define BT_HCI_OP_LE_CS_TEST_CHSEL_TYPE_3B 0x0 +#define BT_HCI_OP_LE_CS_TEST_CHSEL_TYPE_3C 0x1 + +#define BT_HCI_OP_LE_CS_TEST_CH3C_SHAPE_HAT 0x0 +#define BT_HCI_OP_LE_CS_TEST_CH3C_SHAPE_X 0x1 + +#define BT_HCI_OP_LE_CS_TEST_TONE_EXT_NONE 0x0 +#define BT_HCI_OP_LE_CS_TEST_TONE_EXT_INIT 0x1 +#define BT_HCI_OP_LE_CS_TEST_TONE_EXT_REFL 0x2 +#define BT_HCI_OP_LE_CS_TEST_TONE_EXT_BOTH 0x3 +#define BT_HCI_OP_LE_CS_TEST_TONE_EXT_REPEAT 0x4 + +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_00 0x0 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_01 0x1 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_02 0x2 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_03 0x3 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_04 0x4 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_05 0x5 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_06 0x6 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_07 0x7 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_08 0x8 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_09 0x9 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_10 0xA +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_11 0xB +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_12 0xC +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_13 0xD +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_14 0xE +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_15 0xF +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_16 0x10 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_17 0x11 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_18 0x12 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_19 0x13 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_20 0x14 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_21 0x15 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_22 0x16 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_23 0x17 +#define BT_HCI_OP_LE_CS_TEST_AP_INDEX_LOOP 0xFF + +#define BT_HCI_OP_LE_CS_TEST_SS_MARKER_2_POSITION_NOT_PRESENT 0xFF + +#define BT_HCI_OP_LE_CS_TEST_SS_MARKER_VAL_0011 0x0 +#define BT_HCI_OP_LE_CS_TEST_SS_MARKER_VAL_1100 0x1 +#define BT_HCI_OP_LE_CS_TEST_SS_MARKER_VAL_LOOP 0x2 + +#define BT_HCI_OP_LE_CS_TEST_PAYLOAD_PRBS9 0x00 +#define BT_HCI_OP_LE_CS_TEST_PAYLOAD_11110000 0x01 +#define BT_HCI_OP_LE_CS_TEST_PAYLOAD_10101010 0x02 +#define BT_HCI_OP_LE_CS_TEST_PAYLOAD_PRBS15 0x03 +#define BT_HCI_OP_LE_CS_TEST_PAYLOAD_11111111 0x04 +#define BT_HCI_OP_LE_CS_TEST_PAYLOAD_00000000 0x05 +#define BT_HCI_OP_LE_CS_TEST_PAYLOAD_00001111 0x06 +#define BT_HCI_OP_LE_CS_TEST_PAYLOAD_01010101 0x07 +#define BT_HCI_OP_LE_CS_TEST_PAYLOAD_USER 0x80 + +struct bt_hci_op_le_cs_test { + uint8_t main_mode_type; + uint8_t sub_mode_type; + uint8_t main_mode_repetition; + uint8_t mode_0_steps; + uint8_t role; + uint8_t rtt_type; + uint8_t cs_sync_phy; + uint8_t cs_sync_antenna_selection; + uint8_t subevent_len[3]; + uint16_t subevent_interval; + uint8_t max_num_subevents; + uint8_t transmit_power_level; + uint8_t t_ip1_time; + uint8_t t_ip2_time; + uint8_t t_fcs_time; + uint8_t t_pm_time; + uint8_t t_sw_time; + uint8_t tone_antenna_config_selection; + uint8_t reserved; + uint8_t snr_control_initiator; + uint8_t snr_control_reflector; + uint16_t drbg_nonce; + uint8_t channel_map_repetition; + uint16_t override_config; + uint8_t override_parameters_length; + uint8_t override_parameters_data[]; +} __packed; + +#define BT_HCI_OP_LE_CS_CREATE_CONFIG BT_OP(BT_OGF_LE, 0x0090) /* 0x2090 */ + +struct bt_hci_cp_le_cs_create_config { + uint16_t handle; + uint8_t config_id; + uint8_t create_context; + uint8_t main_mode_type; + uint8_t sub_mode_type; + uint8_t min_main_mode_steps; + uint8_t max_main_mode_steps; + uint8_t main_mode_repetition; + uint8_t mode_0_steps; + uint8_t role; + uint8_t rtt_type; + uint8_t cs_sync_phy; + uint8_t channel_map[10]; + uint8_t channel_map_repetition; + uint8_t channel_selection_type; + uint8_t ch3c_shape; + uint8_t ch3c_jump; + uint8_t reserved; +} __packed; + +#define BT_HCI_OP_LE_CS_REMOVE_CONFIG BT_OP(BT_OGF_LE, 0x0091) /* 0x2091 */ + +struct bt_hci_cp_le_cs_remove_config { + uint16_t handle; + uint8_t config_id; +} __packed; + +#define BT_HCI_OP_LE_CS_TEST_END BT_OP(BT_OGF_LE, 0x0096) /* 0x2096 */ + /* Event definitions */ #define BT_HCI_EVT_UNKNOWN 0x00 @@ -2729,6 +3065,13 @@ struct bt_hci_evt_le_advertising_report { struct bt_hci_evt_le_advertising_info adv_info[0]; } __packed; +/** All limits according to BT Core Spec v5.4 [Vol 4, Part E]. */ +#define BT_HCI_LE_INTERVAL_MIN 0x0006 +#define BT_HCI_LE_INTERVAL_MAX 0x0c80 +#define BT_HCI_LE_PERIPHERAL_LATENCY_MAX 0x01f3 +#define BT_HCI_LE_SUPERVISON_TIMEOUT_MIN 0x000a +#define BT_HCI_LE_SUPERVISON_TIMEOUT_MAX 0x0c80 + #define BT_HCI_EVT_LE_CONN_UPDATE_COMPLETE 0x03 struct bt_hci_evt_le_conn_update_complete { uint8_t status; @@ -3098,6 +3441,403 @@ struct bt_hci_evt_le_biginfo_adv_report { uint8_t encryption; } __packed; +/** All limits according to BT Core Spec v5.4 [Vol 4, Part E]. */ +#define BT_HCI_LE_SUBRATE_FACTOR_MIN 0x0001 +#define BT_HCI_LE_SUBRATE_FACTOR_MAX 0x01f4 +#define BT_HCI_LE_CONTINUATION_NUM_MAX 0x01f3 + +#define BT_HCI_EVT_LE_SUBRATE_CHANGE 0x23 +struct bt_hci_evt_le_subrate_change { + uint8_t status; + uint16_t handle; + uint16_t subrate_factor; + uint16_t peripheral_latency; + uint16_t continuation_number; + uint16_t supervision_timeout; +} __packed; + +#define BT_HCI_LE_CS_INITIATOR_ROLE_MASK BIT(0) +#define BT_HCI_LE_CS_REFLECTOR_ROLE_MASK BIT(1) + +#define BT_HCI_LE_CS_MODES_SUPPORTED_MODE_3_MASK BIT(0) + +#define BT_HCI_LE_CS_RTT_AA_ONLY_N_10NS_MASK BIT(0) +#define BT_HCI_LE_CS_RTT_SOUNDING_N_10NS_MASK BIT(1) +#define BT_HCI_LE_CS_RTT_RANDOM_PAYLOAD_N_10NS_MASK BIT(2) + +#define BT_HCI_LE_CS_NADM_SOUNDING_CAPABILITY_PHASE_BASED_MASK BIT(0) +#define BT_HCI_LE_CS_NADM_RANDOM_CAPABILITY_PHASE_BASED_MASK BIT(0) + +#define BT_HCI_LE_CS_SYNC_PHYS_2M_MASK BIT(1) +#define BT_HCI_LE_CS_SYNC_PHYS_2M_2BT_MASK BIT(2) + +#define BT_HCI_LE_CS_SUBFEATURE_NO_TX_FAE_MASK BIT(1) +#define BT_HCI_LE_CS_SUBFEATURE_CHSEL_ALG_3C_MASK BIT(2) +#define BT_HCI_LE_CS_SUBFEATURE_PBR_FROM_RTT_SOUNDING_SEQ_MASK BIT(3) + +#define BT_HCI_LE_CS_T_IP1_TIME_10US_MASK BIT(0) +#define BT_HCI_LE_CS_T_IP1_TIME_20US_MASK BIT(1) +#define BT_HCI_LE_CS_T_IP1_TIME_30US_MASK BIT(2) +#define BT_HCI_LE_CS_T_IP1_TIME_40US_MASK BIT(3) +#define BT_HCI_LE_CS_T_IP1_TIME_50US_MASK BIT(4) +#define BT_HCI_LE_CS_T_IP1_TIME_60US_MASK BIT(5) +#define BT_HCI_LE_CS_T_IP1_TIME_80US_MASK BIT(6) + +#define BT_HCI_LE_CS_T_IP2_TIME_10US_MASK BIT(0) +#define BT_HCI_LE_CS_T_IP2_TIME_20US_MASK BIT(1) +#define BT_HCI_LE_CS_T_IP2_TIME_30US_MASK BIT(2) +#define BT_HCI_LE_CS_T_IP2_TIME_40US_MASK BIT(3) +#define BT_HCI_LE_CS_T_IP2_TIME_50US_MASK BIT(4) +#define BT_HCI_LE_CS_T_IP2_TIME_60US_MASK BIT(5) +#define BT_HCI_LE_CS_T_IP2_TIME_80US_MASK BIT(6) + +#define BT_HCI_LE_CS_T_FCS_TIME_15US_MASK BIT(0) +#define BT_HCI_LE_CS_T_FCS_TIME_20US_MASK BIT(1) +#define BT_HCI_LE_CS_T_FCS_TIME_30US_MASK BIT(2) +#define BT_HCI_LE_CS_T_FCS_TIME_40US_MASK BIT(3) +#define BT_HCI_LE_CS_T_FCS_TIME_50US_MASK BIT(4) +#define BT_HCI_LE_CS_T_FCS_TIME_60US_MASK BIT(5) +#define BT_HCI_LE_CS_T_FCS_TIME_80US_MASK BIT(6) +#define BT_HCI_LE_CS_T_FCS_TIME_100US_MASK BIT(7) +#define BT_HCI_LE_CS_T_FCS_TIME_1200US_MASK BIT(8) + +#define BT_HCI_LE_CS_T_PM_TIME_10US_MASK BIT(0) +#define BT_HCI_LE_CS_T_PM_TIME_20US_MASK BIT(1) + +#define BT_HCI_LE_CS_TX_SNR_CAPABILITY_18DB_MASK BIT(0) +#define BT_HCI_LE_CS_TX_SNR_CAPABILITY_21DB_MASK BIT(1) +#define BT_HCI_LE_CS_TX_SNR_CAPABILITY_24DB_MASK BIT(2) +#define BT_HCI_LE_CS_TX_SNR_CAPABILITY_27DB_MASK BIT(3) +#define BT_HCI_LE_CS_TX_SNR_CAPABILITY_30DB_MASK BIT(4) + +#define BT_HCI_EVT_LE_CS_READ_REMOTE_SUPPORTED_CAPABILITIES_COMPLETE 0x2C +struct bt_hci_evt_le_cs_read_remote_supported_capabilities_complete { + uint8_t status; + uint16_t conn_handle; + uint8_t num_config_supported; + uint16_t max_consecutive_procedures_supported; + uint8_t num_antennas_supported; + uint8_t max_antenna_paths_supported; + uint8_t roles_supported; + uint8_t modes_supported; + uint8_t rtt_capability; + uint8_t rtt_aa_only_n; + uint8_t rtt_sounding_n; + uint8_t rtt_random_payload_n; + uint16_t nadm_sounding_capability; + uint16_t nadm_random_capability; + uint8_t cs_sync_phys_supported; + uint16_t subfeatures_supported; + uint16_t t_ip1_times_supported; + uint16_t t_ip2_times_supported; + uint16_t t_fcs_times_supported; + uint16_t t_pm_times_supported; + uint8_t t_sw_time_supported; + uint8_t tx_snr_capability; +} __packed; + +#define BT_HCI_EVT_LE_CS_READ_REMOTE_FAE_TABLE_COMPLETE 0x2D +struct bt_hci_evt_le_cs_read_remote_fae_table_complete { + uint8_t status; + uint16_t conn_handle; + int8_t remote_fae_table[72]; +} __packed; + +#define BT_HCI_LE_CS_CONFIG_ACTION_REMOVED 0x00 +#define BT_HCI_LE_CS_CONFIG_ACTION_CREATED 0x01 + +#define BT_HCI_EVT_LE_CS_SECURITY_ENABLE_COMPLETE 0x2E +struct bt_hci_evt_le_cs_security_enable_complete { + uint8_t status; + uint16_t handle; +} __packed; + +#define BT_HCI_EVT_LE_CS_CONFIG_COMPLETE 0x2F +struct bt_hci_evt_le_cs_config_complete { + uint8_t status; + uint16_t handle; + uint8_t config_id; + uint8_t action; + uint8_t main_mode_type; + uint8_t sub_mode_type; + uint8_t min_main_mode_steps; + uint8_t max_main_mode_steps; + uint8_t main_mode_repetition; + uint8_t mode_0_steps; + uint8_t role; + uint8_t rtt_type; + uint8_t cs_sync_phy; + uint8_t channel_map[10]; + uint8_t channel_map_repetition; + uint8_t channel_selection_type; + uint8_t ch3c_shape; + uint8_t ch3c_jump; + uint8_t reserved; + uint8_t t_ip1_time; + uint8_t t_ip2_time; + uint8_t t_fcs_time; + uint8_t t_pm_time; +} __packed; + +#define BT_HCI_LE_CS_TEST_CONN_HANDLE 0x0FFF + +#define BT_HCI_LE_CS_PROCEDURE_DONE_STATUS_COMPLETE 0x0 +#define BT_HCI_LE_CS_PROCEDURE_DONE_STATUS_PARTIAL 0x1 +#define BT_HCI_LE_CS_PROCEDURE_DONE_STATUS_ABORTED 0xF + +#define BT_HCI_LE_CS_SUBEVENT_DONE_STATUS_COMPLETE 0x0 +#define BT_HCI_LE_CS_SUBEVENT_DONE_STATUS_PARTIAL 0x1 +#define BT_HCI_LE_CS_SUBEVENT_DONE_STATUS_ABORTED 0xF + +#define BT_HCI_LE_CS_PROCEDURE_ABORT_REASON_NO_ABORT 0x0 +#define BT_HCI_LE_CS_PROCEDURE_ABORT_REASON_LOCAL_HOST_OR_REMOTE_REQUEST 0x1 +#define BT_HCI_LE_CS_PROCEDURE_ABORT_REASON_TOO_FEW_CHANNELS 0x2 +#define BT_HCI_LE_CS_PROCEDURE_ABORT_REASON_CHMAP_INSTANT_PASSED 0x3 +#define BT_HCI_LE_CS_PROCEDURE_ABORT_REASON_UNSPECIFIED 0xF + +#define BT_HCI_LE_CS_SUBEVENT_ABORT_REASON_NO_ABORT 0x0 +#define BT_HCI_LE_CS_SUBEVENT_ABORT_REASON_LOCAL_HOST_OR_REMOTE_REQUEST 0x1 +#define BT_HCI_LE_CS_SUBEVENT_ABORT_REASON_NO_CS_SYNC_RECEIVED 0x2 +#define BT_HCI_LE_CS_SUBEVENT_ABORT_REASON_SCHED_CONFLICT 0x3 +#define BT_HCI_LE_CS_SUBEVENT_ABORT_REASON_UNSPECIFIED 0xF + +#define BT_HCI_LE_CS_SUBEVENT_RESULT_N_AP_IGNORED 0x00 +#define BT_HCI_LE_CS_SUBEVENT_RESULT_N_AP_1 0x01 +#define BT_HCI_LE_CS_SUBEVENT_RESULT_N_AP_2 0x02 +#define BT_HCI_LE_CS_SUBEVENT_RESULT_N_AP_3 0x03 +#define BT_HCI_LE_CS_SUBEVENT_RESULT_N_AP_4 0x04 + +#define BT_HCI_LE_CS_SUBEVENT_RESULT_FREQ_COMPENSATION_NOT_AVAILABLE 0xC000 + +#define BT_HCI_LE_CS_SUBEVENT_RESULT_PCT_NOT_AVAILABLE 0xFFFFFFFF + +#define BT_HCI_LE_CS_REF_POWER_LEVEL_UNAVAILABLE 0x7F + +#define BT_HCI_LE_CS_PCT_I_MASK 0x000FFF +#define BT_HCI_LE_CS_PCT_Q_MASK 0xFFF000 + +#define BT_HCI_LE_CS_TONE_QUALITY_HIGH 0x0 +#define BT_HCI_LE_CS_TONE_QUALITY_MED 0x1 +#define BT_HCI_LE_CS_TONE_QUALITY_LOW 0x2 +#define BT_HCI_LE_CS_TONE_QUALITY_UNAVAILABLE 0x3 + +#define BT_HCI_LE_CS_NOT_TONE_EXT_SLOT 0x0 +#define BT_HCI_LE_CS_TONE_EXT_SLOT_EXT_NOT_EXPECTED 0x1 +#define BT_HCI_LE_CS_TONE_EXT_SLOT_EXT_EXPECTED 0x2 + +#define BT_HCI_LE_CS_TIME_DIFFERENCE_NOT_AVAILABLE ((int16_t)0x8000) + +#define BT_HCI_LE_CS_PACKET_NADM_ATTACK_EXT_UNLIKELY 0x00 +#define BT_HCI_LE_CS_PACKET_NADM_ATTACK_VERY_UNLIKELY 0x01 +#define BT_HCI_LE_CS_PACKET_NADM_ATTACK_UNLIKELY 0x02 +#define BT_HCI_LE_CS_PACKET_NADM_ATTACK_POSSIBLE 0x03 +#define BT_HCI_LE_CS_PACKET_NADM_ATTACK_LIKELY 0x04 +#define BT_HCI_LE_CS_PACKET_NADM_ATTACK_VERY_LIKELY 0x05 +#define BT_HCI_LE_CS_PACKET_NADM_ATTACK_EXT_LIKELY 0x06 +#define BT_HCI_LE_CS_PACKET_NADM_UNKNOWN 0xFF + +#define BT_HCI_LE_CS_PACKET_QUALITY_AA_CHECK_SUCCESSFUL 0x0 +#define BT_HCI_LE_CS_PACKET_QUALITY_AA_CHECK_BIT_ERRORS_FOUND 0x1 +#define BT_HCI_LE_CS_PACKET_QUALITY_AA_CHECK_AA_NOT_FOUND 0x2 + +#define BT_HCI_LE_CS_PACKET_RSSI_NOT_AVAILABLE 0x7F + +#define BT_HCI_EVT_LE_CS_SUBEVENT_RESULT 0x31 +/** Subevent result step data format: Mode 0 Initiator */ +struct bt_hci_le_cs_step_data_mode_0_initiator { +#ifdef CONFIG_LITTLE_ENDIAN + uint8_t packet_quality_aa_check: 4; + uint8_t packet_quality_bit_errors: 4; +#else + uint8_t packet_quality_bit_errors: 4; + uint8_t packet_quality_aa_check: 4; +#endif /* CONFIG_LITTLE_ENDIAN */ + uint8_t packet_rssi; + uint8_t packet_antenna; + uint16_t measured_freq_offset; +} __packed; + +/** Subevent result step data format: Mode 0 Reflector */ +struct bt_hci_le_cs_step_data_mode_0_reflector { +#ifdef CONFIG_LITTLE_ENDIAN + uint8_t packet_quality_aa_check: 4; + uint8_t packet_quality_bit_errors: 4; +#else + uint8_t packet_quality_bit_errors: 4; + uint8_t packet_quality_aa_check: 4; +#endif /* CONFIG_LITTLE_ENDIAN */ + uint8_t packet_rssi; + uint8_t packet_antenna; +} __packed; + +/** Subevent result step data format: Mode 1 */ +struct bt_hci_le_cs_step_data_mode_1 { +#ifdef CONFIG_LITTLE_ENDIAN + uint8_t packet_quality_aa_check: 4; + uint8_t packet_quality_bit_errors: 4; +#else + uint8_t packet_quality_bit_errors: 4; + uint8_t packet_quality_aa_check: 4; +#endif /* CONFIG_LITTLE_ENDIAN */ + uint8_t packet_nadm; + uint8_t packet_rssi; + union { + int16_t toa_tod_initiator; + int16_t tod_toa_reflector; + }; + uint8_t packet_antenna; +} __packed; + +/** Subevent result step data format: Mode 1 with sounding sequence RTT support */ +struct bt_hci_le_cs_step_data_mode_1_ss_rtt { +#ifdef CONFIG_LITTLE_ENDIAN + uint8_t packet_quality_aa_check: 4; + uint8_t packet_quality_bit_errors: 4; +#else + uint8_t packet_quality_bit_errors: 4; + uint8_t packet_quality_aa_check: 4; +#endif /* CONFIG_LITTLE_ENDIAN */ + uint8_t packet_nadm; + uint8_t packet_rssi; + union { + int16_t toa_tod_initiator; + int16_t tod_toa_reflector; + }; + uint8_t packet_antenna; + uint8_t packet_pct1[4]; + uint8_t packet_pct2[4]; +} __packed; + + +/** Format for per-antenna path step data in modes 2 and 3 */ +struct bt_hci_le_cs_step_data_tone_info { + uint8_t phase_correction_term[3]; +#ifdef CONFIG_LITTLE_ENDIAN + uint8_t quality_indicator: 4; + uint8_t extension_indicator: 4; +#else + uint8_t extension_indicator: 4; + uint8_t quality_indicator: 4; +#endif /* CONFIG_LITTLE_ENDIAN */ +} __packed; + +/** Subevent result step data format: Mode 2 */ +struct bt_hci_le_cs_step_data_mode_2 { + uint8_t antenna_permutation_index; + struct bt_hci_le_cs_step_data_tone_info tone_info[]; +} __packed; + +/** Subevent result step data format: Mode 3 */ +struct bt_hci_le_cs_step_data_mode_3 { +#ifdef CONFIG_LITTLE_ENDIAN + uint8_t packet_quality_aa_check: 4; + uint8_t packet_quality_bit_errors: 4; +#else + uint8_t packet_quality_bit_errors: 4; + uint8_t packet_quality_aa_check: 4; +#endif /* CONFIG_LITTLE_ENDIAN */ + uint8_t packet_nadm; + uint8_t packet_rssi; + union { + int16_t toa_tod_initiator; + int16_t tod_toa_reflector; + }; + uint8_t packet_antenna; + uint8_t antenna_permutation_index; + struct bt_hci_le_cs_step_data_tone_info tone_info[]; +} __packed; + +/** Subevent result step data format: Mode 3 with sounding sequence RTT support */ +struct bt_hci_le_cs_step_data_mode_3_ss_rtt { +#ifdef CONFIG_LITTLE_ENDIAN + uint8_t packet_quality_aa_check: 4; + uint8_t packet_quality_bit_errors: 4; +#else + uint8_t packet_quality_bit_errors: 4; + uint8_t packet_quality_aa_check: 4; +#endif /* CONFIG_LITTLE_ENDIAN */ + uint8_t packet_nadm; + uint8_t packet_rssi; + union { + int16_t toa_tod_initiator; + int16_t tod_toa_reflector; + }; + uint8_t packet_antenna; + uint8_t packet_pct1[4]; + uint8_t packet_pct2[4]; + uint8_t antenna_permutation_index; + struct bt_hci_le_cs_step_data_tone_info tone_info[]; +} __packed; + +struct bt_hci_evt_le_cs_subevent_result_step { + uint8_t step_mode; + uint8_t step_channel; + uint8_t step_data_length; + uint8_t step_data[]; +} __packed; + +struct bt_hci_evt_le_cs_subevent_result { + uint16_t conn_handle; + uint8_t config_id; + uint16_t start_acl_conn_event_counter; + uint16_t procedure_counter; + uint16_t frequency_compensation; + uint8_t reference_power_level; + uint8_t procedure_done_status; + uint8_t subevent_done_status; +#ifdef CONFIG_LITTLE_ENDIAN + uint8_t procedure_abort_reason: 4; + uint8_t subevent_abort_reason: 4; +#else + uint8_t subevent_abort_reason: 4; + uint8_t procedure_abort_reason: 4; +#endif /* CONFIG_LITTLE_ENDIAN */ + uint8_t num_antenna_paths; + uint8_t num_steps_reported; + uint8_t steps[]; +} __packed; + +#define BT_HCI_EVT_LE_CS_SUBEVENT_RESULT_CONTINUE 0x32 + +struct bt_hci_evt_le_cs_subevent_result_continue { + uint16_t conn_handle; + uint8_t config_id; + uint8_t procedure_done_status; + uint8_t subevent_done_status; +#ifdef CONFIG_LITTLE_ENDIAN + uint8_t procedure_abort_reason: 4; + uint8_t subevent_abort_reason: 4; +#else + uint8_t subevent_abort_reason: 4; + uint8_t procedure_abort_reason: 4; +#endif /* CONFIG_LITTLE_ENDIAN */ + uint8_t num_antenna_paths; + uint8_t num_steps_reported; + uint8_t steps[]; +} __packed; + +#define BT_HCI_EVT_LE_CS_TEST_END_COMPLETE 0x33 +struct bt_hci_evt_le_cs_test_end_complete { + uint8_t status; +} __packed; + +#define BT_HCI_EVT_LE_CS_PROCEDURE_ENABLE_COMPLETE 0x30 +struct bt_hci_evt_le_cs_procedure_enable_complete { + uint8_t status; + uint16_t handle; + uint8_t config_id; + uint8_t state; + uint8_t tone_antenna_config_selection; + uint8_t selected_tx_power; + uint8_t subevent_len[3]; + uint8_t subevents_per_event; + uint16_t subevent_interval; + uint16_t event_interval; + uint16_t procedure_interval; + uint16_t procedure_count; + uint16_t max_procedure_len; +} __packed; + /* Event mask bits */ #define BT_EVT_BIT(n) (1ULL << (n)) @@ -3178,6 +3918,7 @@ struct bt_hci_evt_le_biginfo_adv_report { #define BT_EVT_MASK_LE_PATH_LOSS_THRESHOLD BT_EVT_BIT(31) #define BT_EVT_MASK_LE_TRANSMIT_POWER_REPORTING BT_EVT_BIT(32) #define BT_EVT_MASK_LE_BIGINFO_ADV_REPORT BT_EVT_BIT(33) +#define BT_EVT_MASK_LE_SUBRATE_CHANGE BT_EVT_BIT(34) #define BT_EVT_MASK_LE_PER_ADV_SYNC_ESTABLISHED_V2 BT_EVT_BIT(35) #define BT_EVT_MASK_LE_PER_ADVERTISING_REPORT_V2 BT_EVT_BIT(36) @@ -3186,6 +3927,15 @@ struct bt_hci_evt_le_biginfo_adv_report { #define BT_EVT_MASK_LE_PER_ADV_RESPONSE_REPORT BT_EVT_BIT(39) #define BT_EVT_MASK_LE_ENH_CONN_COMPLETE_V2 BT_EVT_BIT(40) +#define BT_EVT_MASK_LE_CS_READ_REMOTE_SUPPORTED_CAPABILITIES_COMPLETE BT_EVT_BIT(43) +#define BT_EVT_MASK_LE_CS_READ_REMOTE_FAE_TABLE_COMPLETE BT_EVT_BIT(44) +#define BT_EVT_MASK_LE_CS_SECURITY_ENABLE_COMPLETE BT_EVT_BIT(45) +#define BT_EVT_MASK_LE_CS_CONFIG_COMPLETE BT_EVT_BIT(46) +#define BT_EVT_MASK_LE_CS_PROCEDURE_ENABLE_COMPLETE BT_EVT_BIT(47) +#define BT_EVT_MASK_LE_CS_SUBEVENT_RESULT BT_EVT_BIT(48) +#define BT_EVT_MASK_LE_CS_SUBEVENT_RESULT_CONTINUE BT_EVT_BIT(49) +#define BT_EVT_MASK_LE_CS_TEST_END_COMPLETE BT_EVT_BIT(50) + /** HCI Error Codes, BT Core Spec v5.4 [Vol 1, Part F]. */ #define BT_HCI_ERR_SUCCESS 0x00 #define BT_HCI_ERR_UNKNOWN_CMD 0x01 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/iso.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/iso.h index 1aad27be..fea94f62 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/iso.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/iso.h @@ -5,7 +5,7 @@ /* * Copyright (c) 2020 Intel Corporation - * Copyright (c) 2021 Nordic Semiconductor ASA + * Copyright (c) 2021-2024 Nordic Semiconductor ASA * * SPDX-License-Identifier: Apache-2.0 */ @@ -23,10 +23,18 @@ * @{ */ -#include +#include + +#include +#include #include #include #include +#include +#include +#include +#include +#include #ifdef __cplusplus extern "C" { @@ -47,6 +55,16 @@ extern "C" { */ #define BT_ISO_SDU_BUF_SIZE(mtu) BT_BUF_ISO_SIZE(mtu) +/** + * Convert BIS index to bit + * + * The BIS indexes start from 0x01, so the lowest allowed bit is + * BIT(0) that represents index 0x01. To synchronize to e.g. BIS + * indexes 0x01 and 0x02, the bitfield value should be BIT(0) | BIT(1). + * As a general notation, to sync to BIS index N use BIT(N - 1). + */ +#define BT_ISO_BIS_INDEX_BIT(x) (BIT((x) - 1)) + /** Value to set the ISO data path over HCi. */ #define BT_ISO_DATA_PATH_HCI 0x00 @@ -123,6 +141,14 @@ extern "C" { /** Maximum pre-transmission offset */ #define BT_ISO_PTO_MAX 0x0FU +/** + * @brief Check if ISO BIS bitfield is valid (BT_ISO_BIS_INDEX_BIT(1)|..|BT_ISO_BIS_INDEX_BIT(31)) + * + * @param _bis_bitfield BIS index bitfield (uint32) + */ +#define BT_ISO_VALID_BIS_BITFIELD(_bis_bitfield) \ + ((_bis_bitfield) != 0U && (_bis_bitfield) <= BIT_MASK(BT_ISO_BIS_INDEX_MAX)) + /** * @brief Life-span states of ISO channel. Used only by internal APIs dealing with setting channel * to proper state depending on operational context. @@ -548,9 +574,10 @@ struct bt_iso_big_sync_param { /** * @brief Bitfield of the BISes to sync to * - * The BIS indexes start from 0x01, so the lowest allowed bit is - * BIT(1) that represents index 0x01. To synchronize to e.g. BIS - * indexes 0x01 and 0x02, the bitfield value should be BIT(1) | BIT(2). + * Use @ref BT_ISO_BIS_INDEX_BIT to convert BIS indexes to a bitfield. + * + * To synchronize to e.g. BIS indexes 0x01 and 0x02, this can be set to + * BT_ISO_BIS_INDEX_BIT(0x01) | BT_ISO_BIS_INDEX_BIT(0x02). */ uint32_t bis_bitfield; @@ -1076,6 +1103,42 @@ int bt_iso_chan_get_info(const struct bt_iso_chan *chan, struct bt_iso_info *inf */ int bt_iso_chan_get_tx_sync(const struct bt_iso_chan *chan, struct bt_iso_tx_info *info); +/** + * @brief Struct to hold the Broadcast Isochronous Group callbacks + * + * These can be registered for usage with bt_iso_big_register_cb(). + */ +struct bt_iso_big_cb { + /** + * @brief The BIG has started and all of the streams are ready for data + * + * @param big The started BIG + */ + void (*started)(struct bt_iso_big *big); + + /** + * @brief The BIG has stopped and none of the streams are ready for data + * + * @param big The stopped BIG + * @param reason The reason why the BIG stopped (see the BT_HCI_ERR_* values) + */ + void (*stopped)(struct bt_iso_big *big, uint8_t reason); + + /** @internal Internally used field for list handling */ + sys_snode_t _node; +}; + +/** + * @brief Registers callbacks for Broadcast Sources + * + * @param cb Pointer to the callback structure. + * + * @retval 0 on success + * @retval -EINVAL if @p cb is NULL + * @retval -EEXIST if @p cb is already registered + */ +int bt_iso_big_register_cb(struct bt_iso_big_cb *cb); + /** * @brief Creates a BIG as a broadcaster * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/l2cap.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/l2cap.h index f471c925..8358d62c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/l2cap.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/l2cap.h @@ -18,6 +18,7 @@ * @{ */ +#include #include #include @@ -83,6 +84,42 @@ extern "C" { */ #define BT_L2CAP_SDU_BUF_SIZE(mtu) BT_L2CAP_BUF_SIZE(BT_L2CAP_SDU_HDR_SIZE + (mtu)) +/** @brief L2CAP ECRED minimum MTU + * + * The minimum MTU for an L2CAP Enhanced Credit Based Connection. + * + * This requirement is inferred from text in Core 3.A.4.25 v6.0: + * + * L2CAP implementations shall support a minimum MTU size of 64 + * octets for these channels. + */ +#define BT_L2CAP_ECRED_MIN_MTU 64 + +/** @brief L2CAP ECRED minimum MPS + * + * The minimum MPS for an L2CAP Enhanced Credit Based Connection. + * + * This requirement is inferred from text in Core 3.A.4.25 v6.0: + * + * L2CAP implementations shall support a minimum MPS of 64 and may + * support an MPS up to 65533 octets for these channels. + */ +#define BT_L2CAP_ECRED_MIN_MPS 64 + +/** @brief The maximum number of channels in ECRED L2CAP signaling PDUs + * + * Currently, this is the maximum number of channels referred to in the + * following PDUs: + * - L2CAP_CREDIT_BASED_CONNECTION_REQ + * - L2CAP_CREDIT_BASED_RECONFIGURE_REQ + * + * @warning The commonality is inferred between the PDUs. The Bluetooth + * specification treats these as separate numbers and does now + * guarantee the same limit for potential future ECRED L2CAP signaling + * PDUs. + */ +#define BT_L2CAP_ECRED_CHAN_MAX_PER_REQ 5 + struct bt_l2cap_chan; /** @typedef bt_l2cap_chan_destroy_t @@ -272,7 +309,10 @@ struct bt_l2cap_br_chan { struct k_fifo _pdu_tx_queue; }; -/** @brief L2CAP Channel operations structure. */ +/** @brief L2CAP Channel operations structure. + * + * The object has to stay valid and constant for the lifetime of the channel. + */ struct bt_l2cap_chan_ops { /** @brief Channel connected callback * @@ -342,6 +382,15 @@ struct bt_l2cap_chan_ops { * @param chan The channel receiving data. * @param buf Buffer containing incoming data. * + * @note This callback is mandatory, unless + * @kconfig{CONFIG_BT_L2CAP_SEG_RECV} is enabled and seg_recv is + * supplied. + * + * If the application returns @c -EINPROGRESS, the application takes + * ownership of the reference in @p buf. (I.e. This pointer value can + * simply be given to @ref bt_l2cap_chan_recv_complete without any + * calls @ref net_buf_ref or @ref net_buf_unref.) + * * @return 0 in case of success or negative value in case of error. * @return -EINPROGRESS in case where user has to confirm once the data * has been processed by calling @@ -462,6 +511,9 @@ struct bt_l2cap_server { * This callback is called whenever a new incoming connection requires * authorization. * + * @warning It is the responsibility of this callback to zero out the + * parent of the chan object. + * * @param conn The connection that is requesting authorization * @param server Pointer to the server structure this callback relates to * @param chan Pointer to received the allocated channel @@ -516,6 +568,9 @@ int bt_l2cap_br_server_register(struct bt_l2cap_server *server); * each channel connected() callback will be called. If the connection is * rejected disconnected() callback is called instead. * + * @warning It is the responsibility of the caller to zero out the + * parents of the chan objects. + * * @param conn Connection object. * @param chans Array of channel objects. * @param psm Channel PSM to connect to. @@ -539,6 +594,52 @@ int bt_l2cap_ecred_chan_connect(struct bt_conn *conn, */ int bt_l2cap_ecred_chan_reconfigure(struct bt_l2cap_chan **chans, uint16_t mtu); +/** @brief Reconfigure Enhanced Credit Based L2CAP channels + * + * Experimental API to reconfigure L2CAP ECRED channels with explicit MPS and + * MTU values. + * + * Pend a L2CAP ECRED reconfiguration for up to 5 channels. All provided + * channels must share the same @ref bt_conn. + * + * This API cannot decrease the MTU of any channel, and it cannot decrease the + * MPS of any channel when more than one channel is provided. + * + * There is no dedicated callback for this operation, but whenever a peer + * responds to a reconfiguration request, each affected channel's + * reconfigured() callback is invoked. + * + * This function may block. + * + * @warning Known issue: The implementation returns -EBUSY if there already is + * an ongoing reconfigure operation on the same connection. The caller may try + * again later. There is no event signaling when the existing operation + * finishes. + * + * @warning Known issue: The implementation returns -ENOMEM when unable to + * allocate. The caller may try again later. There is no event signaling the + * availability of buffers. + * + * @kconfig_dep{CONFIG_BT_L2CAP_RECONFIGURE_EXPLICIT} + * + * @param chans Array of channels to reconfigure. Must be non-empty and + * contain at most 5 (@ref BT_L2CAP_ECRED_CHAN_MAX_PER_REQ) + * elements. + * @param chan_count Number of channels in the array. + * @param mtu Desired MTU. Must be at least @ref BT_L2CAP_ECRED_MIN_MTU. + * @param mps Desired MPS. Must be in range @ref BT_L2CAP_ECRED_MIN_MPS + * to @ref BT_L2CAP_RX_MTU. + * + * @retval 0 Successfully pended operation. + * @retval -EINVAL Bad arguments. See above requirements. + * @retval -ENOTCONN Connection object is not in connected state. + * @retval -EBUSY Another outgoing reconfiguration is pending on the same + * connection. + * @retval -ENOMEM Host is out of buffers. + */ +int bt_l2cap_ecred_chan_reconfigure_explicit(struct bt_l2cap_chan **chans, size_t chan_count, + uint16_t mtu, uint16_t mps); + /** @brief Connect L2CAP channel * * Connect L2CAP channel by PSM, once the connection is completed channel @@ -551,6 +652,9 @@ int bt_l2cap_ecred_chan_reconfigure(struct bt_l2cap_chan **chans, uint16_t mtu); * the location (address) of bt_l2cap_chan type object which is a member * of both transport dedicated objects. * + * @warning It is the responsibility of the caller to zero out the + * parent of the chan object. + * * @param conn Connection object. * @param chan Channel object. * @param psm Channel PSM to connect to. @@ -600,6 +704,10 @@ int bt_l2cap_chan_disconnect(struct bt_l2cap_chan *chan); * on the stack's global buffer pool (sized * @kconfig{CONFIG_BT_L2CAP_TX_BUF_COUNT}). * + * @warning The buffer's user_data _will_ be overwritten by this function. Do + * not store anything in it. As soon as a call to this function has been made, + * consider ownership of user_data transferred into the stack. + * * @note Buffer ownership is transferred to the stack in case of success, in * case of an error the caller retains the ownership of the buffer. * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh.h index fc84814f..c4a211d6 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh.h @@ -13,7 +13,7 @@ #include #include -#include +#include #include #include @@ -48,6 +48,8 @@ #include #include #include +#include +#include #include #endif /* ZEPHYR_INCLUDE_BLUETOOTH_MESH_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/access.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/access.h index f1fca027..db477ee6 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/access.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/access.h @@ -187,6 +187,10 @@ struct bt_mesh_elem { #define BT_MESH_MODEL_ID_REMOTE_PROV_SRV 0x0004 /** Remote Provisioning Client */ #define BT_MESH_MODEL_ID_REMOTE_PROV_CLI 0x0005 +/** Bridge Configuration Sever */ +#define BT_MESH_MODEL_ID_BRG_CFG_SRV 0x0008 +/** Bridge Configuration Client */ +#define BT_MESH_MODEL_ID_BRG_CFG_CLI 0x0009 /** Private Beacon Server */ #define BT_MESH_MODEL_ID_PRIV_BEACON_SRV 0x000a /** Private Beacon Client */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/blob_cli.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/blob_cli.h index 9b591cfd..574ec827 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/blob_cli.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/blob_cli.h @@ -282,6 +282,10 @@ struct blob_cli_broadcast_ctx { * and broadcast_complete calls. */ bool is_inited; + /* Defines a time in ms by which the broadcast API postpones sending the message to a next + * target or completing the broadcast. + */ + uint32_t post_send_delay_ms; }; /** INTERNAL_HIDDEN @endcond */ @@ -299,7 +303,7 @@ struct bt_mesh_blob_cli { struct k_work_delayable retry; /* Represents Client Timeout timer in a timestamp. Used in Pull mode only. */ int64_t cli_timestamp; - struct k_work complete; + struct k_work_delayable complete; uint16_t pending; uint8_t retries; uint8_t sending : 1, @@ -309,6 +313,7 @@ struct bt_mesh_blob_cli { const struct bt_mesh_blob_io *io; const struct bt_mesh_blob_cli_inputs *inputs; const struct bt_mesh_blob_xfer *xfer; + uint32_t chunk_interval_ms; uint16_t block_count; uint16_t chunk_idx; uint16_t mtu_size; @@ -419,6 +424,22 @@ uint8_t bt_mesh_blob_cli_xfer_progress_active_get(struct bt_mesh_blob_cli *cli); */ bool bt_mesh_blob_cli_is_busy(struct bt_mesh_blob_cli *cli); +/** @brief Set chunk sending interval in ms + * + * This function is optional, and can be used to define how fast chunks are sent in the BLOB Client + * Model. + * Without an added delay, for example a Bluetooth Mesh DFU can cause network blockage by + * constantly sending the next chunks, especially if the chunks are sent to group addresses or + * multiple unicast addresses. + * + * @note: Big intervals may cause timeouts. Increasing the @c timeout_base accordingly can + * circumvent this. + * + * @param cli BLOB Transfer Client instance. + * @param interval_ms the delay before each chunk is sent out in ms. + */ +void bt_mesh_blob_cli_set_chunk_interval_ms(struct bt_mesh_blob_cli *cli, uint32_t interval_ms); + /** @cond INTERNAL_HIDDEN */ extern const struct bt_mesh_model_op _bt_mesh_blob_cli_op[]; extern const struct bt_mesh_model_cb _bt_mesh_blob_cli_cb; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/blob_srv.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/blob_srv.h index 92c809bd..8a0c6b67 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/blob_srv.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/blob_srv.h @@ -127,7 +127,7 @@ struct bt_mesh_blob_srv_cb { const struct bt_mesh_blob_io **io); }; -/** @brief BLOB Transfer Server instance. */ +/** @brief BLOB Transfer Server model instance. */ struct bt_mesh_blob_srv { /** Event handler callbacks. */ const struct bt_mesh_blob_srv_cb *cb; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/brg_cfg.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/brg_cfg.h new file mode 100644 index 00000000..754ecc9e --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/brg_cfg.h @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_BLUETOOTH_MESH_BRG_CFG_H__ +#define ZEPHYR_INCLUDE_BLUETOOTH_MESH_BRG_CFG_H__ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup bt_mesh_brg_cfg Bridge Configuration common header + * @ingroup bt_mesh + * @{ + */ + +/** Subnet Bridge states */ +enum bt_mesh_brg_cfg_state { + /** Subnet bridge functionality is disabled. */ + BT_MESH_BRG_CFG_DISABLED, + /** Subnet bridge state functionality is enabled. */ + BT_MESH_BRG_CFG_ENABLED, +}; + +/* Bridging from Addr1 to Addr2. */ +#define BT_MESH_BRG_CFG_DIR_ONEWAY 1 +/* Bidirectional bridging between Addr1 and Addr2. */ +#define BT_MESH_BRG_CFG_DIR_TWOWAY 2 + +/** Bridging Table state entry corresponding to a entry in the Bridging Table. */ +struct bt_mesh_brg_cfg_table_entry { + /** Allowed directions for the bridged traffic (or bridged traffic not allowed) */ + uint8_t directions; + /** NetKey Index of the first subnet */ + uint16_t net_idx1; + /** NetKey Index of the second subnet */ + uint16_t net_idx2; + /** Address of the node in the first subnet */ + uint16_t addr1; + /** Address of the node in the second subnet */ + uint16_t addr2; +}; + +/** Bridging Table Status response */ +struct bt_mesh_brg_cfg_table_status { + /** Status Code of the requesting message */ + uint8_t status; + /** Requested Bridging Table entry */ + struct bt_mesh_brg_cfg_table_entry entry; +}; + +/** Used to filter set of pairs of NetKey Indexes from the Bridging Table */ +struct bt_mesh_brg_cfg_filter_netkey { + uint16_t filter: 2, /* Filter applied to the set of pairs of NetKey Indexes */ + prohibited: 2, /* Prohibited */ + net_idx: 12; /* NetKey Index used for filtering or ignored */ +}; + +/** Bridged Subnets List response */ +struct bt_mesh_brg_cfg_subnets_list { + /** Filter applied NetKey Indexes, and NetKey Index used for filtering. */ + struct bt_mesh_brg_cfg_filter_netkey net_idx_filter; + /** Start offset in units of bridges */ + uint8_t start_idx; + /** Pointer to allocated buffer for storing filtered of NetKey Indexes */ + struct net_buf_simple *list; +}; + +/** Bridging Table List response */ +struct bt_mesh_brg_cfg_table_list { + /** Status Code of the requesting message */ + uint8_t status; + /** NetKey Index of the first subnet */ + uint16_t net_idx1; + /** NetKey Index of the second subnet */ + uint16_t net_idx2; + /** Start offset in units of bridging table state entries */ + uint16_t start_idx; + /** Pointer to allocated buffer for storing list of bridged addresses and directions */ + struct net_buf_simple *list; +}; + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_BLUETOOTH_MESH_BRG_CFG_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/brg_cfg_cli.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/brg_cfg_cli.h new file mode 100644 index 00000000..37666ac6 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/brg_cfg_cli.h @@ -0,0 +1,319 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_BLUETOOTH_MESH_BRG_CFG_CLI_H__ +#define ZEPHYR_INCLUDE_BLUETOOTH_MESH_BRG_CFG_CLI_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup bt_mesh_brg_cfg_cli Bridge Configuration Client Model + * @ingroup bt_mesh + * @{ + * @brief API for the Bluetooth Mesh Bridge Configuration Client model + */ + +struct bt_mesh_brg_cfg_cli; + +/** + * @brief Bridge Configuration Client model Composition Data entry. + * + * @param _cli Pointer to a @ref bt_mesh_brg_cfg_cli instance. + */ +#define BT_MESH_MODEL_BRG_CFG_CLI(_cli) \ + BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_BRG_CFG_CLI, _bt_mesh_brg_cfg_cli_op, NULL, _cli, \ + &_bt_mesh_brg_cfg_cli_cb) + +/** Mesh Bridge Configuration Client Status messages callback */ +struct bt_mesh_brg_cfg_cli_cb { + /** @brief Optional callback for Subnet Bridge Status message. + * + * Handles received Subnet Bridge Status messages from a Bridge + * Configuration Server. + + * @param cli Bridge Configuration Client context. + * @param addr Address of the sender. + * @param status Status received from the server. + */ + void (*bridge_status)(struct bt_mesh_brg_cfg_cli *cli, uint16_t addr, + enum bt_mesh_brg_cfg_state status); + + /** @brief Optional callback for Bridging Table Size Status message. + * + * Handles received Bridging Table Size Status messages from a Bridge + * Configuration Server. + * + * @param cli Bridge Configuration Client context. + * @param addr Address of the sender. + * @param size Size received from the server. + */ + void (*table_size_status)(struct bt_mesh_brg_cfg_cli *cli, uint16_t addr, uint16_t size); + + /** @brief Optional callback for Bridging Table Status message. + * + * Handles received Bridging Table status messages from a Bridge + * Configuration Server. + * + * @param cli Bridge Configuration Client context. + * @param addr Address of the sender. + * @param rsp Response received from the Bridging Configuration Server. + */ + void (*table_status)(struct bt_mesh_brg_cfg_cli *cli, uint16_t addr, + struct bt_mesh_brg_cfg_table_status *rsp); + + /** @brief Optional callback for Bridged Subnets List message. + * + * Handles received Bridged Subnets List messages from a Bridge + * Configuration Server. + * + * @param cli Bridge Configuration Client context. + * @param addr Address of the sender. + * @param rsp Response received from the Bridging Configuration Server. + */ + void (*subnets_list)(struct bt_mesh_brg_cfg_cli *cli, uint16_t addr, + struct bt_mesh_brg_cfg_subnets_list *rsp); + + /** @brief Optional callback for Bridging Table List message. + * + * Handles received Bridging Table List messages from a Bridge + * Configuration Server. + * + * @param cli Bridge Configuration Client context. + * @param addr Address of the sender. + * @param rsp Response received from the Bridging Configuration Server. + */ + void (*table_list)(struct bt_mesh_brg_cfg_cli *cli, uint16_t addr, + struct bt_mesh_brg_cfg_table_list *rsp); +}; + +/** Bridge Configuration Client Model Context */ +struct bt_mesh_brg_cfg_cli { + /** Bridge Configuration model entry pointer */ + const struct bt_mesh_model *model; + + /** Event handler callbacks */ + const struct bt_mesh_brg_cfg_cli_cb *cb; + + /* Internal parameters for tracking message responses. */ + struct bt_mesh_msg_ack_ctx ack_ctx; +}; + +/** @brief Sends a Subnet Bridge Get message to the given destination address + * + * This function sends a Subnet Bridge Get message to the given destination + * address to query the value of the Subnet Bridge state of a subnet. The + * Subnet Bridge state indicates whether the subnet bridged feature is enabled + * or not. The function expects a Subnet Bridge Status message as a response + * from the destination node. + * + * This method can be used asynchronously by setting @p status as NULL. This + * way the method will not wait for response and will return immediately after + * sending the command. + * + * @param net_idx Network index to encrypt the message with. + * @param addr Target node address. + * @param status Status response parameter, returns one of + * @ref BT_MESH_BRG_CFG_DISABLED or + * @ref BT_MESH_BRG_CFG_ENABLED on success. + * + * @return 0 on success, or (negative) error code on failure. + */ +int bt_mesh_brg_cfg_cli_get(uint16_t net_idx, uint16_t addr, enum bt_mesh_brg_cfg_state *status); + +/** @brief Sends a Subnet Bridge Set message to the given destination address + * with the given parameters + * + * This function sends a Subnet Bridge Set message to the given destination + * address with the given parameters to set the value of the Subnet Bridge + * state of a subnet. The Subnet Bridge state indicates whether the subnet + * bridge feature is enabled or not. The function expects a Subnet Bridge + * Status message as a response from the destination node. + * + * This method can be used asynchronously by setting @p status as NULL. This + * way the method will not wait for response and will return immediately after + * sending the command. + * + * @param net_idx Network index to encrypt the message with. + * @param addr Target node address. + * @param val Value to set the Subnet Bridge state to. Must be one of + * @ref BT_MESH_BRG_CFG_DISABLED or + * @ref BT_MESH_BRG_CFG_ENABLED. + * @param status Status response parameter, returns one of + * @ref BT_MESH_BRG_CFG_DISABLED or + * @ref BT_MESH_BRG_CFG_ENABLED on success. + * + * @return 0 on success, or (negative) error code on failure. + */ +int bt_mesh_brg_cfg_cli_set(uint16_t net_idx, uint16_t addr, enum bt_mesh_brg_cfg_state val, + enum bt_mesh_brg_cfg_state *status); + +/** @brief Sends a Bridging Table Size Get message to the given destination + * address with the given parameters + * + * This function sends a Bridging Table Size Get message to the given + * destination address with the given parameters to get the size of the Bridging + * Table of the node. The Bridging Table size indicates the maximum number of + * entries that can be stored in the Bridging Table. The function expects a + * Bridging Table Size Status message as a response from the destination node. + * + * This method can be used asynchronously by setting @p size as NULL. This way + * the method will not wait for response and will return immediately after + * sending the command. + * + * @param net_idx Network index to encrypt the message with. + * @param addr Target node address. + * @param size Bridging Table size response parameter. + * + * @return 0 on success, or (negative) error code on failure. + */ +int bt_mesh_brg_cfg_cli_table_size_get(uint16_t net_idx, uint16_t addr, uint16_t *size); + +/** @brief Sends a Bridging Table Add message to the given destination address + * with the given parameters + * + * This function sends a Bridging Table Add message to the given destination + * address with the given parameters to add an entry to the Bridging Table. The + * Bridging Table contains the net keys and addresses that are authorized to be + * bridged by the node. The function expects a Bridging Table Status message as + * a response from the destination node. + * + * This method can be used asynchronously by setting @p rsp as NULL. This way + * the method will not wait for response and will return immediately after + * sending the command. + * + * @param net_idx Network index to encrypt the message with. + * @param addr Target node address. + * @param entry Pointer to bridging Table entry to add. + * @param rsp Status response parameter + * + * @return 0 on success, or (negative) error code on failure. + */ +int bt_mesh_brg_cfg_cli_table_add(uint16_t net_idx, uint16_t addr, + struct bt_mesh_brg_cfg_table_entry *entry, + struct bt_mesh_brg_cfg_table_status *rsp); + +/** @brief Sends a Bridging Table Remove message to the given destination + * address with the given parameters + * + * This function sends a Bridging Table Remove message to the given destination + * address with the given parameters to remove an entry from the Bridging + * Table. The Bridging Table contains the net keys and addresses that are + * authorized to be bridged by the node. The function expects a Bridging Table + * Status message as a response from the destination node. + * + * This method can be used asynchronously by setting @p rsp as NULL. This way + * the method will not wait for response and will return immediately after + * sending the command. + * + * @param net_idx Network index to encrypt the message with. + * @param addr Target node address. + * @param net_idx1 NetKey Index of the first subnet + * @param net_idx2 NetKey Index of the second subnet + * @param addr1 Address of the node in the first subnet + * @param addr2 Address of the node in the second subnet + * @param rsp Pointer to a struct storing the received response from the + * server, or NULL to not wait for a response. + * + * @return 0 on success, or (negative) error code on failure. + */ +int bt_mesh_brg_cfg_cli_table_remove(uint16_t net_idx, uint16_t addr, uint16_t net_idx1, + uint16_t net_idx2, uint16_t addr1, uint16_t addr2, + struct bt_mesh_brg_cfg_table_status *rsp); + +/** @brief Sends a Bridged Subnets Get message to the given destination address + * with the given parameters + * + * This function sends a Bridged Subnets Get message to the given destination + * address with the given parameters to get the list of subnets that are + * bridged by the node. The function expects a Bridged Subnets List message as + * a response from the destination node. + * + * This method can be used asynchronously by setting @p rsp as NULL. This way + * the method will not wait for response and will return immediately after + * sending the command. + * + * When @c rsp is set, the user is responsible for providing a buffer for the + * filtered set of N pairs of NetKey Indexes in + * @ref bt_mesh_brg_cfg_subnets_list::list. If a buffer is not provided, the + * bridged subnets won't be copied. + + * @param net_idx Network index to encrypt the message with. + * @param addr Target node address. + * @param filter_net_idx Filter and NetKey Index used for filtering + * @param start_idx Start offset to read in units of Bridging Table state entries + * @param rsp Pointer to a struct storing the received response + * from the server, or NULL to not wait for a response. + * + * @return 0 on success, or (negative) error code on failure. + */ +int bt_mesh_brg_cfg_cli_subnets_get(uint16_t net_idx, uint16_t addr, + struct bt_mesh_brg_cfg_filter_netkey filter_net_idx, + uint8_t start_idx, struct bt_mesh_brg_cfg_subnets_list *rsp); + +/** @brief Sends a Bridging Table Get message to the given destination address + * with the given parameters + * + * This function sends a Bridging Table Get message to the given destination + * address with the given parameters to get the contents of the Bridging Table. + * The Bridging Table contains the addresses that are authorized to be bridged + * by the node. The function expects a Bridging Table List message as a + * response from the destination node. + * + * This method can be used asynchronously by setting @p rsp as NULL. This way + * the method will not wait for response and will return immediately after + * sending the command. + * + * When @c rsp is set, the user is responsible for providing a buffer for the + * filtered set of N pairs of NetKey Indexes in + * @ref bt_mesh_brg_cfg_table_list::list. If a buffer is not provided, + * the bridged addresses won't be copied. If a buffer size is shorter than + * received list, only those many entries that fit in the buffer will be copied + * from the list, and rest will be discarded. + * + * @param net_idx Network index to encrypt the message with. + * @param addr Target node address. + * @param net_idx1 NetKey Index of the first subnet. + * @param net_idx2 NetKey Index of the second subnet. + * @param start_idx Start offset to read in units of Bridging Table state entries. + * @param rsp Pointer to a struct storing the received response from the + * server, or NULL to not wait for a response. + * + * @return 0 on success, or (negative) error code on failure. + */ +int bt_mesh_brg_cfg_cli_table_get(uint16_t net_idx, uint16_t addr, uint16_t net_idx1, + uint16_t net_idx2, uint16_t start_idx, + struct bt_mesh_brg_cfg_table_list *rsp); + +/** @brief Get the current transmission timeout value. + * + * @return The configured transmission timeout in milliseconds. + */ +int32_t bt_mesh_brg_cfg_cli_timeout_get(void); + +/** @brief Set the transmission timeout value. + * + * @param timeout The new transmission timeout. + */ +void bt_mesh_brg_cfg_cli_timeout_set(int32_t timeout); + +/** @cond INTERNAL_HIDDEN */ +extern const struct bt_mesh_model_op _bt_mesh_brg_cfg_cli_op[]; +extern const struct bt_mesh_model_cb _bt_mesh_brg_cfg_cli_cb; +/** @endcond */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_BLUETOOTH_MESH_BRG_CFG_CLI_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/brg_cfg_srv.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/brg_cfg_srv.h new file mode 100644 index 00000000..0440be6f --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/brg_cfg_srv.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** @file + * @brief Bluetooth Mesh Bridge Configuration Server Model APIs. + */ +#ifndef ZEPHYR_INCLUDE_BLUETOOTH_MESH_BRG_CFG_SRV_H__ +#define ZEPHYR_INCLUDE_BLUETOOTH_MESH_BRG_CFG_SRV_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup bt_mesh_brg_cfg_srv Bridge Configuration Server Model + * @ingroup bt_mesh + * @{ + * @brief API for the Bluetooth Mesh Bridge Configuration Server model + */ + +/** + * + * @brief Bridge Configuration Server model Composition Data entry. + */ +#define BT_MESH_MODEL_BRG_CFG_SRV \ + BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_BRG_CFG_SRV, _bt_mesh_brg_cfg_srv_op, NULL, NULL, \ + &_bt_mesh_brg_cfg_srv_cb) + +/** @cond INTERNAL_HIDDEN */ +extern const struct bt_mesh_model_op _bt_mesh_brg_cfg_srv_op[]; +extern const struct bt_mesh_model_cb _bt_mesh_brg_cfg_srv_cb; +/** @endcond */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_BLUETOOTH_MESH_BRG_CFG_SRV_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/msg.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/msg.h index 8a7ce1a7..d5d93111 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/msg.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/mesh/msg.h @@ -18,7 +18,7 @@ */ #include -#include +#include #ifdef __cplusplus extern "C" { diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/services/bas.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/services/bas.h index 59413346..c6215901 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/services/bas.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/services/bas.h @@ -1,4 +1,5 @@ /* + * Copyright (c) 2024 Demant A/S * Copyright (c) 2018 Nordic Semiconductor ASA * Copyright (c) 2016 Intel Corporation * @@ -19,11 +20,187 @@ */ #include +#include #ifdef __cplusplus extern "C" { #endif +/** + * @brief Battery Critical Status Characteristic flags. + * + * Enumeration for the flags indicating the presence + * of various fields in the Battery Critical Status characteristic. + */ +enum bt_bas_bcs_flags { + /** Battery Critical Status Bit 0: Critical Power State */ + BT_BAS_BCS_BATTERY_CRITICAL_STATE = BIT(0), + + /** Battery Critical Status Bit 1: Immediate Service Required */ + BT_BAS_BCS_IMMEDIATE_SERVICE_REQUIRED = BIT(1), +}; + +/** + * @brief Battery Level Status Characteristic flags. + * + * Enumeration for the flags indicating the presence + * of various fields in the Battery Level Status characteristic. + */ +enum bt_bas_bls_flags { + /** Bit indicating that the Battery Level Status identifier is present. */ + BT_BAS_BLS_FLAG_IDENTIFIER_PRESENT = BIT(0), + + /** Bit indicating that the Battery Level is present. */ + BT_BAS_BLS_FLAG_BATTERY_LEVEL_PRESENT = BIT(1), + + /** Bit indicating that additional status information is present. */ + BT_BAS_BLS_FLAG_ADDITIONAL_STATUS_PRESENT = BIT(2), +}; + +/** @brief Battery Present Status + * + * Enumeration for the presence of the battery. + */ +enum bt_bas_bls_battery_present { + /** Battery is not present. */ + BT_BAS_BLS_BATTERY_NOT_PRESENT = 0, + + /** Battery is present. */ + BT_BAS_BLS_BATTERY_PRESENT = 1 +}; + +/** @brief Wired External Power Source Status + * + * Enumeration for the status of the wired external power source. + */ +enum bt_bas_bls_wired_power_source { + /** Wired external power source is not connected. */ + BT_BAS_BLS_WIRED_POWER_NOT_CONNECTED = 0, + + /** Wired external power source is connected. */ + BT_BAS_BLS_WIRED_POWER_CONNECTED = 1, + + /** Wired external power source status is unknown. */ + BT_BAS_BLS_WIRED_POWER_UNKNOWN = 2 +}; + +/** @brief Wireless External Power Source Status + * + * Enumeration for the status of the wireless external power source. + */ +enum bt_bas_bls_wireless_power_source { + /** Wireless external power source is not connected. */ + BT_BAS_BLS_WIRELESS_POWER_NOT_CONNECTED = 0, + + /** Wireless external power source is connected. */ + BT_BAS_BLS_WIRELESS_POWER_CONNECTED = 1, + + /** Wireless external power source status is unknown. */ + BT_BAS_BLS_WIRELESS_POWER_UNKNOWN = 2 +}; + +/** @brief Battery Charge State + * + * Enumeration for the charge state of the battery. + */ +enum bt_bas_bls_battery_charge_state { + /** Battery charge state is unknown. */ + BT_BAS_BLS_CHARGE_STATE_UNKNOWN = 0, + + /** Battery is currently charging. */ + BT_BAS_BLS_CHARGE_STATE_CHARGING = 1, + + /** Battery is discharging actively. */ + BT_BAS_BLS_CHARGE_STATE_DISCHARGING_ACTIVE = 2, + + /** Battery is discharging but inactive. */ + BT_BAS_BLS_CHARGE_STATE_DISCHARGING_INACTIVE = 3 +}; + +/** @brief Battery Charge Level + * + * Enumeration for the level of charge in the battery. + */ +enum bt_bas_bls_battery_charge_level { + /** Battery charge level is unknown. */ + BT_BAS_BLS_CHARGE_LEVEL_UNKNOWN = 0, + + /** Battery charge level is good. */ + BT_BAS_BLS_CHARGE_LEVEL_GOOD = 1, + + /** Battery charge level is low. */ + BT_BAS_BLS_CHARGE_LEVEL_LOW = 2, + + /** Battery charge level is critical. */ + BT_BAS_BLS_CHARGE_LEVEL_CRITICAL = 3 +}; + +/** @brief Battery Charge Type + * + * Enumeration for the type of charging applied to the battery. + */ +enum bt_bas_bls_battery_charge_type { + /** Battery charge type is unknown or not charging. */ + BT_BAS_BLS_CHARGE_TYPE_UNKNOWN = 0, + + /** Battery is charged using constant current. */ + BT_BAS_BLS_CHARGE_TYPE_CONSTANT_CURRENT = 1, + + /** Battery is charged using constant voltage. */ + BT_BAS_BLS_CHARGE_TYPE_CONSTANT_VOLTAGE = 2, + + /** Battery is charged using trickle charge. */ + BT_BAS_BLS_CHARGE_TYPE_TRICKLE = 3, + + /** Battery is charged using float charge. */ + BT_BAS_BLS_CHARGE_TYPE_FLOAT = 4 +}; + +/** @brief Charging Fault Reason + * + * Enumeration for the reasons of charging faults. + */ +enum bt_bas_bls_charging_fault_reason { + /** No charging fault. */ + BT_BAS_BLS_FAULT_REASON_NONE = 0, + + /** Charging fault due to battery issue. */ + BT_BAS_BLS_FAULT_REASON_BATTERY = BIT(0), + + /** Charging fault due to external power source issue. */ + BT_BAS_BLS_FAULT_REASON_EXTERNAL_POWER = BIT(1), + + /** Charging fault for other reasons. */ + BT_BAS_BLS_FAULT_REASON_OTHER = BIT(2) +}; + +/** @brief Service Required Status + * + * Enumeration for whether the service is required. + */ +enum bt_bas_bls_service_required { + /** Service is not required. */ + BT_BAS_BLS_SERVICE_REQUIRED_FALSE = 0, + + /** Service is required. */ + BT_BAS_BLS_SERVICE_REQUIRED_TRUE = 1, + + /** Service requirement is unknown. */ + BT_BAS_BLS_SERVICE_REQUIRED_UNKNOWN = 2 +}; + +/** @brief Battery Fault Status + * + * Enumeration for the fault status of the battery. + */ +enum bt_bas_bls_battery_fault { + /** No battery fault. */ + BT_BAS_BLS_BATTERY_FAULT_NO = 0, + + /** Battery fault present. */ + BT_BAS_BLS_BATTERY_FAULT_YES = 1 +}; + /** @brief Read battery level value. * * Read the characteristic value of the battery level @@ -43,6 +220,81 @@ uint8_t bt_bas_get_battery_level(void); */ int bt_bas_set_battery_level(uint8_t level); +/** + * @brief Set the battery present status. + * + * @param present The battery present status to set. + */ +void bt_bas_bls_set_battery_present(enum bt_bas_bls_battery_present present); + +/** + * @brief Set the wired external power source status. + * + * @param source The wired external power source status to set. + */ +void bt_bas_bls_set_wired_external_power_source(enum bt_bas_bls_wired_power_source source); + +/** + * @brief Set the wireless external power source status. + * + * @param source The wireless external power source status to set. + */ +void bt_bas_bls_set_wireless_external_power_source(enum bt_bas_bls_wireless_power_source source); + +/** + * @brief Set the battery charge state. + * + * @param state The battery charge state to set. + */ +void bt_bas_bls_set_battery_charge_state(enum bt_bas_bls_battery_charge_state state); + +/** + * @brief Set the battery charge level. + * + * @param level The battery charge level to set. + */ +void bt_bas_bls_set_battery_charge_level(enum bt_bas_bls_battery_charge_level level); + +/** + * @brief Set the battery charge type. + * + * @param type The battery charge type to set. + */ +void bt_bas_bls_set_battery_charge_type(enum bt_bas_bls_battery_charge_type type); + +/** + * @brief Set the charging fault reason. + * + * @param reason The charging fault reason to set. + */ +void bt_bas_bls_set_charging_fault_reason(enum bt_bas_bls_charging_fault_reason reason); + +/** + * @brief Set the identifier of the battery. + * + * @kconfig_dep{CONFIG_BT_BAS_BLS_IDENTIFIER_PRESENT} + * + * @param identifier Identifier to set. + */ +void bt_bas_bls_set_identifier(uint16_t identifier); + +/** + * @brief Set the service required status. + * + * @kconfig_dep{CONFIG_BT_BAS_BLS_ADDITIONAL_STATUS_PRESENT} + * + * @param value Service required status to set. + */ +void bt_bas_bls_set_service_required(enum bt_bas_bls_service_required value); + +/** + * @brief Set the battery fault status. + * + * @kconfig_dep{CONFIG_BT_BAS_BLS_ADDITIONAL_STATUS_PRESENT} + * + * @param value Battery fault status to set. + */ +void bt_bas_bls_set_battery_fault(enum bt_bas_bls_battery_fault value); #ifdef __cplusplus } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/services/cts.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/services/cts.h new file mode 100644 index 00000000..5b1c780f --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/services/cts.h @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2024 Croxel Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_CTS_H_ +#define ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_CTS_H_ + +/** + * @brief Current Time Service (CTS) + * @defgroup bt_cts Current Time Service (CTS) + * @ingroup bluetooth + * @{ + * + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief CTS time update reason bits as defined in the specification + */ +enum bt_cts_update_reason { + /* Unknown reason of update no bit is set */ + BT_CTS_UPDATE_REASON_UNKNOWN = 0, + /* When time is changed manually e.g. through UI */ + BT_CTS_UPDATE_REASON_MANUAL = BIT(0), + /* If time is changed through external reference */ + BT_CTS_UPDATE_REASON_EXTERNAL_REF = BIT(1), + /* time changed due to timezone adjust */ + BT_CTS_UPDATE_REASON_TIME_ZONE_CHANGE = BIT(2), + /* time changed due to dst offset change */ + BT_CTS_UPDATE_REASON_DAYLIGHT_SAVING = BIT(3), +}; + +/** + * @brief Current Time service data format, Please refer to + * specifications for more details + */ +struct bt_cts_time_format { + uint16_t year; + uint8_t mon; + uint8_t mday; + uint8_t hours; + uint8_t min; + uint8_t sec; + uint8_t wday; + uint8_t fractions256; + uint8_t reason; +} __packed; + +/** @brief Current Time Service callback structure */ +struct bt_cts_cb { + /** @brief Current Time Service notifications changed + * + * @param enabled True if notifications are enabled, false if disabled + */ + void (*notification_changed)(bool enabled); + + /** + * @brief The Current Time has been updated by a peer. + * It is the responsibility of the application to store the new time. + * + * @param cts_time [IN] updated time + * + * @return 0 application has decoded it successfully + * @return negative error codes on failure + * + */ + int (*cts_time_write)(struct bt_cts_time_format *cts_time); + + /** + * @brief When current time Read request or notification is triggered, CTS uses + * this callback to retrieve current time information from application. Application + * must implement it and provide cts formatted current time information + * + * @note this callback is mandatory + * + * @param cts_time [IN] updated time + * + * @return 0 application has encoded it successfully + * @return negative error codes on failure + */ + int (*fill_current_cts_time)(struct bt_cts_time_format *cts_time); +}; + +/** + * @brief This API should be called at application init. + * it is safe to call this API before or after bt_enable API + * + * @param cb pointer to required callback + * + * @return 0 on success + * @return negative error codes on failure + */ +int bt_cts_init(const struct bt_cts_cb *cb); + +/** + * @brief Notify all connected clients that have enabled the + * current time update notification + * + * @param reason update reason to be sent to the clients + * + * @return 0 on success + * @return negative error codes on failure + */ +int bt_cts_send_notification(enum bt_cts_update_reason reason); + +/** + * @brief Helper API to decode CTS formatted time into milliseconds since epoch + * + * @note @kconfig{CONFIG_BT_CTS_HELPER_API} needs to be enabled to use this API. + * + * @param ct_time [IN] cts time formatted time + * @param unix_ms [OUT] pointer to store parsed millisecond since epoch + * + * @return 0 on success + * @return negative error codes on failure + */ +int bt_cts_time_to_unix_ms(const struct bt_cts_time_format *ct_time, int64_t *unix_ms); + +/** + * @brief Helper API to encode milliseconds since epoch to CTS formatted time + * + * @note @kconfig{CONFIG_BT_CTS_HELPER_API} needs to be enabled to use this API. + * + * @param ct_time [OUT] Pointer to store CTS formatted time + * @param unix_ms [IN] milliseconds since epoch to be converted + * + * @return 0 on success + * @return negative error codes on failure + */ +int bt_cts_time_from_unix_ms(struct bt_cts_time_format *ct_time, int64_t unix_ms); + +#ifdef __cplusplus +} +#endif + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_CTS_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/services/hrs.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/services/hrs.h index f19b2924..52897037 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/services/hrs.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/services/hrs.h @@ -25,6 +25,11 @@ extern "C" { #endif +/** + * @brief Server shall restart the accumulation of energy expended from zero + */ +#define BT_HRS_CONTROL_POINT_RESET_ENERGY_EXPANDED_REQ 0x01 + /** @brief Heart rate service callback structure */ struct bt_hrs_cb { /** @brief Heart rate notifications changed @@ -34,6 +39,22 @@ struct bt_hrs_cb { */ void (*ntf_changed)(bool enabled); + /** + * @brief Heart rate control point write callback + * + * @note if Server supports the Energy Expended feature then application + * shall implement and support @ref BT_HRS_CONTROL_POINT_RESET_ENERGY_EXPANDED_REQ + * request code + * + * @param request control point request code + * + * @return 0 on successful handling of control point request + * @return -ENOTSUP if not supported. It can be used to pass handling to other + * listeners in case of multiple listeners + * @return other negative error codes will result in immediate error response + */ + int (*ctrl_point_write)(uint8_t request); + /** Internal member to form a list of callbacks */ sys_snode_t _node; }; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/testing.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/testing.h index 74806a53..3ac48c7b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/testing.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/testing.h @@ -1,106 +1,27 @@ -/** - * @file testing.h - * @brief Internal API for Bluetooth testing. - */ - -/* - * Copyright (c) 2017 Intel Corporation - * +/* Copyright (c) 2024 Nordic Semiconductor ASA * SPDX-License-Identifier: Apache-2.0 */ -#ifndef ZEPHYR_INCLUDE_BLUETOOTH_TESTING_H_ -#define ZEPHYR_INCLUDE_BLUETOOTH_TESTING_H_ - -#include -#if defined(CONFIG_BT_MESH) -#include -#endif /* CONFIG_BT_MESH */ - -/** - * @brief Bluetooth testing - * @defgroup bt_test_cb Bluetooth testing callbacks - * @ingroup bluetooth - * @{ - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/** @brief Bluetooth Testing callbacks structure. - * - * Callback structure to be used for Bluetooth testing purposes. - * Allows access to Bluetooth stack internals, not exposed by public API. - */ -struct bt_test_cb { -#if defined(CONFIG_BT_MESH) - void (*mesh_net_recv)(uint8_t ttl, uint8_t ctl, uint16_t src, uint16_t dst, - const void *payload, size_t payload_len); - void (*mesh_model_recv)(uint16_t src, uint16_t dst, const void *payload, - size_t payload_len); - void (*mesh_model_bound)(uint16_t addr, const struct bt_mesh_model *model, - uint16_t key_idx); - void (*mesh_model_unbound)(uint16_t addr, const struct bt_mesh_model *model, - uint16_t key_idx); - void (*mesh_prov_invalid_bearer)(uint8_t opcode); - void (*mesh_trans_incomp_timer_exp)(void); -#endif /* CONFIG_BT_MESH */ - - sys_snode_t node; -}; - -/** Register callbacks for Bluetooth testing purposes - * - * @param cb bt_test_cb callback structure +/** @brief Internal testing interfaces for Bluetooth + * @file + * @internal * - * @retval 0 Success. - * @retval -EEXIST if @p cb was already registered. + * The interfaces in this file are internal and not stable. */ -int bt_test_cb_register(struct bt_test_cb *cb); -/** Unregister callbacks for Bluetooth testing purposes - * - * @param cb bt_test_cb callback structure - */ -void bt_test_cb_unregister(struct bt_test_cb *cb); +#ifndef ZEPHYR_INCLUDE_BLUETOOTH_TESTING_H_ +#define ZEPHYR_INCLUDE_BLUETOOTH_TESTING_H_ -/** Send Friend Subscription List Add message. - * - * Used by Low Power node to send the group address for which messages are to - * be stored by Friend node. - * - * @param group Group address - * - * @return Zero on success or (negative) error code otherwise. - */ -int bt_test_mesh_lpn_group_add(uint16_t group); +#include -/** Send Friend Subscription List Remove message. +/** @brief Hook for `acl_in_pool.destroy` * - * Used by Low Power node to remove the group addresses from Friend node - * subscription list. Messages sent to those addresses will not be stored - * by Friend node. + * Weak-function interface. The user can simply define this + * function, and it will automatically become the event + * listener. * - * @param groups Group addresses - * @param groups_count Group addresses count - * - * @return Zero on success or (negative) error code otherwise. - */ -int bt_test_mesh_lpn_group_remove(uint16_t *groups, size_t groups_count); - -/** Clear replay protection list cache. - * - * @return Zero on success or (negative) error code otherwise. + * @kconfig_dep{CONFIG_BT_TESTING} */ -int bt_test_mesh_rpl_clear(void); - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif +void bt_testing_trace_event_acl_pool_destroy(struct net_buf *buf); #endif /* ZEPHYR_INCLUDE_BLUETOOTH_TESTING_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/uuid.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/uuid.h index 24232f04..aa0413dc 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/uuid.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/bluetooth/uuid.h @@ -5090,6 +5090,16 @@ struct bt_uuid_128 { #define BT_UUID_GATT_SL \ BT_UUID_DECLARE_16(BT_UUID_GATT_SL_VAL) +/** + * @brief GATT Characteristic UDI for Medical Devices UUID Value + */ +#define BT_UUID_UDI_FOR_MEDICAL_DEVICES_VAL 0x2bff +/** + * @brief GATT Characteristic UDI for Medical Devices + */ +#define BT_UUID_UDI_FOR_MEDICAL_DEVICES \ + BT_UUID_DECLARE_16(BT_UUID_UDI_FOR_MEDICAL_DEVICES_VAL) + /** * @brief Gaming Service UUID value */ @@ -5185,6 +5195,8 @@ struct bt_uuid_128 { #define BT_UUID_HCRP_NOTE BT_UUID_DECLARE_16(BT_UUID_HCRP_NOTE_VAL) #define BT_UUID_AVCTP_VAL 0x0017 #define BT_UUID_AVCTP BT_UUID_DECLARE_16(BT_UUID_AVCTP_VAL) +#define BT_UUID_AVCTP_BROWSING_VAL 0x0018 +#define BT_UUID_AVCTP_BROWSING BT_UUID_DECLARE_16(BT_UUID_AVCTP_BROWSING_VAL) #define BT_UUID_AVDTP_VAL 0x0019 #define BT_UUID_AVDTP BT_UUID_DECLARE_16(BT_UUID_AVDTP_VAL) #define BT_UUID_CMTP_VAL 0x001b diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/canbus/isotp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/canbus/isotp.h index 222cef70..d2fc8591 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/canbus/isotp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/canbus/isotp.h @@ -23,7 +23,7 @@ #include #include -#include +#include /* * Abbreviations diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/data/json.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/data/json.h index f140a8b4..2e8182fd 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/data/json.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/data/json.h @@ -42,6 +42,8 @@ enum json_tokens { JSON_TOK_OPAQUE = '2', JSON_TOK_OBJ_ARRAY = '3', JSON_TOK_ENCODED_OBJ = '4', + JSON_TOK_INT64 = '5', + JSON_TOK_UINT64 = '6', JSON_TOK_TRUE = 't', JSON_TOK_FALSE = 'f', JSON_TOK_NULL = 'n', diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/data/jwt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/data/jwt.h index 42dc26ae..d198251f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/data/jwt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/data/jwt.h @@ -15,7 +15,7 @@ extern "C" { #endif /** - * @brief JSON Web Token (JWT) + * @brief JSON Web Token (JWT) - RFC 7519 * @defgroup jwt JSON Web Token (JWT) * @ingroup json * @{ @@ -24,10 +24,10 @@ extern "C" { /** * @brief JWT data tracking. * - * JSON Web Tokens contain several sections, each encoded in base-64. + * JSON Web Tokens contain several sections, each encoded in Base64URL. * This structure tracks the token as it is being built, including * limits on the amount of available space. It should be initialized - * with jwt_init(). + * with jwt_init_builder(). */ struct jwt_builder { /** The base of the buffer we are writing to. */ @@ -37,7 +37,7 @@ struct jwt_builder { */ char *buf; - /** The length remaining to write. */ + /** The remaining free space in @p buf. */ size_t len; /** @@ -57,23 +57,37 @@ struct jwt_builder { * @brief Initialize the JWT builder. * * Initialize the given JWT builder for the creation of a fresh token. - * The buffer size should at least be as long as JWT_BUILDER_MAX_SIZE - * returns. + * The buffer size should be long enough to store the entire token. * * @param builder The builder to initialize. * @param buffer The buffer to write the token to. * @param buffer_size The size of this buffer. The token will be NULL * terminated, which needs to be allowed for in this size. * - * @retval 0 Success - * @retval -ENOSPC Buffer is insufficient to initialize + * @retval 0 Success. + * @retval -ENOSPC Buffer is insufficient to initialize. */ int jwt_init_builder(struct jwt_builder *builder, char *buffer, size_t buffer_size); /** - * @brief add JWT primary payload. + * @brief Add JWT payload. + * + * Add JWT payload to a previously initialized builder with the following fields: + * - Expiration Time + * - Issued At + * - Audience + * + * See RFC 7519 section 4.1 to get more information about these fields. + * + * @param builder A previously initialized builder. + * @param exp Expiration Time (epoch format). + * @param iat Issued At (epoch format). + * @param aud Audience. + * + * @retval 0 Success. + * @retval <0 Failure. */ int jwt_add_payload(struct jwt_builder *builder, int32_t exp, @@ -81,18 +95,21 @@ int jwt_add_payload(struct jwt_builder *builder, const char *aud); /** - * @brief Sign the JWT token. + * @brief Sign the JWT. + * + * Sign a previously initialized with payload JWT. + * + * @param builder A previously initialized builder with payload. + * @param der_key Private key to use in DER format. + * @param der_key_len Size of the private key in bytes. + * + * @retval 0 Success. + * @retval <0 Failure. */ int jwt_sign(struct jwt_builder *builder, const char *der_key, size_t der_key_len); - -static inline size_t jwt_payload_len(struct jwt_builder *builder) -{ - return (builder->buf - builder->base); -} - #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/coredump.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/coredump.h index f61f4e94..5ebdca5f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/coredump.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/coredump.h @@ -142,10 +142,13 @@ struct coredump_cmd_copy_arg { #include #include -#define COREDUMP_HDR_VER 1 +#define COREDUMP_HDR_VER 2 #define COREDUMP_ARCH_HDR_ID 'A' +#define THREADS_META_HDR_ID 'T' +#define THREADS_META_HDR_VER 1 + #define COREDUMP_MEM_HDR_ID 'M' #define COREDUMP_MEM_HDR_VER 1 @@ -192,6 +195,18 @@ struct coredump_arch_hdr_t { uint16_t num_bytes; } __packed; +/* Threads metadata header */ +struct coredump_threads_meta_hdr_t { + /* THREADS_META_HDR_ID */ + char id; + + /* Header version */ + uint16_t hdr_version; + + /* Number of bytes in this block (excluding header) */ + uint16_t num_bytes; +} __packed; + /* Memory block header */ struct coredump_mem_hdr_t { /* COREDUMP_MEM_HDR_ID */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/coresight/cs_trace_defmt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/coresight/cs_trace_defmt.h new file mode 100644 index 00000000..b9920672 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/coresight/cs_trace_defmt.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DEBUG_CORESIGHT_CS_TRACE_DEFMT_H__ +#define ZEPHYR_INCLUDE_DEBUG_CORESIGHT_CS_TRACE_DEFMT_H__ + +#include +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup coresight_apis Coresight APIs + * @{ + * @} + * @defgroup cs_trace_defmt Coresight Trace Deformatter + * @ingroup coresight_apis + * @{ + */ + +/** @brief Callback signature. + * + * @param id Stream ID. + * @param data Data. + * @param len Data length. + */ +typedef void (*cs_trace_defmt_cb)(uint32_t id, const uint8_t *data, size_t len); + +/** @brief Size of trace deformatter frame size in 32 bit words. */ +#define CORESIGHT_TRACE_FRAME_SIZE32 4 + +/** @brief Size of trace deformatter frame size in bytes. */ +#define CORESIGHT_TRACE_FRAME_SIZE (CORESIGHT_TRACE_FRAME_SIZE32 * sizeof(uint32_t)) + +/** @brief Initialize Coresight Trace Deformatter. + * + * @param cb Callback. + */ +int cs_trace_defmt_init(cs_trace_defmt_cb cb); + +/** @brief Decode data from the stream. + * + * Trace formatter puts data in the 16 byte long blocks. + * + * Callback is called with decoded data. + * + * @param data Data. + * @param len Data length. Must equal 16. + * + * @retval 0 On successful deformatting. + * @retval -EINVAL If wrong length is provided. + */ +int cs_trace_defmt_process(const uint8_t *data, size_t len); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DEBUG_CORESIGHT_CS_TRACE_DEFMT_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/mipi_stp_decoder.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/mipi_stp_decoder.h index 31ffb982..c3a87e7a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/mipi_stp_decoder.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/mipi_stp_decoder.h @@ -27,7 +27,7 @@ enum mipi_stp_decoder_ctrl_type { STP_DATA32 = 8, STP_DATA64 = 16, STP_DECODER_NULL = 128, - STP_DECODER_MASTER, + STP_DECODER_MAJOR, STP_DECODER_MERROR, STP_DECODER_CHANNEL, STP_DECODER_VERSION, @@ -50,7 +50,7 @@ enum mipi_stp_decoder_ctrl_type { _type == STP_DATA32 ? "DATA32" : (\ _type == STP_DATA64 ? "DATA64" : (\ _type == STP_DECODER_NULL ? "NULL" : (\ - _type == STP_DECODER_MASTER ? "MASTER" : (\ + _type == STP_DECODER_MAJOR ? "MAJOR" : (\ _type == STP_DECODER_MERROR ? "MERROR" : (\ _type == STP_DECODER_CHANNEL ? "CHANNEL" : (\ _type == STP_DECODER_VERSION ? "VERSION" : (\ @@ -62,7 +62,7 @@ enum mipi_stp_decoder_ctrl_type { /** @brief Union with data associated with a given STP opcode. */ union mipi_stp_decoder_data { - /** ID - used for master and channel. */ + /** ID - used for major and channel. */ uint16_t id; /** Frequency. */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/symtab.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/symtab.h index ba4e8c57..19afb594 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/symtab.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/symtab.h @@ -46,7 +46,7 @@ struct symtab_info { * * @return Pointer to the symbol table. */ -const struct symtab_info *const symtab_get(void); +const struct symtab_info *symtab_get(void); /** * @brief Find the symbol name with a binary search @@ -57,7 +57,7 @@ const struct symtab_info *const symtab_get(void); * * @return Name of the nearest symbol if found, otherwise "?" is returned. */ -const char *const symtab_find_symbol_name(uintptr_t addr, uint32_t *offset); +const char *symtab_find_symbol_name(uintptr_t addr, uint32_t *offset); /** * @} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/thread_analyzer.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/thread_analyzer.h index d9c0f855..d3d419bd 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/thread_analyzer.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/debug/thread_analyzer.h @@ -39,6 +39,14 @@ struct thread_analyzer_info { k_thread_runtime_stats_t usage; #endif #endif + +#ifdef CONFIG_THREAD_ANALYZER_PRIV_STACK_USAGE + /** Total size of privileged stack */ + size_t priv_stack_size; + + /** Privileged stack size in used */ + size_t priv_stack_used; +#endif }; /** @brief Thread analyzer stack size callback function @@ -52,18 +60,25 @@ typedef void (*thread_analyzer_cb)(struct thread_analyzer_info *info); /** @brief Run the thread analyzer and provide information to the callback * * This function analyzes the current state for all threads and calls - * a given callback on every thread found. + * a given callback on every thread found. In the special case when Kconfig + * option THREAD_ANALYZER_AUTO_SEPARATE_CORES is set, the function analyzes + * only the threads running on the specified cpu. * * @param cb The callback function handler + * @param cpu cpu to analyze, ignored if THREAD_ANALYZER_AUTO_SEPARATE_CORES=n */ -void thread_analyzer_run(thread_analyzer_cb cb); +void thread_analyzer_run(thread_analyzer_cb cb, unsigned int cpu); /** @brief Run the thread analyzer and print stack size statistics. * - * This function runs the thread analyzer and prints the output in standard - * form. + * This function runs the thread analyzer and prints the output in + * standard form. In the special case when Kconfig option + * THREAD_ANALYZER_AUTO_SEPARATE_CORES is set, the function analyzes + * only the threads running on the specified cpu. + * + * @param cpu cpu to analyze, ignored if THREAD_ANALYZER_AUTO_SEPARATE_CORES=n */ -void thread_analyzer_print(void); +void thread_analyzer_print(unsigned int cpu); /** @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/device.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/device.h index 7d783397..2362f1a5 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/device.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/device.h @@ -207,8 +207,7 @@ typedef int16_t device_handle_t; DEVICE_DT_NAME(node_id), init_fn, pm, data, config, \ level, prio, api, \ &Z_DEVICE_STATE_NAME(Z_DEVICE_DT_DEV_ID(node_id)), \ - __VA_ARGS__) \ - IF_ENABLED(CONFIG_LLEXT_EXPORT_DEVICES, (; Z_DEVICE_EXPORT(node_id))) \ + __VA_ARGS__) /** * @brief Like DEVICE_DT_DEFINE(), but uses an instance of a `DT_DRV_COMPAT` @@ -318,7 +317,7 @@ typedef int16_t device_handle_t; * @return a @ref device reference for the node identifier, which may be `NULL`. */ #define DEVICE_DT_GET_OR_NULL(node_id) \ - COND_CODE_1(DT_NODE_HAS_STATUS(node_id, okay), \ + COND_CODE_1(DT_NODE_HAS_STATUS_OKAY(node_id), \ (DEVICE_DT_GET(node_id)), (NULL)) /** @@ -932,11 +931,14 @@ __syscall const struct device *device_get_by_dt_nodelabel(const char *nodelabel) /** * @brief Get the devicetree node labels associated with a device * @param dev device whose metadata to look up - * @return information about the devicetree node labels + * @return information about the devicetree node labels or NULL if not available */ static inline const struct device_dt_nodelabels * device_get_dt_nodelabels(const struct device *dev) { + if (dev->dt_meta == NULL) { + return NULL; + } return dev->dt_meta->nl; } @@ -1081,24 +1083,16 @@ device_get_dt_nodelabels(const struct device *dev) Z_DEVICE_SECTION_NAME(level, prio), DEVICE_NAME_GET(dev_id)) = \ Z_DEVICE_INIT(name, pm, data, config, api, state, deps, node_id, dev_id) -/* deprecated device initialization levels */ -#define Z_DEVICE_LEVEL_DEPRECATED_EARLY \ - __WARN("EARLY device driver level is deprecated") -#define Z_DEVICE_LEVEL_DEPRECATED_PRE_KERNEL_1 -#define Z_DEVICE_LEVEL_DEPRECATED_PRE_KERNEL_2 -#define Z_DEVICE_LEVEL_DEPRECATED_POST_KERNEL -#define Z_DEVICE_LEVEL_DEPRECATED_APPLICATION \ - __WARN("APPLICATION device driver level is deprecated") -#define Z_DEVICE_LEVEL_DEPRECATED_SMP \ - __WARN("SMP device driver level is deprecated") - /** - * @brief Issue a warning if the given init level is deprecated. + * @brief Issue an error if the given init level is not supported. * * @param level Init level */ -#define Z_DEVICE_LEVEL_CHECK_DEPRECATED_LEVEL(level) \ - Z_DEVICE_LEVEL_DEPRECATED_##level +#define Z_DEVICE_CHECK_INIT_LEVEL(level) \ + COND_CODE_1(Z_INIT_PRE_KERNEL_1_##level, (), \ + (COND_CODE_1(Z_INIT_PRE_KERNEL_2_##level, (), \ + (COND_CODE_1(Z_INIT_POST_KERNEL_##level, (), \ + (ZERO_OR_COMPILE_ERROR(0))))))) /** * @brief Define the init entry for a device. @@ -1111,7 +1105,7 @@ device_get_dt_nodelabels(const struct device *dev) * @param prio Initialization priority. */ #define Z_DEVICE_INIT_ENTRY_DEFINE(node_id, dev_id, init_fn_, level, prio) \ - Z_DEVICE_LEVEL_CHECK_DEPRECATED_LEVEL(level) \ + Z_DEVICE_CHECK_INIT_LEVEL(level) \ \ static const Z_DECL_ALIGN(struct init_entry) __used __noasan Z_INIT_ENTRY_SECTION( \ level, prio, Z_DEVICE_INIT_SUB_PRIO(node_id)) \ @@ -1177,12 +1171,15 @@ device_get_dt_nodelabels(const struct device *dev) (Z_DEVICE_DT_METADATA_DEFINE(node_id, dev_id);))))\ \ Z_DEVICE_BASE_DEFINE(node_id, dev_id, name, pm, data, config, level, \ - prio, api, state, Z_DEVICE_DEPS_NAME(dev_id)); \ + prio, api, state, Z_DEVICE_DEPS_NAME(dev_id)); \ COND_CODE_1(DEVICE_DT_DEFER(node_id), \ (Z_DEFER_DEVICE_INIT_ENTRY_DEFINE(node_id, dev_id, \ init_fn)), \ (Z_DEVICE_INIT_ENTRY_DEFINE(node_id, dev_id, init_fn, \ - level, prio))); + level, prio))); \ + IF_ENABLED(CONFIG_LLEXT_EXPORT_DEVICES, \ + (IF_ENABLED(DT_NODE_EXISTS(node_id), \ + (Z_DEVICE_EXPORT(node_id);)))) \ /** * @brief Declare a device for each status "okay" devicetree node. @@ -1200,8 +1197,47 @@ device_get_dt_nodelabels(const struct device *dev) DT_FOREACH_STATUS_OKAY_NODE(Z_MAYBE_DEVICE_DECLARE_INTERNAL) +/** @brief Expands to the full type. */ +#define Z_DEVICE_API_TYPE(_class) _CONCAT(_class, _driver_api) + /** @endcond */ +/** + * @brief Wrapper macro for declaring device API structs inside iterable sections. + * + * @param _class The device API class. + * @param _name The API instance name. + */ +#define DEVICE_API(_class, _name) const STRUCT_SECTION_ITERABLE(Z_DEVICE_API_TYPE(_class), _name) + +/** + * @brief Expands to the pointer of a device's API for a given class. + * + * @param _class The device API class. + * @param _dev The device instance pointer. + * + * @return the pointer to the device API. + */ +#define DEVICE_API_GET(_class, _dev) ((const struct Z_DEVICE_API_TYPE(_class) *)_dev->api) + +/** + * @brief Macro that evaluates to a boolean that can be used to check if + * a device is of a particular class. + * + * @param _class The device API class. + * @param _dev The device instance pointer. + * + * @retval true If the device is of the given class + * @retval false If the device is not of the given class + */ +#define DEVICE_API_IS(_class, _dev) \ + ({ \ + STRUCT_SECTION_START_EXTERN(Z_DEVICE_API_TYPE(_class)); \ + STRUCT_SECTION_END_EXTERN(Z_DEVICE_API_TYPE(_class)); \ + (DEVICE_API_GET(_class, _dev) < STRUCT_SECTION_END(Z_DEVICE_API_TYPE(_class)) && \ + DEVICE_API_GET(_class, _dev) >= STRUCT_SECTION_START(Z_DEVICE_API_TYPE(_class))); \ + }) + #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree.h index 2cb08aa7..1ee4181d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree.h @@ -13,8 +13,8 @@ * API for accessing the current application's devicetree macros. */ -#ifndef DEVICETREE_H -#define DEVICETREE_H +#ifndef ZEPHYR_INCLUDE_DEVICETREE_H_ +#define ZEPHYR_INCLUDE_DEVICETREE_H_ #include #include @@ -29,7 +29,7 @@ * @brief devicetree.h API * @defgroup devicetree Devicetree * @since 2.2 - * @version 1.1.0 + * @version 1.2.0 * @{ * @} */ @@ -47,10 +47,6 @@ * * _ENUM_IDX: property's value as an index into bindings enum * _ENUM_VAL__EXISTS property's value as a token exists - * _ENUM_TOKEN: property's value as a token into bindings enum (string - * enum values are identifiers) [deprecated, use _STRING_TOKEN] - * _ENUM_UPPER_TOKEN: like _ENUM_TOKEN, but uppercased [deprecated, use - * _STRING_UPPER_TOKEN] * _EXISTS: property is defined * _FOREACH_PROP_ELEM: helper for "iterating" over values in the property * _FOREACH_PROP_ELEM_VARGS: foreach functions with variable number of arguments @@ -239,6 +235,13 @@ */ #define DT_ALIAS(alias) DT_CAT(DT_N_ALIAS_, alias) +/** + * @brief Test if the devicetree has a given alias + * @param alias_name lowercase-and-underscores devicetree alias name + * @return 1 if the alias exists and refers to a node, 0 otherwise + */ +#define DT_HAS_ALIAS(alias_name) DT_NODE_EXISTS(DT_ALIAS(alias_name)) + /** * @brief Get a node identifier for an instance of a compatible * @@ -523,6 +526,92 @@ */ #define DT_NODE_FULL_NAME(node_id) DT_CAT(node_id, _FULL_NAME) +/** + * @brief Get the node's full name, including the unit-address, as an unquoted + * sequence of tokens + * + * This macro returns removed "the quotes" from the node's full name. + * + * Example devicetree fragment: + * + * @code{.dts} + * / { + * soc { + * node: my-node@12345678 { ... }; + * }; + * }; + * @endcode + * + * Example usage: + * + * @code{.c} + * DT_NODE_FULL_NAME_UNQUOTED(DT_NODELABEL(node)) // my-node@12345678 + * @endcode + * + * @param node_id node identifier + * @return the node's full name with unit-address as a sequence of tokens, + * with no quotes + */ +#define DT_NODE_FULL_NAME_UNQUOTED(node_id) DT_CAT(node_id, _FULL_NAME_UNQUOTED) + +/** + * @brief Get the node's full name, including the unit-address, as a token. + * + * This macro returns removed "the quotes" from the node's full name and + * converting any non-alphanumeric characters to underscores. + * + * Example devicetree fragment: + * + * @code{.dts} + * / { + * soc { + * node: my-node@12345678 { ... }; + * }; + * }; + * @endcode + * + * Example usage: + * + * @code{.c} + * DT_NODE_FULL_NAME_TOKEN(DT_NODELABEL(node)) // my_node_12345678 + * @endcode + * + * @param node_id node identifier + * @return the node's full name with unit-address as a token, i.e. without any quotes + * and with special characters converted to underscores + */ +#define DT_NODE_FULL_NAME_TOKEN(node_id) DT_CAT(node_id, _FULL_NAME_TOKEN) + +/** + * @brief Like DT_NODE_FULL_NAME_TOKEN(), but uppercased. + * + * This macro returns removed "the quotes" from the node's full name, + * converting any non-alphanumeric characters to underscores, and + * capitalizing the result. + * + * Example devicetree fragment: + * + * @code{.dts} + * / { + * soc { + * node: my-node@12345678 { ... }; + * }; + * }; + * @endcode + * + * Example usage: + * + * @code{.c} + * DT_NODE_FULL_NAME_UPPER_TOKEN(DT_NODELABEL(node)) // MY_NODE_12345678 + * @endcode + * + * @param node_id node identifier + * @return the node's full name with unit-address as an uppercased token, + * i.e. without any quotes and with special characters converted + * to underscores + */ +#define DT_NODE_FULL_NAME_UPPER_TOKEN(node_id) DT_CAT(node_id, _FULL_NAME_UPPER_TOKEN) + /** * @brief Get a devicetree node's index into its parent's list of children * @@ -809,6 +898,17 @@ #define DT_PROP_BY_IDX(node_id, prop, idx) \ DT_CAT5(node_id, _P_, prop, _IDX_, idx) +/** + * @brief Get the last element of an array type property + * + * @param node_id node identifier + * @param prop lowercase-and-underscores property name + * + * @return a representation of the last element of the property + */ +#define DT_PROP_LAST(node_id, prop) \ + DT_PROP_BY_IDX(node_id, prop, UTIL_DEC(DT_PROP_LEN(node_id, prop))) + /** * @brief Like DT_PROP(), but with a fallback to @p default_value * @@ -827,75 +927,122 @@ (DT_PROP(node_id, prop)), (default_value)) /** - * @brief Get a property value's index into its enumeration values + * @brief Get a property array value's index into its enumeration values * * The return values start at zero. * * Example devicetree fragment: * * @code{.dts} - * usb1: usb@12340000 { - * maximum-speed = "full-speed"; - * }; - * usb2: usb@12341000 { - * maximum-speed = "super-speed"; + * some_node: some-node { + * compat = "vend,enum-string-array"; + * foos = + * <&phandle val1>, + * <&phandle val2>, + * <&phandle val3>; + * foo-names = "default", "option3", "option1"; * }; * @endcode * * Example bindings fragment: * * @code{.yaml} - * properties: - * maximum-speed: - * type: string - * enum: - * - "low-speed" - * - "full-speed" - * - "high-speed" - * - "super-speed" + * compatible: vend,enum-string-array + * properties: + * foos: + * type: phandle-array + * description: | + * Explanation about what this phandle-array exactly is for. + * + * foo-names: + * type: string-array + * description: | + * Some explanation about the available options + * default: explain default + * option1: explain option1 + * option2: explain option2 + * option3: explain option3 + * enum: + * - default + * - option1 + * - option2 + * - option3 * @endcode * * Example usage: * * @code{.c} - * DT_ENUM_IDX(DT_NODELABEL(usb1), maximum_speed) // 1 - * DT_ENUM_IDX(DT_NODELABEL(usb2), maximum_speed) // 3 + * DT_ENUM_IDX_BY_IDX(DT_NODELABEL(some_node), foo_names, 0) // 0 + * DT_ENUM_IDX_BY_IDX(DT_NODELABEL(some_node), foo_names, 2) // 1 * @endcode * * @param node_id node identifier * @param prop lowercase-and-underscores property name + * @param idx the index to get * @return zero-based index of the property's value in its enum: list */ -#define DT_ENUM_IDX(node_id, prop) DT_CAT4(node_id, _P_, prop, _ENUM_IDX) +#define DT_ENUM_IDX_BY_IDX(node_id, prop, idx) \ + DT_CAT6(node_id, _P_, prop, _IDX_, idx, _ENUM_IDX) /** - * @brief Like DT_ENUM_IDX(), but with a fallback to a default enum index + * @brief Equivalent to @ref DT_ENUM_IDX_BY_IDX(node_id, prop, 0). + * @param node_id node identifier + * @param prop lowercase-and-underscores property name + * @return zero-based index of the property's value in its enum: list + */ +#define DT_ENUM_IDX(node_id, prop) DT_ENUM_IDX_BY_IDX(node_id, prop, 0) + +/** + * @brief Like DT_ENUM_IDX_BY_IDX(), but with a fallback to a default enum index * * If the value exists, this expands to its zero based index value thanks to - * DT_ENUM_IDX(node_id, prop). + * DT_ENUM_IDX_BY_IDX(node_id, prop, idx). * * Otherwise, this expands to provided default index enum value. * * @param node_id node identifier * @param prop lowercase-and-underscores property name + * @param idx the index to get + * @param default_idx_value a fallback index value to expand to + * @return zero-based index of the property's value in its enum if present, + * default_idx_value otherwise + */ +#define DT_ENUM_IDX_BY_IDX_OR(node_id, prop, idx, default_idx_value) \ + COND_CODE_1(DT_PROP_HAS_IDX(node_id, prop, idx), \ + (DT_ENUM_IDX_BY_IDX(node_id, prop, idx)), (default_idx_value)) + +/** + * @brief Equivalent to DT_ENUM_IDX_BY_IDX_OR(node_id, prop, 0, default_idx_value). + * @param node_id node identifier + * @param prop lowercase-and-underscores property name * @param default_idx_value a fallback index value to expand to * @return zero-based index of the property's value in its enum if present, * default_idx_value otherwise */ #define DT_ENUM_IDX_OR(node_id, prop, default_idx_value) \ - COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \ - (DT_ENUM_IDX(node_id, prop)), (default_idx_value)) + DT_ENUM_IDX_BY_IDX_OR(node_id, prop, 0, default_idx_value) /** - * @brief Does a node enumeration property have a given value? + * @brief Does a node enumeration property array have a given value? * * @param node_id node identifier * @param prop lowercase-and-underscores property name + * @param idx the index to get + * @param value lowercase-and-underscores enumeration value + * @return 1 if the node property has the value @a value, 0 otherwise. + */ +#define DT_ENUM_HAS_VALUE_BY_IDX(node_id, prop, idx, value) \ + IS_ENABLED(DT_CAT8(node_id, _P_, prop, _IDX_, idx, _ENUM_VAL_, value, _EXISTS)) + +/** + * @brief Equivalent to DT_ENUM_HAS_VALUE_BY_IDX(node_id, prop, 0, value). + * @param node_id node identifier + * @param prop lowercase-and-underscores property name * @param value lowercase-and-underscores enumeration value * @return 1 if the node property has the value @a value, 0 otherwise. */ #define DT_ENUM_HAS_VALUE(node_id, prop, value) \ - IS_ENABLED(DT_CAT6(node_id, _P_, prop, _ENUM_VAL_, value, _EXISTS)) + DT_ENUM_HAS_VALUE_BY_IDX(node_id, prop, 0, value) /** * @brief Get a string property's value as a token. @@ -2243,6 +2390,34 @@ #define DT_REG_HAS_NAME(node_id, name) \ IS_ENABLED(DT_CAT4(node_id, _REG_NAME_, name, _EXISTS)) +/** + * @brief Get the base raw address of the register block at index @p idx + * + * Get the base address of the register block at index @p idx without any + * type suffix. This can be used to index other devicetree properties, use the + * non _RAW macros for assigning values in actual code. + * + * @param node_id node identifier + * @param idx index of the register whose address to return + * @return address of the idx-th register block + */ +#define DT_REG_ADDR_BY_IDX_RAW(node_id, idx) \ + DT_CAT4(node_id, _REG_IDX_, idx, _VAL_ADDRESS) + +/** + * @brief Get a node's (only) register block raw address + * + * Get a node's only register block address without any type suffix. This can + * be used to index other devicetree properties, use the non _RAW macros for + * assigning values in actual code. + * + * Equivalent to DT_REG_ADDR_BY_IDX_RAW(node_id, 0). + * @param node_id node identifier + * @return node's register block address + */ +#define DT_REG_ADDR_RAW(node_id) \ + DT_REG_ADDR_BY_IDX_RAW(node_id, 0) + /** * @brief Get the base address of the register block at index @p idx * @param node_id node identifier @@ -2250,7 +2425,7 @@ * @return address of the idx-th register block */ #define DT_REG_ADDR_BY_IDX(node_id, idx) \ - DT_CAT4(node_id, _REG_IDX_, idx, _VAL_ADDRESS) + DT_U32_C(DT_REG_ADDR_BY_IDX_RAW(node_id, idx)) /** * @brief Get the size of the register block at index @p idx @@ -2264,7 +2439,7 @@ * @return size of the idx-th register block */ #define DT_REG_SIZE_BY_IDX(node_id, idx) \ - DT_CAT4(node_id, _REG_IDX_, idx, _VAL_SIZE) + DT_U32_C(DT_CAT4(node_id, _REG_IDX_, idx, _VAL_SIZE)) /** * @brief Get a node's (only) register block address @@ -2285,7 +2460,7 @@ * @param node_id node identifier * @return node's register block address */ -#define DT_REG_ADDR_U64(node_id) DT_U64_C(DT_REG_ADDR(node_id)) +#define DT_REG_ADDR_U64(node_id) DT_U64_C(DT_REG_ADDR_BY_IDX_RAW(node_id, 0)) /** * @brief Get a node's (only) register block size @@ -2303,7 +2478,7 @@ * @return address of the register block specified by name */ #define DT_REG_ADDR_BY_NAME(node_id, name) \ - DT_CAT4(node_id, _REG_NAME_, name, _VAL_ADDRESS) + DT_U32_C(DT_CAT4(node_id, _REG_NAME_, name, _VAL_ADDRESS)) /** * @brief Like DT_REG_ADDR_BY_NAME(), but with a fallback to @p default_value @@ -2330,7 +2505,7 @@ * @return address of the register block specified by name */ #define DT_REG_ADDR_BY_NAME_U64(node_id, name) \ - DT_U64_C(DT_REG_ADDR_BY_NAME(node_id, name)) + DT_U64_C(DT_CAT4(node_id, _REG_NAME_, name, _VAL_ADDRESS)) /** * @brief Get a register block's size by name @@ -2339,7 +2514,7 @@ * @return size of the register block specified by name */ #define DT_REG_SIZE_BY_NAME(node_id, name) \ - DT_CAT4(node_id, _REG_NAME_, name, _VAL_SIZE) + DT_U32_C(DT_CAT4(node_id, _REG_NAME_, name, _VAL_SIZE)) /** * @brief Like DT_REG_SIZE_BY_NAME(), but with a fallback to @p default_value @@ -3201,7 +3376,7 @@ */ #define DT_FOREACH_STATUS_OKAY(compat, fn) \ COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \ - (DT_CAT(DT_FOREACH_OKAY_, compat)(fn)), \ + (UTIL_CAT(DT_FOREACH_OKAY_, compat)(fn)), \ ()) /** @@ -3254,6 +3429,25 @@ compat)(fn, __VA_ARGS__)), \ ()) +/** + * @brief Call @p fn on all nodes with compatible `compat` + * and status `okay` with multiple arguments + * + * + * @param compat lowercase-and-underscores devicetree compatible + * @param fn Macro to call for each enabled node. Must accept a + * devicetree compatible and instance number. + * @param ... Additional arguments to pass to @p fn + * + * @see DT_INST_FOREACH_STATUS_OKAY_VARGS + */ +#define DT_COMPAT_FOREACH_STATUS_OKAY_VARGS(compat, fn, ...) \ + COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \ + (UTIL_CAT(DT_FOREACH_OKAY_INST_VARGS_, \ + compat)(fn, compat, __VA_ARGS__)), \ + ()) + + /** * @brief Invokes @p fn for each node label of a given node * @@ -3384,6 +3578,28 @@ #define DT_NODE_HAS_STATUS(node_id, status) \ DT_NODE_HAS_STATUS_INTERNAL(node_id, status) +/** + * @brief Does a node identifier refer to a node with a status `okay`? + * + * Example uses: + * + * @code{.c} + * DT_NODE_HAS_STATUS_OKAY(DT_PATH(soc, i2c_12340000)) + * @endcode + * + * Tests whether a node identifier refers to a node which: + * + * - exists in the devicetree, and + * - has a status property as `okay` + * + * As usual, both a missing status and an `ok` status are treated as + * `okay`. + * + * @param node_id a node identifier + * @return 1 if the node has status as `okay`, 0 otherwise. + */ +#define DT_NODE_HAS_STATUS_OKAY(node_id) DT_NODE_HAS_STATUS(node_id, okay) + /** * @brief Does the devicetree have a status `okay` node with a compatible? * @@ -3809,6 +4025,16 @@ #define DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(inst, fn, sep, ...) \ DT_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(DT_DRV_INST(inst), fn, sep, __VA_ARGS__) +/** + * @brief Get a `DT_DRV_COMPAT` property array value's index into its enumeration values + * @param inst instance number + * @param prop lowercase-and-underscores property name + * @param idx the index to get + * @return zero-based index of the property's value in its enum: list + */ +#define DT_INST_ENUM_IDX_BY_IDX(inst, prop, idx) \ + DT_ENUM_IDX_BY_IDX(DT_DRV_INST(inst), prop, idx) + /** * @brief Get a `DT_DRV_COMPAT` value's index into its enumeration values * @param inst instance number @@ -3818,6 +4044,18 @@ #define DT_INST_ENUM_IDX(inst, prop) \ DT_ENUM_IDX(DT_DRV_INST(inst), prop) +/** + * @brief Like DT_INST_ENUM_IDX_BY_IDX(), but with a fallback to a default enum index + * @param inst instance number + * @param prop lowercase-and-underscores property name + * @param idx the index to get + * @param default_idx_value a fallback index value to expand to + * @return zero-based index of the property's value in its enum if present, + * default_idx_value otherwise + */ +#define DT_INST_ENUM_IDX_BY_IDX_OR(inst, prop, idx, default_idx_value) \ + DT_ENUM_IDX_BY_IDX_OR(DT_DRV_INST(inst), prop, idx, default_idx_value) + /** * @brief Like DT_INST_ENUM_IDX(), but with a fallback to a default enum index * @param inst instance number @@ -3829,6 +4067,17 @@ #define DT_INST_ENUM_IDX_OR(inst, prop, default_idx_value) \ DT_ENUM_IDX_OR(DT_DRV_INST(inst), prop, default_idx_value) +/** + * @brief Does a `DT_DRV_COMPAT` enumeration property have a given value by index? + * @param inst instance number + * @param prop lowercase-and-underscores property name + * @param idx the index to get + * @param value lowercase-and-underscores enumeration value + * @return zero-based index of the property's value in its enum + */ +#define DT_INST_ENUM_HAS_VALUE_BY_IDX(inst, prop, idx, value) \ + DT_ENUM_HAS_VALUE_BY_IDX(DT_DRV_INST(inst), prop, idx, value) + /** * @brief Does a `DT_DRV_COMPAT` enumeration property have a given value? * @@ -4116,6 +4365,14 @@ */ #define DT_INST_REG_HAS_NAME(inst, name) DT_REG_HAS_NAME(DT_DRV_INST(inst), name) +/** + * @brief Get a `DT_DRV_COMPAT` instance's idx-th register block's raw address + * @param inst instance number + * @param idx index of the register whose address to return + * @return address of the instance's idx-th register block + */ +#define DT_INST_REG_ADDR_BY_IDX_RAW(inst, idx) DT_REG_ADDR_BY_IDX_RAW(DT_DRV_INST(inst), idx) + /** * @brief Get a `DT_DRV_COMPAT` instance's idx-th register block's address * @param inst instance number @@ -4166,7 +4423,7 @@ * @return address of the register block with the given @p name */ #define DT_INST_REG_ADDR_BY_NAME_U64(inst, name) \ - DT_U64_C(DT_INST_REG_ADDR_BY_NAME(inst, name)) + DT_REG_ADDR_BY_NAME_U64(DT_DRV_INST(inst), name) /** * @brief Get a `DT_DRV_COMPAT`'s register block size by name @@ -4188,6 +4445,13 @@ #define DT_INST_REG_SIZE_BY_NAME_OR(inst, name, default_value) \ DT_REG_SIZE_BY_NAME_OR(DT_DRV_INST(inst), name, default_value) +/** + * @brief Get a `DT_DRV_COMPAT`'s (only) register block raw address + * @param inst instance number + * @return instance's register block address + */ +#define DT_INST_REG_ADDR_RAW(inst) DT_INST_REG_ADDR_BY_IDX_RAW(inst, 0) + /** * @brief Get a `DT_DRV_COMPAT`'s (only) register block address * @param inst instance number @@ -4206,7 +4470,7 @@ * @param inst instance number * @return instance's register block address */ -#define DT_INST_REG_ADDR_U64(inst) DT_U64_C(DT_INST_REG_ADDR(inst)) +#define DT_INST_REG_ADDR_U64(inst) DT_REG_ADDR_U64(DT_DRV_INST(inst)) /** * @brief Get a `DT_DRV_COMPAT`'s (only) register block size @@ -4215,6 +4479,14 @@ */ #define DT_INST_REG_SIZE(inst) DT_INST_REG_SIZE_BY_IDX(inst, 0) +/** + * @brief Get a `DT_DRV_COMPAT`'s number of interrupts + * + * @param inst instance number + * @return number of interrupts + */ +#define DT_INST_NUM_IRQS(inst) DT_NUM_IRQS(DT_DRV_INST(inst)) + /** * @brief Get a `DT_DRV_COMPAT` interrupt level * @@ -4459,6 +4731,103 @@ #define DT_ANY_INST_HAS_PROP_STATUS_OKAY(prop) \ COND_CODE_1(IS_EMPTY(DT_ANY_INST_HAS_PROP_STATUS_OKAY_(prop)), (0), (1)) +/** + * @brief Check if any device node with status `okay` has a given + * property. + * + * @param compat lowercase-and-underscores devicetree compatible + * @param prop lowercase-and-underscores property name + * + * Example devicetree overlay: + * + * @code{.dts} + * &i2c0 { + * sensor0: sensor@0 { + * compatible = "vnd,some-sensor"; + * status = "okay"; + * reg = <0>; + * foo = <1>; + * bar = <2>; + * }; + * + * sensor1: sensor@1 { + * compatible = "vnd,some-sensor"; + * status = "okay"; + * reg = <1>; + * foo = <2>; + * }; + * + * sensor2: sensor@2 { + * compatible = "vnd,some-sensor"; + * status = "disabled"; + * reg = <2>; + * baz = <1>; + * }; + * }; + * @endcode + * + * Example usage: + * + * @code{.c} + * + * DT_ANY_COMPAT_HAS_PROP_STATUS_OKAY(vnd_some_sensor, foo) // 1 + * DT_ANY_COMPAT_HAS_PROP_STATUS_OKAY(vnd_some_sensor, bar) // 1 + * DT_ANY_COMPAT_HAS_PROP_STATUS_OKAY(vnd_some_sensor, baz) // 0 + * @endcode + */ +#define DT_ANY_COMPAT_HAS_PROP_STATUS_OKAY(compat, prop) \ + (DT_COMPAT_FOREACH_STATUS_OKAY_VARGS(compat, DT_COMPAT_NODE_HAS_PROP_AND_OR, prop) 0) + +/** + * @brief Check if any `DT_DRV_COMPAT` node with status `okay` has a given + * boolean property that exists. + * + * This differs from @ref DT_ANY_INST_HAS_PROP_STATUS_OKAY because even when not present + * on a node, the boolean property is generated with a value of 0 and therefore exists. + * + * @param prop lowercase-and-underscores property name + * + * Example devicetree overlay: + * + * @code{.dts} + * &i2c0 { + * sensor0: sensor@0 { + * compatible = "vnd,some-sensor"; + * status = "okay"; + * reg = <0>; + * foo; + * bar; + * }; + * + * sensor1: sensor@1 { + * compatible = "vnd,some-sensor"; + * status = "okay"; + * reg = <1>; + * foo; + * }; + * + * sensor2: sensor@2 { + * compatible = "vnd,some-sensor"; + * status = "disabled"; + * reg = <2>; + * baz; + * }; + * }; + * @endcode + * + * Example usage: + * + * @code{.c} + * #define DT_DRV_COMPAT vnd_some_sensor + * + * DT_ANY_INST_HAS_BOOL_STATUS_OKAY(foo) // 1 + * DT_ANY_INST_HAS_BOOL_STATUS_OKAY(bar) // 1 + * DT_ANY_INST_HAS_BOOL_STATUS_OKAY(baz) // 0 + * @endcode + */ +#define DT_ANY_INST_HAS_BOOL_STATUS_OKAY(prop) \ + COND_CODE_1(IS_EMPTY(DT_ANY_INST_HAS_BOOL_STATUS_OKAY_(prop)), (0), (1)) + /** * @brief Call @p fn on all nodes with compatible `DT_DRV_COMPAT` * and status `okay` @@ -4536,15 +4905,16 @@ * * * @param fn Macro to call for each enabled node. Must accept an - * instance number as its only parameter. + * instance number. * @param ... variable number of arguments to pass to @p fn * * @see DT_INST_FOREACH_STATUS_OKAY + * @see DT_COMPAT_FOREACH_STATUS_OKAY_VARGS */ #define DT_INST_FOREACH_STATUS_OKAY_VARGS(fn, ...) \ - COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT), \ - (UTIL_CAT(DT_FOREACH_OKAY_INST_VARGS_, \ - DT_DRV_COMPAT)(fn, __VA_ARGS__)), \ + COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT), \ + (UTIL_CAT(DT_FOREACH_OKAY_INST_VARGS_, \ + DT_DRV_COMPAT)(fn, __VA_ARGS__)), \ ()) /** @@ -4755,6 +5125,35 @@ #define DT_ANY_INST_HAS_PROP_STATUS_OKAY_(prop) \ DT_INST_FOREACH_STATUS_OKAY_VARGS(DT_ANY_INST_HAS_PROP_STATUS_OKAY__, prop) +/** @brief Helper for DT_ANY_INST_HAS_BOOL_STATUS_OKAY_ + * + * This macro generates token "1," for instance of a device, + * identified by index @p idx, if instance has boolean property + * @p prop with value 1. + * + * @param idx instance number + * @param prop property to check for + * + * @return Macro evaluates to `1,` if instance property value is 1, + * otherwise it evaluates to literal nothing. + */ +#define DT_ANY_INST_HAS_BOOL_STATUS_OKAY__(idx, prop) \ + COND_CODE_1(DT_INST_PROP(idx, prop), (1,), ()) +/** @brief Helper for DT_ANY_INST_HAS_BOOL_STATUS_OKAY + * + * This macro uses DT_ANY_INST_HAS_BOOL_STATUS_OKAY_ with + * DT_INST_FOREACH_STATUS_OKAY_VARG to generate comma separated list of 1, + * where each 1 on the list represents instance that has a property + * @p prop of value 1; the list may be empty, and the upper bound on number of + * list elements is number of device instances. + * + * @param prop property to check + * + * @return Evaluates to list of 1s (e.g: 1,1,1,) or nothing. + */ +#define DT_ANY_INST_HAS_BOOL_STATUS_OKAY_(prop) \ + DT_INST_FOREACH_STATUS_OKAY_VARGS(DT_ANY_INST_HAS_BOOL_STATUS_OKAY__, prop) + #define DT_PATH_INTERNAL(...) \ UTIL_CAT(DT_ROOT, MACRO_MAP_CAT(DT_S_PREFIX, __VA_ARGS__)) /** @brief DT_PATH_INTERNAL() helper: prepends _S_ to a node name @@ -4806,6 +5205,22 @@ #define DT_NODE_HAS_STATUS_INTERNAL(node_id, status) \ IS_ENABLED(DT_CAT3(node_id, _STATUS_, status)) +/** @brief Helper macro to OR multiple has property checks in a loop macro + * (for the specified device) + */ +#define DT_COMPAT_NODE_HAS_PROP_AND_OR(inst, compat, prop) \ + DT_NODE_HAS_PROP(DT_INST(inst, compat), prop) || + +/** + * @def DT_U32_C + * @brief Macro to add 32bit unsigned postfix to the devicetree address constants + */ +#if defined(_LINKER) || defined(_ASMLANGUAGE) +#define DT_U32_C(_v) (_v) +#else +#define DT_U32_C(_v) UINT32_C(_v) +#endif + /** * @def DT_U64_C * @brief Macro to add ULL postfix to the devicetree address constants @@ -4838,5 +5253,6 @@ #include #include #include +#include -#endif /* DEVICETREE_H */ +#endif /* ZEPHYR_INCLUDE_DEVICETREE_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree/dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree/dma.h index 0b69272e..3dff8292 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree/dma.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree/dma.h @@ -220,6 +220,25 @@ extern "C" { #define DT_DMAS_CELL_BY_NAME(node_id, name, cell) \ DT_PHA_BY_NAME(node_id, dmas, name, cell) +/** + * @brief Like DT_DMAS_CELL_BY_NAME(), but with a fallback to @p default_value + * + * If the value exists, this expands to DT_DMAS_CELL_BY_NAME(node_id, + * name, cell). The @p default_value parameter is not expanded in this case. + * + * Otherwise, this expands to @p default_value. + * + * @param node_id node identifier for a node with a dmas property + * @param name lowercase-and-underscores name of a dmas element + * as defined by the node's dma-names property + * @param cell lowercase-and-underscores cell name + * @param default_value a fallback value to expand to + * @return the cell's value or @p default_value + * @see DT_PHA_BY_NAME_OR() + */ +#define DT_DMAS_CELL_BY_NAME_OR(node_id, name, cell, default_value) \ + DT_PHA_BY_NAME_OR(node_id, dmas, name, cell, default_value) + /** * @brief Get a DT_DRV_COMPAT instance's DMA specifier's cell value by name * @param inst DT_DRV_COMPAT instance number diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree/port-endpoint.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree/port-endpoint.h new file mode 100644 index 00000000..08ff0ee3 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree/port-endpoint.h @@ -0,0 +1,275 @@ +/** + * @file + * @brief Port / Endpoint Devicetree macro public API header file. + */ + +/* + * Copyright 2024 NXP + * Copyright (c) 2024 tinyVision.ai Inc + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DEVICETREE_PORT_ENDPOINT_H_ +#define ZEPHYR_INCLUDE_DEVICETREE_PORT_ENDPOINT_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup devicetree-port-endpoint Devicetree Port Endpoint API + * @ingroup devicetree + * @{ + */ + +/** + * @brief Helper for @ref DT_INST_PORT_BY_ID + * + * This behaves the same way as @ref DT_INST_PORT_BY_ID but does not work if there is only + * a single port without address. + * + * @param inst instance number + * @param pid port ID + * @return port node associated with @p pid + */ +#define _DT_INST_PORT_BY_ID(inst, pid) \ + COND_CODE_1(DT_NODE_EXISTS(DT_INST_CHILD(inst, ports)), \ + (DT_CHILD(DT_INST_CHILD(inst, ports), port_##pid)), (DT_INST_CHILD(inst, port_##pid))) + +/** + * @brief Get a port node from its id + * + * Given a device instance number, return a port node specified by its ID. + * It handles various ways of how a port could be defined. + * + * Example usage with DT_INST_PORT_BY_ID() to get the @c port@0 or @c port node: + * + * @code{.c} + * DT_INST_PORT_BY_ID(inst, 0) + * @endcode + * + * Example devicetree fragment: + * + * @code{.dts} + * &device { + * ports { + * #address-cells = <1>; + * #size-cells = <0>; + * port@0 { + * reg = <0x0>; + * }; + * }; + * }; + * @endcode + * + * @code{.dts} + * &device { + * #address-cells = <1>; + * #size-cells = <0>; + * port@0 { + * reg = <0x0>; + * }; + * }; + * @endcode + * + * @code{.dts} + * &device { + * port { + * }; + * }; + * @endcode + * + * @param inst instance number + * @param pid port ID + * @return port node associated with @p pid + */ +#define DT_INST_PORT_BY_ID(inst, pid) \ + COND_CODE_1(DT_NODE_EXISTS(_DT_INST_PORT_BY_ID(inst, pid)), \ + (_DT_INST_PORT_BY_ID(inst, pid)), (DT_INST_CHILD(inst, port))) + +/** + * @brief Helper for @ref DT_INST_ENDPOINT_BY_ID + * + * This behaves the same way as @ref DT_INST_PORT_BY_ID but does not work if there is only + * a single endpoint without address. + * + * @param inst instance number + * @param pid port ID + * @param eid endpoint ID + * @return endpoint node associated with @p eid and @p pid + */ +#define _DT_INST_ENDPOINT_BY_ID(inst, pid, eid) \ + DT_CHILD(DT_INST_PORT_BY_ID(inst, pid), endpoint_##eid) + +/** + * @brief Get an endpoint node from its id and its parent port id + * + * Given a device instance number, a port ID and an endpoint ID, return the endpoint node. + * It handles various ways of how a port and an endpoint could be defined as described in + * @ref DT_INST_PORT_BY_ID and below. + * + * Example usage with DT_INST_ENDPOINT_BY_ID() to get the @c endpoint or @c endpoint@0 node: + * + * @code{.c} + * DT_INST_ENDPOINT_BY_ID(inst, 0, 0) + * @endcode + * + * Example devicetree fragment: + * + * @code{.dts} + * &device { + * port { + * endpoint { + * }; + * }; + * }; + * @endcode + * + * @code{.dts} + * &device { + * port { + * #address-cells = <1>; + * #size-cells = <0>; + * endpoint@0 { + * reg = <0x0>; + * }; + * }; + * }; + * @endcode + * + * @code{.dts} + * &device { + * ports { + * #address-cells = <1>; + * #size-cells = <0>; + * port@0 { + * reg = <0x0>; + * #address-cells = <1>; + * #size-cells = <0>; + * endpoint@0 { + * reg = <0x0>; + * }; + * }; + * }; + * }; + * @endcode + * + * @param inst instance number + * @param pid port ID + * @param eid endpoint ID + * @return endpoint node associated with @p eid and @p pid + */ +#define DT_INST_ENDPOINT_BY_ID(inst, pid, eid) \ + COND_CODE_1(DT_NODE_EXISTS(_DT_INST_ENDPOINT_BY_ID(inst, pid, eid)), \ + (_DT_INST_ENDPOINT_BY_ID(inst, pid, eid)), \ + (DT_CHILD(DT_INST_PORT_BY_ID(inst, pid), endpoint))) + +/** + * @brief Get the device node from its endpoint node. + * + * Given an endpoint node id, return its device node id. + * This handles various ways of how a port and an endpoint could be defined as described in + * @ref DT_NODE_BY_ENDPOINT. + * + * Example usage with DT_NODE_BY_ENDPOINT() to get the @c &device node from its @c ep0 node: + * + * @code{.c} + * DT_NODE_BY_ENDPOINT(DT_NODELABEL(ep0)) + * @endcode + * + * Example devicetree fragment: + * + * @code{.dts} + * &device { + * port { + * #address-cells = <1>; + * #size-cells = <0>; + * ep0: endpoint@0 { + * reg = <0x0>; + * }; + * }; + * }; + * @endcode + * + * @code{.dts} + * &device { + * ports { + * #address-cells = <1>; + * #size-cells = <0>; + * port@0 { + * reg = <0x0>; + * #address-cells = <1>; + * #size-cells = <0>; + * ep0: endpoint@0 { + * reg = <0x0>; + * }; + * }; + * }; + * }; + * @endcode + * + * @param ep endpoint node + * @return device node associated with @p ep + */ +#define DT_NODE_BY_ENDPOINT(ep) \ + COND_CODE_1(DT_NODE_EXISTS(DT_CHILD(DT_PARENT(DT_GPARENT(ep)), ports)), \ + (DT_PARENT(DT_GPARENT(ep))), (DT_GPARENT(ep))) + +/** + * @brief Get the remote device node from a local endpoint node. + * + * Given an endpoint node id, return the remote device node that connects to this device via this + * local endpoint. This handles various ways of how a port and an endpoint could be defined as + * described in @ref DT_INST_PORT_BY_ID and @ref DT_INST_ENDPOINT_BY_ID. + * + * Example usage with DT_NODE_REMOTE_DEVICE() to get the remote device node @c &device1 from the + * local endpoint @c endpoint@0 node of the device @c &device0 node: + * + * @code{.c} + * DT_NODE_REMOTE_DEVICE(DT_NODELABEL(device0_ep_out)) + * @endcode + * + * Example devicetree fragment: + * + * @code{.dts} + * &device0 { + * port { + * #address-cells = <1>; + * #size-cells = <0>; + * device0_ep_out: endpoint@0 { + * reg = <0x0>; + * remote-endpoint-label = "device1_ep_in"; + * }; + * }; + * }; + * + * &device1 { + * ports { + * #address-cells = <1>; + * #size-cells = <0>; + * port@0 { + * reg = <0x0>; + * device1_ep_in: endpoint { + * remote-endpoint-label = "device0_ep_out"; + * }; + * }; + * }; + * }; + * @endcode + * + * @param ep endpoint node + * @return remote device node that connects to this device via @p ep + */ +#define DT_NODE_REMOTE_DEVICE(ep) \ + DT_NODE_BY_ENDPOINT(DT_NODELABEL(DT_STRING_TOKEN(ep, remote_endpoint_label))) + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DEVICETREE_PORT_ENDPOINT_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree/spi.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree/spi.h index d1f916c3..db1b4996 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree/spi.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/devicetree/spi.h @@ -148,7 +148,7 @@ extern "C" { * @return node identifier for spi_dev's chip select GPIO controller */ #define DT_SPI_DEV_CS_GPIOS_CTLR(spi_dev) \ - DT_GPIO_CTLR_BY_IDX(DT_BUS(spi_dev), cs_gpios, DT_REG_ADDR(spi_dev)) + DT_GPIO_CTLR_BY_IDX(DT_BUS(spi_dev), cs_gpios, DT_REG_ADDR_RAW(spi_dev)) /** * @brief Get a SPI device's chip select GPIO pin number @@ -181,7 +181,7 @@ extern "C" { * @return pin number of spi_dev's chip select GPIO */ #define DT_SPI_DEV_CS_GPIOS_PIN(spi_dev) \ - DT_GPIO_PIN_BY_IDX(DT_BUS(spi_dev), cs_gpios, DT_REG_ADDR(spi_dev)) + DT_GPIO_PIN_BY_IDX(DT_BUS(spi_dev), cs_gpios, DT_REG_ADDR_RAW(spi_dev)) /** * @brief Get a SPI device's chip select GPIO flags @@ -209,7 +209,7 @@ extern "C" { * zero if there is none */ #define DT_SPI_DEV_CS_GPIOS_FLAGS(spi_dev) \ - DT_GPIO_FLAGS_BY_IDX(DT_BUS(spi_dev), cs_gpios, DT_REG_ADDR(spi_dev)) + DT_GPIO_FLAGS_BY_IDX(DT_BUS(spi_dev), cs_gpios, DT_REG_ADDR_RAW(spi_dev)) /** * @brief Equivalent to DT_SPI_DEV_HAS_CS_GPIOS(DT_DRV_INST(inst)). diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/display/cfb.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/display/cfb.h index 6d10debe..9cdf81e2 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/display/cfb.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/display/cfb.h @@ -9,8 +9,8 @@ * @brief Public Monochrome Character Framebuffer API */ -#ifndef __CFB_H__ -#define __CFB_H__ +#ifndef ZEPHYR_INCLUDE_DISPLAY_CFB_H_ +#define ZEPHYR_INCLUDE_DISPLAY_CFB_H_ #include #include @@ -256,4 +256,4 @@ void cfb_framebuffer_deinit(const struct device *dev); * @} */ -#endif /* __CFB_H__ */ +#endif /* ZEPHYR_INCLUDE_DISPLAY_CFB_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/adc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/adc.h index dc7d975a..1c95baa9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/adc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/adc.h @@ -321,7 +321,7 @@ struct adc_dt_spec { DT_FOREACH_CHILD_VARGS(ctlr, ADC_FOREACH_INPUT, input) #define ADC_FOREACH_INPUT(node, input) \ - IF_ENABLED(IS_EQ(DT_REG_ADDR(node), input), (node)) + IF_ENABLED(IS_EQ(DT_REG_ADDR_RAW(node), input), (node)) #define ADC_CHANNEL_CFG_FROM_DT_NODE(node_id) \ IF_ENABLED(DT_NODE_EXISTS(node_id), \ @@ -726,10 +726,7 @@ __syscall int adc_channel_setup(const struct device *dev, static inline int z_impl_adc_channel_setup(const struct device *dev, const struct adc_channel_cfg *channel_cfg) { - const struct adc_driver_api *api = - (const struct adc_driver_api *)dev->api; - - return api->channel_setup(dev, channel_cfg); + return DEVICE_API_GET(adc, dev)->channel_setup(dev, channel_cfg); } /** @@ -777,10 +774,7 @@ __syscall int adc_read(const struct device *dev, static inline int z_impl_adc_read(const struct device *dev, const struct adc_sequence *sequence) { - const struct adc_driver_api *api = - (const struct adc_driver_api *)dev->api; - - return api->read(dev, sequence); + return DEVICE_API_GET(adc, dev)->read(dev, sequence); } /** @@ -828,10 +822,7 @@ static inline int z_impl_adc_read_async(const struct device *dev, const struct adc_sequence *sequence, struct k_poll_signal *async) { - const struct adc_driver_api *api = - (const struct adc_driver_api *)dev->api; - - return api->read_async(dev, sequence, async); + return DEVICE_API_GET(adc, dev)->read_async(dev, sequence, async); } #endif /* CONFIG_ADC_ASYNC */ @@ -846,10 +837,7 @@ static inline int z_impl_adc_read_async(const struct device *dev, */ static inline uint16_t adc_ref_internal(const struct device *dev) { - const struct adc_driver_api *api = - (const struct adc_driver_api *)dev->api; - - return api->ref_internal; + return DEVICE_API_GET(adc, dev)->ref_internal; } /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/adc/current_sense_amplifier.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/adc/current_sense_amplifier.h index 888167b1..05c9a98d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/adc/current_sense_amplifier.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/adc/current_sense_amplifier.h @@ -12,9 +12,9 @@ struct current_sense_amplifier_dt_spec { const struct adc_dt_spec port; - uint32_t sense_micro_ohms; - uint32_t sense_gain_mult; - uint32_t sense_gain_div; + uint32_t sense_milli_ohms; + uint16_t sense_gain_mult; + uint16_t sense_gain_div; struct gpio_dt_spec power_gpio; }; @@ -31,7 +31,7 @@ struct current_sense_amplifier_dt_spec { #define CURRENT_SENSE_AMPLIFIER_DT_SPEC_GET(node_id) \ { \ .port = ADC_DT_SPEC_GET(node_id), \ - .sense_micro_ohms = DT_PROP(node_id, sense_resistor_micro_ohms), \ + .sense_milli_ohms = DT_PROP(node_id, sense_resistor_milli_ohms), \ .sense_gain_mult = DT_PROP(node_id, sense_gain_mult), \ .sense_gain_div = DT_PROP(node_id, sense_gain_div), \ .power_gpio = GPIO_DT_SPEC_GET_OR(node_id, power_gpios, {0}), \ @@ -51,8 +51,10 @@ current_sense_amplifier_scale_dt(const struct current_sense_amplifier_dt_spec *s /* store in a temporary 64 bit variable to prevent overflow during calculation */ int64_t tmp = *v_to_i; - /* multiplies by 1,000,000 before dividing by sense resistance in micro-ohms. */ - tmp = tmp * 1000000 / spec->sense_micro_ohms * spec->sense_gain_div / spec->sense_gain_mult; + /* (INT32_MAX * 1000 * UINT16_MAX) < INT64_MAX + * Therefore all multiplications can be done before divisions, preserving resolution. + */ + tmp = tmp * 1000 * spec->sense_gain_div / spec->sense_milli_ohms / spec->sense_gain_mult; *v_to_i = (int32_t)tmp; } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/bluetooth.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/bluetooth.h index 2f969c40..330ac850 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/bluetooth.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/bluetooth.h @@ -21,7 +21,7 @@ #include #include -#include +#include #include #include #include @@ -46,6 +46,14 @@ enum { * initial connection data length parameters are not equal to the * default data length parameters. Therefore the host should initiate * the DLE procedure after connection establishment. + * + * That requirement is stated in Core Spec v5.4 Vol 6 Part B. 4.5.10 + * Data PDU length management: + * + * > For a new connection: + * > - ... If either value is not 27, then the Controller should + * > initiate the Data Length Update procedure at the earliest + * > practical opportunity. */ BT_HCI_QUIRK_NO_AUTO_DLE = BIT(1), }; @@ -61,10 +69,15 @@ enum bt_hci_bus { BT_HCI_BUS_SDIO = 6, BT_HCI_BUS_SPI = 7, BT_HCI_BUS_I2C = 8, - BT_HCI_BUS_IPM = 9, + BT_HCI_BUS_SMD = 9, + BT_HCI_BUS_VIRTIO = 10, + BT_HCI_BUS_IPC = 11, + /* IPM is deprecated and simply an alias for IPC */ + BT_HCI_BUS_IPM = BT_HCI_BUS_IPC, }; -#define BT_DT_HCI_QUIRK_OR(node_id, prop, idx) DT_STRING_TOKEN_BY_IDX(node_id, prop, idx) +#define BT_DT_HCI_QUIRK_OR(node_id, prop, idx) \ + UTIL_CAT(BT_HCI_QUIRK_, DT_STRING_UPPER_TOKEN_BY_IDX(node_id, prop, idx)) #define BT_DT_HCI_QUIRKS_GET(node_id) COND_CODE_1(DT_NODE_HAS_PROP(node_id, bt_hci_quirks), \ (DT_FOREACH_PROP_ELEM_SEP(node_id, \ bt_hci_quirks, \ @@ -76,7 +89,8 @@ enum bt_hci_bus { #define BT_DT_HCI_NAME_GET(node_id) DT_PROP_OR(node_id, bt_hci_name, "HCI") #define BT_DT_HCI_NAME_INST_GET(inst) BT_DT_HCI_NAME_GET(DT_DRV_INST(inst)) -#define BT_DT_HCI_BUS_GET(node_id) DT_STRING_TOKEN_OR(node_id, bt_hci_bus, BT_HCI_BUS_VIRTUAL) +#define BT_DT_HCI_BUS_GET(node_id) \ + UTIL_CAT(BT_HCI_BUS_, DT_STRING_UPPER_TOKEN_OR(node_id, bt_hci_bus, VIRTUAL)) #define BT_DT_HCI_BUS_INST_GET(inst) BT_DT_HCI_BUS_GET(DT_DRV_INST(inst)) typedef int (*bt_hci_recv_t)(const struct device *dev, struct net_buf *buf); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/can.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/can.h index 0d72cc64..5f32b8c3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/can.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/can.h @@ -45,26 +45,17 @@ extern "C" { * @brief Bit mask for a standard (11-bit) CAN identifier. */ #define CAN_STD_ID_MASK 0x7FFU -/** - * @brief Maximum value for a standard (11-bit) CAN identifier. - * - * @deprecated Use ``CAN_STD_ID_MASK`` instead. - */ -#define CAN_MAX_STD_ID CAN_STD_ID_MASK __DEPRECATED_MACRO + /** * @brief Bit mask for an extended (29-bit) CAN identifier. */ #define CAN_EXT_ID_MASK 0x1FFFFFFFU -/** - * @brief Maximum value for an extended (29-bit) CAN identifier. - * - * @deprecated Use ``CAN_EXT_ID_MASK`` instead. - */ -#define CAN_MAX_EXT_ID CAN_EXT_ID_MASK __DEPRECATED_MACRO + /** * @brief Maximum data length code for CAN 2.0A/2.0B. */ #define CAN_MAX_DLC 8U + /** * @brief Maximum data length code for CAN FD. */ @@ -835,8 +826,16 @@ static inline int z_impl_can_get_core_clock(const struct device *dev, uint32_t * * * Get the minimum supported bitrate for the CAN controller/transceiver combination. * + * @note The minimum bitrate represents limitations of the CAN controller/transceiver + * combination. Whether the CAN controller can achieve this bitrate depends on the CAN core clock + * rate and the minimum CAN timing limits. + * + * @see can_get_core_clock() + * @see can_get_timing_min() + * @see can_get_timing_data_min() + * * @param dev Pointer to the device structure for the driver instance. - * @return Minimum supported bitrate in bits/s + * @return Minimum supported bitrate in bits/s. A value of 0 means the lower limit is unspecified. */ __syscall uint32_t can_get_bitrate_min(const struct device *dev); @@ -847,31 +846,19 @@ static inline uint32_t z_impl_can_get_bitrate_min(const struct device *dev) return common->min_bitrate; } -/** - * @brief Get minimum supported bitrate - * - * Get the minimum supported bitrate for the CAN controller/transceiver combination. - * - * @deprecated Use @a can_get_bitrate_min() instead. - * - * @param dev Pointer to the device structure for the driver instance. - * @param[out] min_bitrate Minimum supported bitrate in bits/s - * - * @retval -EIO General input/output error. - * @retval -ENOSYS If this function is not implemented by the driver. - */ -__deprecated static inline int can_get_min_bitrate(const struct device *dev, uint32_t *min_bitrate) -{ - *min_bitrate = can_get_bitrate_min(dev); - - return 0; -} - /** * @brief Get maximum supported bitrate * * Get the maximum supported bitrate for the CAN controller/transceiver combination. * + * @note The maximum bitrate represents limitations of the CAN controller/transceiver + * combination. Whether the CAN controller can achieve this bitrate depends on the CAN core clock + * rate and the maximum CAN timing limits. + * + * @see can_get_core_clock() + * @see can_get_timing_max() + * @see can_get_timing_data_max() + * * @param dev Pointer to the device structure for the driver instance. * @return Maximum supported bitrate in bits/s */ @@ -884,27 +871,6 @@ static inline uint32_t z_impl_can_get_bitrate_max(const struct device *dev) return common->max_bitrate; } -/** - * @brief Get maximum supported bitrate - * - * Get the maximum supported bitrate for the CAN controller/transceiver combination. - * - * @deprecated Use @a can_get_bitrate_max() instead. - * - * @param dev Pointer to the device structure for the driver instance. - * @param[out] max_bitrate Maximum supported bitrate in bits/s - * - * @retval 0 If successful. - * @retval -EIO General input/output error. - * @retval -ENOSYS If this function is not implemented by the driver. - */ -__deprecated static inline int can_get_max_bitrate(const struct device *dev, uint32_t *max_bitrate) -{ - *max_bitrate = can_get_bitrate_max(dev); - - return 0; -} - /** * @brief Get the minimum supported timing parameter values. * @@ -1087,29 +1053,6 @@ __syscall int can_set_timing_data(const struct device *dev, */ __syscall int can_set_bitrate_data(const struct device *dev, uint32_t bitrate_data); -/** - * @brief Fill in the prescaler value for a given bitrate and timing - * - * Fill the prescaler value in the timing struct. The sjw, prop_seg, phase_seg1 - * and phase_seg2 must be given. - * - * The returned bitrate error is remainder of the division of the clock rate by - * the bitrate times the timing segments. - * - * @deprecated This function allows for bitrate errors, but bitrate errors between nodes on the same - * network leads to them drifting apart after the start-of-frame (SOF) synchronization - * has taken place. - * - * @param dev Pointer to the device structure for the driver instance. - * @param timing Result is written into the can_timing struct provided. - * @param bitrate Target bitrate. - * - * @retval 0 or positive bitrate error. - * @retval Negative error code on error. - */ -__deprecated int can_calc_prescaler(const struct device *dev, struct can_timing *timing, - uint32_t bitrate); - /** * @brief Configure the bus timing of a CAN controller. * @@ -1425,7 +1368,7 @@ static inline void z_impl_can_remove_rx_filter(const struct device *dev, int fil { const struct can_driver_api *api = (const struct can_driver_api *)dev->api; - return api->remove_rx_filter(dev, filter_id); + api->remove_rx_filter(dev, filter_id); } /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/can/transceiver.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/can/transceiver.h index c6f0b3c8..9dcf2caf 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/can/transceiver.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/can/transceiver.h @@ -65,10 +65,7 @@ __subsystem struct can_transceiver_driver_api { */ static inline int can_transceiver_enable(const struct device *dev, can_mode_t mode) { - const struct can_transceiver_driver_api *api = - (const struct can_transceiver_driver_api *)dev->api; - - return api->enable(dev, mode); + return DEVICE_API_GET(can_transceiver, dev)->enable(dev, mode); } /** @@ -87,10 +84,7 @@ static inline int can_transceiver_enable(const struct device *dev, can_mode_t mo */ static inline int can_transceiver_disable(const struct device *dev) { - const struct can_transceiver_driver_api *api = - (const struct can_transceiver_driver_api *)dev->api; - - return api->disable(dev); + return DEVICE_API_GET(can_transceiver, dev)->disable(dev); } /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/adi_max32_clock_control.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/adi_max32_clock_control.h index 2922b5e2..cd889d37 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/adi_max32_clock_control.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/adi_max32_clock_control.h @@ -30,6 +30,8 @@ struct max32_perclk { * ADI_MAX32_PRPH_CLK_SRC_INRO * ADI_MAX32_PRPH_CLK_SRC_ISO * ADI_MAX32_PRPH_CLK_SRC_IBRO_DIV8 + * ADI_MAX32_PRPH_CLK_SRC_IPLL + * ADI_MAX32_PRPH_CLK_SRC_EBO */ uint32_t clk_src; }; @@ -38,11 +40,13 @@ struct max32_perclk { #define ADI_MAX32_SYSCLK_PRESCALER DT_PROP_OR(DT_NODELABEL(gcr), sysclk_prescaler, 1) #define ADI_MAX32_CLK_IPO_FREQ DT_PROP(DT_NODELABEL(clk_ipo), clock_frequency) -#define ADI_MAX32_CLK_ERFO_FREQ DT_PROP(DT_NODELABEL(clk_erfo), clock_frequency) +#define ADI_MAX32_CLK_ERFO_FREQ DT_PROP_OR(DT_NODELABEL(clk_erfo), clock_frequency, 0) #define ADI_MAX32_CLK_IBRO_FREQ DT_PROP(DT_NODELABEL(clk_ibro), clock_frequency) #define ADI_MAX32_CLK_ISO_FREQ DT_PROP_OR(DT_NODELABEL(clk_iso), clock_frequency, 0) #define ADI_MAX32_CLK_INRO_FREQ DT_PROP(DT_NODELABEL(clk_inro), clock_frequency) #define ADI_MAX32_CLK_ERTCO_FREQ DT_PROP(DT_NODELABEL(clk_ertco), clock_frequency) +#define ADI_MAX32_CLK_IPLL_FREQ DT_PROP_OR(DT_NODELABEL(clk_ipll), clock_frequency, 0) +#define ADI_MAX32_CLK_EBO_FREQ DT_PROP_OR(DT_NODELABEL(clk_ebo), clock_frequency, 0) /* External clock may not be defined so _OR is used */ #define ADI_MAX32_CLK_EXTCLK_FREQ DT_PROP_OR(DT_NODELABEL(clk_extclk), clock_frequency, 0) @@ -76,6 +80,14 @@ struct max32_perclk { #define ADI_MAX32_SYSCLK_SRC ADI_MAX32_CLK_EXTCLK #define ADI_MAX32_SYSCLK_FREQ (ADI_MAX32_CLK_EXTCLK_FREQ / ADI_MAX32_SYSCLK_PRESCALER) #endif +#if DT_SAME_NODE(DT_GCR_CLOCKS_CTRL, DT_NODELABEL(clk_ipll)) +#define ADI_MAX32_SYSCLK_SRC ADI_MAX32_CLK_IPLL +#define ADI_MAX32_SYSCLK_FREQ (ADI_MAX32_CLK_IPLL_FREQ / ADI_MAX32_SYSCLK_PRESCALER) +#endif +#if DT_SAME_NODE(DT_GCR_CLOCKS_CTRL, DT_NODELABEL(clk_ebo)) +#define ADI_MAX32_SYSCLK_SRC ADI_MAX32_CLK_EBO +#define ADI_MAX32_SYSCLK_FREQ (ADI_MAX32_CLK_EBO_FREQ / ADI_MAX32_SYSCLK_PRESCALER) +#endif #ifndef ADI_MAX32_SYSCLK_SRC #define ADI_MAX32_SYSCLK_SRC ADI_MAX32_CLK_IPO @@ -93,6 +105,8 @@ struct max32_perclk { : (clk_src) == ADI_MAX32_PRPH_CLK_SRC_ISO ? ADI_MAX32_CLK_ISO_FREQ \ : (clk_src) == ADI_MAX32_PRPH_CLK_SRC_IBRO_DIV8 ? (ADI_MAX32_CLK_IBRO_FREQ / 8) \ : (clk_src) == ADI_MAX32_PRPH_CLK_SRC_EXTCLK ? ADI_MAX32_CLK_EXTCLK_FREQ \ + : (clk_src) == ADI_MAX32_PRPH_CLK_SRC_IPLL ? ADI_MAX32_CLK_IPLL_FREQ \ + : (clk_src) == ADI_MAX32_PRPH_CLK_SRC_EBO ? ADI_MAX32_CLK_EBO_FREQ \ : 0) #endif /* ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_ADI_MAX32_CLOCK_CONTROL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/clock_control_silabs.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/clock_control_silabs.h new file mode 100644 index 00000000..d608b1da --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/clock_control_silabs.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2024 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_SILABS_H_ +#define ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_SILABS_H_ + +#include + +#if defined(CONFIG_SOC_SERIES_EFR32MG21) +#include +#elif defined(CONFIG_SOC_SERIES_EFR32BG22) +#include +#elif defined(CONFIG_SOC_SERIES_EFR32MG24) +#include +#elif defined(CONFIG_SOC_SERIES_EFR32BG27) +#include +#endif + +struct silabs_clock_control_cmu_config { + uint32_t bus_clock; + uint8_t branch; +}; + +#define SILABS_DT_CLOCK_CFG(node_id) \ + { \ + .bus_clock = DT_CLOCKS_CELL(node_id, enable), \ + .branch = DT_CLOCKS_CELL(node_id, branch), \ + } + +#define SILABS_DT_INST_CLOCK_CFG(inst) \ + { \ + .bus_clock = DT_INST_CLOCKS_CELL(inst, enable), \ + .branch = DT_INST_CLOCKS_CELL(inst, branch), \ + } + +#endif /* ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_SILABS_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/esp32_clock_control.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/esp32_clock_control.h index aa83d78e..eb6bebc1 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/esp32_clock_control.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/esp32_clock_control.h @@ -13,6 +13,8 @@ #include #elif defined(CONFIG_SOC_SERIES_ESP32S3) #include +#elif defined(CONFIG_SOC_SERIES_ESP32C2) +#include #elif defined(CONFIG_SOC_SERIES_ESP32C3) #include #elif defined(CONFIG_SOC_SERIES_ESP32C6) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/nrf_clock_control.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/nrf_clock_control.h index 5ec40977..f9466770 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/nrf_clock_control.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/nrf_clock_control.h @@ -8,7 +8,9 @@ #define ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_NRF_CLOCK_CONTROL_H_ #include +#ifdef NRF_CLOCK #include +#endif #include #include @@ -16,6 +18,8 @@ extern "C" { #endif +#if defined(CONFIG_CLOCK_CONTROL_NRF) + /** @brief Clocks handled by the CLOCK peripheral. * * Enum shall be used as a sys argument in clock_control API. @@ -113,6 +117,13 @@ int z_nrf_clock_calibration_count(void); */ int z_nrf_clock_calibration_skips_count(void); + +/** @brief Returns information if LF clock calibration is in progress. + * + * @return True if calibration is in progress, false otherwise. + */ +bool z_nrf_clock_calibration_is_in_progress(void); + /** @brief Get onoff service for given clock subsystem. * * @param sys Subsystem. @@ -151,6 +162,187 @@ void z_nrf_clock_bt_ctlr_hf_request(void); */ void z_nrf_clock_bt_ctlr_hf_release(void); +#endif /* defined(CONFIG_CLOCK_CONTROL_NRF) */ + + +#if defined(CONFIG_CLOCK_CONTROL_NRF2) + +/* Specifies to use the maximum available frequency for a given clock. */ +#define NRF_CLOCK_CONTROL_FREQUENCY_MAX UINT32_MAX + +/* Specifies to use the maximum available accuracy for a given clock. */ +#define NRF_CLOCK_CONTROL_ACCURACY_MAX 1 +/* Specifies the required clock accuracy in parts-per-million. */ +#define NRF_CLOCK_CONTROL_ACCURACY_PPM(ppm) (ppm) + +/* Specifies that high precision of the clock is required. */ +#define NRF_CLOCK_CONTROL_PRECISION_HIGH 1 +/* Specifies that default precision of the clock is sufficient. */ +#define NRF_CLOCK_CONTROL_PRECISION_DEFAULT 0 + +struct nrf_clock_spec { + uint32_t frequency; + uint16_t accuracy : 15; + uint16_t precision : 1; +}; + +__subsystem struct nrf_clock_control_driver_api { + struct clock_control_driver_api std_api; + + int (*request)(const struct device *dev, + const struct nrf_clock_spec *spec, + struct onoff_client *cli); + int (*release)(const struct device *dev, + const struct nrf_clock_spec *spec); + int (*cancel_or_release)(const struct device *dev, + const struct nrf_clock_spec *spec, + struct onoff_client *cli); +}; + +/** + * @brief Request a reservation to use a given clock with specified attributes. + * + * The return value indicates the success or failure of an attempt to initiate + * an operation to request the clock be made available. If initiation of the + * operation succeeds, the result of the request operation is provided through + * the configured client notification method, possibly before this call returns. + * + * Note that the call to this function may succeed in a case where the actual + * request fails. Always check the operation completion result. + * + * @param dev pointer to the clock device structure. + * @param spec specification of minimal acceptable attributes, like frequency, + * accuracy, and precision, required for the clock. + * Value of 0 has the meaning of "default" and can be passed + * instead of a given attribute if there is no strict requirement + * in this regard. If there is no specific requirement for any of + * the attributes, this parameter can be NULL. + * @param cli pointer to client state providing instructions on synchronous + * expectations and how to notify the client when the request + * completes. Behavior is undefined if client passes a pointer + * object associated with an incomplete service operation. + * + * @retval non-negative the observed state of the on-off service associated + * with the clock machine at the time the request was + * processed (see onoff_request()), if successful. + * @retval -EIO if service has recorded an error. + * @retval -EINVAL if the function parameters are invalid or the clock + * attributes cannot be provided (e.g. the requested accuracy + * is unavailable). + * @retval -EAGAIN if the reference count would overflow. + */ +static inline +int nrf_clock_control_request(const struct device *dev, + const struct nrf_clock_spec *spec, + struct onoff_client *cli) +{ + const struct nrf_clock_control_driver_api *api = + (const struct nrf_clock_control_driver_api *)dev->api; + + return api->request(dev, spec, cli); +} + +/** + * @brief Synchronously request a reservation to use a given clock with specified attributes. + * + * Function can only be called from thread context as it blocks until request is completed. + * @see nrf_clock_control_request(). + * + * @param dev pointer to the clock device structure. + * @param spec See nrf_clock_control_request(). + * @param timeout Request timeout. + * + * @retval 0 if request is fulfilled. + * @retval -EWOULDBLOCK if request is called from the interrupt context. + * @retval negative See error codes returned by nrf_clock_control_request(). + */ +int nrf_clock_control_request_sync(const struct device *dev, + const struct nrf_clock_spec *spec, + k_timeout_t timeout); + +/** + * @brief Release a reserved use of a clock. + * + * @param dev pointer to the clock device structure. + * @param spec the same specification of the clock attributes that was used + * in the reservation request (so that the clock control module + * can keep track of what attributes are still requested). + * + * @retval non-negative the observed state of the on-off service associated + * with the clock machine at the time the request was + * processed (see onoff_release()), if successful. + * @retval -EIO if service has recorded an error. + * @retval -ENOTSUP if the service is not in a state that permits release. + */ +static inline +int nrf_clock_control_release(const struct device *dev, + const struct nrf_clock_spec *spec) +{ + const struct nrf_clock_control_driver_api *api = + (const struct nrf_clock_control_driver_api *)dev->api; + + return api->release(dev, spec); +} + +/** + * @brief Safely cancel a reservation request. + * + * It may be that a client has issued a reservation request but needs to + * shut down before the request has completed. This function attempts to + * cancel the request and issues a release if cancellation fails because + * the request was completed. This synchronously ensures that ownership + * data reverts to the client so is available for a future request. + * + * @param dev pointer to the clock device structure. + * @param spec the same specification of the clock attributes that was used + * in the reservation request. + * @param cli a pointer to the same client state that was provided + * when the operation to be cancelled was issued. + * + * @retval ONOFF_STATE_TO_ON if the cancellation occurred before the transition + * completed. + * @retval ONOFF_STATE_ON if the cancellation occurred after the transition + * completed. + * @retval -EINVAL if the parameters are invalid. + * @retval negative other errors produced by onoff_release(). + */ +static inline +int nrf_clock_control_cancel_or_release(const struct device *dev, + const struct nrf_clock_spec *spec, + struct onoff_client *cli) +{ + const struct nrf_clock_control_driver_api *api = + (const struct nrf_clock_control_driver_api *)dev->api; + + return api->cancel_or_release(dev, spec, cli); +} + +/** @brief Request the HFXO from Zero Latency Interrupt context. + * + * Function is optimized for use in Zero Latency Interrupt context. + * It does not give notification when the HFXO is ready, so each + * user must put the request early enough to make sure the HFXO + * ramp-up has finished on time. + * + * This function uses reference counting so the caller must ensure + * that every nrf_clock_control_hfxo_request() call has a matching + * nrf_clock_control_hfxo_release() call. + */ +void nrf_clock_control_hfxo_request(void); + +/** @brief Release the HFXO from Zero Latency Interrupt context. + * + * Function is optimized for use in Zero Latency Interrupt context. + * + * Calls to this function must be coupled with prior calls + * to nrf_clock_control_hfxo_request(), because it uses basic + * reference counting to make sure the HFXO is released when + * there are no more pending requests. + */ +void nrf_clock_control_hfxo_release(void); + +#endif /* defined(CONFIG_CLOCK_CONTROL_NRF2) */ + #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/renesas_ra_cgc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/renesas_ra_cgc.h index 940d5e34..1c29c9c8 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/renesas_ra_cgc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/renesas_ra_cgc.h @@ -9,13 +9,72 @@ #include #include +#define RA_CGC_PROP_HAS_STATUS_OKAY_OR(node_id, prop, default_value) \ + COND_CODE_1(DT_NODE_HAS_STATUS(node_id, okay), (DT_PROP(node_id, prop)), (default_value)) + +#define RA_CGC_CLK_SRC(node_id) \ + COND_CODE_1(DT_NODE_HAS_STATUS(node_id, okay), \ + (UTIL_CAT(BSP_CLOCKS_SOURCE_, DT_NODE_FULL_NAME_UPPER_TOKEN(node_id))), \ + (BSP_CLOCKS_CLOCK_DISABLED)) + +#define RA_CGC_CLK_DIV(clk, prop, default_value) \ + UTIL_CAT(RA_CGC_DIV_, DT_NODE_FULL_NAME_UPPER_TOKEN(clk)) \ + (RA_CGC_PROP_HAS_STATUS_OKAY_OR(clk, prop, default_value)) + +#define RA_CGC_DIV_BCLK(n) UTIL_CAT(BSP_CLOCKS_SYS_CLOCK_DIV_, n) +#define RA_CGC_DIV_CANFDCLK(n) UTIL_CAT(BSP_CLOCKS_CANFD_CLOCK_DIV_, n) +#define RA_CGC_DIV_CECCLK(n) UTIL_CAT(BSP_CLOCKS_CEC_CLOCK_DIV_, n) +#define RA_CGC_DIV_CLKOUT(n) UTIL_CAT(BSP_CLOCKS_CLKOUT_DIV_, n) +#define RA_CGC_DIV_CPUCLK(n) UTIL_CAT(BSP_CLOCKS_SYS_CLOCK_DIV_, n) +#define RA_CGC_DIV_FCLK(n) UTIL_CAT(BSP_CLOCKS_SYS_CLOCK_DIV_, n) +#define RA_CGC_DIV_I3CCLK(n) UTIL_CAT(BSP_CLOCKS_I3C_CLOCK_DIV_, n) +#define RA_CGC_DIV_ICLK(n) UTIL_CAT(BSP_CLOCKS_SYS_CLOCK_DIV_, n) +#define RA_CGC_DIV_LCDCLK(n) UTIL_CAT(BSP_CLOCKS_LCD_CLOCK_DIV_, n) +#define RA_CGC_DIV_OCTASPICLK(n) UTIL_CAT(BSP_CLOCKS_OCTA_CLOCK_DIV_, n) +#define RA_CGC_DIV_PCLKA(n) UTIL_CAT(BSP_CLOCKS_SYS_CLOCK_DIV_, n) +#define RA_CGC_DIV_PCLKB(n) UTIL_CAT(BSP_CLOCKS_SYS_CLOCK_DIV_, n) +#define RA_CGC_DIV_PCLKC(n) UTIL_CAT(BSP_CLOCKS_SYS_CLOCK_DIV_, n) +#define RA_CGC_DIV_PCLKD(n) UTIL_CAT(BSP_CLOCKS_SYS_CLOCK_DIV_, n) +#define RA_CGC_DIV_PCLKE(n) UTIL_CAT(BSP_CLOCKS_SYS_CLOCK_DIV_, n) +#define RA_CGC_DIV_PLL(n) UTIL_CAT(BSP_CLOCKS_PLL_DIV_, n) +#define RA_CGC_DIV_PLLP(n) UTIL_CAT(BSP_CLOCKS_PLL_DIV_, n) +#define RA_CGC_DIV_PLLQ(n) UTIL_CAT(BSP_CLOCKS_PLL_DIV_, n) +#define RA_CGC_DIV_PLLR(n) UTIL_CAT(BSP_CLOCKS_PLL_DIV_, n) +#define RA_CGC_DIV_PLL2(n) UTIL_CAT(BSP_CLOCKS_PLL_DIV_, n) +#define RA_CGC_DIV_PLL2P(n) UTIL_CAT(BSP_CLOCKS_PLL_DIV_, n) +#define RA_CGC_DIV_PLL2Q(n) UTIL_CAT(BSP_CLOCKS_PLL_DIV_, n) +#define RA_CGC_DIV_PLL2R(n) UTIL_CAT(BSP_CLOCKS_PLL_DIV_, n) +#define RA_CGC_DIV_SCICLK(n) UTIL_CAT(BSP_CLOCKS_SCI_CLOCK_DIV_, n) +#define RA_CGC_DIV_SPICLK(n) UTIL_CAT(BSP_CLOCKS_SPI_CLOCK_DIV_, n) +#define RA_CGC_DIV_U60CLK(n) UTIL_CAT(BSP_CLOCKS_USB60_CLOCK_DIV_, n) +#define RA_CGC_DIV_UCLK(n) UTIL_CAT(BSP_CLOCKS_USB_CLOCK_DIV_, n) + +#define BSP_CLOCKS_SOURCE_PLL BSP_CLOCKS_SOURCE_CLOCK_PLL +#define BSP_CLOCKS_SOURCE_PLLP BSP_CLOCKS_SOURCE_CLOCK_PLL +#define BSP_CLOCKS_SOURCE_PLLQ BSP_CLOCKS_SOURCE_CLOCK_PLL1Q +#define BSP_CLOCKS_SOURCE_PLLR BSP_CLOCKS_SOURCE_CLOCK_PLL1R + +#define BSP_CLOCKS_SOURCE_PLL2 BSP_CLOCKS_SOURCE_CLOCK_PLL2 +#define BSP_CLOCKS_SOURCE_PLL2P BSP_CLOCKS_SOURCE_CLOCK_PLL2 +#define BSP_CLOCKS_SOURCE_PLL2Q BSP_CLOCKS_SOURCE_CLOCK_PLL2Q +#define BSP_CLOCKS_SOURCE_PLL2R BSP_CLOCKS_SOURCE_CLOCK_PLL2R + +#define BSP_CLOCKS_CLKOUT_DIV_1 (0) +#define BSP_CLOCKS_CLKOUT_DIV_2 (1) +#define BSP_CLOCKS_CLKOUT_DIV_4 (2) +#define BSP_CLOCKS_CLKOUT_DIV_8 (3) +#define BSP_CLOCKS_CLKOUT_DIV_16 (4) +#define BSP_CLOCKS_CLKOUT_DIV_32 (5) +#define BSP_CLOCKS_CLKOUT_DIV_64 (6) +#define BSP_CLOCKS_CLKOUT_DIV_128 (7) + struct clock_control_ra_pclk_cfg { uint32_t clk_src; uint32_t clk_div; }; struct clock_control_ra_subsys_cfg { - volatile uint32_t *mstp; + uint32_t mstp; uint32_t stop_bit; }; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/stm32_clock_control.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/stm32_clock_control.h index a9ce911e..753aa0ea 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/stm32_clock_control.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/clock_control/stm32_clock_control.h @@ -17,12 +17,17 @@ #elif defined(CONFIG_SOC_SERIES_STM32F0X) #include #elif defined(CONFIG_SOC_SERIES_STM32F1X) +#if defined(CONFIG_SOC_STM32F10X_CONNECTIVITY_LINE_DEVICE) +#include +#else #include +#endif #elif defined(CONFIG_SOC_SERIES_STM32F3X) #include #elif defined(CONFIG_SOC_SERIES_STM32F2X) || \ defined(CONFIG_SOC_SERIES_STM32F4X) #include +#include #elif defined(CONFIG_SOC_SERIES_STM32F7X) #include #elif defined(CONFIG_SOC_SERIES_STM32G0X) @@ -38,6 +43,8 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32WBX) #include +#elif defined(CONFIG_SOC_SERIES_STM32WB0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32WLX) #include #elif defined(CONFIG_SOC_SERIES_STM32H5X) @@ -46,6 +53,8 @@ #include #elif defined(CONFIG_SOC_SERIES_STM32H7RSX) #include +#elif defined(CONFIG_SOC_SERIES_STM32U0X) +#include #elif defined(CONFIG_SOC_SERIES_STM32U5X) #include #elif defined(CONFIG_SOC_SERIES_STM32WBAX) @@ -142,6 +151,7 @@ DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(pll), st_stm32g0_pll_clock, okay) || \ DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(pll), st_stm32g4_pll_clock, okay) || \ DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(pll), st_stm32l4_pll_clock, okay) || \ + DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(pll), st_stm32u0_pll_clock, okay) || \ DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(pll), st_stm32u5_pll_clock, okay) || \ DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(pll), st_stm32wb_pll_clock, okay) || \ DT_NODE_HAS_COMPAT_STATUS(DT_NODELABEL(pll), st_stm32wba_pll_clock, okay) || \ @@ -174,6 +184,8 @@ #define STM32_PLLI2S_ENABLED 1 #define STM32_PLLI2S_M_DIVISOR DT_PROP(DT_NODELABEL(plli2s), div_m) #define STM32_PLLI2S_N_MULTIPLIER DT_PROP(DT_NODELABEL(plli2s), mul_n) +#define STM32_PLLI2S_Q_ENABLED DT_NODE_HAS_PROP(DT_NODELABEL(plli2s), div_q) +#define STM32_PLLI2S_Q_DIVISOR DT_PROP_OR(DT_NODELABEL(plli2s), div_q, 1) #define STM32_PLLI2S_R_ENABLED DT_NODE_HAS_PROP(DT_NODELABEL(plli2s), div_r) #define STM32_PLLI2S_R_DIVISOR DT_PROP_OR(DT_NODELABEL(plli2s), div_r, 1) #endif @@ -241,7 +253,7 @@ #endif /** PLL/PLL1 clock source */ -#if DT_NODE_HAS_STATUS(DT_NODELABEL(pll), okay) && \ +#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(pll)) && \ DT_NODE_HAS_PROP(DT_NODELABEL(pll), clocks) #define DT_PLL_CLOCKS_CTRL DT_CLOCKS_CTLR(DT_NODELABEL(pll)) #if DT_SAME_NODE(DT_PLL_CLOCKS_CTRL, DT_NODELABEL(clk_msi)) @@ -266,7 +278,7 @@ #endif /** PLL2 clock source */ -#if DT_NODE_HAS_STATUS(DT_NODELABEL(pll2), okay) && \ +#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(pll2)) && \ DT_NODE_HAS_PROP(DT_NODELABEL(pll2), clocks) #define DT_PLL2_CLOCKS_CTRL DT_CLOCKS_CTLR(DT_NODELABEL(pll2)) #if DT_SAME_NODE(DT_PLL2_CLOCKS_CTRL, DT_NODELABEL(clk_msis)) @@ -282,7 +294,7 @@ #endif /** PLL3 clock source */ -#if DT_NODE_HAS_STATUS(DT_NODELABEL(pll3), okay) && \ +#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(pll3)) && \ DT_NODE_HAS_PROP(DT_NODELABEL(pll3), clocks) #define DT_PLL3_CLOCKS_CTRL DT_CLOCKS_CTLR(DT_NODELABEL(pll3)) #if DT_SAME_NODE(DT_PLL3_CLOCKS_CTRL, DT_NODELABEL(clk_msis)) @@ -422,7 +434,8 @@ /** Driver structure definition */ struct stm32_pclken { - uint32_t bus; + uint32_t bus : STM32_CLOCK_DIV_SHIFT; + uint32_t div : (32 - STM32_CLOCK_DIV_SHIFT); uint32_t enr; }; @@ -431,7 +444,9 @@ struct stm32_pclken { #define STM32_CLOCK_INFO(clk_index, node_id) \ { \ .enr = DT_CLOCKS_CELL_BY_IDX(node_id, clk_index, bits), \ - .bus = DT_CLOCKS_CELL_BY_IDX(node_id, clk_index, bus) \ + .bus = DT_CLOCKS_CELL_BY_IDX(node_id, clk_index, bus) & 0xff, \ + .div = DT_CLOCKS_CELL_BY_IDX(node_id, clk_index, bus) >> \ + STM32_CLOCK_DIV_SHIFT, \ } #define STM32_DT_CLOCKS(node_id) \ { \ @@ -484,6 +499,38 @@ struct stm32_pclken { #define STM32_CLOCK_VAL_GET(clock) \ (((clock) >> STM32_CLOCK_VAL_SHIFT) & STM32_CLOCK_VAL_MASK) +/** + * @brief Obtain register field from MCO configuration. + * + * @param mco_cfgr MCO configuration bit field value. + */ +#define STM32_MCO_CFGR_REG_GET(mco_cfgr) \ + (((mco_cfgr) >> STM32_MCO_CFGR_REG_SHIFT) & STM32_MCO_CFGR_REG_MASK) + +/** + * @brief Obtain position field from MCO configuration. + * + * @param mco_cfgr MCO configuration bit field value. + */ +#define STM32_MCO_CFGR_SHIFT_GET(mco_cfgr) \ + (((mco_cfgr) >> STM32_MCO_CFGR_SHIFT_SHIFT) & STM32_MCO_CFGR_SHIFT_MASK) + +/** + * @brief Obtain mask field from MCO configuration. + * + * @param mco_cfgr MCO configuration bit field value. + */ +#define STM32_MCO_CFGR_MASK_GET(mco_cfgr) \ + (((mco_cfgr) >> STM32_MCO_CFGR_MASK_SHIFT) & STM32_MCO_CFGR_MASK_MASK) + +/** + * @brief Obtain value field from MCO configuration. + * + * @param mco_cfgr MCO configuration bit field value. + */ +#define STM32_MCO_CFGR_VAL_GET(mco_cfgr) \ + (((mco_cfgr) >> STM32_MCO_CFGR_VAL_SHIFT) & STM32_MCO_CFGR_VAL_MASK) + #if defined(STM32_HSE_CSS) /** * @brief Called if the HSE clock security system detects a clock fault. @@ -496,4 +543,25 @@ struct stm32_pclken { void stm32_hse_css_callback(void); #endif +#ifdef CONFIG_SOC_SERIES_STM32WB0X +/** + * @internal + * @brief Type definition for LSI frequency update callbacks + */ +typedef void (*lsi_update_cb_t)(uint32_t new_lsi_frequency); + +/** + * @internal + * @brief Registers a callback to invoke after each runtime measure and + * update of the LSI frequency is completed. + * + * @param cb Callback to invoke + * @return 0 Registration successful + * @return ENOMEM Too many callbacks registered + * + * @note Callbacks are NEVER invoked if runtime LSI measurement is disabled + */ +int stm32wb0_register_lsi_update_callback(lsi_update_cb_t cb); +#endif /* CONFIG_SOC_SERIES_STM32WB0X */ + #endif /* ZEPHYR_INCLUDE_DRIVERS_CLOCK_CONTROL_STM32_CLOCK_CONTROL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator.h new file mode 100644 index 00000000..1a6609ca --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator.h @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_COMPARATOR_H_ +#define ZEPHYR_INCLUDE_DRIVERS_COMPARATOR_H_ + +/** + * @brief Comparator Interface + * @defgroup comparator_interface Comparator Interface + * @since 4.0 + * @version 0.1.0 + * @ingroup io_interfaces + * @{ + */ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** Comparator trigger enumerations */ +enum comparator_trigger { + /** No trigger */ + COMPARATOR_TRIGGER_NONE = 0, + /** Trigger on rising edge of comparator output */ + COMPARATOR_TRIGGER_RISING_EDGE, + /** Trigger on falling edge of comparator output */ + COMPARATOR_TRIGGER_FALLING_EDGE, + /** Trigger on both edges of comparator output */ + COMPARATOR_TRIGGER_BOTH_EDGES +}; + +/** Comparator callback template */ +typedef void (*comparator_callback_t)(const struct device *dev, void *user_data); + +/** @cond INTERNAL_HIDDEN */ + +typedef int (*comparator_api_get_output)(const struct device *dev); +typedef int (*comparator_api_set_trigger)(const struct device *dev, + enum comparator_trigger trigger); +typedef int (*comparator_api_set_trigger_callback)(const struct device *dev, + comparator_callback_t callback, + void *user_data); +typedef int (*comparator_api_trigger_is_pending)(const struct device *dev); + +__subsystem struct comparator_driver_api { + comparator_api_get_output get_output; + comparator_api_set_trigger set_trigger; + comparator_api_set_trigger_callback set_trigger_callback; + comparator_api_trigger_is_pending trigger_is_pending; +}; + +/** @endcond */ + +/** + * @brief Get comparator's output state + * + * @param dev Comparator device + * + * @retval 1 Output state is high + * @retval 0 Output state is low + * @retval -errno code Failure + */ +__syscall int comparator_get_output(const struct device *dev); + +static inline int z_impl_comparator_get_output(const struct device *dev) +{ + return DEVICE_API_GET(comparator, dev)->get_output(dev); +} + +/** + * @brief Set comparator's trigger + * + * @param dev Comparator device + * @param trigger Trigger for signal and callback + * + * @retval 0 Successful + * @retval -errno code Failure + */ +__syscall int comparator_set_trigger(const struct device *dev, + enum comparator_trigger trigger); + +static inline int z_impl_comparator_set_trigger(const struct device *dev, + enum comparator_trigger trigger) +{ + return DEVICE_API_GET(comparator, dev)->set_trigger(dev, trigger); +} + +/** + * @brief Set comparator's trigger callback + * + * @param dev Comparator device + * @param callback Trigger callback + * @param user_data User data passed to callback + * + * @retval 0 Successful + * @retval -errno code Failure + * + * @note Set callback to NULL to disable callback + * @note Callback is called immediately if trigger is pending + */ +static inline int comparator_set_trigger_callback(const struct device *dev, + comparator_callback_t callback, + void *user_data) +{ + return DEVICE_API_GET(comparator, dev)->set_trigger_callback(dev, callback, user_data); +} + +/** + * @brief Check if comparator's trigger is pending and clear it + * + * @param dev Comparator device + * + * @retval 1 Trigger was pending + * @retval 0 Trigger was cleared + * @retval -errno code Failure + */ +__syscall int comparator_trigger_is_pending(const struct device *dev); + +static inline int z_impl_comparator_trigger_is_pending(const struct device *dev) +{ + return DEVICE_API_GET(comparator, dev)->trigger_is_pending(dev); +} + +#ifdef __cplusplus +} +#endif + +/** @} */ + +#include + +#endif /* ZEPHYR_INCLUDE_DRIVERS_COMPARATOR_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/fake_comp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/fake_comp.h new file mode 100644 index 00000000..c24858c1 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/fake_comp.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_COMPARATOR_FAKE_H_ +#define ZEPHYR_INCLUDE_DRIVERS_COMPARATOR_FAKE_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +DECLARE_FAKE_VALUE_FUNC(int, + comp_fake_comp_get_output, + const struct device *); + +DECLARE_FAKE_VALUE_FUNC(int, + comp_fake_comp_set_trigger, + const struct device *, + enum comparator_trigger); + +DECLARE_FAKE_VALUE_FUNC(int, + comp_fake_comp_set_trigger_callback, + const struct device *, + comparator_callback_t, + void *); + +DECLARE_FAKE_VALUE_FUNC(int, + comp_fake_comp_trigger_is_pending, + const struct device *); + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DRIVERS_COMPARATOR_FAKE_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/mcux_acmp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/mcux_acmp.h new file mode 100644 index 00000000..3d06644f --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/mcux_acmp.h @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_COMP_MCUX_ACMP_H_ +#define ZEPHYR_INCLUDE_DRIVERS_COMP_MCUX_ACMP_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +enum comp_mcux_acmp_offset_mode { + COMP_MCUX_ACMP_OFFSET_MODE_LEVEL0 = 0, + COMP_MCUX_ACMP_OFFSET_MODE_LEVEL1, +}; + +enum comp_mcux_acmp_hysteresis_mode { + COMP_MCUX_ACMP_HYSTERESIS_MODE_LEVEL0 = 0, + COMP_MCUX_ACMP_HYSTERESIS_MODE_LEVEL1, + COMP_MCUX_ACMP_HYSTERESIS_MODE_LEVEL2, + COMP_MCUX_ACMP_HYSTERESIS_MODE_LEVEL3, +}; + +struct comp_mcux_acmp_mode_config { + enum comp_mcux_acmp_offset_mode offset_mode; + enum comp_mcux_acmp_hysteresis_mode hysteresis_mode; + bool enable_high_speed_mode; + bool invert_output; + bool use_unfiltered_output; + bool enable_pin_output; +}; + +enum comp_mcux_acmp_mux_input { + COMP_MCUX_ACMP_MUX_INPUT_IN0 = 0, + COMP_MCUX_ACMP_MUX_INPUT_IN1, + COMP_MCUX_ACMP_MUX_INPUT_IN2, + COMP_MCUX_ACMP_MUX_INPUT_IN3, + COMP_MCUX_ACMP_MUX_INPUT_IN4, + COMP_MCUX_ACMP_MUX_INPUT_IN5, + COMP_MCUX_ACMP_MUX_INPUT_IN6, + COMP_MCUX_ACMP_MUX_INPUT_IN7, +}; + +enum comp_mcux_acmp_port_input { + COMP_MCUX_ACMP_PORT_INPUT_DAC = 0, + COMP_MCUX_ACMP_PORT_INPUT_MUX, +}; + +struct comp_mcux_acmp_input_config { + enum comp_mcux_acmp_mux_input positive_mux_input; + enum comp_mcux_acmp_mux_input negative_mux_input; + enum comp_mcux_acmp_port_input positive_port_input; + enum comp_mcux_acmp_port_input negative_port_input; +}; + +struct comp_mcux_acmp_filter_config { + bool enable_sample; + uint8_t filter_count; + uint8_t filter_period; +}; + +enum comp_mcux_acmp_dac_vref_source { + COMP_MCUX_ACMP_DAC_VREF_SOURCE_VIN1 = 0, + COMP_MCUX_ACMP_DAC_VREF_SOURCE_VIN2, +}; + +struct comp_mcux_acmp_dac_config { + enum comp_mcux_acmp_dac_vref_source vref_source; + uint8_t value; + bool enable_output; + bool enable_high_speed_mode; +}; + +enum comp_mcux_acmp_dm_clock { + COMP_MCUX_ACMP_DM_CLOCK_SLOW = 0, + COMP_MCUX_ACMP_DM_CLOCK_FAST, +}; + +enum comp_mcux_acmp_dm_sample_time { + COMP_MCUX_ACMP_DM_SAMPLE_TIME_T1 = 0, + COMP_MCUX_ACMP_DM_SAMPLE_TIME_T2, + COMP_MCUX_ACMP_DM_SAMPLE_TIME_T4, + COMP_MCUX_ACMP_DM_SAMPLE_TIME_T8, + COMP_MCUX_ACMP_DM_SAMPLE_TIME_T16, + COMP_MCUX_ACMP_DM_SAMPLE_TIME_T32, + COMP_MCUX_ACMP_DM_SAMPLE_TIME_T64, + COMP_MCUX_ACMP_DM_SAMPLE_TIME_T256, +}; + +enum comp_mcux_acmp_dm_phase_time { + COMP_MCUX_ACMP_DM_PHASE_TIME_ALT0 = 0, + COMP_MCUX_ACMP_DM_PHASE_TIME_ALT1, + COMP_MCUX_ACMP_DM_PHASE_TIME_ALT2, + COMP_MCUX_ACMP_DM_PHASE_TIME_ALT3, + COMP_MCUX_ACMP_DM_PHASE_TIME_ALT4, + COMP_MCUX_ACMP_DM_PHASE_TIME_ALT5, + COMP_MCUX_ACMP_DM_PHASE_TIME_ALT6, + COMP_MCUX_ACMP_DM_PHASE_TIME_ALT7, +}; + +struct comp_mcux_acmp_dm_config { + bool enable_positive_channel; + bool enable_negative_channel; + bool enable_resistor_divider; + enum comp_mcux_acmp_dm_clock clock_source; + enum comp_mcux_acmp_dm_sample_time sample_time; + enum comp_mcux_acmp_dm_phase_time phase1_time; + enum comp_mcux_acmp_dm_phase_time phase2_time; +}; + +int comp_mcux_acmp_set_mode_config(const struct device *dev, + const struct comp_mcux_acmp_mode_config *config); + +int comp_mcux_acmp_set_input_config(const struct device *dev, + const struct comp_mcux_acmp_input_config *config); + +int comp_mcux_acmp_set_filter_config(const struct device *dev, + const struct comp_mcux_acmp_filter_config *config); + +int comp_mcux_acmp_set_dac_config(const struct device *dev, + const struct comp_mcux_acmp_dac_config *config); + +int comp_mcux_acmp_set_dm_config(const struct device *dev, + const struct comp_mcux_acmp_dm_config *config); + +int comp_mcux_acmp_set_window_mode(const struct device *dev, bool enable); + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DRIVERS_COMP_MCUX_ACMP_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/nrf_comp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/nrf_comp.h new file mode 100644 index 00000000..59e1cbbb --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/nrf_comp.h @@ -0,0 +1,164 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_COMP_NRF_COMP_H_ +#define ZEPHYR_INCLUDE_DRIVERS_COMP_NRF_COMP_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** Positive input selection */ +enum comp_nrf_comp_psel { + /** AIN0 external input */ + COMP_NRF_COMP_PSEL_AIN0, + /** AIN1 external input */ + COMP_NRF_COMP_PSEL_AIN1, + /** AIN2 external input */ + COMP_NRF_COMP_PSEL_AIN2, + /** AIN3 external input */ + COMP_NRF_COMP_PSEL_AIN3, + /** AIN4 external input */ + COMP_NRF_COMP_PSEL_AIN4, + /** AIN5 external input */ + COMP_NRF_COMP_PSEL_AIN5, + /** AIN6 external input */ + COMP_NRF_COMP_PSEL_AIN6, + /** AIN7 external input */ + COMP_NRF_COMP_PSEL_AIN7, + /** VDD / 2 */ + COMP_NRF_COMP_PSEL_VDD_DIV2, + /** VDDH / 5 */ + COMP_NRF_COMP_PSEL_VDDH_DIV5, +}; + +/** External reference selection */ +enum comp_nrf_comp_extrefsel { + /** AIN0 external input */ + COMP_NRF_COMP_EXTREFSEL_AIN0, + /** AIN1 external input */ + COMP_NRF_COMP_EXTREFSEL_AIN1, + /** AIN2 external input */ + COMP_NRF_COMP_EXTREFSEL_AIN2, + /** AIN3 external input */ + COMP_NRF_COMP_EXTREFSEL_AIN3, + /** AIN4 external input */ + COMP_NRF_COMP_EXTREFSEL_AIN4, + /** AIN5 external input */ + COMP_NRF_COMP_EXTREFSEL_AIN5, + /** AIN6 external input */ + COMP_NRF_COMP_EXTREFSEL_AIN6, + /** AIN7 external input */ + COMP_NRF_COMP_EXTREFSEL_AIN7, +}; + +/** Reference selection */ +enum comp_nrf_comp_refsel { + /** Internal 1.2V reference */ + COMP_NRF_COMP_REFSEL_INT_1V2, + /** Internal 1.8V reference */ + COMP_NRF_COMP_REFSEL_INT_1V8, + /** Internal 2.4V reference */ + COMP_NRF_COMP_REFSEL_INT_2V4, + /** AVDD 1.8V reference */ + COMP_NRF_COMP_REFSEL_AVDDAO1V8, + /** VDD reference */ + COMP_NRF_COMP_REFSEL_VDD, + /** Use external analog reference */ + COMP_NRF_COMP_REFSEL_AREF, +}; + +/** Speed mode selection */ +enum comp_nrf_comp_sp_mode { + /** Low-power mode */ + COMP_NRF_COMP_SP_MODE_LOW, + /** Normal mode */ + COMP_NRF_COMP_SP_MODE_NORMAL, + /** High-speed mode */ + COMP_NRF_COMP_SP_MODE_HIGH, +}; + +/** Current source configuration */ +enum comp_nrf_comp_isource { + /** Current source disabled */ + COMP_NRF_COMP_ISOURCE_DISABLED, + /** 2.5uA current source enabled */ + COMP_NRF_COMP_ISOURCE_2UA5, + /** 5uA current source enabled */ + COMP_NRF_COMP_ISOURCE_5UA, + /** 10uA current source enabled */ + COMP_NRF_COMP_ISOURCE_10UA, +}; + +/** + * @brief Single-ended mode configuration structure + * + * @note extrefsel is only used if refsel == COMP_NRF_COMP_REFSEL_AREF + * @note Hysteresis down in volts = ((th_down + 1) / 64) * ref + * @note Hysteresis up in volts = ((th_up + 1) / 64) * ref + */ +struct comp_nrf_comp_se_config { + /** Positive input selection */ + enum comp_nrf_comp_psel psel; + /** Speed mode selection */ + enum comp_nrf_comp_sp_mode sp_mode; + /** Current source configuration */ + enum comp_nrf_comp_isource isource; + /** External reference selection */ + enum comp_nrf_comp_extrefsel extrefsel; + /** Reference selection */ + enum comp_nrf_comp_refsel refsel; + /** Hysteresis down threshold configuration */ + uint8_t th_down; + /** Hysteresis up threshold configuration */ + uint8_t th_up; +}; + +/** + * @brief Configure comparator in single-ended mode + * + * @param dev Comparator device instance + * @param config Single-ended mode configuration + * + * @retval 0 if successful + * @retval negative errno-code otherwise + */ +int comp_nrf_comp_configure_se(const struct device *dev, + const struct comp_nrf_comp_se_config *config); + +/** Differential mode configuration structure */ +struct comp_nrf_comp_diff_config { + /** Positive input selection */ + enum comp_nrf_comp_psel psel; + /** Speed mode selection */ + enum comp_nrf_comp_sp_mode sp_mode; + /** Current source configuration */ + enum comp_nrf_comp_isource isource; + /** Negative input selection */ + enum comp_nrf_comp_extrefsel extrefsel; + /** Hysteresis configuration */ + bool enable_hyst; +}; + +/** + * @brief Configure comparator in differential mode + * + * @param dev Comparator device instance + * @param config Differential mode configuration + * + * @retval 0 if successful + * @retval negative errno-code otherwise + */ +int comp_nrf_comp_configure_diff(const struct device *dev, + const struct comp_nrf_comp_diff_config *config); + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DRIVERS_COMP_NRF_COMP_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/nrf_lpcomp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/nrf_lpcomp.h new file mode 100644 index 00000000..e1f2343a --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/comparator/nrf_lpcomp.h @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_COMP_NRF_LPCOMP_H_ +#define ZEPHYR_INCLUDE_DRIVERS_COMP_NRF_LPCOMP_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** Positive input selection */ +enum comp_nrf_lpcomp_psel { + /** AIN0 external input */ + COMP_NRF_LPCOMP_PSEL_AIN0, + /** AIN1 external input */ + COMP_NRF_LPCOMP_PSEL_AIN1, + /** AIN2 external input */ + COMP_NRF_LPCOMP_PSEL_AIN2, + /** AIN3 external input */ + COMP_NRF_LPCOMP_PSEL_AIN3, + /** AIN4 external input */ + COMP_NRF_LPCOMP_PSEL_AIN4, + /** AIN5 external input */ + COMP_NRF_LPCOMP_PSEL_AIN5, + /** AIN6 external input */ + COMP_NRF_LPCOMP_PSEL_AIN6, + /** AIN7 external input */ + COMP_NRF_LPCOMP_PSEL_AIN7, +}; + +/** External reference selection */ +enum comp_nrf_lpcomp_extrefsel { + /** AIN0 external input */ + COMP_NRF_LPCOMP_EXTREFSEL_AIN0, + /** AIN1 external input */ + COMP_NRF_LPCOMP_EXTREFSEL_AIN1, +}; + +/** Reference selection */ +enum comp_nrf_lpcomp_refsel { + /** Use (VDD * (1/8)) as reference */ + COMP_NRF_LPCOMP_REFSEL_VDD_1_8, + /** Use (VDD * (2/8)) as reference */ + COMP_NRF_LPCOMP_REFSEL_VDD_2_8, + /** Use (VDD * (3/8)) as reference */ + COMP_NRF_LPCOMP_REFSEL_VDD_3_8, + /** Use (VDD * (4/8)) as reference */ + COMP_NRF_LPCOMP_REFSEL_VDD_4_8, + /** Use (VDD * (5/8)) as reference */ + COMP_NRF_LPCOMP_REFSEL_VDD_5_8, + /** Use (VDD * (6/8)) as reference */ + COMP_NRF_LPCOMP_REFSEL_VDD_6_8, + /** Use (VDD * (7/8)) as reference */ + COMP_NRF_LPCOMP_REFSEL_VDD_7_8, + /** Use (VDD * (1/16)) as reference */ + COMP_NRF_LPCOMP_REFSEL_VDD_1_16, + /** Use (VDD * (3/16)) as reference */ + COMP_NRF_LPCOMP_REFSEL_VDD_3_16, + /** Use (VDD * (5/16)) as reference */ + COMP_NRF_LPCOMP_REFSEL_VDD_5_16, + /** Use (VDD * (7/16)) as reference */ + COMP_NRF_LPCOMP_REFSEL_VDD_7_16, + /** Use (VDD * (9/16)) as reference */ + COMP_NRF_LPCOMP_REFSEL_VDD_9_16, + /** Use (VDD * (11/16)) as reference */ + COMP_NRF_LPCOMP_REFSEL_VDD_11_16, + /** Use (VDD * (13/16)) as reference */ + COMP_NRF_LPCOMP_REFSEL_VDD_13_16, + /** Use (VDD * (15/16)) as reference */ + COMP_NRF_LPCOMP_REFSEL_VDD_15_16, + /** Use external analog reference */ + COMP_NRF_LPCOMP_REFSEL_AREF, +}; + +/** + * @brief Configuration structure + * + * @note extrefsel is only used if refsel == COMP_NRF_LPCOMP_REFSEL_AREF + */ +struct comp_nrf_lpcomp_config { + /** Positive input selection */ + enum comp_nrf_lpcomp_psel psel; + /** External reference selection */ + enum comp_nrf_lpcomp_extrefsel extrefsel; + /** Reference selection */ + enum comp_nrf_lpcomp_refsel refsel; + /** Hysteresis configuration */ + bool enable_hyst; +}; + +/** + * @brief Configure comparator + * + * @param dev Comparator device instance + * @param config Configuration + * + * @retval 0 if successful + * @retval negative errno-code otherwise + */ +int comp_nrf_lpcomp_configure(const struct device *dev, + const struct comp_nrf_lpcomp_config *config); + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DRIVERS_COMP_NRF_LPCOMP_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dac.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dac.h index 8e384320..fea4e329 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dac.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dac.h @@ -27,6 +27,12 @@ extern "C" { * @{ */ +/** + * @brief Broadcast channel identifier for DACs that support it. + * @note Only for use in dac_write_value(). + */ +#define DAC_CHANNEL_BROADCAST 0xFF + /** * @brief Structure for specifying the configuration of a DAC channel. */ @@ -39,7 +45,12 @@ struct dac_channel_cfg { * This is relevant for instance if the output is directly connected to the load, * without an amplifierin between. The actual details on this are hardware dependent. */ - bool buffered; + bool buffered: 1; + /** Enable internal output path for this channel. This is relevant for channels that + * support directly connecting to on-chip peripherals via internal paths. The actual + * details on this are hardware dependent. + */ + bool internal: 1; }; /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dai.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dai.h index 3e6dbfa4..7af4157d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dai.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dai.h @@ -330,6 +330,8 @@ __subsystem struct dai_driver_api { int (*ts_stop)(const struct device *dev, struct dai_ts_cfg *cfg); int (*ts_get)(const struct device *dev, struct dai_ts_cfg *cfg, struct dai_ts_data *tsd); + int (*config_update)(const struct device *dev, const void *bespoke_cfg, + size_t size); }; /** @@ -475,8 +477,9 @@ static inline int dai_ts_config(const struct device *dev, struct dai_ts_cfg *cfg { const struct dai_driver_api *api = (const struct dai_driver_api *)dev->api; - if (!api->ts_config) + if (!api->ts_config) { return -EINVAL; + } return api->ts_config(dev, cfg); } @@ -494,8 +497,9 @@ static inline int dai_ts_start(const struct device *dev, struct dai_ts_cfg *cfg) { const struct dai_driver_api *api = (const struct dai_driver_api *)dev->api; - if (!api->ts_start) + if (!api->ts_start) { return -EINVAL; + } return api->ts_start(dev, cfg); } @@ -513,8 +517,9 @@ static inline int dai_ts_stop(const struct device *dev, struct dai_ts_cfg *cfg) { const struct dai_driver_api *api = (const struct dai_driver_api *)dev->api; - if (!api->ts_stop) + if (!api->ts_stop) { return -EINVAL; + } return api->ts_stop(dev, cfg); } @@ -534,12 +539,45 @@ static inline int dai_ts_get(const struct device *dev, struct dai_ts_cfg *cfg, { const struct dai_driver_api *api = (const struct dai_driver_api *)dev->api; - if (!api->ts_get) + if (!api->ts_get) { return -EINVAL; + } return api->ts_get(dev, cfg, tsd); } +/** + * @brief Update DAI configuration at runtime. + * + * This function updates the configuration of a DAI interface at runtime. + * It allows setting bespoke configuration parameters that are specific to + * the DAI implementation, enabling updates outside of the regular flow with + * the full configuration blob. The details of the bespoke configuration are + * specific to each DAI implementation. This function should only be called + * when the DAI is in the READY state, ensuring that the configuration updates + * are applied before data transmission or reception begins. + * + * @param dev Pointer to the device structure for the driver instance. + * @param bespoke_cfg Pointer to the buffer containing bespoke configuration parameters. + * @param size Size of the bespoke_cfg buffer in bytes. + * + * @retval 0 If successful. + * @retval -ENOSYS If the configuration update operation is not implemented. + * @retval Negative errno code if failure. + */ +static inline int dai_config_update(const struct device *dev, + const void *bespoke_cfg, + size_t size) +{ + const struct dai_driver_api *api = (const struct dai_driver_api *)dev->api; + + if (!api->config_update) { + return -ENOSYS; + } + + return api->config_update(dev, bespoke_cfg, size); +} + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/display.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/display.h index 067d441d..8fd26978 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/display.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/display.h @@ -127,6 +127,8 @@ struct display_buffer_descriptor { uint16_t height; /** Number of pixels between consecutive rows in the data buffer */ uint16_t pitch; + /** Indicates that this is not the last write buffer of the frame */ + bool frame_incomplete; }; /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma.h index b7853ed8..5237f78b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma.h @@ -352,6 +352,20 @@ typedef int (*dma_api_get_attribute)(const struct device *dev, uint32_t type, ui typedef bool (*dma_api_chan_filter)(const struct device *dev, int channel, void *filter_param); +/** + * @typedef dma_chan_release + * @brief channel release function call + * + * used to release channel resources "allocated" during the + * request phase. These resources can refer to enabled PDs, IRQs + * etc... + * + * @param dev Pointer to the DMA device instance + * @param channel channel id to use + */ +typedef void (*dma_api_chan_release)(const struct device *dev, + uint32_t channel); + __subsystem struct dma_driver_api { dma_api_config config; dma_api_reload reload; @@ -362,6 +376,7 @@ __subsystem struct dma_driver_api { dma_api_get_status get_status; dma_api_get_attribute get_attribute; dma_api_chan_filter chan_filter; + dma_api_chan_release chan_release; }; /** * @endcond @@ -538,7 +553,9 @@ static inline int z_impl_dma_resume(const struct device *dev, uint32_t channel) * request DMA channel resources * return -EINVAL if there is no valid channel available. * - * @funcprops \isr_ok + * @note It is safe to use this function in contexts where blocking + * is not allowed, e.g. ISR, provided the implementation of the filter + * function does not block. * * @param dev Pointer to the device structure for the driver instance. * @param filter_param filter function parameter @@ -583,7 +600,9 @@ static inline int z_impl_dma_request_channel(const struct device *dev, * * release DMA channel resources * - * @funcprops \isr_ok + * @note It is safe to use this function in contexts where blocking + * is not allowed, e.g. ISR, provided the implementation of the release + * function does not block. * * @param dev Pointer to the device structure for the driver instance. * @param channel channel number @@ -595,6 +614,8 @@ __syscall void dma_release_channel(const struct device *dev, static inline void z_impl_dma_release_channel(const struct device *dev, uint32_t channel) { + const struct dma_driver_api *api = + (const struct dma_driver_api *)dev->api; struct dma_context *dma_ctx = (struct dma_context *)dev->data; if (dma_ctx->magic != DMA_MAGIC) { @@ -602,6 +623,10 @@ static inline void z_impl_dma_release_channel(const struct device *dev, } if ((int)channel < dma_ctx->dma_channels) { + if (api->chan_release) { + api->chan_release(dev, channel); + } + atomic_clear_bit(dma_ctx->atomic, channel); } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma/dma_mcux_pxp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma/dma_mcux_pxp.h index 7cddab2c..47082a94 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma/dma_mcux_pxp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma/dma_mcux_pxp.h @@ -1,5 +1,5 @@ /* - * Copyright 2023 NXP + * Copyright 2023-2024 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -38,4 +38,20 @@ #define DMA_MCUX_PXP_FMT_RGB888 1 #define DMA_MCUX_PXP_FMT_ARGB8888 2 +#define DMA_MCUX_PXP_FLIP_MASK 0x3 +#define DMA_MCUX_PXP_FLIP_SHIFT 0x0 + +/* + * In order to configure the PXP to flip, the user should + * supply a flip setting as the DMA linked_channel parameter, like so: + * linked_channel |= DMA_MCUX_PXP_FLIP(DMA_MCUX_PXP_FLIP_HORIZONTAL) + */ + +#define DMA_MCUX_PXP_FLIP(x) ((x << DMA_MCUX_PXP_FLIP_SHIFT) & DMA_MCUX_PXP_FLIP_MASK) + +#define DMA_MCUX_PXP_FLIP_DISABLE 0 +#define DMA_MCUX_PXP_FLIP_HORIZONTAL 1 +#define DMA_MCUX_PXP_FLIP_VERTICAL 2 +#define DMA_MCUX_PXP_FLIP_BOTH 3 + #endif /* ZEPHYR_INCLUDE_DRIVERS_DMA_MCUX_PXP_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma/dma_mcux_smartdma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma/dma_mcux_smartdma.h index 0e09d348..5171a549 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma/dma_mcux_smartdma.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma/dma_mcux_smartdma.h @@ -7,34 +7,6 @@ #ifndef ZEPHYR_INCLUDE_DRIVERS_DMA_MCUX_SMARTDMA_H_ #define ZEPHYR_INCLUDE_DRIVERS_DMA_MCUX_SMARTDMA_H_ -/* Write RGB565 data to MIPI DSI via DMA. */ -#define DMA_SMARTDMA_MIPI_RGB565_DMA 0 -/* Write RGB888 data to MIPI DSI via DMA */ -#define DMA_SMARTDMA_MIPI_RGB888_DMA 1 -/* Write RGB565 data to MIPI DSI via DMA. Rotate output data by 180 degrees */ -#define DMA_SMARTDMA_MIPI_RGB565_180 2 -/* Write RGB888 data to MIPI DSI via DMA. Rotate output data by 180 degrees */ -#define DMA_SMARTDMA_MIPI_RGB888_180 3 - -/* Write RGB565 data to MIPI DSI via DMA. Swap data endianness, so that - * little endian RGB565 data will be written big endian style. - */ -#define DMA_SMARTDMA_MIPI_RGB565_DMA_SWAP 4 -/* Write RGB888 data to MIPI DSI via DMA. Swap data endianness, so that - * little endian RGB888 data will be written big endian style. - */ -#define DMA_SMARTDMA_MIPI_RGB888_DMA_SWAP 5 -/* Write RGB565 data to MIPI DSI via DMA. Rotate output data by 180 degrees, - * and swap data endianness - */ -#define DMA_SMARTDMA_MIPI_RGB565_180_SWAP 6 -/* Write RGB888 data to MIPI DSI via DMA. Rotate output data by 180 degrees, - * and swap data endianness - */ -#define DMA_SMARTDMA_MIPI_RGB888_180_SWAP 7 - - - /** * @brief install SMARTDMA firmware * @@ -48,6 +20,4 @@ void dma_smartdma_install_fw(const struct device *dev, uint8_t *firmware, uint32_t len); -#define GD32_DMA_FEATURES_FIFO_THRESHOLD(threshold) (threshold & 0x3) - #endif /* ZEPHYR_INCLUDE_DRIVERS_DMA_MCUX_SMARTDMA_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma/dma_smartbond.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma/dma_smartbond.h index c1544880..fba98aae 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma/dma_smartbond.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/dma/dma_smartbond.h @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef DMA_SMARTBOND_H_ -#define DMA_SMARTBOND_H_ +#ifndef ZEPHYR_INCLUDE_DRIVERS_DMA_DMA_SMARTBOND_H_ +#define ZEPHYR_INCLUDE_DRIVERS_DMA_DMA_SMARTBOND_H_ /** * @brief Vendror-specific DMA peripheral triggering sources. @@ -30,4 +30,4 @@ enum dma_smartbond_trig_mux { DMA_SMARTBOND_TRIG_MUX_NONE = 0xF }; -#endif /* DMA_SMARTBOND_H_ */ +#endif /* ZEPHYR_INCLUDE_DRIVERS_DMA_DMA_SMARTBOND_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/emul.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/emul.h index a41b48b8..a2067957 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/emul.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/emul.h @@ -28,6 +28,7 @@ struct emul; #include #include #include +#include #include /** @@ -38,6 +39,7 @@ enum emul_bus_type { EMUL_BUS_TYPE_ESPI, EMUL_BUS_TYPE_SPI, EMUL_BUS_TYPE_MSPI, + EMUL_BUS_TYPE_UART, EMUL_BUS_TYPE_NONE, }; @@ -94,6 +96,7 @@ struct emul { struct espi_emul *espi; struct spi_emul *spi; struct mspi_emul *mspi; + struct uart_emul *uart; struct no_bus_emul *none; } bus; /** Address of the API structure exposed by the emulator instance */ @@ -111,15 +114,17 @@ struct emul { * the bus its on. Intended for use in other internal macros when declaring {bus}_emul * structs in peripheral emulators. */ -#define Z_EMUL_REG_BUS_IDENTIFIER(_dev_node_id) (_CONCAT(_CONCAT(__emulreg_, _dev_node_id), _bus)) +#define Z_EMUL_REG_BUS_IDENTIFIER(_dev_node_id) _CONCAT(_CONCAT(__emulreg_, _dev_node_id), _bus) /* Conditionally places text based on what bus _dev_node_id is on. */ -#define Z_EMUL_BUS(_dev_node_id, _i2c, _espi, _spi, _mspi, _none) \ +#define Z_EMUL_BUS(_dev_node_id, _i2c, _espi, _spi, _mspi, _uart, _none) \ COND_CODE_1(DT_ON_BUS(_dev_node_id, i2c), (_i2c), \ - (COND_CODE_1(DT_ON_BUS(_dev_node_id, espi), (_espi), \ - (COND_CODE_1(DT_ON_BUS(_dev_node_id, spi), (_spi), \ - (COND_CODE_1(DT_ON_BUS(_dev_node_id, mspi), (_mspi), \ - (_none)))))))) + (COND_CODE_1(DT_ON_BUS(_dev_node_id, espi), (_espi), \ + (COND_CODE_1(DT_ON_BUS(_dev_node_id, spi), (_spi), \ + (COND_CODE_1(DT_ON_BUS(_dev_node_id, mspi), (_mspi), \ + (COND_CODE_1(DT_ON_BUS(_dev_node_id, uart), (_uart), \ + (_none)))))))))) + /** * @brief Define a new emulator * @@ -135,20 +140,21 @@ struct emul { * @param _backend_api emulator-specific backend api */ #define EMUL_DT_DEFINE(node_id, init_fn, data_ptr, cfg_ptr, bus_api, _backend_api) \ - static struct Z_EMUL_BUS(node_id, i2c_emul, espi_emul, spi_emul, mspi_emul, no_bus_emul) \ - Z_EMUL_REG_BUS_IDENTIFIER(node_id) = { \ - .api = bus_api, \ - .Z_EMUL_BUS(node_id, addr, chipsel, chipsel, dev_idx, addr) = \ - DT_REG_ADDR(node_id), \ - }; \ + static struct Z_EMUL_BUS(node_id, i2c_emul, espi_emul, spi_emul, mspi_emul, uart_emul, \ + no_bus_emul) Z_EMUL_REG_BUS_IDENTIFIER(node_id) = { \ + .api = bus_api, \ + IF_ENABLED(DT_NODE_HAS_PROP(node_id, reg), \ + (.Z_EMUL_BUS(node_id, addr, chipsel, chipsel, dev_idx, dummy, addr) = \ + DT_REG_ADDR(node_id),))}; \ const STRUCT_SECTION_ITERABLE(emul, EMUL_DT_NAME_GET(node_id)) __used = { \ .init = (init_fn), \ .dev = DEVICE_DT_GET(node_id), \ .cfg = (cfg_ptr), \ .data = (data_ptr), \ .bus_type = Z_EMUL_BUS(node_id, EMUL_BUS_TYPE_I2C, EMUL_BUS_TYPE_ESPI, \ - EMUL_BUS_TYPE_SPI, EMUL_BUS_TYPE_MSPI, EMUL_BUS_TYPE_NONE), \ - .bus = {.Z_EMUL_BUS(node_id, i2c, espi, spi, mspi, none) = \ + EMUL_BUS_TYPE_SPI, EMUL_BUS_TYPE_MSPI, EMUL_BUS_TYPE_UART, \ + EMUL_BUS_TYPE_NONE), \ + .bus = {.Z_EMUL_BUS(node_id, i2c, espi, spi, mspi, uart, none) = \ &(Z_EMUL_REG_BUS_IDENTIFIER(node_id))}, \ .backend_api = (_backend_api), \ }; @@ -189,7 +195,7 @@ struct emul { * @return a @ref emul reference for the node identifier, which may be `NULL`. */ #define EMUL_DT_GET_OR_NULL(node_id) \ - COND_CODE_1(DT_NODE_HAS_STATUS(node_id, okay), (EMUL_DT_GET(node_id)), (NULL)) + COND_CODE_1(DT_NODE_HAS_STATUS_OKAY(node_id), (EMUL_DT_GET(node_id)), (NULL)) /** * @brief Set up a list of emulators diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/ethernet/eth_nxp_enet_qos.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/ethernet/eth_nxp_enet_qos.h index 1ec5adaf..0d85c073 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/ethernet/eth_nxp_enet_qos.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/ethernet/eth_nxp_enet_qos.h @@ -11,7 +11,7 @@ #include /* Different platforms named the peripheral different in the register definitions */ -#ifdef CONFIG_SOC_FAMILY_NXP_MCX +#ifdef CONFIG_SOC_SERIES_MCXN #undef ENET #define ENET_QOS_NAME ENET #define ENET_QOS_ALIGNMENT 4 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/clk.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/clk.h new file mode 100644 index 00000000..e56fc9df --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/clk.h @@ -0,0 +1,96 @@ +/* + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief SCMI clock protocol helpers + */ + +#ifndef _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_CLK_H_ +#define _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_CLK_H_ + +#include + +#define SCMI_CLK_CONFIG_DISABLE_ENABLE_MASK GENMASK(1, 0) +#define SCMI_CLK_CONFIG_ENABLE_DISABLE(x)\ + ((uint32_t)(x) & SCMI_CLK_CONFIG_DISABLE_ENABLE_MASK) + +#define SCMI_CLK_ATTRIBUTES_CLK_NUM(x) ((x) & GENMASK(15, 0)) + +/** + * @struct scmi_clock_config + * + * @brief Describes the parameters for the CLOCK_CONFIG_SET + * command + */ +struct scmi_clock_config { + uint32_t clk_id; + uint32_t attributes; + uint32_t extended_cfg_val; +}; + +/** + * @brief Clock protocol command message IDs + */ +enum scmi_clock_message { + SCMI_CLK_MSG_PROTOCOL_VERSION = 0x0, + SCMI_CLK_MSG_PROTOCOL_ATTRIBUTES = 0x1, + SCMI_CLK_MSG_PROTOCOL_MESSAGE_ATTRIBUTES = 0x2, + SCMI_CLK_MSG_CLOCK_ATTRIBUTES = 0x3, + SCMI_CLK_MSG_CLOCK_DESCRIBE_RATES = 0x4, + SCMI_CLK_MSG_CLOCK_RATE_SET = 0x5, + SCMI_CLK_MSG_CLOCK_RATE_GET = 0x6, + SCMI_CLK_MSG_CLOCK_CONFIG_SET = 0x7, + SCMI_CLK_MSG_CLOCK_NAME_GET = 0x8, + SCMI_CLK_MSG_CLOCK_RATE_NOTIFY = 0x9, + SCMI_CLK_MSG_CLOCK_RATE_CHANGE_REQUESTED_NOTIFY = 0xa, + SCMI_CLK_MSG_CLOCK_CONFIG_GET = 0xb, + SCMI_CLK_MSG_CLOCK_POSSIBLE_PARENTS_GET = 0xc, + SCMI_CLK_MSG_CLOCK_PARENT_SET = 0xd, + SCMI_CLK_MSG_CLOCK_PARENT_GET = 0xe, + SCMI_CLK_MSG_CLOCK_GET_PERMISSIONS = 0xf, + SCMI_CLK_MSG_NEGOTIATE_PROTOCOL_VERSION = 0x10, +}; + +/** + * @brief Send the PROTOCOL_ATTRIBUTES command and get its reply + * + * @param proto pointer to SCMI clock protocol data + * @param attributes pointer to attributes to be set via + * this command + * + * @retval 0 if successful + * @retval negative errno if failure + */ +int scmi_clock_protocol_attributes(struct scmi_protocol *proto, + uint32_t *attributes); + +/** + * @brief Send the CLOCK_CONFIG_SET command and get its reply + * + * @param proto pointer to SCMI clock protocol data + * @param cfg pointer to structure containing configuration + * to be set + * + * @retval 0 if successful + * @retval negative errno if failure + */ +int scmi_clock_config_set(struct scmi_protocol *proto, + struct scmi_clock_config *cfg); +/** + * @brief Query the rate of a clock + * + * @param proto pointer to SCMI clock protocol data + * @param clk_id ID of the clock for which the query is done + * @param rate pointer to rate to be set via this command + * + * @retval 0 if successful + * @retval negative errno if failure + */ +int scmi_clock_rate_get(struct scmi_protocol *proto, + uint32_t clk_id, uint32_t *rate); + +#endif /* _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_CLK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/pinctrl.h new file mode 100644 index 00000000..3906b91d --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/pinctrl.h @@ -0,0 +1,103 @@ +/* + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief SCMI pinctrl protocol helpers + */ + +#ifndef _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_PINCTRL_H_ +#define _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_PINCTRL_H_ + +#include + +#define ARM_SCMI_PINCTRL_MAX_CONFIG_SIZE (10 * 2) + +#define SCMI_PINCTRL_NO_FUNCTION 0xFFFFFFFF + +#define SCMI_PINCTRL_CONFIG_ATTRIBUTES(fid_valid, cfg_num, selector) \ + (SCMI_FIELD_MAKE(fid_valid, BIT(1), 10) | \ + SCMI_FIELD_MAKE(cfg_num, GENMASK(7, 0), 2) | \ + SCMI_FIELD_MAKE(selector, GENMASK(1, 0), 0)) + +#define SCMI_PINCTRL_SELECTOR_PIN 0x0 +#define SCMI_PINCTRL_SELECTOR_GROUP 0x1 + +#define SCMI_PINCTRL_ATTRIBUTES_CONFIG_NUM(attributes)\ + (((attributes) & GENMASK(9, 2)) >> 2) + +/** + * @brief Pinctrl protocol command message IDs + */ +enum scmi_pinctrl_message { + SCMI_PINCTRL_MSG_PROTOCOL_VERSION = 0x0, + SCMI_PINCTRL_MSG_PROTOCOL_ATTRIBUTES = 0x1, + SCMI_PINCTRL_MSG_PROTOCOL_MESSAGE_ATTRIBUTES = 0x2, + SCMI_PINCTRL_MSG_PINCTRL_ATTRIBUTES = 0x3, + SCMI_PINCTRL_MSG_PINCTRL_LIST_ASSOCIATIONS = 0x4, + SCMI_PINCTRL_MSG_PINCTRL_SETTINGS_GET = 0x5, + SCMI_PINCTRL_MSG_PINCTRL_SETTINGS_CONFIGURE = 0x6, + SCMI_PINCTRL_MSG_PINCTRL_REQUEST = 0x7, + SCMI_PINCTRL_MSG_PINCTRL_RELEASE = 0x8, + SCMI_PINCTRL_MSG_PINCTRL_NAME_GET = 0x9, + SCMI_PINCTRL_MSG_PINCTRL_SET_PERMISSIONS = 0xa, + SCMI_PINCTRL_MSG_NEGOTIATE_PROTOCOL_VERSION = 0x10, +}; + +/** + * @brief Pinctrl configurations + */ +enum scmi_pinctrl_config { + SCMI_PINCTRL_DEFAULT = 0, + SCMI_PINCTRL_BIAS_BUS_HOLD = 1, + SCMI_PINCTRL_BIAS_DISABLE = 2, + SCMI_PINCTRL_BIAS_HIGH_Z = 3, + SCMI_PINCTRL_BIAS_PULL_UP = 4, + SCMI_PINCTRL_BIAS_PULL_DEFAULT = 5, + SCMI_PINCTRL_BIAS_PULL_DOWN = 6, + SCMI_PINCTRL_DRIVE_OPEN_DRAIN = 7, + SCMI_PINCTRL_DRIVE_OPEN_SOURCE = 8, + SCMI_PCINTRL_DRIVE_PUSH_PULL = 9, + SCMI_PCINTRL_DRIVE_STRENGTH = 10, + SCMI_PINCTRL_INPUT_DEBOUNCE = 11, + SCMI_PINCTRL_INPUT_MODE = 12, + SCMI_PINCTRL_PULL_MODE = 13, + SCMI_PINCTRL_INPUT_VALUE = 14, + SCMI_PINCTRL_INPUT_SCHMITT = 15, + SCMI_PINCTRL_LP_MODE = 16, + SCMI_PINCTRL_OUTPUT_MODE = 17, + SCMI_PINCTRL_OUTPUT_VALUE = 18, + SCMI_PINCTRL_POWER_SOURCE = 19, + SCMI_PINCTRL_SLEW_RATE = 20, + SCMI_PINCTRL_RESERVED_START = 21, + SCMI_PINCTRL_RESERVED_END = 191, + SCMI_PINCTRL_VENDOR_START = 192, +}; + +/** + * @struct scmi_pinctrl_settings + * + * @brief Describes the parameters for the PINCTRL_SETTINGS_CONFIGURE + * command + */ +struct scmi_pinctrl_settings { + uint32_t id; + uint32_t function; + uint32_t attributes; + uint32_t config[ARM_SCMI_PINCTRL_MAX_CONFIG_SIZE]; +}; + +/** + * @brief Send the PINCTRL_SETTINGS_CONFIGURE command and get its reply + * + * @param settings pointer to settings to be applied + * + * @retval 0 if successful + * @retval negative errno if failure + */ +int scmi_pinctrl_settings_configure(struct scmi_pinctrl_settings *settings); + +#endif /* _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_PINCTRL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/protocol.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/protocol.h new file mode 100644 index 00000000..13ac8ba2 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/protocol.h @@ -0,0 +1,122 @@ +/* + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief SCMI protocol generic functions and structures + */ + +#ifndef _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_PROTOCOL_H_ +#define _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_PROTOCOL_H_ + +#include +#include +#include +#include + +/** + * @brief Build an SCMI message header + * + * Builds an SCMI message header based on the + * fields that make it up. + * + * @param id message ID + * @param type message type + * @param proto protocol ID + * @param token message token + */ +#define SCMI_MESSAGE_HDR_MAKE(id, type, proto, token) \ + (SCMI_FIELD_MAKE(id, GENMASK(7, 0), 0) | \ + SCMI_FIELD_MAKE(type, GENMASK(1, 0), 8) | \ + SCMI_FIELD_MAKE(proto, GENMASK(7, 0), 10) | \ + SCMI_FIELD_MAKE(token, GENMASK(9, 0), 18)) + +struct scmi_channel; + +/** + * @brief SCMI message type + */ +enum scmi_message_type { + /** command message */ + SCMI_COMMAND = 0x0, + /** delayed reply message */ + SCMI_DELAYED_REPLY = 0x2, + /** notification message */ + SCMI_NOTIFICATION = 0x3, +}; + +/** + * @brief SCMI status codes + */ +enum scmi_status_code { + SCMI_SUCCESS = 0, + SCMI_NOT_SUPPORTED = -1, + SCMI_INVALID_PARAMETERS = -2, + SCMI_DENIED = -3, + SCMI_NOT_FOUND = -4, + SCMI_OUT_OF_RANGE = -5, + SCMI_BUSY = -6, + SCMI_COMMS_ERROR = -7, + SCMI_GENERIC_ERROR = -8, + SCMI_HARDWARE_ERROR = -9, + SCMI_PROTOCOL_ERROR = -10, + SCMI_IN_USE = -11, +}; + +/** + * @struct scmi_protocol + * + * @brief SCMI protocol structure + */ +struct scmi_protocol { + /** protocol ID */ + uint32_t id; + /** TX channel */ + struct scmi_channel *tx; + /** transport layer device */ + const struct device *transport; + /** protocol private data */ + void *data; +}; + +/** + * @struct scmi_message + * + * @brief SCMI message structure + */ +struct scmi_message { + uint32_t hdr; + uint32_t len; + void *content; +}; + +/** + * @brief Convert an SCMI status code to its Linux equivalent (if possible) + * + * @param scmi_status SCMI status code as shown in `enum scmi_status_code` + * + * @retval Linux equivalent status code + */ +int scmi_status_to_errno(int scmi_status); + +/** + * @brief Send an SCMI message and wait for its reply + * + * Blocking function used to send an SCMI message over + * a given channel and wait for its reply + * + * @param proto pointer to SCMI protocol + * @param msg pointer to SCMI message to send + * @param reply pointer to SCMI message in which the reply is to be + * written + * + * @retval 0 if successful + * @retval negative errno if failure + */ +int scmi_send_message(struct scmi_protocol *proto, + struct scmi_message *msg, struct scmi_message *reply); + +#endif /* _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_PROTOCOL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/shmem.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/shmem.h new file mode 100644 index 00000000..a655a361 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/shmem.h @@ -0,0 +1,67 @@ +/* + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief SCMI SHMEM API + */ + +#ifndef _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_SHMEM_H_ +#define _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_SHMEM_H_ + +#include +#include +#include + +#define SCMI_SHMEM_CHAN_STATUS_BUSY_BIT BIT(0) +#define SCMI_SHMEM_CHAN_FLAG_IRQ_BIT BIT(0) + +struct scmi_message; + +/** + * @brief Write a message in the SHMEM area + * + * @param shmem pointer to shmem device + * @param msg message to write + * + * @retval 0 if successful + * @retval negative errno if failure + */ +int scmi_shmem_write_message(const struct device *shmem, + struct scmi_message *msg); + +/** + * @brief Read a message from a SHMEM area + * + * @param shmem pointer to shmem device + * @param msg message to write the data into + * + * @retval 0 if successful + * @retval negative errno if failure + */ +int scmi_shmem_read_message(const struct device *shmem, + struct scmi_message *msg); + +/** + * @brief Update the channel flags + * + * @param shmem pointer to shmem device + * @param mask value to negate and bitwise-and the old + * channel flags value + * @param val value to bitwise and with the mask and + * bitwise-or with the masked old value + */ +void scmi_shmem_update_flags(const struct device *shmem, + uint32_t mask, uint32_t val); + +/** + * @brief Read a channel's status + * + * @param shmem pointer to shmem device + */ +uint32_t scmi_shmem_channel_status(const struct device *shmem); + +#endif /* _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_SHMEM_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/transport.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/transport.h new file mode 100644 index 00000000..2cb72a2b --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/transport.h @@ -0,0 +1,274 @@ +/* + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief Public APIs for the SCMI transport layer drivers + */ + +#ifndef _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_TRANSPORT_H_ +#define _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_TRANSPORT_H_ + +#include +#include + +struct scmi_message; +struct scmi_channel; + +/** + * @typedef scmi_channel_cb + * + * @brief Callback function for message replies + * + * This function should be called by the transport layer + * driver whenever a reply to a previously sent message + * has been received. Its purpose is to notifying the SCMI + * core of the reply's arrival so that proper action can + * be taken. + * + * @param chan pointer to SCMI channel on which the reply + * arrived + */ +typedef void (*scmi_channel_cb)(struct scmi_channel *chan); + +/** + * @struct scmi_channel + * @brief SCMI channel structure + * + * An SCMI channel is a medium through which a protocol + * is able to transmit/receive messages. Each of the SCMI + * channels is represented by a `struct scmi_channel`. + */ +struct scmi_channel { + /** + * channel lock. This is meant to be initialized + * and used only by the SCMI core to assure that + * only one protocol can send/receive messages + * through a channel at a given moment. + */ + struct k_mutex lock; + /** + * binary semaphore. This is meant to be initialized + * and used only by the SCMI core. Its purpose is to + * signal that a reply has been received. + */ + struct k_sem sem; + /** channel private data */ + void *data; + /** + * callback function. This is meant to be set by + * the SCMI core and should be called by the SCMI + * transport layer driver whenever a reply has + * been received. + */ + scmi_channel_cb cb; + /** is the channel ready to be used by a protocol? */ + bool ready; +}; + +struct scmi_transport_api { + int (*init)(const struct device *transport); + int (*send_message)(const struct device *transport, + struct scmi_channel *chan, + struct scmi_message *msg); + int (*setup_chan)(const struct device *transport, + struct scmi_channel *chan, + bool tx); + int (*read_message)(const struct device *transport, + struct scmi_channel *chan, + struct scmi_message *msg); + bool (*channel_is_free)(const struct device *transport, + struct scmi_channel *chan); + struct scmi_channel *(*request_channel)(const struct device *transport, + uint32_t proto, bool tx); +}; + +/** + * @brief Request an SCMI channel dynamically + * + * Whenever the SCMI transport layer driver doesn't support + * static channel allocation, the SCMI core will try to bind + * a channel to a protocol dynamically using this function. + * Note that no setup needs to be performed on the channel + * in this function as the core will also call the channel + * setup() function. + * + * @param transport pointer to the device structure for the + * transport layer + * @param proto ID of the protocol for which the core is + * requesting the channel + * @param tx true if the channel is TX, false if RX + * + * @retval pointer to SCMI channel that's to be bound + * to the protocol + * @retval NULL if operation was not successful + */ +static inline struct scmi_channel * +scmi_transport_request_channel(const struct device *transport, + uint32_t proto, bool tx) +{ + const struct scmi_transport_api *api = + (const struct scmi_transport_api *)transport->api; + + if (api->request_channel) { + return api->request_channel(transport, proto, tx); + } + + return NULL; +} + +/** + * @brief Perform initialization for the transport layer driver + * + * The transport layer driver can't be initialized directly + * (i.e via a call to its init() function) during system initialization. + * This is because the macro used to define an SCMI transport places + * `scmi_core_transport_init()` in the init section instead of the + * driver's init() function. As such, `scmi_core_transport_init()` + * needs to call this function to perfrom transport layer driver + * initialization if required. + * + * This operation is optional. + * + * @param transport pointer to the device structure for the + * transport layer + * + * @retval 0 if successful + * @retval negative errno code if failure + */ +static inline int scmi_transport_init(const struct device *transport) +{ + const struct scmi_transport_api *api = + (const struct scmi_transport_api *)transport->api; + + if (api->init) { + return api->init(transport); + } + + return 0; +} + +/** + * @brief Setup an SCMI channel + * + * Before being able to send/receive messages, an SCMI channel needs + * to be prepared, which is what this function does. If it returns + * successfully, an SCMI protocol will be able to use this channel + * to send/receive messages. + * + * @param transport pointer to the device structure for the + * transport layer + * @param chan pointer to SCMI channel to be prepared + * @param tx true if the channel is TX, false if RX + * + * @retval 0 if successful + * @retval negative errno code if failure + */ +static inline int scmi_transport_setup_chan(const struct device *transport, + struct scmi_channel *chan, + bool tx) +{ + const struct scmi_transport_api *api = + (const struct scmi_transport_api *)transport->api; + + if (!api || !api->setup_chan) { + return -ENOSYS; + } + + return api->setup_chan(transport, chan, tx); +} + +/** + * @brief Send an SCMI channel + * + * Send an SCMI message using given SCMI channel. This function is + * not allowed to block. + * + * @param transport pointer to the device structure for the + * transport layer + * @param chan pointer to SCMI channel on which the message + * is to be sent + * @param msg pointer to message the caller wishes to send + * + * @retval 0 if successful + * @retval negative errno code if failure + */ +static inline int scmi_transport_send_message(const struct device *transport, + struct scmi_channel *chan, + struct scmi_message *msg) +{ + const struct scmi_transport_api *api = + (const struct scmi_transport_api *)transport->api; + + if (!api || !api->send_message) { + return -ENOSYS; + } + + return api->send_message(transport, chan, msg); +} + +/** + * @brief Read an SCMI message + * + * @param transport pointer to the device structure for the + * transport layer + * @param chan pointer to SCMI channel on which the message + * is to be read + * @param msg pointer to message the caller wishes to read + * + * @retval 0 if successful + * @retval negative errno code if failure + */ +static inline int scmi_transport_read_message(const struct device *transport, + struct scmi_channel *chan, + struct scmi_message *msg) +{ + const struct scmi_transport_api *api = + (const struct scmi_transport_api *)transport->api; + + if (!api || !api->read_message) { + return -ENOSYS; + } + + return api->read_message(transport, chan, msg); +} + +/** + * @brief Check if an SCMI channel is free + * + * @param transport pointer to the device structure for + * the transport layer + * @param chan pointer to SCMI channel the query is to be + * performed on + * + * @retval 0 if successful + * @retval negative errno code if failure + */ +static inline bool scmi_transport_channel_is_free(const struct device *transport, + struct scmi_channel *chan) +{ + const struct scmi_transport_api *api = + (const struct scmi_transport_api *)transport->api; + + if (!api || !api->channel_is_free) { + return -ENOSYS; + } + + return api->channel_is_free(transport, chan); +} + +/** + * @brief Perfrom SCMI core initialization + * + * @param transport pointer to the device structure for + * the transport layer + * + * @retval 0 if successful + * @retval negative errno code if failure + */ +int scmi_core_transport_init(const struct device *transport); + +#endif /* _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_TRANSPORT_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/util.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/util.h new file mode 100644 index 00000000..cd05f984 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/firmware/scmi/util.h @@ -0,0 +1,286 @@ +/* + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief ARM SCMI utility header + * + * Contains various utility macros and macros used for protocol and + * transport "registration". + */ + +#ifndef _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_UTIL_H_ +#define _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_UTIL_H_ + +/** + * @brief Build protocol name from its ID + * + * Given a protocol ID, this macro builds the protocol + * name. This is done by concatenating the scmi_protocol_ + * construct with the given protocol ID. + * + * @param proto protocol ID in decimal format + * + * @return protocol name + */ +#define SCMI_PROTOCOL_NAME(proto) CONCAT(scmi_protocol_, proto) + +#ifdef CONFIG_ARM_SCMI_TRANSPORT_HAS_STATIC_CHANNELS + +#ifdef CONFIG_ARM_SCMI_MAILBOX_TRANSPORT +/** @brief Check if a protocol node has an associated channel + * + * This macro, when applied to a protocol node, checks if + * the node has a dedicated static channel allocated to it. + * This definition is specific to the mailbox driver and + * each new transport layer driver should define its own + * version of this macro based on the devicetree properties + * that indicate the presence of a dedicated channel. + * + * @param node_id protocol node identifier + * @idx channel index. Should be 0 for TX channels and 1 for + * RX channels + */ +#define DT_SCMI_TRANSPORT_PROTO_HAS_CHAN(node_id, idx)\ + DT_PROP_HAS_IDX(node_id, shmem, idx) +#else /* CONFIG_ARM_SCMI_MAILBOX_TRANSPORT */ +#error "Transport with static channels needs to define HAS_CHAN macro" +#endif /* CONFIG_ARM_SCMI_MAILBOX_TRANSPORT */ + +#define SCMI_TRANSPORT_CHAN_NAME(proto, idx) CONCAT(scmi_channel_, proto, _, idx) + +/** + * @brief Declare a TX SCMI channel + * + * Given a node_id for a protocol, this macro declares the SCMI + * TX channel statically bound to said protocol via the "extern" + * qualifier. This is useful when the transport layer driver + * supports static channels since all channel structures are + * defined inside the transport layer driver. + * + * @param node_id protocol node identifier + */ +#define DT_SCMI_TRANSPORT_TX_CHAN_DECLARE(node_id) \ + COND_CODE_1(DT_SCMI_TRANSPORT_PROTO_HAS_CHAN(node_id, 0), \ + (extern struct scmi_channel \ + SCMI_TRANSPORT_CHAN_NAME(DT_REG_ADDR_RAW(node_id), 0);), \ + (extern struct scmi_channel \ + SCMI_TRANSPORT_CHAN_NAME(SCMI_PROTOCOL_BASE, 0);)) \ + +/** + * @brief Declare SCMI TX/RX channels + * + * Given a node_id for a protocol, this macro declares the + * SCMI TX and RX channels statically bound to said protocol via + * the "extern" qualifier. Since RX channels are currently not + * supported, this is equivalent to DT_SCMI_TRANSPORT_TX_CHAN_DECLARE(). + * Despite this, users should opt for this macro instead of the TX-specific + * one. + * + * @param node_id protocol node identifier + */ +#define DT_SCMI_TRANSPORT_CHANNELS_DECLARE(node_id) \ + DT_SCMI_TRANSPORT_TX_CHAN_DECLARE(node_id) \ + +/** + * @brief Declare SCMI TX/RX channels using node instance number + * + * Same as DT_SCMI_TRANSPORT_CHANNELS_DECLARE() but uses the + * protocol's node instance number and the DT_DRV_COMPAT macro. + * + * @param protocol node instance number + */ +#define DT_INST_SCMI_TRANSPORT_CHANNELS_DECLARE(inst) \ + DT_SCMI_TRANSPORT_CHANNELS_DECLARE(DT_INST(inst, DT_DRV_COMPAT)) + +/** + * @brief Get a reference to a protocol's SCMI TX channel + * + * Given a node_id for a protocol, this macro returns a + * reference to an SCMI TX channel statically bound to said + * protocol. + * + * @param node_id protocol node identifier + * + * @return reference to the struct scmi_channel of the TX channel + * bound to the protocol identifier by node_id + */ +#define DT_SCMI_TRANSPORT_TX_CHAN(node_id) \ + COND_CODE_1(DT_SCMI_TRANSPORT_PROTO_HAS_CHAN(node_id, 0), \ + (&SCMI_TRANSPORT_CHAN_NAME(DT_REG_ADDR_RAW(node_id), 0)), \ + (&SCMI_TRANSPORT_CHAN_NAME(SCMI_PROTOCOL_BASE, 0))) + +/** + * @brief Define an SCMI channel for a protocol + * + * This macro defines a struct scmi_channel for a given protocol. + * This should be used by the transport layer driver to statically + * define SCMI channels for the protocols. + * + * @param node_id protocol node identifier + * @param idx channel index. Should be 0 for TX channels and 1 + * for RX channels + * @param proto protocol ID in decimal format + */ +#define DT_SCMI_TRANSPORT_CHAN_DEFINE(node_id, idx, proto, pdata) \ + struct scmi_channel SCMI_TRANSPORT_CHAN_NAME(proto, idx) = \ + { \ + .data = pdata, \ + } + +/** + * @brief Define an SCMI protocol's data + * + * Each SCMI protocol is identified by a struct scmi_protocol + * placed in a linker section called scmi_protocol. Each protocol + * driver is required to use this macro for "registration". Using + * this macro directly is higly discouraged and users should opt + * for macros such as DT_SCMI_PROTOCOL_DEFINE_NODEV() or + * DT_SCMI_PROTOCOL_DEFINE(), which also takes care of the static + * channel declaration (if applicable). + * + * @param node_id protocol node identifier + * @param proto protocol ID in decimal format + * @param pdata protocol private data + */ +#define DT_SCMI_PROTOCOL_DATA_DEFINE(node_id, proto, pdata) \ + STRUCT_SECTION_ITERABLE(scmi_protocol, SCMI_PROTOCOL_NAME(proto)) = \ + { \ + .id = proto, \ + .tx = DT_SCMI_TRANSPORT_TX_CHAN(node_id), \ + .data = pdata, \ + } + +#else /* CONFIG_ARM_SCMI_TRANSPORT_HAS_STATIC_CHANNELS */ + +#define DT_SCMI_TRANSPORT_CHANNELS_DECLARE(node_id) + +#define DT_SCMI_PROTOCOL_DATA_DEFINE(node_id, proto, pdata) \ + STRUCT_SECTION_ITERABLE(scmi_protocol, SCMI_PROTOCOL_NAME(proto)) = \ + { \ + .id = proto, \ + .data = pdata, \ + } + +#endif /* CONFIG_ARM_SCMI_TRANSPORT_HAS_STATIC_CHANNELS */ + +/** + * @brief Define an SCMI transport driver + * + * This is merely a wrapper over DEVICE_DT_INST_DEFINE(), but is + * required since transport layer drivers are not allowed to place + * their own init() function in the init section. Instead, transport + * layer drivers place the scmi_core_transport_init() function in the + * init section, which, in turn, will call the transport layer driver + * init() function. This is required because the SCMI core needs to + * perform channel binding and setup during the transport layer driver's + * initialization. + */ +#define DT_INST_SCMI_TRANSPORT_DEFINE(inst, pm, data, config, level, prio, api) \ + DEVICE_DT_INST_DEFINE(inst, &scmi_core_transport_init, \ + pm, data, config, level, prio, api) + +/** + * @brief Define an SCMI protocol + * + * This macro performs three important functions: + * 1) It defines a `struct scmi_protocol`, which is + * needed by all protocol drivers to work with the SCMI API. + * + * 2) It declares the static channels bound to the protocol. + * This is only applicable if the transport layer driver + * supports static channels. + * + * 3) It creates a `struct device` a sets the `data` field + * to the newly defined `struct scmi_protocol`. This is + * needed because the protocol driver needs to work with the + * SCMI API **and** the subsystem API. + * + * @param node_id protocol node identifier + * @param init_fn pointer to protocol's initialization function + * @param api pointer to protocol's subsystem API + * @param pm pointer to the protocol's power management resources + * @param data pointer to protocol's private data + * @param config pointer to protocol's private constant data + * @param level protocol initialization level + * @param prio protocol's priority within its initialization level + */ +#define DT_SCMI_PROTOCOL_DEFINE(node_id, init_fn, pm, data, config, \ + level, prio, api) \ + DT_SCMI_TRANSPORT_CHANNELS_DECLARE(node_id) \ + DT_SCMI_PROTOCOL_DATA_DEFINE(node_id, DT_REG_ADDR_RAW(node_id), data); \ + DEVICE_DT_DEFINE(node_id, init_fn, pm, \ + &SCMI_PROTOCOL_NAME(DT_REG_ADDR_RAW(node_id)), \ + config, level, prio, api) + +/** + * @brief Just like DT_SCMI_PROTOCOL_DEFINE(), but uses an instance + * of a `DT_DRV_COMPAT` compatible instead of a node identifier + * + * @param inst instance number + * @param init_fn pointer to protocol's initialization function + * @param api pointer to protocol's subsystem API + * @param pm pointer to the protocol's power management resources + * @param data pointer to protocol's private data + * @param config pointer to protocol's private constant data + * @param level protocol initialization level + * @param prio protocol's priority within its initialization level + */ +#define DT_INST_SCMI_PROTOCOL_DEFINE(inst, init_fn, pm, data, config, \ + level, prio, api) \ + DT_SCMI_PROTOCOL_DEFINE(DT_INST(inst, DT_DRV_COMPAT), init_fn, pm, \ + data, config, level, prio, api) + +/** + * @brief Define an SCMI protocol with no device + * + * Variant of DT_SCMI_PROTOCOL_DEFINE(), but no `struct device` is + * created and no initialization function is called during system + * initialization. This is useful for protocols that are not really + * part of a subsystem with an API (e.g: pinctrl). + * + * @param node_id protocol node identifier + * @param data protocol private data + */ +#define DT_SCMI_PROTOCOL_DEFINE_NODEV(node_id, data) \ + DT_SCMI_TRANSPORT_CHANNELS_DECLARE(node_id) \ + DT_SCMI_PROTOCOL_DATA_DEFINE(node_id, DT_REG_ADDR_RAW(node_id), data) + +/** + * @brief Create an SCMI message field + * + * Data might not necessarily be encoded in the first + * x bits of an SCMI message parameter/return value. + * This comes in handy when building said parameters/ + * return values. + * + * @param x value to encode + * @param mask value to perform bitwise-and with `x` + * @param shift value to left-shift masked `x` + */ +#define SCMI_FIELD_MAKE(x, mask, shift)\ + (((uint32_t)(x) & (mask)) << (shift)) + +/** + * @brief SCMI protocol IDs + * + * Each SCMI protocol is identified by an ID. Each + * of these IDs needs to be in decimal since they + * might be used to build protocol and static channel + * names. + */ +#define SCMI_PROTOCOL_BASE 16 +#define SCMI_PROTOCOL_POWER_DOMAIN 17 +#define SCMI_PROTOCOL_SYSTEM 18 +#define SCMI_PROTOCOL_PERF 19 +#define SCMI_PROTOCOL_CLOCK 20 +#define SCMI_PROTOCOL_SENSOR 21 +#define SCMI_PROTOCOL_RESET_DOMAIN 22 +#define SCMI_PROTOCOL_VOLTAGE_DOMAIN 23 +#define SCMI_PROTOCOL_PCAP_MONITOR 24 +#define SCMI_PROTOCOL_PINCTRL 25 + +#endif /* _INCLUDE_ZEPHYR_DRIVERS_FIRMWARE_SCMI_UTIL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/flash.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/flash.h index f7b31b15..b72e551e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/flash.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/flash.h @@ -155,6 +155,18 @@ typedef int (*flash_api_write)(const struct device *dev, off_t offset, typedef int (*flash_api_erase)(const struct device *dev, off_t offset, size_t size); +/** + * @brief Get device size in bytes. + * + * Returns total logical device size in bytes. + * + * @param[in] dev flash device. + * @param[out] size device size in bytes. + * + * @return 0 on success, negative errno code on error. + */ +typedef int (*flash_api_get_size)(const struct device *dev, uint64_t *size); + typedef const struct flash_parameters* (*flash_api_get_parameters)(const struct device *dev); #if defined(CONFIG_FLASH_PAGE_LAYOUT) @@ -195,6 +207,7 @@ __subsystem struct flash_driver_api { flash_api_write write; flash_api_erase erase; flash_api_get_parameters get_parameters; + flash_api_get_size get_size; #if defined(CONFIG_FLASH_PAGE_LAYOUT) flash_api_pages_layout page_layout; #endif /* CONFIG_FLASH_PAGE_LAYOUT */ @@ -321,6 +334,33 @@ static inline int z_impl_flash_erase(const struct device *dev, off_t offset, return rc; } +/** + * @brief Get device size in bytes. + * + * Returns total logical device size in bytes. Not all devices may support + * returning size, specifically those with non uniform page layouts or banked, + * in which case the function will return -ENOTSUP, and user has to rely + * on Flash page layout functions enabled by CONFIG_FLASH_PAGE_LAYOUT. + * + * @param[in] dev flash device. + * @param[out] size device size in bytes. + * + * @return 0 on success, negative errno code on error. + */ +__syscall int flash_get_size(const struct device *dev, uint64_t *size); + +static inline int z_impl_flash_get_size(const struct device *dev, uint64_t *size) +{ + int rc = -ENOSYS; + const struct flash_driver_api *api = (const struct flash_driver_api *)dev->api; + + if (api->get_size != NULL) { + rc = api->get_size(dev, size); + } + + return rc; +} + /** * @brief Fill selected range of device with specified value * @@ -583,6 +623,37 @@ static inline const struct flash_parameters *z_impl_flash_get_parameters(const s __syscall int flash_ex_op(const struct device *dev, uint16_t code, const uintptr_t in, void *out); +/** + * @brief Copy flash memory from one device to another. + * + * Copy a region of flash memory from one place to another. The source and + * destination flash devices may be the same or different devices. However, + * this function will fail if the source and destination devices are the same + * if memory regions overlap and are not identical. + * + * The caller must supply a buffer of suitable size and ensure that the + * destination is erased beforehand, if necessary. + * + * @note If the source and destination devices are the same, and the source + * and destination offsets are also the same, this function succeeds without + * performing any copy operation. + * + * @param src_dev Source flash device. + * @param dst_dev Destination flash device. + * @param src_offset Offset within the source flash device. + * @param dst_offset Offset within the destination flash device. + * @param size Size of the region to copy, in bytes. + * @param[out] buf Pointer to a buffer of size @a buf_size. + * @param buf_size Size of the buffer pointed to by @a buf. + * + * @retval 0 on success + * @retval -EINVAL if an argument is invalid. + * @retval -EIO if an I/O error occurs. + * @retval -ENODEV if either @a src_dev or @a dst_dev are not ready. + */ +__syscall int flash_copy(const struct device *src_dev, off_t src_offset, + const struct device *dst_dev, off_t dst_offset, off_t size, uint8_t *buf, + size_t buf_size); /* * Extended operation interface provides flexible way for supporting flash * controller features. Code space is divided equally into Zephyr codes diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/flash/ra_flash_api_extensions.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/flash/ra_flash_api_extensions.h index a61a179f..465c98ac 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/flash/ra_flash_api_extensions.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/flash/ra_flash_api_extensions.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2024 Renesas Electronics Corporation + * * SPDX-License-Identifier: Apache-2.0 */ @@ -10,7 +11,6 @@ enum ra_ex_ops { FLASH_RA_EX_OP_WRITE_PROTECT = FLASH_EX_OP_VENDOR_BASE, - FLASH_RA_EX_OP_READ_PROTECT, }; typedef struct { diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gnss.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gnss.h index 5a373ac5..c5d2b917 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gnss.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gnss.h @@ -21,6 +21,7 @@ * @{ */ +#include #include #include #include @@ -48,27 +49,6 @@ typedef int (*gnss_set_fix_rate_t)(const struct device *dev, uint32_t fix_interv /** API for getting fix rate */ typedef int (*gnss_get_fix_rate_t)(const struct device *dev, uint32_t *fix_interval_ms); -/** - * @brief GNSS periodic tracking configuration - * - * @note Setting either active_time or inactive_time to 0 will disable periodic - * function. - */ -struct gnss_periodic_config { - /** The time the GNSS will spend in the active state in ms */ - uint32_t active_time_ms; - /** The time the GNSS will spend in the inactive state in ms */ - uint32_t inactive_time_ms; -}; - -/** API for setting periodic tracking configuration */ -typedef int (*gnss_set_periodic_config_t)(const struct device *dev, - const struct gnss_periodic_config *periodic_config); - -/** API for setting periodic tracking configuration */ -typedef int (*gnss_get_periodic_config_t)(const struct device *dev, - struct gnss_periodic_config *periodic_config); - /** GNSS navigation modes */ enum gnss_navigation_mode { /** Dynamics have no impact on tracking */ @@ -121,6 +101,9 @@ typedef int (*gnss_get_enabled_systems_t)(const struct device *dev, gnss_systems /** API for getting enabled systems */ typedef int (*gnss_get_supported_systems_t)(const struct device *dev, gnss_systems_t *systems); +/** API for getting timestamp of last PPS pulse */ +typedef int (*gnss_get_latest_timepulse_t)(const struct device *dev, k_ticks_t *timestamp); + /** GNSS fix status */ enum gnss_fix_status { /** No GNSS fix acquired */ @@ -169,7 +152,7 @@ struct gnss_time { uint8_t hour; /** Minute [0, 59] */ uint8_t minute; - /** Millisecond [0, 59999] */ + /** Millisecond [0, 60999] */ uint16_t millisecond; /** Day of month [1, 31] */ uint8_t month_day; @@ -183,13 +166,12 @@ struct gnss_time { __subsystem struct gnss_driver_api { gnss_set_fix_rate_t set_fix_rate; gnss_get_fix_rate_t get_fix_rate; - gnss_set_periodic_config_t set_periodic_config; - gnss_get_periodic_config_t get_periodic_config; gnss_set_navigation_mode_t set_navigation_mode; gnss_get_navigation_mode_t get_navigation_mode; gnss_set_enabled_systems_t set_enabled_systems; gnss_get_enabled_systems_t get_enabled_systems; gnss_get_supported_systems_t get_supported_systems; + gnss_get_latest_timepulse_t get_latest_timepulse; }; /** GNSS data structure */ @@ -286,54 +268,6 @@ static inline int z_impl_gnss_get_fix_rate(const struct device *dev, uint32_t *f return api->get_fix_rate(dev, fix_interval_ms); } -/** - * @brief Set the GNSS periodic tracking configuration - * - * @param dev Device instance - * @param config Periodic tracking configuration to set - * - * @return 0 if successful - * @return -errno negative errno code on failure - */ -__syscall int gnss_set_periodic_config(const struct device *dev, - const struct gnss_periodic_config *config); - -static inline int z_impl_gnss_set_periodic_config(const struct device *dev, - const struct gnss_periodic_config *config) -{ - const struct gnss_driver_api *api = (const struct gnss_driver_api *)dev->api; - - if (api->set_periodic_config == NULL) { - return -ENOSYS; - } - - return api->set_periodic_config(dev, config); -} - -/** - * @brief Get the GNSS periodic tracking configuration - * - * @param dev Device instance - * @param config Destination for periodic tracking configuration - * - * @return 0 if successful - * @return -errno negative errno code on failure - */ -__syscall int gnss_get_periodic_config(const struct device *dev, - struct gnss_periodic_config *config); - -static inline int z_impl_gnss_get_periodic_config(const struct device *dev, - struct gnss_periodic_config *config) -{ - const struct gnss_driver_api *api = (const struct gnss_driver_api *)dev->api; - - if (api->get_periodic_config == NULL) { - return -ENOSYS; - } - - return api->get_periodic_config(dev, config); -} - /** * @brief Set the GNSS navigation mode * @@ -451,6 +385,33 @@ static inline int z_impl_gnss_get_supported_systems(const struct device *dev, return api->get_supported_systems(dev, systems); } +/** + * @brief Get the timestamp of the latest PPS timepulse + * + * @note The timestamp is considered valid when the timepulse pin is actively toggling. + * + * @param dev Device instance + * @param timestamp Kernel tick count at the time of the PPS pulse + * + * @retval 0 if successful + * @retval -ENOSYS if driver does not support API + * @retval -ENOTSUP if driver does not have PPS pin connected + * @retval -EAGAIN if PPS pulse is not considered valid + */ +__syscall int gnss_get_latest_timepulse(const struct device *dev, k_ticks_t *timestamp); + +static inline int z_impl_gnss_get_latest_timepulse(const struct device *dev, + k_ticks_t *timestamp) +{ + const struct gnss_driver_api *api = (const struct gnss_driver_api *)dev->api; + + if (api->get_latest_timepulse == NULL) { + return -ENOSYS; + } + + return api->get_latest_timepulse(dev, timestamp); +} + /** * @brief Register a callback structure for GNSS data published * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio.h index 4473b49e..077a6950 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio.h @@ -19,6 +19,7 @@ #include #include +#include #include #include @@ -550,7 +551,7 @@ struct gpio_dt_spec { * .ngpios = 32, * .gpios_reserved = 0xdeadbeef, * // 0b1101 1110 1010 1101 1011 1110 1110 1111 - * + * }; * static const struct some_config dev_cfg_b = { * .ngpios = 18, * .gpios_reserved = 0xfffc0418, @@ -845,6 +846,8 @@ static inline bool gpio_is_ready_dt(const struct gpio_dt_spec *spec) * not controlled directly by the GPIO module. That is, pins which are * routed to other modules such as I2C, SPI, UART. * + * @funcprops \isr_ok + * * @param port Pointer to device structure for the driver instance. * @param pin Pin number. * @param flags Interrupt configuration flags as defined by GPIO_INT_*. @@ -875,8 +878,12 @@ static inline int z_impl_gpio_pin_interrupt_configure(const struct device *port, (const struct gpio_driver_data *)port->data; enum gpio_int_trig trig; enum gpio_int_mode mode; + int ret; + + SYS_PORT_TRACING_FUNC_ENTER(gpio_pin, interrupt_configure, port, pin, flags); if (api->pin_interrupt_configure == NULL) { + SYS_PORT_TRACING_FUNC_EXIT(gpio_pin, interrupt_configure, port, pin, -ENOSYS); return -ENOSYS; } @@ -921,12 +928,16 @@ static inline int z_impl_gpio_pin_interrupt_configure(const struct device *port, mode = (enum gpio_int_mode)(flags & (GPIO_INT_EDGE | GPIO_INT_DISABLE | GPIO_INT_ENABLE)); #endif /* CONFIG_GPIO_ENABLE_DISABLE_INTERRUPT */ - return api->pin_interrupt_configure(port, pin, mode, trig); + ret = api->pin_interrupt_configure(port, pin, mode, trig); + SYS_PORT_TRACING_FUNC_EXIT(gpio_pin, interrupt_configure, port, pin, ret); + return ret; } /** * @brief Configure pin interrupts from a @p gpio_dt_spec. * + * @funcprops \isr_ok + * * This is equivalent to: * * gpio_pin_interrupt_configure(spec->port, spec->pin, flags); @@ -972,6 +983,9 @@ static inline int z_impl_gpio_pin_configure(const struct device *port, (const struct gpio_driver_config *)port->config; struct gpio_driver_data *data = (struct gpio_driver_data *)port->data; + int ret; + + SYS_PORT_TRACING_FUNC_ENTER(gpio_pin, configure, port, pin, flags); __ASSERT((flags & GPIO_INT_MASK) == 0, "Interrupt flags are not supported"); @@ -1011,7 +1025,9 @@ static inline int z_impl_gpio_pin_configure(const struct device *port, data->invert &= ~(gpio_port_pins_t)BIT(pin); } - return api->pin_configure(port, pin, flags); + ret = api->pin_configure(port, pin, flags); + SYS_PORT_TRACING_FUNC_EXIT(gpio_pin, configure, port, pin, ret); + return ret; } /** @@ -1060,12 +1076,18 @@ static inline int z_impl_gpio_port_get_direction(const struct device *port, gpio gpio_port_pins_t *outputs) { const struct gpio_driver_api *api = (const struct gpio_driver_api *)port->api; + int ret; + + SYS_PORT_TRACING_FUNC_ENTER(gpio_port, get_direction, port, map, inputs, outputs); if (api->port_get_direction == NULL) { + SYS_PORT_TRACING_FUNC_EXIT(gpio_port, get_direction, port, -ENOSYS); return -ENOSYS; } - return api->port_get_direction(port, map, inputs, outputs); + ret = api->port_get_direction(port, map, inputs, outputs); + SYS_PORT_TRACING_FUNC_EXIT(gpio_port, get_direction, port, ret); + return ret; } #endif /* CONFIG_GPIO_GET_DIRECTION */ @@ -1184,11 +1206,18 @@ static inline int z_impl_gpio_pin_get_config(const struct device *port, { const struct gpio_driver_api *api = (const struct gpio_driver_api *)port->api; + int ret; + + SYS_PORT_TRACING_FUNC_ENTER(gpio_pin, get_config, port, pin, *flags); - if (api->pin_get_config == NULL) + if (api->pin_get_config == NULL) { + SYS_PORT_TRACING_FUNC_EXIT(gpio_pin, get_config, port, pin, -ENOSYS); return -ENOSYS; + } - return api->pin_get_config(port, pin, flags); + ret = api->pin_get_config(port, pin, flags); + SYS_PORT_TRACING_FUNC_EXIT(gpio_pin, get_config, port, pin, ret); + return ret; } #endif @@ -1230,13 +1259,16 @@ static inline int gpio_pin_get_config_dt(const struct gpio_dt_spec *spec, __syscall int gpio_port_get_raw(const struct device *port, gpio_port_value_t *value); -static inline int z_impl_gpio_port_get_raw(const struct device *port, - gpio_port_value_t *value) +static inline int z_impl_gpio_port_get_raw(const struct device *port, gpio_port_value_t *value) { - const struct gpio_driver_api *api = - (const struct gpio_driver_api *)port->api; + const struct gpio_driver_api *api = (const struct gpio_driver_api *)port->api; + int ret; - return api->port_get_raw(port, value); + SYS_PORT_TRACING_FUNC_ENTER(gpio_port, get_raw, port, value); + + ret = api->port_get_raw(port, value); + SYS_PORT_TRACING_FUNC_EXIT(gpio_port, get_raw, port, ret); + return ret; } /** @@ -1299,8 +1331,13 @@ static inline int z_impl_gpio_port_set_masked_raw(const struct device *port, { const struct gpio_driver_api *api = (const struct gpio_driver_api *)port->api; + int ret; + + SYS_PORT_TRACING_FUNC_ENTER(gpio_port, set_masked_raw, port, mask, value); - return api->port_set_masked_raw(port, mask, value); + ret = api->port_set_masked_raw(port, mask, value); + SYS_PORT_TRACING_FUNC_EXIT(gpio_port, set_masked_raw, port, ret); + return ret; } /** @@ -1353,8 +1390,13 @@ static inline int z_impl_gpio_port_set_bits_raw(const struct device *port, { const struct gpio_driver_api *api = (const struct gpio_driver_api *)port->api; + int ret; + + SYS_PORT_TRACING_FUNC_ENTER(gpio_port, set_bits_raw, port, pins); - return api->port_set_bits_raw(port, pins); + ret = api->port_set_bits_raw(port, pins); + SYS_PORT_TRACING_FUNC_EXIT(gpio_port, set_bits_raw, port, ret); + return ret; } /** @@ -1391,8 +1433,13 @@ static inline int z_impl_gpio_port_clear_bits_raw(const struct device *port, { const struct gpio_driver_api *api = (const struct gpio_driver_api *)port->api; + int ret; + + SYS_PORT_TRACING_FUNC_ENTER(gpio_port, clear_bits_raw, port, pins); - return api->port_clear_bits_raw(port, pins); + ret = api->port_clear_bits_raw(port, pins); + SYS_PORT_TRACING_FUNC_EXIT(gpio_port, clear_bits_raw, port, ret); + return ret; } /** @@ -1429,8 +1476,13 @@ static inline int z_impl_gpio_port_toggle_bits(const struct device *port, { const struct gpio_driver_api *api = (const struct gpio_driver_api *)port->api; + int ret; + + SYS_PORT_TRACING_FUNC_ENTER(gpio_port, toggle_bits, port, pins); - return api->port_toggle_bits(port, pins); + ret = api->port_toggle_bits(port, pins); + SYS_PORT_TRACING_FUNC_EXIT(gpio_port, toggle_bits, port, ret); + return ret; } /** @@ -1693,11 +1745,15 @@ static inline void gpio_init_callback(struct gpio_callback *callback, gpio_callback_handler_t handler, gpio_port_pins_t pin_mask) { + SYS_PORT_TRACING_FUNC_ENTER(gpio, init_callback, callback, handler, pin_mask); + __ASSERT(callback, "Callback pointer should not be NULL"); __ASSERT(handler, "Callback handler pointer should not be NULL"); callback->handler = handler; callback->pin_mask = pin_mask; + + SYS_PORT_TRACING_FUNC_EXIT(gpio, init_callback, callback); } /** @@ -1719,12 +1775,18 @@ static inline int gpio_add_callback(const struct device *port, { const struct gpio_driver_api *api = (const struct gpio_driver_api *)port->api; + int ret; + + SYS_PORT_TRACING_FUNC_ENTER(gpio, add_callback, port, callback); if (api->manage_callback == NULL) { + SYS_PORT_TRACING_FUNC_EXIT(gpio, add_callback, port, -ENOSYS); return -ENOSYS; } - return api->manage_callback(port, callback, true); + ret = api->manage_callback(port, callback, true); + SYS_PORT_TRACING_FUNC_EXIT(gpio, add_callback, port, ret); + return ret; } /** @@ -1767,12 +1829,18 @@ static inline int gpio_remove_callback(const struct device *port, { const struct gpio_driver_api *api = (const struct gpio_driver_api *)port->api; + int ret; + + SYS_PORT_TRACING_FUNC_ENTER(gpio, remove_callback, port, callback); if (api->manage_callback == NULL) { + SYS_PORT_TRACING_FUNC_EXIT(gpio, remove_callback, port, -ENOSYS); return -ENOSYS; } - return api->manage_callback(port, callback, false); + ret = api->manage_callback(port, callback, false); + SYS_PORT_TRACING_FUNC_EXIT(gpio, remove_callback, port, ret); + return ret; } /** @@ -1812,12 +1880,18 @@ static inline int z_impl_gpio_get_pending_int(const struct device *dev) { const struct gpio_driver_api *api = (const struct gpio_driver_api *)dev->api; + int ret; + + SYS_PORT_TRACING_FUNC_ENTER(gpio, get_pending_int, dev); if (api->get_pending_int == NULL) { + SYS_PORT_TRACING_FUNC_EXIT(gpio, get_pending_int, dev, -ENOSYS); return -ENOSYS; } - return api->get_pending_int(dev); + ret = api->get_pending_int(dev); + SYS_PORT_TRACING_FUNC_EXIT(gpio, get_pending_int, dev, ret); + return ret; } /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_intel.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_intel.h index b20c3e60..a5be9802 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_intel.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_intel.h @@ -4,6 +4,13 @@ * SPDX-License-Identifier: Apache-2.0 */ +#ifndef ZEPHYR_INCLUDE_DRIVERS_GPIO_GPIO_INTEL_H_ +#define ZEPHYR_INCLUDE_DRIVERS_GPIO_GPIO_INTEL_H_ + +#ifdef __cplusplus +extern "C" { +#endif + struct gpio_acpi_res { uint8_t num_pins; uint32_t pad_base; @@ -13,3 +20,9 @@ struct gpio_acpi_res { uint16_t base_num; uintptr_t reg_base; }; + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DRIVERS_GPIO_GPIO_INTEL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_mmio32.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_mmio32.h index e959efd4..005f7205 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_mmio32.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_mmio32.h @@ -11,6 +11,10 @@ #include #include +#ifdef __cplusplus +extern "C" { +#endif + extern const struct gpio_driver_api gpio_mmio32_api; struct gpio_mmio32_config { @@ -68,5 +72,8 @@ DEVICE_DT_DEFINE(node_id, \ #endif +#ifdef __cplusplus +} +#endif #endif /* ZEPHYR_INCLUDE_DRIVERS_GPIO_GPIO_MMIO32_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_nct38xx.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_nct38xx.h index 785515e8..a6f53b7c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_nct38xx.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_nct38xx.h @@ -7,6 +7,10 @@ #ifndef ZEPHYR_INCLUDE_DRIVERS_GPIO_GPIO_NCT38XX_H_ #define ZEPHYR_INCLUDE_DRIVERS_GPIO_GPIO_NCT38XX_H_ +#ifdef __cplusplus +extern "C" { +#endif + /** * @brief Dispatch all GPIO ports ISR in the NCT38XX device. * @@ -14,4 +18,8 @@ */ void nct38xx_gpio_alert_handler(const struct device *dev); +#ifdef __cplusplus +} +#endif + #endif /* ZEPHYR_INCLUDE_DRIVERS_GPIO_GPIO_NCT38XX_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_pcal64xxa.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_pcal64xxa.h new file mode 100644 index 00000000..07e4a722 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_pcal64xxa.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 SILA Embedded Solutions GmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_GPIO_GPIO_PCAL64XXA_H_ +#define ZEPHYR_INCLUDE_DRIVERS_GPIO_GPIO_PCAL64XXA_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Manually reset a PCAL64XXA + * + * Resetting a PCAL64XXA manually is only necessary if the by default + * enabled automatic reset has been disabled. + * + * @param dev Pointer to the device structure for the driver instance. + * + * @retval 0 If successful. + */ +int pcal64xxa_reset(const struct device *dev); + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DRIVERS_GPIO_GPIO_PCAL64XXA_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_sx1509b.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_sx1509b.h index 77705721..9ccdab08 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_sx1509b.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_sx1509b.h @@ -10,6 +10,10 @@ #include #include +#ifdef __cplusplus +extern "C" { +#endif + /** * @brief Configure a pin for LED intensity. * @@ -42,4 +46,8 @@ int sx1509b_led_intensity_pin_configure(const struct device *dev, int sx1509b_led_intensity_pin_set(const struct device *dev, gpio_pin_t pin, uint8_t intensity_val); +#ifdef __cplusplus +} +#endif + #endif /* ZEPHYR_INCLUDE_DRIVERS_GPIO_GPIO_SX1509B_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_utils.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_utils.h index 43818f41..3ee77f34 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_utils.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/gpio/gpio_utils.h @@ -16,6 +16,11 @@ #include #include #include +#include + +#ifdef __cplusplus +extern "C" { +#endif #define GPIO_PORT_PIN_MASK_FROM_NGPIOS(ngpios) \ ((gpio_port_pins_t)(((uint64_t)1 << (ngpios)) - 1U)) @@ -88,12 +93,20 @@ static inline void gpio_fire_callbacks(sys_slist_t *list, { struct gpio_callback *cb, *tmp; + sys_port_trace_gpio_fire_callbacks_enter(list, port, pins); + SYS_SLIST_FOR_EACH_CONTAINER_SAFE(list, cb, tmp, node) { if (cb->pin_mask & pins) { __ASSERT(cb->handler, "No callback handler!"); + cb->handler(port, cb, cb->pin_mask & pins); + sys_port_trace_gpio_fire_callback(port, cb); } } } +#ifdef __cplusplus +} +#endif + #endif /* ZEPHYR_INCLUDE_DRIVERS_GPIO_GPIO_UTILS_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/haptics.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/haptics.h new file mode 100644 index 00000000..bc76959f --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/haptics.h @@ -0,0 +1,88 @@ +/* + * Copyright 2024 Cirrus Logic, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_HAPTICS_H_ +#define ZEPHYR_INCLUDE_DRIVERS_HAPTICS_H_ + +/** + * @brief Haptics Interface + * @defgroup haptics_interface Haptics Interface + * @ingroup io_interfaces + * @{ + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @typedef haptics_stop_output_t + * @brief Set the haptic device to stop output + * @param dev Pointer to the device structure for haptic device instance + */ +typedef int (*haptics_stop_output_t)(const struct device *dev); + +/** + * @typedef haptics_start_output_t + * @brief Set the haptic device to start output for a playback event + */ +typedef int (*haptics_start_output_t)(const struct device *dev); + +/** + * @brief Haptic device API + */ +__subsystem struct haptics_driver_api { + haptics_start_output_t start_output; + haptics_stop_output_t stop_output; +}; + +/** + * @brief Set the haptic device to start output for a playback event + * + * @param dev Pointer to the device structure for haptic device instance + * + * @retval 0 if successful + * @retval <0 if failed + */ +__syscall int haptics_start_output(const struct device *dev); + +static inline int z_impl_haptics_start_output(const struct device *dev) +{ + const struct haptics_driver_api *api = (const struct haptics_driver_api *)dev->api; + + return api->start_output(dev); +} + +/** + * @brief Set the haptic device to stop output for a playback event + * + * @param dev Pointer to the device structure for haptic device instance + * + * @retval 0 if successful + * @retval <0 if failed + */ +__syscall int haptics_stop_output(const struct device *dev); + +static inline int z_impl_haptics_stop_output(const struct device *dev) +{ + const struct haptics_driver_api *api = (const struct haptics_driver_api *)dev->api; + + return api->stop_output(dev); +} + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#include + +#endif /* ZEPHYR_INCLUDE_DRIVERS_HAPTICS_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/haptics/drv2605.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/haptics/drv2605.h new file mode 100644 index 00000000..ada27d09 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/haptics/drv2605.h @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2024 Cirrus Logic, Inc. + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_HAPTICS_DRV2605_H_ +#define ZEPHYR_INCLUDE_DRIVERS_HAPTICS_DRV2605_H_ + +#include +#include + +#define DRV2605_WAVEFORM_SEQUENCER_MAX 8 + +enum drv2605_library { + DRV2605_LIBRARY_EMPTY = 0, + DRV2605_LIBRARY_TS2200_A, + DRV2605_LIBRARY_TS2200_B, + DRV2605_LIBRARY_TS2200_C, + DRV2605_LIBRARY_TS2200_D, + DRV2605_LIBRARY_TS2200_E, + DRV2605_LIBRARY_LRA, +}; + +enum drv2605_mode { + DRV2605_MODE_INTERNAL_TRIGGER = 0, + DRV2605_MODE_EXTERNAL_EDGE_TRIGGER, + DRV2605_MODE_EXTERNAL_LEVEL_TRIGGER, + DRV2605_MODE_PWM_ANALOG_INPUT, + DRV2605_MODE_AUDIO_TO_VIBE, + DRV2605_MODE_RTP, + DRV2605_MODE_DIAGNOSTICS, + DRV2605_MODE_AUTO_CAL, +}; + +/** + * @brief DRV2605 haptic driver signal sources + */ +enum drv2605_haptics_source { + /** The playback source is device ROM */ + DRV2605_HAPTICS_SOURCE_ROM, + /** The playback source is the RTP buffer */ + DRV2605_HAPTICS_SOURCE_RTP, + /** The playback source is audio */ + DRV2605_HAPTICS_SOURCE_AUDIO, + /** The playback source is a PWM signal */ + DRV2605_HAPTICS_SOURCE_PWM, + /** The playback source is an analog signal */ + DRV2605_HAPTICS_SOURCE_ANALOG, +}; + +struct drv2605_rom_data { + enum drv2605_mode trigger; + enum drv2605_library library; + uint8_t seq_regs[DRV2605_WAVEFORM_SEQUENCER_MAX]; + uint8_t overdrive_time; + uint8_t sustain_pos_time; + uint8_t sustain_neg_time; + uint8_t brake_time; +}; + +struct drv2605_rtp_data { + size_t size; + uint32_t *rtp_hold_us; + uint8_t *rtp_input; +}; + +union drv2605_config_data { + struct drv2605_rom_data *rom_data; + struct drv2605_rtp_data *rtp_data; +}; + +/** + * @brief Configure the DRV2605 device for a particular signal source + * + * @param dev Pointer to the device structure for haptic device instance + * @param source The type of haptic signal source desired + * @param config_data Pointer to the configuration data union for the source + * + * @retval 0 if successful + * @retval -ENOTSUP if the signal source is not supported + * @retval <0 if failed + */ +int drv2605_haptic_config(const struct device *dev, enum drv2605_haptics_source source, + const union drv2605_config_data *config_data); + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/hwspinlock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/hwspinlock.h index c6e5b480..c1e6c02d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/hwspinlock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/hwspinlock.h @@ -78,8 +78,9 @@ static inline int z_impl_hwspinlock_trylock(const struct device *dev, uint32_t i const struct hwspinlock_driver_api *api = (const struct hwspinlock_driver_api *)dev->api; - if (api->trylock == NULL) + if (api->trylock == NULL) { return -ENOSYS; + } return api->trylock(dev, id); } @@ -100,8 +101,9 @@ static inline void z_impl_hwspinlock_lock(const struct device *dev, uint32_t id) const struct hwspinlock_driver_api *api = (const struct hwspinlock_driver_api *)dev->api; - if (api->lock != NULL) + if (api->lock != NULL) { api->lock(dev, id); + } } /** @@ -120,8 +122,9 @@ static inline void z_impl_hwspinlock_unlock(const struct device *dev, uint32_t i const struct hwspinlock_driver_api *api = (const struct hwspinlock_driver_api *)dev->api; - if (api->unlock != NULL) + if (api->unlock != NULL) { api->unlock(dev, id); + } } /** @@ -142,8 +145,9 @@ static inline uint32_t z_impl_hwspinlock_get_max_id(const struct device *dev) const struct hwspinlock_driver_api *api = (const struct hwspinlock_driver_api *)dev->api; - if (api->get_max_id == NULL) + if (api->get_max_id == NULL) { return 0; + } return api->get_max_id(dev); } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i2c.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i2c.h index 240d6132..5f1c3fbe 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i2c.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i2c.h @@ -474,14 +474,26 @@ static inline bool i2c_is_ready_dt(const struct i2c_dt_spec *spec) * @brief Check if the current message is a read operation * * @param msg The message to check - * @return true if the I2C message is sa read operation + * @return true if the I2C message is a read operation * @return false if the I2C message is a write operation */ -static inline bool i2c_is_read_op(struct i2c_msg *msg) +static inline bool i2c_is_read_op(const struct i2c_msg *msg) { return (msg->flags & I2C_MSG_READ) == I2C_MSG_READ; } +/** + * @brief Check if the current message includes a stop. + * + * @param msg The message to check + * @return true if the I2C message includes a stop + * @return false if the I2C message includes a stop + */ +static inline bool i2c_is_stop_op(const struct i2c_msg *msg) +{ + return (msg->flags & I2C_MSG_STOP) == I2C_MSG_STOP; +} + /** * @brief Dump out an I2C message * @@ -785,6 +797,14 @@ static inline int z_impl_i2c_transfer(const struct device *dev, const struct i2c_driver_api *api = (const struct i2c_driver_api *)dev->api; + if (!num_msgs) { + return 0; + } + + if (!IS_ENABLED(CONFIG_I2C_ALLOW_NO_STOP_TRANSACTIONS)) { + msgs[num_msgs - 1].flags |= I2C_MSG_STOP; + } + int res = api->transfer(dev, msgs, num_msgs, addr); i2c_xfer_stats(dev, msgs, num_msgs); @@ -821,18 +841,28 @@ static inline int z_impl_i2c_transfer(const struct device *dev, * @retval -EWOULDBLOCK If the device is temporarily busy doing another transfer */ static inline int i2c_transfer_cb(const struct device *dev, - struct i2c_msg *msgs, - uint8_t num_msgs, - uint16_t addr, - i2c_callback_t cb, - void *userdata) + struct i2c_msg *msgs, + uint8_t num_msgs, + uint16_t addr, + i2c_callback_t cb, + void *userdata) { - const struct i2c_driver_api *api = (const struct i2c_driver_api *)dev->api; + const struct i2c_driver_api *api = + (const struct i2c_driver_api *)dev->api; if (api->transfer_cb == NULL) { return -ENOSYS; } + if (!num_msgs) { + cb(dev, 0, userdata); + return 0; + } + + if (!IS_ENABLED(CONFIG_I2C_ALLOW_NO_STOP_TRANSACTIONS)) { + msgs[num_msgs - 1].flags |= I2C_MSG_STOP; + } + return api->transfer_cb(dev, msgs, num_msgs, addr, cb, userdata); } @@ -982,6 +1012,18 @@ static inline int i2c_transfer_signal(const struct device *dev, #if defined(CONFIG_I2C_RTIO) || defined(__DOXYGEN__) +/** + * @brief Fallback submit implementation + * + * This implementation will schedule a blocking I2C transaction on the bus via the RTIO work + * queue. It is only used if the I2C driver did not implement the iodev_submit function. + * + * @param dev Pointer to the device structure for an I2C controller driver. + * @param iodev_sqe Prepared submissions queue entry connected to an iodev + * defined by I2C_DT_IODEV_DEFINE. + */ +void i2c_iodev_submit_fallback(const struct device *dev, struct rtio_iodev_sqe *iodev_sqe); + /** * @brief Submit request(s) to an I2C device with RTIO * @@ -994,6 +1036,10 @@ static inline void i2c_iodev_submit(struct rtio_iodev_sqe *iodev_sqe) const struct device *dev = dt_spec->bus; const struct i2c_driver_api *api = (const struct i2c_driver_api *)dev->api; + if (api->iodev_submit == NULL) { + rtio_iodev_sqe_err(iodev_sqe, -ENOSYS); + return; + } api->iodev_submit(dt_spec->bus, iodev_sqe); } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c.h index fb94f5f7..f3581663 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c.h @@ -17,14 +17,18 @@ * @{ */ -#include -#include +#include +#include +#include +#include #include #include #include #include #include +#include +#include #ifdef __cplusplus extern "C" { @@ -32,6 +36,7 @@ extern "C" { /** * @name Bus Characteristic Register (BCR) + * @anchor I3C_BCR * * - BCR[7:6]: Device Role * - 0: I3C Target @@ -121,11 +126,8 @@ extern "C" { /** Device Role - I3C Controller Capable. */ #define I3C_BCR_DEVICE_ROLE_I3C_CONTROLLER_CAPABLE 1U -/** Device Role bit shift value. */ -#define I3C_BCR_DEVICE_ROLE_SHIFT 6U - /** Device Role bit shift mask. */ -#define I3C_BCR_DEVICE_ROLE_MASK (0x03U << I3C_BCR_DEVICE_ROLE_SHIFT) +#define I3C_BCR_DEVICE_ROLE_MASK GENMASK(7U, 6U) /** * @brief Device Role @@ -135,12 +137,13 @@ extern "C" { * @param bcr BCR value */ #define I3C_BCR_DEVICE_ROLE(bcr) \ - (((bcr) & I3C_BCR_DEVICE_ROLE_MASK) >> I3C_BCR_DEVICE_ROLE_SHIFT) + FIELD_GET(I3C_BCR_DEVICE_ROLE_MASK, (bcr)) /** @} */ /** * @name Legacy Virtual Register (LVR) + * @anchor I3C_LVR * * Legacy Virtual Register (LVR) * - LVR[7:5]: I2C device index: @@ -164,9 +167,6 @@ extern "C" { /** I2C FM Mode. */ #define I3C_LVR_I2C_FM_MODE 1 -/** I2C Mode Indicator bit shift value. */ -#define I3C_LVR_I2C_MODE_SHIFT 4 - /** I2C Mode Indicator bitmask. */ #define I3C_LVR_I2C_MODE_MASK BIT(4) @@ -178,7 +178,7 @@ extern "C" { * @param lvr LVR value */ #define I3C_LVR_I2C_MODE(lvr) \ - (((lvr) & I3C_LVR_I2C_MODE_MASK) >> I3C_LVR_I2C_MODE_SHIFT) + FIELD_GET(I3C_LVR_I2C_MODE_MASK, (lvr)) /** * @brief I2C Device Index 0. @@ -204,11 +204,8 @@ extern "C" { */ #define I3C_LVR_I2C_DEV_IDX_2 2 -/** I2C Device Index bit shift value. */ -#define I3C_LVR_I2C_DEV_IDX_SHIFT 5 - /** I2C Device Index bitmask. */ -#define I3C_LVR_I2C_DEV_IDX_MASK (0x07U << I3C_LVR_I2C_DEV_IDX_SHIFT) +#define I3C_LVR_I2C_DEV_IDX_MASK GENMASK(7U, 5U) /** * @brief I2C Device Index @@ -218,7 +215,7 @@ extern "C" { * @param lvr LVR value */ #define I3C_LVR_I2C_DEV_IDX(lvr) \ - (((lvr) & I3C_LVR_I2C_DEV_IDX_MASK) >> I3C_LVR_I2C_DEV_IDX_SHIFT) + FIELD_GET(I3C_LVR_I2C_DEV_IDX_MASK, (lvr)) /** @} */ @@ -299,7 +296,7 @@ enum i3c_data_rate { * * These are error codes defined by the I3C specification. * - * @c I3C_ERROR_CE_UNKNOWN and @c I3C_ERROR_CE_NONE are not + * #I3C_ERROR_CE_UNKNOWN and #I3C_ERROR_CE_NONE are not * official error codes according to the specification. * These are there simply to aid in error handling during * interactions with the I3C drivers and subsystem. @@ -332,7 +329,7 @@ enum i3c_sdr_controller_error_codes { * * These are error codes defined by the I3C specification. * - * @c I3C_ERROR_TE_UNKNOWN and @c I3C_ERROR_TE_NONE are not + * #I3C_ERROR_TE_UNKNOWN and #I3C_ERROR_TE_NONE are not * official error codes according to the specification. * These are there simply to aid in error handling during * interactions with the I3C drivers and subsystem. @@ -470,7 +467,7 @@ enum i3c_sdr_target_error_codes { * Invocations of i3c_transfer() may not indicate an error when an * unsupported configuration is encountered. In some cases drivers * will generate separate transactions for each message fragment, with - * or without presence of @ref I3C_MSG_RESTART in #flags. + * or without presence of #I3C_MSG_RESTART in #flags. */ struct i3c_msg { /** Data buffer in bytes */ @@ -493,7 +490,7 @@ struct i3c_msg { /** * HDR mode (@c I3C_MSG_HDR_MODE*) for transfer - * if any @c I3C_MSG_HDR_* is set in @c flags. + * if any @c I3C_MSG_HDR_* is set in #flags. * * Use SDR mode if none is set. */ @@ -545,7 +542,7 @@ struct i3c_config_controller { * @brief Custom I3C configuration parameters. * * This can be used to configure the I3C hardware on parameters - * not covered by @see i3c_config_controller or @see i3c_config_target. + * not covered by i3c_config_controller or i3c_config_target. * Mostly used to configure vendor specific parameters of the I3C * hardware. */ @@ -584,21 +581,23 @@ __subsystem struct i3c_driver_api { * * @see i2c_driver_api for more information. * - * (DO NOT MOVE! Must be at the beginning.) + * @internal + * @warning DO NOT MOVE! Must be at the beginning. + * @endinternal */ struct i2c_driver_api i2c_api; /** * Configure the I3C hardware. * - * @see i3c_configure + * @see i3c_configure() * * @param dev Pointer to controller device driver instance. * @param type Type of configuration parameters being passed * in @p config. * @param config Pointer to the configuration parameters. * - * @return @see i3c_configure + * @return See i3c_configure() */ int (*configure)(const struct device *dev, enum i3c_config_type type, void *config); @@ -606,14 +605,14 @@ __subsystem struct i3c_driver_api { /** * Get configuration of the I3C hardware. * - * @see i3c_config_get + * @see i3c_config_get() * * @param[in] dev Pointer to controller device driver instance. * @param[in] type Type of configuration parameters being passed * in @p config. * @param[in, out] config Pointer to the configuration parameters. * - * @return @see i3c_config_get + * @return See i3c_config_get() */ int (*config_get)(const struct device *dev, enum i3c_config_type type, void *config); @@ -623,11 +622,11 @@ __subsystem struct i3c_driver_api { * * Controller only API. * - * @see i3c_recover_bus + * @see i3c_recover_bus() * * @param dev Pointer to controller device driver instance. * - * @return @see i3c_recover_bus + * @return See i3c_recover_bus() */ int (*recover_bus)(const struct device *dev); @@ -636,30 +635,28 @@ __subsystem struct i3c_driver_api { * * Optional API. * - * @see i3c_attach_i3c_device + * @see i3c_attach_i3c_device() * * @param dev Pointer to controller device driver instance. * @param target Pointer to target device descriptor. - * @param addr Address to attach with * - * @return @see i3c_attach_i3c_device + * @return See i3c_attach_i3c_device() */ int (*attach_i3c_device)(const struct device *dev, - struct i3c_device_desc *target, - uint8_t addr); + struct i3c_device_desc *target); /** * I3C Address Update * * Optional API. * - * @see i3c_reattach_i3c_device + * @see i3c_reattach_i3c_device() * * @param dev Pointer to controller device driver instance. * @param target Pointer to target device descriptor. * @param old_dyn_addr Old dynamic address * - * @return @see i3c_reattach_i3c_device + * @return See i3c_reattach_i3c_device() */ int (*reattach_i3c_device)(const struct device *dev, struct i3c_device_desc *target, @@ -670,12 +667,12 @@ __subsystem struct i3c_driver_api { * * Optional API. * - * @see i3c_detach_i3c_device + * @see i3c_detach_i3c_device() * * @param dev Pointer to controller device driver instance. * @param target Pointer to target device descriptor. * - * @return @see i3c_detach_i3c_device + * @return See i3c_detach_i3c_device() */ int (*detach_i3c_device)(const struct device *dev, struct i3c_device_desc *target); @@ -685,12 +682,12 @@ __subsystem struct i3c_driver_api { * * Optional API. * - * @see i3c_attach_i2c_device + * @see i3c_attach_i2c_device() * * @param dev Pointer to controller device driver instance. * @param target Pointer to target device descriptor. * - * @return @see i3c_attach_i2c_device + * @return See i3c_attach_i2c_device() */ int (*attach_i2c_device)(const struct device *dev, struct i3c_i2c_device_desc *target); @@ -700,12 +697,12 @@ __subsystem struct i3c_driver_api { * * Optional API. * - * @see i3c_detach_i2c_device + * @see i3c_detach_i2c_device() * * @param dev Pointer to controller device driver instance. * @param target Pointer to target device descriptor. * - * @return @see i3c_detach_i2c_device + * @return See i3c_detach_i2c_device() */ int (*detach_i2c_device)(const struct device *dev, struct i3c_i2c_device_desc *target); @@ -715,11 +712,11 @@ __subsystem struct i3c_driver_api { * * Controller only API. * - * @see i3c_do_daa + * @see i3c_do_daa() * * @param dev Pointer to controller device driver instance. * - * @return @see i3c_do_daa + * @return See i3c_do_daa() */ int (*do_daa)(const struct device *dev); @@ -728,12 +725,12 @@ __subsystem struct i3c_driver_api { * * Controller only API. * - * @see i3c_do_ccc + * @see i3c_do_ccc() * * @param dev Pointer to controller device driver instance. * @param payload Pointer to the CCC payload. * - * @return @see i3c_do_ccc + * @return See i3c_do_ccc() */ int (*do_ccc)(const struct device *dev, struct i3c_ccc_payload *payload); @@ -741,14 +738,14 @@ __subsystem struct i3c_driver_api { /** * Transfer messages in I3C mode. * - * @see i3c_transfer + * @see i3c_transfer() * * @param dev Pointer to controller device driver instance. * @param target Pointer to target device descriptor. * @param msg Pointer to I3C messages. * @param num_msgs Number of messages to transfer. * - * @return @see i3c_transfer + * @return See i3c_transfer() */ int (*i3c_xfers)(const struct device *dev, struct i3c_device_desc *target, @@ -766,7 +763,7 @@ __subsystem struct i3c_driver_api { * @param dev Pointer to controller device driver instance. * @param id Pointer to I3C device ID. * - * @return @see i3c_device_find. + * @return See i3c_device_find(). */ struct i3c_device_desc *(*i3c_device_find)(const struct device *dev, const struct i3c_device_id *id); @@ -776,12 +773,12 @@ __subsystem struct i3c_driver_api { * * Target device only API. * - * @see i3c_ibi_request + * @see i3c_ibi_request() * * @param dev Pointer to controller device driver instance. * @param request Pointer to IBI request struct. * - * @return @see i3c_ibi_request + * @return See i3c_ibi_request() */ int (*ibi_raise)(const struct device *dev, struct i3c_ibi *request); @@ -791,12 +788,12 @@ __subsystem struct i3c_driver_api { * * Controller only API. * - * @see i3c_ibi_enable + * @see i3c_ibi_enable() * * @param dev Pointer to controller device driver instance. * @param target Pointer to target device descriptor. * - * @return @see i3c_ibi_enable + * @return See i3c_ibi_enable() */ int (*ibi_enable)(const struct device *dev, struct i3c_device_desc *target); @@ -806,12 +803,12 @@ __subsystem struct i3c_driver_api { * * Controller only API. * - * @see i3c_ibi_disable + * @see i3c_ibi_disable() * * @param dev Pointer to controller device driver instance. * @param target Pointer to target device descriptor. * - * @return @see i3c_ibi_disable + * @return See i3c_ibi_disable() */ int (*ibi_disable)(const struct device *dev, struct i3c_device_desc *target); @@ -824,12 +821,12 @@ __subsystem struct i3c_driver_api { * * Target device only API. * - * @see i3c_target_register + * @see i3c_target_register() * * @param dev Pointer to the controller device driver instance. * @param cfg I3C target device configuration * - * @return @see i3c_target_register + * @return See i3c_target_register() */ int (*target_register)(const struct device *dev, struct i3c_target_config *cfg); @@ -842,12 +839,12 @@ __subsystem struct i3c_driver_api { * * Target device only API. * - * @see i3c_target_unregister + * @see i3c_target_unregister() * * @param dev Pointer to the controller device driver instance. * @param cfg I3C target device configuration * - * @return @see i3c_target_unregister + * @return See i3c_target_unregister() */ int (*target_unregister)(const struct device *dev, struct i3c_target_config *cfg); @@ -859,16 +856,17 @@ __subsystem struct i3c_driver_api { * * Target device only API. * - * @see i3c_target_tx_write + * @see i3c_target_tx_write() * * @param dev Pointer to the controller device driver instance. * @param buf Pointer to the buffer * @param len Length of the buffer + * @param hdr_mode HDR mode * - * @return @see i3c_target_tx_write + * @return See i3c_target_tx_write() */ int (*target_tx_write)(const struct device *dev, - uint8_t *buf, uint16_t len); + uint8_t *buf, uint16_t len, uint8_t hdr_mode); }; /** @@ -886,8 +884,8 @@ struct i3c_device_id { /** * @brief Structure initializer for i3c_device_id from PID * - * This helper macro expands to a static initializer for a struct - * i3c_device_id by populating the PID (Provisioned ID) field. + * This helper macro expands to a static initializer for a i3c_device_id + * by populating the PID (Provisioned ID) field. * * @param pid Provisioned ID. */ @@ -905,22 +903,15 @@ struct i3c_device_id { * - i3c_transfers() to initiate data transfers between controller and * target device. * - * Fields @c bus, @c pid and @c static_addr must be initialized by - * the module that implements the target device behavior prior to - * passing the object reference to I3C controller device APIs. - * @c static_addr can be zero if target device does not have static - * address. + * Fields #bus, #pid and #static_addr must be initialized by the module that + * implements the target device behavior prior to passing the object reference + * to I3C controller device APIs. #static_addr can be zero if target device does + * not have static address. * - * Field @c node should not be initialized or modified manually. + * Internal field @c node should not be initialized or modified manually. */ struct i3c_device_desc { - /** - * Used to attach this node onto a linked list. - * - * @cond INTERNAL_HIDDEN - */ sys_snode_t node; - /** @endcond */ /** I3C bus to which this target device is attached */ const struct device * const bus; @@ -956,6 +947,14 @@ struct i3c_device_desc { */ const uint8_t init_dynamic_addr; + /** + * Device support for SETAASA + * + * This will be used as an optimization for bus initializtion if the + * device supports SETAASA. + */ + const bool supports_setaasa; + /** * Dynamic Address for this target device used for communication. * @@ -978,38 +977,14 @@ struct i3c_device_desc { * - Set Group Address (SETGRPA) * * 0 if group address has not been assigned. + * Only available if @kconfig{CONFIG_I3C_USE_GROUP_ADDR} is set. */ uint8_t group_addr; #endif /* CONFIG_I3C_USE_GROUP_ADDR */ /** * Bus Characteristic Register (BCR) - * - BCR[7:6]: Device Role - * - 0: I3C Target - * - 1: I3C Controller capable - * - 2: Reserved - * - 3: Reserved - * - BCR[5]: Advanced Capabilities - * - 0: Does not support optional advanced capabilities. - * - 1: Supports optional advanced capabilities which - * can be viewed via GETCAPS CCC. - * - BCR[4}: Virtual Target Support - * - 0: Is not a virtual target. - * - 1: Is a virtual target. - * - BCR[3]: Offline Capable - * - 0: Will always response to I3C commands. - * - 1: Will not always response to I3C commands. - * - BCR[2]: IBI Payload - * - 0: No data bytes following the accepted IBI. - * - 1: One data byte (MDB, Mandatory Data Byte) follows - * the accepted IBI. Additional data bytes may also - * follows. - * - BCR[1]: IBI Request Capable - * - 0: Not capable - * - 1: Capable - * - BCR[0]: Max Data Speed Limitation - * - 0: No Limitation - * - 1: Limitation obtained via GETMXDS CCC. + * @see @ref I3C_BCR */ uint8_t bcr; @@ -1095,10 +1070,9 @@ struct i3c_device_desc { uint8_t getcap4; } getcaps; + /** @cond INTERNAL_HIDDEN */ /** * Private data by the controller to aid in transactions. Do not modify. - * - * @cond INTERNAL_HIDDEN */ void *controller_priv; /** @endcond */ @@ -1106,6 +1080,7 @@ struct i3c_device_desc { #if defined(CONFIG_I3C_USE_IBI) || defined(__DOXYGEN__) /** * In-Band Interrupt (IBI) callback. + * Only available if @kconfig{CONFIG_I3C_USE_IBI} is set. */ i3c_target_ibi_cb_t ibi_cb; #endif /* CONFIG_I3C_USE_IBI */ @@ -1125,13 +1100,7 @@ struct i3c_device_desc { * reference to I3C controller device APIs. */ struct i3c_i2c_device_desc { - /** - * Used to attach this node onto a linked list. - * - * @cond INTERNAL_HIDDEN - */ sys_snode_t node; - /** @endcond */ /** I3C bus to which this I2C device is attached */ const struct device *bus; @@ -1141,24 +1110,13 @@ struct i3c_i2c_device_desc { /** * Legacy Virtual Register (LVR) - * - LVR[7:5]: I2C device index: - * - 0: I2C device has a 50 ns spike filter where - * it is not affected by high frequency on SCL. - * - 1: I2C device does not have a 50 ns spike filter - * but can work with high frequency on SCL. - * - 2: I2C device does not have a 50 ns spike filter - * and cannot work with high frequency on SCL. - * - LVR[4]: I2C mode indicator: - * - 0: FM+ mode - * - 1: FM mode - * - LVR[3:0]: Reserved. + * @see @ref I3C_LVR */ const uint8_t lvr; + /** @cond INTERNAL_HIDDEN */ /** * Private data by the controller to aid in transactions. Do not modify. - * - * @cond INTERNAL_HIDDEN */ void *controller_priv; /** @endcond */ @@ -1246,6 +1204,28 @@ struct i3c_driver_data { struct i3c_dev_attached_list attached_dev; }; +/** + * @brief iterate over all I3C devices present on the bus + * + * @param bus: the I3C bus device pointer + * @param desc: an I3C device descriptor pointer updated to point to the current slot + * at each iteration of the loop + */ +#define I3C_BUS_FOR_EACH_I3CDEV(bus, desc) \ + SYS_SLIST_FOR_EACH_CONTAINER( \ + &((struct i3c_driver_data *)(bus->data))->attached_dev.devices.i3c, desc, node) + +/** + * @brief iterate over all I2C devices present on the bus + * + * @param bus: the I3C bus device pointer + * @param desc: an I2C device descriptor pointer updated to point to the current slot + * at each iteration of the loop + */ +#define I3C_BUS_FOR_EACH_I2CDEV(bus, desc) \ + SYS_SLIST_FOR_EACH_CONTAINER( \ + &((struct i3c_driver_data *)(bus->data))->attached_dev.devices.i2c, desc, node) + /** * @brief Find a I3C target device descriptor by ID. * @@ -1256,7 +1236,7 @@ struct i3c_driver_data { * @param id Pointer to I3C device ID struct. * * @return Pointer to the I3C target device descriptor, or - * NULL if none is found. + * `NULL` if none is found. */ struct i3c_device_desc *i3c_dev_list_find(const struct i3c_dev_list *dev_list, const struct i3c_device_id *id); @@ -1267,13 +1247,13 @@ struct i3c_device_desc *i3c_dev_list_find(const struct i3c_dev_list *dev_list, * This finds the I3C target device descriptor in the attached * device list matching the dynamic address (@p addr) * - * @param dev_list Pointer to the device list struct. + * @param dev Pointer to controller device driver instance. * @param addr Dynamic address to be matched. * * @return Pointer to the I3C target device descriptor, or - * NULL if none is found. + * `NULL` if none is found. */ -struct i3c_device_desc *i3c_dev_list_i3c_addr_find(struct i3c_dev_attached_list *dev_list, +struct i3c_device_desc *i3c_dev_list_i3c_addr_find(const struct device *dev, uint8_t addr); /** @@ -1282,30 +1262,15 @@ struct i3c_device_desc *i3c_dev_list_i3c_addr_find(struct i3c_dev_attached_list * This finds the I2C target device descriptor in the attached * device list matching the address (@p addr) * - * @param dev_list Pointer to the device list struct. + * @param dev Pointer to controller device driver instance. * @param addr Address to be matched. * * @return Pointer to the I2C target device descriptor, or - * NULL if none is found. + * `NULL` if none is found. */ -struct i3c_i2c_device_desc *i3c_dev_list_i2c_addr_find(struct i3c_dev_attached_list *dev_list, +struct i3c_i2c_device_desc *i3c_dev_list_i2c_addr_find(const struct device *dev, uint16_t addr); -/** - * @brief Helper function to find the default address an i3c device is attached with - * - * This is a helper function to find the default address the - * device will be loaded with. This could be either it's static - * address, a requested dynamic address, or just a dynamic address - * that is available - * @param[in] target The pointer of the device descriptor - * @param[out] addr Address to be assigned to target device. - * - * @retval 0 if successful. - * @retval -EINVAL if the expected default address is already in use - */ -int i3c_determine_default_addr(struct i3c_device_desc *target, uint8_t *addr); - /** * @brief Helper function to find a usable address during ENTDAA. * @@ -1314,7 +1279,7 @@ int i3c_determine_default_addr(struct i3c_device_desc *target, uint8_t *addr); * search through the device list for the matching device * descriptor. If the device descriptor indicates that there is * a preferred address (i.e. assigned-address in device tree, - * @see i3c_device_desc::init_dynamic_addr), this preferred + * i3c_device_desc::init_dynamic_addr), this preferred * address will be returned if this address is still available. * If it is not available, another free address will be returned. * @@ -1328,14 +1293,14 @@ int i3c_determine_default_addr(struct i3c_device_desc *target, uint8_t *addr); * * If @p assigned_okay is true, it will return the same address * already assigned to the device - * (@see i3c_device_desc::dynamic_addr). If no address has been + * (i3c_device_desc::dynamic_addr). If no address has been * assigned, it behaves as if @p assigned_okay is false. * This is useful for assigning the same address to the same * device (for example, hot-join after device coming back from * suspend). * * If @p assigned_okay is false, the device cannot have an address - * assigned already (that @see i3c_device_desc::dynamic_addr is not + * assigned already (that i3c_device_desc::dynamic_addr is not * zero). This is mainly used during the initial DAA. * * @param[in] addr_slots Pointer to address slots struct. @@ -1403,7 +1368,7 @@ static inline int i3c_configure(const struct device *dev, * in @p config. * @param[in,out] config Pointer to the configuration parameters. * - * Note that if @p type is @c I3C_CONFIG_CUSTOM, @p config must contain + * Note that if @p type is #I3C_CONFIG_CUSTOM, @p config must contain * the ID of the parameter to be retrieved. * * @retval 0 If successful. @@ -1628,15 +1593,15 @@ static inline int z_impl_i3c_do_ccc(const struct device *dev, * to a target device synchronously. Use i3c_read()/i3c_write() * for simple read or write. * - * The array of message @a msgs must not be NULL. The number of - * message @a num_msgs may be zero, in which case no transfer occurs. + * The array of message @p msgs must not be `NULL`. The number of + * message @p num_msgs may be zero, in which case no transfer occurs. * * @note Not all scatter/gather transactions can be supported by all * drivers. As an example, a gather write (multiple consecutive - * `i3c_msg` buffers all configured for `I3C_MSG_WRITE`) may be packed + * i3c_msg buffers all configured for #I3C_MSG_WRITE) may be packed * into a single transaction by some drivers, but others may emit each * fragment as a distinct write transaction, which will not produce - * the same behavior. See the documentation of `struct i3c_msg` for + * the same behavior. See the documentation of i3c_msg for * limitations on support for multi-message bus transactions. * * @param target I3C target device descriptor. @@ -1672,7 +1637,7 @@ static inline int z_impl_i3c_transfer(struct i3c_device_desc *target, * @param dev Pointer to controller device driver instance. * @param id Pointer to I3C device ID. * - * @return Pointer to I3C device descriptor, or NULL if + * @return Pointer to I3C device descriptor, or `NULL` if * no I3C device found matching incoming @p id. */ static inline @@ -1775,7 +1740,7 @@ static inline int i3c_ibi_disable(struct i3c_device_desc *target) * whether IBI from device has payload. * * Note that BCR must have been obtained from device and - * @see i3c_device_desc::bcr must be set. + * i3c_device_desc::bcr must be set. * * @return True if IBI has payload, false otherwise. */ @@ -1792,7 +1757,7 @@ static inline int i3c_ibi_has_payload(struct i3c_device_desc *target) * whether device is capable of IBI. * * Note that BCR must have been obtained from device and - * @see i3c_device_desc::bcr must be set. + * i3c_device_desc::bcr must be set. * * @return True if IBI has payload, false otherwise. */ @@ -1802,6 +1767,23 @@ static inline int i3c_device_is_ibi_capable(struct i3c_device_desc *target) == I3C_BCR_IBI_REQUEST_CAPABLE; } +/** + * @brief Check if the target is controller capable + * + * This reads the BCR from the device descriptor struct to determine + * whether the target is controller capable + * + * Note that BCR must have been obtained from device and + * i3c_device_desc::bcr must be set. + * + * @return True if target is controller capable, false otherwise. + */ +static inline int i3c_device_is_controller_capable(struct i3c_device_desc *target) +{ + return I3C_BCR_DEVICE_ROLE(target->bcr) + == I3C_BCR_DEVICE_ROLE_I3C_CONTROLLER_CAPABLE; +} + /** @} */ /** @@ -1830,6 +1812,7 @@ static inline int i3c_write(struct i3c_device_desc *target, msg.buf = (uint8_t *)buf; msg.len = num_bytes; msg.flags = I3C_MSG_WRITE | I3C_MSG_STOP; + msg.hdr_mode = 0; msg.hdr_cmd_code = 0; return i3c_transfer(target, &msg, 1); @@ -1856,6 +1839,7 @@ static inline int i3c_read(struct i3c_device_desc *target, msg.buf = buf; msg.len = num_bytes; msg.flags = I3C_MSG_READ | I3C_MSG_STOP; + msg.hdr_mode = 0; msg.hdr_cmd_code = 0; return i3c_transfer(target, &msg, 1); @@ -1887,11 +1871,13 @@ static inline int i3c_write_read(struct i3c_device_desc *target, msg[0].buf = (uint8_t *)write_buf; msg[0].len = num_write; msg[0].flags = I3C_MSG_WRITE; + msg[0].hdr_mode = 0; msg[0].hdr_cmd_code = 0; msg[1].buf = (uint8_t *)read_buf; msg[1].len = num_read; msg[1].flags = I3C_MSG_RESTART | I3C_MSG_READ | I3C_MSG_STOP; + msg[1].hdr_mode = 0; msg[1].hdr_cmd_code = 0; return i3c_transfer(target, msg, 2); @@ -1954,11 +1940,13 @@ static inline int i3c_burst_write(struct i3c_device_desc *target, msg[0].buf = &start_addr; msg[0].len = 1U; msg[0].flags = I3C_MSG_WRITE; + msg[0].hdr_mode = 0; msg[0].hdr_cmd_code = 0; msg[1].buf = (uint8_t *)buf; msg[1].len = num_bytes; msg[1].flags = I3C_MSG_WRITE | I3C_MSG_STOP; + msg[1].hdr_mode = 0; msg[1].hdr_cmd_code = 0; return i3c_transfer(target, msg, 2); @@ -2117,6 +2105,31 @@ int i3c_bus_init(const struct device *dev, */ int i3c_device_basic_info_get(struct i3c_device_desc *target); +/** + * @brief Check if the bus has a secondary controller. + * + * This reads the BCR from the device descriptor struct of all targets + * to determine whether a device is a secondary controller. + * + * @param dev Pointer to controller device driver instance. + * + * @return True if the bus has a secondary controller, false otherwise. + */ +bool i3c_bus_has_sec_controller(const struct device *dev); + +/** + * @brief Send the CCC DEFTGTS + * + * This builds the payload required for DEFTGTS and transmits it out + * + * @param dev Pointer to controller device driver instance. + * + * @retval 0 if successful. + * @retval -ENOMEM No memory to build the payload. + * @retval -EIO General Input/Output error. + */ +int i3c_bus_deftgts(const struct device *dev); + /* * This needs to be after declaration of struct i3c_driver_api, * or else compiler complains about undefined type inside @@ -2124,6 +2137,11 @@ int i3c_device_basic_info_get(struct i3c_device_desc *target); */ #include +/* + * Include High-Data-Rate (HDR) inline helper functions + */ +#include + #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/addresses.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/addresses.h index c85255d8..8d485e9b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/addresses.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/addresses.h @@ -14,8 +14,9 @@ * @{ */ -#include -#include +#include + +#include #include #ifdef __cplusplus diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/ccc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/ccc.h index 2274878b..8d662258 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/ccc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/ccc.h @@ -15,7 +15,8 @@ * @{ */ -#include +#include + #include #include #include @@ -450,6 +451,9 @@ struct i3c_ccc_deftgts_target { * this CCC. */ struct i3c_ccc_deftgts { + /** Number of Targets (and Groups) present on the I3C Bus */ + uint8_t count; + /** Data describing the active controller */ struct i3c_ccc_deftgts_active_controller active_controller; @@ -457,6 +461,19 @@ struct i3c_ccc_deftgts { struct i3c_ccc_deftgts_target targets[]; } __packed; +/** + * @brief Defining byte values for ENTTM. + */ +enum i3c_ccc_enttm_defbyte { + /** Remove all I3C Devices from Test Mode */ + ENTTM_EXIT_TEST_MODE = 0x00U, + + /** Indicates that I3C Devices shall return a random 32-bit value + * in the PID during the Dynamic Address Assignment procedure + */ + ENTTM_VENDOR_TEST_MODE = 0x01U, +}; + /** * @brief Payload for a single device address. * @@ -479,7 +496,7 @@ struct i3c_ccc_address { * - For GETACCCR, the correct address of Secondary * Controller. * - * @note For SETDATA, SETNEWDA and SETGRAP, + * @note For SETDATA, SETNEWDA and SETGRPA, * the address is left-shift by 1, and bit[0] is always 0. * * @note Fpr SET GETACCCR, the address is left-shift by 1, @@ -592,12 +609,8 @@ union i3c_ccc_getstatus { /** GETSTATUS Format 1 - Protocol Error bit. */ #define I3C_CCC_GETSTATUS_PROTOCOL_ERR BIT(5) -/** GETSTATUS Format 1 - Activity Mode bit shift value. */ -#define I3C_CCC_GETSTATUS_ACTIVITY_MODE_SHIFT 6 - /** GETSTATUS Format 1 - Activity Mode bitmask. */ -#define I3C_CCC_GETSTATUS_ACTIVITY_MODE_MASK \ - (0x03U << I3C_CCC_GETSTATUS_ACTIVITY_MODE_SHIFT) +#define I3C_CCC_GETSTATUS_ACTIVITY_MODE_MASK GENMASK(7U, 6U) /** * @brief GETSTATUS Format 1 - Activity Mode @@ -608,15 +621,10 @@ union i3c_ccc_getstatus { * @param status GETSTATUS Format 1 value */ #define I3C_CCC_GETSTATUS_ACTIVITY_MODE(status) \ - (((status) & I3C_CCC_GETSTATUS_ACTIVITY_MODE_MASK) \ - >> I3C_CCC_GETSTATUS_ACTIVITY_MODE_SHIFT) - -/** GETSTATUS Format 1 - Number of Pending Interrupts bit shift value. */ -#define I3C_CCC_GETSTATUS_NUM_INT_SHIFT 0 + FIELD_GET(I3C_CCC_GETSTATUS_ACTIVITY_MODE_MASK, (status)) /** GETSTATUS Format 1 - Number of Pending Interrupts bitmask. */ -#define I3C_CCC_GETSTATUS_NUM_INT_MASK \ - (0x0FU << I3C_CCC_GETSTATUS_NUM_INT_SHIFT) +#define I3C_CCC_GETSTATUS_NUM_INT_MASK GENMASK(3U, 0U) /** * @brief GETSTATUS Format 1 - Number of Pending Interrupts @@ -627,8 +635,7 @@ union i3c_ccc_getstatus { * @param status GETSTATUS Format 1 value */ #define I3C_CCC_GETSTATUS_NUM_INT(status) \ - (((status) & I3C_CCC_GETSTATUS_NUM_INT_MASK) \ - >> I3C_CCC_GETSTATUS_NUM_INT_SHIFT) + FIELD_GET(I3C_CCC_GETSTATUS_NUM_INT_MASK, (status)) /** GETSTATUS Format 2 - PERCR - Deep Sleep Detected bit. */ #define I3C_CCC_GETSTATUS_PRECR_DEEP_SLEEP_DETECTED BIT(0) @@ -674,10 +681,40 @@ struct i3c_ccc_setbrgtgt { struct i3c_ccc_setbrgtgt_tgt targets[]; } __packed; +/** + * @brief Indicate which format of getmxds to use. + */ +enum i3c_ccc_getmxds_fmt { + /** GETMXDS Format 1 */ + GETMXDS_FORMAT_1, + + /** GETMXDS Format 2 */ + GETMXDS_FORMAT_2, + + /** GETMXDS Format 3 */ + GETMXDS_FORMAT_3, +}; + +/** + * @brief Enum for I3C Get Max Data Speed (GETMXDS) Format 3 Defining Byte Values. + */ +enum i3c_ccc_getmxds_defbyte { + /** Standard Target Write/Read speed parameters, and optional Maximum Read Turnaround Time + */ + GETMXDS_FORMAT_3_WRRDTURN = 0x00U, + + /** Delay parameters for a Controller-capable Device, and it's expected Activity State + * during a Controller Handoff + */ + GETMXDS_FORMAT_3_CRHDLY = 0x91U, + + /** Invalid defining byte. */ + GETMXDS_FORMAT_3_INVALID = 0x100, +}; + + /** * @brief Payload for GETMXDS CCC (Get Max Data Speed). - * - * @note This is only for GETMXDS Format 1 and Format 2. */ union i3c_ccc_getmxds { struct { @@ -709,7 +746,7 @@ union i3c_ccc_getmxds { * * @see i3c_ccc_getmxds::fmt2 */ - uint8_t wrrdturn; + uint8_t wrrdturn[5]; /** * Defining Byte 0x91: CRHDLY @@ -756,12 +793,8 @@ union i3c_ccc_getmxds { /** Get Max Data Speed (GETMXDS) - maxWr - Optional Defining Byte Support. */ #define I3C_CCC_GETMXDS_MAXWR_DEFINING_BYTE_SUPPORT BIT(3) -/** Get Max Data Speed (GETMXDS) - Max Sustained Data Rate bit shift value. */ -#define I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL_SHIFT 0 - /** Get Max Data Speed (GETMXDS) - Max Sustained Data Rate bitmask. */ -#define I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL_MASK \ - (0x07U << I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL_SHIFT) +#define I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL_MASK GENMASK(2U, 0U) /** * @brief Get Max Data Speed (GETMXDS) - maxWr - Max Sustained Data Rate @@ -772,19 +805,13 @@ union i3c_ccc_getmxds { * @param maxwr GETMXDS maxWr value. */ #define I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL(maxwr) \ - (((maxwr) & \ - I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL_MASK) \ - >> I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL_SHIFT) + FIELD_GET(I3C_CCC_GETMXDS_MAXWR_MAX_SDR_FSCL_MASK, (maxwr)) /** Get Max Data Speed (GETMXDS) - maxRd - Write-to-Read Permits Stop Between. */ #define I3C_CCC_GETMXDS_MAXRD_W2R_PERMITS_STOP_BETWEEN BIT(6) -/** Get Max Data Speed (GETMXDS) - maxRd - Clock to Data Turnaround bit shift value. */ -#define I3C_CCC_GETMXDS_MAXRD_TSCO_SHIFT 3 - /** Get Max Data Speed (GETMXDS) - maxRd - Clock to Data Turnaround bitmask. */ -#define I3C_CCC_GETMXDS_MAXRD_TSCO_MASK \ - (0x07U << I3C_CCC_GETMXDS_MAXRD_TSCO_SHIFT) +#define I3C_CCC_GETMXDS_MAXRD_TSCO_MASK GENMASK(5U, 3U) /** * @brief Get Max Data Speed (GETMXDS) - maxRd - Clock to Data Turnaround @@ -795,15 +822,10 @@ union i3c_ccc_getmxds { * @param maxrd GETMXDS maxRd value. */ #define I3C_CCC_GETMXDS_MAXRD_TSCO(maxrd) \ - (((maxrd) & I3C_CCC_GETMXDS_MAXRD_TSCO_MASK) \ - >> I3C_CCC_GETMXDS_MAXRD_TSCO_SHIFT) - -/** Get Max Data Speed (GETMXDS) - maxRd - Max Sustained Data Rate bit shift value. */ -#define I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL_SHIFT 0 + FIELD_GET(I3C_CCC_GETMXDS_MAXRD_TSCO_MASK, (maxrd)) /** Get Max Data Speed (GETMXDS) - maxRd - Max Sustained Data Rate bitmask. */ -#define I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL_MASK \ - (0x07U << I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL_SHIFT) +#define I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL_MASK GENMASK(2U, 0U) /** * @brief Get Max Data Speed (GETMXDS) - maxRd - Max Sustained Data Rate @@ -814,19 +836,13 @@ union i3c_ccc_getmxds { * @param maxrd GETMXDS maxRd value. */ #define I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL(maxrd) \ - (((maxrd) & \ - I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL_MASK) \ - >> I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL_SHIFT) + FIELD_GET(I3C_CCC_GETMXDS_MAXRD_MAX_SDR_FSCL_MASK, (maxrd)) /** Get Max Data Speed (GETMXDS) - CRDHLY1 - Set Bus Activity State bit shift value. */ #define I3C_CCC_GETMXDS_CRDHLY1_SET_BUS_ACT_STATE BIT(2) -/** Get Max Data Speed (GETMXDS) - CRDHLY1 - Controller Handoff Activity State bit shift value. */ -#define I3C_CCC_GETMXDS_CRDHLY1_CTRL_HANDOFF_ACT_STATE_SHIFT 0 - /** Get Max Data Speed (GETMXDS) - CRDHLY1 - Controller Handoff Activity State bitmask. */ -#define I3C_CCC_GETMXDS_CRDHLY1_CTRL_HANDOFF_ACT_STATE_MASK \ - (0x03U << I3C_CCC_GETMXDS_CRDHLY1_CTRL_HANDOFF_ACT_STATE_SHIFT) +#define I3C_CCC_GETMXDS_CRDHLY1_CTRL_HANDOFF_ACT_STATE_MASK GENMASK(1U, 0U) /** * @brief Get Max Data Speed (GETMXDS) - CRDHLY1 - Controller Handoff Activity State @@ -837,9 +853,7 @@ union i3c_ccc_getmxds { * @param crhdly1 GETMXDS value. */ #define I3C_CCC_GETMXDS_CRDHLY1_CTRL_HANDOFF_ACT_STATE(crhdly1) \ - (((crhdly1) & \ - I3C_CCC_GETMXDS_CRDHLY1_CTRL_HANDOFF_ACT_STATE_MASK) \ - >> I3C_CCC_GETMXDS_CRDHLY1_CTRL_HANDOFF_ACT_STATE_SHIFT) + FIELD_GET(I3C_CCC_GETMXDS_CRDHLY1_CTRL_HANDOFF_ACT_STATE_MASK, (chrdly1)) /** * @brief Indicate which format of GETCAPS to use. @@ -1016,18 +1030,11 @@ union i3c_ccc_getcaps { /** Get Optional Feature Capabilities Byte 2 (GETCAPS) Format 1 - HDR-DDR Abort CRC bit. */ #define I3C_CCC_GETCAPS2_HDRDDR_ABORT_CRC BIT(7) -/** - * @brief Get Optional Feature Capabilities Byte 2 (GETCAPS) Format 1 - - * Group Address Capabilities bit shift value. - */ -#define I3C_CCC_GETCAPS2_GRPADDR_CAP_SHIFT 4 - /** * @brief Get Optional Feature Capabilities Byte 2 (GETCAPS) Format 1 - * Group Address Capabilities bitmask. */ -#define I3C_CCC_GETCAPS2_GRPADDR_CAP_MASK \ - (0x03U << I3C_CCC_GETCAPS2_GRPADDR_CAP_SHIFT) +#define I3C_CCC_GETCAPS2_GRPADDR_CAP_MASK GENMASK(5U, 4U) /** * @brief Get Optional Feature Capabilities Byte 2 (GETCAPS) Format 1 - Group Address Capabilities. @@ -1038,22 +1045,13 @@ union i3c_ccc_getcaps { * @param getcaps2 GETCAPS2 value. */ #define I3C_CCC_GETCAPS2_GRPADDR_CAP(getcaps2) \ - (((getcaps2) & \ - I3C_CCC_GETCAPS2_GRPADDR_CAP_MASK) \ - >> I3C_CCC_GETCAPS_GRPADDR_CAP_SHIFT) - -/** - * @brief Get Optional Feature Capabilities Byte 2 (GETCAPS) Format 1 - - * I3C 1.x Specification Version bit shift value. - */ -#define I3C_CCC_GETCAPS2_SPEC_VER_SHIFT 0 + FIELD_GET(I3C_CCC_GETCAPS2_GRPADDR_CAP_MASK, (getcaps2)) /** * @brief Get Optional Feature Capabilities Byte 2 (GETCAPS) Format 1 - * I3C 1.x Specification Version bitmask. */ -#define I3C_CCC_GETCAPS2_SPEC_VER_MASK \ - (0x0FU << I3C_CCC_GETCAPS2_SPEC_VER_SHIFT) +#define I3C_CCC_GETCAPS2_SPEC_VER_MASK GENMASK(3U, 0U) /** * @brief Get Optional Feature Capabilities Byte 2 (GETCAPS) Format 1 - @@ -1065,9 +1063,7 @@ union i3c_ccc_getcaps { * @param getcaps2 GETCAPS2 value. */ #define I3C_CCC_GETCAPS2_SPEC_VER(getcaps2) \ - (((getcaps2) & \ - I3C_CCC_GETCAPS2_SPEC_VER_MASK) \ - >> I3C_CCC_GETCAPS_SPEC_VER_SHIFT) + FIELD_GET(I3C_CCC_GETCAPS2_SPEC_VER_MASK, (getcaps2)) /** * @brief Get Optional Feature Capabilities Byte 3 (GETCAPS) Format 1 - @@ -1183,12 +1179,8 @@ union i3c_ccc_getcaps { */ #define I3C_CCC_GETCAPS_CRCAPS2_DELAYED_CONTROLLER_HANDOFF BIT(3) -/** Get Capabilities (GETCAPS) - VTCAP1 - Virtual Target Type bit shift value. */ -#define I3C_CCC_GETCAPS_VTCAP1_VITRUAL_TARGET_TYPE_SHIFT 0 - /** Get Capabilities (GETCAPS) - VTCAP1 - Virtual Target Type bitmask. */ -#define I3C_CCC_GETCAPS_VTCAP1_VITRUAL_TARGET_TYPE_MASK \ - (0x07U << I3C_CCC_GETCAPS_VTCAP1_VITRUAL_TARGET_TYPE_SHIFT) +#define I3C_CCC_GETCAPS_VTCAP1_VITRUAL_TARGET_TYPE_MASK GENMASK(2U, 0U) /** * @brief Get Capabilities (GETCAPS) - VTCAP1 - Virtual Target Type @@ -1199,9 +1191,7 @@ union i3c_ccc_getcaps { * @param vtcap1 VTCAP1 value. */ #define I3C_CCC_GETCAPS_VTCAP1_VITRUAL_TARGET_TYPE(vtcap1) \ - (((vtcap1) & \ - I3C_CCC_GETCAPS_VTCAP1_VITRUAL_TARGET_TYPE_MASK) \ - >> I3C_CCC_GETCAPS_VTCAP1_VITRUAL_TARGET_TYPE_SHIFT) + FIELD_GET(I3C_CCC_GETCAPS_VTCAP1_VITRUAL_TARGET_TYPE_MASK, (vtcap1)) /** * @brief Get Virtual Target Capabilities Byte 1 (GETCAPS) Format 2 - @@ -1215,12 +1205,8 @@ union i3c_ccc_getcaps { */ #define I3C_CCC_GETCAPS_VTCAP1_SHARED_PERIPH_DETECT BIT(5) -/** Get Capabilities (GETCAPS) - VTCAP2 - Interrupt Requests bit shift value. */ -#define I3C_CCC_GETCAPS_VTCAP2_INTERRUPT_REQUESTS_SHIFT 0 - /** Get Capabilities (GETCAPS) - VTCAP2 - Interrupt Requests bitmask. */ -#define I3C_CCC_GETCAPS_VTCAP2_INTERRUPT_REQUESTS_MASK \ - (0x03U << I3C_CCC_GETCAPS_VTCAP2_INTERRUPT_REQUESTS_SHIFT) +#define I3C_CCC_GETCAPS_VTCAP2_INTERRUPT_REQUESTS_MASK GENMASK(1U, 0U) /** * @brief Get Capabilities (GETCAPS) - VTCAP2 - Interrupt Requests @@ -1231,9 +1217,7 @@ union i3c_ccc_getcaps { * @param vtcap2 VTCAP2 value. */ #define I3C_CCC_GETCAPS_VTCAP2_INTERRUPT_REQUESTS(vtcap2) \ - (((vtcap2) & \ - I3C_CCC_GETCAPS_VTCAP2_INTERRUPT_REQUESTS_MASK) \ - >> I3C_CCC_GETCAPS_VTCAP2_INTERRUPT_REQUESTS_SHIFT) + FIELD_GET(I3C_CCC_GETCAPS_VTCAP2_INTERRUPT_REQUESTS_MASK, (vtcap2)) /** * @brief Get Virtual Target Capabilities Byte 2 (GETCAPS) Format 2 - @@ -1241,12 +1225,8 @@ union i3c_ccc_getcaps { */ #define I3C_CCC_GETCAPS_VTCAP2_ADDRESS_REMAPPING BIT(2) -/** Get Capabilities (GETCAPS) - VTCAP2 - Bus Context and Condition bit shift value. */ -#define I3C_CCC_GETCAPS_VTCAP2_BUS_CONTEXT_AND_COND_SHIFT 3 - /** Get Capabilities (GETCAPS) - VTCAP2 - Bus Context and Condition bitmask. */ -#define I3C_CCC_GETCAPS_VTCAP2_BUS_CONTEXT_AND_COND_MASK \ - (0x03U << I3C_CCC_GETCAPS_VTCAP2_BUS_CONTEXT_AND_COND_SHIFT) +#define I3C_CCC_GETCAPS_VTCAP2_BUS_CONTEXT_AND_COND_MASK GENMASK(4U, 3U) /** * @brief Get Capabilities (GETCAPS) - VTCAP2 - Bus Context and Condition @@ -1257,9 +1237,7 @@ union i3c_ccc_getcaps { * @param vtcap2 VTCAP2 value. */ #define I3C_CCC_GETCAPS_VTCAP2_BUS_CONTEXT_AND_COND(vtcap2) \ - (((vtcap2) & \ - I3C_CCC_GETCAPS_VTCAP2_BUS_CONTEXT_AND_COND_MASK) \ - >> I3C_CCC_GETCAPS_VTCAP2_BUS_CONTEXT_AND_COND_SHIFT) + FIELD_GET(I3C_CCC_GETCAPS_VTCAP2_BUS_CONTEXT_AND_COND_MASK, (vtcap2)) /** * @brief Enum for I3C Reset Action (RSTACT) Defining Byte Values. @@ -1279,8 +1257,107 @@ enum i3c_ccc_rstact_defining_byte { /** Virtual Target Detect. */ I3C_CCC_RSTACT_VIRTUAL_TARGET_DETECT = 0x04U, + + /** Return Time to Reset Peripheral */ + I3C_CCC_RSTACT_RETURN_TIME_TO_RESET_PERIPHERAL = 0x81U, + + /** Return Time to Reset Whole Target */ + I3C_CCC_RSTACT_RETURN_TIME_TO_WHOLE_TARGET = 0x82U, + + /** Return Time for Debug Network Adapter Reset */ + I3C_CCC_RSTACT_RETURN_TIME_FOR_DEBUG_NETWORK_ADAPTER_RESET = 0x83U, + + /** Return Virtual Target Indication */ + I3C_CCC_RSTACT_RETURN_VIRTUAL_TARGET_INDICATION = 0x84U, }; +/** + * @name Set Bus Context MIPI I3C Specification v1.Y Minor Version (SETBUSCON) + * @anchor I3C_CCC_SETBUSCON_I3C_SPEC + * + * - CONTEXT[7:6]: 2'b00 + * + * - CONTEXT[5]: I3C Specification Editorial Revision (within Minor Version) + * - 0: Version 1.Y.0 + * - 1: Version 1.Y.1 or greater + * + * - CONTEXT[4]: I3C Specification Family + * - 0: MIPI I3C Specification + * - 1: MIPI I3C Basic Specification + * + * - CONTEXT[3:0]: I3C Specification Minor Version (v1.Y) + * - 0: Illegal, do not use (see Note below) + * (It would encode v1.0, but SETBUSCON was not available in I3C Basic v1.0) + * - 1-15: Version 1.1 - Version 1.15 + * + * Examples: Bit[5] Bit[4] Bits[3:0] + * I3C Basic v1.1.0: 1’b0 || 1’b1 || 4’b0001 or 8’b00010001 + * I3C Basic v1.1.1: 1’b1 || 1’b1 || 4’b0001 or 8’b00110001 + * I3C Basic v1.2.0: 1’b0 || 1’b1 || 4’b0010 or 8’b00010010 + * + * @{ + */ + +/** I3C Specification Minor Version shift mask */ +#define I3C_CCC_SETBUSCON_I3C_SPEC_MINOR_VER_MASK GENMASK(3U, 0U) + +/** + * @brief I3C Specification Minor Version (v1.Y) + * + * Set the context bits for SETBUSCON + * + * @param y I3C Specification Minor Version Number + */ +#define I3C_CCC_SETBUSCON_I3C_SPEC_MINOR_VER(y) \ + FIELD_PREP(I3C_CCC_SETBUSCON_I3C_SPEC_MINOR_VER_MASK, (y)) + +/** MIPI I3C Specification */ +#define I3C_CCC_SETBUSCON_I3C_SPEC_I3C_SPEC 0 + +/** MIPI I3C Basic Specification */ +#define I3C_CCC_SETBUSCON_I3C_SPEC_I3C_BASIC_SPEC BIT(4) + +/** Version 1.Y.0 */ +#define I3C_CCC_SETBUSCON_I3C_SPEC_I3C_SPEC_EDITORIAL_1_Y_0 0 + +/** Version 1.Y.1 or greater */ +#define I3C_CCC_SETBUSCON_I3C_SPEC_I3C_SPEC_EDITORIAL_1_Y_1 BIT(5) + +/** @} */ + +/** + * @name Set Bus Context Other Standards Organizations (SETBUSCON) + * @anchor I3C_CCC_SETBUSCON_OTHER_STANDARDS + * + * @{ + */ + +/** + * @brief JEDEC Sideband + * + * JEDEC SideBand Bus device, compliant to JESD403 Specification v1.0 or later. + */ +#define I3C_CCC_SETBUSCON_OTHER_STANDARDS_JEDEC_SIDEBAND 128 + +/** + * @brief MCTP + * + * MCTP for system manageability (conforming to the content protocol defined in + * the MCTP I3C Transport Binding Specification, released by DMTF, version 1.0 + * or newer) + */ +#define I3C_CCC_SETBUSCON_OTHER_STANDARDS_MCTP 129 + +/** + * @brief ETSI + * + * ETSI for Secure Smart Platform Devices used for mobile networks authentication + * and other ETSI security functions in mobile ecosystem + */ +#define I3C_CCC_SETBUSCON_OTHER_STANDARDS_ETSI 130 + +/** @} */ + /** * @brief Test if I3C CCC payload is for broadcast. * @@ -1339,10 +1416,10 @@ int i3c_ccc_do_getpid(struct i3c_device_desc *target, struct i3c_ccc_getpid *pid); /** - * @brief Broadcast RSTACT to reset I3C Peripheral. + * @brief Broadcast RSTACT to reset I3C Peripheral (Format 1). * * Helper function to broadcast Target Reset Action (RSTACT) to - * all connected targets to Reset the I3C Peripheral Only (0x01). + * all connected targets. * * @param[in] controller Pointer to the controller device driver instance. * @param[in] action What reset action to perform. @@ -1352,6 +1429,60 @@ int i3c_ccc_do_getpid(struct i3c_device_desc *target, int i3c_ccc_do_rstact_all(const struct device *controller, enum i3c_ccc_rstact_defining_byte action); +/** + * @brief Single target RSTACT to reset I3C Peripheral. + * + * Helper function to do Target Reset Action (RSTACT) to + * one target. + * + * @param[in] target Pointer to the target device descriptor. + * @param[in] action What reset action to perform. + * @param[in] get True if a get, False if set + * @param[out] data Pointer to RSTACT payload received. + * + * @return @see i3c_do_ccc + */ +int i3c_ccc_do_rstact(const struct i3c_device_desc *target, + enum i3c_ccc_rstact_defining_byte action, + bool get, + uint8_t *data); + +/** + * @brief Single target RSTACT to reset I3C Peripheral (Format 2). + * + * Helper function to do Target Reset Action (RSTACT, format 2) to + * one target. This is a Direct Write. + * + * @param[in] target Pointer to the target device descriptor. + * @param[in] action What reset action to perform. + * + * @return @see i3c_do_ccc + */ +static inline int i3c_ccc_do_rstact_fmt2(const struct i3c_device_desc *target, + enum i3c_ccc_rstact_defining_byte action) +{ + return i3c_ccc_do_rstact(target, action, false, NULL); +} + +/** + * @brief Single target RSTACT to reset I3C Peripheral (Format 3). + * + * Helper function to do Target Reset Action (RSTACT, format 3) to + * one target. This is a Direct Read. + * + * @param[in] target Pointer to the target device descriptor. + * @param[in] action What reset action to perform. + * @param[out] data Pointer to RSTACT payload received. + * + * @return @see i3c_do_ccc + */ +static inline int i3c_ccc_do_rstact_fmt3(const struct i3c_device_desc *target, + enum i3c_ccc_rstact_defining_byte action, + uint8_t *data) +{ + return i3c_ccc_do_rstact(target, action, true, data); +} + /** * @brief Broadcast RSTDAA to reset dynamic addresses for all targets. * @@ -1373,10 +1504,12 @@ int i3c_ccc_do_rstdaa_all(const struct device *controller); * * @param[in] target Pointer to the target device descriptor where * the device is configured with a static address. + * @param[in] da Struct of the Dynamic address * * @return @see i3c_do_ccc */ -int i3c_ccc_do_setdasa(const struct i3c_device_desc *target); +int i3c_ccc_do_setdasa(const struct i3c_device_desc *target, + struct i3c_ccc_address da); /** * @brief Set New Dynamic Address for a target @@ -1387,7 +1520,7 @@ int i3c_ccc_do_setdasa(const struct i3c_device_desc *target); * * @param[in] target Pointer to the target device descriptor where * the device is configured with a static address. - * @param[in] new_da Pointer to the new_da struct. + * @param[in] new_da Struct of the Dynamic address * * @return @see i3c_do_ccc */ @@ -1424,6 +1557,147 @@ int i3c_ccc_do_events_all_set(const struct device *controller, int i3c_ccc_do_events_set(struct i3c_device_desc *target, bool enable, struct i3c_ccc_events *events); +/** + * @brief Direct ENTAS to set the Activity State. + * + * Helper function to broadcast Activity State Command on a single + * target. + * + * @param[in] target Pointer to the target device descriptor. + * @param[in] as Activity State level + * + * @return @see i3c_do_ccc + */ +int i3c_ccc_do_entas(const struct i3c_device_desc *target, uint8_t as); + +/** + * @brief Direct ENTAS0 + * + * Helper function to do ENTAS0 setting the minimum bus activity level to 1us + * on a single target. + * + * @param[in] target Pointer to the target device descriptor. + * + * @return @see i3c_do_ccc + */ +static inline int i3c_ccc_do_entas0(const struct i3c_device_desc *target) +{ + return i3c_ccc_do_entas(target, 0); +} + +/** + * @brief Direct ENTAS1 + * + * Helper function to do ENTAS1 setting the minimum bus activity level to 100us + * on a single target. + * + * @param[in] target Pointer to the target device descriptor. + * + * @return @see i3c_do_ccc + */ +static inline int i3c_ccc_do_entas1(const struct i3c_device_desc *target) +{ + return i3c_ccc_do_entas(target, 1); +} + +/** + * @brief Direct ENTAS2 + * + * Helper function to do ENTAS2 setting the minimum bus activity level to 2ms + * on a single target. + * + * @param[in] target Pointer to the target device descriptor. + * + * @return @see i3c_do_ccc + */ +static inline int i3c_ccc_do_entas2(const struct i3c_device_desc *target) +{ + return i3c_ccc_do_entas(target, 2); +} + +/** + * @brief Direct ENTAS3 + * + * Helper function to do ENTAS3 setting the minimum bus activity level to 50ms + * on a single target. + * + * @param[in] target Pointer to the target device descriptor. + * + * @return @see i3c_do_ccc + */ +static inline int i3c_ccc_do_entas3(const struct i3c_device_desc *target) +{ + return i3c_ccc_do_entas(target, 3); +} + +/** + * @brief Broadcast ENTAS to set the Activity State. + * + * Helper function to broadcast Activity State Command. + * + * @param[in] controller Pointer to the controller device driver instance. + * @param[in] as Activity State level + * + * @return @see i3c_do_ccc + */ +int i3c_ccc_do_entas_all(const struct device *controller, uint8_t as); + +/** + * @brief Broadcast ENTAS0 + * + * Helper function to do ENTAS0 setting the minimum bus activity level to 1us + * + * @param[in] controller Pointer to the controller device driver instance. + * + * @return @see i3c_do_ccc + */ +static inline int i3c_ccc_do_entas0_all(const struct device *controller) +{ + return i3c_ccc_do_entas_all(controller, 0); +} + +/** + * @brief Broadcast ENTAS1 + * + * Helper function to do ENTAS1 setting the minimum bus activity level to 100us + * + * @param[in] controller Pointer to the controller device driver instance. + * + * @return @see i3c_do_ccc + */ +static inline int i3c_ccc_do_entas1_all(const struct device *controller) +{ + return i3c_ccc_do_entas_all(controller, 1); +} + +/** + * @brief Broadcast ENTAS2 + * + * Helper function to do ENTAS2 setting the minimum bus activity level to 2ms + * + * @param[in] controller Pointer to the controller device driver instance. + * + * @return @see i3c_do_ccc + */ +static inline int i3c_ccc_do_entas2_all(const struct device *controller) +{ + return i3c_ccc_do_entas_all(controller, 2); +} + +/** + * @brief Broadcast ENTAS3 + * + * Helper function to do ENTAS3 setting the minimum bus activity level to 50ms + * + * @param[in] controller Pointer to the controller device driver instance. + * + * @return @see i3c_do_ccc + */ +static inline int i3c_ccc_do_entas3_all(const struct device *controller) +{ + return i3c_ccc_do_entas_all(controller, 3); +} + /** * @brief Broadcast SETMWL to Set Maximum Write Length. * @@ -1517,6 +1791,19 @@ int i3c_ccc_do_setmrl(const struct i3c_device_desc *target, int i3c_ccc_do_getmrl(const struct i3c_device_desc *target, struct i3c_ccc_mrl *mrl); +/** + * @brief Broadcast ENTTM + * + * Helper function to do ENTTM (Enter Test Mode) to all devices + * + * @param[in] controller Pointer to the controller device driver instance. + * @param[in] defbyte Defining Byte for ENTTM. + * + * @return @see i3c_do_ccc + */ +int i3c_ccc_do_enttm(const struct device *controller, + enum i3c_ccc_enttm_defbyte defbyte); + /** * @brief Single target GETSTATUS to Get Target Status. * @@ -1637,6 +1924,201 @@ static inline int i3c_ccc_do_getcaps_fmt2(const struct i3c_device_desc *target, GETCAPS_FORMAT_2, defbyte); } +/** + * @brief Single target to Set Vendor / Standard Extension CCC + * + * Helper function to set Vendor / Standard Extension CCC of + * one target. + * + * @param[in] target Pointer to the target device descriptor. + * @param[in] id Vendor CCC ID. + * @param[in] payload Pointer to payload. + * @param[in] len Length of payload. 0 if no payload. + * + * @return @see i3c_do_ccc + */ +int i3c_ccc_do_setvendor(const struct i3c_device_desc *target, + uint8_t id, + uint8_t *payload, + size_t len); + +/** + * @brief Single target to Get Vendor / Standard Extension CCC + * + * Helper function to get Vendor / Standard Extension CCC of + * one target. + * + * @param[in] target Pointer to the target device descriptor. + * @param[in] id Vendor CCC ID. + * @param[out] payload Pointer to payload. + * @param[in] len Maximum Expected Length of the payload + * @param[out] num_xfer Length of the received payload + * + * @return @see i3c_do_ccc + */ +int i3c_ccc_do_getvendor(const struct i3c_device_desc *target, + uint8_t id, + uint8_t *payload, + size_t len, + size_t *num_xfer); + +/** + * @brief Single target to Get Vendor / Standard Extension CCC + * with a defining byte + * + * Helper function to get Vendor / Standard Extension CCC of + * one target. + * + * @param[in] target Pointer to the target device descriptor. + * @param[in] id Vendor CCC ID. + * @param[in] defbyte Defining Byte + * @param[out] payload Pointer to payload. + * @param[in] len Maximum Expected Length of the payload + * @param[out] num_xfer Length of the received payload + * + * @return @see i3c_do_ccc + */ +int i3c_ccc_do_getvendor_defbyte(const struct i3c_device_desc *target, + uint8_t id, + uint8_t defbyte, + uint8_t *payload, + size_t len, + size_t *num_xfer); + +/** + * @brief Broadcast Set Vendor / Standard Extension CCC + * + * Helper function to broadcast Vendor / Standard Extension CCC + * + * @param[in] controller Pointer to the controller device driver instance. + * @param[in] id Vendor CCC ID. + * @param[in] payload Pointer to payload. + * @param[in] len Length of payload. 0 if no payload. + * + * @return @see i3c_do_ccc + */ +int i3c_ccc_do_setvendor_all(const struct device *controller, + uint8_t id, + uint8_t *payload, + size_t len); + +/** + * @brief Broadcast SETAASA to set all target's dynamic address to their + * static address. + * + * Helper function to set dynamic addresses of all connected targets to + * their static address. + * + * @param[in] controller Pointer to the controller device driver instance. + * + * @return @see i3c_do_ccc + */ +int i3c_ccc_do_setaasa_all(const struct device *controller); + +/** + * @brief Single target GETMXDS to Get Max Data Speed. + * + * Helper function to do GETMXDS (Get Max Data Speed) of + * one target. + * + * This should only be supported if Max Data Speed Limit Bit of + * the BCR is set + * + * @param[in] target Pointer to the target device descriptor. + * @param[out] caps Pointer to GETMXDS payload. + * @param[in] fmt Which GETMXDS to use. + * @param[in] defbyte Defining Byte if using format 3. + * + * @return @see i3c_do_ccc + */ +int i3c_ccc_do_getmxds(const struct i3c_device_desc *target, + union i3c_ccc_getmxds *caps, + enum i3c_ccc_getmxds_fmt fmt, + enum i3c_ccc_getmxds_defbyte defbyte); + +/** + * @brief Single target GETMXDS to Get Max Data Speed (Format 1). + * + * Helper function to do GETMXDS (Get Max Data Speed, format 1) of + * one target. + * + * @param[in] target Pointer to the target device descriptor. + * @param[out] caps Pointer to GETMXDS payload. + * + * @return @see i3c_do_ccc + */ +static inline int i3c_ccc_do_getmxds_fmt1(const struct i3c_device_desc *target, + union i3c_ccc_getmxds *caps) +{ + return i3c_ccc_do_getmxds(target, caps, + GETMXDS_FORMAT_1, + GETMXDS_FORMAT_3_INVALID); +} + +/** + * @brief Single target GETMXDS to Get Max Data Speed (Format 2). + * + * Helper function to do GETMXDS (Get Max Data Speed, format 2) of + * one target. + * + * @param[in] target Pointer to the target device descriptor. + * @param[out] caps Pointer to GETMXDS payload. + * + * @return @see i3c_do_ccc + */ +static inline int i3c_ccc_do_getmxds_fmt2(const struct i3c_device_desc *target, + union i3c_ccc_getmxds *caps) +{ + return i3c_ccc_do_getmxds(target, caps, + GETMXDS_FORMAT_2, + GETMXDS_FORMAT_3_INVALID); +} + +/** + * @brief Single target GETMXDS to Get Max Data Speed (Format 3). + * + * Helper function to do GETMXDS (Get Max Data Speed, format 3) of + * one target. + * + * @param[in] target Pointer to the target device descriptor. + * @param[out] caps Pointer to GETMXDS payload. + * @param[in] defbyte Defining Byte for GETMXDS format 3. + * + * @return @see i3c_do_ccc + */ +static inline int i3c_ccc_do_getmxds_fmt3(const struct i3c_device_desc *target, + union i3c_ccc_getmxds *caps, + enum i3c_ccc_getmxds_defbyte defbyte) +{ + return i3c_ccc_do_getmxds(target, caps, + GETMXDS_FORMAT_3, defbyte); +} + +/** + * @brief Broadcast DEFTGTS + * + * @param[in] controller Pointer to the controller device driver instance. + * @param[in] deftgts Pointer to the deftgts payload. + * + * @return @see i3c_do_ccc + */ +int i3c_ccc_do_deftgts_all(const struct device *controller, + struct i3c_ccc_deftgts *deftgts); + +/** + * @brief Broadcast SETBUSCON to set the bus context + * + * Helper function to set the bus context of all connected targets. + * + * @param[in] controller Pointer to the controller device driver instance. + * @param[in] context Pointer to context byte values + * @param[in] length Length of the context buffer + * + * @return @see i3c_do_ccc + */ +int i3c_ccc_do_setbuscon(const struct device *controller, + uint8_t *context, uint16_t length); + #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/devicetree.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/devicetree.h index 3b53a853..803f17d5 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/devicetree.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/devicetree.h @@ -14,9 +14,10 @@ * @{ */ +#include + #include -#include -#include +#include #include #ifdef __cplusplus @@ -42,7 +43,9 @@ extern "C" { * @brief Structure initializer for i3c_device_id from devicetree instance * * This is equivalent to - * I3C_DEVICE_ID_DT(DT_DRV_INST(inst)). + * @code{.c} + * I3C_DEVICE_ID_DT(DT_DRV_INST(inst)) + * @endcode * * @param inst Devicetree instance number */ @@ -68,13 +71,17 @@ extern "C" { | DT_PROP_BY_IDX(node_id, reg, 2), \ .init_dynamic_addr = \ DT_PROP_OR(node_id, assigned_address, 0), \ + .supports_setaasa = DT_PROP(node_id, supports_setaasa), \ }, /** * @brief Structure initializer for i3c_device_desc from devicetree instance * * This is equivalent to - * I3C_DEVICE_DESC_DT(DT_DRV_INST(inst)). + * + * @code{.c} + * I3C_DEVICE_DESC_DT(DT_DRV_INST(inst)) + * @endcode * * @param inst Devicetree instance number */ @@ -84,7 +91,7 @@ extern "C" { /** * @brief Structure initializer for i3c_device_desc from devicetree * - * This is mainly used by I3C_DEVICE_ARRAY_DT() to only + * This is mainly used by I3C_DEVICE_ARRAY_DT() to only * create a struct if and only if it is an I3C device. */ #define I3C_DEVICE_DESC_DT_FILTERED(node_id) \ @@ -110,7 +117,9 @@ extern "C" { * @brief Array initializer for a list of i3c_device_desc from devicetree instance * * This is equivalent to - * I3C_DEVICE_ARRAY_DT(DT_DRV_INST(inst)). + * @code{.c} + * I3C_DEVICE_ARRAY_DT(DT_DRV_INST(inst)) + * @endcode * * @param inst Devicetree instance number of the I3C controller */ @@ -126,7 +135,7 @@ extern "C" { * * @param init_fn Name of the init function of the driver. * - * @param pm PM device resources reference (NULL if device does not use PM). + * @param pm PM device resources reference (`NULL` if device does not use PM). * * @param data Pointer to the device's private data. * @@ -151,7 +160,7 @@ extern "C" { * @brief Like I3C_TARGET_DT_DEFINE() for an instance of a DT_DRV_COMPAT compatible * * @param inst instance number. This is replaced by - * DT_DRV_COMPAT(inst) in the call to I3C_TARGET_DT_DEFINE(). + * `DT_DRV_COMPAT(inst)` in the call to I3C_TARGET_DT_DEFINE(). * * @param ... other parameters as expected by I3C_TARGET_DT_DEFINE(). */ @@ -161,9 +170,8 @@ extern "C" { /** * @brief Structure initializer for i3c_i2c_device_desc from devicetree * - * This helper macro expands to a static initializer for a struct - * i3c_i2c_device_desc by reading the relevant bus and device data - * from the devicetree. + * This helper macro expands to a static initializer for a i3c_i2c_device_desc + * by reading the relevant bus and device data from the devicetree. * * @param node_id Devicetree node identifier for the I3C device whose * struct i3c_i2c_device_desc to create an initializer for @@ -179,7 +187,9 @@ extern "C" { * @brief Structure initializer for i3c_i2c_device_desc from devicetree instance * * This is equivalent to - * I3C_I2C_DEVICE_DESC_DT(DT_DRV_INST(inst)). + * @code{.c} + * I3C_I2C_DEVICE_DESC_DT(DT_DRV_INST(inst)) + * @endcode * * @param inst Devicetree instance number */ @@ -190,7 +200,7 @@ extern "C" { /** * @brief Structure initializer for i3c_i2c_device_desc from devicetree * - * This is mainly used by I3C_I2C_DEVICE_ARRAY_DT() to only + * This is mainly used by I3C_I2C_DEVICE_ARRAY_DT() to only * create a struct if and only if it is an I2C device. */ #define I3C_I2C_DEVICE_DESC_DT_FILTERED(node_id) \ @@ -216,7 +226,9 @@ extern "C" { * @brief Array initializer for a list of i3c_i2c_device_desc from devicetree instance * * This is equivalent to - * I3C_I2C_DEVICE_ARRAY_DT(DT_DRV_INST(inst)). + * @code{.c} + * I3C_I2C_DEVICE_ARRAY_DT(DT_DRV_INST(inst)) + * @endcode * * @param inst Devicetree instance number of the I3C controller */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/hdr_ddr.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/hdr_ddr.h new file mode 100644 index 00000000..6aaff610 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/hdr_ddr.h @@ -0,0 +1,131 @@ +/* + * Copyright 2024 Meta Platforms + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_I3C_HDR_DDR_H_ +#define ZEPHYR_INCLUDE_DRIVERS_I3C_HDR_DDR_H_ + +/** + * @brief I3C HDR DDR API + * @defgroup i3c_hdr_ddr I3C HDR DDR API + * @ingroup i3c_interface + * @{ + */ + +#include +#include +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Write a set amount of data to an I3C target device with HDR DDR. + * + * This routine writes a set amount of data synchronously. + * + * @param target I3C target device descriptor. + * @param cmd 7-bit command code + * @param buf Memory pool from which the data is transferred. + * @param num_bytes Number of bytes to write. + * + * @retval 0 If successful. + * @retval -EBUSY Bus is busy. + * @retval -EIO General input / output error. + */ +static inline int i3c_hdr_ddr_write(struct i3c_device_desc *target, uint8_t cmd, + uint8_t *buf, uint32_t num_bytes) +{ + struct i3c_msg msg; + + msg.buf = buf; + msg.len = num_bytes; + msg.flags = I3C_MSG_WRITE | I3C_MSG_STOP | I3C_MSG_HDR; + msg.hdr_mode = I3C_MSG_HDR_DDR; + msg.hdr_cmd_code = cmd; + + return i3c_transfer(target, &msg, 1); +} + +/** + * @brief Read a set amount of data from an I3C target device with HDR DDR. + * + * This routine reads a set amount of data synchronously. + * + * @param target I3C target device descriptor. + * @param cmd 7-bit command code + * @param buf Memory pool that stores the retrieved data. + * @param num_bytes Number of bytes to read. + * + * @retval 0 If successful. + * @retval -EBUSY Bus is busy. + * @retval -EIO General input / output error. + */ +static inline int i3c_hdr_ddr_read(struct i3c_device_desc *target, uint8_t cmd, + uint8_t *buf, uint32_t num_bytes) +{ + struct i3c_msg msg; + + msg.buf = buf; + msg.len = num_bytes; + msg.flags = I3C_MSG_STOP | I3C_MSG_HDR; + msg.hdr_mode = I3C_MSG_HDR_DDR; + msg.hdr_cmd_code = cmd; + + return i3c_transfer(target, &msg, 1); +} + +/** + * @brief Write then read data from an I3C target device with HDR DDR. + * + * This supports the common operation "this is what I want", "now give + * it to me" transaction pair through a combined write-then-read bus + * transaction. + * + * @param target I3C target device descriptor. + * @param write_buf Pointer to the data to be written + * @param num_write Number of bytes to write + * @param write_cmd 7-bit command code for write + * @param read_buf Pointer to storage for read data + * @param num_read Number of bytes to read + * @param read_cmd 7-bit command code for read + * + * @retval 0 if successful + * @retval -EBUSY Bus is busy. + * @retval -EIO General input / output error. + */ +static inline int i3c_hdr_ddr_write_read(struct i3c_device_desc *target, + const void *write_buf, size_t num_write, uint8_t read_cmd, + void *read_buf, size_t num_read, uint8_t write_cmd) +{ + struct i3c_msg msg[2]; + + msg[0].buf = (uint8_t *)write_buf; + msg[0].len = num_write; + msg[0].flags = I3C_MSG_WRITE | I3C_MSG_HDR; + msg[0].hdr_mode = I3C_MSG_HDR_DDR; + msg[0].hdr_cmd_code = write_cmd; + + msg[1].buf = (uint8_t *)read_buf; + msg[1].len = num_read; + msg[1].flags = I3C_MSG_RESTART | I3C_MSG_READ | I3C_MSG_HDR | I3C_MSG_STOP; + msg[1].hdr_mode = I3C_MSG_HDR_DDR; + msg[1].hdr_cmd_code = read_cmd; + + return i3c_transfer(target, msg, 2); +} + +#ifdef __cplusplus +} +#endif + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_DRIVERS_I3C_HDR_DDR_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/ibi.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/ibi.h index 2483b5de..6020609b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/ibi.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/ibi.h @@ -14,10 +14,11 @@ * @{ */ +#include + #include #include -#include -#include +#include #ifndef CONFIG_I3C_IBI_MAX_PAYLOAD_SIZE #define CONFIG_I3C_IBI_MAX_PAYLOAD_SIZE 0 @@ -86,13 +87,7 @@ struct i3c_ibi_payload { * @brief Node about a queued IBI. */ struct i3c_ibi_work { - /** - * @cond INTERNAL_HIDDEN - * - * Used for keeping track of work in a queue. - */ sys_snode_t node; - /** @endcond */ /** * k_work struct. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/target_device.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/target_device.h index 1f4df840..7d85e03b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/target_device.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/i3c/target_device.h @@ -14,10 +14,12 @@ * @{ */ +#include +#include +#include + #include -#include -#include -#include +#include #ifdef __cplusplus extern "C" { @@ -39,7 +41,15 @@ struct i3c_config_target { bool enable; /** - * I3C target address. + * I3C target dynamic address. + * + * Used when operates as secondary controller + * or as a target device. + */ + uint8_t dynamic_addr; + + /** + * I3C target static address. * * Used used when operates as secondary controller * or as a target device. @@ -90,7 +100,6 @@ struct i3c_config_target { * reference to i3c_target_register(). */ struct i3c_target_config { - /** Private, do not modify */ sys_snode_t node; /** @@ -193,6 +202,49 @@ struct i3c_target_callbacks { int (*read_processed_cb)(struct i3c_target_config *config, uint8_t *val); +#ifdef CONFIG_I3C_TARGET_BUFFER_MODE + /** @brief Function called when a write to the device is completed. + * + * This function is invoked by the controller when it completes + * reception of data from the source buffer to the destination + * buffer in an ongoing write operation to the device. + * + * @param config Configuration structure associated with the + * device to which the operation is addressed. + * + * @param ptr pointer to the buffer that contains the data to be transferred. + * + * @param len the length of the data to be transferred. + */ + void (*buf_write_received_cb)(struct i3c_target_config *config, uint8_t *ptr, uint32_t len); + + /** @brief Function called when a read from the device is initiated. + * + * This function is invoked by the controller when the bus is ready to + * provide additional data by buffer for a read operation from the address + * associated with the device. + * + * The value returned in @p **ptr and @p *len will be transmitted. A success + * return shall cause the controller to react to additional read operations. + * An error return shall cause the controller to ignore bus operations until + * a new start condition is received. + * + * @param config the configuration structure associated with the + * device to which the operation is addressed. + * + * @param ptr pointer to storage for the address of data buffer to return + * for the read request. + * + * @param len pointer to storage for the length of the data to be transferred + * for the read request. + * + * @param hdr_mode HDR mode + * + * @return 0 if data has been provided, or a negative error code. + */ + int (*buf_read_requested_cb)(struct i3c_target_config *config, uint8_t **ptr, uint32_t *len, + uint8_t *hdr_mode); +#endif /** * @brief Function called when a stop condition is observed after a * start condition addressed to a particular device. @@ -233,14 +285,15 @@ __subsystem struct i3c_target_driver_api { * driver configured in target mode. * @param buf Pointer to the buffer * @param len Length of the buffer + * @param hdr_mode HDR mode see @c I3C_MSG_HDR_MODE* * * @retval Total number of bytes written - * @retval -ENOTSUP Not in Target Mode + * @retval -ENOTSUP Not in Target Mode or HDR Mode not supported * @retval -ENOSPC No space in Tx FIFO * @retval -ENOSYS If target mode is not implemented */ static inline int i3c_target_tx_write(const struct device *dev, - uint8_t *buf, uint16_t len) + uint8_t *buf, uint16_t len, uint8_t hdr_mode) { const struct i3c_driver_api *api = (const struct i3c_driver_api *)dev->api; @@ -249,7 +302,7 @@ static inline int i3c_target_tx_write(const struct device *dev, return -ENOSYS; } - return api->target_tx_write(dev, buf, len); + return api->target_tx_write(dev, buf, len, hdr_mode); } /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/gic.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/gic.h index f8d10ff8..ab6aeffe 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/gic.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/gic.h @@ -302,6 +302,13 @@ bool arm_gic_irq_is_enabled(unsigned int irq); */ bool arm_gic_irq_is_pending(unsigned int irq); +/** + * @brief Set interrupt as pending + * + * @param irq interrupt ID + */ +void arm_gic_irq_set_pending(unsigned int irq); + /** * @brief Clear the pending irq * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/gpio_intc_stm32.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/gpio_intc_stm32.h new file mode 100644 index 00000000..9f6cd308 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/gpio_intc_stm32.h @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2016 Open-RnD Sp. z o.o. + * Copyright (c) 2024 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @brief GPIO interrupt controller API for STM32 MCUs + * + * This API is used to interact with the GPIO interrupt controller + * of STM32 microcontrollers. + */ + +#ifndef ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_GPIO_INTC_STM32_H_ +#define ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_GPIO_INTC_STM32_H_ + +#include +#include + +/** + * @brief Opaque type representing a GPIO interrupt line + */ +typedef uint32_t stm32_gpio_irq_line_t; + +/** + * @brief Get the GPIO interrupt line value corresponding + * to specified @p pin of GPIO port @p port + */ +stm32_gpio_irq_line_t stm32_gpio_intc_get_pin_irq_line(uint32_t port, gpio_pin_t pin); + +/** + * @brief Enable GPIO interrupts for specified line + * + * @param line GPIO interrupt line + */ +void stm32_gpio_intc_enable_line(stm32_gpio_irq_line_t line); + +/** + * @brief Disable GPIO interrupts for specified line + * + * @param line GPIO interrupt line + */ +void stm32_gpio_intc_disable_line(stm32_gpio_irq_line_t line); + +/** + * @brief GPIO interrupt trigger flags + */ +enum stm32_gpio_irq_trigger { + /* No trigger */ + STM32_GPIO_IRQ_TRIG_NONE = 0x0, + /* Trigger on rising edge */ + STM32_GPIO_IRQ_TRIG_RISING = 0x1, + /* Trigger on falling edge */ + STM32_GPIO_IRQ_TRIG_FALLING = 0x2, + /* Trigger on both rising and falling edge */ + STM32_GPIO_IRQ_TRIG_BOTH = 0x3, + /* Trigger on high level */ + STM32_GPIO_IRQ_TRIG_HIGH_LEVEL = 0x4, + /* Trigger on low level */ + STM32_GPIO_IRQ_TRIG_LOW_LEVEL = 0x5 +}; + +/** + * @brief Select trigger for interrupt on specified GPIO line + * + * @param line GPIO interrupt line + * @param trg Interrupt trigger (see @ref stm32_gpio_irq_trigger) + */ +void stm32_gpio_intc_select_line_trigger(stm32_gpio_irq_line_t line, uint32_t trg); + +/** + * @brief GPIO interrupt callback function signature + * + * @param pin GPIO pin on which interrupt occurred + * @param user @p data provided to @ref stm32_gpio_intc_set_irq_callback + * + * @note This callback is invoked in ISR context. + */ +typedef void (*stm32_gpio_irq_cb_t)(gpio_port_pins_t pin, void *user); + +/** + * @brief Set callback invoked when an interrupt occurs on specified GPIO line + * + * @param line GPIO interrupt line + * @param cb Interrupt callback function + * @param user Custom user data for usage by the callback + * @returns 0 on success, -EBUSY if a callback is already set for @p line + */ +int stm32_gpio_intc_set_irq_callback(stm32_gpio_irq_line_t line, + stm32_gpio_irq_cb_t cb, void *user); + +/** + * @brief Removes the interrupt callback of specified EXTI line + * + * @param line EXTI interrupt line + */ +void stm32_gpio_intc_remove_irq_callback(stm32_gpio_irq_line_t line); + +/** Hardware-specific API extensions */ + +#if defined(CONFIG_EXTI_STM32) /* EXTI-specific extensions */ +/** + * @brief Set which GPIO port triggers events on specified EXTI line. + * + * @param line EXTI line number (= pin number) + * @param port GPIO port number (STM32_PORTA, STM32_PORTB, ...) + */ +void stm32_exti_set_line_src_port(gpio_pin_t line, uint32_t port); + +/** + * @brief Get port which is triggering events on specified EXTI line. + * + * @param line EXTI line number (= pin number) + * @returns GPIO port number (STM32_PORTA, STM32_PORTB, ...) + */ +uint32_t stm32_exti_get_line_src_port(gpio_pin_t line); +#endif /* CONFIG_EXTI_STM32 */ + +#endif /* ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_GPIO_INTC_STM32_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_eirq_nxp_s32.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_eirq_nxp_s32.h index 7f96be34..ee161e5e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_eirq_nxp_s32.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_eirq_nxp_s32.h @@ -1,5 +1,5 @@ /* - * Copyright 2022 NXP + * Copyright 2022, 2024 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -12,57 +12,67 @@ #ifndef ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_EIRQ_NXP_S32_H_ #define ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_EIRQ_NXP_S32_H_ -#include - -/* Wrapper callback for EIRQ line */ +/** NXP SIUL2 EIRQ callback */ typedef void (*eirq_nxp_s32_callback_t)(uint8_t pin, void *arg); /** - * @brief Unset EIRQ callback for line + * @brief NXP SIUL2 EIRQ pin activation type + */ +enum eirq_nxp_s32_trigger { + /** Interrupt triggered on rising edge */ + EIRQ_NXP_S32_RISING_EDGE, + /** Interrupt triggered on falling edge */ + EIRQ_NXP_S32_FALLING_EDGE, + /** Interrupt triggered on either edge */ + EIRQ_NXP_S32_BOTH_EDGES, +}; + +/** + * @brief Unset interrupt callback * - * @param dev EIRQ device - * @param line EIRQ line + * @param dev SIUL2 EIRQ device + * @param irq interrupt number */ -void eirq_nxp_s32_unset_callback(const struct device *dev, uint8_t line); +void eirq_nxp_s32_unset_callback(const struct device *dev, uint8_t irq); /** - * @brief Set EIRQ callback for line + * @brief Set callback for an interrupt associated with a given pin * - * @param dev EIRQ device - * @param line EIRQ line - * @param cb Callback - * @param pin GPIO pin - * @param arg Callback data + * @param dev SIUL2 EIRQ device + * @param irq interrupt number + * @param pin GPIO pin associated with the interrupt + * @param cb callback to install + * @param arg user data to include in callback * - * @retval 0 on SUCCESS - * @retval -EBUSY if callback for the line is already set + * @retval 0 on success + * @retval -EBUSY if callback for the interrupt is already set */ -int eirq_nxp_s32_set_callback(const struct device *dev, uint8_t line, - eirq_nxp_s32_callback_t cb, uint8_t pin, void *arg); +int eirq_nxp_s32_set_callback(const struct device *dev, uint8_t irq, uint8_t pin, + eirq_nxp_s32_callback_t cb, void *arg); /** - * @brief Set edge event and enable interrupt for EIRQ line + * @brief Enable interrupt on a given trigger event * - * @param dev EIRQ device - * @param line EIRQ line - * @param edge_type Type of edge event + * @param dev SIUL2 EIRQ device + * @param irq interrupt number + * @param trigger trigger event */ -void eirq_nxp_s32_enable_interrupt(const struct device *dev, uint8_t line, - Siul2_Icu_Ip_EdgeType edge_type); +void eirq_nxp_s32_enable_interrupt(const struct device *dev, uint8_t irq, + enum eirq_nxp_s32_trigger trigger); /** - * @brief Disable interrupt for EIRQ line + * @brief Disable interrupt * - * @param dev EIRQ device - * @param line EIRQ line + * @param dev SIUL2 EIRQ device + * @param irq interrupt number */ -void eirq_nxp_s32_disable_interrupt(const struct device *dev, uint8_t line); +void eirq_nxp_s32_disable_interrupt(const struct device *dev, uint8_t irq); /** - * @brief Get pending interrupt for EIRQ device + * @brief Get pending interrupts * - * @param dev EIRQ device - * @return A mask contains pending flags + * @param dev SIUL2 EIRQ device + * @return A bitmask containing pending pending interrupts */ uint32_t eirq_nxp_s32_get_pending(const struct device *dev); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_esp32.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_esp32.h index c1e86068..5b5ce8d9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_esp32.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_esp32.h @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef ZEPHYR_INCLUDE_DRIVERS_ESP_INTR_ALLOC_H__ -#define ZEPHYR_INCLUDE_DRIVERS_ESP_INTR_ALLOC_H__ +#ifndef ZEPHYR_INCLUDE_DRIVERS_INTERRUPT_CONTROLLER_INTC_ESP32_H_ +#define ZEPHYR_INCLUDE_DRIVERS_INTERRUPT_CONTROLLER_INTC_ESP32_H_ #include #include @@ -44,6 +44,17 @@ ESP_INTR_FLAG_LEVEL4|ESP_INTR_FLAG_LEVEL5|ESP_INTR_FLAG_LEVEL6| \ ESP_INTR_FLAG_NMI) +/* + * Get the interrupt flags from the supplied priority. + */ +#define ESP_PRIO_TO_FLAGS(priority) \ + ((priority) > 0 ? ((1 << (priority)) & ESP_INTR_FLAG_LEVELMASK) : 0) + +/* + * Check interrupt flags from input and filter unallowed values. + */ +#define ESP_INT_FLAGS_CHECK(int_flags) ((int_flags) & ESP_INTR_FLAG_SHARED) + /* * The esp_intr_alloc* functions can allocate an int for all *_INTR_SOURCE int sources that * are routed through the interrupt mux. Apart from these sources, each core also has some internal @@ -295,10 +306,9 @@ int esp_intr_set_in_iram(struct intr_handle_data_t *handle, bool is_in_iram); */ void esp_intr_noniram_disable(void); - /** * @brief Re-enable interrupts disabled by esp_intr_noniram_disable */ void esp_intr_noniram_enable(void); -#endif +#endif /* ZEPHYR_INCLUDE_DRIVERS_INTERRUPT_CONTROLLER_INTC_ESP32_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_esp32c3.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_esp32c3.h index 775a2e36..a30dc16e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_esp32c3.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_esp32c3.h @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef ZEPHYR_INCLUDE_DRIVERS_ESP_INTR_ALLOC_H__ -#define ZEPHYR_INCLUDE_DRIVERS_ESP_INTR_ALLOC_H__ +#ifndef ZEPHYR_INCLUDE_DRIVERS_INTERRUPT_CONTROLLER_INTC_ESP32C3_H_ +#define ZEPHYR_INCLUDE_DRIVERS_INTERRUPT_CONTROLLER_INTC_ESP32C3_H_ #include #include @@ -40,6 +40,18 @@ ESP_INTR_FLAG_LEVEL4|ESP_INTR_FLAG_LEVEL5|ESP_INTR_FLAG_LEVEL6| \ ESP_INTR_FLAG_NMI) +/* + * Get the interrupt flags from the supplied priority. + */ +#define ESP_PRIO_TO_FLAGS(priority) \ + ((priority) > 0 ? ((1 << (priority)) & ESP_INTR_FLAG_LEVELMASK) : 0) + +/* + * Check interrupt flags from input and filter unallowed values. + */ +#define ESP_INT_FLAGS_CHECK(int_flags) ((int_flags) & ESP_INTR_FLAG_SHARED) + + /* Function prototype for interrupt handler function */ typedef void (*isr_handler_t)(const void *arg); @@ -106,4 +118,4 @@ int esp_intr_enable(int source); */ uint32_t esp_intr_get_enabled_intmask(int status_mask_number); -#endif +#endif /* ZEPHYR_INCLUDE_DRIVERS_INTERRUPT_CONTROLLER_INTC_ESP32C3_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_wkpu_nxp_s32.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_wkpu_nxp_s32.h index c87a783e..9c4e9511 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_wkpu_nxp_s32.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intc_wkpu_nxp_s32.h @@ -1,5 +1,5 @@ /* - * Copyright 2023 NXP + * Copyright 2023-2024 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -11,57 +11,67 @@ #ifndef ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_WKPU_NXP_S32_H_ #define ZEPHYR_DRIVERS_INTERRUPT_CONTROLLER_INTC_WKPU_NXP_S32_H_ -#include - -/* Wrapper callback for WKPU line */ +/** NXP WKPU callback */ typedef void (*wkpu_nxp_s32_callback_t)(uint8_t pin, void *arg); +/** + * @brief NXP WKPU pin activation type + */ +enum wkpu_nxp_s32_trigger { + /** Interrupt triggered on rising edge */ + WKPU_NXP_S32_RISING_EDGE, + /** Interrupt triggered on falling edge */ + WKPU_NXP_S32_FALLING_EDGE, + /** Interrupt triggered on either edge */ + WKPU_NXP_S32_BOTH_EDGES, +}; + /** * @brief Unset WKPU callback for line * * @param dev WKPU device - * @param line WKPU line + * @param irq WKPU interrupt number */ -void wkpu_nxp_s32_unset_callback(const struct device *dev, uint8_t line); +void wkpu_nxp_s32_unset_callback(const struct device *dev, uint8_t irq); /** * @brief Set WKPU callback for line * * @param dev WKPU device - * @param line WKPU line - * @param cb Callback + * @param irq WKPU interrupt number * @param pin GPIO pin + * @param cb Callback * @param arg Callback data * * @retval 0 on SUCCESS * @retval -EBUSY if callback for the line is already set */ -int wkpu_nxp_s32_set_callback(const struct device *dev, uint8_t line, - wkpu_nxp_s32_callback_t cb, uint8_t pin, void *arg); +int wkpu_nxp_s32_set_callback(const struct device *dev, uint8_t irq, uint8_t pin, + wkpu_nxp_s32_callback_t cb, void *arg); /** * @brief Set edge event and enable interrupt for WKPU line * * @param dev WKPU device - * @param line WKPU line - * @param edge_type Type of edge event + * @param irq WKPU interrupt number + * @param trigger pin activation trigger */ -void wkpu_nxp_s32_enable_interrupt(const struct device *dev, uint8_t line, - Wkpu_Ip_EdgeType edge_type); +void wkpu_nxp_s32_enable_interrupt(const struct device *dev, uint8_t irq, + enum wkpu_nxp_s32_trigger trigger); /** * @brief Disable interrupt for WKPU line * * @param dev WKPU device - * @param line WKPU line + * @param irq WKPU interrupt number */ -void wkpu_nxp_s32_disable_interrupt(const struct device *dev, uint8_t line); +void wkpu_nxp_s32_disable_interrupt(const struct device *dev, uint8_t irq); /** * @brief Get pending interrupt for WKPU device * * @param dev WKPU device - * @return A mask contains pending flags + * @return A bitmask containing pending interrupts */ uint64_t wkpu_nxp_s32_get_pending(const struct device *dev); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intel_vtd.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intel_vtd.h index b91834c7..ecf86813 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intel_vtd.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/intel_vtd.h @@ -215,7 +215,7 @@ static inline void vtd_set_irte_msi(const struct device *dev, const struct vtd_driver_api *api = (const struct vtd_driver_api *)dev->api; - return api->set_irte_msi(dev, irte_idx, msi); + api->set_irte_msi(dev, irte_idx, msi); } static inline bool vtd_irte_is_msi(const struct device *dev, diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/riscv_clic.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/riscv_clic.h index 1e5fe78d..633edbf3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/riscv_clic.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/riscv_clic.h @@ -43,4 +43,11 @@ int riscv_clic_irq_is_enabled(uint32_t irq); */ void riscv_clic_irq_priority_set(uint32_t irq, uint32_t prio, uint32_t flags); +/** + * @brief Set vector mode of interrupt + * + * @param irq interrupt ID + */ +void riscv_clic_irq_vector_set(uint32_t irq); + #endif /* ZEPHYR_INCLUDE_DRIVERS_RISCV_CLIC_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/riscv_plic.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/riscv_plic.h index 22c57a4b..ff273d9f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/riscv_plic.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/interrupt_controller/riscv_plic.h @@ -44,9 +44,28 @@ int riscv_plic_irq_is_enabled(uint32_t irq); */ void riscv_plic_set_priority(uint32_t irq, uint32_t prio); +/** + * @brief Set IRQ affinity. + * + * @param irq IRQ line. + * @param cpumask CPU bit mask. + * + * @return 0 if success, negative errno value otherwise + */ +int riscv_plic_irq_set_affinity(uint32_t irq, uint32_t cpumask); + +/** + * @brief Set interrupt as pending + * + * @param irq Multi-level encoded interrupt ID + */ +void riscv_plic_irq_set_pending(uint32_t irq); + /** * @brief Get active interrupt ID * + * @note Should be called with interrupt locked + * * @return Returns the ID of an active interrupt */ unsigned int riscv_plic_get_irq(void); @@ -54,6 +73,8 @@ unsigned int riscv_plic_get_irq(void); /** * @brief Get active interrupt controller device * + * @note Should be called with interrupt locked + * * @return Returns device pointer of the active interrupt device */ const struct device *riscv_plic_get_dev(void); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/kscan.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/kscan.h index f2f87c7c..f12e2809 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/kscan.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/kscan.h @@ -30,11 +30,13 @@ extern "C" { * @defgroup kscan_interface Keyboard Scan Driver APIs * @since 2.1 * @version 1.0.0 + * @deprecated * @ingroup io_interfaces * @{ */ /** + * @deprecated * @brief Keyboard scan callback called when user press/release * a key on a matrix keyboard. * @@ -48,6 +50,7 @@ typedef void (*kscan_callback_t)(const struct device *dev, uint32_t row, bool pressed); /** + * @deprecated * @cond INTERNAL_HIDDEN * * Keyboard scan driver API definition and system call entry points. @@ -69,6 +72,7 @@ __subsystem struct kscan_driver_api { */ /** + * @deprecated * @brief Configure a Keyboard scan instance. * * @param dev Pointer to the device structure for the driver instance. @@ -90,6 +94,7 @@ static inline int z_impl_kscan_config(const struct device *dev, return api->config(dev, callback); } /** + * @deprecated * @brief Enables callback. * @param dev Pointer to the device structure for the driver instance. * @@ -111,6 +116,7 @@ static inline int z_impl_kscan_enable_callback(const struct device *dev) } /** + * @deprecated * @brief Disables callback. * @param dev Pointer to the device structure for the driver instance. * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/led.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/led.h index fbb66b5f..dc0bd133 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/led.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/led.h @@ -330,6 +330,135 @@ static inline int z_impl_led_off(const struct device *dev, uint32_t led) return api->off(dev, led); } +/* + * LED DT helpers. + */ + +/** + * @brief Container for an LED information specified in devicetree. + * + * This type contains a pointer to and LED device and an LED index. + * + * @see LED_DT_SPEC_GET + * @see LED_DT_SPEC_GET_OR + */ +struct led_dt_spec { + /** LED device instance. */ + const struct device *dev; + /** Index of the LED on the controller. */ + uint32_t index; +}; + +/** + * @brief Set LED brightness from a led_dt_spec. + * + * @param spec LED device specification from devicetree. + * @param value Brightness value to set in percent. + * @return 0 on success, negative on error. + * + * @see led_set_brightness() + */ +static inline int led_set_brightness_dt(const struct led_dt_spec *spec, + uint8_t value) +{ + return led_set_brightness(spec->dev, spec->index, value); +} + +/** + * @brief Turn on an LED from a struct led_dt_spec. + * + * @param spec LED device specification from devicetree. + * @return 0 on success, negative on error. + * + * @see led_on() + */ +static inline int led_on_dt(const struct led_dt_spec *spec) +{ + return led_on(spec->dev, spec->index); +} + +/** + * @brief Turn off an LED from a struct led_dt_spec. + * + * @param spec LED device specification from devicetree. + * @return 0 on success, negative on error. + * + * @see led_off() + */ +static inline int led_off_dt(const struct led_dt_spec *spec) +{ + return led_off(spec->dev, spec->index); +} + +/** + * @brief Validate that the LED device is ready. + * + * @param spec LED specification from devicetree. + * + * @retval true If the LED device is ready for use. + * @retval false If the LED device is not ready for use. + */ +static inline bool led_is_ready_dt(const struct led_dt_spec *spec) +{ + return device_is_ready(spec->dev); +} + +/** + * @brief Static initializer for a struct led_dt_spec + * + * This returns a static initializer for a struct led_dt_spec given a devicetree + * node identifier. + * + * Example devicetree fragment: + * + * @code{.dts} + * leds { + * compatible = "gpio-leds"; + * led0: led_0 { + * ... + * }; + * }; + * @endcode + * + * Example usage: + * + * @code{.c} + * const struct led_dt_spec spec = LED_DT_SPEC_GET(DT_NODELABEL(led0)); + * + * // Initializes 'spec' to: + * // { + * // .dev = DEVICE_DT_GET(DT_PARENT(led0)), + * // .index = 0, + * // } + * @endcode + * + * The device (dev) must still be checked for readiness, e.g. using + * device_is_ready(). + * + * @param node_id Devicetree node identifier. + * + * @return Static initializer for a struct led_dt_spec for the property. + */ +#define LED_DT_SPEC_GET(node_id) \ + { \ + .dev = DEVICE_DT_GET(DT_PARENT(node_id)), \ + .index = DT_NODE_CHILD_IDX(node_id), \ + } + +/** + * @brief Like LED_DT_SPEC_GET(), with a fallback value if the node does not exist. + * + * @param node_id Devicetree node identifier. + * + * @return Static initializer for a struct led_dt_spec for the property. + * + * @see LED_DT_SPEC_GET + */ +#define LED_DT_SPEC_GET_OR(node_id, default_value) \ + COND_CODE_1(DT_NODE_EXISTS(node_id), \ + (LED_DT_SPEC_GET(node_id)), \ + (default_value)) + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mbox.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mbox.h index 3f8ffc65..1945879b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mbox.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mbox.h @@ -201,7 +201,7 @@ typedef int (*mbox_register_callback_t)(const struct device *dev, * * @param dev MBOX device instance * @param channel_id Channel ID - * @param enables Set to 0 to disable and to nonzero to enable. + * @param enabled Set to 0 to disable and to nonzero to enable. * * @return See return values for mbox_set_enabled() * @see mbox_set_enabled() diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/ad559x.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/ad559x.h index 095cdd3e..60c86431 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/ad559x.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/ad559x.h @@ -13,6 +13,7 @@ extern "C" { #include #define AD559X_REG_SEQ_ADC 0x02U +#define AD559X_REG_GEN_CTRL 0x03U #define AD559X_REG_ADC_CONFIG 0x04U #define AD559X_REG_LDAC_EN 0x05U #define AD559X_REG_GPIO_PULLDOWN 0x06U @@ -21,8 +22,11 @@ extern "C" { #define AD559X_REG_GPIO_SET 0x09U #define AD559X_REG_GPIO_INPUT_EN 0x0AU #define AD559X_REG_PD_REF_CTRL 0x0BU +#define AD559X_REG_IO_TS_CONFIG 0x0DU -#define AD559X_EN_REF BIT(9) +#define AD559X_DAC_RANGE BIT(4) +#define AD559X_ADC_RANGE BIT(5) +#define AD559X_EN_REF BIT(9) #define AD559X_PIN_MAX 8U diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/aw9523b.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/aw9523b.h new file mode 100644 index 00000000..68abdc0d --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/aw9523b.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2024 TOKITA Hiroshi + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_MFD_AW9523B_H_ +#define ZEPHYR_INCLUDE_DRIVERS_MFD_AW9523B_H_ + +struct k_sem; +struct device; + +#define AW9523B_REG_INPUT0 0x00 +#define AW9523B_REG_INPUT1 0x01 +#define AW9523B_REG_OUTPUT0 0x02 +#define AW9523B_REG_OUTPUT1 0x03 +#define AW9523B_REG_CONFIG0 0x04 +#define AW9523B_REG_CONFIG1 0x05 +#define AW9523B_REG_INT0 0x06 +#define AW9523B_REG_INT1 0x07 +#define AW9523B_REG_ID 0x10 +#define AW9523B_REG_CTL 0x11 +#define AW9523B_REG_MODE0 0x12 +#define AW9523B_REG_MODE1 0x13 +#define AW9523B_REG_DIM0 0x20 +#define AW9523B_REG_DIM1 0x21 +#define AW9523B_REG_DIM2 0x22 +#define AW9523B_REG_DIM3 0x23 +#define AW9523B_REG_DIM4 0x24 +#define AW9523B_REG_DIM5 0x25 +#define AW9523B_REG_DIM6 0x26 +#define AW9523B_REG_DIM7 0x27 +#define AW9523B_REG_DIM8 0x28 +#define AW9523B_REG_DIM9 0x29 +#define AW9523B_REG_DIM10 0x2A +#define AW9523B_REG_DIM11 0x2B +#define AW9523B_REG_DIM12 0x2C +#define AW9523B_REG_DIM13 0x2D +#define AW9523B_REG_DIM14 0x2E +#define AW9523B_REG_DIM15 0x2F +#define AW9523B_REG_SW_RSTN 0x7F + +struct k_sem *aw9523b_get_lock(const struct device *dev); + +#endif /* ZEPHYR_INCLUDE_DRIVERS_MFD_AW9523B_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/mfd_ite_it8801.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/mfd_ite_it8801.h new file mode 100644 index 00000000..94104fbd --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/mfd_ite_it8801.h @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2024 ITE Corporation. All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_MFD_ITE_IT8801_H_ +#define ZEPHYR_INCLUDE_DRIVERS_MFD_ITE_IT8801_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * IC clock and power management controller register fields + */ +/* 0xf9: Gather interrupt status register */ +#define IT8801_REG_GISR 0xf9 +#define IT8801_REG_MASK_GISR_GKSIIS BIT(6) +/* 0xfb: Gather interrupt enable control register */ +#define IT8801_REG_GIECR 0xfb +#define IT8801_REG_MASK_GKSIIE BIT(3) +#define IT8801_REG_MASK_GGPIOIE BIT(2) + +/* + * General control register fields + */ +#define IT8801_REG_LBVIDR 0xfe +#define IT8801_REG_HBVIDR 0xff + +struct it8801_vendor_id_t { + uint8_t chip_id; + uint8_t reg; +}; + +static const struct it8801_vendor_id_t it8801_id_verify[] = { + {0x12, IT8801_REG_HBVIDR}, + {0x83, IT8801_REG_LBVIDR}, +}; + +/* + * SMbus interface register fields + */ +/* 0xfa: SMBus control register */ +#define IT8801_REG_SMBCR 0xfa +#define IT8801_REG_MASK_ARE BIT(4) + +/* + * GPIO register fields + */ +#define IT8801_GPIOAFS_FUN1 0x0 +#define IT8801_GPIOAFS_FUN2 0x01 +#define IT8801_GPIOAFS_FUN3 0x02 +/* GPIO control register */ +/* GPIO direction */ +#define IT8801_GPIODIR BIT(5) +/* GPIO input and output type */ +#define IT8801_GPIOIOT_OD BIT(4) +#define IT8801_GPIOIOT_INT_FALL BIT(4) +#define IT8801_GPIOIOT_INT_RISE BIT(3) +/* GPIO polarity */ +#define IT8801_GPIOPOL BIT(2) +/* GPIO pull-down enable */ +#define IT8801_GPIOPDE BIT(1) +/* GPIO pull-up enable */ +#define IT8801_GPIOPUE BIT(0) + +/* + * Keyboard matrix scan controller register fields + */ +/* 0x40: Keyboard scan out mode control register */ +#define IT8801_REG_MASK_KSOSDIC BIT(7) +#define IT8801_REG_MASK_KSE BIT(6) +#define IT8801_REG_MASK_AKSOSC BIT(5) + +/* + * PWM register fields + */ +#define PWM_IT8801_FREQ 32895 +/* Control push-pull flag */ +#define PWM_IT8801_PUSH_PULL BIT(8) +/* 0x5f: PWM output open-drain disable register */ +#define IT8801_REG_PWMODDSR 0x5f +/* PWM mode control register */ +#define IT8801_PWMMCR_MCR_MASK GENMASK(1, 0) +#define IT8801_PWMMCR_MCR_OFF 0 +#define IT8801_PWMMCR_MCR_BLINKING 1 +#define IT8801_PWMMCR_MCR_BREATHING 2 +#define IT8801_PWMMCR_MCR_ON 3 + +/* + * For IT8801 MFD alternate function controller + */ +#define IT8801_DT_INST_MFDCTRL(inst, idx) DT_INST_PHANDLE_BY_IDX(inst, mfdctrl, idx) + +#define IT8801_DT_INST_MFDCTRL_LEN(inst) DT_INST_PROP_LEN_OR(inst, mfdctrl, 0) + +#define IT8801_DEV_MFD(idx, inst) \ + DEVICE_DT_GET(DT_PHANDLE(IT8801_DT_INST_MFDCTRL(inst, idx), altctrls)) +#define IT8801_DEV_MFD_PIN(idx, inst) DT_PHA(IT8801_DT_INST_MFDCTRL(inst, idx), altctrls, pin) +#define IT8801_DEV_MFD_FUNC(idx, inst) DT_PHA(IT8801_DT_INST_MFDCTRL(inst, idx), altctrls, alt_func) + +#define IT8801_DT_MFD_ITEMS_FUNC(idx, inst) \ + { \ + .gpiocr = IT8801_DEV_MFD(idx, inst), \ + .pin = IT8801_DEV_MFD_PIN(idx, inst), \ + .alt_func = IT8801_DEV_MFD_FUNC(idx, inst), \ + } + +#define IT8801_DT_MFD_ITEMS_LIST(inst) \ + {LISTIFY(IT8801_DT_INST_MFDCTRL_LEN(inst), \ + IT8801_DT_MFD_ITEMS_FUNC, (,), \ + inst) } + +/* + * Configure alternate function pin + */ +int mfd_it8801_configure_pins(const struct i2c_dt_spec *i2c_dev, const struct device *dev, + uint8_t pin, uint8_t func); + +/* Define the IT8801 MFD interrupt callback function handler */ +typedef void (*it8801_callback_handler_t)(const struct device *dev); + +struct it8801_mfd_callback { + sys_snode_t node; + it8801_callback_handler_t cb; + const struct device *dev; +}; +/* Register the interrupt of IT8801 MFD callback function */ +void mfd_it8801_register_interrupt_callback(const struct device *mfd, + struct it8801_mfd_callback *callback); + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DRIVERS_MFD_ITE_IT8801_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/npm2100.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/npm2100.h new file mode 100644 index 00000000..8a45925a --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mfd/npm2100.h @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_MFD_NPM2100_H_ +#define ZEPHYR_INCLUDE_DRIVERS_MFD_NPM2100_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup mdf_interface_npm2100 MFD NPM2100 Interface + * @ingroup mfd_interfaces + * @{ + */ + +#include +#include + +#include +#include + +enum mfd_npm2100_event { + NPM2100_EVENT_SYS_DIETEMP_WARN, + NPM2100_EVENT_SYS_SHIPHOLD_FALL, + NPM2100_EVENT_SYS_SHIPHOLD_RISE, + NPM2100_EVENT_SYS_PGRESET_FALL, + NPM2100_EVENT_SYS_PGRESET_RISE, + NPM2100_EVENT_SYS_TIMER_EXPIRY, + NPM2100_EVENT_ADC_VBAT_READY, + NPM2100_EVENT_ADC_DIETEMP_READY, + NPM2100_EVENT_ADC_DROOP_DETECT, + NPM2100_EVENT_ADC_VOUT_READY, + NPM2100_EVENT_GPIO0_FALL, + NPM2100_EVENT_GPIO0_RISE, + NPM2100_EVENT_GPIO1_FALL, + NPM2100_EVENT_GPIO1_RISE, + NPM2100_EVENT_BOOST_VBAT_WARN, + NPM2100_EVENT_BOOST_VOUT_MIN, + NPM2100_EVENT_BOOST_VOUT_WARN, + NPM2100_EVENT_BOOST_VOUT_DPS, + NPM2100_EVENT_BOOST_VOUT_OK, + NPM2100_EVENT_LDOSW_OCP, + NPM2100_EVENT_LDOSW_VINTFAIL, + NPM2100_EVENT_MAX +}; + +enum mfd_npm2100_timer_mode { + NPM2100_TIMER_MODE_GENERAL_PURPOSE, + NPM2100_TIMER_MODE_WDT_RESET, + NPM2100_TIMER_MODE_WDT_POWER_CYCLE, + NPM2100_TIMER_MODE_WAKEUP, +}; + +/** + * @brief Write npm2100 timer register + * + * The timer tick resolution is 1/64 seconds. + * This function does not start the timer (see mfd_npm2100_start_timer()). + * + * @param dev npm2100 mfd device + * @param time_ms timer value in ms + * @param mode timer mode + * @retval 0 If successful + * @retval -EINVAL if time value is too large + * @retval -errno In case of any bus error (see i2c_write_dt()) + */ +int mfd_npm2100_set_timer(const struct device *dev, uint32_t time_ms, + enum mfd_npm2100_timer_mode mode); + +/** + * @brief Start npm2100 timer + * + * @param dev npm2100 mfd device + * @retval 0 If successful + * @retval -errno In case of any bus error (see i2c_write_dt()) + */ +int mfd_npm2100_start_timer(const struct device *dev); + +/** + * @brief npm2100 full power reset + * + * @param dev npm2100 mfd device + * @retval 0 If successful + * @retval -errno In case of any bus error (see i2c_write_dt()) + */ +int mfd_npm2100_reset(const struct device *dev); + +/** + * @brief npm2100 hibernate + * + * Enters low power state, and wakes after specified time or "shphld" pin signal. + * + * @param dev npm2100 mfd device + * @param time_ms timer value in ms. Set to 0 to disable timer. + * @retval 0 If successful + * @retval -EINVAL if time value is too large + * @retval -EBUSY if the timer is already in use. + * @retval -errno In case of any bus error (see i2c_write_dt()) + */ +int mfd_npm2100_hibernate(const struct device *dev, uint32_t time_ms); + +/** + * @brief Add npm2100 event callback + * + * @param dev npm2100 mfd device + * @param callback callback + * @return 0 on success, -errno on failure + */ +int mfd_npm2100_add_callback(const struct device *dev, struct gpio_callback *callback); + +/** + * @brief Remove npm2100 event callback + * + * @param dev npm2100 mfd device + * @param callback callback + * @return 0 on success, -errno on failure + */ +int mfd_npm2100_remove_callback(const struct device *dev, struct gpio_callback *callback); + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DRIVERS_MFD_NPM2100_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mipi_dbi.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mipi_dbi.h index d6ffcaf3..109741e3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mipi_dbi.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mipi_dbi.h @@ -15,7 +15,7 @@ * 1. 9 write clocks per byte, final bit is command/data selection bit * 2. Same as above, but 16 write clocks per byte * 3. 8 write clocks per byte. Command/data selected via GPIO pin - * The current driver interface only supports type C modes 1 and 3 + * The current driver interface does not support type C with 16 write clocks (option 2). */ #ifndef ZEPHYR_INCLUDE_DRIVERS_MIPI_DBI_H_ @@ -63,7 +63,7 @@ extern "C" { .cs = { \ .gpio = GPIO_DT_SPEC_GET_BY_IDX_OR(DT_PHANDLE(DT_PARENT(node_id), \ spi_dev), cs_gpios, \ - DT_REG_ADDR(node_id), \ + DT_REG_ADDR_RAW(node_id), \ {}), \ .delay = (delay_), \ }, \ @@ -96,7 +96,7 @@ extern "C" { */ #define MIPI_DBI_CONFIG_DT(node_id, operation_, delay_) \ { \ - .mode = DT_PROP(node_id, mipi_mode), \ + .mode = DT_STRING_UPPER_TOKEN(node_id, mipi_mode), \ .config = MIPI_DBI_SPI_CONFIG_DT(node_id, operation_, delay_), \ } @@ -112,13 +112,37 @@ extern "C" { #define MIPI_DBI_CONFIG_DT_INST(inst, operation_, delay_) \ MIPI_DBI_CONFIG_DT(DT_DRV_INST(inst), operation_, delay_) +/** + * @brief Get the MIPI DBI TE mode from devicetree + * + * Gets the MIPI DBI TE mode from a devicetree property. + * @param node_id Devicetree node identifier for the MIPI DBI device with the + * TE mode property + * @param edge_prop Property name for the TE mode that should be read from + * devicetree + */ +#define MIPI_DBI_TE_MODE_DT(node_id, edge_prop) \ + DT_STRING_UPPER_TOKEN(node_id, edge_prop) + +/** + * @brief Get the MIPI DBI TE mode for device instance + * + * Gets the MIPI DBI TE mode from a devicetree property. Equivalent to + * MIPI_DBI_TE_MODE_DT(DT_DRV_INST(inst), edge_mode). + * @param inst Instance of the device to get the TE mode for + * @param edge_prop Property name for the TE mode that should be read from + * devicetree + */ +#define MIPI_DBI_TE_MODE_DT_INST(inst, edge_prop) \ + DT_STRING_UPPER_TOKEN(DT_DRV_INST(inst), edge_prop) + /** * @brief MIPI DBI controller configuration * * Configuration for MIPI DBI controller write */ struct mipi_dbi_config { - /** MIPI DBI mode (SPI 3 wire or 4 wire) */ + /** MIPI DBI mode */ uint8_t mode; /** SPI configuration */ struct spi_config config; @@ -138,9 +162,12 @@ __subsystem struct mipi_dbi_driver_api { const uint8_t *framebuf, struct display_buffer_descriptor *desc, enum display_pixel_format pixfmt); - int (*reset)(const struct device *dev, uint32_t delay); + int (*reset)(const struct device *dev, k_timeout_t delay); int (*release)(const struct device *dev, const struct mipi_dbi_config *config); + int (*configure_te)(const struct device *dev, + uint8_t edge, + k_timeout_t delay); }; /** @@ -247,13 +274,13 @@ static inline int mipi_dbi_write_display(const struct device *dev, * * Resets the attached display controller. * @param dev mipi dbi controller - * @param delay duration to set reset signal for, in milliseconds + * @param delay_ms duration to set reset signal for, in milliseconds * @retval 0 reset succeeded * @retval -EIO I/O error * @retval -ENOSYS not implemented * @retval -ENOTSUP not supported */ -static inline int mipi_dbi_reset(const struct device *dev, uint32_t delay) +static inline int mipi_dbi_reset(const struct device *dev, uint32_t delay_ms) { const struct mipi_dbi_driver_api *api = (const struct mipi_dbi_driver_api *)dev->api; @@ -261,7 +288,7 @@ static inline int mipi_dbi_reset(const struct device *dev, uint32_t delay) if (api->reset == NULL) { return -ENOSYS; } - return api->reset(dev, delay); + return api->reset(dev, K_MSEC(delay_ms)); } /** @@ -293,6 +320,45 @@ static inline int mipi_dbi_release(const struct device *dev, return api->release(dev, config); } +/** + * @brief Configures MIPI DBI tearing effect signal + * + * Many displays provide a tearing effect signal, which can be configured + * to pulse at each vsync interval or each hsync interval. This signal can be + * used by the MCU to determine when to transmit a new frame so that the + * read pointer of the display never overlaps with the write pointer from the + * MCU. This function configures the MIPI DBI controller to delay transmitting + * display frames until the selected tearing effect signal edge occurs. + * + * The delay will occur on the on each call to @ref mipi_dbi_write_display + * where the ``frame_incomplete`` flag was set within the buffer descriptor + * provided with the prior call, as this indicates the buffer being written + * in this call is the first buffer of a new frame. + * + * Note that most display controllers will need to enable the TE signal + * using vendor specific commands before the MIPI DBI controller can react + * to it. + * + * @param dev mipi dbi controller + * @param edge which edge of the TE signal to start transmitting on + * @param delay_us how many microseconds after TE edge to start transmission + * @retval -EIO I/O error + * @retval -ENOSYS not implemented + * @retval -ENOTSUP not supported + */ +static inline int mipi_dbi_configure_te(const struct device *dev, + uint8_t edge, + uint32_t delay_us) +{ + const struct mipi_dbi_driver_api *api = + (const struct mipi_dbi_driver_api *)dev->api; + + if (api->configure_te == NULL) { + return -ENOSYS; + } + return api->configure_te(dev, edge, K_USEC(delay_us)); +} + #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/misc/coresight/nrf_etr.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/misc/coresight/nrf_etr.h new file mode 100644 index 00000000..062afa3b --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/misc/coresight/nrf_etr.h @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef _ZEPHYR_DRIVERS_MISC_CORESIGHT_NRF_ETR_H_ +#define _ZEPHYR_DRIVERS_MISC_CORESIGHT_NRF_ETR_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** @brief Flush data from the ETR buffer. */ +void nrf_etr_flush(void); + +#ifdef __cplusplus +} +#endif + +#endif /* _ZEPHYR_DRIVERS_MISC_CORESIGHT_NRF_ETR_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/misc/coresight/stmesp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/misc/coresight/stmesp.h new file mode 100644 index 00000000..d14e6e42 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/misc/coresight/stmesp.h @@ -0,0 +1,193 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_MISC_CORESIGHT_STMESP_H_ +#define ZEPHYR_INCLUDE_DRIVERS_MISC_CORESIGHT_STMESP_H_ + +#include + +/** + * @brief Coresight STMESP (STM Extended Stimulus Port) Interface + * @defgroup stmsp_interface Coresight STMESP interface + * @ingroup misc_interfaces + * @{ + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** @cond INTERNAL_HIDDEN + * @brief STMESP register structure. + */ +typedef struct { + volatile uint32_t G_DMTS[2]; + volatile uint32_t G_DM[2]; + volatile uint32_t G_DTS[2]; + volatile uint32_t G_D[2]; + volatile uint32_t RESERVED0[16]; + volatile uint32_t G_FLAGTS[2]; + volatile uint32_t G_FLAG[2]; + volatile uint32_t G_TRIGTS[2]; + volatile uint32_t G_TRIG[2]; + volatile uint32_t I_DMTS[2]; + volatile uint32_t I_DM[2]; + volatile uint32_t I_DTS[2]; + volatile uint32_t I_D[2]; + volatile uint32_t RESERVED1[16]; + volatile uint32_t I_FLAGTS[2]; + volatile uint32_t I_FLAG[2]; + volatile uint32_t I_TRIGTS[2]; + volatile uint32_t I_TRIG[2]; +} STMESP_Type; + +/** @brief Helper function for getting target register. + * + * @param reg STMESP register set. + * @param ts Use timestamp. + * @param marked Use marked register. + * @param guaranteed True to use guaranteed access. + * + * @return Address of the register. + */ +static inline volatile void *_stmesp_get_data_reg(STMESP_Type *reg, bool ts, + bool marked, bool guaranteed) +{ + if (ts) { + if (guaranteed) { + if (marked) { + return ®->G_DMTS[0]; + } else { + return ®->G_DTS[0]; + } + } else { + if (marked) { + return ®->I_DMTS[0]; + } else { + return ®->I_DTS[0]; + } + } + } else { + if (guaranteed) { + if (marked) { + return ®->G_DM[0]; + } else { + return ®->G_D[0]; + } + } else { + if (marked) { + return ®->I_DM[0]; + } else { + return ®->I_D[0]; + } + } + } +} + +/** @endcond */ + +/** @brief Write flag to STMESP + * + * @param reg STMESP register set. + * @param data Data written to the flag register. + * @param ts If true add timestamp. + * @param guaranteed If true guaranteed write and invariant if false. + */ +static inline void stmesp_flag(STMESP_Type *reg, uint32_t data, bool ts, bool guaranteed) +{ + if (ts) { + if (guaranteed) { + reg->G_FLAGTS[0] = data; + } else { + reg->I_FLAGTS[0] = data; + } + } else { + if (guaranteed) { + reg->G_FLAG[0] = data; + } else { + reg->I_FLAG[0] = data; + } + } +} + +/** @brief Write 8 bit data to STMESP + * + * @param reg STMESP register set. + * @param data Byte to write. + * @param ts If true add timestamp. + * @param marked If true marked write. + * @param guaranteed If true guaranteed write and invariant if false. + */ +static inline void stmesp_data8(STMESP_Type *reg, uint8_t data, bool ts, + bool marked, bool guaranteed) +{ + *(volatile uint8_t *)_stmesp_get_data_reg(reg, ts, marked, guaranteed) = data; +} + +/** @brief Write 16 bit data to STMESP + * + * @param reg STMESP register set. + * @param data Half word to write. + * @param ts If true add timestamp. + * @param marked If true marked write. + * @param guaranteed If true guaranteed write and invariant if false. + */ +static inline void stmesp_data16(STMESP_Type *reg, uint16_t data, bool ts, + bool marked, bool guaranteed) +{ + *(volatile uint16_t *)_stmesp_get_data_reg(reg, ts, marked, guaranteed) = data; +} + +/** @brief Write 32 bit data to STMESP + * + * @param reg STMESP register set. + * @param data Word to write. + * @param ts If true add timestamp. + * @param marked If true marked write. + * @param guaranteed If true guaranteed write and invariant if false. + */ +static inline void stmesp_data32(STMESP_Type *reg, uint32_t data, bool ts, + bool marked, bool guaranteed) +{ + *(volatile uint32_t *)_stmesp_get_data_reg(reg, ts, marked, guaranteed) = data; +} + +/** + * @brief Return address of a STM extended stimulus port. + * + * Function return a port from the local STMESP instance. + * + * @param[in] idx Index of the requested stimulus port. + * @param[out] port Location where pointer to the port is written. + * + * @retval -EINVAL if @p idx or @p port is invalid. + * @retval 0 on success. + */ +static inline int stmesp_get_port(uint32_t idx, STMESP_Type **port) + +{ + /* Check if index is within STM ports */ + if ((port == NULL) || + (idx >= (DT_REG_SIZE(DT_NODELABEL(stmesp)) / sizeof(STMESP_Type)))) { + return -EINVAL; + } + + STMESP_Type *const base = (STMESP_Type *const)DT_REG_ADDR(DT_NODELABEL(stmesp)); + + *port = &base[idx]; + + return 0; +} + +#ifdef __cplusplus +} +#endif + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_DRIVERS_MISC_CORESIGHT_STMESP_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/misc/devmux/devmux.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/misc/devmux/devmux.h index 8b01d633..4c084199 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/misc/devmux/devmux.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/misc/devmux/devmux.h @@ -62,7 +62,7 @@ extern "C" { * @return The index (>= 0) of the currently active multiplexed device on success * @retval -EINVAL If @p dev is invalid */ -__syscall ssize_t devmux_select_get(const struct device *dev); +__syscall int devmux_select_get(const struct device *dev); /** * @brief Set the selection of a devmux device. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mspi.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mspi.h index fefa48fa..3c8a535a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mspi.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mspi.h @@ -204,7 +204,10 @@ enum mspi_timing_param { * @brief Stub for struct timing_cfg */ struct mspi_timing_cfg { - +#ifdef __cplusplus + /* For C++ compatibility. */ + uint8_t dummy; +#endif }; /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mspi/devicetree.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mspi/devicetree.h index c720071c..a3e5b653 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mspi/devicetree.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/mspi/devicetree.h @@ -212,7 +212,8 @@ extern "C" { * @return #gpio_dt_spec struct corresponding with mspi_dev's chip enable */ #define MSPI_DEV_CE_GPIOS_DT_SPEC_GET(mspi_dev) \ - GPIO_DT_SPEC_GET_BY_IDX_OR(DT_BUS(mspi_dev), ce_gpios, DT_REG_ADDR(mspi_dev), {}) + GPIO_DT_SPEC_GET_BY_IDX_OR(DT_BUS(mspi_dev), ce_gpios, \ + DT_REG_ADDR_RAW(mspi_dev), {}) /** * @brief Get a struct gpio_dt_spec for a MSPI device's chip enable pin diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/pinctrl.h index 3c2fefbe..cfababd1 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/pinctrl.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/pinctrl.h @@ -157,10 +157,10 @@ struct pinctrl_dev_config { #define Z_PINCTRL_STATE_INIT(state_idx, node_id) \ COND_CODE_1(Z_PINCTRL_SKIP_STATE(state_idx, node_id), (), \ ({ \ - .id = Z_PINCTRL_STATE_ID(state_idx, node_id), \ .pins = Z_PINCTRL_STATE_PINS_NAME(state_idx, node_id), \ .pin_cnt = ARRAY_SIZE(Z_PINCTRL_STATE_PINS_NAME(state_idx, \ - node_id)) \ + node_id)), \ + .id = Z_PINCTRL_STATE_ID(state_idx, node_id) \ })) /** @@ -414,9 +414,9 @@ static inline int pinctrl_apply_state(const struct pinctrl_dev_config *config, */ #define PINCTRL_DT_STATE_INIT(prop, state) \ { \ - .id = state, \ .pins = prop ## _pins, \ - .pin_cnt = ARRAY_SIZE(prop ## _pins) \ + .pin_cnt = ARRAY_SIZE(prop ## _pins), \ + .id = state \ } /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/pinctrl/pinctrl_nxp_port_common.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/pinctrl/pinctrl_nxp_port_common.h new file mode 100644 index 00000000..e7976b5c --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/pinctrl/pinctrl_nxp_port_common.h @@ -0,0 +1,78 @@ +/* + * Copyright 2022, 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/* + * @file + * NXP PORT SOC specific helpers for pinctrl driver + */ + + +#ifndef ZEPHYR_INCLUDE_DRIVERS_PINCTRL_PINCTRL_NXP_PORT_COMMON_H_ +#define ZEPHYR_INCLUDE_DRIVERS_PINCTRL_PINCTRL_NXP_PORT_COMMON_H_ + +/** @cond INTERNAL_HIDDEN */ + +#include +#include + +/* Include SOC headers, so we get definitions for PCR bitmasks */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Some PORT IP instantiations lack certain features, include input buffers, + * open drain, and slew rate. If masks aren't defined for these bitfields, + * define them to have no effect + */ +#ifndef PORT_PCR_IBE_MASK /* Input buffer enable */ +#define PORT_PCR_IBE_MASK 0x0 +#define PORT_PCR_IBE(x) 0x0 +#endif + +#ifndef PORT_PCR_SRE_MASK /* Slew rate */ +#define PORT_PCR_SRE_MASK 0x0 +#define PORT_PCR_SRE(x) 0x0 +#endif + +#ifndef PORT_PCR_ODE_MASK /* Open drain */ +#define PORT_PCR_ODE_MASK 0x0 +#define PORT_PCR_ODE(x) 0x0 +#endif + + +typedef uint32_t pinctrl_soc_pin_t; + +#define Z_PINCTRL_NXP_PORT_PINCFG(node_id) \ + (PORT_PCR_DSE(DT_ENUM_IDX(node_id, drive_strength)) | \ + PORT_PCR_PS(DT_PROP(node_id, bias_pull_up)) | \ + PORT_PCR_PE(DT_PROP(node_id, bias_pull_up)) | \ + PORT_PCR_PE(DT_PROP(node_id, bias_pull_down)) | \ + PORT_PCR_ODE(DT_PROP(node_id, drive_open_drain)) | \ + PORT_PCR_SRE(DT_ENUM_IDX(node_id, slew_rate)) | \ + PORT_PCR_IBE(DT_PROP(node_id, input_enable)) | \ + PORT_PCR_PFE(DT_PROP(node_id, nxp_passive_filter))) + +#define Z_PINCTRL_NXP_PORT_PCR_MASK \ + (PORT_PCR_MUX_MASK | PORT_PCR_DSE_MASK | PORT_PCR_ODE_MASK | PORT_PCR_PFE_MASK | \ + PORT_PCR_IBE_MASK | PORT_PCR_SRE_MASK | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK) + +#define Z_PINCTRL_STATE_PIN_INIT(group, pin_prop, idx) \ + DT_PROP_BY_IDX(group, pin_prop, idx) | Z_PINCTRL_NXP_PORT_PINCFG(group), + +#define Z_PINCTRL_STATE_PINS_INIT(node_id, prop) \ + {DT_FOREACH_CHILD_VARGS(DT_PHANDLE(node_id, prop), DT_FOREACH_PROP_ELEM, pinmux, \ + Z_PINCTRL_STATE_PIN_INIT)}; + +#ifdef __cplusplus +} +#endif + +/** @endcond */ + +#endif /* ZEPHYR_INCLUDE_DRIVERS_PINCTRL_PINCTRL_NXP_PORT_COMMON_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/pwm/pwm_fake.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/pwm/pwm_fake.h new file mode 100644 index 00000000..4d430e75 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/pwm/pwm_fake.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2024, Kickmaker + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef INCLUDE_DRIVERS_PWM_PWM_FAKE_H_ +#define INCLUDE_DRIVERS_PWM_PWM_FAKE_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +DECLARE_FAKE_VALUE_FUNC(int, fake_pwm_set_cycles, const struct device *, uint32_t, uint32_t, + uint32_t, pwm_flags_t); + +#ifdef __cplusplus +} +#endif + +#endif /* INCLUDE_DRIVERS_PWM_PWM_FAKE_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/regulator.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/regulator.h index 463777ea..1d8e2255 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/regulator.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/regulator.h @@ -179,7 +179,7 @@ struct regulator_common_config { uint8_t allowed_modes_cnt; /** Regulator initial mode */ regulator_mode_t initial_mode; - /** Flags (@reg REGULATOR_FLAGS). */ + /** Flags (@ref REGULATOR_FLAGS). */ uint8_t flags; }; @@ -313,6 +313,28 @@ static inline int regulator_common_get_min_voltage(const struct device *dev, int return 0; } +/** + * @brief Get maximum supported voltage. + * + * @param dev Regulator device instance. + * @param max_uv Where maximum voltage will be stored, in microvolts. + * + * @retval 0 If successful + * @retval -ENOENT If maximum voltage is not specified. + */ +static inline int regulator_common_get_max_voltage(const struct device *dev, int32_t *max_uv) +{ + const struct regulator_common_config *config = + (const struct regulator_common_config *)dev->config; + + if (config->max_uv == INT32_MAX) { + return -ENOENT; + } + + *max_uv = config->max_uv; + return 0; +} + /** @endcond */ /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/rtc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/rtc.h index b042af0a..946d6e30 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/rtc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/rtc.h @@ -199,9 +199,7 @@ __syscall int rtc_set_time(const struct device *dev, const struct rtc_time *time static inline int z_impl_rtc_set_time(const struct device *dev, const struct rtc_time *timeptr) { - const struct rtc_driver_api *api = (const struct rtc_driver_api *)dev->api; - - return api->set_time(dev, timeptr); + return DEVICE_API_GET(rtc, dev)->set_time(dev, timeptr); } /** @@ -218,9 +216,7 @@ __syscall int rtc_get_time(const struct device *dev, struct rtc_time *timeptr); static inline int z_impl_rtc_get_time(const struct device *dev, struct rtc_time *timeptr) { - const struct rtc_driver_api *api = (const struct rtc_driver_api *)dev->api; - - return api->get_time(dev, timeptr); + return DEVICE_API_GET(rtc, dev)->get_time(dev, timeptr); } /** @@ -249,13 +245,11 @@ __syscall int rtc_alarm_get_supported_fields(const struct device *dev, uint16_t static inline int z_impl_rtc_alarm_get_supported_fields(const struct device *dev, uint16_t id, uint16_t *mask) { - const struct rtc_driver_api *api = (const struct rtc_driver_api *)dev->api; - - if (api->alarm_get_supported_fields == NULL) { + if (DEVICE_API_GET(rtc, dev)->alarm_get_supported_fields == NULL) { return -ENOSYS; } - return api->alarm_get_supported_fields(dev, id, mask); + return DEVICE_API_GET(rtc, dev)->alarm_get_supported_fields(dev, id, mask); } /** @@ -287,13 +281,11 @@ __syscall int rtc_alarm_set_time(const struct device *dev, uint16_t id, uint16_t static inline int z_impl_rtc_alarm_set_time(const struct device *dev, uint16_t id, uint16_t mask, const struct rtc_time *timeptr) { - const struct rtc_driver_api *api = (const struct rtc_driver_api *)dev->api; - - if (api->alarm_set_time == NULL) { + if (DEVICE_API_GET(rtc, dev)->alarm_set_time == NULL) { return -ENOSYS; } - return api->alarm_set_time(dev, id, mask, timeptr); + return DEVICE_API_GET(rtc, dev)->alarm_set_time(dev, id, mask, timeptr); } /** @@ -317,13 +309,11 @@ __syscall int rtc_alarm_get_time(const struct device *dev, uint16_t id, uint16_t static inline int z_impl_rtc_alarm_get_time(const struct device *dev, uint16_t id, uint16_t *mask, struct rtc_time *timeptr) { - const struct rtc_driver_api *api = (const struct rtc_driver_api *)dev->api; - - if (api->alarm_get_time == NULL) { + if (DEVICE_API_GET(rtc, dev)->alarm_get_time == NULL) { return -ENOSYS; } - return api->alarm_get_time(dev, id, mask, timeptr); + return DEVICE_API_GET(rtc, dev)->alarm_get_time(dev, id, mask, timeptr); } /** @@ -345,13 +335,11 @@ __syscall int rtc_alarm_is_pending(const struct device *dev, uint16_t id); static inline int z_impl_rtc_alarm_is_pending(const struct device *dev, uint16_t id) { - const struct rtc_driver_api *api = (const struct rtc_driver_api *)dev->api; - - if (api->alarm_is_pending == NULL) { + if (DEVICE_API_GET(rtc, dev)->alarm_is_pending == NULL) { return -ENOSYS; } - return api->alarm_is_pending(dev, id); + return DEVICE_API_GET(rtc, dev)->alarm_is_pending(dev, id); } /** @@ -386,13 +374,11 @@ __syscall int rtc_alarm_set_callback(const struct device *dev, uint16_t id, static inline int z_impl_rtc_alarm_set_callback(const struct device *dev, uint16_t id, rtc_alarm_callback callback, void *user_data) { - const struct rtc_driver_api *api = (const struct rtc_driver_api *)dev->api; - - if (api->alarm_set_callback == NULL) { + if (DEVICE_API_GET(rtc, dev)->alarm_set_callback == NULL) { return -ENOSYS; } - return api->alarm_set_callback(dev, id, callback, user_data); + return DEVICE_API_GET(rtc, dev)->alarm_set_callback(dev, id, callback, user_data); } #endif /* CONFIG_RTC_ALARM */ @@ -431,13 +417,11 @@ __syscall int rtc_update_set_callback(const struct device *dev, rtc_update_callb static inline int z_impl_rtc_update_set_callback(const struct device *dev, rtc_update_callback callback, void *user_data) { - const struct rtc_driver_api *api = (const struct rtc_driver_api *)dev->api; - - if (api->update_set_callback == NULL) { + if (DEVICE_API_GET(rtc, dev)->update_set_callback == NULL) { return -ENOSYS; } - return api->update_set_callback(dev, callback, user_data); + return DEVICE_API_GET(rtc, dev)->update_set_callback(dev, callback, user_data); } #endif /* CONFIG_RTC_UPDATE */ @@ -473,13 +457,11 @@ __syscall int rtc_set_calibration(const struct device *dev, int32_t calibration) static inline int z_impl_rtc_set_calibration(const struct device *dev, int32_t calibration) { - const struct rtc_driver_api *api = (const struct rtc_driver_api *)dev->api; - - if (api->set_calibration == NULL) { + if (DEVICE_API_GET(rtc, dev)->set_calibration == NULL) { return -ENOSYS; } - return api->set_calibration(dev, calibration); + return DEVICE_API_GET(rtc, dev)->set_calibration(dev, calibration); } /** @@ -496,13 +478,11 @@ __syscall int rtc_get_calibration(const struct device *dev, int32_t *calibration static inline int z_impl_rtc_get_calibration(const struct device *dev, int32_t *calibration) { - const struct rtc_driver_api *api = (const struct rtc_driver_api *)dev->api; - - if (api->get_calibration == NULL) { + if (DEVICE_API_GET(rtc, dev)->get_calibration == NULL) { return -ENOSYS; } - return api->get_calibration(dev, calibration); + return DEVICE_API_GET(rtc, dev)->get_calibration(dev, calibration); } #endif /* CONFIG_RTC_CALIBRATION */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/rtc/rtc_fake.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/rtc/rtc_fake.h index ad3a2751..d421a561 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/rtc/rtc_fake.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/rtc/rtc_fake.h @@ -19,19 +19,19 @@ DECLARE_FAKE_VALUE_FUNC(int, rtc_fake_get_time, const struct device *, struct rt #ifdef CONFIG_RTC_ALARM DECLARE_FAKE_VALUE_FUNC(int, rtc_fake_alarm_get_supported_fields, const struct device *, uint16_t, - uint16_t); + uint16_t *); DECLARE_FAKE_VALUE_FUNC(int, rtc_fake_alarm_set_time, const struct device *, uint16_t, uint16_t, - constr struct rtc_time *); -DECLARE_FAKE_VALUE_FUNC(int, rtc_fake_alarm_get_time, const struct device *, uint16_t, uint16_t, + const struct rtc_time *); +DECLARE_FAKE_VALUE_FUNC(int, rtc_fake_alarm_get_time, const struct device *, uint16_t, uint16_t *, struct rtc_time *); DECLARE_FAKE_VALUE_FUNC(int, rtc_fake_alarm_is_pending, const struct device *, uint16_t); -DECLARE_FAKE_VALUE_FUNC(int, rtc_fake_alarm_set_callback, const struct device *uint16_t, +DECLARE_FAKE_VALUE_FUNC(int, rtc_fake_alarm_set_callback, const struct device *, uint16_t, rtc_alarm_callback, void *); #endif /* CONFIG_RTC_ALARM */ #ifdef CONFIG_RTC_UPDATE -DECLARE_FAKE_VALUE_FUNC(int, rtc_fake_update_set_callback, const struct device *rtc_alarm_callback, - void *); +DECLARE_FAKE_VALUE_FUNC(int, rtc_fake_update_set_callback, const struct device *, + rtc_update_callback, void *); #endif /* CONFIG_RTC_UPDATE */ #ifdef CONFIG_RTC_CALIBRATION diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor.h index f23830c8..6cd8cc70 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor.h @@ -343,7 +343,10 @@ enum sensor_attribute { /** Hardware batch duration in ticks */ SENSOR_ATTR_BATCH_DURATION, - + /* Configure the gain of a sensor. */ + SENSOR_ATTR_GAIN, + /* Configure the resolution of a sensor. */ + SENSOR_ATTR_RESOLUTION, /** * Number of all common sensor attributes. */ @@ -938,6 +941,30 @@ struct __attribute__((__packed__)) sensor_data_generic_header { ((chan) == SENSOR_CHAN_ACCEL_XYZ || (chan) == SENSOR_CHAN_GYRO_XYZ || \ (chan) == SENSOR_CHAN_MAGN_XYZ || (chan) == SENSOR_CHAN_POS_DXYZ) +/** + * @brief checks if a given channel is an Accelerometer + * + * @param[in] chan The channel to check + * @retval true if @p chan is any of @ref SENSOR_CHAN_ACCEL_XYZ, @ref SENSOR_CHAN_ACCEL_X, or + * @ref SENSOR_CHAN_ACCEL_Y, or @ref SENSOR_CHAN_ACCEL_Z + * @retval false otherwise + */ +#define SENSOR_CHANNEL_IS_ACCEL(chan) \ + ((chan) == SENSOR_CHAN_ACCEL_XYZ || (chan) == SENSOR_CHAN_ACCEL_X || \ + (chan) == SENSOR_CHAN_ACCEL_Y || (chan) == SENSOR_CHAN_ACCEL_Z) + +/** + * @brief checks if a given channel is a Gyroscope + * + * @param[in] chan The channel to check + * @retval true if @p chan is any of @ref SENSOR_CHAN_GYRO_XYZ, @ref SENSOR_CHAN_GYRO_X, or + * @ref SENSOR_CHAN_GYRO_Y, or @ref SENSOR_CHAN_GYRO_Z + * @retval false otherwise + */ +#define SENSOR_CHANNEL_IS_GYRO(chan) \ + ((chan) == SENSOR_CHAN_GYRO_XYZ || (chan) == SENSOR_CHAN_GYRO_X || \ + (chan) == SENSOR_CHAN_GYRO_Y || (chan) == SENSOR_CHAN_GYRO_Z) + /** * @brief Get the sensor's decoder API * @@ -1061,7 +1088,7 @@ static inline int sensor_read(struct rtio_iodev *iodev, struct rtio *ctx, uint8_ struct rtio_cqe *cqe = rtio_cqe_consume_block(ctx); int res = cqe->result; - __ASSERT(cqe->userdata != buf, + __ASSERT(cqe->userdata == buf, "consumed non-matching completion for sensor read into buffer %p\n", buf); rtio_cqe_release(ctx, cqe); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/battery.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/battery.h new file mode 100644 index 00000000..61581419 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/battery.h @@ -0,0 +1,87 @@ +/* + * Copyright 2024 Embeint Inc + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_SENSOR_BATTERY_H_ +#define ZEPHYR_INCLUDE_DRIVERS_SENSOR_BATTERY_H_ + +#include +#include + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief battery API + * @defgroup battery_apis battery APIs + * @{ + */ + +/* Battery chemistry enumeration. + * Value names must match those from dts/bindings/battery.yaml + */ +enum battery_chemistry { + BATTERY_CHEMISTRY_UNKNOWN = 0, + BATTERY_CHEMISTRY_NICKEL_CADMIUM, + BATTERY_CHEMISTRY_NICKEL_METAL_HYDRIDE, + BATTERY_CHEMISTRY_LITHIUM_ION, + BATTERY_CHEMISTRY_LITHIUM_ION_POLYMER, + BATTERY_CHEMISTRY_LITHIUM_ION_IRON_PHOSPHATE, + BATTERY_CHEMISTRY_LITHIUM_ION_MANGANESE_OXIDE, +}; + +/* Length of open circuit voltage table */ +#define BATTERY_OCV_TABLE_LEN 11 + +/** + * @brief Get the battery chemistry enum value + * + * @param node_id node identifier + */ +#define BATTERY_CHEMISTRY_DT_GET(node_id) \ + UTIL_CAT(BATTERY_CHEMISTRY_, DT_STRING_UPPER_TOKEN_OR(node_id, device_chemistry, UNKNOWN)) + +/** + * @brief Get the OCV curve for a given table + * + * @param node_id node identifier + * @param table table to retrieve + */ +#define BATTERY_OCV_TABLE_DT_GET(node_id, table) \ + COND_CODE_1(DT_NODE_HAS_PROP(node_id, table), \ + ({DT_FOREACH_PROP_ELEM_SEP(node_id, table, DT_PROP_BY_IDX, (,))}), ({-1})) + +/** + * @brief Convert an OCV table and battery voltage to a charge percentage + * + * @param ocv_table Open circuit voltage curve + * @param voltage_uv Battery voltage in microVolts + * + * @returns Battery state of charge in milliPercent + */ +static inline int32_t battery_soc_lookup(const int32_t ocv_table[BATTERY_OCV_TABLE_LEN], + uint32_t voltage_uv) +{ + static const int32_t soc_axis[BATTERY_OCV_TABLE_LEN] = { + 0, 10000, 20000, 30000, 40000, 50000, 60000, 70000, 80000, 90000, 100000}; + + /* Convert voltage to SoC */ + return linear_interpolate(ocv_table, soc_axis, BATTERY_OCV_TABLE_LEN, voltage_uv); +} + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DRIVERS_SENSOR_BATTERY_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/mcux_acmp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/mcux_acmp.h index 3bbfc22e..2bd2addd 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/mcux_acmp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/mcux_acmp.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2020 Vestas Wind Systems A/S - * Copyright 2022 NXP + * Copyright 2022, 2024 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -43,6 +43,12 @@ extern "C" { #define MCUX_ACMP_HAS_DISCRETE_MODE 0 #endif +#if defined(FSL_FEATURE_ACMP_HAS_C0_HYSTCTR_BIT) && (FSL_FEATURE_ACMP_HAS_C0_HYSTCTR_BIT == 1U) +#define MCUX_ACMP_HAS_HYSTCTR 1 +#else +#define MCUX_ACMP_HAS_HYSTCTR 0 +#endif + enum sensor_channel_mcux_acmp { /** Analog Comparator Output. */ SENSOR_CHAN_MCUX_ACMP_OUTPUT = SENSOR_CHAN_PRIV_START, diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/mmc56x3.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/mmc56x3.h new file mode 100644 index 00000000..b59ea4a4 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/mmc56x3.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2023 Kurtis Dinelle + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief Extended public API for Memsic MMC56X3 magnetometer and temperature sensor + * + * This exposes attributes for the MMC56X3 which can be used for + * setting the continuous mode and bandwidth selection bits. + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_SENSOR_MMC56X3_H_ +#define ZEPHYR_INCLUDE_DRIVERS_SENSOR_MMC56X3_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +enum sensor_attribute_mmc56x3 { + /* Bandwidth selection bit 0. + * + * Adjust length of decimation filter. Controls duration of + * each measurement. Affects ODR; see datasheet for details. + */ + SENSOR_ATTR_BANDWIDTH_SELECTION_BITS_0 = SENSOR_ATTR_PRIV_START + 1, + + /* Bandwidth selection bit 1. + * + * Adjust length of decimation filter. Controls duration of + * each measurement. Affects ODR; see datasheet for details. + */ + SENSOR_ATTR_BANDWIDTH_SELECTION_BITS_1, + + /* Automatic self reset. + * + * Enable automatic self-reset function. + * Affects ODR; see datasheet for details. + */ + SENSOR_ATTR_AUTOMATIC_SELF_RESET, +}; + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DRIVERS_SENSOR_MMC56X3_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/npm1300_charger.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/npm1300_charger.h index eb13f959..d2a16634 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/npm1300_charger.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/npm1300_charger.h @@ -12,6 +12,17 @@ enum sensor_channel_npm1300_charger { SENSOR_CHAN_NPM1300_CHARGER_STATUS = SENSOR_CHAN_PRIV_START, SENSOR_CHAN_NPM1300_CHARGER_ERROR, + SENSOR_CHAN_NPM1300_CHARGER_VBUS_STATUS, +}; + +/* NPM1300 charger specific attributes */ +enum sensor_attribute_npm1300_charger { + SENSOR_ATTR_NPM1300_CHARGER_VBUS_PRESENT = SENSOR_ATTR_PRIV_START, + SENSOR_ATTR_NPM1300_CHARGER_VBUS_CUR_LIMIT, + SENSOR_ATTR_NPM1300_CHARGER_VBUS_OVERVLT_PROT, + SENSOR_ATTR_NPM1300_CHARGER_VBUS_UNDERVLT, + SENSOR_ATTR_NPM1300_CHARGER_VBUS_SUSPENDED, + SENSOR_ATTR_NPM1300_CHARGER_VBUS_BUSOUT, }; #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/npm2100_vbat.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/npm2100_vbat.h new file mode 100644 index 00000000..50165775 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/npm2100_vbat.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_SENSOR_NPM2100_VBAT_H_ +#define ZEPHYR_INCLUDE_DRIVERS_SENSOR_NPM2100_VBAT_H_ + +#include + +/* NPM2100 vbat specific channels */ +enum sensor_channel_npm2100_vbat { + SENSOR_CHAN_NPM2100_VBAT_STATUS = SENSOR_CHAN_PRIV_START, + SENSOR_CHAN_NPM2100_VOLT_DROOP, + SENSOR_CHAN_NPM2100_DPS_COUNT, + SENSOR_CHAN_NPM2100_DPS_TIMER, + SENSOR_CHAN_NPM2100_DPS_DURATION, +}; + +/* NPM2100 vbat specific attributes */ +enum sensor_attr_npm2100_vbat { + SENSOR_ATTR_NPM2100_ADC_DELAY = SENSOR_ATTR_PRIV_START, +}; + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/scd4x.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/scd4x.h new file mode 100644 index 00000000..edae9693 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/scd4x.h @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2024 Jan Fäh + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_SENSOR_SCD4X_H_ +#define ZEPHYR_INCLUDE_DRIVERS_SENSOR_SCD4X_H_ + +#include + +enum sensor_attribute_scd4x { + /* Offset temperature: Toffset_actual = Tscd4x – Treference + Toffset_previous + * 0 - 20°C + */ + SENSOR_ATTR_SCD4X_TEMPERATURE_OFFSET = SENSOR_ATTR_PRIV_START, + /* Altidude of the sensor; + * 0 - 3000m + */ + SENSOR_ATTR_SCD4X_SENSOR_ALTITUDE, + /* Ambient pressure in hPa + * 700 - 1200hPa + */ + SENSOR_ATTR_SCD4X_AMBIENT_PRESSURE, + /* Set the current state (enabled: 1 / disabled: 0). + * Default: enabled. + */ + SENSOR_ATTR_SCD4X_AUTOMATIC_CALIB_ENABLE, + /* Set the initial period for automatic self calibration correction in hours. Allowed values + * are integer multiples of 4 hours. + * Default: 44 + */ + SENSOR_ATTR_SCD4X_SELF_CALIB_INITIAL_PERIOD, + /* Set the standard period for automatic self calibration correction in hours. Allowed + * values are integer multiples of 4 hours. Default: 156 + */ + SENSOR_ATTR_SCD4X_SELF_CALIB_STANDARD_PERIOD, +}; + +/** + * @brief Performs a forced recalibration. + * + * Operate the SCD4x in the operation mode for at least 3 minutes in an environment with a + * homogeneous and constant CO2 concentration. Otherwise the recalibratioin will fail. The sensor + * must be operated at the voltage desired for the application when performing the FRC sequence. + * + * @param dev Pointer to the sensor device + * @param target_concentration Reference CO2 concentration. + * @param frc_correction Previous differences from the target concentration + * + * @return 0 if successful, negative errno code if failure. + */ +int scd4x_forced_recalibration(const struct device *dev, uint16_t target_concentration, + uint16_t *frc_correction); + +/** + * @brief Performs a self test. + * + * The self_test command can be used as an end-of-line test to check the sensor functionality + * + * @param dev Pointer to the sensor device + * + * @return 0 if successful, negative errno code if failure. + */ +int scd4x_self_test(const struct device *dev); + +/** + * @brief Performs a self test. + * + * The persist_settings command can be used to save the actual configuration. This command + * should only be sent when persistence is required and if actual changes to the configuration have + * been made. The EEPROM is guaranteed to withstand at least 2000 write cycles + * + * @param dev Pointer to the sensor device + * + * @return 0 if successful, negative errno code if failure. + */ +int scd4x_persist_settings(const struct device *dev); + +/** + * @brief Performs a factory reset. + * + * The perform_factory_reset command resets all configuration settings stored in the EEPROM and + * erases the FRC and ASC algorithm history. + * + * @param dev Pointer to the sensor device + * + * @return 0 if successful, negative errno code if failure. + */ +int scd4x_factory_reset(const struct device *dev); + +#endif /* ZEPHYR_INCLUDE_DRIVERS_SENSOR_SCD4X_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/tmp116.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/tmp116.h index 6b11426a..5efb4ad2 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/tmp116.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/tmp116.h @@ -8,8 +8,18 @@ #define ZEPHYR_INCLUDE_DRIVERS_SENSOR_TMP116_H_ #include +#include #include +enum sensor_attribute_tmp_116 { + /** Turn on power saving/one shot mode */ + SENSOR_ATTR_TMP116_ONE_SHOT_MODE = SENSOR_ATTR_PRIV_START, + /** Shutdown the sensor */ + SENSOR_ATTR_TMP116_SHUTDOWN_MODE, + /** Turn on continuous conversion */ + SENSOR_ATTR_TMP116_CONTINUOUS_CONVERSION_MODE, +}; + #define EEPROM_TMP116_SIZE (4 * sizeof(uint16_t)) int tmp116_eeprom_read(const struct device *dev, off_t offset, void *data, diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/tsl2540.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/tsl2540.h index 63a2adfe..b0306e91 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/tsl2540.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/tsl2540.h @@ -22,10 +22,8 @@ extern "C" { #endif enum sensor_attribute_tsl2540 { - /* Sensor Gain */ - SENSOR_ATTR_GAIN = SENSOR_ATTR_PRIV_START + 1, /* Sensor Integration Time (in ms) */ - SENSOR_ATTR_INTEGRATION_TIME, + SENSOR_ATTR_INTEGRATION_TIME = SENSOR_ATTR_PRIV_START + 1, /* Sensor ALS interrupt persistence filters */ SENSOR_ATTR_INT_APERS, /* Shutdown the sensor */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/wsen_hids_2525020210002.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/wsen_hids_2525020210002.h new file mode 100644 index 00000000..f140e22c --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sensor/wsen_hids_2525020210002.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2024 Würth Elektronik eiSos GmbH & Co. KG + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief Extended public API for WSEN-HIDS-2525020210002 Sensor + * + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_SENSOR_WSEN_HIDS_2525020210002_H_ +#define ZEPHYR_INCLUDE_DRIVERS_SENSOR_WSEN_HIDS_2525020210002_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +enum sensor_attribute_wsen_hids_2525020210002 { + SENSOR_ATTR_WSEN_HIDS_2525020210002_PRECISION = SENSOR_ATTR_PRIV_START, + SENSOR_ATTR_WSEN_HIDS_2525020210002_HEATER +}; + +typedef enum { + hids_2525020210002_precision_Low = 0x0, + hids_2525020210002_precision_Medium = 0x1, + hids_2525020210002_precision_High = 0x2 +} hids_2525020210002_precision_t; + +typedef enum { + hids_2525020210002_heater_Off = 0x0, + hids_2525020210002_heater_On_200mW_1s = 0x1, + hids_2525020210002_heater_On_200mW_100ms = 0x2, + hids_2525020210002_heater_On_110mW_1s = 0x3, + hids_2525020210002_heater_On_110mW_100ms = 0x4, + hids_2525020210002_heater_On_20mW_1s = 0x5, + hids_2525020210002_heater_On_20mW_100ms = 0x6, +} hids_2525020210002_heater_t; + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DRIVERS_SENSOR_WSEN_HIDS_2525020210002_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/serial/uart_async_to_irq.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/serial/uart_async_to_irq.h index d5116dee..3b80c906 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/serial/uart_async_to_irq.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/serial/uart_async_to_irq.h @@ -109,13 +109,11 @@ void uart_async_to_irq_trampoline_cb(const struct device *dev); /** @brief Initialize the adaptation layer. * - * @param data Data associated with the given adaptation layer instance. - * @param config Configuration structure. Must be persistent. + * @param dev UART device. Device must support asynchronous API. * * @retval 0 On successful initialization. */ -int uart_async_to_irq_init(struct uart_async_to_irq_data *data, - const struct uart_async_to_irq_config *config); +int uart_async_to_irq_init(const struct device *dev); /* @brief Enable RX for interrupt driven API. * @@ -202,7 +200,7 @@ struct uart_async_to_irq_tx_data { size_t len; }; -/** @briref Data associated with the asynchronous to the interrupt driven API adaptation layer. */ +/** @brief Data associated with the asynchronous to the interrupt driven API adaptation layer. */ struct uart_async_to_irq_data { /** User callback for interrupt driven API. */ uart_irq_callback_user_data_t callback; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sip_svc/sip_svc_driver.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sip_svc/sip_svc_driver.h index 07b8f7f8..560b9a79 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sip_svc/sip_svc_driver.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/sip_svc/sip_svc_driver.h @@ -224,7 +224,7 @@ static inline void z_impl_sip_svc_plat_update_trans_id(const struct device *dev, "sip_svc_plat_update_trans_id func shouldn't be NULL"); __ASSERT(request, "request shouldn't be NULL"); - return api->sip_svc_plat_update_trans_id(dev, request, trans_id); + api->sip_svc_plat_update_trans_id(dev, request, trans_id); } /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/spi.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/spi.h index 6e394ba8..db6e2baf 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/spi.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/spi.h @@ -100,10 +100,10 @@ extern "C" { #define SPI_WORD_SIZE_SHIFT (5U) #define SPI_WORD_SIZE_MASK (0x3FU << SPI_WORD_SIZE_SHIFT) /** @endcond */ -/** Get SPI word size. */ +/** Get SPI word size (data frame size) in bits. */ #define SPI_WORD_SIZE_GET(_operation_) \ (((_operation_) & SPI_WORD_SIZE_MASK) >> SPI_WORD_SIZE_SHIFT) -/** Set SPI word size. */ +/** Set SPI word size (data frame size) in bits. */ #define SPI_WORD_SET(_word_size_) \ ((_word_size_) << SPI_WORD_SIZE_SHIFT) /** @} */ @@ -211,7 +211,7 @@ struct spi_cs_control { */ #define SPI_CS_GPIOS_DT_SPEC_GET(spi_dev) \ GPIO_DT_SPEC_GET_BY_IDX_OR(DT_BUS(spi_dev), cs_gpios, \ - DT_REG_ADDR(spi_dev), {}) + DT_REG_ADDR_RAW(spi_dev), {}) /** * @brief Get a struct gpio_dt_spec for a SPI device's chip select pin @@ -309,7 +309,7 @@ struct spi_config { * - 0: Master or slave. * - 1..3: Polarity, phase and loop mode. * - 4: LSB or MSB first. - * - 5..10: Size of a data frame in bits. + * - 5..10: Size of a data frame (word) in bits. * - 11: Full/half duplex. * - 12: Hold on the CS line if possible. * - 13: Keep resource locked for the caller. @@ -418,13 +418,47 @@ struct spi_dt_spec { #define SPI_DT_SPEC_INST_GET(inst, operation_, delay_) \ SPI_DT_SPEC_GET(DT_DRV_INST(inst), operation_, delay_) +/** + * @brief Value that will never compare true with any valid overrun character + */ +#define SPI_MOSI_OVERRUN_UNKNOWN 0x100 + +/** + * @brief The value sent on MOSI when all TX bytes are sent, but RX continues + * + * For drivers where the MOSI line state when receiving is important, this value + * can be queried at compile-time to determine whether allocating a constant + * array is necessary. + * + * @param node_id Devicetree node identifier for the SPI device to query + * + * @retval SPI_MOSI_OVERRUN_UNKNOWN if controller does not export the value + * @retval byte default MOSI value otherwise + */ +#define SPI_MOSI_OVERRUN_DT(node_id) \ + DT_PROP_OR(node_id, overrun_character, SPI_MOSI_OVERRUN_UNKNOWN) + +/** + * @brief The value sent on MOSI when all TX bytes are sent, but RX continues + * + * This is equivalent to + * SPI_MOSI_OVERRUN_DT(DT_DRV_INST(inst)). + * + * @param inst Devicetree instance number + * + * @retval SPI_MOSI_OVERRUN_UNKNOWN if controller does not export the value + * @retval byte default MOSI value otherwise + */ +#define SPI_MOSI_OVERRUN_DT_INST(inst) \ + DT_INST_PROP_OR(inst, overrun_character, SPI_MOSI_OVERRUN_UNKNOWN) + /** * @brief SPI buffer structure */ struct spi_buf { /** Valid pointer to a data buffer, or NULL otherwise */ void *buf; - /** Length of the buffer @a buf. + /** Length of the buffer @a buf in bytes. * If @a buf is NULL, length which as to be sent as dummy bytes (as TX * buffer) or the length of bytes that should be skipped (as RX buffer). */ @@ -437,7 +471,7 @@ struct spi_buf { struct spi_buf_set { /** Pointer to an array of spi_buf, or NULL */ const struct spi_buf *buffers; - /** Length of the array pointed by @a buffers */ + /** Length of the array (number of buffers) pointed by @a buffers */ size_t count; }; @@ -593,6 +627,17 @@ static inline void spi_transceive_stats(const struct device *dev, int error, #endif /*CONFIG_SPI_STATS*/ +/** + * @brief Like SPI_DEVICE_DT_DEFINE(), but uses an instance of a `DT_DRV_COMPAT` + * compatible instead of a node identifier. + * + * @param inst Instance number. The `node_id` argument to SPI_DEVICE_DT_DEFINE() is + * set to `DT_DRV_INST(inst)`. + * @param ... Other parameters as expected by SPI_DEVICE_DT_DEFINE(). + */ +#define SPI_DEVICE_DT_INST_DEFINE(inst, ...) \ + SPI_DEVICE_DT_DEFINE(DT_DRV_INST(inst), __VA_ARGS__) + /** * @typedef spi_api_io * @brief Callback API for I/O @@ -1051,164 +1096,6 @@ static inline bool spi_is_ready_iodev(const struct rtio_iodev *spi_iodev) return spi_is_ready_dt(spec); } -/** - * @brief Copy the tx_bufs and rx_bufs into a set of RTIO requests - * - * @param[in] r rtio context - * @param[in] iodev iodev to transceive with - * @param[in] tx_bufs transmit buffer set - * @param[in] rx_bufs receive buffer set - * @param[out] last_sqe last sqe submitted, NULL if not enough memory - * - * @retval Number of submission queue entries - * @retval -ENOMEM out of memory - */ -static inline int spi_rtio_copy(struct rtio *r, - struct rtio_iodev *iodev, - const struct spi_buf_set *tx_bufs, - const struct spi_buf_set *rx_bufs, - struct rtio_sqe **last_sqe) -{ - int ret = 0; - size_t tx_count = tx_bufs ? tx_bufs->count : 0; - size_t rx_count = rx_bufs ? rx_bufs->count : 0; - - uint32_t tx = 0, tx_len = 0; - uint32_t rx = 0, rx_len = 0; - uint8_t *tx_buf, *rx_buf; - - struct rtio_sqe *sqe = NULL; - - if (tx < tx_count) { - tx_buf = tx_bufs->buffers[tx].buf; - tx_len = tx_bufs->buffers[tx].len; - } else { - tx_buf = NULL; - tx_len = rx_bufs->buffers[rx].len; - } - - if (rx < rx_count) { - rx_buf = rx_bufs->buffers[rx].buf; - rx_len = rx_bufs->buffers[rx].len; - } else { - rx_buf = NULL; - rx_len = tx_bufs->buffers[tx].len; - } - - - while ((tx < tx_count || rx < rx_count) && (tx_len > 0 || rx_len > 0)) { - sqe = rtio_sqe_acquire(r); - - if (sqe == NULL) { - ret = -ENOMEM; - rtio_sqe_drop_all(r); - goto out; - } - - ret++; - - /* If tx/rx len are same, we can do a simple transceive */ - if (tx_len == rx_len) { - if (tx_buf == NULL) { - rtio_sqe_prep_read(sqe, iodev, RTIO_PRIO_NORM, - rx_buf, rx_len, NULL); - } else if (rx_buf == NULL) { - rtio_sqe_prep_write(sqe, iodev, RTIO_PRIO_NORM, - tx_buf, tx_len, NULL); - } else { - rtio_sqe_prep_transceive(sqe, iodev, RTIO_PRIO_NORM, - tx_buf, rx_buf, rx_len, NULL); - } - tx++; - rx++; - if (rx < rx_count) { - rx_buf = rx_bufs->buffers[rx].buf; - rx_len = rx_bufs->buffers[rx].len; - } else { - rx_buf = NULL; - rx_len = 0; - } - if (tx < tx_count) { - tx_buf = tx_bufs->buffers[tx].buf; - tx_len = tx_bufs->buffers[tx].len; - } else { - tx_buf = NULL; - tx_len = 0; - } - } else if (tx_len == 0) { - rtio_sqe_prep_read(sqe, iodev, RTIO_PRIO_NORM, - (uint8_t *)rx_buf, - (uint32_t)rx_len, - NULL); - rx++; - if (rx < rx_count) { - rx_buf = rx_bufs->buffers[rx].buf; - rx_len = rx_bufs->buffers[rx].len; - } else { - rx_buf = NULL; - rx_len = 0; - } - } else if (rx_len == 0) { - rtio_sqe_prep_write(sqe, iodev, RTIO_PRIO_NORM, - (uint8_t *)tx_buf, - (uint32_t)tx_len, - NULL); - tx++; - if (tx < tx_count) { - tx_buf = rx_bufs->buffers[rx].buf; - tx_len = rx_bufs->buffers[rx].len; - } else { - tx_buf = NULL; - tx_len = 0; - } - } else if (tx_len > rx_len) { - rtio_sqe_prep_transceive(sqe, iodev, RTIO_PRIO_NORM, - (uint8_t *)tx_buf, - (uint8_t *)rx_buf, - (uint32_t)rx_len, - NULL); - tx_len -= rx_len; - tx_buf += rx_len; - rx++; - if (rx < rx_count) { - rx_buf = rx_bufs->buffers[rx].buf; - rx_len = rx_bufs->buffers[rx].len; - } else { - rx_buf = NULL; - rx_len = tx_len; - } - } else if (rx_len > tx_len) { - rtio_sqe_prep_transceive(sqe, iodev, RTIO_PRIO_NORM, - (uint8_t *)tx_buf, - (uint8_t *)rx_buf, - (uint32_t)tx_len, - NULL); - rx_len -= tx_len; - rx_buf += tx_len; - tx++; - if (tx < tx_count) { - tx_buf = tx_bufs->buffers[tx].buf; - tx_len = tx_bufs->buffers[tx].len; - } else { - tx_buf = NULL; - tx_len = rx_len; - } - } else { - __ASSERT_NO_MSG("Invalid spi_rtio_copy state"); - } - - sqe->flags = RTIO_SQE_TRANSACTION; - } - - if (sqe != NULL) { - sqe->flags = 0; - *last_sqe = sqe; - } - -out: - return ret; -} - #endif /* CONFIG_SPI_RTIO */ /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/spi/rtio.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/spi/rtio.h new file mode 100644 index 00000000..04d5bad8 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/spi/rtio.h @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2024 Croxel, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_DRIVERS_SPI_RTIO_H_ +#define ZEPHYR_DRIVERS_SPI_RTIO_H_ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Driver context for implementing SPI with RTIO + */ +struct spi_rtio { + struct k_spinlock lock; + struct rtio *r; + struct mpsc io_q; + struct rtio_iodev iodev; + struct rtio_iodev_sqe *txn_head; + struct rtio_iodev_sqe *txn_curr; + struct spi_dt_spec dt_spec; +}; + +/** + * @brief Statically define a spi_rtio context + * + * @param _name Symbolic name of the context + * @param _sq_sz Submission queue entry pool size + * @param _cq_sz Completion queue entry pool size + */ +#define SPI_RTIO_DEFINE(_name, _sq_sz, _cq_sz) \ + RTIO_DEFINE(CONCAT(_name, _r), _sq_sz, _cq_sz); \ + static struct spi_rtio _name = { \ + .r = &CONCAT(_name, _r), \ + }; + +/** + * @brief Copy the tx_bufs and rx_bufs into a set of RTIO requests + * + * @param[in] r rtio context + * @param[in] iodev iodev to transceive with + * @param[in] tx_bufs transmit buffer set + * @param[in] rx_bufs receive buffer set + * @param[out] last_sqe last sqe submitted, NULL if not enough memory + * + * @retval Number of submission queue entries + * @retval -ENOMEM out of memory + */ +int spi_rtio_copy(struct rtio *r, + struct rtio_iodev *iodev, + const struct spi_buf_set *tx_bufs, + const struct spi_buf_set *rx_bufs, + struct rtio_sqe **last_sqe); + +/** + * @brief Initialize a SPI RTIO context + * + * @param ctx SPI RTIO driver context + * @param dev SPI bus + */ +void spi_rtio_init(struct spi_rtio *ctx, const struct device *dev); + +/** + * @brief Signal that the current (ctx->txn_curr) submission has been completed + * + * @param ctx SPI RTIO driver context + * @param status Completion status, negative values are errors + * + * @retval true Next submission is ready to start + * @retval false No more submissions to work on + */ +bool spi_rtio_complete(struct spi_rtio *ctx, int status); + +/** + * @brief Submit, atomically, a submission to work on at some point + * + * @retval true Next submission is ready to start + * @retval false No new submission to start or submissions are in progress already + */ +bool spi_rtio_submit(struct spi_rtio *ctx, struct rtio_iodev_sqe *iodev_sqe); + +/** + * @brief Perform a SPI Transfer (transceive) in a blocking call + * + * Provides a compatible API for the existing spi_transceive API by blocking + * the caller until the operation is complete. + * For details see @ref spi_transceive. + */ +int spi_rtio_transceive(struct spi_rtio *ctx, + const struct spi_config *config, + const struct spi_buf_set *tx_bufs, + const struct spi_buf_set *rx_bufs); + +/** + * @brief Fallback SPI RTIO submit implementation. + * + * Default RTIO SPI implementation for drivers who do no yet have + * native support. For details, see @ref spi_iodev_submit. + */ +void spi_rtio_iodev_default_submit(const struct device *dev, + struct rtio_iodev_sqe *iodev_sqe); + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_DRIVERS_SPI_RTIO_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/stepper.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/stepper.h new file mode 100644 index 00000000..0257f51b --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/stepper.h @@ -0,0 +1,483 @@ +/** + * @file drivers/stepper.h + * + * @brief Public API for Stepper Driver + * + */ + +/* + * SPDX-FileCopyrightText: Copyright (c) 2024 Carl Zeiss Meditec AG + * SPDX-FileCopyrightText: Copyright (c) 2024 Jilay Sandeep Pandya + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_STEPPER_H_ +#define ZEPHYR_INCLUDE_DRIVERS_STEPPER_H_ + +/** + * @brief Stepper Controller Interface + * @defgroup stepper_interface Stepper Controller Interface + * @ingroup io_interfaces + * @{ + */ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define MICRO_STEP_RES_INDEX(res) LOG2(res) + +/** + * @brief Stepper Motor micro step resolution options + */ +enum stepper_micro_step_resolution { + /** Full step resolution */ + STEPPER_MICRO_STEP_1 = 1, + /** 2 micro steps per full step */ + STEPPER_MICRO_STEP_2 = 2, + /** 4 micro steps per full step */ + STEPPER_MICRO_STEP_4 = 4, + /** 8 micro steps per full step */ + STEPPER_MICRO_STEP_8 = 8, + /** 16 micro steps per full step */ + STEPPER_MICRO_STEP_16 = 16, + /** 32 micro steps per full step */ + STEPPER_MICRO_STEP_32 = 32, + /** 64 micro steps per full step */ + STEPPER_MICRO_STEP_64 = 64, + /** 128 micro steps per full step */ + STEPPER_MICRO_STEP_128 = 128, + /** 256 micro steps per full step */ + STEPPER_MICRO_STEP_256 = 256, +}; + +/** + * @brief Stepper Motor direction options + */ +enum stepper_direction { + /** Negative direction */ + STEPPER_DIRECTION_NEGATIVE = 0, + /** Positive direction */ + STEPPER_DIRECTION_POSITIVE = 1, +}; + +/** + * @brief Stepper Motor run mode options + */ +enum stepper_run_mode { + /** Hold Mode */ + STEPPER_RUN_MODE_HOLD = 0, + /** Position Mode*/ + STEPPER_RUN_MODE_POSITION = 1, + /** Velocity Mode */ + STEPPER_RUN_MODE_VELOCITY = 2, +}; + +/** + * @brief Stepper Events + */ +enum stepper_event { + /** Steps set using move or set_target_position have been executed */ + STEPPER_EVENT_STEPS_COMPLETED = 0, + /** Stall detected */ + STEPPER_EVENT_STALL_DETECTED = 1, + /** Left end switch status changes to pressed */ + STEPPER_EVENT_LEFT_END_STOP_DETECTED = 2, + /** Right end switch status changes to pressed */ + STEPPER_EVENT_RIGHT_END_STOP_DETECTED = 3, +}; + +/** + * @cond INTERNAL_HIDDEN + * + * Stepper motor controller driver API definition and system call entry points. + * + */ + +/** + * @brief enable or disable the stepper motor controller. + * + * @see stepper_enable() for details. + */ +typedef int (*stepper_enable_t)(const struct device *dev, const bool enable); + +/** + * @brief Move the stepper motor relatively by a given number of micro_steps. + * + * @see stepper_move_by() for details. + */ +typedef int (*stepper_move_by_t)(const struct device *dev, const int32_t micro_steps); + +/** + * @brief Set the max velocity in micro_steps per seconds. + * + * @see stepper_set_max_velocity() for details. + */ +typedef int (*stepper_set_max_velocity_t)(const struct device *dev, + const uint32_t micro_steps_per_second); + +/** + * @brief Set the micro-step resolution + * + * @see stepper_set_micro_step_res() for details. + */ +typedef int (*stepper_set_micro_step_res_t)(const struct device *dev, + const enum stepper_micro_step_resolution resolution); + +/** + * @brief Get the micro-step resolution + * + * @see stepper_get_micro_step_res() for details. + */ +typedef int (*stepper_get_micro_step_res_t)(const struct device *dev, + enum stepper_micro_step_resolution *resolution); +/** + * @brief Set the reference position of the stepper + * + * @see stepper_set_actual_position() for details. + */ +typedef int (*stepper_set_reference_position_t)(const struct device *dev, const int32_t value); + +/** + * @brief Get the actual a.k.a reference position of the stepper + * + * @see stepper_get_actual_position() for details. + */ +typedef int (*stepper_get_actual_position_t)(const struct device *dev, int32_t *value); + +/** + * @brief Move the stepper motor absolutely by a given number of micro_steps. + * + * @see stepper_move_to() for details. + */ +typedef int (*stepper_move_to_t)(const struct device *dev, const int32_t micro_steps); + +/** + * @brief Is the target position fo the stepper reached + * + * @see stepper_is_moving() for details. + */ +typedef int (*stepper_is_moving_t)(const struct device *dev, bool *is_moving); + +/** + * @brief Run the stepper with a given velocity in a given direction + * + * @see stepper_run() for details. + */ +typedef int (*stepper_run_t)(const struct device *dev, const enum stepper_direction direction, + const uint32_t value); + +/** + * @brief Callback function for stepper events + */ +typedef void (*stepper_event_callback_t)(const struct device *dev, const enum stepper_event event, + void *user_data); + +/** + * @brief Set the callback function to be called when a stepper event occurs + * + * @see stepper_set_event_callback() for details. + */ +typedef int (*stepper_set_event_callback_t)(const struct device *dev, + stepper_event_callback_t callback, void *user_data); + +/** + * @brief Stepper Motor Controller API + */ +__subsystem struct stepper_driver_api { + stepper_enable_t enable; + stepper_move_by_t move_by; + stepper_set_max_velocity_t set_max_velocity; + stepper_set_micro_step_res_t set_micro_step_res; + stepper_get_micro_step_res_t get_micro_step_res; + stepper_set_reference_position_t set_reference_position; + stepper_get_actual_position_t get_actual_position; + stepper_move_to_t move_to; + stepper_is_moving_t is_moving; + stepper_run_t run; + stepper_set_event_callback_t set_event_callback; +}; + +/** + * @endcond + */ + +/** + * @brief Enable or Disable Motor Controller + * + * @param dev pointer to the stepper motor controller instance + * @param enable Input enable or disable motor controller + * + * @retval -EIO Error during Enabling + * @retval 0 Success + */ +__syscall int stepper_enable(const struct device *dev, const bool enable); + +static inline int z_impl_stepper_enable(const struct device *dev, const bool enable) +{ + const struct stepper_driver_api *api = (const struct stepper_driver_api *)dev->api; + + return api->enable(dev, enable); +} + +/** + * @brief Set the micro_steps to be moved from the current position i.e. relative movement + * + * @details The motor will move by the given number of micro_steps from the current position. + * This function is non-blocking. + * + * @param dev pointer to the stepper motor controller instance + * @param micro_steps target micro_steps to be moved from the current position + * + * @retval -EIO General input / output error + * @retval 0 Success + */ +__syscall int stepper_move_by(const struct device *dev, int32_t micro_steps); + +static inline int z_impl_stepper_move_by(const struct device *dev, const int32_t micro_steps) +{ + const struct stepper_driver_api *api = (const struct stepper_driver_api *)dev->api; + + return api->move_by(dev, micro_steps); +} + +/** + * @brief Set the target velocity to be reached by the motor + * + * @details For controllers such as DRV8825 where you + * toggle the STEP Pin, the pulse_length would have to be calculated based on this parameter in the + * driver. For controllers where velocity can be set, this parameter corresponds to max_velocity + * @note Setting max velocity does not set the motor into motion, a combination of set_max_velocity + * and move is required to set the motor into motion. + * + * @param dev pointer to the stepper motor controller instance + * @param micro_steps_per_second speed in micro_steps per second + * + * @retval -EIO General input / output error + * @retval -EINVAL If the requested velocity is not supported + * @retval 0 Success + */ +__syscall int stepper_set_max_velocity(const struct device *dev, uint32_t micro_steps_per_second); + +static inline int z_impl_stepper_set_max_velocity(const struct device *dev, + const uint32_t micro_steps_per_second) +{ + const struct stepper_driver_api *api = (const struct stepper_driver_api *)dev->api; + + return api->set_max_velocity(dev, micro_steps_per_second); +} + +/** + * @brief Set the microstep resolution in stepper motor controller + * + * @param dev pointer to the stepper motor controller instance + * @param resolution microstep resolution + * + * @retval -EIO General input / output error + * @retval -ENOSYS If not implemented by device driver + * @retval -ENOTSUP If the requested resolution is not supported + * @retval 0 Success + */ +__syscall int stepper_set_micro_step_res(const struct device *dev, + enum stepper_micro_step_resolution resolution); + +static inline int z_impl_stepper_set_micro_step_res(const struct device *dev, + enum stepper_micro_step_resolution resolution) +{ + const struct stepper_driver_api *api = (const struct stepper_driver_api *)dev->api; + + if (api->set_micro_step_res == NULL) { + return -ENOSYS; + } + return api->set_micro_step_res(dev, resolution); +} + +/** + * @brief Get the microstep resolution in stepper motor controller + * + * @param dev pointer to the stepper motor controller instance + * @param resolution microstep resolution + * + * @retval -EIO General input / output error + * @retval -ENOSYS If not implemented by device driver + * @retval 0 Success + */ +__syscall int stepper_get_micro_step_res(const struct device *dev, + enum stepper_micro_step_resolution *resolution); + +static inline int z_impl_stepper_get_micro_step_res(const struct device *dev, + enum stepper_micro_step_resolution *resolution) +{ + const struct stepper_driver_api *api = (const struct stepper_driver_api *)dev->api; + + if (api->get_micro_step_res == NULL) { + return -ENOSYS; + } + return api->get_micro_step_res(dev, resolution); +} + +/** + * @brief Set the reference position of the stepper + * + * @param dev Pointer to the stepper motor controller instance. + * @param value The reference position to set in micro-steps. + * + * @retval -EIO General input / output error + * @retval -ENOSYS If not implemented by device driver + * @retval 0 Success + */ +__syscall int stepper_set_reference_position(const struct device *dev, int32_t value); + +static inline int z_impl_stepper_set_reference_position(const struct device *dev, + const int32_t value) +{ + const struct stepper_driver_api *api = (const struct stepper_driver_api *)dev->api; + + if (api->set_reference_position == NULL) { + return -ENOSYS; + } + return api->set_reference_position(dev, value); +} + +/** + * @brief Get the actual a.k.a reference position of the stepper + * + * @param dev pointer to the stepper motor controller instance + * @param value The actual position to get in micro_steps + * + * @retval -EIO General input / output error + * @retval -ENOSYS If not implemented by device driver + * @retval 0 Success + */ +__syscall int stepper_get_actual_position(const struct device *dev, int32_t *value); + +static inline int z_impl_stepper_get_actual_position(const struct device *dev, int32_t *value) +{ + const struct stepper_driver_api *api = (const struct stepper_driver_api *)dev->api; + + if (api->get_actual_position == NULL) { + return -ENOSYS; + } + return api->get_actual_position(dev, value); +} + +/** + * @brief Set the absolute target position of the stepper + * + * @details The motor will move to the given micro_steps position from the reference position. + * This function is non-blocking. + * + * @param dev pointer to the stepper motor controller instance + * @param micro_steps target position to set in micro_steps + * + * @retval -EIO General input / output error + * @retval -ENOSYS If not implemented by device driver + * @retval 0 Success + */ +__syscall int stepper_move_to(const struct device *dev, int32_t micro_steps); + +static inline int z_impl_stepper_move_to(const struct device *dev, const int32_t micro_steps) +{ + const struct stepper_driver_api *api = (const struct stepper_driver_api *)dev->api; + + if (api->move_to == NULL) { + return -ENOSYS; + } + return api->move_to(dev, micro_steps); +} + +/** + * @brief Check if the stepper motor is currently moving + * + * @param dev pointer to the stepper motor controller instance + * @param is_moving Pointer to a boolean to store the moving status of the stepper motor + * + * @retval -EIO General input / output error + * @retval -ENOSYS If not implemented by device driver + * @retval 0 Success + */ +__syscall int stepper_is_moving(const struct device *dev, bool *is_moving); + +static inline int z_impl_stepper_is_moving(const struct device *dev, bool *is_moving) +{ + const struct stepper_driver_api *api = (const struct stepper_driver_api *)dev->api; + + if (api->is_moving == NULL) { + return -ENOSYS; + } + return api->is_moving(dev, is_moving); +} + +/** + * @brief Run the stepper with a given velocity in a given direction + * + * @details If velocity > 0, motor shall be set into motion and run incessantly until and unless + * stalled or stopped using some other command, for instance, motor_enable(false). + * This function is non-blocking. + * + * @param dev pointer to the stepper motor controller instance + * @param direction The direction to set + * @param velocity The velocity to set in microsteps per second + * - > 0: Run the stepper with the given velocity in a given direction + * - 0: Stop the stepper + * + * @retval -EIO General input / output error + * @retval -ENOSYS If not implemented by device driver + * @retval 0 Success + */ +__syscall int stepper_run(const struct device *dev, enum stepper_direction direction, + uint32_t velocity); + +static inline int z_impl_stepper_run(const struct device *dev, + const enum stepper_direction direction, + const uint32_t velocity) +{ + const struct stepper_driver_api *api = (const struct stepper_driver_api *)dev->api; + + if (api->run == NULL) { + return -ENOSYS; + } + return api->run(dev, direction, velocity); +} + +/** + * @brief Set the callback function to be called when a stepper event occurs + * + * @param dev pointer to the stepper motor controller instance + * @param callback Callback function to be called when a stepper event occurs + * passing NULL will disable the callback + * @param user_data User data to be passed to the callback function + * + * @retval -ENOSYS If not implemented by device driver + * @retval 0 Success + */ +__syscall int stepper_set_event_callback(const struct device *dev, + stepper_event_callback_t callback, void *user_data); + +static inline int z_impl_stepper_set_event_callback(const struct device *dev, + stepper_event_callback_t callback, + void *user_data) +{ + const struct stepper_driver_api *api = (const struct stepper_driver_api *)dev->api; + + if (api->set_event_callback == NULL) { + return -ENOSYS; + } + return api->set_event_callback(dev, callback, user_data); +} + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#include + +#endif /* ZEPHYR_INCLUDE_DRIVERS_STEPPER_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/stepper/stepper_fake.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/stepper/stepper_fake.h new file mode 100644 index 00000000..292fdbc0 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/stepper/stepper_fake.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2024 Fabian Blatz + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_STEPPER_STEPPER_FAKE_H_ +#define ZEPHYR_INCLUDE_DRIVERS_STEPPER_STEPPER_FAKE_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +DECLARE_FAKE_VALUE_FUNC(int, fake_stepper_enable, const struct device *, bool); + +DECLARE_FAKE_VALUE_FUNC(int, fake_stepper_move_by, const struct device *, int32_t); + +DECLARE_FAKE_VALUE_FUNC(int, fake_stepper_set_max_velocity, const struct device *, uint32_t); + +DECLARE_FAKE_VALUE_FUNC(int, fake_stepper_set_micro_step_res, const struct device *, + enum stepper_micro_step_resolution); + +DECLARE_FAKE_VALUE_FUNC(int, fake_stepper_get_micro_step_res, const struct device *, + enum stepper_micro_step_resolution *); + +DECLARE_FAKE_VALUE_FUNC(int, fake_stepper_set_reference_position, const struct device *, int32_t); + +DECLARE_FAKE_VALUE_FUNC(int, fake_stepper_get_actual_position, const struct device *, int32_t *); + +DECLARE_FAKE_VALUE_FUNC(int, fake_stepper_move_to, const struct device *, int32_t); + +DECLARE_FAKE_VALUE_FUNC(int, fake_stepper_is_moving, const struct device *, bool *); + +DECLARE_FAKE_VALUE_FUNC(int, fake_stepper_run, const struct device *, enum stepper_direction, + uint32_t); + +DECLARE_FAKE_VALUE_FUNC(int, fake_stepper_set_event_callback, const struct device *, + stepper_event_callback_t, void *); + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DRIVERS_STEPPER_STEPPER_FAKE_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/stepper/stepper_trinamic.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/stepper/stepper_trinamic.h new file mode 100644 index 00000000..6afe8c92 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/stepper/stepper_trinamic.h @@ -0,0 +1,173 @@ +/** + * @file drivers/stepper/stepper_trinamic.h + * + * @brief Public API for Trinamic Stepper Controller Specific Functions + * + */ + +/* + * SPDX-FileCopyrightText: Copyright (c) 2024 Carl Zeiss Meditec AG + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_STEPPER_STEPPER_TRINAMIC_H_ +#define ZEPHYR_INCLUDE_DRIVERS_STEPPER_STEPPER_TRINAMIC_H_ + +/** + * @brief Trinamic Stepper Controller Interface + * @defgroup trinamic_stepper_interface Trinamic Stepper Controller Interface + * @ingroup stepper_interface + * @{ + */ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Trinamic stepper controller ramp generator data limits + */ +#define TMC_RAMP_VSTART_MAX GENMASK(17, 0) +#define TMC_RAMP_VSTART_MIN 0 +#define TMC_RAMP_V1_MAX GENMASK(19, 0) +#define TMC_RAMP_V1_MIN 0 +#define TMC_RAMP_VMAX_MAX (GENMASK(22, 0) - 512) +#define TMC_RAMP_VMAX_MIN 0 +#define TMC_RAMP_A1_MAX GENMASK(15, 0) +#define TMC_RAMP_A1_MIN 0 +#define TMC_RAMP_AMAX_MAX GENMASK(15, 0) +#define TMC_RAMP_AMAX_MIN 0 +#define TMC_RAMP_D1_MAX GENMASK(15, 0) +#define TMC_RAMP_D1_MIN 1 +#define TMC_RAMP_DMAX_MAX GENMASK(15, 0) +#define TMC_RAMP_DMAX_MIN 0 +#define TMC_RAMP_VSTOP_MAX GENMASK(17, 0) +#define TMC_RAMP_VSTOP_MIN 1 +#define TMC_RAMP_TZEROWAIT_MAX (GENMASK(15, 0) - 512) +#define TMC_RAMP_TZEROWAIT_MIN 0 +#define TMC_RAMP_VCOOLTHRS_MAX GENMASK(22, 0) +#define TMC_RAMP_VCOOLTHRS_MIN 0 +#define TMC_RAMP_VHIGH_MAX GENMASK(22, 0) +#define TMC_RAMP_VHIGH_MIN 0 +#define TMC_RAMP_IHOLD_IRUN_MAX GENMASK(4, 0) +#define TMC_RAMP_IHOLD_IRUN_MIN 0 +#define TMC_RAMP_IHOLDDELAY_MAX GENMASK(3, 0) +#define TMC_RAMP_IHOLDDELAY_MIN 0 +#define TMC_RAMP_VACTUAL_SHIFT 22 + +/** + * @brief Trinamic Stepper Ramp Generator data + */ +struct tmc_ramp_generator_data { + uint32_t vstart; + uint32_t v1; + uint32_t vmax; + uint16_t a1; + uint16_t amax; + uint16_t d1; + uint16_t dmax; + uint32_t vstop; + uint16_t tzerowait; + uint32_t vcoolthrs; + uint32_t vhigh; + uint32_t iholdrun; +}; + +/** + * @brief Check if Ramp DT data is within limits + */ +#define CHECK_RAMP_DT_DATA(node) \ + COND_CODE_1(DT_PROP_EXISTS(node, vstart), \ + BUILD_ASSERT(IN_RANGE(DT_PROP(node, vstart), TMC_RAMP_VSTART_MIN, \ + TMC_RAMP_VSTART_MAX), "vstart out of range"), ()); \ + COND_CODE_1(DT_PROP_EXISTS(node, v1), \ + BUILD_ASSERT(IN_RANGE(DT_PROP(node, v1), TMC_RAMP_V1_MIN, \ + TMC_RAMP_V1_MAX), "v1 out of range"), ()); \ + COND_CODE_1(DT_PROP_EXISTS(node, vmax), \ + BUILD_ASSERT(IN_RANGE(DT_PROP(node, vmax), TMC_RAMP_VMAX_MIN, \ + TMC_RAMP_VMAX_MAX), "vmax out of range"), ()); \ + COND_CODE_1(DT_PROP_EXISTS(node, a1), \ + BUILD_ASSERT(IN_RANGE(DT_PROP(node, a1), TMC_RAMP_A1_MIN, \ + TMC_RAMP_A1_MAX), "a1 out of range"), ()); \ + COND_CODE_1(DT_PROP_EXISTS(node, amax), \ + BUILD_ASSERT(IN_RANGE(DT_PROP(node, amax), TMC_RAMP_AMAX_MIN, \ + TMC_RAMP_AMAX_MAX), "amax out of range"), ()); \ + COND_CODE_1(DT_PROP_EXISTS(node, d1), \ + BUILD_ASSERT(IN_RANGE(DT_PROP(node, d1), TMC_RAMP_D1_MIN, \ + TMC_RAMP_D1_MAX), "d1 out of range"), ()); \ + COND_CODE_1(DT_PROP_EXISTS(node, dmax), \ + BUILD_ASSERT(IN_RANGE(DT_PROP(node, dmax), TMC_RAMP_DMAX_MIN, \ + TMC_RAMP_DMAX_MAX), "dmax out of range"), ()); \ + COND_CODE_1(DT_PROP_EXISTS(node, vstop), \ + BUILD_ASSERT(IN_RANGE(DT_PROP(node, vstop), TMC_RAMP_VSTOP_MIN, \ + TMC_RAMP_VSTOP_MAX), "vstop out of range"), ()); \ + COND_CODE_1(DT_PROP_EXISTS(node, tzerowait), \ + BUILD_ASSERT(IN_RANGE(DT_PROP(node, tzerowait), TMC_RAMP_TZEROWAIT_MIN, \ + TMC_RAMP_TZEROWAIT_MAX), "tzerowait out of range"), ()); \ + COND_CODE_1(DT_PROP_EXISTS(node, vcoolthrs), \ + BUILD_ASSERT(IN_RANGE(DT_PROP(node, vcoolthrs), TMC_RAMP_VCOOLTHRS_MIN, \ + TMC_RAMP_VCOOLTHRS_MAX), "vcoolthrs out of range"), ()); \ + COND_CODE_1(DT_PROP_EXISTS(node, vhigh), \ + BUILD_ASSERT(IN_RANGE(DT_PROP(node, vhigh), TMC_RAMP_VHIGH_MIN, \ + TMC_RAMP_VHIGH_MAX), "vhigh out of range"), ()); \ + COND_CODE_1(DT_PROP_EXISTS(node, ihold), \ + BUILD_ASSERT(IN_RANGE(DT_PROP(node, ihold), TMC_RAMP_IHOLD_IRUN_MIN, \ + TMC_RAMP_IHOLD_IRUN_MAX), "ihold out of range"), ()); \ + COND_CODE_1(DT_PROP_EXISTS(node, irun), \ + BUILD_ASSERT(IN_RANGE(DT_PROP(node, irun), TMC_RAMP_IHOLD_IRUN_MIN, \ + TMC_RAMP_IHOLD_IRUN_MAX), "irun out of range"), ()); \ + COND_CODE_1(DT_PROP_EXISTS(node, iholddelay), \ + BUILD_ASSERT(IN_RANGE(DT_PROP(node, iholddelay), TMC_RAMP_IHOLDDELAY_MIN, \ + TMC_RAMP_IHOLDDELAY_MAX), "iholddelay out of range"), ()); + +/** + * @brief Get Trinamic Stepper Ramp Generator data from DT + * + * @param node DT node identifier + * + * @return struct tmc_ramp_generator_data + */ +#define TMC_RAMP_DT_SPEC_GET(node) \ + { \ + .vstart = DT_PROP(node, vstart), \ + .v1 = DT_PROP(node, v1), \ + .vmax = DT_PROP(node, vmax), \ + .a1 = DT_PROP(node, a1), \ + .amax = DT_PROP(node, amax), \ + .d1 = DT_PROP(node, d1), \ + .dmax = DT_PROP(node, dmax), \ + .vstop = DT_PROP(node, vstop), \ + .tzerowait = DT_PROP(node, tzerowait), \ + .vcoolthrs = DT_PROP(node, vcoolthrs), \ + .vhigh = DT_PROP(node, vhigh), \ + .iholdrun = (TMC5XXX_IRUN(DT_PROP(node, irun)) | \ + TMC5XXX_IHOLD(DT_PROP(node, ihold)) | \ + TMC5XXX_IHOLDDELAY(DT_PROP(node, iholddelay))), \ + } + +/** + * @brief Configure Trinamic Stepper Ramp Generator + * + * @param dev Pointer to the stepper motor controller instance + * @param ramp_data Pointer to a struct containing the required ramp parameters + * + * @retval -EIO General input / output error + * @retval -ENOSYS If not implemented by device driver + * @retval 0 Success + */ +int tmc5041_stepper_set_ramp(const struct device *dev, + const struct tmc_ramp_generator_data *ramp_data); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_DRIVERS_STEPPER_STEPPER_TRINAMIC_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/uart.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/uart.h index 845949ea..d6ce894c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/uart.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/uart.h @@ -22,7 +22,6 @@ * @{ */ -#include #include #include @@ -141,13 +140,6 @@ struct uart_config { typedef void (*uart_irq_callback_user_data_t)(const struct device *dev, void *user_data); -/** - * @brief For configuring IRQ on each individual UART device. - * - * @param dev UART device instance. - */ -typedef void (*uart_irq_config_func_t)(const struct device *dev); - /** * @} * @@ -328,135 +320,6 @@ typedef void (*uart_callback_t)(const struct device *dev, * @} */ -/** - * @cond INTERNAL_HIDDEN - * - * For internal driver use only, skip these in public documentation. - */ - -/** @brief Driver API structure. */ -__subsystem struct uart_driver_api { - -#ifdef CONFIG_UART_ASYNC_API - - int (*callback_set)(const struct device *dev, - uart_callback_t callback, - void *user_data); - - int (*tx)(const struct device *dev, const uint8_t *buf, size_t len, - int32_t timeout); - int (*tx_abort)(const struct device *dev); - - int (*rx_enable)(const struct device *dev, uint8_t *buf, size_t len, - int32_t timeout); - int (*rx_buf_rsp)(const struct device *dev, uint8_t *buf, size_t len); - int (*rx_disable)(const struct device *dev); - -#ifdef CONFIG_UART_WIDE_DATA - int (*tx_u16)(const struct device *dev, const uint16_t *buf, - size_t len, int32_t timeout); - int (*rx_enable_u16)(const struct device *dev, uint16_t *buf, - size_t len, int32_t timeout); - int (*rx_buf_rsp_u16)(const struct device *dev, uint16_t *buf, - size_t len); -#endif - -#endif - - /** Console I/O function */ - int (*poll_in)(const struct device *dev, unsigned char *p_char); - void (*poll_out)(const struct device *dev, unsigned char out_char); - -#ifdef CONFIG_UART_WIDE_DATA - int (*poll_in_u16)(const struct device *dev, uint16_t *p_u16); - void (*poll_out_u16)(const struct device *dev, uint16_t out_u16); -#endif - - /** Console I/O function */ - int (*err_check)(const struct device *dev); - -#ifdef CONFIG_UART_USE_RUNTIME_CONFIGURE - /** UART configuration functions */ - int (*configure)(const struct device *dev, - const struct uart_config *cfg); - int (*config_get)(const struct device *dev, struct uart_config *cfg); -#endif - -#ifdef CONFIG_UART_INTERRUPT_DRIVEN - - /** Interrupt driven FIFO fill function */ - int (*fifo_fill)(const struct device *dev, const uint8_t *tx_data, - int len); - -#ifdef CONFIG_UART_WIDE_DATA - int (*fifo_fill_u16)(const struct device *dev, const uint16_t *tx_data, - int len); -#endif - - /** Interrupt driven FIFO read function */ - int (*fifo_read)(const struct device *dev, uint8_t *rx_data, - const int size); - -#ifdef CONFIG_UART_WIDE_DATA - int (*fifo_read_u16)(const struct device *dev, uint16_t *rx_data, - const int size); -#endif - - /** Interrupt driven transfer enabling function */ - void (*irq_tx_enable)(const struct device *dev); - - /** Interrupt driven transfer disabling function */ - void (*irq_tx_disable)(const struct device *dev); - - /** Interrupt driven transfer ready function */ - int (*irq_tx_ready)(const struct device *dev); - - /** Interrupt driven receiver enabling function */ - void (*irq_rx_enable)(const struct device *dev); - - /** Interrupt driven receiver disabling function */ - void (*irq_rx_disable)(const struct device *dev); - - /** Interrupt driven transfer complete function */ - int (*irq_tx_complete)(const struct device *dev); - - /** Interrupt driven receiver ready function */ - int (*irq_rx_ready)(const struct device *dev); - - /** Interrupt driven error enabling function */ - void (*irq_err_enable)(const struct device *dev); - - /** Interrupt driven error disabling function */ - void (*irq_err_disable)(const struct device *dev); - - /** Interrupt driven pending status function */ - int (*irq_is_pending)(const struct device *dev); - - /** Interrupt driven interrupt update function */ - int (*irq_update)(const struct device *dev); - - /** Set the irq callback function */ - void (*irq_callback_set)(const struct device *dev, - uart_irq_callback_user_data_t cb, - void *user_data); - -#endif - -#ifdef CONFIG_UART_LINE_CTRL - int (*line_ctrl_set)(const struct device *dev, uint32_t ctrl, - uint32_t val); - int (*line_ctrl_get)(const struct device *dev, uint32_t ctrl, - uint32_t *val); -#endif - -#ifdef CONFIG_UART_DRV_CMD - int (*drv_cmd)(const struct device *dev, uint32_t cmd, uint32_t p); -#endif - -}; - -/** @endcond */ - /** * @brief Check whether an error was detected. * @@ -468,18 +331,6 @@ __subsystem struct uart_driver_api { */ __syscall int uart_err_check(const struct device *dev); -static inline int z_impl_uart_err_check(const struct device *dev) -{ - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->err_check == NULL) { - return -ENOSYS; - } - - return api->err_check(dev); -} - /** * @defgroup uart_polling Polling UART API * @{ @@ -505,19 +356,6 @@ static inline int z_impl_uart_err_check(const struct device *dev) */ __syscall int uart_poll_in(const struct device *dev, unsigned char *p_char); -static inline int z_impl_uart_poll_in(const struct device *dev, - unsigned char *p_char) -{ - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->poll_in == NULL) { - return -ENOSYS; - } - - return api->poll_in(dev, p_char); -} - /** * @brief Read a 16-bit datum from the device for input. * @@ -539,32 +377,14 @@ static inline int z_impl_uart_poll_in(const struct device *dev, */ __syscall int uart_poll_in_u16(const struct device *dev, uint16_t *p_u16); -static inline int z_impl_uart_poll_in_u16(const struct device *dev, - uint16_t *p_u16) -{ -#ifdef CONFIG_UART_WIDE_DATA - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->poll_in_u16 == NULL) { - return -ENOSYS; - } - - return api->poll_in_u16(dev, p_u16); -#else - ARG_UNUSED(dev); - ARG_UNUSED(p_u16); - return -ENOTSUP; -#endif -} - /** * @brief Write a character to the device for output. * - * This routine checks if the transmitter is full. When the + * This routine checks if the transmitter is full. When the * transmitter is not full, it writes a character to the data - * register. It waits and blocks the calling thread, otherwise. This - * function is a blocking call. + * register. It waits and blocks the calling thread otherwise. This + * function is a blocking call. It blocks the calling thread until the + * character is sent. * * To send a character when hardware flow control is enabled, the handshake * signal CTS must be asserted. @@ -575,15 +395,6 @@ static inline int z_impl_uart_poll_in_u16(const struct device *dev, __syscall void uart_poll_out(const struct device *dev, unsigned char out_char); -static inline void z_impl_uart_poll_out(const struct device *dev, - unsigned char out_char) -{ - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - api->poll_out(dev, out_char); -} - /** * @brief Write a 16-bit datum to the device for output. * @@ -600,20 +411,6 @@ static inline void z_impl_uart_poll_out(const struct device *dev, */ __syscall void uart_poll_out_u16(const struct device *dev, uint16_t out_u16); -static inline void z_impl_uart_poll_out_u16(const struct device *dev, - uint16_t out_u16) -{ -#ifdef CONFIG_UART_WIDE_DATA - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - api->poll_out_u16(dev, out_u16); -#else - ARG_UNUSED(dev); - ARG_UNUSED(out_u16); -#endif -} - /** * @} */ @@ -635,24 +432,6 @@ static inline void z_impl_uart_poll_out_u16(const struct device *dev, __syscall int uart_configure(const struct device *dev, const struct uart_config *cfg); -static inline int z_impl_uart_configure(const struct device *dev, - const struct uart_config *cfg) -{ -#ifdef CONFIG_UART_USE_RUNTIME_CONFIGURE - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->configure == NULL) { - return -ENOSYS; - } - return api->configure(dev, cfg); -#else - ARG_UNUSED(dev); - ARG_UNUSED(cfg); - return -ENOTSUP; -#endif -} - /** * @brief Get UART configuration. * @@ -670,25 +449,6 @@ static inline int z_impl_uart_configure(const struct device *dev, __syscall int uart_config_get(const struct device *dev, struct uart_config *cfg); -static inline int z_impl_uart_config_get(const struct device *dev, - struct uart_config *cfg) -{ -#ifdef CONFIG_UART_USE_RUNTIME_CONFIGURE - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->config_get == NULL) { - return -ENOSYS; - } - - return api->config_get(dev, cfg); -#else - ARG_UNUSED(dev); - ARG_UNUSED(cfg); - return -ENOTSUP; -#endif -} - /** * @addtogroup uart_interrupt * @{ @@ -714,26 +474,7 @@ static inline int z_impl_uart_config_get(const struct device *dev, * @retval -ENOSYS if this function is not supported * @retval -ENOTSUP If API is not enabled. */ -static inline int uart_fifo_fill(const struct device *dev, - const uint8_t *tx_data, - int size) -{ -#ifdef CONFIG_UART_INTERRUPT_DRIVEN - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->fifo_fill == NULL) { - return -ENOSYS; - } - - return api->fifo_fill(dev, tx_data, size); -#else - ARG_UNUSED(dev); - ARG_UNUSED(tx_data); - ARG_UNUSED(size); - return -ENOTSUP; -#endif -} +static inline int uart_fifo_fill(const struct device *dev, const uint8_t *tx_data, int size); /** * @brief Fill FIFO with wide data. @@ -755,26 +496,7 @@ static inline int uart_fifo_fill(const struct device *dev, * @retval -ENOSYS If this function is not implemented * @retval -ENOTSUP If API is not enabled. */ -static inline int uart_fifo_fill_u16(const struct device *dev, - const uint16_t *tx_data, - int size) -{ -#if defined(CONFIG_UART_INTERRUPT_DRIVEN) && defined(CONFIG_UART_WIDE_DATA) - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->fifo_fill_u16 == NULL) { - return -ENOSYS; - } - - return api->fifo_fill_u16(dev, tx_data, size); -#else - ARG_UNUSED(dev); - ARG_UNUSED(tx_data); - ARG_UNUSED(size); - return -ENOTSUP; -#endif -} +static inline int uart_fifo_fill_u16(const struct device *dev, const uint16_t *tx_data, int size); /** * @brief Read data from FIFO. @@ -797,25 +519,7 @@ static inline int uart_fifo_fill_u16(const struct device *dev, * @retval -ENOSYS If this function is not implemented. * @retval -ENOTSUP If API is not enabled. */ -static inline int uart_fifo_read(const struct device *dev, uint8_t *rx_data, - const int size) -{ -#ifdef CONFIG_UART_INTERRUPT_DRIVEN - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->fifo_read == NULL) { - return -ENOSYS; - } - - return api->fifo_read(dev, rx_data, size); -#else - ARG_UNUSED(dev); - ARG_UNUSED(rx_data); - ARG_UNUSED(size); - return -ENOTSUP; -#endif -} +static inline int uart_fifo_read(const struct device *dev, uint8_t *rx_data, const int size); /** * @brief Read wide data from FIFO. @@ -838,26 +542,7 @@ static inline int uart_fifo_read(const struct device *dev, uint8_t *rx_data, * @retval -ENOSYS If this function is not implemented. * @retval -ENOTSUP If API is not enabled. */ -static inline int uart_fifo_read_u16(const struct device *dev, - uint16_t *rx_data, - const int size) -{ -#if defined(CONFIG_UART_INTERRUPT_DRIVEN) && defined(CONFIG_UART_WIDE_DATA) - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->fifo_read_u16 == NULL) { - return -ENOSYS; - } - - return api->fifo_read_u16(dev, rx_data, size); -#else - ARG_UNUSED(dev); - ARG_UNUSED(rx_data); - ARG_UNUSED(size); - return -ENOTSUP; -#endif -} +static inline int uart_fifo_read_u16(const struct device *dev, uint16_t *rx_data, const int size); /** * @brief Enable TX interrupt in IER. @@ -866,20 +551,6 @@ static inline int uart_fifo_read_u16(const struct device *dev, */ __syscall void uart_irq_tx_enable(const struct device *dev); -static inline void z_impl_uart_irq_tx_enable(const struct device *dev) -{ -#ifdef CONFIG_UART_INTERRUPT_DRIVEN - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->irq_tx_enable != NULL) { - api->irq_tx_enable(dev); - } -#else - ARG_UNUSED(dev); -#endif -} - /** * @brief Disable TX interrupt in IER. * @@ -887,24 +558,10 @@ static inline void z_impl_uart_irq_tx_enable(const struct device *dev) */ __syscall void uart_irq_tx_disable(const struct device *dev); -static inline void z_impl_uart_irq_tx_disable(const struct device *dev) -{ -#ifdef CONFIG_UART_INTERRUPT_DRIVEN - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->irq_tx_disable != NULL) { - api->irq_tx_disable(dev); - } -#else - ARG_UNUSED(dev); -#endif -} - /** - * @brief Check if UART TX buffer can accept a new char + * @brief Check if UART TX buffer can accept bytes * - * @details Check if UART TX buffer can accept at least one character + * @details Check if UART TX buffer can accept more bytes * for transmission (i.e. uart_fifo_fill() will succeed and return * non-zero). This function must be called in a UART interrupt * handler, or its result is undefined. Before calling this function @@ -913,28 +570,15 @@ static inline void z_impl_uart_irq_tx_disable(const struct device *dev) * * @param dev UART device instance. * - * @retval 1 If TX interrupt is enabled and at least one char can be - * written to UART. * @retval 0 If device is not ready to write a new byte. + * @retval >0 Minimum number of bytes that can be written in a single call to + * @ref uart_fifo_fill. It may be possible to write more bytes, but + * the actual number written must be checked in the return code from + * @ref uart_fifo_fill. * @retval -ENOSYS If this function is not implemented. * @retval -ENOTSUP If API is not enabled. */ -static inline int uart_irq_tx_ready(const struct device *dev) -{ -#ifdef CONFIG_UART_INTERRUPT_DRIVEN - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->irq_tx_ready == NULL) { - return -ENOSYS; - } - - return api->irq_tx_ready(dev); -#else - ARG_UNUSED(dev); - return -ENOTSUP; -#endif -} +static inline int uart_irq_tx_ready(const struct device *dev); /** * @brief Enable RX interrupt. @@ -943,20 +587,6 @@ static inline int uart_irq_tx_ready(const struct device *dev) */ __syscall void uart_irq_rx_enable(const struct device *dev); -static inline void z_impl_uart_irq_rx_enable(const struct device *dev) -{ -#ifdef CONFIG_UART_INTERRUPT_DRIVEN - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->irq_rx_enable != NULL) { - api->irq_rx_enable(dev); - } -#else - ARG_UNUSED(dev); -#endif -} - /** * @brief Disable RX interrupt. * @@ -964,20 +594,6 @@ static inline void z_impl_uart_irq_rx_enable(const struct device *dev) */ __syscall void uart_irq_rx_disable(const struct device *dev); -static inline void z_impl_uart_irq_rx_disable(const struct device *dev) -{ -#ifdef CONFIG_UART_INTERRUPT_DRIVEN - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->irq_rx_disable != NULL) { - api->irq_rx_disable(dev); - } -#else - ARG_UNUSED(dev); -#endif -} - /** * @brief Check if UART TX block finished transmission * @@ -997,21 +613,7 @@ static inline void z_impl_uart_irq_rx_disable(const struct device *dev) * @retval -ENOSYS If this function is not implemented. * @retval -ENOTSUP If API is not enabled. */ -static inline int uart_irq_tx_complete(const struct device *dev) -{ -#ifdef CONFIG_UART_INTERRUPT_DRIVEN - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->irq_tx_complete == NULL) { - return -ENOSYS; - } - return api->irq_tx_complete(dev); -#else - ARG_UNUSED(dev); - return -ENOTSUP; -#endif -} +static inline int uart_irq_tx_complete(const struct device *dev); /** * @brief Check if UART RX buffer has a received char @@ -1033,21 +635,8 @@ static inline int uart_irq_tx_complete(const struct device *dev) * @retval -ENOSYS If this function is not implemented. * @retval -ENOTSUP If API is not enabled. */ -static inline int uart_irq_rx_ready(const struct device *dev) -{ -#ifdef CONFIG_UART_INTERRUPT_DRIVEN - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->irq_rx_ready == NULL) { - return -ENOSYS; - } - return api->irq_rx_ready(dev); -#else - ARG_UNUSED(dev); - return -ENOTSUP; -#endif -} +static inline int uart_irq_rx_ready(const struct device *dev); + /** * @brief Enable error interrupt. * @@ -1055,20 +644,6 @@ static inline int uart_irq_rx_ready(const struct device *dev) */ __syscall void uart_irq_err_enable(const struct device *dev); -static inline void z_impl_uart_irq_err_enable(const struct device *dev) -{ -#ifdef CONFIG_UART_INTERRUPT_DRIVEN - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->irq_err_enable) { - api->irq_err_enable(dev); - } -#else - ARG_UNUSED(dev); -#endif -} - /** * @brief Disable error interrupt. * @@ -1076,20 +651,6 @@ static inline void z_impl_uart_irq_err_enable(const struct device *dev) */ __syscall void uart_irq_err_disable(const struct device *dev); -static inline void z_impl_uart_irq_err_disable(const struct device *dev) -{ -#ifdef CONFIG_UART_INTERRUPT_DRIVEN - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->irq_err_disable) { - api->irq_err_disable(dev); - } -#else - ARG_UNUSED(dev); -#endif -} - /** * @brief Check if any IRQs is pending. * @@ -1102,22 +663,6 @@ static inline void z_impl_uart_irq_err_disable(const struct device *dev) */ __syscall int uart_irq_is_pending(const struct device *dev); -static inline int z_impl_uart_irq_is_pending(const struct device *dev) -{ -#ifdef CONFIG_UART_INTERRUPT_DRIVEN - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->irq_is_pending == NULL) { - return -ENOSYS; - } - return api->irq_is_pending(dev); -#else - ARG_UNUSED(dev); - return -ENOTSUP; -#endif -} - /** * @brief Start processing interrupts in ISR. * @@ -1145,22 +690,6 @@ static inline int z_impl_uart_irq_is_pending(const struct device *dev) */ __syscall int uart_irq_update(const struct device *dev); -static inline int z_impl_uart_irq_update(const struct device *dev) -{ -#ifdef CONFIG_UART_INTERRUPT_DRIVEN - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->irq_update == NULL) { - return -ENOSYS; - } - return api->irq_update(dev); -#else - ARG_UNUSED(dev); - return -ENOTSUP; -#endif -} - /** * @brief Set the IRQ callback function pointer. * @@ -1178,25 +707,7 @@ static inline int z_impl_uart_irq_update(const struct device *dev) */ static inline int uart_irq_callback_user_data_set(const struct device *dev, uart_irq_callback_user_data_t cb, - void *user_data) -{ -#ifdef CONFIG_UART_INTERRUPT_DRIVEN - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if ((api != NULL) && (api->irq_callback_set != NULL)) { - api->irq_callback_set(dev, cb, user_data); - return 0; - } else { - return -ENOSYS; - } -#else - ARG_UNUSED(dev); - ARG_UNUSED(cb); - ARG_UNUSED(user_data); - return -ENOTSUP; -#endif -} + void *user_data); /** * @brief Set the IRQ callback function pointer (legacy). @@ -1212,10 +723,7 @@ static inline int uart_irq_callback_user_data_set(const struct device *dev, * @retval -ENOTSUP If API is not enabled. */ static inline int uart_irq_callback_set(const struct device *dev, - uart_irq_callback_user_data_t cb) -{ - return uart_irq_callback_user_data_set(dev, cb, NULL); -} + uart_irq_callback_user_data_t cb); /** * @} @@ -1243,24 +751,7 @@ static inline int uart_irq_callback_set(const struct device *dev, */ static inline int uart_callback_set(const struct device *dev, uart_callback_t callback, - void *user_data) -{ -#ifdef CONFIG_UART_ASYNC_API - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->callback_set == NULL) { - return -ENOSYS; - } - - return api->callback_set(dev, callback, user_data); -#else - ARG_UNUSED(dev); - ARG_UNUSED(callback); - ARG_UNUSED(user_data); - return -ENOTSUP; -#endif -} + void *user_data); /** * @brief Send given number of bytes from buffer through UART. @@ -1283,24 +774,6 @@ __syscall int uart_tx(const struct device *dev, const uint8_t *buf, size_t len, int32_t timeout); -static inline int z_impl_uart_tx(const struct device *dev, const uint8_t *buf, - size_t len, int32_t timeout) - -{ -#ifdef CONFIG_UART_ASYNC_API - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - return api->tx(dev, buf, len, timeout); -#else - ARG_UNUSED(dev); - ARG_UNUSED(buf); - ARG_UNUSED(len); - ARG_UNUSED(timeout); - return -ENOTSUP; -#endif -} - /** * @brief Send given number of datum from buffer through UART. * @@ -1321,25 +794,6 @@ static inline int z_impl_uart_tx(const struct device *dev, const uint8_t *buf, __syscall int uart_tx_u16(const struct device *dev, const uint16_t *buf, size_t len, int32_t timeout); -static inline int z_impl_uart_tx_u16(const struct device *dev, - const uint16_t *buf, - size_t len, int32_t timeout) - -{ -#if defined(CONFIG_UART_ASYNC_API) && defined(CONFIG_UART_WIDE_DATA) - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - return api->tx_u16(dev, buf, len, timeout); -#else - ARG_UNUSED(dev); - ARG_UNUSED(buf); - ARG_UNUSED(len); - ARG_UNUSED(timeout); - return -ENOTSUP; -#endif -} - /** * @brief Abort current TX transmission. * @@ -1354,19 +808,6 @@ static inline int z_impl_uart_tx_u16(const struct device *dev, */ __syscall int uart_tx_abort(const struct device *dev); -static inline int z_impl_uart_tx_abort(const struct device *dev) -{ -#ifdef CONFIG_UART_ASYNC_API - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - return api->tx_abort(dev); -#else - ARG_UNUSED(dev); - return -ENOTSUP; -#endif -} - /** * @brief Start receiving data through UART. * @@ -1392,24 +833,6 @@ __syscall int uart_rx_enable(const struct device *dev, uint8_t *buf, size_t len, int32_t timeout); -static inline int z_impl_uart_rx_enable(const struct device *dev, - uint8_t *buf, - size_t len, int32_t timeout) -{ -#ifdef CONFIG_UART_ASYNC_API - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - return api->rx_enable(dev, buf, len, timeout); -#else - ARG_UNUSED(dev); - ARG_UNUSED(buf); - ARG_UNUSED(len); - ARG_UNUSED(timeout); - return -ENOTSUP; -#endif -} - /** * @brief Start receiving wide data through UART. * @@ -1434,24 +857,6 @@ static inline int z_impl_uart_rx_enable(const struct device *dev, __syscall int uart_rx_enable_u16(const struct device *dev, uint16_t *buf, size_t len, int32_t timeout); -static inline int z_impl_uart_rx_enable_u16(const struct device *dev, - uint16_t *buf, size_t len, - int32_t timeout) -{ -#if defined(CONFIG_UART_ASYNC_API) && defined(CONFIG_UART_WIDE_DATA) - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - return api->rx_enable_u16(dev, buf, len, timeout); -#else - ARG_UNUSED(dev); - ARG_UNUSED(buf); - ARG_UNUSED(len); - ARG_UNUSED(timeout); - return -ENOTSUP; -#endif -} - /** * @brief Provide receive buffer in response to #UART_RX_BUF_REQUEST event. * @@ -1473,20 +878,7 @@ static inline int z_impl_uart_rx_enable_u16(const struct device *dev, * @retval -errno Other negative errno value in case of failure. */ static inline int uart_rx_buf_rsp(const struct device *dev, uint8_t *buf, - size_t len) -{ -#ifdef CONFIG_UART_ASYNC_API - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - return api->rx_buf_rsp(dev, buf, len); -#else - ARG_UNUSED(dev); - ARG_UNUSED(buf); - ARG_UNUSED(len); - return -ENOTSUP; -#endif -} + size_t len); /** * @brief Provide wide data receive buffer in response to #UART_RX_BUF_REQUEST @@ -1510,20 +902,7 @@ static inline int uart_rx_buf_rsp(const struct device *dev, uint8_t *buf, * @retval -errno Other negative errno value in case of failure. */ static inline int uart_rx_buf_rsp_u16(const struct device *dev, uint16_t *buf, - size_t len) -{ -#if defined(CONFIG_UART_ASYNC_API) && defined(CONFIG_UART_WIDE_DATA) - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - return api->rx_buf_rsp_u16(dev, buf, len); -#else - ARG_UNUSED(dev); - ARG_UNUSED(buf); - ARG_UNUSED(len); - return -ENOTSUP; -#endif -} + size_t len); /** * @brief Disable RX @@ -1542,19 +921,6 @@ static inline int uart_rx_buf_rsp_u16(const struct device *dev, uint16_t *buf, */ __syscall int uart_rx_disable(const struct device *dev); -static inline int z_impl_uart_rx_disable(const struct device *dev) -{ -#ifdef CONFIG_UART_ASYNC_API - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - return api->rx_disable(dev); -#else - ARG_UNUSED(dev); - return -ENOTSUP; -#endif -} - /** * @} */ @@ -1574,25 +940,6 @@ static inline int z_impl_uart_rx_disable(const struct device *dev) __syscall int uart_line_ctrl_set(const struct device *dev, uint32_t ctrl, uint32_t val); -static inline int z_impl_uart_line_ctrl_set(const struct device *dev, - uint32_t ctrl, uint32_t val) -{ -#ifdef CONFIG_UART_LINE_CTRL - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->line_ctrl_set == NULL) { - return -ENOSYS; - } - return api->line_ctrl_set(dev, ctrl, val); -#else - ARG_UNUSED(dev); - ARG_UNUSED(ctrl); - ARG_UNUSED(val); - return -ENOTSUP; -#endif -} - /** * @brief Retrieve line control for UART. * @@ -1608,25 +955,6 @@ static inline int z_impl_uart_line_ctrl_set(const struct device *dev, __syscall int uart_line_ctrl_get(const struct device *dev, uint32_t ctrl, uint32_t *val); -static inline int z_impl_uart_line_ctrl_get(const struct device *dev, - uint32_t ctrl, uint32_t *val) -{ -#ifdef CONFIG_UART_LINE_CTRL - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->line_ctrl_get == NULL) { - return -ENOSYS; - } - return api->line_ctrl_get(dev, ctrl, val); -#else - ARG_UNUSED(dev); - ARG_UNUSED(ctrl); - ARG_UNUSED(val); - return -ENOTSUP; -#endif -} - /** * @brief Send extra command to driver. * @@ -1644,25 +972,6 @@ static inline int z_impl_uart_line_ctrl_get(const struct device *dev, */ __syscall int uart_drv_cmd(const struct device *dev, uint32_t cmd, uint32_t p); -static inline int z_impl_uart_drv_cmd(const struct device *dev, uint32_t cmd, - uint32_t p) -{ -#ifdef CONFIG_UART_DRV_CMD - const struct uart_driver_api *api = - (const struct uart_driver_api *)dev->api; - - if (api->drv_cmd == NULL) { - return -ENOSYS; - } - return api->drv_cmd(dev, cmd, p); -#else - ARG_UNUSED(dev); - ARG_UNUSED(cmd); - ARG_UNUSED(p); - return -ENOTSUP; -#endif -} - #ifdef __cplusplus } #endif @@ -1671,6 +980,7 @@ static inline int z_impl_uart_drv_cmd(const struct device *dev, uint32_t cmd, * @} */ +#include #include #endif /* ZEPHYR_INCLUDE_DRIVERS_UART_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/uart/uart_internal.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/uart/uart_internal.h new file mode 100644 index 00000000..59dab601 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/uart/uart_internal.h @@ -0,0 +1,679 @@ +/* + * Copyright (c) 2018-2019 Nordic Semiconductor ASA + * Copyright (c) 2015 Wind River Systems, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief Internal APIs for UART drivers + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_UART_UART_INTERNAL_H_ +#define ZEPHYR_INCLUDE_DRIVERS_UART_UART_INTERNAL_H_ + +#include +#include + +#include + +/** + * @cond INTERNAL_HIDDEN + * + * For internal driver use only, skip these in public documentation. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief For configuring IRQ on each individual UART device. + * + * @param dev UART device instance. + */ +typedef void (*uart_irq_config_func_t)(const struct device *dev); + +/** @brief Driver API structure. */ +__subsystem struct uart_driver_api { + +#ifdef CONFIG_UART_ASYNC_API + + int (*callback_set)(const struct device *dev, uart_callback_t callback, void *user_data); + + int (*tx)(const struct device *dev, const uint8_t *buf, size_t len, int32_t timeout); + int (*tx_abort)(const struct device *dev); + + int (*rx_enable)(const struct device *dev, uint8_t *buf, size_t len, int32_t timeout); + int (*rx_buf_rsp)(const struct device *dev, uint8_t *buf, size_t len); + int (*rx_disable)(const struct device *dev); + +#ifdef CONFIG_UART_WIDE_DATA + int (*tx_u16)(const struct device *dev, const uint16_t *buf, size_t len, int32_t timeout); + int (*rx_enable_u16)(const struct device *dev, uint16_t *buf, size_t len, int32_t timeout); + int (*rx_buf_rsp_u16)(const struct device *dev, uint16_t *buf, size_t len); +#endif + +#endif + + /** Console I/O function */ + int (*poll_in)(const struct device *dev, unsigned char *p_char); + void (*poll_out)(const struct device *dev, unsigned char out_char); + +#ifdef CONFIG_UART_WIDE_DATA + int (*poll_in_u16)(const struct device *dev, uint16_t *p_u16); + void (*poll_out_u16)(const struct device *dev, uint16_t out_u16); +#endif + + /** Console I/O function */ + int (*err_check)(const struct device *dev); + +#ifdef CONFIG_UART_USE_RUNTIME_CONFIGURE + /** UART configuration functions */ + int (*configure)(const struct device *dev, const struct uart_config *cfg); + int (*config_get)(const struct device *dev, struct uart_config *cfg); +#endif + +#ifdef CONFIG_UART_INTERRUPT_DRIVEN + + /** Interrupt driven FIFO fill function */ + int (*fifo_fill)(const struct device *dev, const uint8_t *tx_data, int len); + +#ifdef CONFIG_UART_WIDE_DATA + int (*fifo_fill_u16)(const struct device *dev, const uint16_t *tx_data, int len); +#endif + + /** Interrupt driven FIFO read function */ + int (*fifo_read)(const struct device *dev, uint8_t *rx_data, const int size); + +#ifdef CONFIG_UART_WIDE_DATA + int (*fifo_read_u16)(const struct device *dev, uint16_t *rx_data, const int size); +#endif + + /** Interrupt driven transfer enabling function */ + void (*irq_tx_enable)(const struct device *dev); + + /** Interrupt driven transfer disabling function */ + void (*irq_tx_disable)(const struct device *dev); + + /** Interrupt driven transfer ready function */ + int (*irq_tx_ready)(const struct device *dev); + + /** Interrupt driven receiver enabling function */ + void (*irq_rx_enable)(const struct device *dev); + + /** Interrupt driven receiver disabling function */ + void (*irq_rx_disable)(const struct device *dev); + + /** Interrupt driven transfer complete function */ + int (*irq_tx_complete)(const struct device *dev); + + /** Interrupt driven receiver ready function */ + int (*irq_rx_ready)(const struct device *dev); + + /** Interrupt driven error enabling function */ + void (*irq_err_enable)(const struct device *dev); + + /** Interrupt driven error disabling function */ + void (*irq_err_disable)(const struct device *dev); + + /** Interrupt driven pending status function */ + int (*irq_is_pending)(const struct device *dev); + + /** Interrupt driven interrupt update function */ + int (*irq_update)(const struct device *dev); + + /** Set the irq callback function */ + void (*irq_callback_set)(const struct device *dev, uart_irq_callback_user_data_t cb, + void *user_data); + +#endif + +#ifdef CONFIG_UART_LINE_CTRL + int (*line_ctrl_set)(const struct device *dev, uint32_t ctrl, uint32_t val); + int (*line_ctrl_get)(const struct device *dev, uint32_t ctrl, uint32_t *val); +#endif + +#ifdef CONFIG_UART_DRV_CMD + int (*drv_cmd)(const struct device *dev, uint32_t cmd, uint32_t p); +#endif +}; + +static inline int z_impl_uart_err_check(const struct device *dev) +{ + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->err_check == NULL) { + return -ENOSYS; + } + + return api->err_check(dev); +} + +static inline int z_impl_uart_poll_in(const struct device *dev, unsigned char *p_char) +{ + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->poll_in == NULL) { + return -ENOSYS; + } + + return api->poll_in(dev, p_char); +} + +static inline int z_impl_uart_poll_in_u16(const struct device *dev, uint16_t *p_u16) +{ +#ifdef CONFIG_UART_WIDE_DATA + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->poll_in_u16 == NULL) { + return -ENOSYS; + } + + return api->poll_in_u16(dev, p_u16); +#else + ARG_UNUSED(dev); + ARG_UNUSED(p_u16); + return -ENOTSUP; +#endif +} + +static inline void z_impl_uart_poll_out(const struct device *dev, unsigned char out_char) +{ + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + api->poll_out(dev, out_char); +} + +static inline void z_impl_uart_poll_out_u16(const struct device *dev, uint16_t out_u16) +{ +#ifdef CONFIG_UART_WIDE_DATA + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + api->poll_out_u16(dev, out_u16); +#else + ARG_UNUSED(dev); + ARG_UNUSED(out_u16); +#endif +} + +static inline int z_impl_uart_configure(const struct device *dev, const struct uart_config *cfg) +{ +#ifdef CONFIG_UART_USE_RUNTIME_CONFIGURE + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->configure == NULL) { + return -ENOSYS; + } + return api->configure(dev, cfg); +#else + ARG_UNUSED(dev); + ARG_UNUSED(cfg); + return -ENOTSUP; +#endif +} + +static inline int z_impl_uart_config_get(const struct device *dev, struct uart_config *cfg) +{ +#ifdef CONFIG_UART_USE_RUNTIME_CONFIGURE + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->config_get == NULL) { + return -ENOSYS; + } + + return api->config_get(dev, cfg); +#else + ARG_UNUSED(dev); + ARG_UNUSED(cfg); + return -ENOTSUP; +#endif +} + +static inline int uart_fifo_fill(const struct device *dev, const uint8_t *tx_data, int size) +{ +#ifdef CONFIG_UART_INTERRUPT_DRIVEN + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->fifo_fill == NULL) { + return -ENOSYS; + } + + return api->fifo_fill(dev, tx_data, size); +#else + ARG_UNUSED(dev); + ARG_UNUSED(tx_data); + ARG_UNUSED(size); + return -ENOTSUP; +#endif +} + +static inline int uart_fifo_fill_u16(const struct device *dev, const uint16_t *tx_data, int size) +{ +#if defined(CONFIG_UART_INTERRUPT_DRIVEN) && defined(CONFIG_UART_WIDE_DATA) + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->fifo_fill_u16 == NULL) { + return -ENOSYS; + } + + return api->fifo_fill_u16(dev, tx_data, size); +#else + ARG_UNUSED(dev); + ARG_UNUSED(tx_data); + ARG_UNUSED(size); + return -ENOTSUP; +#endif +} + +static inline int uart_fifo_read(const struct device *dev, uint8_t *rx_data, const int size) +{ +#ifdef CONFIG_UART_INTERRUPT_DRIVEN + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->fifo_read == NULL) { + return -ENOSYS; + } + + return api->fifo_read(dev, rx_data, size); +#else + ARG_UNUSED(dev); + ARG_UNUSED(rx_data); + ARG_UNUSED(size); + return -ENOTSUP; +#endif +} + +static inline int uart_fifo_read_u16(const struct device *dev, uint16_t *rx_data, const int size) +{ +#if defined(CONFIG_UART_INTERRUPT_DRIVEN) && defined(CONFIG_UART_WIDE_DATA) + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->fifo_read_u16 == NULL) { + return -ENOSYS; + } + + return api->fifo_read_u16(dev, rx_data, size); +#else + ARG_UNUSED(dev); + ARG_UNUSED(rx_data); + ARG_UNUSED(size); + return -ENOTSUP; +#endif +} + +static inline void z_impl_uart_irq_tx_enable(const struct device *dev) +{ +#ifdef CONFIG_UART_INTERRUPT_DRIVEN + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->irq_tx_enable != NULL) { + api->irq_tx_enable(dev); + } +#else + ARG_UNUSED(dev); +#endif +} + +static inline void z_impl_uart_irq_tx_disable(const struct device *dev) +{ +#ifdef CONFIG_UART_INTERRUPT_DRIVEN + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->irq_tx_disable != NULL) { + api->irq_tx_disable(dev); + } +#else + ARG_UNUSED(dev); +#endif +} + +static inline int uart_irq_tx_ready(const struct device *dev) +{ +#ifdef CONFIG_UART_INTERRUPT_DRIVEN + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->irq_tx_ready == NULL) { + return -ENOSYS; + } + + return api->irq_tx_ready(dev); +#else + ARG_UNUSED(dev); + return -ENOTSUP; +#endif +} + +static inline void z_impl_uart_irq_rx_enable(const struct device *dev) +{ +#ifdef CONFIG_UART_INTERRUPT_DRIVEN + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->irq_rx_enable != NULL) { + api->irq_rx_enable(dev); + } +#else + ARG_UNUSED(dev); +#endif +} + +static inline void z_impl_uart_irq_rx_disable(const struct device *dev) +{ +#ifdef CONFIG_UART_INTERRUPT_DRIVEN + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->irq_rx_disable != NULL) { + api->irq_rx_disable(dev); + } +#else + ARG_UNUSED(dev); +#endif +} + +static inline int uart_irq_tx_complete(const struct device *dev) +{ +#ifdef CONFIG_UART_INTERRUPT_DRIVEN + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->irq_tx_complete == NULL) { + return -ENOSYS; + } + return api->irq_tx_complete(dev); +#else + ARG_UNUSED(dev); + return -ENOTSUP; +#endif +} + +static inline int uart_irq_rx_ready(const struct device *dev) +{ +#ifdef CONFIG_UART_INTERRUPT_DRIVEN + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->irq_rx_ready == NULL) { + return -ENOSYS; + } + return api->irq_rx_ready(dev); +#else + ARG_UNUSED(dev); + return -ENOTSUP; +#endif +} + +static inline void z_impl_uart_irq_err_enable(const struct device *dev) +{ +#ifdef CONFIG_UART_INTERRUPT_DRIVEN + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->irq_err_enable) { + api->irq_err_enable(dev); + } +#else + ARG_UNUSED(dev); +#endif +} + +static inline void z_impl_uart_irq_err_disable(const struct device *dev) +{ +#ifdef CONFIG_UART_INTERRUPT_DRIVEN + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->irq_err_disable) { + api->irq_err_disable(dev); + } +#else + ARG_UNUSED(dev); +#endif +} + +static inline int z_impl_uart_irq_is_pending(const struct device *dev) +{ +#ifdef CONFIG_UART_INTERRUPT_DRIVEN + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->irq_is_pending == NULL) { + return -ENOSYS; + } + return api->irq_is_pending(dev); +#else + ARG_UNUSED(dev); + return -ENOTSUP; +#endif +} + +static inline int z_impl_uart_irq_update(const struct device *dev) +{ +#ifdef CONFIG_UART_INTERRUPT_DRIVEN + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->irq_update == NULL) { + return -ENOSYS; + } + return api->irq_update(dev); +#else + ARG_UNUSED(dev); + return -ENOTSUP; +#endif +} + +static inline int uart_irq_callback_user_data_set(const struct device *dev, + uart_irq_callback_user_data_t cb, void *user_data) +{ +#ifdef CONFIG_UART_INTERRUPT_DRIVEN + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if ((api != NULL) && (api->irq_callback_set != NULL)) { + api->irq_callback_set(dev, cb, user_data); + return 0; + } else { + return -ENOSYS; + } +#else + ARG_UNUSED(dev); + ARG_UNUSED(cb); + ARG_UNUSED(user_data); + return -ENOTSUP; +#endif +} + +static inline int uart_irq_callback_set(const struct device *dev, uart_irq_callback_user_data_t cb) +{ + return uart_irq_callback_user_data_set(dev, cb, NULL); +} + +static inline int uart_callback_set(const struct device *dev, uart_callback_t callback, + void *user_data) +{ +#ifdef CONFIG_UART_ASYNC_API + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->callback_set == NULL) { + return -ENOSYS; + } + + return api->callback_set(dev, callback, user_data); +#else + ARG_UNUSED(dev); + ARG_UNUSED(callback); + ARG_UNUSED(user_data); + return -ENOTSUP; +#endif +} + +static inline int z_impl_uart_tx(const struct device *dev, const uint8_t *buf, size_t len, + int32_t timeout) + +{ +#ifdef CONFIG_UART_ASYNC_API + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + return api->tx(dev, buf, len, timeout); +#else + ARG_UNUSED(dev); + ARG_UNUSED(buf); + ARG_UNUSED(len); + ARG_UNUSED(timeout); + return -ENOTSUP; +#endif +} + +static inline int z_impl_uart_tx_u16(const struct device *dev, const uint16_t *buf, size_t len, + int32_t timeout) + +{ +#if defined(CONFIG_UART_ASYNC_API) && defined(CONFIG_UART_WIDE_DATA) + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + return api->tx_u16(dev, buf, len, timeout); +#else + ARG_UNUSED(dev); + ARG_UNUSED(buf); + ARG_UNUSED(len); + ARG_UNUSED(timeout); + return -ENOTSUP; +#endif +} + +static inline int z_impl_uart_tx_abort(const struct device *dev) +{ +#ifdef CONFIG_UART_ASYNC_API + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + return api->tx_abort(dev); +#else + ARG_UNUSED(dev); + return -ENOTSUP; +#endif +} + +static inline int z_impl_uart_rx_enable(const struct device *dev, uint8_t *buf, size_t len, + int32_t timeout) +{ +#ifdef CONFIG_UART_ASYNC_API + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + return api->rx_enable(dev, buf, len, timeout); +#else + ARG_UNUSED(dev); + ARG_UNUSED(buf); + ARG_UNUSED(len); + ARG_UNUSED(timeout); + return -ENOTSUP; +#endif +} + +static inline int z_impl_uart_rx_enable_u16(const struct device *dev, uint16_t *buf, size_t len, + int32_t timeout) +{ +#if defined(CONFIG_UART_ASYNC_API) && defined(CONFIG_UART_WIDE_DATA) + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + return api->rx_enable_u16(dev, buf, len, timeout); +#else + ARG_UNUSED(dev); + ARG_UNUSED(buf); + ARG_UNUSED(len); + ARG_UNUSED(timeout); + return -ENOTSUP; +#endif +} + +static inline int uart_rx_buf_rsp(const struct device *dev, uint8_t *buf, size_t len) +{ +#ifdef CONFIG_UART_ASYNC_API + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + return api->rx_buf_rsp(dev, buf, len); +#else + ARG_UNUSED(dev); + ARG_UNUSED(buf); + ARG_UNUSED(len); + return -ENOTSUP; +#endif +} + +static inline int uart_rx_buf_rsp_u16(const struct device *dev, uint16_t *buf, size_t len) +{ +#if defined(CONFIG_UART_ASYNC_API) && defined(CONFIG_UART_WIDE_DATA) + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + return api->rx_buf_rsp_u16(dev, buf, len); +#else + ARG_UNUSED(dev); + ARG_UNUSED(buf); + ARG_UNUSED(len); + return -ENOTSUP; +#endif +} + +static inline int z_impl_uart_rx_disable(const struct device *dev) +{ +#ifdef CONFIG_UART_ASYNC_API + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + return api->rx_disable(dev); +#else + ARG_UNUSED(dev); + return -ENOTSUP; +#endif +} + +static inline int z_impl_uart_line_ctrl_set(const struct device *dev, uint32_t ctrl, uint32_t val) +{ +#ifdef CONFIG_UART_LINE_CTRL + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->line_ctrl_set == NULL) { + return -ENOSYS; + } + return api->line_ctrl_set(dev, ctrl, val); +#else + ARG_UNUSED(dev); + ARG_UNUSED(ctrl); + ARG_UNUSED(val); + return -ENOTSUP; +#endif +} + +static inline int z_impl_uart_line_ctrl_get(const struct device *dev, uint32_t ctrl, uint32_t *val) +{ +#ifdef CONFIG_UART_LINE_CTRL + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->line_ctrl_get == NULL) { + return -ENOSYS; + } + return api->line_ctrl_get(dev, ctrl, val); +#else + ARG_UNUSED(dev); + ARG_UNUSED(ctrl); + ARG_UNUSED(val); + return -ENOTSUP; +#endif +} + +static inline int z_impl_uart_drv_cmd(const struct device *dev, uint32_t cmd, uint32_t p) +{ +#ifdef CONFIG_UART_DRV_CMD + const struct uart_driver_api *api = (const struct uart_driver_api *)dev->api; + + if (api->drv_cmd == NULL) { + return -ENOSYS; + } + return api->drv_cmd(dev, cmd, p); +#else + ARG_UNUSED(dev); + ARG_UNUSED(cmd); + ARG_UNUSED(p); + return -ENOTSUP; +#endif +} + +#ifdef __cplusplus +} +#endif + +/** @endcond */ + +#endif /* ZEPHYR_INCLUDE_DRIVERS_UART_UART_INTERNAL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/uart_emul.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/uart_emul.h new file mode 100644 index 00000000..c2f16bd4 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/uart_emul.h @@ -0,0 +1,76 @@ +/* + * Copyright 2024 Basalte bv + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_UART_EMUL_H_ +#define ZEPHYR_INCLUDE_DRIVERS_UART_EMUL_H_ + +#include +#include +#include +#include +#include + +/** + * @file + * + * @brief Public APIs for the UART device emulation drivers. + */ + +/** + * @brief UART Emulation Interface + * @defgroup uart_emul_interface UART Emulation Interface + * @ingroup io_emulators + * @{ + */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct uart_emul_device_api; + +/** + * @brief Define the emulation callback function signature + * + * @param dev UART device instance + * @param size Number of available bytes in TX buffer + * @param target pointer to emulation context + */ +typedef void (*uart_emul_device_tx_data_ready_t)(const struct device *dev, size_t size, + const struct emul *target); + +/** Node in a linked list of emulators for UART devices */ +struct uart_emul { + sys_snode_t node; + /** Target emulator - REQUIRED for all emulated bus nodes of any type */ + const struct emul *target; + /** API provided for this device */ + const struct uart_emul_device_api *api; +}; + +/** Definition of the emulator API */ +struct uart_emul_device_api { + uart_emul_device_tx_data_ready_t tx_data_ready; +}; + +/** + * Register an emulated device on the controller + * + * @param dev Device that will use the emulator + * @param emul UART emulator to use + * @return 0 indicating success + */ +int uart_emul_register(const struct device *dev, struct uart_emul *emul); + +#ifdef __cplusplus +} +#endif + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_DRIVERS_UART_EMUL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/udc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/udc.h index 2e4d4dbc..cd1e0385 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/udc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/udc.h @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include @@ -76,6 +76,8 @@ struct udc_ep_caps { uint32_t bulk : 1; /** ISO transfer capable endpoint */ uint32_t iso : 1; + /** High-Bandwidth (interrupt or iso) capable endpoint */ + uint32_t high_bandwidth : 1; /** IN transfer capable endpoint */ uint32_t in : 1; /** OUT transfer capable endpoint */ @@ -277,8 +279,10 @@ struct udc_data { struct udc_device_caps caps; /** Driver access mutex */ struct k_mutex mutex; - /** Callback to submit an UDC event to upper layer */ + /** Callback to submit an UDC event to higher layer */ udc_event_cb_t event_cb; + /** Opaque pointer to store higher layer context */ + const void *event_ctx; /** USB device controller status */ atomic_t status; /** Internal used Control Sequence Stage */ @@ -293,6 +297,8 @@ struct udc_data { * @brief New USB device controller (UDC) driver API * @defgroup udc_api USB device controller driver API * @ingroup io_interfaces + * @since 3.3 + * @version 0.1.0 * @{ */ @@ -345,14 +351,16 @@ static inline bool udc_is_suspended(const struct device *dev) * After initialization controller driver should be able to detect * power state of the bus and signal power state changes. * - * @param[in] dev Pointer to device struct of the driver instance - * @param[in] event_cb Event callback from the higher layer (USB device stack) + * @param[in] dev Pointer to device struct of the driver instance + * @param[in] event_cb Event callback from the higher layer (USB device stack) + * @param[in] event_ctx Opaque pointer to higher layer context * * @return 0 on success, all other values should be treated as error. * @retval -EINVAL on parameter error (no callback is passed) * @retval -EALREADY already initialized */ -int udc_init(const struct device *dev, udc_event_cb_t event_cb); +int udc_init(const struct device *dev, + udc_event_cb_t event_cb, const void *const event_ctx); /** * @brief Enable USB device controller @@ -365,6 +373,7 @@ int udc_init(const struct device *dev, udc_event_cb_t event_cb); * @return 0 on success, all other values should be treated as error. * @retval -EPERM controller is not initialized * @retval -EALREADY already enabled + * @retval -ETIMEDOUT enable operation timed out */ int udc_enable(const struct device *dev); @@ -702,6 +711,36 @@ static inline struct udc_buf_info *udc_get_buf_info(const struct net_buf *const return (struct udc_buf_info *)net_buf_user_data(buf); } + +/** + * @brief Get pointer to higher layer context + * + * The address of the context is passed as an argument to the udc_init() + * function and is stored in the UDC data. + * + * @param[in] dev Pointer to device struct of the driver instance + * + * @return Opaque pointer to higher layer context + */ +static inline const void *udc_get_event_ctx(const struct device *dev) +{ + struct udc_data *data = dev->data; + + return data->event_ctx; +} + +/** + * @brief Get endpoint size from UDC endpoint configuration + * + * @param[in] cfg Pointer to UDC endpoint configuration + * + * @return Endpoint size + */ +static inline uint16_t udc_mps_ep_size(const struct udc_ep_config *const cfg) +{ + return USB_MPS_EP_SIZE(cfg->mps); +} + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/udc_buf.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/udc_buf.h new file mode 100644 index 00000000..6e1ca15e --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/udc_buf.h @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief Buffers for USB device support + */ + +#ifndef ZEPHYR_INCLUDE_UDC_BUF_H +#define ZEPHYR_INCLUDE_UDC_BUF_H + +#include +#include + +#if defined(CONFIG_DCACHE) && !defined(CONFIG_UDC_BUF_FORCE_NOCACHE) +/* + * Here we try to get DMA-safe buffers, but we lack a consistent source of + * information about data cache properties, such as line cache size, and a + * consistent source of information about what part of memory is DMA'able. + * For now, we simply assume that all available memory is DMA'able and use + * Kconfig option DCACHE_LINE_SIZE for alignment and granularity. + */ +#define Z_UDC_BUF_ALIGN CONFIG_DCACHE_LINE_SIZE +#define Z_UDC_BUF_GRANULARITY CONFIG_DCACHE_LINE_SIZE +#else +/* + * Default alignment and granularity to pointer size if the platform does not + * have a data cache or buffers are placed in nocache memory region. + */ +#define Z_UDC_BUF_ALIGN sizeof(void *) +#define Z_UDC_BUF_GRANULARITY sizeof(void *) +#endif + +/** + * @brief Buffer macros and definitions used in USB device support + * @defgroup udc_buf Buffer macros and definitions used in USB device support + * @ingroup usb + * @since 4.0 + * @version 0.1.0 + * @{ + */ + +/** Buffer alignment required by the UDC driver */ +#define UDC_BUF_ALIGN Z_UDC_BUF_ALIGN + +/** Buffer granularity required by the UDC driver */ +#define UDC_BUF_GRANULARITY Z_UDC_BUF_GRANULARITY + +/** + * @brief Define a UDC driver-compliant static buffer + * + * This macro should be used if the application defines its own buffers to be + * used for USB transfers. + * + * @param name Buffer name + * @param size Buffer size + */ +#define UDC_STATIC_BUF_DEFINE(name, size) \ + static uint8_t __aligned(UDC_BUF_ALIGN) name[ROUND_UP(size, UDC_BUF_GRANULARITY)]; + +/** + * @brief Verify that the buffer is aligned as required by the UDC driver + * + * @see IS_ALIGNED + * + * @param buf Buffer pointer + */ +#define IS_UDC_ALIGNED(buf) IS_ALIGNED(buf, UDC_BUF_ALIGN) + +/** + * @cond INTERNAL_HIDDEN + */ +#define UDC_HEAP_DEFINE(name, bytes, in_section) \ + uint8_t in_section __aligned(UDC_BUF_ALIGN) \ + kheap_##name[MAX(bytes, Z_HEAP_MIN_SIZE)]; \ + STRUCT_SECTION_ITERABLE(k_heap, name) = { \ + .heap = { \ + .init_mem = kheap_##name, \ + .init_bytes = MAX(bytes, Z_HEAP_MIN_SIZE), \ + }, \ + } + +#define UDC_K_HEAP_DEFINE(name, size) \ + COND_CODE_1(CONFIG_UDC_BUF_FORCE_NOCACHE, \ + (UDC_HEAP_DEFINE(name, size, __nocache)), \ + (UDC_HEAP_DEFINE(name, size, __noinit))) + +extern const struct net_buf_data_cb net_buf_dma_cb; +/** @endcond */ + +/** + * @brief Define a new pool for UDC buffers with variable-size payloads + * + * This macro is similar to `NET_BUF_POOL_VAR_DEFINE`, but provides buffers + * with alignment and granularity suitable for use by UDC driver. + * + * @see NET_BUF_POOL_VAR_DEFINE + * + * @param pname Name of the pool variable. + * @param count Number of buffers in the pool. + * @param size Maximum data payload per buffer. + * @param ud_size User data space to reserve per buffer. + * @param fdestroy Optional destroy callback when buffer is freed. + */ +#define UDC_BUF_POOL_VAR_DEFINE(pname, count, size, ud_size, fdestroy) \ + _NET_BUF_ARRAY_DEFINE(pname, count, ud_size); \ + UDC_K_HEAP_DEFINE(net_buf_mem_pool_##pname, size); \ + static const struct net_buf_data_alloc net_buf_data_alloc_##pname = { \ + .cb = &net_buf_dma_cb, \ + .alloc_data = &net_buf_mem_pool_##pname, \ + .max_alloc_size = 0, \ + }; \ + static STRUCT_SECTION_ITERABLE(net_buf_pool, pname) = \ + NET_BUF_POOL_INITIALIZER(pname, &net_buf_data_alloc_##pname, \ + _net_buf_##pname, count, ud_size, \ + fdestroy) + +/** + * @brief Define a new pool for UDC buffers based on fixed-size data + * + * This macro is similar to `NET_BUF_POOL_DEFINE`, but provides buffers + * with alignment and granularity suitable for use by UDC driver. + * + * @see NET_BUF_POOL_DEFINE + + * @param pname Name of the pool variable. + * @param count Number of buffers in the pool. + * @param size Maximum data payload per buffer. + * @param ud_size User data space to reserve per buffer. + * @param fdestroy Optional destroy callback when buffer is freed. + */ +#define UDC_BUF_POOL_DEFINE(pname, count, size, ud_size, fdestroy) \ + _NET_BUF_ARRAY_DEFINE(pname, count, ud_size); \ + BUILD_ASSERT((UDC_BUF_GRANULARITY) % (UDC_BUF_ALIGN) == 0, \ + "Code assumes granurality is multiple of alignment"); \ + static uint8_t __nocache __aligned(UDC_BUF_ALIGN) \ + net_buf_data_##pname[count][ROUND_UP(size, UDC_BUF_GRANULARITY)];\ + static const struct net_buf_pool_fixed net_buf_fixed_##pname = { \ + .data_pool = (uint8_t *)net_buf_data_##pname, \ + }; \ + static const struct net_buf_data_alloc net_buf_fixed_alloc_##pname = { \ + .cb = &net_buf_fixed_cb, \ + .alloc_data = (void *)&net_buf_fixed_##pname, \ + .max_alloc_size = ROUND_UP(size, UDC_BUF_GRANULARITY), \ + }; \ + static STRUCT_SECTION_ITERABLE(net_buf_pool, pname) = \ + NET_BUF_POOL_INITIALIZER(pname, &net_buf_fixed_alloc_##pname, \ + _net_buf_##pname, count, ud_size, \ + fdestroy) + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_UDC_BUF_H */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/uhc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/uhc.h index 5f499af6..a2224d24 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/uhc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/uhc.h @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include @@ -22,6 +22,8 @@ * @brief USB host controller (UHC) driver API * @defgroup uhc_api USB host controller driver API * @ingroup io_interfaces + * @since 3.3 + * @version 0.1.0 * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/usb_dc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/usb_dc.h index 1d7762f8..7c5506d7 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/usb_dc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb/usb_dc.h @@ -22,6 +22,8 @@ /** * @brief USB Device Controller API * @defgroup _usb_device_controller_api USB Device Controller API + * @since 1.5 + * @version 1.0.0 * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb_c/tcpci_priv.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb_c/tcpci_priv.h new file mode 100644 index 00000000..8c5d67f5 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb_c/tcpci_priv.h @@ -0,0 +1,119 @@ +/* + * Copyright 2024 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief Helper functions to use by the TCPCI-compliant drivers + * + * This file contains generic TCPCI functions that may be used by the drivers to TCPCI-compliant + * devices that want to implement vendor-specific functionality without the need to reimplement the + * TCPCI generic functionality and register operations. + */ + +#ifndef ZEPHYR_INCLUDE_DRIVERS_USBC_TCPCI_PRIV_H_ +#define ZEPHYR_INCLUDE_DRIVERS_USBC_TCPCI_PRIV_H_ + +#include +#include +#include + +/** + * @brief Structure used to bind the register address to name in registers dump + */ +struct tcpci_reg_dump_map { + /** Address of I2C device register */ + uint8_t addr; + /** Human readable name of register */ + const char *name; + /** Size in bytes of the register */ + uint8_t size; +}; + +/** Size of the array containing the standard registers used by tcpci dump command */ +#define TCPCI_STD_REGS_SIZE 38 +/** + * @brief Array containing the standard TCPCI registers list. + * If the TCPC driver contain any vendor-specific registers, it may override the TCPCI dump_std_reg + * function tp dump them and should also dump the standard registers using this array. + * + */ +extern const struct tcpci_reg_dump_map tcpci_std_regs[TCPCI_STD_REGS_SIZE]; + +/** + * @brief Function to read the 8-bit register of TCPCI device + * + * @param bus I2C bus + * @param reg Address of TCPCI register + * @param value Pointer to variable that will store the register value + * @return int Status of I2C operation, 0 in case of success + */ +int tcpci_read_reg8(const struct i2c_dt_spec *bus, uint8_t reg, uint8_t *value); + +/** + * @brief Function to write a value to the 8-bit register of TCPCI device + * + * @param bus I2C bus + * @param reg Address of TCPCI register + * @param value Value that will be written to the device register + * @return int Status of I2C operation, 0 in case of success + */ +int tcpci_write_reg8(const struct i2c_dt_spec *bus, uint8_t reg, uint8_t value); + +/** + * @brief Function to read and update part of the 8-bit register of TCPCI device + * The function is NOT performing this operation atomically. + * + * @param bus I2C bus + * @param reg Address of TCPCI register + * @param mask Bitmask specifying which bits of the device register will be modified + * @param value Value that will be written to the device register after being ANDed with mask + * @return int Status of I2C operation, 0 in case of success + */ +int tcpci_update_reg8(const struct i2c_dt_spec *bus, uint8_t reg, uint8_t mask, uint8_t value); + +/** + * @brief Function to read the 16-bit register of TCPCI device + * + * @param bus I2C bus + * @param reg Address of TCPCI register + * @param value Pointer to variable that will store the register value + * @return int Status of I2C operation, 0 in case of success + */ +int tcpci_read_reg16(const struct i2c_dt_spec *bus, uint8_t reg, uint16_t *value); + +/** + * @brief Function to write a value to the 16-bit register of TCPCI device + * + * @param bus I2C bus + * @param reg Address of TCPCI register + * @param value Value that will be written to the device register + * @return int Status of I2C operation, 0 in case of success + */ +int tcpci_write_reg16(const struct i2c_dt_spec *bus, uint8_t reg, uint16_t value); + +/** + * @brief Function that converts the TCPCI alert register to the tcpc_alert enum + * The hard reset value takes priority, where the rest are returned in the bit order from least + * significant to most significant. + * + * @param reg Value of the TCPCI alert register. This parameter must have value other than zero. + * @return enum tcpc_alert Value of one of the flags being set in the alert register + */ +enum tcpc_alert tcpci_alert_reg_to_enum(uint16_t reg); + +/** + * @brief Function that reads the CC status registers and converts read values to enums + * representing voltages state and partner detection status. + * + * @param bus I2C bus + * @param cc1 pointer to variable where detected CC1 voltage state will be stored + * @param cc2 pointer to variable where detected CC2 voltage state will be stored + * @return -EINVAL if cc1 or cc2 pointer is NULL + * @return int Status of I2C operation, 0 in case of success + */ +int tcpci_tcpm_get_cc(const struct i2c_dt_spec *bus, enum tc_cc_voltage_state *cc1, + enum tc_cc_voltage_state *cc2); + +#endif /* ZEPHYR_INCLUDE_DRIVERS_USBC_TCPCI_PRIV_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb_c/usbc_tcpc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb_c/usbc_tcpc.h index 7b94e3f9..33daa314 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb_c/usbc_tcpc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/usb_c/usbc_tcpc.h @@ -118,17 +118,17 @@ struct tcpc_chip_info { }; }; -typedef int (*tcpc_vconn_control_cb_t)(const struct device *dev, - enum tc_cc_polarity pol, bool enable); -typedef int (*tcpc_vconn_discharge_cb_t)(const struct device *dev, - enum tc_cc_polarity pol, bool enable); +typedef int (*tcpc_vconn_control_cb_t)(const struct device *dev, enum tc_cc_polarity pol, + bool enable); +typedef int (*tcpc_vconn_discharge_cb_t)(const struct device *dev, enum tc_cc_polarity pol, + bool enable); typedef void (*tcpc_alert_handler_cb_t)(const struct device *dev, void *data, - enum tcpc_alert alert); + enum tcpc_alert alert); __subsystem struct tcpc_driver_api { int (*init)(const struct device *dev); int (*get_cc)(const struct device *dev, enum tc_cc_voltage_state *cc1, - enum tc_cc_voltage_state *cc2); + enum tc_cc_voltage_state *cc2); int (*select_rp_value)(const struct device *dev, enum tc_rp_value rp); int (*get_rp_value)(const struct device *dev, enum tc_rp_value *rp); int (*set_cc)(const struct device *dev, enum tc_cc_pull pull); @@ -137,7 +137,7 @@ __subsystem struct tcpc_driver_api { int (*vconn_discharge)(const struct device *dev, bool enable); int (*set_vconn)(const struct device *dev, bool enable); int (*set_roles)(const struct device *dev, enum tc_power_role power_role, - enum tc_data_role data_role); + enum tc_data_role data_role); int (*get_rx_pending_msg)(const struct device *dev, struct pd_msg *msg); int (*set_rx_enable)(const struct device *dev, bool enable); int (*set_cc_polarity)(const struct device *dev, enum tc_cc_polarity polarity); @@ -145,11 +145,11 @@ __subsystem struct tcpc_driver_api { int (*dump_std_reg)(const struct device *dev); void (*alert_handler_cb)(const struct device *dev, void *data, enum tcpc_alert alert); int (*get_status_register)(const struct device *dev, enum tcpc_status_reg reg, - int32_t *status); + uint32_t *status); int (*clear_status_register)(const struct device *dev, enum tcpc_status_reg reg, - uint32_t mask); + uint32_t mask); int (*mask_status_register)(const struct device *dev, enum tcpc_status_reg reg, - uint32_t mask); + uint32_t mask); int (*set_debug_accessory)(const struct device *dev, bool enable); int (*set_debug_detach)(const struct device *dev); int (*set_drp_toggle)(const struct device *dev, bool enable); @@ -162,7 +162,7 @@ __subsystem struct tcpc_driver_api { int (*sop_prime_enable)(const struct device *dev, bool enable); int (*set_bist_test_mode)(const struct device *dev, bool enable); int (*set_alert_handler_cb)(const struct device *dev, tcpc_alert_handler_cb_t handler, - void *data); + void *data); }; /** @@ -170,15 +170,13 @@ __subsystem struct tcpc_driver_api { */ static inline int tcpc_is_cc_rp(enum tc_cc_voltage_state cc) { - return (cc == TC_CC_VOLT_RP_DEF) || (cc == TC_CC_VOLT_RP_1A5) || - (cc == TC_CC_VOLT_RP_3A0); + return (cc == TC_CC_VOLT_RP_DEF) || (cc == TC_CC_VOLT_RP_1A5) || (cc == TC_CC_VOLT_RP_3A0); } /** * @brief Returns true if both CC lines are completely open */ -static inline int tcpc_is_cc_open(enum tc_cc_voltage_state cc1, - enum tc_cc_voltage_state cc2) +static inline int tcpc_is_cc_open(enum tc_cc_voltage_state cc1, enum tc_cc_voltage_state cc2) { return (cc1 < TC_CC_VOLT_RD) && (cc2 < TC_CC_VOLT_RD); } @@ -186,8 +184,7 @@ static inline int tcpc_is_cc_open(enum tc_cc_voltage_state cc1, /** * @brief Returns true if we detect the port partner is a snk debug accessory */ -static inline int tcpc_is_cc_snk_dbg_acc(enum tc_cc_voltage_state cc1, - enum tc_cc_voltage_state cc2) +static inline int tcpc_is_cc_snk_dbg_acc(enum tc_cc_voltage_state cc1, enum tc_cc_voltage_state cc2) { return cc1 == TC_CC_VOLT_RD && cc2 == TC_CC_VOLT_RD; } @@ -195,8 +192,7 @@ static inline int tcpc_is_cc_snk_dbg_acc(enum tc_cc_voltage_state cc1, /** * @brief Returns true if we detect the port partner is a src debug accessory */ -static inline int tcpc_is_cc_src_dbg_acc(enum tc_cc_voltage_state cc1, - enum tc_cc_voltage_state cc2) +static inline int tcpc_is_cc_src_dbg_acc(enum tc_cc_voltage_state cc1, enum tc_cc_voltage_state cc2) { return tcpc_is_cc_rp(cc1) && tcpc_is_cc_rp(cc2); } @@ -204,8 +200,7 @@ static inline int tcpc_is_cc_src_dbg_acc(enum tc_cc_voltage_state cc1, /** * @brief Returns true if the port partner is an audio accessory */ -static inline int tcpc_is_cc_audio_acc(enum tc_cc_voltage_state cc1, - enum tc_cc_voltage_state cc2) +static inline int tcpc_is_cc_audio_acc(enum tc_cc_voltage_state cc1, enum tc_cc_voltage_state cc2) { return cc1 == TC_CC_VOLT_RA && cc2 == TC_CC_VOLT_RA; } @@ -222,8 +217,7 @@ static inline int tcpc_is_cc_at_least_one_rd(enum tc_cc_voltage_state cc1, /** * @brief Returns true if the port partner is presenting Rd on only one CC line */ -static inline int tcpc_is_cc_only_one_rd(enum tc_cc_voltage_state cc1, - enum tc_cc_voltage_state cc2) +static inline int tcpc_is_cc_only_one_rd(enum tc_cc_voltage_state cc1, enum tc_cc_voltage_state cc2) { return tcpc_is_cc_at_least_one_rd(cc1, cc2) && cc1 != cc2; } @@ -239,11 +233,9 @@ static inline int tcpc_is_cc_only_one_rd(enum tc_cc_voltage_state cc1, */ static inline int tcpc_init(const struct device *dev) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; - __ASSERT(api->init != NULL, - "Callback pointer should not be NULL"); + __ASSERT(api->init != NULL, "Callback pointer should not be NULL"); return api->init(dev); } @@ -259,12 +251,10 @@ static inline int tcpc_init(const struct device *dev) * @retval -EIO on failure * @retval -ENOSYS if not implemented */ -static inline int tcpc_get_cc(const struct device *dev, - enum tc_cc_voltage_state *cc1, +static inline int tcpc_get_cc(const struct device *dev, enum tc_cc_voltage_state *cc1, enum tc_cc_voltage_state *cc2) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->get_cc == NULL) { return -ENOSYS; @@ -285,8 +275,7 @@ static inline int tcpc_get_cc(const struct device *dev, */ static inline int tcpc_select_rp_value(const struct device *dev, enum tc_rp_value rp) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->select_rp_value == NULL) { return -ENOSYS; @@ -307,8 +296,7 @@ static inline int tcpc_select_rp_value(const struct device *dev, enum tc_rp_valu */ static inline int tcpc_get_rp_value(const struct device *dev, enum tc_rp_value *rp) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->get_rp_value == NULL) { return -ENOSYS; @@ -328,11 +316,9 @@ static inline int tcpc_get_rp_value(const struct device *dev, enum tc_rp_value * */ static inline int tcpc_set_cc(const struct device *dev, enum tc_cc_pull pull) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; - __ASSERT(api->set_cc != NULL, - "Callback pointer should not be NULL"); + __ASSERT(api->set_cc != NULL, "Callback pointer should not be NULL"); return api->set_cc(dev, pull); } @@ -347,16 +333,13 @@ static inline int tcpc_set_cc(const struct device *dev, enum tc_cc_pull pull) * @param dev Runtime device structure * @param vconn_cb pointer to the callback function that controls vconn */ -static inline void tcpc_set_vconn_cb(const struct device *dev, - tcpc_vconn_control_cb_t vconn_cb) +static inline void tcpc_set_vconn_cb(const struct device *dev, tcpc_vconn_control_cb_t vconn_cb) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; - __ASSERT(api->set_vconn_cb != NULL, - "Callback pointer should not be NULL"); + __ASSERT(api->set_vconn_cb != NULL, "Callback pointer should not be NULL"); - return api->set_vconn_cb(dev, vconn_cb); + api->set_vconn_cb(dev, vconn_cb); } /** @@ -370,15 +353,13 @@ static inline void tcpc_set_vconn_cb(const struct device *dev, * @param cb pointer to the callback function that discharges vconn */ static inline void tcpc_set_vconn_discharge_cb(const struct device *dev, - tcpc_vconn_discharge_cb_t cb) + tcpc_vconn_discharge_cb_t cb) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; - __ASSERT(api->set_vconn_discharge_cb != NULL, - "Callback pointer should not be NULL"); + __ASSERT(api->set_vconn_discharge_cb != NULL, "Callback pointer should not be NULL"); - return api->set_vconn_discharge_cb(dev, cb); + api->set_vconn_discharge_cb(dev, cb); } /** @@ -396,8 +377,7 @@ static inline void tcpc_set_vconn_discharge_cb(const struct device *dev, */ static inline int tcpc_vconn_discharge(const struct device *dev, bool enable) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->vconn_discharge == NULL) { return -ENOSYS; @@ -421,8 +401,7 @@ static inline int tcpc_vconn_discharge(const struct device *dev, bool enable) */ static inline int tcpc_set_vconn(const struct device *dev, bool enable) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->set_vconn == NULL) { return -ENOSYS; @@ -444,12 +423,10 @@ static inline int tcpc_set_vconn(const struct device *dev, bool enable) * @retval -EIO on failure * @retval -ENOSYS if not implemented */ -static inline int tcpc_set_roles(const struct device *dev, - enum tc_power_role power_role, +static inline int tcpc_set_roles(const struct device *dev, enum tc_power_role power_role, enum tc_data_role data_role) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->set_roles == NULL) { return -ENOSYS; @@ -493,8 +470,7 @@ static inline int tcpc_get_rx_pending_msg(const struct device *dev, struct pd_ms */ static inline int tcpc_set_rx_enable(const struct device *dev, bool enable) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->set_rx_enable == NULL) { return -ENOSYS; @@ -512,14 +488,11 @@ static inline int tcpc_set_rx_enable(const struct device *dev, bool enable) * @retval 0 on success * @retval -EIO on failure */ -static inline int tcpc_set_cc_polarity(const struct device *dev, - enum tc_cc_polarity polarity) +static inline int tcpc_set_cc_polarity(const struct device *dev, enum tc_cc_polarity polarity) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; - __ASSERT(api->set_cc_polarity != NULL, - "Callback pointer should not be NULL"); + __ASSERT(api->set_cc_polarity != NULL, "Callback pointer should not be NULL"); return api->set_cc_polarity(dev, polarity); } @@ -534,11 +507,9 @@ static inline int tcpc_set_cc_polarity(const struct device *dev, * @retval -EIO on failure * @retval -ENOSYS if not implemented */ -static inline int tcpc_transmit_data(const struct device *dev, - struct pd_msg *msg) +static inline int tcpc_transmit_data(const struct device *dev, struct pd_msg *msg) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->transmit_data == NULL) { return -ENOSYS; @@ -558,8 +529,7 @@ static inline int tcpc_transmit_data(const struct device *dev, */ static inline int tcpc_dump_std_reg(const struct device *dev) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->dump_std_reg == NULL) { return -ENOSYS; @@ -582,14 +552,11 @@ static inline int tcpc_dump_std_reg(const struct device *dev) * @retval -EINVAL on failure */ static inline int tcpc_set_alert_handler_cb(const struct device *dev, - tcpc_alert_handler_cb_t handler, - void *data) + tcpc_alert_handler_cb_t handler, void *data) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; - __ASSERT(api->set_alert_handler_cb != NULL, - "Callback pointer should not be NULL"); + __ASSERT(api->set_alert_handler_cb != NULL, "Callback pointer should not be NULL"); return api->set_alert_handler_cb(dev, handler, data); } @@ -605,12 +572,10 @@ static inline int tcpc_set_alert_handler_cb(const struct device *dev, * @retval -EIO on failure * @retval -ENOSYS if not implemented */ -static inline int tcpc_get_status_register(const struct device *dev, - enum tcpc_status_reg reg, - int32_t *status) +static inline int tcpc_get_status_register(const struct device *dev, enum tcpc_status_reg reg, + uint32_t *status) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->get_status_register == NULL) { return -ENOSYS; @@ -631,12 +596,10 @@ static inline int tcpc_get_status_register(const struct device *dev, * @retval -EIO on failure * @retval -ENOSYS if not implemented */ -static inline int tcpc_clear_status_register(const struct device *dev, - enum tcpc_status_reg reg, +static inline int tcpc_clear_status_register(const struct device *dev, enum tcpc_status_reg reg, uint32_t mask) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->clear_status_register == NULL) { return -ENOSYS; @@ -657,12 +620,10 @@ static inline int tcpc_clear_status_register(const struct device *dev, * @retval -EIO on failure * @retval -ENOSYS if not implemented */ -static inline int tcpc_mask_status_register(const struct device *dev, - enum tcpc_status_reg reg, +static inline int tcpc_mask_status_register(const struct device *dev, enum tcpc_status_reg reg, uint32_t mask) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->mask_status_register == NULL) { return -ENOSYS; @@ -681,11 +642,9 @@ static inline int tcpc_mask_status_register(const struct device *dev, * @retval -EIO on failure * @retval -ENOSYS if not implemented */ -static inline int tcpc_set_debug_accessory(const struct device *dev, - bool enable) +static inline int tcpc_set_debug_accessory(const struct device *dev, bool enable) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->set_debug_accessory == NULL) { return -ENOSYS; @@ -705,8 +664,7 @@ static inline int tcpc_set_debug_accessory(const struct device *dev, */ static inline int tcpc_set_debug_detach(const struct device *dev) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->set_debug_detach == NULL) { return -ENOSYS; @@ -727,8 +685,7 @@ static inline int tcpc_set_debug_detach(const struct device *dev) */ static inline int tcpc_set_drp_toggle(const struct device *dev, bool enable) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->set_drp_toggle == NULL) { return -ENOSYS; @@ -748,8 +705,7 @@ static inline int tcpc_set_drp_toggle(const struct device *dev, bool enable) */ static inline int tcpc_get_snk_ctrl(const struct device *dev) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->get_snk_ctrl == NULL) { return -ENOSYS; @@ -788,8 +744,7 @@ static inline int tcpc_set_snk_ctrl(const struct device *dev, bool enable) */ static inline int tcpc_get_src_ctrl(const struct device *dev) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->get_src_ctrl == NULL) { return -ENOSYS; @@ -828,11 +783,9 @@ static inline int tcpc_set_src_ctrl(const struct device *dev, bool enable) * @retval -EIO on failure * @retval -ENOSYS if not implemented */ -static inline int tcpc_set_bist_test_mode(const struct device *dev, - bool enable) +static inline int tcpc_set_bist_test_mode(const struct device *dev, bool enable) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->set_bist_test_mode == NULL) { return -ENOSYS; @@ -851,11 +804,9 @@ static inline int tcpc_set_bist_test_mode(const struct device *dev, * @retval -EIO on failure * @retval -ENOSYS if not implemented */ -static inline int tcpc_get_chip_info(const struct device *dev, - struct tcpc_chip_info *chip_info) +static inline int tcpc_get_chip_info(const struct device *dev, struct tcpc_chip_info *chip_info) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->get_chip_info == NULL) { return -ENOSYS; @@ -874,11 +825,9 @@ static inline int tcpc_get_chip_info(const struct device *dev, * @retval -EIO on failure * @retval -ENOSYS if not implemented */ -static inline int tcpc_set_low_power_mode(const struct device *dev, - bool enable) +static inline int tcpc_set_low_power_mode(const struct device *dev, bool enable) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->set_low_power_mode == NULL) { return -ENOSYS; @@ -897,11 +846,9 @@ static inline int tcpc_set_low_power_mode(const struct device *dev, * @retval -EIO on failure * @retval -ENOSYS if not implemented */ -static inline int tcpc_sop_prime_enable(const struct device *dev, - bool enable) +static inline int tcpc_sop_prime_enable(const struct device *dev, bool enable) { - const struct tcpc_driver_api *api = - (const struct tcpc_driver_api *)dev->api; + const struct tcpc_driver_api *api = (const struct tcpc_driver_api *)dev->api; if (api->sop_prime_enable == NULL) { return -ENOSYS; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/video-controls.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/video-controls.h index 7912ab0d..b67e5a87 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/video-controls.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/video-controls.h @@ -1,72 +1,162 @@ -/** - * @file - * - * @brief Public APIs for Video. - */ - /* * Copyright (c) 2019 Linaro Limited. + * Copyright (c) 2024 tinyVision.ai Inc. * * SPDX-License-Identifier: Apache-2.0 */ #ifndef ZEPHYR_INCLUDE_VIDEO_CONTROLS_H_ #define ZEPHYR_INCLUDE_VIDEO_CONTROLS_H_ +/** + * @file + * + * @brief Public APIs for Video. + */ + /** * @brief Video controls * @defgroup video_controls Video Controls * @ingroup io_interfaces + * + * The Video control IDs (CIDs) are introduced with the same name as + * Linux V4L2 subsystem and under the same class. This facilitates + * inter-operability and debugging devices end-to-end across Linux and + * Zephyr. + * + * This list is maintained compatible to the Linux kernel definitions in + * @c linux/include/uapi/linux/v4l2-controls.h + * * @{ */ -#include -#include -#include - -#include - #ifdef __cplusplus extern "C" { #endif /** - * @name Control classes + * @name Base class control IDs + * @{ + */ +#define VIDEO_CID_BASE 0x00980900 + +/** Amount of perceived light of the image, the luma (Y') value. */ +#define VIDEO_CID_BRIGHTNESS (VIDEO_CID_BASE + 0) + +/** Amount of difference between the bright colors and dark colors. */ +#define VIDEO_CID_CONTRAST (VIDEO_CID_BASE + 1) + +/** Colorfulness of the image while preserving its brightness */ +#define VIDEO_CID_SATURATION (VIDEO_CID_BASE + 2) + +/** Shift in the tint of every colors, clockwise in a RGB color wheel */ +#define VIDEO_CID_HUE (VIDEO_CID_BASE + 3) + +/** Amount of time an image sensor is exposed to light, affecting the brightness */ +#define VIDEO_CID_EXPOSURE (VIDEO_CID_BASE + 17) + +/** Amount of amplification performed to each pixel electrical signal, affecting the brightness */ +#define VIDEO_CID_GAIN (VIDEO_CID_BASE + 19) + +/** Flip the image horizontally: the left side becomes the right side */ +#define VIDEO_CID_HFLIP (VIDEO_CID_BASE + 20) + +/** Flip the image vertically: the top side becomes the bottom side */ +#define VIDEO_CID_VFLIP (VIDEO_CID_BASE + 21) + +/** Frequency of the power line to compensate for, avoiding flicker due to artificial lighting */ +#define VIDEO_CID_POWER_LINE_FREQUENCY (VIDEO_CID_BASE + 24) +enum video_power_line_frequency { + VIDEO_CID_POWER_LINE_FREQUENCY_DISABLED = 0, + VIDEO_CID_POWER_LINE_FREQUENCY_50HZ = 1, + VIDEO_CID_POWER_LINE_FREQUENCY_60HZ = 2, + VIDEO_CID_POWER_LINE_FREQUENCY_AUTO = 3, +}; + +/** Balance of colors in direction of blue (cold) or red (warm) */ +#define VIDEO_CID_WHITE_BALANCE_TEMPERATURE (VIDEO_CID_BASE + 26) + +/** + * @} + */ + +/** + * @name Stateful codec controls IDs + * @{ + */ +#define VIDEO_CID_CODEC_CLASS_BASE 0x00990900 + +/** + * @} + */ + +/** + * @name Camera class controls IDs + * @{ + */ +#define VIDEO_CID_CAMERA_CLASS_BASE 0x009a0900 + +/** Amount of optical zoom applied through to the camera optics */ +#define VIDEO_CID_ZOOM_ABSOLUTE (VIDEO_CID_CAMERA_CLASS_BASE + 13) + +/** + * @} + */ + +/** + * @name Camera Flash class control IDs + * @{ + */ +#define VIDEO_CID_FLASH_CLASS_BASE 0x009c0900 + +/** + * @} + */ + +/** + * @name JPEG class control IDs * @{ */ -#define VIDEO_CTRL_CLASS_GENERIC 0x00000000 /**< Generic class controls */ -#define VIDEO_CTRL_CLASS_CAMERA 0x00010000 /**< Camera class controls */ -#define VIDEO_CTRL_CLASS_MPEG 0x00020000 /**< MPEG-compression controls */ -#define VIDEO_CTRL_CLASS_JPEG 0x00030000 /**< JPEG-compression controls */ -#define VIDEO_CTRL_CLASS_VENDOR 0xFFFF0000 /**< Vendor-specific class controls */ +#define VIDEO_CID_JPEG_CLASS_BASE 0x009d0900 + +/** Quality (Q) factor of the JPEG algorithm, also increasing the data size */ +#define VIDEO_CID_JPEG_COMPRESSION_QUALITY (VIDEO_CID_JPEG_CLASS_BASE + 3) + /** * @} */ /** - * @name Generic class control IDs + * @name Image Source class control IDs * @{ */ -/** Mirror the picture horizontally */ -#define VIDEO_CID_HFLIP (VIDEO_CTRL_CLASS_GENERIC + 0) -/** Mirror the picture vertically */ -#define VIDEO_CID_VFLIP (VIDEO_CTRL_CLASS_GENERIC + 1) +#define VIDEO_CID_IMAGE_SOURCE_CLASS_BASE 0x009e0900 + /** * @} */ /** - * @name Camera class control IDs + * @name Image Processing class control IDs * @{ */ -#define VIDEO_CID_CAMERA_EXPOSURE (VIDEO_CTRL_CLASS_CAMERA + 0) -#define VIDEO_CID_CAMERA_GAIN (VIDEO_CTRL_CLASS_CAMERA + 1) -#define VIDEO_CID_CAMERA_ZOOM (VIDEO_CTRL_CLASS_CAMERA + 2) -#define VIDEO_CID_CAMERA_BRIGHTNESS (VIDEO_CTRL_CLASS_CAMERA + 3) -#define VIDEO_CID_CAMERA_SATURATION (VIDEO_CTRL_CLASS_CAMERA + 4) -#define VIDEO_CID_CAMERA_WHITE_BAL (VIDEO_CTRL_CLASS_CAMERA + 5) -#define VIDEO_CID_CAMERA_CONTRAST (VIDEO_CTRL_CLASS_CAMERA + 6) -#define VIDEO_CID_CAMERA_COLORBAR (VIDEO_CTRL_CLASS_CAMERA + 7) -#define VIDEO_CID_CAMERA_QUALITY (VIDEO_CTRL_CLASS_CAMERA + 8) +#define VIDEO_CID_IMAGE_PROC_CLASS_BASE 0x009f0900 + +/** Pixel rate (pixels/second) in the device's pixel array. This control is read-only. */ +#define VIDEO_CID_PIXEL_RATE (VIDEO_CID_IMAGE_PROC_CLASS_BASE + 2) + +/** Selection of the type of test pattern to represent */ +#define VIDEO_CID_TEST_PATTERN (VIDEO_CID_IMAGE_PROC_CLASS_BASE + 3) + +/** + * @} + */ + +/** + * @name Vendor-specific class control IDs + * @{ + */ +#define VIDEO_CID_PRIVATE_BASE 0x08000000 + /** * @} */ @@ -75,9 +165,6 @@ extern "C" { } #endif -/* Controls */ - - /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/video.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/video.h index 84b55583..959083a4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/video.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/video.h @@ -16,7 +16,7 @@ * @brief Video Interface * @defgroup video_interface Video Interface * @since 2.1 - * @version 1.0.0 + * @version 1.1.0 * @ingroup io_interfaces * @{ */ @@ -27,12 +27,15 @@ #include -#include - #ifdef __cplusplus extern "C" { #endif +/* + * Flag used by @ref video_caps structure to indicate endpoint operates on + * buffers the size of the video frame + */ +#define LINE_COUNT_HEIGHT (-1) /** * @struct video_format @@ -57,7 +60,6 @@ struct video_format { uint32_t pitch; }; - /** * @struct video_format_cap * @brief Video format capability @@ -94,6 +96,22 @@ struct video_caps { * the stream. */ uint8_t min_vbuf_count; + /** Denotes minimum line count of a video buffer that this endpoint + * can fill or process. Each line is expected to consume the number + * of bytes the selected video format's pitch uses, so the video + * buffer must be at least `pitch` * `min_line_count` bytes. + * `LINE_COUNT_HEIGHT` is a special value, indicating the endpoint + * only supports video buffers with at least enough bytes to store + * a full video frame + */ + int16_t min_line_count; + /** + * Denotes maximum line count of a video buffer that this endpoint + * can fill or process. Similar constraints to `min_line_count`, + * but `LINE_COUNT_HEIGHT` indicates that the endpoint will never + * fill or process more than a full video frame in one video buffer. + */ + int16_t max_line_count; }; /** @@ -116,6 +134,72 @@ struct video_buffer { * endpoints. */ uint32_t timestamp; + /** Line offset within frame this buffer represents, from the + * beginning of the frame. This offset is given in pixels, + * so `line_offset` * `pitch` provides offset from the start of + * the frame in bytes. + */ + uint16_t line_offset; +}; + +/** + * @brief video_frmival_type enum + * + * Supported frame interval type of a video device. + */ +enum video_frmival_type { + /** discrete frame interval type */ + VIDEO_FRMIVAL_TYPE_DISCRETE = 1, + /** stepwise frame interval type */ + VIDEO_FRMIVAL_TYPE_STEPWISE = 2, +}; + +/** + * @struct video_frmival + * @brief Video frame interval structure + * + * Used to describe a video frame interval. + */ +struct video_frmival { + /** numerator of the frame interval */ + uint32_t numerator; + /** denominator of the frame interval */ + uint32_t denominator; +}; + +/** + * @struct video_frmival_stepwise + * @brief Video frame interval stepwise structure + * + * Used to describe the video frame interval stepwise type. + */ +struct video_frmival_stepwise { + /** minimum frame interval in seconds */ + struct video_frmival min; + /** maximum frame interval in seconds */ + struct video_frmival max; + /** frame interval step size in seconds */ + struct video_frmival step; +}; + +/** + * @struct video_frmival_enum + * @brief Video frame interval enumeration structure + * + * Used to describe the supported video frame intervals of a given video format. + */ +struct video_frmival_enum { + /** frame interval index during enumeration */ + uint32_t index; + /** video format for which the query is made */ + const struct video_format *format; + /** frame interval type the device supports */ + enum video_frmival_type type; + /** the actual frame interval */ + union { + struct video_frmival discrete; + struct video_frmival_stepwise stepwise; + }; }; /** @@ -124,10 +208,14 @@ struct video_buffer { * Identify the video device endpoint. */ enum video_endpoint_id { - VIDEO_EP_NONE, - VIDEO_EP_ANY, - VIDEO_EP_IN, - VIDEO_EP_OUT, + /** Targets some part of the video device not bound to an endpoint */ + VIDEO_EP_NONE = -1, + /** Targets all input or output endpoints of the device */ + VIDEO_EP_ALL = -2, + /** Targets all input endpoints of the device: those consuming data */ + VIDEO_EP_IN = -3, + /** Targets all output endpoints of the device: those producing data */ + VIDEO_EP_OUT = -4, }; /** @@ -147,8 +235,7 @@ enum video_signal_result { * * See video_set_format() for argument descriptions. */ -typedef int (*video_api_set_format_t)(const struct device *dev, - enum video_endpoint_id ep, +typedef int (*video_api_set_format_t)(const struct device *dev, enum video_endpoint_id ep, struct video_format *fmt); /** @@ -157,18 +244,43 @@ typedef int (*video_api_set_format_t)(const struct device *dev, * * See video_get_format() for argument descriptions. */ -typedef int (*video_api_get_format_t)(const struct device *dev, - enum video_endpoint_id ep, +typedef int (*video_api_get_format_t)(const struct device *dev, enum video_endpoint_id ep, struct video_format *fmt); +/** + * @typedef video_api_set_frmival_t + * @brief Set video frame interval + * + * See video_set_frmival() for argument descriptions. + */ +typedef int (*video_api_set_frmival_t)(const struct device *dev, enum video_endpoint_id ep, + struct video_frmival *frmival); + +/** + * @typedef video_api_get_frmival_t + * @brief Get current video frame interval + * + * See video_get_frmival() for argument descriptions. + */ +typedef int (*video_api_get_frmival_t)(const struct device *dev, enum video_endpoint_id ep, + struct video_frmival *frmival); + +/** + * @typedef video_api_enum_frmival_t + * @brief List all supported frame intervals of a given format + * + * See video_enum_frmival() for argument descriptions. + */ +typedef int (*video_api_enum_frmival_t)(const struct device *dev, enum video_endpoint_id ep, + struct video_frmival_enum *fie); + /** * @typedef video_api_enqueue_t * @brief Enqueue a buffer in the driver’s incoming queue. * * See video_enqueue() for argument descriptions. */ -typedef int (*video_api_enqueue_t)(const struct device *dev, - enum video_endpoint_id ep, +typedef int (*video_api_enqueue_t)(const struct device *dev, enum video_endpoint_id ep, struct video_buffer *buf); /** @@ -177,10 +289,8 @@ typedef int (*video_api_enqueue_t)(const struct device *dev, * * See video_dequeue() for argument descriptions. */ -typedef int (*video_api_dequeue_t)(const struct device *dev, - enum video_endpoint_id ep, - struct video_buffer **buf, - k_timeout_t timeout); +typedef int (*video_api_dequeue_t)(const struct device *dev, enum video_endpoint_id ep, + struct video_buffer **buf, k_timeout_t timeout); /** * @typedef video_api_flush_t @@ -189,9 +299,7 @@ typedef int (*video_api_dequeue_t)(const struct device *dev, * * See video_flush() for argument descriptions. */ -typedef int (*video_api_flush_t)(const struct device *dev, - enum video_endpoint_id ep, - bool cancel); +typedef int (*video_api_flush_t)(const struct device *dev, enum video_endpoint_id ep, bool cancel); /** * @typedef video_api_stream_start_t @@ -215,9 +323,7 @@ typedef int (*video_api_stream_stop_t)(const struct device *dev); * * See video_set_ctrl() for argument descriptions. */ -typedef int (*video_api_set_ctrl_t)(const struct device *dev, - unsigned int cid, - void *value); +typedef int (*video_api_set_ctrl_t)(const struct device *dev, unsigned int cid, void *value); /** * @typedef video_api_get_ctrl_t @@ -225,9 +331,7 @@ typedef int (*video_api_set_ctrl_t)(const struct device *dev, * * See video_get_ctrl() for argument descriptions. */ -typedef int (*video_api_get_ctrl_t)(const struct device *dev, - unsigned int cid, - void *value); +typedef int (*video_api_get_ctrl_t)(const struct device *dev, unsigned int cid, void *value); /** * @typedef video_api_get_caps_t @@ -235,8 +339,7 @@ typedef int (*video_api_get_ctrl_t)(const struct device *dev, * * See video_get_caps() for argument descriptions. */ -typedef int (*video_api_get_caps_t)(const struct device *dev, - enum video_endpoint_id ep, +typedef int (*video_api_get_caps_t)(const struct device *dev, enum video_endpoint_id ep, struct video_caps *caps); /** @@ -245,8 +348,7 @@ typedef int (*video_api_get_caps_t)(const struct device *dev, * * See video_set_signal() for argument descriptions. */ -typedef int (*video_api_set_signal_t)(const struct device *dev, - enum video_endpoint_id ep, +typedef int (*video_api_set_signal_t)(const struct device *dev, enum video_endpoint_id ep, struct k_poll_signal *signal); __subsystem struct video_driver_api { @@ -261,8 +363,11 @@ __subsystem struct video_driver_api { video_api_dequeue_t dequeue; video_api_flush_t flush; video_api_set_ctrl_t set_ctrl; - video_api_set_ctrl_t get_ctrl; + video_api_get_ctrl_t get_ctrl; video_api_set_signal_t set_signal; + video_api_set_frmival_t set_frmival; + video_api_get_frmival_t get_frmival; + video_api_enum_frmival_t enum_frmival; }; /** @@ -279,12 +384,10 @@ __subsystem struct video_driver_api { * @retval -ENOTSUP If format is not supported. * @retval -EIO General input / output error. */ -static inline int video_set_format(const struct device *dev, - enum video_endpoint_id ep, +static inline int video_set_format(const struct device *dev, enum video_endpoint_id ep, struct video_format *fmt) { - const struct video_driver_api *api = - (const struct video_driver_api *)dev->api; + const struct video_driver_api *api = (const struct video_driver_api *)dev->api; if (api->set_format == NULL) { return -ENOSYS; @@ -304,12 +407,10 @@ static inline int video_set_format(const struct device *dev, * * @retval pointer to video format */ -static inline int video_get_format(const struct device *dev, - enum video_endpoint_id ep, +static inline int video_get_format(const struct device *dev, enum video_endpoint_id ep, struct video_format *fmt) { - const struct video_driver_api *api = - (const struct video_driver_api *)dev->api; + const struct video_driver_api *api = (const struct video_driver_api *)dev->api; if (api->get_format == NULL) { return -ENOSYS; @@ -318,6 +419,91 @@ static inline int video_get_format(const struct device *dev, return api->get_format(dev, ep, fmt); } +/** + * @brief Set video frame interval. + * + * Configure video device with a specific frame interval. + * + * Drivers must not return an error solely because the requested interval doesn’t match the device + * capabilities. They must instead modify the interval to match what the hardware can provide. + * + * @param dev Pointer to the device structure for the driver instance. + * @param ep Endpoint ID. + * @param frmival Pointer to a video frame interval struct. + * + * @retval 0 If successful. + * @retval -ENOSYS If API is not implemented. + * @retval -EINVAL If parameters are invalid. + * @retval -EIO General input / output error. + */ +static inline int video_set_frmival(const struct device *dev, enum video_endpoint_id ep, + struct video_frmival *frmival) +{ + const struct video_driver_api *api = (const struct video_driver_api *)dev->api; + + if (api->set_frmival == NULL) { + return -ENOSYS; + } + + return api->set_frmival(dev, ep, frmival); +} + +/** + * @brief Get video frame interval. + * + * Get current frame interval of the video device. + * + * @param dev Pointer to the device structure for the driver instance. + * @param ep Endpoint ID. + * @param frmival Pointer to a video frame interval struct. + * + * @retval 0 If successful. + * @retval -ENOSYS If API is not implemented. + * @retval -EINVAL If parameters are invalid. + * @retval -EIO General input / output error. + */ +static inline int video_get_frmival(const struct device *dev, enum video_endpoint_id ep, + struct video_frmival *frmival) +{ + const struct video_driver_api *api = (const struct video_driver_api *)dev->api; + + if (api->get_frmival == NULL) { + return -ENOSYS; + } + + return api->get_frmival(dev, ep, frmival); +} + +/** + * @brief List video frame intervals. + * + * List all supported video frame intervals of a given format. + * + * Applications should fill the pixelformat, width and height fields of the + * video_frmival_enum struct first to form a query. Then, the index field is + * used to iterate through the supported frame intervals list. + * + * @param dev Pointer to the device structure for the driver instance. + * @param ep Endpoint ID. + * @param fie Pointer to a video frame interval enumeration struct. + * + * @retval 0 If successful. + * @retval -ENOSYS If API is not implemented. + * @retval -EINVAL If parameters are invalid. + * @retval -EIO General input / output error. + */ +static inline int video_enum_frmival(const struct device *dev, enum video_endpoint_id ep, + struct video_frmival_enum *fie) +{ + const struct video_driver_api *api = (const struct video_driver_api *)dev->api; + + if (api->enum_frmival == NULL) { + return -ENOSYS; + } + + return api->enum_frmival(dev, ep, fie); +} + /** * @brief Enqueue a video buffer. * @@ -332,12 +518,10 @@ static inline int video_get_format(const struct device *dev, * @retval -EINVAL If parameters are invalid. * @retval -EIO General input / output error. */ -static inline int video_enqueue(const struct device *dev, - enum video_endpoint_id ep, +static inline int video_enqueue(const struct device *dev, enum video_endpoint_id ep, struct video_buffer *buf) { - const struct video_driver_api *api = - (const struct video_driver_api *)dev->api; + const struct video_driver_api *api = (const struct video_driver_api *)dev->api; if (api->enqueue == NULL) { return -ENOSYS; @@ -361,13 +545,10 @@ static inline int video_enqueue(const struct device *dev, * @retval -EINVAL If parameters are invalid. * @retval -EIO General input / output error. */ -static inline int video_dequeue(const struct device *dev, - enum video_endpoint_id ep, - struct video_buffer **buf, - k_timeout_t timeout) +static inline int video_dequeue(const struct device *dev, enum video_endpoint_id ep, + struct video_buffer **buf, k_timeout_t timeout) { - const struct video_driver_api *api = - (const struct video_driver_api *)dev->api; + const struct video_driver_api *api = (const struct video_driver_api *)dev->api; if (api->dequeue == NULL) { return -ENOSYS; @@ -376,7 +557,6 @@ static inline int video_dequeue(const struct device *dev, return api->dequeue(dev, ep, buf, timeout); } - /** * @brief Flush endpoint buffers. * @@ -391,12 +571,9 @@ static inline int video_dequeue(const struct device *dev, * * @retval 0 Is successful, -ERRNO code otherwise. */ -static inline int video_flush(const struct device *dev, - enum video_endpoint_id ep, - bool cancel) +static inline int video_flush(const struct device *dev, enum video_endpoint_id ep, bool cancel) { - const struct video_driver_api *api = - (const struct video_driver_api *)dev->api; + const struct video_driver_api *api = (const struct video_driver_api *)dev->api; if (api->flush == NULL) { return -ENOSYS; @@ -419,8 +596,7 @@ static inline int video_flush(const struct device *dev, */ static inline int video_stream_start(const struct device *dev) { - const struct video_driver_api *api = - (const struct video_driver_api *)dev->api; + const struct video_driver_api *api = (const struct video_driver_api *)dev->api; if (api->stream_start == NULL) { return -ENOSYS; @@ -440,8 +616,7 @@ static inline int video_stream_start(const struct device *dev) */ static inline int video_stream_stop(const struct device *dev) { - const struct video_driver_api *api = - (const struct video_driver_api *)dev->api; + const struct video_driver_api *api = (const struct video_driver_api *)dev->api; int ret; if (api->stream_stop == NULL) { @@ -449,7 +624,7 @@ static inline int video_stream_stop(const struct device *dev) } ret = api->stream_stop(dev); - video_flush(dev, VIDEO_EP_ANY, true); + video_flush(dev, VIDEO_EP_ALL, true); return ret; } @@ -463,12 +638,10 @@ static inline int video_stream_stop(const struct device *dev) * * @retval 0 Is successful, -ERRNO code otherwise. */ -static inline int video_get_caps(const struct device *dev, - enum video_endpoint_id ep, +static inline int video_get_caps(const struct device *dev, enum video_endpoint_id ep, struct video_caps *caps) { - const struct video_driver_api *api = - (const struct video_driver_api *)dev->api; + const struct video_driver_api *api = (const struct video_driver_api *)dev->api; if (api->get_caps == NULL) { return -ENOSYS; @@ -492,11 +665,9 @@ static inline int video_get_caps(const struct device *dev, * @retval -ENOTSUP If format is not supported. * @retval -EIO General input / output error. */ -static inline int video_set_ctrl(const struct device *dev, unsigned int cid, - void *value) +static inline int video_set_ctrl(const struct device *dev, unsigned int cid, void *value) { - const struct video_driver_api *api = - (const struct video_driver_api *)dev->api; + const struct video_driver_api *api = (const struct video_driver_api *)dev->api; if (api->set_ctrl == NULL) { return -ENOSYS; @@ -520,11 +691,9 @@ static inline int video_set_ctrl(const struct device *dev, unsigned int cid, * @retval -ENOTSUP If format is not supported. * @retval -EIO General input / output error. */ -static inline int video_get_ctrl(const struct device *dev, unsigned int cid, - void *value) +static inline int video_get_ctrl(const struct device *dev, unsigned int cid, void *value) { - const struct video_driver_api *api = - (const struct video_driver_api *)dev->api; + const struct video_driver_api *api = (const struct video_driver_api *)dev->api; if (api->get_ctrl == NULL) { return -ENOSYS; @@ -546,12 +715,10 @@ static inline int video_get_ctrl(const struct device *dev, unsigned int cid, * * @retval 0 Is successful, -ERRNO code otherwise. */ -static inline int video_set_signal(const struct device *dev, - enum video_endpoint_id ep, +static inline int video_set_signal(const struct device *dev, enum video_endpoint_id ep, struct k_poll_signal *signal) { - const struct video_driver_api *api = - (const struct video_driver_api *)dev->api; + const struct video_driver_api *api = (const struct video_driver_api *)dev->api; if (api->set_signal == NULL) { return -ENOSYS; @@ -565,19 +732,21 @@ static inline int video_set_signal(const struct device *dev, * * @param size Size of the video buffer (in bytes). * @param align Alignment of the requested memory, must be a power of two. + * @param timeout Timeout duration or K_NO_WAIT * * @retval pointer to allocated video buffer */ -struct video_buffer *video_buffer_aligned_alloc(size_t size, size_t align); +struct video_buffer *video_buffer_aligned_alloc(size_t size, size_t align, k_timeout_t timeout); /** * @brief Allocate video buffer. * * @param size Size of the video buffer (in bytes). + * @param timeout Timeout duration or K_NO_WAIT * * @retval pointer to allocated video buffer */ -struct video_buffer *video_buffer_alloc(size_t size); +struct video_buffer *video_buffer_alloc(size_t size, k_timeout_t timeout); /** * @brief Release a video buffer. @@ -586,12 +755,67 @@ struct video_buffer *video_buffer_alloc(size_t size); */ void video_buffer_release(struct video_buffer *buf); +/** + * @brief Search for a format that matches in a list of capabilities + * + * @param fmts The format capability list to search. + * @param fmt The format to find in the list. + * @param idx The pointer to a number of the first format that matches. + * + * @return 0 when a format is found. + * @return -ENOENT when no matching format is found. + */ +int video_format_caps_index(const struct video_format_cap *fmts, const struct video_format *fmt, + size_t *idx); + +/** + * @brief Compute the difference between two frame intervals + * + * @param frmival Frame interval to turn into microseconds. + * + * @return The frame interval value in microseconds. + */ +static inline uint64_t video_frmival_nsec(const struct video_frmival *frmival) +{ + return (uint64_t)NSEC_PER_SEC * frmival->numerator / frmival->denominator; +} + +/** + * @brief Find the closest match to a frame interval value within a stepwise frame interval. + * + * @param stepwise The stepwise frame interval range to search + * @param desired The frame interval for which find the closest match + * @param match The resulting frame interval closest to @p desired + */ +void video_closest_frmival_stepwise(const struct video_frmival_stepwise *stepwise, + const struct video_frmival *desired, + struct video_frmival *match); + +/** + * @brief Find the closest match to a frame interval value within a video device. + * + * To compute the closest match, fill @p match with the following fields: + * + * - @c match->format to the @ref video_format of interest. + * - @c match->type to @ref VIDEO_FRMIVAL_TYPE_DISCRETE. + * - @c match->discrete to the desired frame interval. + * + * The result will be loaded into @p match, with the following fields set: + * + * - @c match->discrete to the value of the closest frame interval. + * - @c match->index to the index of the closest frame interval. + * + * @param dev Video device to query. + * @param ep Video endpoint ID to query. + * @param match Frame interval enumerator with the query, and loaded with the result. + */ +void video_closest_frmival(const struct device *dev, enum video_endpoint_id ep, + struct video_frmival_enum *match); /* fourcc - four-character-code */ -#define video_fourcc(a, b, c, d)\ +#define video_fourcc(a, b, c, d) \ ((uint32_t)(a) | ((uint32_t)(b) << 8) | ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24)) - /** * @defgroup video_pixel_formats Video pixel formats * @{ @@ -603,13 +827,13 @@ void video_buffer_release(struct video_buffer *buf); */ /** BGGR8 pixel format */ -#define VIDEO_PIX_FMT_BGGR8 video_fourcc('B', 'G', 'G', 'R') /* 8 BGBG.. GRGR.. */ +#define VIDEO_PIX_FMT_BGGR8 video_fourcc('B', 'G', 'G', 'R') /* 8 BGBG.. GRGR.. */ /** GBRG8 pixel format */ -#define VIDEO_PIX_FMT_GBRG8 video_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ +#define VIDEO_PIX_FMT_GBRG8 video_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ /** GRBG8 pixel format */ -#define VIDEO_PIX_FMT_GRBG8 video_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ +#define VIDEO_PIX_FMT_GRBG8 video_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ /** RGGB8 pixel format */ -#define VIDEO_PIX_FMT_RGGB8 video_fourcc('R', 'G', 'G', 'B') /* 8 RGRG.. GBGB.. */ +#define VIDEO_PIX_FMT_RGGB8 video_fourcc('R', 'G', 'G', 'B') /* 8 RGRG.. GBGB.. */ /** * @} @@ -652,7 +876,7 @@ void video_buffer_release(struct video_buffer *buf); */ /** JPEG pixel format */ -#define VIDEO_PIX_FMT_JPEG video_fourcc('J', 'P', 'E', 'G') /* 8 JPEG */ +#define VIDEO_PIX_FMT_JPEG video_fourcc('J', 'P', 'E', 'G') /* 8 JPEG */ /** * @} @@ -662,6 +886,30 @@ void video_buffer_release(struct video_buffer *buf); * @} */ +/** + * @brief Get number of bytes per pixel of a pixel format + * + * @param pixfmt FourCC pixel format value (\ref video_pixel_formats). + */ +static inline unsigned int video_pix_fmt_bpp(uint32_t pixfmt) +{ + switch (pixfmt) { + case VIDEO_PIX_FMT_BGGR8: + case VIDEO_PIX_FMT_GBRG8: + case VIDEO_PIX_FMT_GRBG8: + case VIDEO_PIX_FMT_RGGB8: + return 1; + case VIDEO_PIX_FMT_RGB565: + case VIDEO_PIX_FMT_YUYV: + return 2; + case VIDEO_PIX_FMT_XRGB32: + case VIDEO_PIX_FMT_XYUV32: + return 4; + default: + return 0; + } +} + #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/w1.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/w1.h index a233712a..fe264489 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/w1.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/w1.h @@ -435,7 +435,7 @@ struct w1_rom { /** @brief The 1-Wire family code identifying the slave device type. * * An incomplete list of family codes is available at: - * https://www.maximintegrated.com/en/app-notes/index.mvp/id/155 + * https://www.analog.com/en/resources/technical-articles/1wire-software-resource-guide-device-description.html * others are documented in the respective device data sheet. */ uint8_t family; @@ -584,7 +584,7 @@ int w1_write_read(const struct device *dev, const struct w1_slave_config *config * If a callback is passed, the callback is called for each found slave. * * The algorithm mostly follows the suggestions of - * https://pdfserv.maximintegrated.com/en/an/AN187.pdf + * https://www.analog.com/en/resources/app-notes/1wire-search-algorithm.html * * Note: Filtering on families is not supported. * @@ -695,7 +695,7 @@ static inline uint8_t w1_crc8(const uint8_t *src, size_t len) * X^16 + X^15 * + X^2 + 1 with the initial value set to 0x0000. * See also APPLICATION NOTE 27: * "UNDERSTANDING AND USING CYCLIC REDUNDANCY CHECKS WITH MAXIM 1-WIRE AND IBUTTON PRODUCTS" - * https://www.maximintegrated.com/en/design/technical-documents/app-notes/2/27.html + * https://www.analog.com/en/resources/technical-articles/understanding-and-using-cyclic-redundancy-checks-with-maxim-1wire-and-ibutton-products.html * * @param seed Init value for the CRC, it is usually set to 0x0000. * @param[in] src Input bytes for the computation. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/wifi/nrf_wifi/bus/qspi_if.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/wifi/nrf_wifi/bus/qspi_if.h new file mode 100644 index 00000000..e66db6c4 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/wifi/nrf_wifi/bus/qspi_if.h @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @brief Header containing QSPI device interface specific declarations for the + * Zephyr OS layer of the Wi-Fi driver. + */ + +#ifndef __QSPI_IF_H__ +#define __QSPI_IF_H__ + +#include +#include +#ifdef CONFIG_NRF70_ON_QSPI +#include +#endif + +#define RPU_WAKEUP_NOW BIT(0) /* WAKEUP RPU - RW */ +#define RPU_AWAKE_BIT BIT(1) /* RPU AWAKE FROM SLEEP - RO */ +#define RPU_READY_BIT BIT(2) /* RPU IS READY - RO*/ + +struct qspi_config { +#ifdef CONFIG_NRF70_ON_QSPI + nrf_qspi_addrmode_t addrmode; + nrf_qspi_readoc_t readoc; + nrf_qspi_writeoc_t writeoc; + nrf_qspi_frequency_t sckfreq; +#endif + unsigned char RDC4IO; + bool easydma; + bool single_op; + bool quad_spi; + bool encryption; + bool CMD_CNONCE; + bool enc_enabled; + struct k_sem lock; + unsigned int addrmask; + unsigned char qspi_slave_latency; +#if defined(CONFIG_NRF70_ON_QSPI) && (NRF_QSPI_HAS_XIP_ENC || NRF_QSPI_HAS_DMA_ENC) + nrf_qspi_encryption_t p_cfg; +#endif /*CONFIG_NRF70_ON_QSPI && (NRF_QSPI_HAS_XIP_ENC || NRF_QSPI_HAS_DMA_ENC)*/ + int test_hlread; + char *test_name; + int test_start; + int test_end; + int test_iterations; + int test_timediff_read; + int test_timediff_write; + int test_status; + int test_iteration; +}; +struct qspi_dev { + int (*deinit)(void); + void *config; + int (*init)(struct qspi_config *config); + int (*write)(unsigned int addr, const void *data, int len); + int (*read)(unsigned int addr, void *data, int len); + int (*hl_read)(unsigned int addr, void *data, int len); + void (*hard_reset)(void); +}; + +int qspi_cmd_wakeup_rpu(const struct device *dev, uint8_t data); + +int qspi_init(struct qspi_config *config); + +int qspi_write(unsigned int addr, const void *data, int len); + +int qspi_read(unsigned int addr, void *data, int len); + +int qspi_hl_read(unsigned int addr, void *data, int len); + +int qspi_deinit(void); + +void gpio_free_irq(int pin, struct gpio_callback *button_cb_data); + +int gpio_request_irq(int pin, struct gpio_callback *button_cb_data, void (*irq_handler)()); + +struct qspi_config *qspi_defconfig(void); + +struct qspi_dev *qspi_dev(void); +struct qspi_config *qspi_get_config(void); + +int qspi_cmd_sleep_rpu(const struct device *dev); + +void hard_reset(void); +void get_sleep_stats(uint32_t addr, uint32_t *buff, uint32_t wrd_len); + +extern struct device qspi_perip; + +int qspi_validate_rpu_wake_writecmd(const struct device *dev); +int qspi_cmd_wakeup_rpu(const struct device *dev, uint8_t data); +int qspi_wait_while_rpu_awake(const struct device *dev); + +int qspi_RDSR1(const struct device *dev, uint8_t *rdsr1); +int qspi_RDSR2(const struct device *dev, uint8_t *rdsr2); +int qspi_WRSR2(const struct device *dev, const uint8_t wrsr2); + +#ifdef CONFIG_NRF_WIFI_LOW_POWER +int func_rpu_sleep(void); +int func_rpu_wake(void); +int func_rpu_sleep_status(void); +#endif /* CONFIG_NRF_WIFI_LOW_POWER */ + +#define QSPI_KEY_LEN_BYTES 16 + +/*! \brief Enable encryption + * + * \param key Pointer to the 128-bit key + * \return 0 on success, negative errno code on failure. + */ +int qspi_enable_encryption(uint8_t *key); + +#endif /* __QSPI_IF_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/wifi/nrf_wifi/bus/rpu_hw_if.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/wifi/nrf_wifi/bus/rpu_hw_if.h new file mode 100644 index 00000000..2524b64a --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/wifi/nrf_wifi/bus/rpu_hw_if.h @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @brief Header containing common functions for RPU hardware interaction + * using QSPI and SPI that can be invoked by shell or the driver. + */ + +#ifndef __RPU_HW_IF_H_ +#define __RPU_HW_IF_H_ + +#include +#include +#include + +enum { + SYSBUS = 0, + EXT_SYS_BUS, + PBUS, + PKTRAM, + GRAM, + LMAC_ROM, + LMAC_RET_RAM, + LMAC_SRC_RAM, + UMAC_ROM, + UMAC_RET_RAM, + UMAC_SRC_RAM, + NUM_MEM_BLOCKS +}; + +extern char blk_name[][15]; +extern uint32_t rpu_7002_memmap[][3]; + +int rpu_read(unsigned int addr, void *data, int len); +int rpu_write(unsigned int addr, const void *data, int len); + +int rpu_sleep(void); +int rpu_wakeup(void); +int rpu_sleep_status(void); +void rpu_get_sleep_stats(uint32_t addr, uint32_t *buff, uint32_t wrd_len); +int rpu_irq_config(struct gpio_callback *irq_callback_data, void (*irq_handler)()); +int rpu_irq_remove(struct gpio_callback *irq_callback_data); + +int rpu_wrsr2(uint8_t data); +int rpu_rdsr2(void); +int rpu_rdsr1(void); +int rpu_clks_on(void); + +int rpu_init(void); +int rpu_enable(void); +int rpu_disable(void); + +#ifdef CONFIG_NRF70_SR_COEX_RF_SWITCH +int sr_ant_switch(unsigned int ant_switch); +int sr_gpio_remove(void); +int sr_gpio_config(void); +#endif /* CONFIG_NRF70_SR_COEX_RF_SWITCH */ +#endif /* __RPU_HW_IF_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/wifi/nrf_wifi/off_raw_tx/off_raw_tx_api.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/wifi/nrf_wifi/off_raw_tx/off_raw_tx_api.h new file mode 100644 index 00000000..b14ae394 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/drivers/wifi/nrf_wifi/off_raw_tx/off_raw_tx_api.h @@ -0,0 +1,262 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ +/** @file + * + * @addtogroup nrf70_off_raw_tx_api nRF70 Offloaded raw TX API + * @{ + * + * @brief File containing API's for the Offloaded raw TX feature. + */ + +#ifndef INCLUDE_ZEPHYR_DRIVERS_OFF_RAW_TX_API_H_ +#define INCLUDE_ZEPHYR_DRIVERS_OFF_RAW_TX_API_H_ + +#include +#include +#include "osal_api.h" + +/* Minimum frame size for raw packet transmission */ +#define NRF_WIFI_OFF_RAW_TX_FRAME_SIZE_MIN 26 +/* Maximum frame size for raw packet transmission */ +#define NRF_WIFI_OFF_RAW_TX_FRAME_SIZE_MAX 600 +/* Maximum length of country code*/ +#define NRF_WIFI_COUNTRY_CODE_LEN 2 +/** + * @brief- Transmission rates + * Rate to be used for transmitting a packet. + */ +enum nrf_wifi_off_raw_tx_rate { + /** 1 Mbps */ + RATE_1M, + /** 2 Mbps */ + RATE_2M, + /** 5.5 Mbps */ + RATE_5_5M, + /** 11 Mbps */ + RATE_11M, + /** 6 Mbps */ + RATE_6M, + /** 9 Mbps */ + RATE_9M, + /** 12 Mbps */ + RATE_12M, + /** 18 Mbps */ + RATE_18M, + /** 24 Mbps */ + RATE_24M, + /** 36 Mbps */ + RATE_36M, + /** 48 Mbps */ + RATE_48M, + /** 54 Mbps */ + RATE_54M, + /** MCS 0 */ + RATE_MCS0, + /** MCS 1 */ + RATE_MCS1, + /** MCS 2 */ + RATE_MCS2, + /** MCS 3 */ + RATE_MCS3, + /** MCS 4 */ + RATE_MCS4, + /** MCS 5 */ + RATE_MCS5, + /** MCS 6 */ + RATE_MCS6, + /** MCS 7 */ + RATE_MCS7, + /** Invalid rate */ + RATE_MAX +}; + + +/** + * @brief- HE guard interval value + * Value of the guard interval to be used between symbols when transmitting using HE. + */ +enum nrf_wifi_off_raw_tx_he_gi { + /** 800 ns */ + HE_GI_800NS, + /** 1600 ns */ + HE_GI_1600NS, + /** 3200 ns */ + HE_GI_3200NS, + /** Invalid value */ + HE_GI_MAX +}; + + +/** + * @brief- HE long training field duration + * Value of the long training field duration to be used when transmitting using HE. + */ +enum nrf_wifi_off_raw_tx_he_ltf { + /** 3.2us */ + HE_LTF_3200NS, + /** 6.4us */ + HE_LTF_6400NS, + /** 12.8us */ + HE_LTF_12800NS, + /** Invalid value */ + HE_LTF_MAX +}; + +/** + * @brief- Throughput mode + * Throughput mode to be used for transmitting the packet. + */ +enum nrf_wifi_off_raw_tx_tput_mode { + /** Legacy mode */ + TPUT_MODE_LEGACY, + /** High Throughput mode (11n) */ + TPUT_MODE_HT, + /** Very high throughput mode (11ac) */ + TPUT_MODE_VHT, + /** HE SU mode */ + TPUT_MODE_HE_SU, + /** HE ER SU mode */ + TPUT_MODE_HE_ER_SU, + /** HE TB mode */ + TPUT_MODE_HE_TB, + /** Highest throughput mode currently defined */ + TPUT_MODE_MAX +}; + +/** + * @brief This structure defines the Offloaded raw tx debug statistics. + * + */ +struct nrf_wifi_off_raw_tx_stats { + /** Number of packets sent */ + unsigned int off_raw_tx_pkt_sent; +}; + +/** + * @brief- Configuration parameters for offloaded raw TX + * Parameters which can be used to configure the offloaded raw TX operation. + */ +struct nrf_wifi_off_raw_tx_conf { + /** Time interval (in microseconds) between transmissions */ + unsigned int period_us; + /** Transmit power in dBm (0 to 20) */ + unsigned int tx_pwr; + /** Channel number on which to transmit */ + unsigned int chan; + /** Set to TRUE to use short preamble for FALSE to disable short preamble */ + bool short_preamble; + /* Number of times a packet should be retried at each possible rate */ + unsigned int num_retries; + /** Throughput mode for packet transmittion. Refer &enum nrf_wifi_off_raw_tx_tput_mode */ + enum nrf_wifi_off_raw_tx_tput_mode tput_mode; + /* Rate at which packet needs to be transmitted. Refer &enum nrf_wifi_off_raw_tx_rate */ + enum nrf_wifi_off_raw_tx_rate rate; + /** HE GI. Refer &enum nrf_wifi_off_raw_tx_he_gi */ + enum nrf_wifi_off_raw_tx_he_gi he_gi; + /** HE GI. Refer &enum nrf_wifi_off_raw_tx_he_ltf */ + enum nrf_wifi_off_raw_tx_he_ltf he_ltf; + /* Pointer to packet to be transmitted */ + void *pkt; + /** Packet length of the frame to be transmitted, (min 26 bytes and max 600 bytes) */ + unsigned int pkt_len; +}; + + +/** + * @brief Initialize the nRF70 for operating in the offloaded raw TX mode. + * @param mac_addr MAC address to be used for the nRF70 device. + * @param country_code Country code to be set for regularity domain. + * + * This function is initializes the nRF70 device for offloaded raw TX mode by: + * - Powering it up, + * - Downloading a firmware patch (if any). + * - Initializing the firmware to accept further commands + * + * The mac_addr parameter is used to set the MAC address of the nRF70 device. + * This address can be used to override the MAC addresses programmed in the OTP and + * the value configured (if any) in CONFIG_WIFI_FIXED_MAC_ADDRESS. + * The priority order in which the MAC address values for the nRF70 device are used is: + * - If mac_addr is provided, the MAC address is set to the value provided. + * - If CONFIG_WIFI_FIXED_MAC_ADDRESS is enabled, the MAC address uses the Kconfig value. + * - If none of the above are provided, the MAC address is set to the value programmed in the OTP. + * + * @retval 0 If the operation was successful. + * @retval -1 If the operation failed. + */ +int nrf70_off_raw_tx_init(uint8_t *mac_addr, unsigned char *country_code); + +/** + * @brief Initialize the nRF70 for operating in the offloaded raw TX mode. + * + * This function is deinitializes the nRF70 device. + * + */ +void nrf70_off_raw_tx_deinit(void); + +/** + * @brief Update the configured offloaded raw TX parameters. + * @param conf Configuration parameters to be updated for the offloaded raw TX operation. + * + * This function is used to update configured parameters for offloaded raw TX operation. + * This function should be used to when the parameters need to be updated during an ongoing + * raw TX operation without having to stop it. + * + * @retval 0 If the operation was successful. + * @retval -1 If the operation failed. + */ +int nrf70_off_raw_tx_conf_update(struct nrf_wifi_off_raw_tx_conf *conf); + +/** + * @brief Start the offloaded raw TX. + * @param conf Configuration parameters necessary for the offloaded raw TX operation. + * + * This function is used to start offloaded raw TX operation. When this function is invoked + * the nRF70 device will start transmitting frames as per the configuration specified by @p conf. + * + * @retval 0 If the operation was successful. + * @retval -1 If the operation failed. + */ +int nrf70_off_raw_tx_start(struct nrf_wifi_off_raw_tx_conf *conf); + +/** + * @brief Stop the offloaded raw TX. + * + * This function is used to stop offloaded raw TX operation. When this function is invoked + * the nRF70 device will stop transmitting frames. + * + * @retval 0 If the operation was successful. + * @retval -1 If the operation failed. + */ +int nrf70_off_raw_tx_stop(void); + +/** + * @brief Get the MAC address of the nRF70 device. + * @param mac_addr Buffer to store the MAC address. + * + * This function is used to get the MAC address of the nRF70 device. + * The MAC address is stored in the buffer pointed by mac_addr. + * The MAC address is expected to be a 6 byte value. + * + * @retval 0 If the operation was successful. + * @retval -1 If the operation failed. + */ +int nrf70_off_raw_tx_mac_addr_get(uint8_t *mac_addr); + +/** + * @brief Get statistics of the offloaded raw TX. + * @param off_raw_tx_stats Statistics of the offloaded raw TX operation. + * + * This function is used to get statistics of offloaded raw TX operation. When this function + * is invoked the nRF70 device will show statistics. + * + * @retval 0 If the operation was successful. + * @retval -1 If the operation failed. + */ +int nrf70_off_raw_tx_stats(struct nrf_wifi_off_raw_tx_stats *off_raw_tx_stats); +/** + * @} + */ +#endif /* INCLUDE_ZEPHYR_DRIVERS_OFF_RAW_TX_API_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/basicmath.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/basicmath.h index 0c85ca62..173731d0 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/basicmath.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/basicmath.h @@ -8,8 +8,8 @@ * @brief Public APIs for DSP basicmath */ -#ifndef INCLUDE_ZEPHYR_DSP_BASICMATH_H_ -#define INCLUDE_ZEPHYR_DSP_BASICMATH_H_ +#ifndef ZEPHYR_INCLUDE_DSP_BASICMATH_H_ +#define ZEPHYR_INCLUDE_DSP_BASICMATH_H_ #include @@ -929,4 +929,4 @@ DSP_FUNC_SCOPE void zdsp_clip_q7(const DSP_DATA q7_t *src, DSP_DATA q7_t *dst, q #include #endif /* CONFIG_FP16 */ -#endif /* INCLUDE_ZEPHYR_DSP_BASICMATH_H_ */ +#endif /* ZEPHYR_INCLUDE_DSP_BASICMATH_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/basicmath_f16.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/basicmath_f16.h index 23239e9a..84401da9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/basicmath_f16.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/basicmath_f16.h @@ -8,8 +8,8 @@ * @brief Public APIs for DSP basicmath for 16 bit floating point */ -#ifndef INCLUDE_ZEPHYR_DSP_BASICMATH_F16_H_ -#define INCLUDE_ZEPHYR_DSP_BASICMATH_F16_H_ +#ifndef ZEPHYR_INCLUDE_DSP_BASICMATH_F16_H_ +#define ZEPHYR_INCLUDE_DSP_BASICMATH_F16_H_ #ifndef CONFIG_FP16 #error "Cannot use float16 DSP functionality without CONFIG_FP16 enabled" @@ -121,4 +121,4 @@ DSP_FUNC_SCOPE void zdsp_clip_f16(const float16_t *src, float16_t *dst, float16_ } #endif -#endif /* INCLUDE_ZEPHYR_DSP_BASICMATH_F16_H_ */ +#endif /* ZEPHYR_INCLUDE_DSP_BASICMATH_F16_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/dsp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/dsp.h index beef08fb..1ffa2111 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/dsp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/dsp.h @@ -8,8 +8,8 @@ * @brief Public APIs for Digital Signal Processing (DSP) math. */ -#ifndef INCLUDE_ZEPHYR_DSP_DSP_H_ -#define INCLUDE_ZEPHYR_DSP_DSP_H_ +#ifndef ZEPHYR_INCLUDE_DSP_DSP_H_ +#define ZEPHYR_INCLUDE_DSP_DSP_H_ #ifdef CONFIG_DSP_BACKEND_HAS_STATIC #define DSP_FUNC_SCOPE static @@ -44,4 +44,4 @@ #include "zdsp_backend.h" -#endif /* INCLUDE_ZEPHYR_DSP_DSP_H_ */ +#endif /* ZEPHYR_INCLUDE_DSP_DSP_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/print_format.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/print_format.h index dd7d7128..014aebee 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/print_format.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/print_format.h @@ -2,8 +2,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef ZEPHYR_INCLUDE_ZEPHYR_DSP_PRINT_FORMAT_H -#define ZEPHYR_INCLUDE_ZEPHYR_DSP_PRINT_FORMAT_H +#ifndef ZEPHYR_INCLUDE_DSP_PRINT_FORMAT_H_ +#define ZEPHYR_INCLUDE_DSP_PRINT_FORMAT_H_ #include #include @@ -63,4 +63,4 @@ static inline int64_t ___PRIq_arg_shift(int64_t q, int shift) * @} */ -#endif /* ZEPHYR_INCLUDE_ZEPHYR_DSP_PRINT_FORMAT_H */ +#endif /* ZEPHYR_INCLUDE_DSP_PRINT_FORMAT_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/types.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/types.h index 52ce2ab2..2ee02fb0 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/types.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dsp/types.h @@ -2,8 +2,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef INCLUDE_ZEPHYR_DSP_TYPES_H_ -#define INCLUDE_ZEPHYR_DSP_TYPES_H_ +#ifndef ZEPHYR_INCLUDE_DSP_TYPES_H_ +#define ZEPHYR_INCLUDE_DSP_TYPES_H_ #include @@ -68,4 +68,4 @@ typedef double float64_t; * @} */ -#endif /* INCLUDE_ZEPHYR_DSP_TYPES_H_ */ +#endif /* ZEPHYR_INCLUDE_DSP_TYPES_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-adc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-adc.h index 1d875b8e..62d9b7cc 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-adc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-adc.h @@ -18,15 +18,4 @@ #define NRF_ADC_AIN6 BIT(6) #define NRF_ADC_AIN7 BIT(7) -#define NRF_SAADC_AIN0 1 -#define NRF_SAADC_AIN1 2 -#define NRF_SAADC_AIN2 3 -#define NRF_SAADC_AIN3 4 -#define NRF_SAADC_AIN4 5 -#define NRF_SAADC_AIN5 6 -#define NRF_SAADC_AIN6 7 -#define NRF_SAADC_AIN7 8 -#define NRF_SAADC_VDD 9 -#define NRF_SAADC_VDDHDIV5 13 - #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_ADC_NRF_ADC_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc-nrf54l.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc-nrf54l.h new file mode 100644 index 00000000..19da4ff6 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc-nrf54l.h @@ -0,0 +1,15 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright (c) 2024 Nordic Semiconductor ASA + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_ADC_NRF_SAADC_NRF54L_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_ADC_NRF_SAADC_NRF54L_H_ + +#include + +#define NRF_SAADC_AVDD 10 +#define NRF_SAADC_DVDD 11 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_ADC_NRF_SAADC_NRF54L_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc-v2.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc-v2.h new file mode 100644 index 00000000..f5f72bec --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc-v2.h @@ -0,0 +1,14 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright (c) 2024 Nordic Semiconductor ASA + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_ADC_NRF_SAADC_V2_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_ADC_NRF_SAADC_V2_H_ + +#include + +#define NRF_SAADC_VDD 9 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_ADC_NRF_SAADC_V2_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc-v3.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc-v3.h new file mode 100644 index 00000000..c51bab1a --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc-v3.h @@ -0,0 +1,14 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright (c) 2024 Nordic Semiconductor ASA + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_ADC_NRF_SAADC_V3_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_ADC_NRF_SAADC_V3_H_ + +#include + +#define NRF_SAADC_VDDHDIV5 13 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_ADC_NRF_SAADC_V3_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc.h new file mode 100644 index 00000000..4a3deb95 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/adc/nrf-saadc.h @@ -0,0 +1,19 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright (c) 2024 Nordic Semiconductor ASA + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_ADC_NRF_SAADC_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_ADC_NRF_SAADC_H_ + +#define NRF_SAADC_AIN0 1 +#define NRF_SAADC_AIN1 2 +#define NRF_SAADC_AIN2 3 +#define NRF_SAADC_AIN3 4 +#define NRF_SAADC_AIN4 5 +#define NRF_SAADC_AIN5 6 +#define NRF_SAADC_AIN6 7 +#define NRF_SAADC_AIN7 8 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_ADC_NRF_SAADC_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/battery/battery.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/battery/battery.h new file mode 100644 index 00000000..d04242ea --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/battery/battery.h @@ -0,0 +1,37 @@ +/* + * Copyright 2024 Embeint Inc + * + * SPDX-License-Identifier: Apache-2.0 + * + * The following open-circuit voltage curves have been extracted from the datasheets of the + * listed battery parts. They will not be 100% correct for all batteries of the chemistry, + * but should provide a good baseline. These curves will also be affected by ambient temperature + * and discharge current. + * + * Each curve is 11 elements representing the OCV voltage in microvolts for each charge percentage + * from 0% to 100% inclusive in 10% increments. + */ +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_BATTERY_BATTERY_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_BATTERY_BATTERY_H_ + +/* Panasonic KR-1800SCE */ +#define BATTERY_OCV_CURVE_NICKEL_CADMIUM_DEFAULT \ + 800000 1175000 1207000 1217000 1221000 1226000 1233000 1245000 1266000 1299000 1366000 + +/* Panasonic BK-1100FHU */ +#define BATTERY_OCV_CURVE_NICKEL_METAL_HYDRIDE_DEFAULT \ + 1004000 1194000 1231000 1244000 1254000 1257000 1263000 1266000 1274000 1315000 1420000 + +/* Panasonic NCR18650BF */ +#define BATTERY_OCV_CURVE_LITHIUM_ION_POLYMER_DEFAULT \ + 2502000 3146000 3372000 3449000 3532000 3602000 3680000 3764000 3842000 3936000 4032000 + +/* Drypower IFR18650 E1600 */ +#define BATTERY_OCV_CURVE_LITHIUM_IRON_PHOSPHATE_DEFAULT \ + 2013000 3068000 3159000 3194000 3210000 3221000 3229000 3246000 3256000 3262000 3348000 + +/* FDK CR14250SE */ +#define BATTERY_OCV_CURVE_LITHIUM_MANGANESE_DEFAULT \ + 1906000 2444000 2689000 2812000 2882000 2927000 2949000 2955000 2962000 2960000 2985000 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_BATTERY_BATTERY_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/adi_max32_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/adi_max32_clock.h index 44fb918c..e0cd17c2 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/adi_max32_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/adi_max32_clock.h @@ -21,5 +21,7 @@ #define ADI_MAX32_PRPH_CLK_SRC_INRO 5 /* Internal Nano Ring Oscillator */ #define ADI_MAX32_PRPH_CLK_SRC_ISO 6 /* Internal Secondary Oscillator */ #define ADI_MAX32_PRPH_CLK_SRC_IBRO_DIV8 7 /* IBRO/8 */ +#define ADI_MAX32_PRPH_CLK_SRC_IPLL 8 /* Internal Phase Lock Loop Oscillator */ +#define ADI_MAX32_PRPH_CLK_SRC_EBO 9 /* External Base Oscillator */ #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_ADI_MAX32_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/ch32v00x-clocks.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/ch32v00x-clocks.h new file mode 100644 index 00000000..128e370e --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/ch32v00x-clocks.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2024 Michael Hope + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef __CH32V00X_CLOCKS_H__ +#define __CH32V00X_CLOCKS_H__ + +#define CH32V00X_AHB_PCENR_OFFSET 0 +#define CH32V00X_APB2_PCENR_OFFSET 1 +#define CH32V00X_APB1_PCENR_OFFSET 2 + +#define CH32V00X_CLOCK_CONFIG(bus, bit) (((CH32V00X_##bus##_PCENR_OFFSET) << 5) | (bit)) + +#define CH32V00X_CLOCK_DMA1 CH32V00X_CLOCK_CONFIG(AHB, 0) +#define CH32V00X_CLOCK_SRAM CH32V00X_CLOCK_CONFIG(AHB, 2) +#define CH32V00X_CLOCK_FLITF CH32V00X_CLOCK_CONFIG(AHB, 4) +#define CH32V00X_CLOCK_CRC CH32V00X_CLOCK_CONFIG(AHB, 6) +#define CH32V00X_CLOCK_USB CH32V00X_CLOCK_CONFIG(AHB, 12) + +#define CH32V00X_CLOCK_AFIO CH32V00X_CLOCK_CONFIG(APB2, 0) +#define CH32V00X_CLOCK_IOPA CH32V00X_CLOCK_CONFIG(APB2, 2) +#define CH32V00X_CLOCK_IOPB CH32V00X_CLOCK_CONFIG(APB2, 3) +#define CH32V00X_CLOCK_IOPC CH32V00X_CLOCK_CONFIG(APB2, 4) +#define CH32V00X_CLOCK_IOPD CH32V00X_CLOCK_CONFIG(APB2, 5) +#define CH32V00X_CLOCK_ADC1 CH32V00X_CLOCK_CONFIG(APB2, 9) +#define CH32V00X_CLOCK_ADC2 CH32V00X_CLOCK_CONFIG(APB2, 10) +#define CH32V00X_CLOCK_TIM1 CH32V00X_CLOCK_CONFIG(APB2, 11) +#define CH32V00X_CLOCK_SPI1 CH32V00X_CLOCK_CONFIG(APB2, 12) +#define CH32V00X_CLOCK_USART1 CH32V00X_CLOCK_CONFIG(APB2, 14) + +#define CH32V00X_CLOCK_TIM2 CH32V00X_CLOCK_CONFIG(APB1, 0) +#define CH32V00X_CLOCK_TIM3 CH32V00X_CLOCK_CONFIG(APB1, 1) +#define CH32V00X_CLOCK_WWDG CH32V00X_CLOCK_CONFIG(APB1, 11) +#define CH32V00X_CLOCK_USART2 CH32V00X_CLOCK_CONFIG(APB1, 17) +#define CH32V00X_CLOCK_I2C1 CH32V00X_CLOCK_CONFIG(APB1, 21) +#define CH32V00X_CLOCK_BKP CH32V00X_CLOCK_CONFIG(APB1, 27) +#define CH32V00X_CLOCK_PWR CH32V00X_CLOCK_CONFIG(APB1, 28) +#define CH32V00X_CLOCK_USB CH32V00X_CLOCK_CONFIG(APB1, 23) + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/esp32c2_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/esp32c2_clock.h new file mode 100644 index 00000000..03b66cfe --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/esp32c2_clock.h @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2024 Espressif Systems (Shanghai) Co., Ltd. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_ESP32C2_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_ESP32C2_H_ + +/* Supported CPU clock Sources */ +#define ESP32_CPU_CLK_SRC_XTAL 0U +#define ESP32_CPU_CLK_SRC_PLL 1U +#define ESP32_CLK_SRC_RC_FAST 2U + +/* Supported CPU frequencies */ +#define ESP32_CLK_CPU_PLL_40M 40000000 +#define ESP32_CLK_CPU_PLL_60M 60000000 +#define ESP32_CLK_CPU_PLL_80M 80000000 +#define ESP32_CLK_CPU_PLL_120M 120000000 +#define ESP32_CLK_CPU_RC_FAST_FREQ 8750000 + +/* Supported XTAL frequencies */ +#define ESP32_CLK_XTAL_26M 26000000 +#define ESP32_CLK_XTAL_32M 32000000 +#define ESP32_CLK_XTAL_40M 40000000 + +/* Supported RTC fast clock sources */ +#define ESP32_RTC_FAST_CLK_SRC_XTAL_D2 0 +#define ESP32_RTC_FAST_CLK_SRC_RC_FAST 1 + +/* Supported RTC slow clock sources */ +#define ESP32_RTC_SLOW_CLK_SRC_RC_SLOW 0 +#define ESP32_RTC_SLOW_CLK_SRC_OSC_SLOW 1 +#define ESP32_RTC_SLOW_CLK_SRC_RC_FAST_D256 2 + +/* RTC slow clock frequencies */ +#define ESP32_RTC_SLOW_CLK_SRC_RC_SLOW_FREQ 136000 +#define ESP32_RTC_SLOW_CLK_SRC_OSC_SLOW_FREQ 32768 +#define ESP32_RTC_SLOW_CLK_SRC_RC_FAST_D256_FREQ 68359 + +/* Modules IDs + * These IDs are actually offsets in CLK and RST Control registers. + * These IDs shouldn't be changed unless there is a Hardware change + * from Espressif. + * + * Basic Modules + * Registers: DPORT_PERIP_CLK_EN_REG, DPORT_PERIP_RST_EN_REG + */ +#define ESP32_LEDC_MODULE 0 +#define ESP32_UART0_MODULE 1 +#define ESP32_UART1_MODULE 2 +#define ESP32_I2C0_MODULE 3 +#define ESP32_TIMG0_MODULE 4 +#define ESP32_TIMG1_MODULE 5 /* No timg1 on esp32c2, TODO: IDF-3825 */ +#define ESP32_UHCI0_MODULE 6 +#define ESP32_SPI_MODULE 7 /* SPI1 */ +#define ESP32_SPI2_MODULE 8 /* SPI2 */ +#define ESP32_RNG_MODULE 9 +#define ESP32_WIFI_MODULE 10 +#define ESP32_BT_MODULE 11 +#define ESP32_WIFI_BT_COMMON_MODULE 12 +#define ESP32_BT_BASEBAND_MODULE 13 +#define ESP32_BT_LC_MODULE 14 +#define ESP32_AES_MODULE 15 +#define ESP32_SHA_MODULE 16 +#define ESP32_ECC_MODULE 17 +#define ESP32_GDMA_MODULE 18 +#define ESP32_SYSTIMER_MODULE 19 +#define ESP32_SARADC_MODULE 20 +#define ESP32_TEMPSENSOR_MODULE 21 +#define ESP32_MODEM_RPA_MODULE 22 +#define ESP32_MODULE_MAX 23 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_ESP32C2_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/imx95_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/imx95_clock.h new file mode 100644 index 00000000..c0b74ab9 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/imx95_clock.h @@ -0,0 +1,177 @@ +/* + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_IMX95_CLOCK_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_IMX95_CLOCK_H_ + +#define IMX95_CLK_32K 1 +#define IMX95_CLK_24M 2 +#define IMX95_CLK_FRO 3 +#define IMX95_CLK_SYSPLL1_VCO 4 +#define IMX95_CLK_SYSPLL1_PFD0_UNGATED 5 +#define IMX95_CLK_SYSPLL1_PFD0 6 +#define IMX95_CLK_SYSPLL1_PFD0_DIV2 7 +#define IMX95_CLK_SYSPLL1_PFD1_UNGATED 8 +#define IMX95_CLK_SYSPLL1_PFD1 9 +#define IMX95_CLK_SYSPLL1_PFD1_DIV2 10 +#define IMX95_CLK_SYSPLL1_PFD2_UNGATED 11 +#define IMX95_CLK_SYSPLL1_PFD2 12 +#define IMX95_CLK_SYSPLL1_PFD2_DIV2 13 +#define IMX95_CLK_AUDIOPLL1_VCO 14 +#define IMX95_CLK_AUDIOPLL1 15 +#define IMX95_CLK_AUDIOPLL2_VCO 16 +#define IMX95_CLK_AUDIOPLL2 17 +#define IMX95_CLK_VIDEOPLL1_VCO 18 +#define IMX95_CLK_VIDEOPLL1 19 +#define IMX95_CLK_RESERVED20 20 +#define IMX95_CLK_RESERVED21 21 +#define IMX95_CLK_RESERVED22 22 +#define IMX95_CLK_RESERVED23 23 +#define IMX95_CLK_ARMPLL_VCO 24 +#define IMX95_CLK_ARMPLL_PFD0_UNGATED 25 +#define IMX95_CLK_ARMPLL_PFD0 26 +#define IMX95_CLK_ARMPLL_PFD1_UNGATED 27 +#define IMX95_CLK_ARMPLL_PFD1 28 +#define IMX95_CLK_ARMPLL_PFD2_UNGATED 29 +#define IMX95_CLK_ARMPLL_PFD2 30 +#define IMX95_CLK_ARMPLL_PFD3_UNGATED 31 +#define IMX95_CLK_ARMPLL_PFD3 32 +#define IMX95_CLK_DRAMPLL_VCO 33 +#define IMX95_CLK_DRAMPLL 34 +#define IMX95_CLK_HSIOPLL_VCO 35 +#define IMX95_CLK_HSIOPLL 36 +#define IMX95_CLK_LDBPLL_VCO 37 +#define IMX95_CLK_LDBPLL 38 +#define IMX95_CLK_EXT1 39 +#define IMX95_CLK_EXT2 40 + +#define IMX95_CCM_NUM_CLK_SRC 41 + +#define IMX95_CLK_ADC (IMX95_CCM_NUM_CLK_SRC + 0) +#define IMX95_CLK_TMU (IMX95_CCM_NUM_CLK_SRC + 1) +#define IMX95_CLK_BUSAON (IMX95_CCM_NUM_CLK_SRC + 2) +#define IMX95_CLK_CAN1 (IMX95_CCM_NUM_CLK_SRC + 3) +#define IMX95_CLK_I3C1 (IMX95_CCM_NUM_CLK_SRC + 4) +#define IMX95_CLK_I3C1SLOW (IMX95_CCM_NUM_CLK_SRC + 5) +#define IMX95_CLK_LPI2C1 (IMX95_CCM_NUM_CLK_SRC + 6) +#define IMX95_CLK_LPI2C2 (IMX95_CCM_NUM_CLK_SRC + 7) +#define IMX95_CLK_LPSPI1 (IMX95_CCM_NUM_CLK_SRC + 8) +#define IMX95_CLK_LPSPI2 (IMX95_CCM_NUM_CLK_SRC + 9) +#define IMX95_CLK_LPTMR1 (IMX95_CCM_NUM_CLK_SRC + 10) +#define IMX95_CLK_LPUART1 (IMX95_CCM_NUM_CLK_SRC + 11) +#define IMX95_CLK_LPUART2 (IMX95_CCM_NUM_CLK_SRC + 12) +#define IMX95_CLK_M33 (IMX95_CCM_NUM_CLK_SRC + 13) +#define IMX95_CLK_M33SYSTICK (IMX95_CCM_NUM_CLK_SRC + 14) +#define IMX95_CLK_MQS1 (IMX95_CCM_NUM_CLK_SRC + 15) +#define IMX95_CLK_PDM (IMX95_CCM_NUM_CLK_SRC + 16) +#define IMX95_CLK_SAI1 (IMX95_CCM_NUM_CLK_SRC + 17) +#define IMX95_CLK_SENTINEL (IMX95_CCM_NUM_CLK_SRC + 18) +#define IMX95_CLK_TPM2 (IMX95_CCM_NUM_CLK_SRC + 19) +#define IMX95_CLK_TSTMR1 (IMX95_CCM_NUM_CLK_SRC + 20) +#define IMX95_CLK_CAMAPB (IMX95_CCM_NUM_CLK_SRC + 21) +#define IMX95_CLK_CAMAXI (IMX95_CCM_NUM_CLK_SRC + 22) +#define IMX95_CLK_CAMCM0 (IMX95_CCM_NUM_CLK_SRC + 23) +#define IMX95_CLK_CAMISI (IMX95_CCM_NUM_CLK_SRC + 24) +#define IMX95_CLK_MIPIPHYCFG (IMX95_CCM_NUM_CLK_SRC + 25) +#define IMX95_CLK_MIPIPHYPLLBYPASS (IMX95_CCM_NUM_CLK_SRC + 26) +#define IMX95_CLK_MIPIPHYPLLREF (IMX95_CCM_NUM_CLK_SRC + 27) +#define IMX95_CLK_MIPITESTBYTE (IMX95_CCM_NUM_CLK_SRC + 28) +#define IMX95_CLK_A55 (IMX95_CCM_NUM_CLK_SRC + 29) +#define IMX95_CLK_A55MTRBUS (IMX95_CCM_NUM_CLK_SRC + 30) +#define IMX95_CLK_A55PERIPH (IMX95_CCM_NUM_CLK_SRC + 31) +#define IMX95_CLK_DRAMALT (IMX95_CCM_NUM_CLK_SRC + 32) +#define IMX95_CLK_DRAMAPB (IMX95_CCM_NUM_CLK_SRC + 33) +#define IMX95_CLK_DISPAPB (IMX95_CCM_NUM_CLK_SRC + 34) +#define IMX95_CLK_DISPAXI (IMX95_CCM_NUM_CLK_SRC + 35) +#define IMX95_CLK_DISPDP (IMX95_CCM_NUM_CLK_SRC + 36) +#define IMX95_CLK_DISPOCRAM (IMX95_CCM_NUM_CLK_SRC + 37) +#define IMX95_CLK_DISPUSB31 (IMX95_CCM_NUM_CLK_SRC + 38) +#define IMX95_CLK_DISP1PIX (IMX95_CCM_NUM_CLK_SRC + 39) +#define IMX95_CLK_DISP2PIX (IMX95_CCM_NUM_CLK_SRC + 40) +#define IMX95_CLK_DISP3PIX (IMX95_CCM_NUM_CLK_SRC + 41) +#define IMX95_CLK_GPUAPB (IMX95_CCM_NUM_CLK_SRC + 42) +#define IMX95_CLK_GPU (IMX95_CCM_NUM_CLK_SRC + 43) +#define IMX95_CLK_HSIOACSCAN480M (IMX95_CCM_NUM_CLK_SRC + 44) +#define IMX95_CLK_HSIOACSCAN80M (IMX95_CCM_NUM_CLK_SRC + 45) +#define IMX95_CLK_HSIO (IMX95_CCM_NUM_CLK_SRC + 46) +#define IMX95_CLK_HSIOPCIEAUX (IMX95_CCM_NUM_CLK_SRC + 47) +#define IMX95_CLK_HSIOPCIETEST160M (IMX95_CCM_NUM_CLK_SRC + 48) +#define IMX95_CLK_HSIOPCIETEST400M (IMX95_CCM_NUM_CLK_SRC + 49) +#define IMX95_CLK_HSIOPCIETEST500M (IMX95_CCM_NUM_CLK_SRC + 50) +#define IMX95_CLK_HSIOUSBTEST50M (IMX95_CCM_NUM_CLK_SRC + 51) +#define IMX95_CLK_HSIOUSBTEST60M (IMX95_CCM_NUM_CLK_SRC + 52) +#define IMX95_CLK_BUSM7 (IMX95_CCM_NUM_CLK_SRC + 53) +#define IMX95_CLK_M7 (IMX95_CCM_NUM_CLK_SRC + 54) +#define IMX95_CLK_M7SYSTICK (IMX95_CCM_NUM_CLK_SRC + 55) +#define IMX95_CLK_BUSNETCMIX (IMX95_CCM_NUM_CLK_SRC + 56) +#define IMX95_CLK_ENET (IMX95_CCM_NUM_CLK_SRC + 57) +#define IMX95_CLK_ENETPHYTEST200M (IMX95_CCM_NUM_CLK_SRC + 58) +#define IMX95_CLK_ENETPHYTEST500M (IMX95_CCM_NUM_CLK_SRC + 59) +#define IMX95_CLK_ENETPHYTEST667M (IMX95_CCM_NUM_CLK_SRC + 60) +#define IMX95_CLK_ENETREF (IMX95_CCM_NUM_CLK_SRC + 61) +#define IMX95_CLK_ENETTIMER1 (IMX95_CCM_NUM_CLK_SRC + 62) +#define IMX95_CLK_MQS2 (IMX95_CCM_NUM_CLK_SRC + 63) +#define IMX95_CLK_SAI2 (IMX95_CCM_NUM_CLK_SRC + 64) +#define IMX95_CLK_NOCAPB (IMX95_CCM_NUM_CLK_SRC + 65) +#define IMX95_CLK_NOC (IMX95_CCM_NUM_CLK_SRC + 66) +#define IMX95_CLK_NPUAPB (IMX95_CCM_NUM_CLK_SRC + 67) +#define IMX95_CLK_NPU (IMX95_CCM_NUM_CLK_SRC + 68) +#define IMX95_CLK_CCMCKO1 (IMX95_CCM_NUM_CLK_SRC + 69) +#define IMX95_CLK_CCMCKO2 (IMX95_CCM_NUM_CLK_SRC + 70) +#define IMX95_CLK_CCMCKO3 (IMX95_CCM_NUM_CLK_SRC + 71) +#define IMX95_CLK_CCMCKO4 (IMX95_CCM_NUM_CLK_SRC + 72) +#define IMX95_CLK_VPUAPB (IMX95_CCM_NUM_CLK_SRC + 73) +#define IMX95_CLK_VPU (IMX95_CCM_NUM_CLK_SRC + 74) +#define IMX95_CLK_VPUDSP (IMX95_CCM_NUM_CLK_SRC + 75) +#define IMX95_CLK_VPUJPEG (IMX95_CCM_NUM_CLK_SRC + 76) +#define IMX95_CLK_AUDIOXCVR (IMX95_CCM_NUM_CLK_SRC + 77) +#define IMX95_CLK_BUSWAKEUP (IMX95_CCM_NUM_CLK_SRC + 78) +#define IMX95_CLK_CAN2 (IMX95_CCM_NUM_CLK_SRC + 79) +#define IMX95_CLK_CAN3 (IMX95_CCM_NUM_CLK_SRC + 80) +#define IMX95_CLK_CAN4 (IMX95_CCM_NUM_CLK_SRC + 81) +#define IMX95_CLK_CAN5 (IMX95_CCM_NUM_CLK_SRC + 82) +#define IMX95_CLK_FLEXIO1 (IMX95_CCM_NUM_CLK_SRC + 83) +#define IMX95_CLK_FLEXIO2 (IMX95_CCM_NUM_CLK_SRC + 84) +#define IMX95_CLK_FLEXSPI1 (IMX95_CCM_NUM_CLK_SRC + 85) +#define IMX95_CLK_I3C2 (IMX95_CCM_NUM_CLK_SRC + 86) +#define IMX95_CLK_I3C2SLOW (IMX95_CCM_NUM_CLK_SRC + 87) +#define IMX95_CLK_LPI2C3 (IMX95_CCM_NUM_CLK_SRC + 88) +#define IMX95_CLK_LPI2C4 (IMX95_CCM_NUM_CLK_SRC + 89) +#define IMX95_CLK_LPI2C5 (IMX95_CCM_NUM_CLK_SRC + 90) +#define IMX95_CLK_LPI2C6 (IMX95_CCM_NUM_CLK_SRC + 91) +#define IMX95_CLK_LPI2C7 (IMX95_CCM_NUM_CLK_SRC + 92) +#define IMX95_CLK_LPI2C8 (IMX95_CCM_NUM_CLK_SRC + 93) +#define IMX95_CLK_LPSPI3 (IMX95_CCM_NUM_CLK_SRC + 94) +#define IMX95_CLK_LPSPI4 (IMX95_CCM_NUM_CLK_SRC + 95) +#define IMX95_CLK_LPSPI5 (IMX95_CCM_NUM_CLK_SRC + 96) +#define IMX95_CLK_LPSPI6 (IMX95_CCM_NUM_CLK_SRC + 97) +#define IMX95_CLK_LPSPI7 (IMX95_CCM_NUM_CLK_SRC + 98) +#define IMX95_CLK_LPSPI8 (IMX95_CCM_NUM_CLK_SRC + 99) +#define IMX95_CLK_LPTMR2 (IMX95_CCM_NUM_CLK_SRC + 100) +#define IMX95_CLK_LPUART3 (IMX95_CCM_NUM_CLK_SRC + 101) +#define IMX95_CLK_LPUART4 (IMX95_CCM_NUM_CLK_SRC + 102) +#define IMX95_CLK_LPUART5 (IMX95_CCM_NUM_CLK_SRC + 103) +#define IMX95_CLK_LPUART6 (IMX95_CCM_NUM_CLK_SRC + 104) +#define IMX95_CLK_LPUART7 (IMX95_CCM_NUM_CLK_SRC + 105) +#define IMX95_CLK_LPUART8 (IMX95_CCM_NUM_CLK_SRC + 106) +#define IMX95_CLK_SAI3 (IMX95_CCM_NUM_CLK_SRC + 107) +#define IMX95_CLK_SAI4 (IMX95_CCM_NUM_CLK_SRC + 108) +#define IMX95_CLK_SAI5 (IMX95_CCM_NUM_CLK_SRC + 109) +#define IMX95_CLK_SPDIF (IMX95_CCM_NUM_CLK_SRC + 110) +#define IMX95_CLK_SWOTRACE (IMX95_CCM_NUM_CLK_SRC + 111) +#define IMX95_CLK_TPM4 (IMX95_CCM_NUM_CLK_SRC + 112) +#define IMX95_CLK_TPM5 (IMX95_CCM_NUM_CLK_SRC + 113) +#define IMX95_CLK_TPM6 (IMX95_CCM_NUM_CLK_SRC + 114) +#define IMX95_CLK_TSTMR2 (IMX95_CCM_NUM_CLK_SRC + 115) +#define IMX95_CLK_USBPHYBURUNIN (IMX95_CCM_NUM_CLK_SRC + 116) +#define IMX95_CLK_USDHC1 (IMX95_CCM_NUM_CLK_SRC + 117) +#define IMX95_CLK_USDHC2 (IMX95_CCM_NUM_CLK_SRC + 118) +#define IMX95_CLK_USDHC3 (IMX95_CCM_NUM_CLK_SRC + 119) +#define IMX95_CLK_V2XPK (IMX95_CCM_NUM_CLK_SRC + 120) +#define IMX95_CLK_WAKEUPAXI (IMX95_CCM_NUM_CLK_SRC + 121) +#define IMX95_CLK_XSPISLVROOT (IMX95_CCM_NUM_CLK_SRC + 122) + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_IMX95_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/imx_ccm_rev2.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/imx_ccm_rev2.h index 18c44cab..f7d6b7af 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/imx_ccm_rev2.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/imx_ccm_rev2.h @@ -23,11 +23,17 @@ /* LPUART */ #define IMX_CCM_LPUART_CLK 0x300UL #define IMX_CCM_LPUART1_CLK 0x300UL +#define IMX_CCM_LPUART0102_CLK 0x300UL #define IMX_CCM_LPUART2_CLK 0x301UL +#define IMX_CCM_LPUART0304_CLK 0x301UL #define IMX_CCM_LPUART3_CLK 0x302UL +#define IMX_CCM_LPUART0506_CLK 0x302UL #define IMX_CCM_LPUART4_CLK 0x303UL +#define IMX_CCM_LPUART0708_CLK 0x303UL #define IMX_CCM_LPUART5_CLK 0x304UL +#define IMX_CCM_LPUART0910_CLK 0x304UL #define IMX_CCM_LPUART6_CLK 0x305UL +#define IMX_CCM_LPUART1112_CLK 0x305UL #define IMX_CCM_LPUART7_CLK 0x306UL #define IMX_CCM_LPUART8_CLK 0x307UL #define IMX_CCM_LPUART9_CLK 0x308UL @@ -37,12 +43,16 @@ /* LPI2C */ #define IMX_CCM_LPI2C_CLK 0x400UL +#define IMX_CCM_LPI2C0102_CLK 0x400UL #define IMX_CCM_LPI2C1_CLK 0x400UL #define IMX_CCM_LPI2C2_CLK 0x401UL +#define IMX_CCM_LPI2C0304_CLK 0x401UL #define IMX_CCM_LPI2C3_CLK 0x402UL #define IMX_CCM_LPI2C4_CLK 0x403UL +#define IMX_CCM_LPI2C0506_CLK 0x402UL #define IMX_CCM_LPI2C5_CLK 0x404UL #define IMX_CCM_LPI2C6_CLK 0x405UL +#define IMX_CCM_LPI2C0708_CLK 0x403UL #define IMX_CCM_LPI2C7_CLK 0x406UL #define IMX_CCM_LPI2C8_CLK 0x407UL @@ -116,6 +126,19 @@ #define IMX_CCM_TPM5_CLK 0x1604UL #define IMX_CCM_TPM6_CLK 0x1605UL +/* FLEXIO */ +#define IMX_CCM_FLEXIO_CLK 0x1700UL +#define IMX_CCM_FLEXIO1_CLK 0x1700UL +#define IMX_CCM_FLEXIO2_CLK 0x1701UL + +/* NETC */ +#define IMX_CCM_NETC_CLK 0x1800UL + +/* MIPI CSI2RX */ +#define IMX_CCM_MIPI_CSI2RX_ROOT_CLK 0x1900UL +#define IMX_CCM_MIPI_CSI2RX_UI_CLK 0x2000UL +#define IMX_CCM_MIPI_CSI2RX_ESC_CLK 0x2100UL + /* QTMR */ #define IMX_CCM_QTMR_CLK 0x6000UL #define IMX_CCM_QTMR1_CLK 0x6000UL diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/kinetis_sim.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/kinetis_sim.h index 75e81791..9a199663 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/kinetis_sim.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/kinetis_sim.h @@ -15,6 +15,9 @@ #define KINETIS_SIM_DMAMUX_CLK KINETIS_SIM_BUS_CLK #define KINETIS_SIM_DMA_CLK KINETIS_SIM_CORESYS_CLK #define KINETIS_SIM_SIM_SOPT7 7 +#define KINETIS_SIM_OSCERCLK 8 +#define KINETIS_SIM_MCGIRCLK 12 +#define KINETIS_SIM_MCGPCLK 18 #define KINETIS_SIM_PLLFLLSEL_MCGFLLCLK 0 #define KINETIS_SIM_PLLFLLSEL_MCGPLLCLK 1 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/mcux_lpc_syscon_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/mcux_lpc_syscon_clock.h index 68fcb1df..c2673517 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/mcux_lpc_syscon_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/mcux_lpc_syscon_clock.h @@ -16,77 +16,86 @@ /* These IDs are used within SOC macros, and thus cannot be defined * using the standard MCUX_LPC_CLK_ID form */ -#define MCUX_CTIMER0_CLK 0 -#define MCUX_CTIMER1_CLK 1 -#define MCUX_CTIMER2_CLK 2 -#define MCUX_CTIMER3_CLK 3 -#define MCUX_CTIMER4_CLK 4 +#define MCUX_CTIMER0_CLK 0 +#define MCUX_CTIMER1_CLK 1 +#define MCUX_CTIMER2_CLK 2 +#define MCUX_CTIMER3_CLK 3 +#define MCUX_CTIMER4_CLK 4 -#define MCUX_FLEXCOMM0_CLK MCUX_LPC_CLK_ID(0x01, 0x00) -#define MCUX_FLEXCOMM1_CLK MCUX_LPC_CLK_ID(0x01, 0x01) -#define MCUX_FLEXCOMM2_CLK MCUX_LPC_CLK_ID(0x01, 0x02) -#define MCUX_FLEXCOMM3_CLK MCUX_LPC_CLK_ID(0x01, 0x03) -#define MCUX_FLEXCOMM4_CLK MCUX_LPC_CLK_ID(0x01, 0x04) -#define MCUX_FLEXCOMM5_CLK MCUX_LPC_CLK_ID(0x01, 0x05) -#define MCUX_FLEXCOMM6_CLK MCUX_LPC_CLK_ID(0x01, 0x06) -#define MCUX_FLEXCOMM7_CLK MCUX_LPC_CLK_ID(0x01, 0x07) -#define MCUX_FLEXCOMM8_CLK MCUX_LPC_CLK_ID(0x01, 0x08) -#define MCUX_FLEXCOMM9_CLK MCUX_LPC_CLK_ID(0x01, 0x09) -#define MCUX_FLEXCOMM10_CLK MCUX_LPC_CLK_ID(0x01, 0x0A) -#define MCUX_FLEXCOMM11_CLK MCUX_LPC_CLK_ID(0x01, 0x0B) -#define MCUX_FLEXCOMM12_CLK MCUX_LPC_CLK_ID(0x01, 0x0C) -#define MCUX_FLEXCOMM13_CLK MCUX_LPC_CLK_ID(0x01, 0x0D) -#define MCUX_HS_SPI_CLK MCUX_LPC_CLK_ID(0x01, 0x0E) -#define MCUX_FLEXCOMM14_CLK MCUX_HS_SPI_CLK -#define MCUX_PMIC_I2C_CLK MCUX_LPC_CLK_ID(0x01, 0x0F) -#define MCUX_HS_SPI1_CLK MCUX_LPC_CLK_ID(0x01, 0x10) +#define MCUX_FLEXCOMM0_CLK MCUX_LPC_CLK_ID(0x01, 0x00) +#define MCUX_FLEXCOMM1_CLK MCUX_LPC_CLK_ID(0x01, 0x01) +#define MCUX_FLEXCOMM2_CLK MCUX_LPC_CLK_ID(0x01, 0x02) +#define MCUX_FLEXCOMM3_CLK MCUX_LPC_CLK_ID(0x01, 0x03) +#define MCUX_FLEXCOMM4_CLK MCUX_LPC_CLK_ID(0x01, 0x04) +#define MCUX_FLEXCOMM5_CLK MCUX_LPC_CLK_ID(0x01, 0x05) +#define MCUX_FLEXCOMM6_CLK MCUX_LPC_CLK_ID(0x01, 0x06) +#define MCUX_FLEXCOMM7_CLK MCUX_LPC_CLK_ID(0x01, 0x07) +#define MCUX_FLEXCOMM8_CLK MCUX_LPC_CLK_ID(0x01, 0x08) +#define MCUX_FLEXCOMM9_CLK MCUX_LPC_CLK_ID(0x01, 0x09) +#define MCUX_FLEXCOMM10_CLK MCUX_LPC_CLK_ID(0x01, 0x0A) +#define MCUX_FLEXCOMM11_CLK MCUX_LPC_CLK_ID(0x01, 0x0B) +#define MCUX_FLEXCOMM12_CLK MCUX_LPC_CLK_ID(0x01, 0x0C) +#define MCUX_FLEXCOMM13_CLK MCUX_LPC_CLK_ID(0x01, 0x0D) +#define MCUX_HS_SPI_CLK MCUX_LPC_CLK_ID(0x01, 0x0E) +#define MCUX_FLEXCOMM14_CLK MCUX_HS_SPI_CLK +#define MCUX_PMIC_I2C_CLK MCUX_LPC_CLK_ID(0x01, 0x0F) +#define MCUX_HS_SPI1_CLK MCUX_LPC_CLK_ID(0x01, 0x10) -#define MCUX_USDHC1_CLK MCUX_LPC_CLK_ID(0x02, 0x00) -#define MCUX_USDHC2_CLK MCUX_LPC_CLK_ID(0x02, 0x01) +#define MCUX_USDHC1_CLK MCUX_LPC_CLK_ID(0x02, 0x00) +#define MCUX_USDHC2_CLK MCUX_LPC_CLK_ID(0x02, 0x01) -#define MCUX_MCAN_CLK MCUX_LPC_CLK_ID(0x03, 0x00) +#define MCUX_MCAN_CLK MCUX_LPC_CLK_ID(0x03, 0x00) -#define MCUX_BUS_CLK MCUX_LPC_CLK_ID(0x04, 0x00) +#define MCUX_BUS_CLK MCUX_LPC_CLK_ID(0x04, 0x00) -#define MCUX_SDIF_CLK MCUX_LPC_CLK_ID(0x05, 0x00) +#define MCUX_SDIF_CLK MCUX_LPC_CLK_ID(0x05, 0x00) -#define MCUX_I3C_CLK MCUX_LPC_CLK_ID(0x06, 0x00) +#define MCUX_I3C_CLK MCUX_LPC_CLK_ID(0x06, 0x00) +#define MCUX_I3C2_CLK MCUX_LPC_CLK_ID(0x06, 0x01) -#define MCUX_MIPI_DSI_DPHY_CLK MCUX_LPC_CLK_ID(0x07, 0x00) -#define MCUX_MIPI_DSI_ESC_CLK MCUX_LPC_CLK_ID(0x07, 0x01) +#define MCUX_MIPI_DSI_DPHY_CLK MCUX_LPC_CLK_ID(0x07, 0x00) +#define MCUX_MIPI_DSI_ESC_CLK MCUX_LPC_CLK_ID(0x07, 0x01) -#define MCUX_LCDIF_PIXEL_CLK MCUX_LPC_CLK_ID(0x08, 0x00) +#define MCUX_LCDIF_PIXEL_CLK MCUX_LPC_CLK_ID(0x08, 0x00) -#define MCUX_SCTIMER_CLK MCUX_LPC_CLK_ID(0x09, 0x00) +#define MCUX_SCTIMER_CLK MCUX_LPC_CLK_ID(0x09, 0x00) -#define MCUX_DMIC_CLK MCUX_LPC_CLK_ID(0x0A, 0x00) +#define MCUX_DMIC_CLK MCUX_LPC_CLK_ID(0x0A, 0x00) -#define MCUX_FLEXSPI_CLK MCUX_LPC_CLK_ID(0x0A, 0x00) -#define MCUX_FLEXSPI2_CLK MCUX_LPC_CLK_ID(0x0A, 0x01) +#define MCUX_FLEXSPI_CLK MCUX_LPC_CLK_ID(0x0A, 0x00) +#define MCUX_FLEXSPI2_CLK MCUX_LPC_CLK_ID(0x0A, 0x01) -#define MCUX_MRT_CLK MCUX_LPC_CLK_ID(0x0B, 0x00) -#define MCUX_FREEMRT_CLK MCUX_LPC_CLK_ID(0x0B, 0x01) +#define MCUX_MRT_CLK MCUX_LPC_CLK_ID(0x0B, 0x00) +#define MCUX_FREEMRT_CLK MCUX_LPC_CLK_ID(0x0B, 0x01) -#define MCUX_PORT0_CLK MCUX_LPC_CLK_ID(0x0C, 0x00) -#define MCUX_PORT1_CLK MCUX_LPC_CLK_ID(0x0C, 0x01) -#define MCUX_PORT2_CLK MCUX_LPC_CLK_ID(0x0C, 0x02) -#define MCUX_PORT3_CLK MCUX_LPC_CLK_ID(0x0C, 0x03) -#define MCUX_PORT4_CLK MCUX_LPC_CLK_ID(0x0C, 0x04) -#define MCUX_PORT5_CLK MCUX_LPC_CLK_ID(0x0C, 0x05) +#define MCUX_PORT0_CLK MCUX_LPC_CLK_ID(0x0C, 0x00) +#define MCUX_PORT1_CLK MCUX_LPC_CLK_ID(0x0C, 0x01) +#define MCUX_PORT2_CLK MCUX_LPC_CLK_ID(0x0C, 0x02) +#define MCUX_PORT3_CLK MCUX_LPC_CLK_ID(0x0C, 0x03) +#define MCUX_PORT4_CLK MCUX_LPC_CLK_ID(0x0C, 0x04) +#define MCUX_PORT5_CLK MCUX_LPC_CLK_ID(0x0C, 0x05) -#define MCUX_ENET_QOS_CLK MCUX_LPC_CLK_ID(0x0D, 0x00) +#define MCUX_ENET_QOS_CLK MCUX_LPC_CLK_ID(0x0D, 0x00) -#define MCUX_ENET_CLK MCUX_LPC_CLK_ID(0x0D, 0x80) -#define MCUX_ENET_PLL MCUX_LPC_CLK_ID(0x0D, 0x81) +#define MCUX_ENET_CLK MCUX_LPC_CLK_ID(0x0D, 0x80) +#define MCUX_ENET_PLL MCUX_LPC_CLK_ID(0x0D, 0x81) -#define MCUX_LCDIC_CLK MCUX_LPC_CLK_ID(0x0E, 0x00) +#define MCUX_LCDIC_CLK MCUX_LPC_CLK_ID(0x0E, 0x00) -#define MCUX_LPADC1_CLK MCUX_LPC_CLK_ID(0x0F, 0x00) -#define MCUX_LPADC2_CLK MCUX_LPC_CLK_ID(0x0F, 0x01) +#define MCUX_LPADC1_CLK MCUX_LPC_CLK_ID(0x0F, 0x00) +#define MCUX_LPADC2_CLK MCUX_LPC_CLK_ID(0x0F, 0x01) -#define MCUX_FLEXCAN0_CLK MCUX_LPC_CLK_ID(0x10, 0x00) -#define MCUX_FLEXCAN1_CLK MCUX_LPC_CLK_ID(0x10, 0x01) +#define MCUX_FLEXCAN0_CLK MCUX_LPC_CLK_ID(0x10, 0x00) +#define MCUX_FLEXCAN1_CLK MCUX_LPC_CLK_ID(0x10, 0x01) -#define MCUX_FLEXIO0_CLK MCUX_LPC_CLK_ID(0x11, 0x00) +#define MCUX_FLEXIO0_CLK MCUX_LPC_CLK_ID(0x11, 0x00) + +#define MCUX_AUDIO_MCLK MCUX_LPC_CLK_ID(0x12, 0x00) + +#define MCUX_LPUART0_CLK MCUX_LPC_CLK_ID(0x13, 0x00) +#define MCUX_LPUART1_CLK MCUX_LPC_CLK_ID(0x13, 0x01) +#define MCUX_LPUART2_CLK MCUX_LPC_CLK_ID(0x13, 0x02) +#define MCUX_LPUART3_CLK MCUX_LPC_CLK_ID(0x13, 0x03) +#define MCUX_LPUART4_CLK MCUX_LPC_CLK_ID(0x13, 0x04) #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_MCUX_LPC_SYSCON_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/npcm_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/npcm_clock.h new file mode 100644 index 00000000..d4a1b0c3 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/npcm_clock.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2024 Nuvoton Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_NPCM_CLOCK_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_NPCM_CLOCK_H_ + +/* clock bus references */ +#define NPCM_CLOCK_GROUP_OFFSET(N) ((N) << 3) + +#define NPCM_CLOCK_PWM_I (NPCM_CLOCK_GROUP_OFFSET(0) + 0) +#define NPCM_CLOCK_PWM_J (NPCM_CLOCK_GROUP_OFFSET(0) + 1) +#define NPCM_CLOCK_I3CI (NPCM_CLOCK_GROUP_OFFSET(0) + 2) +#define NPCM_CLOCK_UART3 (NPCM_CLOCK_GROUP_OFFSET(0) + 5) +#define NPCM_CLOCK_UART2 (NPCM_CLOCK_GROUP_OFFSET(0) + 6) +#define NPCM_CLOCK_SPIM (NPCM_CLOCK_GROUP_OFFSET(1) + 0) +#define NPCM_CLOCK_FIU (NPCM_CLOCK_GROUP_OFFSET(1) + 2) +#define NPCM_CLOCK_USB20 (NPCM_CLOCK_GROUP_OFFSET(1) + 3) +#define NPCM_CLOCK_UART (NPCM_CLOCK_GROUP_OFFSET(1) + 4) +#define NPCM_CLOCK_MFT1 (NPCM_CLOCK_GROUP_OFFSET(1) + 5) +#define NPCM_CLOCK_MFT2 (NPCM_CLOCK_GROUP_OFFSET(1) + 6) +#define NPCM_CLOCK_MFT3 (NPCM_CLOCK_GROUP_OFFSET(1) + 7) +#define NPCM_CLOCK_PWM_A (NPCM_CLOCK_GROUP_OFFSET(2) + 0) +#define NPCM_CLOCK_PWM_B (NPCM_CLOCK_GROUP_OFFSET(2) + 1) +#define NPCM_CLOCK_PWM_C (NPCM_CLOCK_GROUP_OFFSET(2) + 2) +#define NPCM_CLOCK_PWM_D (NPCM_CLOCK_GROUP_OFFSET(2) + 3) +#define NPCM_CLOCK_PWM_E (NPCM_CLOCK_GROUP_OFFSET(2) + 4) +#define NPCM_CLOCK_PWM_F (NPCM_CLOCK_GROUP_OFFSET(2) + 5) +#define NPCM_CLOCK_PWM_G (NPCM_CLOCK_GROUP_OFFSET(2) + 6) +#define NPCM_CLOCK_PWM_H (NPCM_CLOCK_GROUP_OFFSET(2) + 7) +#define NPCM_CLOCK_SMB1 (NPCM_CLOCK_GROUP_OFFSET(3) + 0) +#define NPCM_CLOCK_SMB2 (NPCM_CLOCK_GROUP_OFFSET(3) + 1) +#define NPCM_CLOCK_SMB3 (NPCM_CLOCK_GROUP_OFFSET(3) + 2) +#define NPCM_CLOCK_SMB4 (NPCM_CLOCK_GROUP_OFFSET(3) + 3) +#define NPCM_CLOCK_SMB5 (NPCM_CLOCK_GROUP_OFFSET(3) + 4) +#define NPCM_CLOCK_SMB6 (NPCM_CLOCK_GROUP_OFFSET(3) + 5) +#define NPCM_CLOCK_GDMA (NPCM_CLOCK_GROUP_OFFSET(3) + 7) +#define NPCM_CLOCK_ITIM1 (NPCM_CLOCK_GROUP_OFFSET(4) + 0) +#define NPCM_CLOCK_ITIM2 (NPCM_CLOCK_GROUP_OFFSET(4) + 1) +#define NPCM_CLOCK_ITIM3 (NPCM_CLOCK_GROUP_OFFSET(4) + 2) +#define NPCM_CLOCK_SMB_DMA (NPCM_CLOCK_GROUP_OFFSET(4) + 3) +#define NPCM_CLOCK_ADC (NPCM_CLOCK_GROUP_OFFSET(4) + 4) +#define NPCM_CLOCK_PECI (NPCM_CLOCK_GROUP_OFFSET(4) + 5) +#define NPCM_CLOCK_SPIP1 (NPCM_CLOCK_GROUP_OFFSET(4) + 7) +#define NPCM_CLOCK_UART4 (NPCM_CLOCK_GROUP_OFFSET(5) + 0) +#define NPCM_CLOCK_C2HACC (NPCM_CLOCK_GROUP_OFFSET(5) + 3) +#define NPCM_CLOCK_SHM_REG (NPCM_CLOCK_GROUP_OFFSET(5) + 4) +#define NPCM_CLOCK_SHM (NPCM_CLOCK_GROUP_OFFSET(5) + 5) +#define NPCM_CLOCK_DP80 (NPCM_CLOCK_GROUP_OFFSET(5) + 6) +#define NPCM_CLOCK_MSWC (NPCM_CLOCK_GROUP_OFFSET(5) + 7) +#define NPCM_CLOCK_ITIM4 (NPCM_CLOCK_GROUP_OFFSET(6) + 0) +#define NPCM_CLOCK_ITIM5 (NPCM_CLOCK_GROUP_OFFSET(6) + 1) +#define NPCM_CLOCK_ITIM6 (NPCM_CLOCK_GROUP_OFFSET(6) + 2) +#define NPCM_CLOCK_RNG (NPCM_CLOCK_GROUP_OFFSET(6) + 3) +#define NPCM_CLOCK_SHA (NPCM_CLOCK_GROUP_OFFSET(6) + 5) +#define NPCM_CLOCK_ESPI (NPCM_CLOCK_GROUP_OFFSET(6) + 7) +#define NPCM_CLOCK_SMB7 (NPCM_CLOCK_GROUP_OFFSET(7) + 0) +#define NPCM_CLOCK_SMB8 (NPCM_CLOCK_GROUP_OFFSET(7) + 1) +#define NPCM_CLOCK_SMB9 (NPCM_CLOCK_GROUP_OFFSET(7) + 2) +#define NPCM_CLOCK_SMB10 (NPCM_CLOCK_GROUP_OFFSET(7) + 3) +#define NPCM_CLOCK_SMB11 (NPCM_CLOCK_GROUP_OFFSET(7) + 4) +#define NPCM_CLOCK_SMB12 (NPCM_CLOCK_GROUP_OFFSET(7) + 5) +#define NPCM_CLOCK_SIOX2 (NPCM_CLOCK_GROUP_OFFSET(7) + 6) +#define NPCM_CLOCK_SIOX1 (NPCM_CLOCK_GROUP_OFFSET(7) + 7) +#define NPCM_CLOCK_I3CI2 (NPCM_CLOCK_GROUP_OFFSET(8) + 0) +#define NPCM_CLOCK_I3CI3 (NPCM_CLOCK_GROUP_OFFSET(8) + 1) +#define NPCM_CLOCK_I3CI4 (NPCM_CLOCK_GROUP_OFFSET(8) + 2) +#define NPCM_CLOCK_I3CI5 (NPCM_CLOCK_GROUP_OFFSET(8) + 3) +#define NPCM_CLOCK_I3CI6 (NPCM_CLOCK_GROUP_OFFSET(8) + 4) + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_NPCM_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/numaker_m2l31x_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/numaker_m2l31x_clock.h index fab7f656..85f411cf 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/numaker_m2l31x_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/numaker_m2l31x_clock.h @@ -271,4 +271,17 @@ #define NUMAKER_LPADC0_MODULE 0xB5431218 #define NUMAKER_OPA_MODULE 0xA000001B +#define NUMAKER_CLK_PMUCTL_PDMSEL_PD 0x00000000 +#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD0 0x00000000 +#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD1 0x00000001 +#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD2 0x00000002 +#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD3 0x00000003 +#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD4 0x00000004 +#define NUMAKER_CLK_PMUCTL_PDMSEL_NPD5 0x00000005 +#define NUMAKER_CLK_PMUCTL_PDMSEL_SPD0 0x00000008 +#define NUMAKER_CLK_PMUCTL_PDMSEL_SPD1 0x00000009 +#define NUMAKER_CLK_PMUCTL_PDMSEL_SPD2 0x0000000A +#define NUMAKER_CLK_PMUCTL_PDMSEL_DPD0 0x0000000C +#define NUMAKER_CLK_PMUCTL_PDMSEL_DPD1 0x0000000D + #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/numaker_m46x_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/numaker_m46x_clock.h index 9243ab76..82deb4dc 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/numaker_m46x_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/numaker_m46x_clock.h @@ -1300,4 +1300,10 @@ /* End of M460 BSP clk.h copy */ +#define NUMAKER_CLK_PMUCTL_PDMSEL_PD 0x00000000 +#define NUMAKER_CLK_PMUCTL_PDMSEL_LLPD 0x00000001 +#define NUMAKER_CLK_PMUCTL_PDMSEL_FWPD 0x00000002 +#define NUMAKER_CLK_PMUCTL_PDMSEL_SPD 0x00000004 +#define NUMAKER_CLK_PMUCTL_PDMSEL_DPD 0x00000006 + #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/nxp_s32z2_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/nxp_s32z2_clock.h index 6471a2c5..b19e44ef 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/nxp_s32z2_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/nxp_s32z2_clock.h @@ -1,5 +1,5 @@ /* - * Copyright 2023 NXP + * Copyright 2023-2024 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -292,9 +292,5 @@ #define NXP_S32_SPI9_CLK 284U #define NXP_S32_SRX0_CLK 285U #define NXP_S32_SRX1_CLK 286U -#define NXP_S32_CORE_PLL_REFCLKOUT 287U -#define NXP_S32_CORE_PLL_FBCLKOUT 288U -#define NXP_S32_PERIPH_PLL_REFCLKOUT 289U -#define NXP_S32_PERIPH_PLL_FBCLKOUT 290U #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_NXP_S32Z2_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/ra_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/ra_clock.h index 09035308..97fc2e41 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/ra_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/ra_clock.h @@ -7,129 +7,10 @@ #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_RA_H_ #define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_RA_H_ -#define RA_PLL_SOURCE_HOCO 0 -#define RA_PLL_SOURCE_MOCO 1 -#define RA_PLL_SOURCE_LOCO 2 -#define RA_PLL_SOURCE_MAIN_OSC 3 -#define RA_PLL_SOURCE_SUBCLOCK 4 -#define RA_PLL_SOURCE_DISABLE 0xff - -#define RA_CLOCK_SOURCE_HOCO 0 -#define RA_CLOCK_SOURCE_MOCO 1 -#define RA_CLOCK_SOURCE_LOCO 2 -#define RA_CLOCK_SOURCE_MAIN_OSC 3 -#define RA_CLOCK_SOURCE_SUBCLOCK 4 -#define RA_CLOCK_SOURCE_PLL 5 -#define RA_CLOCK_SOURCE_PLL1P RA_CLOCK_SOURCE_PLL -#define RA_CLOCK_SOURCE_PLL2 6 -#define RA_CLOCK_SOURCE_PLL2P RA_CLOCK_SOURCE_PLL2 -#define RA_CLOCK_SOURCE_PLL1Q 7 -#define RA_CLOCK_SOURCE_PLL1R 8 -#define RA_CLOCK_SOURCE_PLL2Q 9 -#define RA_CLOCK_SOURCE_PLL2R 10 -#define RA_CLOCK_SOURCE_DISABLE 0xff - -#define RA_SYS_CLOCK_DIV_1 0 -#define RA_SYS_CLOCK_DIV_2 1 -#define RA_SYS_CLOCK_DIV_4 2 -#define RA_SYS_CLOCK_DIV_8 3 -#define RA_SYS_CLOCK_DIV_16 4 -#define RA_SYS_CLOCK_DIV_32 5 -#define RA_SYS_CLOCK_DIV_64 6 -#define RA_SYS_CLOCK_DIV_128 7 /* available for CLKOUT only */ -#define RA_SYS_CLOCK_DIV_3 8 -#define RA_SYS_CLOCK_DIV_6 9 -#define RA_SYS_CLOCK_DIV_12 10 - -/* PLL divider options. */ -#define RA_PLL_DIV_1 0 -#define RA_PLL_DIV_2 1 -#define RA_PLL_DIV_3 2 -#define RA_PLL_DIV_4 3 -#define RA_PLL_DIV_5 4 -#define RA_PLL_DIV_6 5 -#define RA_PLL_DIV_8 7 -#define RA_PLL_DIV_9 8 -#define RA_PLL_DIV_16 15 - -/* USB clock divider options. */ -#define RA_USB_CLOCK_DIV_1 0 -#define RA_USB_CLOCK_DIV_2 1 -#define RA_USB_CLOCK_DIV_3 2 -#define RA_USB_CLOCK_DIV_4 3 -#define RA_USB_CLOCK_DIV_5 4 -#define RA_USB_CLOCK_DIV_6 5 -#define RA_USB_CLOCK_DIV_8 7 - -/* USB60 clock divider options. */ -#define RA_USB60_CLOCK_DIV_1 0 -#define RA_USB60_CLOCK_DIV_2 1 -#define RA_USB60_CLOCK_DIV_3 5 -#define RA_USB60_CLOCK_DIV_4 2 -#define RA_USB60_CLOCK_DIV_5 6 -#define RA_USB60_CLOCK_DIV_6 3 -#define RA_USB60_CLOCK_DIV_8 4 - -/* OCTA clock divider options. */ -#define RA_OCTA_CLOCK_DIV_1 0 -#define RA_OCTA_CLOCK_DIV_2 1 -#define RA_OCTA_CLOCK_DIV_4 2 -#define RA_OCTA_CLOCK_DIV_6 3 -#define RA_OCTA_CLOCK_DIV_8 4 - -/* CANFD clock divider options. */ -#define RA_CANFD_CLOCK_DIV_1 0 -#define RA_CANFD_CLOCK_DIV_2 1 -#define RA_CANFD_CLOCK_DIV_3 5 -#define RA_CANFD_CLOCK_DIV_4 2 -#define RA_CANFD_CLOCK_DIV_5 6 -#define RA_CANFD_CLOCK_DIV_6 3 -#define RA_CANFD_CLOCK_DIV_8 4 - -/* SCI clock divider options. */ -#define RA_SCI_CLOCK_DIV_1 0 -#define RA_SCI_CLOCK_DIV_2 1 -#define RA_SCI_CLOCK_DIV_3 5 -#define RA_SCI_CLOCK_DIV_4 2 -#define RA_SCI_CLOCK_DIV_5 6 -#define RA_SCI_CLOCK_DIV_6 3 -#define RA_SCI_CLOCK_DIV_8 4 - -/* SPI clock divider options. */ -#define RA_SPI_CLOCK_DIV_1 0 -#define RA_SPI_CLOCK_DIV_2 1 -#define RA_SPI_CLOCK_DIV_3 5 -#define RA_SPI_CLOCK_DIV_4 2 -#define RA_SPI_CLOCK_DIV_5 6 -#define RA_SPI_CLOCK_DIV_6 3 -#define RA_SPI_CLOCK_DIV_8 4 - -/* CEC clock divider options. */ -#define RA_CEC_CLOCK_DIV_1 0 -#define RA_CEC_CLOCK_DIV_2 1 - -/* I3C clock divider options. */ -#define RA_I3C_CLOCK_DIV_1 0 -#define RA_I3C_CLOCK_DIV_2 1 -#define RA_I3C_CLOCK_DIV_3 5 -#define RA_I3C_CLOCK_DIV_4 2 -#define RA_I3C_CLOCK_DIV_5 6 -#define RA_I3C_CLOCK_DIV_6 3 -#define RA_I3C_CLOCK_DIV_8 4 - -/* LCD clock divider options. */ -#define RA_LCD_CLOCK_DIV_1 0 -#define RA_LCD_CLOCK_DIV_2 1 -#define RA_LCD_CLOCK_DIV_3 5 -#define RA_LCD_CLOCK_DIV_4 2 -#define RA_LCD_CLOCK_DIV_5 6 -#define RA_LCD_CLOCK_DIV_6 3 -#define RA_LCD_CLOCK_DIV_8 4 - -#define MSTPA 0x40203000 -#define MSTPB 0x40203004 -#define MSTPC 0x40203008 -#define MSTPD 0x4020300C -#define MSTPE 0x40203010 +#define MSTPA 0 +#define MSTPB 1 +#define MSTPC 2 +#define MSTPD 3 +#define MSTPE 4 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_RA_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/scg_k4.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/scg_k4.h new file mode 100644 index 00000000..985629a1 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/scg_k4.h @@ -0,0 +1,14 @@ +/* + * Copyright 2023 NXP + * SPDX-License-Identifier: Apache-2.0 + */ + +#define SCG_K4_CORESYS_CLK 0U +#define SCG_K4_SLOW_CLK 1U +#define SCG_K4_PLAT_CLK 2U +#define SCG_K4_SYS_CLK 3U +#define SCG_K4_BUS_CLK 4U +#define SCG_K4_SYSOSC_CLK 5U +#define SCG_K4_SIRC_CLK 6U +#define SCG_K4_FIRC_CLK 7U +#define SCG_K4_RTCOSC_CLK 8U diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/common-clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/common-clock.h new file mode 100644 index 00000000..1b5aa5d7 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/common-clock.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2024 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_COMMON_CLOCK_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_COMMON_CLOCK_H_ + +/* + * DT macros for clock branches. + * Must stay in sync with the enum sl_clock_branch_t in the Silicon Labs HAL to be + * interpreted correctly by the clock control driver. + */ +#define CLOCK_BRANCH_SYSCLK 0 +#define CLOCK_BRANCH_HCLK 1 +#define CLOCK_BRANCH_HCLKRADIO 2 +#define CLOCK_BRANCH_PCLK 3 +#define CLOCK_BRANCH_LSPCLK 4 +#define CLOCK_BRANCH_TRACECLK 5 +#define CLOCK_BRANCH_ADCCLK 6 +#define CLOCK_BRANCH_EXPORTCLK 7 +#define CLOCK_BRANCH_EM01GRPACLK 8 +#define CLOCK_BRANCH_EM01GRPBCLK 9 +#define CLOCK_BRANCH_EM01GRPCCLK 10 +#define CLOCK_BRANCH_EM01GRPDCLK 11 +#define CLOCK_BRANCH_EM23GRPACLK 12 +#define CLOCK_BRANCH_EM4GRPACLK 13 +#define CLOCK_BRANCH_QSPISYSCLK 14 +#define CLOCK_BRANCH_IADCCLK 15 +#define CLOCK_BRANCH_WDOG0CLK 16 +#define CLOCK_BRANCH_WDOG1CLK 17 +#define CLOCK_BRANCH_RTCCCLK 18 +#define CLOCK_BRANCH_SYSRTCCLK 19 +#define CLOCK_BRANCH_EUART0CLK 20 +#define CLOCK_BRANCH_EUSART0CLK 21 +#define CLOCK_BRANCH_DPLLREFCLK 22 +#define CLOCK_BRANCH_I2C0CLK 23 +#define CLOCK_BRANCH_LCDCLK 24 +#define CLOCK_BRANCH_PIXELRZCLK 25 +#define CLOCK_BRANCH_PCNT0CLK 26 +#define CLOCK_BRANCH_PRORTCCLK 27 +#define CLOCK_BRANCH_SYSTICKCLK 28 +#define CLOCK_BRANCH_LESENSEHFCLK 29 +#define CLOCK_BRANCH_VDAC0CLK 30 +#define CLOCK_BRANCH_VDAC1CLK 31 +#define CLOCK_BRANCH_USB0CLK 32 +#define CLOCK_BRANCH_FLPLLREFCLK 33 +#define CLOCK_BRANCH_INVALID 34 + +#define CLOCK_BIT_MASK 0x03FUL +#define CLOCK_REG_MASK 0x1C0UL + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_COMMON_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg21-clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg21-clock.h new file mode 100644 index 00000000..dcfcb4ae --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg21-clock.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2024 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + * + * This file was generated by the script gen_clock_control.py in the hal_silabs module. + * Do not manually edit. + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_XG21_CLOCK_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_XG21_CLOCK_H_ + +#include +#include "common-clock.h" + +/* + * DT macros for clock tree nodes. + * Defined as: + * 0..5 - Bit within CLKEN register + * 6..8 - CLKEN register number + * Must stay in sync with equivalent SL_BUS_*_VALUE constants in the Silicon Labs HAL to be + * interpreted correctly by the clock control driver. + */ +#define CLOCK_AUTO 0xFFFFFFFFUL + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_XG21_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg22-clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg22-clock.h new file mode 100644 index 00000000..ef9c8623 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg22-clock.h @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2024 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + * + * This file was generated by the script gen_clock_control.py in the hal_silabs module. + * Do not manually edit. + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_XG22_CLOCK_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_XG22_CLOCK_H_ + +#include +#include "common-clock.h" + +/* + * DT macros for clock tree nodes. + * Defined as: + * 0..5 - Bit within CLKEN register + * 6..8 - CLKEN register number + * Must stay in sync with equivalent SL_BUS_*_VALUE constants in the Silicon Labs HAL to be + * interpreted correctly by the clock control driver. + */ +#define CLOCK_AGC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 0)) +#define CLOCK_AMUXCP0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 11)) +#define CLOCK_BUFC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 11)) +#define CLOCK_BURAM (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 28)) +#define CLOCK_BURTC (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 29)) +#define CLOCK_CRYPTOACC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 13)) +#define CLOCK_DCDC (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 31)) +#define CLOCK_DPLL0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 17)) +#define CLOCK_EUART0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 24)) +#define CLOCK_FRC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 3)) +#define CLOCK_FSRCO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 20)) +#define CLOCK_GPCRC0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 3)) +#define CLOCK_GPIO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 26)) +#define CLOCK_HFRCO0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 18)) +#define CLOCK_HFXO0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 19)) +#define CLOCK_I2C0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 14)) +#define CLOCK_I2C1 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 15)) +#define CLOCK_IADC0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 10)) +#define CLOCK_ICACHE0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 16)) +#define CLOCK_IFADCDEBUG (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 12)) +#define CLOCK_LDMA0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 0)) +#define CLOCK_LDMAXBAR0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 1)) +#define CLOCK_LETIMER0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 12)) +#define CLOCK_LFRCO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 21)) +#define CLOCK_LFXO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 22)) +#define CLOCK_MODEM (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 1)) +#define CLOCK_MSC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 17)) +#define CLOCK_PDM (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 25)) +#define CLOCK_PRORTC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 10)) +#define CLOCK_PROTIMER (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 4)) +#define CLOCK_PRS (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 27)) +#define CLOCK_RAC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 5)) +#define CLOCK_RADIOAES (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 2)) +#define CLOCK_RDMAILBOX0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 8)) +#define CLOCK_RDMAILBOX1 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 9)) +#define CLOCK_RDSCRATCHPAD (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 7)) +#define CLOCK_RFCRC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 2)) +#define CLOCK_RFSENSE (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 14)) +#define CLOCK_RTCC (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 30)) +#define CLOCK_SMU (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 15)) +#define CLOCK_SYNTH (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 6)) +#define CLOCK_SYSCFG (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 16)) +#define CLOCK_TIMER0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 4)) +#define CLOCK_TIMER1 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 5)) +#define CLOCK_TIMER2 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 6)) +#define CLOCK_TIMER3 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 7)) +#define CLOCK_TIMER4 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 18)) +#define CLOCK_ULFRCO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 23)) +#define CLOCK_USART0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 8)) +#define CLOCK_USART1 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 9)) +#define CLOCK_WDOG0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 13)) + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_XG22_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg23-clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg23-clock.h new file mode 100644 index 00000000..29914ecd --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg23-clock.h @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2024 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + * + * This file was generated by the script gen_clock_control.py in the hal_silabs module. + * Do not manually edit. + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_XG23_CLOCK_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_XG23_CLOCK_H_ + +#include +#include "common-clock.h" + +/* + * DT macros for clock tree nodes. + * Defined as: + * 0..5 - Bit within CLKEN register + * 6..8 - CLKEN register number + * Must stay in sync with equivalent SL_BUS_*_VALUE constants in the Silicon Labs HAL to be + * interpreted correctly by the clock control driver. + */ +#define CLOCK_ACMP0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 18)) +#define CLOCK_ACMP1 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 19)) +#define CLOCK_AGC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 0)) +#define CLOCK_AMUXCP0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 11)) +#define CLOCK_BUFC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 11)) +#define CLOCK_BURAM (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 28)) +#define CLOCK_BURTC (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 29)) +#define CLOCK_DCDC (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 31)) +#define CLOCK_DMEM (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 27)) +#define CLOCK_DPLL0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 17)) +#define CLOCK_ECAIFADC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 28)) +#define CLOCK_EUSART0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 22)) +#define CLOCK_EUSART1 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 23)) +#define CLOCK_EUSART2 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 24)) +#define CLOCK_FRC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 3)) +#define CLOCK_FSRCO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 21)) +#define CLOCK_GPCRC0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 3)) +#define CLOCK_GPIO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 26)) +#define CLOCK_HFRCO0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 18)) +#define CLOCK_HFRCOEM23 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 19)) +#define CLOCK_HFXO0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 20)) +#define CLOCK_HOSTMAILBOX (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 8)) +#define CLOCK_I2C0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 14)) +#define CLOCK_I2C1 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 15)) +#define CLOCK_IADC0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 10)) +#define CLOCK_ICACHE0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 15)) +#define CLOCK_KEYSCAN (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 13)) +#define CLOCK_LCD (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 12)) +#define CLOCK_LDMA0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 0)) +#define CLOCK_LDMAXBAR0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 1)) +#define CLOCK_LESENSE (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 25)) +#define CLOCK_LETIMER0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 12)) +#define CLOCK_LFRCO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 22)) +#define CLOCK_LFXO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 23)) +#define CLOCK_MODEM (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 1)) +#define CLOCK_MSC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 16)) +#define CLOCK_PCNT0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 21)) +#define CLOCK_PROTIMER (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 4)) +#define CLOCK_PRS (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 27)) +#define CLOCK_RAC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 5)) +#define CLOCK_RADIOAES (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 2)) +#define CLOCK_RFCRC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 2)) +#define CLOCK_RFECA0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 25)) +#define CLOCK_RFECA1 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 26)) +#define CLOCK_RFMAILBOX (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 9)) +#define CLOCK_RFSCRATCHPAD (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 7)) +#define CLOCK_SEMAILBOX (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 10)) +#define CLOCK_SMU (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 14)) +#define CLOCK_SYNTH (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 6)) +#define CLOCK_SYSCFG (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 16)) +#define CLOCK_SYSRTC0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 30)) +#define CLOCK_TIMER0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 4)) +#define CLOCK_TIMER1 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 5)) +#define CLOCK_TIMER2 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 6)) +#define CLOCK_TIMER3 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 7)) +#define CLOCK_TIMER4 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 8)) +#define CLOCK_ULFRCO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 24)) +#define CLOCK_USART0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 9)) +#define CLOCK_VDAC0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 20)) +#define CLOCK_WDOG0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 13)) +#define CLOCK_WDOG1 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 17)) + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_XG23_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg24-clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg24-clock.h new file mode 100644 index 00000000..7fca2a5b --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg24-clock.h @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2024 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + * + * This file was generated by the script gen_clock_control.py in the hal_silabs module. + * Do not manually edit. + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_XG24_CLOCK_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_XG24_CLOCK_H_ + +#include +#include "common-clock.h" + +/* + * DT macros for clock tree nodes. + * Defined as: + * 0..5 - Bit within CLKEN register + * 6..8 - CLKEN register number + * Must stay in sync with equivalent SL_BUS_*_VALUE constants in the Silicon Labs HAL to be + * interpreted correctly by the clock control driver. + */ +#define CLOCK_ACMP0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 18)) +#define CLOCK_ACMP1 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 19)) +#define CLOCK_AGC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 0)) +#define CLOCK_AMUXCP0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 11)) +#define CLOCK_BUFC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 11)) +#define CLOCK_BURAM (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 28)) +#define CLOCK_BURTC (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 29)) +#define CLOCK_DCDC (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 31)) +#define CLOCK_DMEM (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 27)) +#define CLOCK_DPLL0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 17)) +#define CLOCK_ECAIFADC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 28)) +#define CLOCK_EUSART0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 22)) +#define CLOCK_EUSART1 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 23)) +#define CLOCK_FRC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 3)) +#define CLOCK_FSRCO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 21)) +#define CLOCK_GPCRC0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 3)) +#define CLOCK_GPIO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 26)) +#define CLOCK_HFRCO0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 18)) +#define CLOCK_HFRCOEM23 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 19)) +#define CLOCK_HFXO0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 20)) +#define CLOCK_HOSTMAILBOX (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 8)) +#define CLOCK_I2C0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 14)) +#define CLOCK_I2C1 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 15)) +#define CLOCK_IADC0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 10)) +#define CLOCK_ICACHE0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 15)) +#define CLOCK_KEYSCAN (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 13)) +#define CLOCK_LDMA0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 0)) +#define CLOCK_LDMAXBAR0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 1)) +#define CLOCK_LETIMER0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 12)) +#define CLOCK_LFRCO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 22)) +#define CLOCK_LFXO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 23)) +#define CLOCK_MODEM (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 1)) +#define CLOCK_MSC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 16)) +#define CLOCK_MVP (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 30)) +#define CLOCK_PCNT0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 21)) +#define CLOCK_PROTIMER (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 4)) +#define CLOCK_PRS (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 27)) +#define CLOCK_RAC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 5)) +#define CLOCK_RADIOAES (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 2)) +#define CLOCK_RFCRC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 2)) +#define CLOCK_RFECA0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 25)) +#define CLOCK_RFECA1 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 26)) +#define CLOCK_RFMAILBOX (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 9)) +#define CLOCK_RFSCRATCHPAD (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 7)) +#define CLOCK_SEMAILBOX (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 10)) +#define CLOCK_SMU (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 14)) +#define CLOCK_SYNTH (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 6)) +#define CLOCK_SYSCFG (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 16)) +#define CLOCK_SYSRTC0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 30)) +#define CLOCK_TIMER0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 4)) +#define CLOCK_TIMER1 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 5)) +#define CLOCK_TIMER2 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 6)) +#define CLOCK_TIMER3 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 7)) +#define CLOCK_TIMER4 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 8)) +#define CLOCK_ULFRCO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 24)) +#define CLOCK_USART0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 9)) +#define CLOCK_VDAC0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 20)) +#define CLOCK_VDAC1 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 29)) +#define CLOCK_WDOG0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 13)) +#define CLOCK_WDOG1 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 17)) + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_XG24_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg27-clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg27-clock.h new file mode 100644 index 00000000..c21a9e5c --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/silabs/xg27-clock.h @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2024 Silicon Laboratories Inc. + * + * SPDX-License-Identifier: Apache-2.0 + * + * This file was generated by the script gen_clock_control.py in the hal_silabs module. + * Do not manually edit. + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_XG27_CLOCK_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_XG27_CLOCK_H_ + +#include +#include "common-clock.h" + +/* + * DT macros for clock tree nodes. + * Defined as: + * 0..5 - Bit within CLKEN register + * 6..8 - CLKEN register number + * Must stay in sync with equivalent SL_BUS_*_VALUE constants in the Silicon Labs HAL to be + * interpreted correctly by the clock control driver. + */ +#define CLOCK_ACMP0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 19)) +#define CLOCK_AGC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 0)) +#define CLOCK_AMUXCP0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 11)) +#define CLOCK_BUFC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 11)) +#define CLOCK_BURAM (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 28)) +#define CLOCK_BURTC (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 29)) +#define CLOCK_CRYPTOACC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 13)) +#define CLOCK_DCDC (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 31)) +#define CLOCK_DPLL0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 17)) +#define CLOCK_ETAMPDET (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 28)) +#define CLOCK_EUSART0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 20)) +#define CLOCK_FRC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 3)) +#define CLOCK_FSRCO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 20)) +#define CLOCK_GPCRC0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 3)) +#define CLOCK_GPIO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 26)) +#define CLOCK_HFRCO0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 18)) +#define CLOCK_HFXO0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 19)) +#define CLOCK_I2C0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 14)) +#define CLOCK_I2C1 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 15)) +#define CLOCK_IADC0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 10)) +#define CLOCK_ICACHE0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 16)) +#define CLOCK_IFADCDEBUG (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 12)) +#define CLOCK_LDMA0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 0)) +#define CLOCK_LDMAXBAR0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 1)) +#define CLOCK_LETIMER0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 12)) +#define CLOCK_LFRCO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 21)) +#define CLOCK_LFXO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 22)) +#define CLOCK_MODEM (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 1)) +#define CLOCK_MSC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 17)) +#define CLOCK_PDM (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 25)) +#define CLOCK_PRORTC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 10)) +#define CLOCK_PROTIMER (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 4)) +#define CLOCK_PRS (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 27)) +#define CLOCK_RAC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 5)) +#define CLOCK_RADIOAES (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 2)) +#define CLOCK_RDMAILBOX0 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 8)) +#define CLOCK_RDMAILBOX1 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 9)) +#define CLOCK_RDSCRATCHPAD (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 7)) +#define CLOCK_RFCRC (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 2)) +#define CLOCK_RFSENSE (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 14)) +#define CLOCK_RTCC (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 30)) +#define CLOCK_SMU (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 15)) +#define CLOCK_SYNTH (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 6)) +#define CLOCK_SYSCFG (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 16)) +#define CLOCK_TIMER0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 4)) +#define CLOCK_TIMER1 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 5)) +#define CLOCK_TIMER2 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 6)) +#define CLOCK_TIMER3 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 7)) +#define CLOCK_TIMER4 (FIELD_PREP(CLOCK_REG_MASK, 1) | FIELD_PREP(CLOCK_BIT_MASK, 18)) +#define CLOCK_ULFRCO (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 23)) +#define CLOCK_USART0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 8)) +#define CLOCK_USART1 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 9)) +#define CLOCK_WDOG0 (FIELD_PREP(CLOCK_REG_MASK, 0) | FIELD_PREP(CLOCK_BIT_MASK, 13)) + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_SILABS_XG27_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32_clock.h index a669f49b..37241a26 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32_clock.h @@ -23,4 +23,9 @@ #define STM32_CLOCK_BUS_AXI 13 #define STM32_CLOCK_BUS_MLAHB 14 +#define STM32_CLOCK_DIV_SHIFT 12 + +/** Clock divider */ +#define STM32_CLOCK_DIV(div) (((div) - 1) << STM32_CLOCK_DIV_SHIFT) + #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32_common_clocks.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32_common_clocks.h index 030ec2d9..5c101547 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32_common_clocks.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32_common_clocks.h @@ -15,4 +15,48 @@ /** Dummy: Add a specifier when no selection is possible */ #define NO_SEL 0xFF +#define STM32_CLOCK_DIV_SHIFT 12 + +/** Clock divider */ +#define STM32_CLOCK_DIV(div) (((div) - 1) << STM32_CLOCK_DIV_SHIFT) + +/** STM32 MCO configuration values */ +#define STM32_MCO_CFGR_REG_MASK 0xFFFFU +#define STM32_MCO_CFGR_REG_SHIFT 0U +#define STM32_MCO_CFGR_SHIFT_MASK 0x3FU +#define STM32_MCO_CFGR_SHIFT_SHIFT 16U +#define STM32_MCO_CFGR_MASK_MASK 0x1FU +#define STM32_MCO_CFGR_MASK_SHIFT 22U +#define STM32_MCO_CFGR_VAL_MASK 0x1FU +#define STM32_MCO_CFGR_VAL_SHIFT 27U + +/** + * @brief STM32 MCO configuration register bit field + * + * @param reg Offset to RCC register holding MCO configuration + * @param shift Position of field within RCC register (= field LSB's index) + * @param mask Mask of register field in RCC register + * @param val Clock configuration field value (0~0x1F) + * + * @note 'reg' range: 0x0~0xFFFF [ 00 : 15 ] + * @note 'shift' range: 0~63 [ 16 : 21 ] + * @note 'mask' range: 0x00~0x1F [ 22 : 26 ] + * @note 'val' range: 0x00~0x1F [ 27 : 31 ] + * + */ +#define STM32_MCO_CFGR(val, mask, shift, reg) \ + ((((reg) & STM32_MCO_CFGR_REG_MASK) << STM32_MCO_CFGR_REG_SHIFT) | \ + (((shift) & STM32_MCO_CFGR_SHIFT_MASK) << STM32_MCO_CFGR_SHIFT_SHIFT) | \ + (((mask) & STM32_MCO_CFGR_MASK_MASK) << STM32_MCO_CFGR_MASK_SHIFT) | \ + (((val) & STM32_MCO_CFGR_VAL_MASK) << STM32_MCO_CFGR_VAL_SHIFT)) + +/** + * Pack RCC clock register offset and bit in two 32-bit values + * as expected for the Device Tree `clocks` property on STM32. + * + * @param bus STM32 bus name (expands to STM32_CLOCK_BUS_{bus}) + * @param bit Clock bit + */ +#define STM32_CLOCK(bus, bit) (STM32_CLOCK_BUS_##bus) (1 << bit) + #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32_COMMON_CLOCKS_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32c0_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32c0_clock.h index 224bd151..9564f411 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32c0_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32c0_clock.h @@ -51,7 +51,7 @@ * @param mask Mask for the RCC_CCIPRx field. * @param val Clock value (0, 1, ... 7). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ @@ -63,13 +63,32 @@ /** @brief RCC_CSR1 register offset */ #define CSR1_REG 0x5C +/** @brief RCC_CFGRx register offset */ +#define CFGR1_REG 0x08 + /** @brief Device domain clocks selection helpers */ /** CCIPR devices */ -#define USART1_SEL(val) STM32_CLOCK(val, 3, 0, CCIPR_REG) -#define I2C1_SEL(val) STM32_CLOCK(val, 3, 12, CCIPR_REG) -#define I2C2_I2S1_SEL(val) STM32_CLOCK(val, 3, 14, CCIPR_REG) -#define ADC_SEL(val) STM32_CLOCK(val, 3, 30, CCIPR_REG) +#define USART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CCIPR_REG) +#define I2C1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, CCIPR_REG) +#define I2C2_I2S1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 14, CCIPR_REG) +#define ADC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 30, CCIPR_REG) /** CSR1 devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, CSR1_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, CSR1_REG) + +/** CFGR1 devices */ +#define MCO1_SEL(val) STM32_MCO_CFGR(val, 0x7, 24, CFGR1_REG) +#define MCO1_PRE(val) STM32_MCO_CFGR(val, 0x7, 28, CFGR1_REG) +#define MCO2_SEL(val) STM32_MCO_CFGR(val, 0x7, 16, CFGR1_REG) +#define MCO2_PRE(val) STM32_MCO_CFGR(val, 0x7, 20, CFGR1_REG) + +/* MCO prescaler : division factor */ +#define MCO_PRE_DIV_1 0 +#define MCO_PRE_DIV_2 1 +#define MCO_PRE_DIV_4 2 +#define MCO_PRE_DIV_8 3 +#define MCO_PRE_DIV_16 4 +#define MCO_PRE_DIV_32 5 +#define MCO_PRE_DIV_64 6 +#define MCO_PRE_DIV_128 7 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32C0_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f0_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f0_clock.h index 11645735..7572c1c4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f0_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f0_clock.h @@ -52,13 +52,14 @@ * @param mask Mask for the RCC_CFGRx field. * @param val Clock value (0, 1, ... 7). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ (((val) & STM32_CLOCK_VAL_MASK) << STM32_CLOCK_VAL_SHIFT)) /** @brief RCC_CFGRx register offset */ +#define CFGR1_REG 0x04 #define CFGR3_REG 0x30 /** @brief RCC_BDCR register offset */ @@ -66,13 +67,17 @@ /** @brief Device domain clocks selection helpers */ /** CFGR3 devices */ -#define USART1_SEL(val) STM32_CLOCK(val, 3, 0, CFGR3_REG) -#define I2C1_SEL(val) STM32_CLOCK(val, 1, 4, CFGR3_REG) -#define CEC_SEL(val) STM32_CLOCK(val, 1, 6, CFGR3_REG) -#define USB_SEL(val) STM32_CLOCK(val, 1, 7, CFGR3_REG) -#define USART2_SEL(val) STM32_CLOCK(val, 3, 16, CFGR3_REG) -#define USART3_SEL(val) STM32_CLOCK(val, 3, 18, CFGR3_REG) +#define USART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CFGR3_REG) +#define I2C1_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 4, CFGR3_REG) +#define CEC_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 6, CFGR3_REG) +#define USB_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 7, CFGR3_REG) +#define USART2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 16, CFGR3_REG) +#define USART3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 18, CFGR3_REG) /** BDCR devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, BDCR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG) + +/** CFGR1 devices */ +#define MCO1_SEL(val) STM32_MCO_CFGR(val, 0xF, 24, CFGR1_REG) +#define MCO1_PRE(val) STM32_MCO_CFGR(val, 0x7, 28, CFGR1_REG) #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32F0_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f10x_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f10x_clock.h new file mode 100644 index 00000000..05f2b598 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f10x_clock.h @@ -0,0 +1,25 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright (C) 2024, Joakim Andersson + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32F10X_CLOCK_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32F10X_CLOCK_H_ + +#include "stm32_common_clocks.h" +/* Ensure correct order by including generic F1 definitions first. */ +#include "stm32f1_clock.h" + +/** Fixed clocks */ +/* Low speed clocks defined in stm32_common_clocks.h */ +/* Common clocks with stm32f1x defined in stm32f1_clock.h */ +#define STM32_SRC_PLL2CLK (STM32_SRC_PLLCLK + 1) +#define STM32_SRC_PLL3CLK (STM32_SRC_PLL2CLK + 1) + +/** CFGR1 devices */ +#undef MCO1_SEL /* Need to redefine generic F1 MCO_SEL for connectivity line devices. */ +#define MCO1_SEL(val) STM32_MCO_CFGR(val, 0xF, 24, CFGR1_REG) +/* No MCO prescaler support on STM32F1 series. */ + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32F10X_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f1_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f1_clock.h index 571014dd..f6777932 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f1_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f1_clock.h @@ -23,9 +23,10 @@ /** Fixed clocks */ /* Low speed clocks defined in stm32_common_clocks.h */ -#define STM32_SRC_HSI (STM32_SRC_LSI + 1) -#define STM32_SRC_HSE (STM32_SRC_HSI + 1) - +#define STM32_SRC_HSI (STM32_SRC_LSI + 1) +#define STM32_SRC_HSE (STM32_SRC_HSI + 1) +#define STM32_SRC_EXT_HSE (STM32_SRC_HSE + 1) +#define STM32_SRC_PLLCLK (STM32_SRC_EXT_HSE + 1) #define STM32_CLOCK_REG_MASK 0xFFU #define STM32_CLOCK_REG_SHIFT 0U @@ -49,13 +50,14 @@ * @param mask Mask for the RCC_CFGRx field. * @param val Clock value (0, 1, ... 7). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ (((val) & STM32_CLOCK_VAL_MASK) << STM32_CLOCK_VAL_SHIFT)) -/** @brief RCC_CFGR2 register offset */ +/** @brief RCC_CFGRx register offset */ +#define CFGR1_REG 0x04 #define CFGR2_REG 0x2C /** @brief RCC_BDCR register offset */ @@ -63,9 +65,13 @@ /** @brief Device domain clocks selection helpers */ /** CFGR2 devices */ -#define I2S2_SEL(val) STM32_CLOCK(val, 1, 17, CFGR2_REG) -#define I2S3_SEL(val) STM32_CLOCK(val, 1, 18, CFGR2_REG) +#define I2S2_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 17, CFGR2_REG) +#define I2S3_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 18, CFGR2_REG) /** BDCR devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, BDCR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG) + +/** CFGR1 devices */ +#define MCO1_SEL(val) STM32_MCO_CFGR(val, 0x7, 24, CFGR1_REG) +/* No MCO prescaler support on STM32F1 series. */ #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32F1_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f3_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f3_clock.h index 377eb4fd..c00d1dd5 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f3_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f3_clock.h @@ -53,7 +53,7 @@ * @param mask Mask for the RCC_CFGRx field. * @param val Clock value (0, 1, ... 7). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ @@ -68,25 +68,27 @@ /** @brief Device domain clocks selection helpers) */ /** CFGR devices */ -#define I2S_SEL(val) STM32_CLOCK(val, 1, 23, CFGR_REG) +#define I2S_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 23, CFGR_REG) +#define MCO1_SEL(val) STM32_MCO_CFGR(val, 0x7, 24, CFGR_REG) +#define MCO1_PRE(val) STM32_MCO_CFGR(val, 0x7, 28, CFGR_REG) /** CFGR3 devices */ -#define USART1_SEL(val) STM32_CLOCK(val, 3, 0, CFGR3_REG) -#define I2C1_SEL(val) STM32_CLOCK(val, 1, 4, CFGR3_REG) -#define I2C2_SEL(val) STM32_CLOCK(val, 1, 5, CFGR3_REG) -#define I2C3_SEL(val) STM32_CLOCK(val, 1, 6, CFGR3_REG) -#define TIM1_SEL(val) STM32_CLOCK(val, 1, 8, CFGR3_REG) -#define TIM8_SEL(val) STM32_CLOCK(val, 1, 9, CFGR3_REG) -#define TIM15_SEL(val) STM32_CLOCK(val, 1, 10, CFGR3_REG) -#define TIM16_SEL(val) STM32_CLOCK(val, 1, 11, CFGR3_REG) -#define TIM17_SEL(val) STM32_CLOCK(val, 1, 13, CFGR3_REG) -#define TIM20_SEL(val) STM32_CLOCK(val, 1, 15, CFGR3_REG) -#define USART2_SEL(val) STM32_CLOCK(val, 3, 16, CFGR3_REG) -#define USART3_SEL(val) STM32_CLOCK(val, 3, 18, CFGR3_REG) -#define USART4_SEL(val) STM32_CLOCK(val, 3, 20, CFGR3_REG) -#define USART5_SEL(val) STM32_CLOCK(val, 3, 22, CFGR3_REG) -#define TIM2_SEL(val) STM32_CLOCK(val, 1, 24, CFGR3_REG) -#define TIM3_4_SEL(val) STM32_CLOCK(val, 1, 25, CFGR3_REG) +#define USART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CFGR3_REG) +#define I2C1_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 4, CFGR3_REG) +#define I2C2_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 5, CFGR3_REG) +#define I2C3_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 6, CFGR3_REG) +#define TIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 8, CFGR3_REG) +#define TIM8_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 9, CFGR3_REG) +#define TIM15_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 10, CFGR3_REG) +#define TIM16_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 11, CFGR3_REG) +#define TIM17_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 13, CFGR3_REG) +#define TIM20_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 15, CFGR3_REG) +#define USART2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 16, CFGR3_REG) +#define USART3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 18, CFGR3_REG) +#define USART4_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, CFGR3_REG) +#define USART5_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, CFGR3_REG) +#define TIM2_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 24, CFGR3_REG) +#define TIM3_4_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 25, CFGR3_REG) /** BDCR devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, BDCR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG) #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32F3_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f410_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f410_clock.h index 073d7c3b..fffd4732 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f410_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f410_clock.h @@ -12,19 +12,19 @@ /** @brief Device domain clocks selection helpers */ /** DCKCFGR devices */ -#define CKDFSDM2A_SEL(val) STM32_CLOCK(val, 1, 14, DCKCFGR_REG) -#define CKDFSDM1A_SEL(val) STM32_CLOCK(val, 1, 15, DCKCFGR_REG) -#define SAI1A_SEL(val) STM32_CLOCK(val, 3, 20, DCKCFGR_REG) -#define SAI1B_SEL(val) STM32_CLOCK(val, 3, 22, DCKCFGR_REG) -#define I2S1_SEL(val) STM32_CLOCK(val, 3, 25, DCKCFGR_REG) -#define I2S2_SEL(val) STM32_CLOCK(val, 3, 27, DCKCFGR_REG) -#define CKDFSDM_SEL(val) STM32_CLOCK(val, 1, 31, DCKCFGR_REG) +#define CKDFSDM2A_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 14, DCKCFGR_REG) +#define CKDFSDM1A_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 15, DCKCFGR_REG) +#define SAI1A_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, DCKCFGR_REG) +#define SAI1B_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, DCKCFGR_REG) +#define I2S1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 25, DCKCFGR_REG) +#define I2S2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 27, DCKCFGR_REG) +#define CKDFSDM_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 31, DCKCFGR_REG) /** DCKCFGR2 devices */ -#define I2CFMP1_SEL(val) STM32_CLOCK(val, 3, 22, DCKCFGR2_REG) -#define CK48M_SEL(val) STM32_CLOCK(val, 1, 27, DCKCFGR2_REG) -#define SDIO_SEL(val) STM32_CLOCK(val, 1, 28, DCKCFGR2_REG) -#define LPTIM1_SEL(val) STM32_CLOCK(val, 3, 30, DCKCFGR2_REG) +#define I2CFMP1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, DCKCFGR2_REG) +#define CK48M_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 27, DCKCFGR2_REG) +#define SDIO_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 28, DCKCFGR2_REG) +#define LPTIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 30, DCKCFGR2_REG) /* F4 generic I2S_SEL is not compatible with F410 devices */ #ifdef I2S_SEL diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f427_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f427_clock.h index 46370be5..97d22836 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f427_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f427_clock.h @@ -11,12 +11,12 @@ /** @brief Device domain clocks selection helpers */ /** DCKCFGR devices */ -#define CKDFSDM2A_SEL(val) STM32_CLOCK(val, 1, 14, DCKCFGR_REG) -#define CKDFSDM1A_SEL(val) STM32_CLOCK(val, 1, 15, DCKCFGR_REG) -#define SAI1A_SEL(val) STM32_CLOCK(val, 3, 20, DCKCFGR_REG) -#define SAI1B_SEL(val) STM32_CLOCK(val, 3, 22, DCKCFGR_REG) -#define CLK48M_SEL(val) STM32_CLOCK(val, 1, 27, DCKCFGR_REG) -#define SDMMC_SEL(val) STM32_CLOCK(val, 1, 28, DCKCFGR_REG) -#define DSI_SEL(val) STM32_CLOCK(val, 1, 29, DCKCFGR_REG) +#define CKDFSDM2A_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 14, DCKCFGR_REG) +#define CKDFSDM1A_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 15, DCKCFGR_REG) +#define SAI1A_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, DCKCFGR_REG) +#define SAI1B_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, DCKCFGR_REG) +#define CLK48M_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 27, DCKCFGR_REG) +#define SDMMC_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 28, DCKCFGR_REG) +#define DSI_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 29, DCKCFGR_REG) #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32F427_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f4_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f4_clock.h index 93355865..02290fc1 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f4_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f4_clock.h @@ -11,15 +11,15 @@ /** Domain clocks */ /** Bus clocks */ -#define STM32_CLOCK_BUS_AHB1 0x030 -#define STM32_CLOCK_BUS_AHB2 0x034 -#define STM32_CLOCK_BUS_AHB3 0x038 -#define STM32_CLOCK_BUS_APB1 0x040 -#define STM32_CLOCK_BUS_APB2 0x044 -#define STM32_CLOCK_BUS_APB3 0x0A8 +#define STM32_CLOCK_BUS_AHB1 0x030 +#define STM32_CLOCK_BUS_AHB2 0x034 +#define STM32_CLOCK_BUS_AHB3 0x038 +#define STM32_CLOCK_BUS_APB1 0x040 +#define STM32_CLOCK_BUS_APB2 0x044 +#define STM32_CLOCK_BUS_APB3 0x0A8 -#define STM32_PERIPH_BUS_MIN STM32_CLOCK_BUS_AHB1 -#define STM32_PERIPH_BUS_MAX STM32_CLOCK_BUS_APB3 +#define STM32_PERIPH_BUS_MIN STM32_CLOCK_BUS_AHB1 +#define STM32_PERIPH_BUS_MAX STM32_CLOCK_BUS_APB3 /** Domain clocks */ /* RM0386, 0390, 0402, 0430 § Dedicated Clock configuration register (RCC_DCKCFGRx) */ @@ -28,16 +28,21 @@ /* defined in stm32_common_clocks.h */ /** Fixed clocks */ /* Low speed clocks defined in stm32_common_clocks.h */ +#define STM32_SRC_HSI (STM32_SRC_LSI + 1) +#define STM32_SRC_HSE (STM32_SRC_HSI + 1) /** PLL clock outputs */ -#define STM32_SRC_PLL_P (STM32_SRC_LSI + 1) +#define STM32_SRC_PLL_P (STM32_SRC_HSE + 1) #define STM32_SRC_PLL_Q (STM32_SRC_PLL_P + 1) #define STM32_SRC_PLL_R (STM32_SRC_PLL_Q + 1) /** I2S sources */ -#define STM32_SRC_PLLI2S_R (STM32_SRC_PLL_R + 1) +#define STM32_SRC_PLLI2S_Q (STM32_SRC_PLL_R + 1) +#define STM32_SRC_PLLI2S_R (STM32_SRC_PLLI2S_Q + 1) +/* CLK48MHz sources */ +#define STM32_SRC_CK48 (STM32_SRC_PLLI2S_R + 1) + /* I2S_CKIN not supported yet */ /* #define STM32_SRC_I2S_CKIN TBD */ - #define STM32_CLOCK_REG_MASK 0xFFU #define STM32_CLOCK_REG_SHIFT 0U #define STM32_CLOCK_SHIFT_MASK 0x1FU @@ -60,21 +65,32 @@ * @param mask Mask for the RCC_CFGRx field. * @param val Clock value (0, 1, ... 7). */ -#define STM32_CLOCK(val, mask, shift, reg) \ - ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ - (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ - (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ + ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ + (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ + (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ (((val) & STM32_CLOCK_VAL_MASK) << STM32_CLOCK_VAL_SHIFT)) -/** @brief RCC_CFGR register offset */ -#define CFGR_REG 0x08 +/** @brief RCC_CFGRx register offset */ +#define CFGR_REG 0x08 /** @brief RCC_BDCR register offset */ -#define BDCR_REG 0x70 +#define BDCR_REG 0x70 /** @brief Device domain clocks selection helpers */ /** CFGR devices */ -#define I2S_SEL(val) STM32_CLOCK(val, 1, 23, CFGR_REG) +#define I2S_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 23, CFGR_REG) +#define MCO1_SEL(val) STM32_MCO_CFGR(val, 0x3, 21, CFGR_REG) +#define MCO1_PRE(val) STM32_MCO_CFGR(val, 0x7, 24, CFGR_REG) +#define MCO2_SEL(val) STM32_MCO_CFGR(val, 0x3, 30, CFGR_REG) +#define MCO2_PRE(val) STM32_MCO_CFGR(val, 0x7, 27, CFGR_REG) /** BDCR devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, BDCR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG) + +/* MCO prescaler : division factor */ +#define MCO_PRE_DIV_1 0 +#define MCO_PRE_DIV_2 4 +#define MCO_PRE_DIV_3 5 +#define MCO_PRE_DIV_4 6 +#define MCO_PRE_DIV_5 7 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32F4_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f7_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f7_clock.h index 92d3b7e1..a729aea8 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f7_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32f7_clock.h @@ -30,13 +30,16 @@ /** Fixed clocks */ /* Low speed clocks defined in stm32_common_clocks.h */ #define STM32_SRC_HSI (STM32_SRC_LSI + 1) +#define STM32_SRC_HSE (STM32_SRC_HSI + 1) /** PLL clock outputs */ -#define STM32_SRC_PLL_P (STM32_SRC_HSI + 1) +#define STM32_SRC_PLL_P (STM32_SRC_HSE + 1) #define STM32_SRC_PLL_Q (STM32_SRC_PLL_P + 1) #define STM32_SRC_PLL_R (STM32_SRC_PLL_Q + 1) /** Peripheral bus clock */ #define STM32_SRC_PCLK (STM32_SRC_PLL_R + 1) +#define STM32_SRC_PLLI2S_R (STM32_SRC_PCLK + 1) + #define STM32_CLOCK_REG_MASK 0xFFU #define STM32_CLOCK_REG_SHIFT 0U @@ -60,7 +63,7 @@ * @param mask Mask for the RCC_CFGRx field. * @param val Clock value (0, 1, ... 7). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ @@ -74,9 +77,21 @@ /** @brief Device domain clocks selection helpers */ /** CFGR devices */ -#define I2S_SEL(val) STM32_CLOCK(val, 1, 23, CFGR_REG) +#define I2S_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 23, CFGR_REG) +#define MCO1_SEL(val) STM32_MCO_CFGR(val, 0x3, 21, CFGR_REG) +#define MCO1_PRE(val) STM32_MCO_CFGR(val, 0x7, 24, CFGR_REG) +#define MCO2_SEL(val) STM32_MCO_CFGR(val, 0x3, 30, CFGR_REG) +#define MCO2_PRE(val) STM32_MCO_CFGR(val, 0x7, 27, CFGR_REG) + +/* MCO prescaler : division factor */ +#define MCO_PRE_DIV_1 0 +#define MCO_PRE_DIV_2 4 +#define MCO_PRE_DIV_3 5 +#define MCO_PRE_DIV_4 6 +#define MCO_PRE_DIV_5 7 + /** BDCR devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, BDCR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG) /** @brief RCC_DKCFGR register offset */ #define DCKCFGR1_REG 0x8C @@ -84,23 +99,23 @@ /** @brief Dedicated clocks configuration register selection helpers */ /** DKCFGR2 devices */ -#define USART1_SEL(val) STM32_CLOCK(val, 3, 0, DCKCFGR2_REG) -#define USART2_SEL(val) STM32_CLOCK(val, 3, 2, DCKCFGR2_REG) -#define USART3_SEL(val) STM32_CLOCK(val, 3, 4, DCKCFGR2_REG) -#define USART4_SEL(val) STM32_CLOCK(val, 3, 6, DCKCFGR2_REG) -#define USART5_SEL(val) STM32_CLOCK(val, 3, 8, DCKCFGR2_REG) -#define USART6_SEL(val) STM32_CLOCK(val, 3, 10, DCKCFGR2_REG) -#define USART7_SEL(val) STM32_CLOCK(val, 3, 12, DCKCFGR2_REG) -#define USART8_SEL(val) STM32_CLOCK(val, 3, 14, DCKCFGR2_REG) -#define I2C1_SEL(val) STM32_CLOCK(val, 3, 16, DCKCFGR2_REG) -#define I2C2_SEL(val) STM32_CLOCK(val, 3, 18, DCKCFGR2_REG) -#define I2C3_SEL(val) STM32_CLOCK(val, 3, 20, DCKCFGR2_REG) -#define I2C4_SEL(val) STM32_CLOCK(val, 3, 22, DCKCFGR2_REG) -#define LPTIM1_SEL(val) STM32_CLOCK(val, 3, 24, DCKCFGR2_REG) -#define CEC_SEL(val) STM32_CLOCK(val, 1, 26, DCKCFGR2_REG) -#define CK48M_SEL(val) STM32_CLOCK(val, 1, 27, DCKCFGR2_REG) -#define SDMMC1_SEL(val) STM32_CLOCK(val, 1, 28, DCKCFGR2_REG) -#define SDMMC2_SEL(val) STM32_CLOCK(val, 1, 29, DCKCFGR2_REG) -#define DSI_SEL(val) STM32_CLOCK(val, 1, 30, DCKCFGR2_REG) +#define USART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, DCKCFGR2_REG) +#define USART2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 2, DCKCFGR2_REG) +#define USART3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 4, DCKCFGR2_REG) +#define USART4_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 6, DCKCFGR2_REG) +#define USART5_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, DCKCFGR2_REG) +#define USART6_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 10, DCKCFGR2_REG) +#define USART7_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, DCKCFGR2_REG) +#define USART8_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 14, DCKCFGR2_REG) +#define I2C1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 16, DCKCFGR2_REG) +#define I2C2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 18, DCKCFGR2_REG) +#define I2C3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, DCKCFGR2_REG) +#define I2C4_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, DCKCFGR2_REG) +#define LPTIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 24, DCKCFGR2_REG) +#define CEC_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 26, DCKCFGR2_REG) +#define CK48M_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 27, DCKCFGR2_REG) +#define SDMMC1_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 28, DCKCFGR2_REG) +#define SDMMC2_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 29, DCKCFGR2_REG) +#define DSI_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 30, DCKCFGR2_REG) #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32F7_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32g0_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32g0_clock.h index 86d93e83..b7d7714b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32g0_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32g0_clock.h @@ -57,7 +57,7 @@ * @param mask Mask for the RCC_CCIPRx field. * @param val Clock value (0, 1, ... 7). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ @@ -72,26 +72,26 @@ /** @brief Device domain clocks selection helpers */ /** CCIPR devices */ -#define USART1_SEL(val) STM32_CLOCK(val, 3, 0, CCIPR_REG) -#define USART2_SEL(val) STM32_CLOCK(val, 3, 2, CCIPR_REG) -#define USART3_SEL(val) STM32_CLOCK(val, 3, 4, CCIPR_REG) -#define CEC_SEL(val) STM32_CLOCK(val, 1, 6, CCIPR_REG) -#define LPUART2_SEL(val) STM32_CLOCK(val, 3, 8, CCIPR_REG) -#define LPUART1_SEL(val) STM32_CLOCK(val, 3, 10, CCIPR_REG) -#define I2C1_SEL(val) STM32_CLOCK(val, 3, 12, CCIPR_REG) -#define I2C2_I2S1_SEL(val) STM32_CLOCK(val, 3, 14, CCIPR_REG) -#define LPTIM1_SEL(val) STM32_CLOCK(val, 3, 18, CCIPR_REG) -#define LPTIM2_SEL(val) STM32_CLOCK(val, 3, 20, CCIPR_REG) -#define TIM1_SEL(val) STM32_CLOCK(val, 1, 22, CCIPR_REG) -#define TIM15_SEL(val) STM32_CLOCK(val, 1, 24, CCIPR_REG) -#define RNG_SEL(val) STM32_CLOCK(val, 3, 26, CCIPR_REG) -#define ADC_SEL(val) STM32_CLOCK(val, 3, 30, CCIPR_REG) +#define USART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CCIPR_REG) +#define USART2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 2, CCIPR_REG) +#define USART3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 4, CCIPR_REG) +#define CEC_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 6, CCIPR_REG) +#define LPUART2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, CCIPR_REG) +#define LPUART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 10, CCIPR_REG) +#define I2C1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, CCIPR_REG) +#define I2C2_I2S1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 14, CCIPR_REG) +#define LPTIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 18, CCIPR_REG) +#define LPTIM2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, CCIPR_REG) +#define TIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 22, CCIPR_REG) +#define TIM15_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 24, CCIPR_REG) +#define RNG_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 26, CCIPR_REG) +#define ADC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 30, CCIPR_REG) /** CCIPR2 devices */ -#define I2S1_SEL(val) STM32_CLOCK(val, 3, 0, CCIPR2_REG) -#define I2S2_SEL(val) STM32_CLOCK(val, 3, 2, CCIPR2_REG) -#define FDCAN_SEL(val) STM32_CLOCK(val, 3, 8, CCIPR2_REG) -#define USB_SEL(val) STM32_CLOCK(val, 3, 12, CCIPR2_REG) +#define I2S1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CCIPR2_REG) +#define I2S2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 2, CCIPR2_REG) +#define FDCAN_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, CCIPR2_REG) +#define USB_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, CCIPR2_REG) /** BDCR devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, BDCR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG) #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32G0_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32g4_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32g4_clock.h index 0cc0b1be..a7d928c8 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32g4_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32g4_clock.h @@ -61,7 +61,7 @@ * @param mask Mask for the RCC_CCIPRx field. * @param val Clock value (0, 1, ... 7). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ @@ -76,26 +76,26 @@ /** @brief Device domain clocks selection helpers */ /** CCIPR devices */ -#define USART1_SEL(val) STM32_CLOCK(val, 3, 0, CCIPR_REG) -#define USART2_SEL(val) STM32_CLOCK(val, 3, 2, CCIPR_REG) -#define USART3_SEL(val) STM32_CLOCK(val, 3, 4, CCIPR_REG) -#define USART4_SEL(val) STM32_CLOCK(val, 3, 6, CCIPR_REG) -#define USART5_SEL(val) STM32_CLOCK(val, 3, 8, CCIPR_REG) -#define LPUART1_SEL(val) STM32_CLOCK(val, 3, 10, CCIPR_REG) -#define I2C1_SEL(val) STM32_CLOCK(val, 3, 12, CCIPR_REG) -#define I2C2_SEL(val) STM32_CLOCK(val, 3, 14, CCIPR_REG) -#define I2C3_SEL(val) STM32_CLOCK(val, 3, 16, CCIPR_REG) -#define LPTIM1_SEL(val) STM32_CLOCK(val, 3, 18, CCIPR_REG) -#define SAI1_SEL(val) STM32_CLOCK(val, 3, 20, CCIPR_REG) -#define I2S23_SEL(val) STM32_CLOCK(val, 3, 22, CCIPR_REG) -#define FDCAN_SEL(val) STM32_CLOCK(val, 3, 24, CCIPR_REG) -#define CLK48_SEL(val) STM32_CLOCK(val, 3, 26, CCIPR_REG) -#define ADC12_SEL(val) STM32_CLOCK(val, 3, 28, CCIPR_REG) -#define ADC34_SEL(val) STM32_CLOCK(val, 3, 30, CCIPR_REG) +#define USART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CCIPR_REG) +#define USART2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 2, CCIPR_REG) +#define USART3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 4, CCIPR_REG) +#define USART4_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 6, CCIPR_REG) +#define USART5_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, CCIPR_REG) +#define LPUART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 10, CCIPR_REG) +#define I2C1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, CCIPR_REG) +#define I2C2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 14, CCIPR_REG) +#define I2C3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 16, CCIPR_REG) +#define LPTIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 18, CCIPR_REG) +#define SAI1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, CCIPR_REG) +#define I2S23_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, CCIPR_REG) +#define FDCAN_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 24, CCIPR_REG) +#define CLK48_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 26, CCIPR_REG) +#define ADC12_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 28, CCIPR_REG) +#define ADC34_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 30, CCIPR_REG) /** CCIPR2 devices */ -#define I2C4_SEL(val) STM32_CLOCK(val, 3, 0, CCIPR2_REG) -#define QSPI_SEL(val) STM32_CLOCK(val, 3, 20, CCIPR2_REG) +#define I2C4_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CCIPR2_REG) +#define QSPI_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, CCIPR2_REG) /** BDCR devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, BDCR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG) #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32G4_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32h5_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32h5_clock.h index 070f3b3a..cbac2d66 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32h5_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32h5_clock.h @@ -20,8 +20,13 @@ #define STM32_SRC_CSI (STM32_SRC_HSE + 1) #define STM32_SRC_HSI (STM32_SRC_CSI + 1) #define STM32_SRC_HSI48 (STM32_SRC_HSI + 1) +/** Bus clock */ +#define STM32_SRC_HCLK (STM32_SRC_HSI48 + 1) +#define STM32_SRC_PCLK1 (STM32_SRC_HCLK + 1) +#define STM32_SRC_PCLK2 (STM32_SRC_PCLK1 + 1) +#define STM32_SRC_PCLK3 (STM32_SRC_PCLK2 + 1) /** PLL outputs */ -#define STM32_SRC_PLL1_P (STM32_SRC_HSI48 + 1) +#define STM32_SRC_PLL1_P (STM32_SRC_PCLK3 + 1) #define STM32_SRC_PLL1_Q (STM32_SRC_PLL1_P + 1) #define STM32_SRC_PLL1_R (STM32_SRC_PLL1_Q + 1) #define STM32_SRC_PLL2_P (STM32_SRC_PLL1_R + 1) @@ -68,7 +73,7 @@ * @param mask Mask for the RCC_CCIPRx field. * @param val Clock value (0, 1, ... 7). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ @@ -84,62 +89,88 @@ /** @brief RCC_BDCR register offset */ #define BDCR_REG 0xF0 +/** @brief RCC_CFGRx register offset */ +#define CFGR1_REG 0x1C + /** @brief Device domain clocks selection helpers */ /** CCIPR1 devices */ -#define USART1_SEL(val) STM32_CLOCK(val, 7, 0, CCIPR1_REG) -#define USART2_SEL(val) STM32_CLOCK(val, 7, 3, CCIPR1_REG) -#define USART3_SEL(val) STM32_CLOCK(val, 7, 6, CCIPR1_REG) -#define USART4_SEL(val) STM32_CLOCK(val, 7, 9, CCIPR1_REG) -#define USART5_SEL(val) STM32_CLOCK(val, 7, 12, CCIPR1_REG) -#define USART6_SEL(val) STM32_CLOCK(val, 7, 15, CCIPR1_REG) -#define USART7_SEL(val) STM32_CLOCK(val, 7, 18, CCIPR1_REG) -#define USART8_SEL(val) STM32_CLOCK(val, 7, 21, CCIPR1_REG) -#define USART9_SEL(val) STM32_CLOCK(val, 7, 24, CCIPR1_REG) -#define USART10_SEL(val) STM32_CLOCK(val, 7, 27, CCIPR1_REG) -#define TIMIC_SEL(val) STM32_CLOCK(val, 1, 31, CCIPR1_REG) +#define USART1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 0, CCIPR1_REG) +#define USART2_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 3, CCIPR1_REG) +#define USART3_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 6, CCIPR1_REG) +#define USART4_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 9, CCIPR1_REG) +#define USART5_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 12, CCIPR1_REG) +#define USART6_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 15, CCIPR1_REG) +#define USART7_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 18, CCIPR1_REG) +#define USART8_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 21, CCIPR1_REG) +#define USART9_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 24, CCIPR1_REG) +#define USART10_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 27, CCIPR1_REG) +#define TIMIC_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 31, CCIPR1_REG) /** CCIPR2 devices */ -#define USART11_SEL(val) STM32_CLOCK(val, 7, 0, CCIPR2_REG) -#define USART12_SEL(val) STM32_CLOCK(val, 7, 4, CCIPR2_REG) -#define LPTIM1_SEL(val) STM32_CLOCK(val, 7, 8, CCIPR2_REG) -#define LPTIM2_SEL(val) STM32_CLOCK(val, 7, 12, CCIPR2_REG) -#define LPTIM3_SEL(val) STM32_CLOCK(val, 7, 16, CCIPR2_REG) -#define LPTIM4_SEL(val) STM32_CLOCK(val, 7, 20, CCIPR2_REG) -#define LPTIM5_SEL(val) STM32_CLOCK(val, 7, 24, CCIPR2_REG) -#define LPTIM6_SEL(val) STM32_CLOCK(val, 7, 28, CCIPR2_REG) +#define USART11_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 0, CCIPR2_REG) +#define USART12_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 4, CCIPR2_REG) +#define LPTIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 8, CCIPR2_REG) +#define LPTIM2_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 12, CCIPR2_REG) +#define LPTIM3_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 16, CCIPR2_REG) +#define LPTIM4_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 20, CCIPR2_REG) +#define LPTIM5_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 24, CCIPR2_REG) +#define LPTIM6_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 28, CCIPR2_REG) /** CCIPR3 devices */ -#define SPI1_SEL(val) STM32_CLOCK(val, 7, 0, CCIPR3_REG) -#define SPI2_SEL(val) STM32_CLOCK(val, 7, 3, CCIPR3_REG) -#define SPI3_SEL(val) STM32_CLOCK(val, 7, 6, CCIPR3_REG) -#define SPI4_SEL(val) STM32_CLOCK(val, 7, 9, CCIPR3_REG) -#define SPI5_SEL(val) STM32_CLOCK(val, 7, 12, CCIPR3_REG) -#define SPI6_SEL(val) STM32_CLOCK(val, 7, 15, CCIPR2_REG) -#define LPUART1_SEL(val) STM32_CLOCK(val, 7, 24, CCIPR3_REG) +#define SPI1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 0, CCIPR3_REG) +#define SPI2_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 3, CCIPR3_REG) +#define SPI3_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 6, CCIPR3_REG) +#define SPI4_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 9, CCIPR3_REG) +#define SPI5_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 12, CCIPR3_REG) +#define SPI6_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 15, CCIPR2_REG) +#define LPUART1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 24, CCIPR3_REG) /** CCIPR4 devices */ -#define OCTOSPI1_SEL(val) STM32_CLOCK(val, 3, 0, CCIPR4_REG) -#define SYSTICK_SEL(val) STM32_CLOCK(val, 3, 2, CCIPR4_REG) -#define USB_SEL(val) STM32_CLOCK(val, 3, 4, CCIPR4_REG) -#define SDMMC1_SEL(val) STM32_CLOCK(val, 1, 6, CCIPR4_REG) -#define SDMMC2_SEL(val) STM32_CLOCK(val, 1, 7, CCIPR4_REG) -#define I2C1_SEL(val) STM32_CLOCK(val, 3, 16, CCIPR4_REG) -#define I2C2_SEL(val) STM32_CLOCK(val, 3, 18, CCIPR4_REG) -#define I2C3_SEL(val) STM32_CLOCK(val, 3, 20, CCIPR4_REG) -#define I2C4_SEL(val) STM32_CLOCK(val, 3, 22, CCIPR4_REG) -#define I3C1_SEL(val) STM32_CLOCK(val, 3, 24, CCIPR4_REG) +#define OCTOSPI1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CCIPR4_REG) +#define SYSTICK_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 2, CCIPR4_REG) +#define USB_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 4, CCIPR4_REG) +#define SDMMC1_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 6, CCIPR4_REG) +#define SDMMC2_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 7, CCIPR4_REG) +#define I2C1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 16, CCIPR4_REG) +#define I2C2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 18, CCIPR4_REG) +#define I2C3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, CCIPR4_REG) +#define I2C4_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, CCIPR4_REG) +#define I3C1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 24, CCIPR4_REG) /** CCIPR5 devices */ -#define ADCDAC_SEL(val) STM32_CLOCK(val, 7, 0, CCIPR5_REG) -#define DAC_SEL(val) STM32_CLOCK(val, 1, 3, CCIPR5_REG) -#define RNG_SEL(val) STM32_CLOCK(val, 3, 4, CCIPR5_REG) -#define CEC_SEL(val) STM32_CLOCK(val, 3, 6, CCIPR5_REG) -#define FDCAN_SEL(val) STM32_CLOCK(val, 3, 8, CCIPR5_REG) -#define SAI1_SEL(val) STM32_CLOCK(val, 7, 16, CCIPR5_REG) -#define SAI2_SEL(val) STM32_CLOCK(val, 7, 19, CCIPR5_REG) -#define CKPER_SEL(val) STM32_CLOCK(val, 3, 30, CCIPR5_REG) +#define ADCDAC_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 0, CCIPR5_REG) +#define DAC_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 3, CCIPR5_REG) +#define RNG_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 4, CCIPR5_REG) +#define CEC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 6, CCIPR5_REG) +#define FDCAN_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, CCIPR5_REG) +#define SAI1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 16, CCIPR5_REG) +#define SAI2_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 19, CCIPR5_REG) +#define CKPER_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 30, CCIPR5_REG) /** BDCR devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, BDCR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG) + +/** CFGR1 devices */ +#define MCO1_SEL(val) STM32_MCO_CFGR(val, 0x7, 22, CFGR1_REG) +#define MCO1_PRE(val) STM32_MCO_CFGR(val, 0xF, 18, CFGR1_REG) +#define MCO2_SEL(val) STM32_MCO_CFGR(val, 0x7, 25, CFGR1_REG) +#define MCO2_PRE(val) STM32_MCO_CFGR(val, 0xF, 29, CFGR1_REG) + +/* MCO prescaler : division factor */ +#define MCO_PRE_DIV_1 1 +#define MCO_PRE_DIV_2 2 +#define MCO_PRE_DIV_3 3 +#define MCO_PRE_DIV_4 4 +#define MCO_PRE_DIV_5 5 +#define MCO_PRE_DIV_6 6 +#define MCO_PRE_DIV_7 7 +#define MCO_PRE_DIV_8 8 +#define MCO_PRE_DIV_9 9 +#define MCO_PRE_DIV_10 10 +#define MCO_PRE_DIV_11 11 +#define MCO_PRE_DIV_12 12 +#define MCO_PRE_DIV_13 13 +#define MCO_PRE_DIV_14 14 +#define MCO_PRE_DIV_15 15 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32H5_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32h7_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32h7_clock.h index 02ed14f2..92c954cd 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32h7_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32h7_clock.h @@ -80,7 +80,7 @@ * @param mask Mask for the RCC_DxCCIP field. * @param val Clock value (0, 1, 2 or 3). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ @@ -95,42 +95,67 @@ /** @brief RCC_BDCR register offset */ #define BDCR_REG 0x70 +/** @brief RCC_CFGRx register offset */ +#define CFGR_REG 0x10 + /** @brief Device domain clocks selection helpers (RM0399.pdf) */ /** D1CCIPR devices */ -#define FMC_SEL(val) STM32_CLOCK(val, 3, 0, D1CCIPR_REG) -#define QSPI_SEL(val) STM32_CLOCK(val, 3, 4, D1CCIPR_REG) -#define DSI_SEL(val) STM32_CLOCK(val, 1, 8, D1CCIPR_REG) -#define SDMMC_SEL(val) STM32_CLOCK(val, 1, 16, D1CCIPR_REG) -#define CKPER_SEL(val) STM32_CLOCK(val, 3, 28, D1CCIPR_REG) +#define FMC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, D1CCIPR_REG) +#define QSPI_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 4, D1CCIPR_REG) +#define DSI_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 8, D1CCIPR_REG) +#define SDMMC_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 16, D1CCIPR_REG) +#define CKPER_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 28, D1CCIPR_REG) /* Device domain clocks selection helpers (RM0468.pdf) */ -#define OSPI_SEL(val) STM32_CLOCK(val, 3, 4, D1CCIPR_REG) +#define OSPI_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 4, D1CCIPR_REG) /** D2CCIP1R devices */ -#define SAI1_SEL(val) STM32_CLOCK(val, 7, 0, D2CCIP1R_REG) -#define SAI23_SEL(val) STM32_CLOCK(val, 7, 6, D2CCIP1R_REG) -#define SPI123_SEL(val) STM32_CLOCK(val, 7, 12, D2CCIP1R_REG) -#define SPI45_SEL(val) STM32_CLOCK(val, 7, 16, D2CCIP1R_REG) -#define SPDIF_SEL(val) STM32_CLOCK(val, 3, 20, D2CCIP1R_REG) -#define DFSDM1_SEL(val) STM32_CLOCK(val, 1, 24, D2CCIP1R_REG) -#define FDCAN_SEL(val) STM32_CLOCK(val, 3, 28, D2CCIP1R_REG) -#define SWP_SEL(val) STM32_CLOCK(val, 1, 31, D2CCIP1R_REG) +#define SAI1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 0, D2CCIP1R_REG) +#define SAI23_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 6, D2CCIP1R_REG) +#define SPI123_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 12, D2CCIP1R_REG) +#define SPI45_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 16, D2CCIP1R_REG) +#define SPDIF_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, D2CCIP1R_REG) +#define DFSDM1_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 24, D2CCIP1R_REG) +#define FDCAN_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 28, D2CCIP1R_REG) +#define SWP_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 31, D2CCIP1R_REG) /** D2CCIP2R devices */ -#define USART2345678_SEL(val) STM32_CLOCK(val, 7, 0, D2CCIP2R_REG) -#define USART16_SEL(val) STM32_CLOCK(val, 7, 3, D2CCIP2R_REG) -#define RNG_SEL(val) STM32_CLOCK(val, 3, 8, D2CCIP2R_REG) -#define I2C123_SEL(val) STM32_CLOCK(val, 3, 12, D2CCIP2R_REG) -#define USB_SEL(val) STM32_CLOCK(val, 3, 20, D2CCIP2R_REG) -#define CEC_SEL(val) STM32_CLOCK(val, 3, 22, D2CCIP2R_REG) -#define LPTIM1_SEL(val) STM32_CLOCK(val, 7, 28, D2CCIP2R_REG) +#define USART2345678_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 0, D2CCIP2R_REG) +#define USART16_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 3, D2CCIP2R_REG) +#define RNG_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, D2CCIP2R_REG) +#define I2C123_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, D2CCIP2R_REG) +#define USB_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, D2CCIP2R_REG) +#define CEC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, D2CCIP2R_REG) +#define LPTIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 28, D2CCIP2R_REG) /** D3CCIPR devices */ -#define LPUART1_SEL(val) STM32_CLOCK(val, 7, 0, D3CCIPR_REG) -#define I2C4_SEL(val) STM32_CLOCK(val, 3, 8, D3CCIPR_REG) -#define LPTIM2_SEL(val) STM32_CLOCK(val, 7, 10, D3CCIPR_REG) -#define LPTIM345_SEL(val) STM32_CLOCK(val, 7, 13, D3CCIPR_REG) -#define ADC_SEL(val) STM32_CLOCK(val, 3, 16, D3CCIPR_REG) -#define SAI4A_SEL(val) STM32_CLOCK(val, 7, 21, D3CCIPR_REG) -#define SAI4B_SEL(val) STM32_CLOCK(val, 7, 24, D3CCIPR_REG) -#define SPI6_SEL(val) STM32_CLOCK(val, 7, 28, D3CCIPR_REG) +#define LPUART1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 0, D3CCIPR_REG) +#define I2C4_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, D3CCIPR_REG) +#define LPTIM2_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 10, D3CCIPR_REG) +#define LPTIM345_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 13, D3CCIPR_REG) +#define ADC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 16, D3CCIPR_REG) +#define SAI4A_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 21, D3CCIPR_REG) +#define SAI4B_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 24, D3CCIPR_REG) +#define SPI6_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 28, D3CCIPR_REG) /** BDCR devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, BDCR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG) +/** CFGR devices */ +#define MCO1_SEL(val) STM32_MCO_CFGR(val, 0xF, 22, CFGR_REG) +#define MCO1_PRE(val) STM32_MCO_CFGR(val, 0x7, 18, CFGR_REG) +#define MCO2_SEL(val) STM32_MCO_CFGR(val, 0xF, 29, CFGR_REG) +#define MCO2_PRE(val) STM32_MCO_CFGR(val, 0x7, 25, CFGR_REG) + +/* MCO prescaler : division factor */ +#define MCO_PRE_DIV_1 1 +#define MCO_PRE_DIV_2 2 +#define MCO_PRE_DIV_3 3 +#define MCO_PRE_DIV_4 4 +#define MCO_PRE_DIV_5 5 +#define MCO_PRE_DIV_6 6 +#define MCO_PRE_DIV_7 7 +#define MCO_PRE_DIV_8 8 +#define MCO_PRE_DIV_9 9 +#define MCO_PRE_DIV_10 10 +#define MCO_PRE_DIV_11 11 +#define MCO_PRE_DIV_12 12 +#define MCO_PRE_DIV_13 13 +#define MCO_PRE_DIV_14 14 +#define MCO_PRE_DIV_15 15 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32H7_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32h7rs_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32h7rs_clock.h index 579ae56b..e2c1ed81 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32h7rs_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32h7rs_clock.h @@ -76,7 +76,7 @@ * @param mask Mask for the RCC_DxCCIP field. * @param val Clock value (0, 1, 2 or 3). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ @@ -91,41 +91,67 @@ /** @brief RCC_BDCR register offset */ #define BDCR_REG 0x70 +/** @brief RCC_CFGRx register offset */ +#define CFGR_REG 0x10 + /** @brief Device domain clocks selection helpers (RM0477.pdf) */ /* TODO to be completed */ /** D1CCIPR devices */ -#define FMC_SEL(val) STM32_CLOCK(val, 3, 0, D1CCIPR_REG) -#define SDMMC_SEL(val) STM32_CLOCK(val, 1, 2, D1CCIPR_REG) -#define XSPI1_SEL(val) STM32_CLOCK(val, 3, 4, D1CCIPR_REG) -#define XSPI2_SEL(val) STM32_CLOCK(val, 3, 6, D1CCIPR_REG) -#define ADC_SEL(val) STM32_CLOCK(val, 3, 24, D1CCIPR_REG) -#define CKPER_SEL(val) STM32_CLOCK(val, 3, 28, D1CCIPR_REG) +#define FMC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, D1CCIPR_REG) +#define SDMMC_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 2, D1CCIPR_REG) +#define XSPI1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 4, D1CCIPR_REG) +#define XSPI2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 6, D1CCIPR_REG) +#define ADC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 24, D1CCIPR_REG) +#define CKPER_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 28, D1CCIPR_REG) /** D2CCIPR devices */ -#define USART234578_SEL(val) STM32_CLOCK(val, 7, 0, D2CCIPR_REG) -#define SPI23_SEL(val) STM32_CLOCK(val, 7, 4, D2CCIPR_REG) -#define I2C23_SEL(val) STM32_CLOCK(val, 3, 8, D2CCIPR_REG) -#define I2C1_SEL(val) STM32_CLOCK(val, 3, 12, D2CCIPR_REG) -#define I3C1_SEL(val) STM32_CLOCK(val, 3, 12, D2CCIPR_REG) -#define LPTIM1_SEL(val) STM32_CLOCK(val, 7, 16, D2CCIPR_REG) -#define FDCAN_SEL(val) STM32_CLOCK(val, 3, 22, D2CCIPR_REG) +#define USART234578_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 0, D2CCIPR_REG) +#define SPI23_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 4, D2CCIPR_REG) +#define I2C23_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, D2CCIPR_REG) +#define I2C1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, D2CCIPR_REG) +#define I3C1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, D2CCIPR_REG) +#define LPTIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 16, D2CCIPR_REG) +#define FDCAN_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, D2CCIPR_REG) /** D3CCIPR devices */ -#define USART1_SEL(val) STM32_CLOCK(val, 7, 0, D3CCIPR_REG) -#define SPI45_SEL(val) STM32_CLOCK(val, 7, 4, D3CCIPR_REG) -#define SPI1_SEL(val) STM32_CLOCK(val, 7, 8, D3CCIPR_REG) -#define SAI1_SEL(val) STM32_CLOCK(val, 7, 16, D3CCIPR_REG) -#define SAI2_SEL(val) STM32_CLOCK(val, 7, 20, D3CCIPR_REG) +#define USART1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 0, D3CCIPR_REG) +#define SPI45_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 4, D3CCIPR_REG) +#define SPI1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 8, D3CCIPR_REG) +#define SAI1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 16, D3CCIPR_REG) +#define SAI2_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 20, D3CCIPR_REG) /** D4CCIPR devices */ -#define LPUART1_SEL(val) STM32_CLOCK(val, 7, 0, D4CCIPR_REG) -#define SPI6_SEL(val) STM32_CLOCK(val, 7, 4, D4CCIPR_REG) -#define LPTIM23_SEL(val) STM32_CLOCK(val, 7, 8, D4CCIPR_REG) -#define LPTIM45_SEL(val) STM32_CLOCK(val, 7, 12, D4CCIPR_REG) +#define LPUART1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 0, D4CCIPR_REG) +#define SPI6_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 4, D4CCIPR_REG) +#define LPTIM23_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 8, D4CCIPR_REG) +#define LPTIM45_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 12, D4CCIPR_REG) /** BDCR devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, BDCR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG) + +/** CFGR devices */ +#define MCO1_SEL(val) STM32_MCO_CFGR(val, 0x7, 22, CFGR_REG) +#define MCO1_PRE(val) STM32_MCO_CFGR(val, 0xF, 18, CFGR_REG) +#define MCO2_SEL(val) STM32_MCO_CFGR(val, 0x7, 29, CFGR_REG) +#define MCO2_PRE(val) STM32_MCO_CFGR(val, 0xF, 25, CFGR_REG) + +/* MCO prescaler : division factor */ +#define MCO_PRE_DIV_1 1 +#define MCO_PRE_DIV_2 2 +#define MCO_PRE_DIV_3 3 +#define MCO_PRE_DIV_4 4 +#define MCO_PRE_DIV_5 5 +#define MCO_PRE_DIV_6 6 +#define MCO_PRE_DIV_7 7 +#define MCO_PRE_DIV_8 8 +#define MCO_PRE_DIV_9 9 +#define MCO_PRE_DIV_10 10 +#define MCO_PRE_DIV_11 11 +#define MCO_PRE_DIV_12 12 +#define MCO_PRE_DIV_13 13 +#define MCO_PRE_DIV_14 14 +#define MCO_PRE_DIV_15 15 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32H7RS_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32l0_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32l0_clock.h index 5c4d80a2..c16e367a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32l0_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32l0_clock.h @@ -53,7 +53,7 @@ * @param mask Mask for the RCC_CCIPRx field. * @param val Clock value (0, 1, ... 7). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ @@ -67,14 +67,14 @@ /** @brief Device domain clocks selection helpers */ /** CCIPR devices */ -#define USART1_SEL(val) STM32_CLOCK(val, 3, 0, CCIPR_REG) -#define USART2_SEL(val) STM32_CLOCK(val, 3, 2, CCIPR_REG) -#define LPUART1_SEL(val) STM32_CLOCK(val, 3, 10, CCIPR_REG) -#define I2C1_SEL(val) STM32_CLOCK(val, 3, 12, CCIPR_REG) -#define I2C3_SEL(val) STM32_CLOCK(val, 3, 16, CCIPR_REG) -#define LPTIM1_SEL(val) STM32_CLOCK(val, 3, 18, CCIPR_REG) -#define HSI48_SEL(val) STM32_CLOCK(val, 1, 26, CCIPR_REG) +#define USART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CCIPR_REG) +#define USART2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 2, CCIPR_REG) +#define LPUART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 10, CCIPR_REG) +#define I2C1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, CCIPR_REG) +#define I2C3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 16, CCIPR_REG) +#define LPTIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 18, CCIPR_REG) +#define HSI48_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 26, CCIPR_REG) /** CSR devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 16, CSR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 16, CSR_REG) #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32L0_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32l1_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32l1_clock.h index 1dd1fbb9..f958f7b6 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32l1_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32l1_clock.h @@ -24,6 +24,7 @@ /** Fixed clocks */ /* Low speed clocks defined in stm32_common_clocks.h */ #define STM32_SRC_HSE (STM32_SRC_LSI + 1) +#define STM32_SRC_HSI (STM32_SRC_HSE + 1) #define STM32_CLOCK_REG_MASK 0xFFU #define STM32_CLOCK_REG_SHIFT 0U @@ -47,7 +48,7 @@ * @param mask Mask for the RCC_CCIPRx field. * @param val Clock value (0, 1, ... 7). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ @@ -56,6 +57,6 @@ /** @brief RCC_CSR register offset */ #define CSR_REG 0x34 -#define RTC_SEL(val) STM32_CLOCK(val, 3, 16, CSR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 16, CSR_REG) #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32L1_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32l4_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32l4_clock.h index 8249a1bf..3e865f9a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32l4_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32l4_clock.h @@ -59,7 +59,7 @@ * @param mask Mask for the RCC_CCIPRx field. * @param val Clock value (0, 1, ... 7). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ @@ -72,35 +72,41 @@ /** @brief RCC_BDCR register offset */ #define BDCR_REG 0x90 +/** @brief RCC_CFGRx register offset */ +#define CFGR_REG 0x08 + /** @brief Device domain clocks selection helpers */ /** CCIPR devices */ -#define USART1_SEL(val) STM32_CLOCK(val, 3, 0, CCIPR_REG) -#define USART2_SEL(val) STM32_CLOCK(val, 3, 2, CCIPR_REG) -#define USART3_SEL(val) STM32_CLOCK(val, 3, 4, CCIPR_REG) -#define UART4_SEL(val) STM32_CLOCK(val, 3, 6, CCIPR_REG) -#define UART5_SEL(val) STM32_CLOCK(val, 3, 8, CCIPR_REG) -#define LPUART1_SEL(val) STM32_CLOCK(val, 3, 10, CCIPR_REG) -#define I2C1_SEL(val) STM32_CLOCK(val, 3, 12, CCIPR_REG) -#define I2C2_SEL(val) STM32_CLOCK(val, 3, 14, CCIPR_REG) -#define I2C3_SEL(val) STM32_CLOCK(val, 3, 16, CCIPR_REG) -#define LPTIM1_SEL(val) STM32_CLOCK(val, 3, 18, CCIPR_REG) -#define LPTIM2_SEL(val) STM32_CLOCK(val, 3, 20, CCIPR_REG) -#define SAI1_SEL(val) STM32_CLOCK(val, 3, 22, CCIPR_REG) -#define SAI2_SEL(val) STM32_CLOCK(val, 3, 24, CCIPR_REG) -#define CLK48_SEL(val) STM32_CLOCK(val, 3, 26, CCIPR_REG) -#define ADC_SEL(val) STM32_CLOCK(val, 3, 28, CCIPR_REG) -#define SWPMI1_SEL(val) STM32_CLOCK(val, 1, 30, CCIPR_REG) -#define DFSDM1_SEL(val) STM32_CLOCK(val, 1, 31, CCIPR_REG) +#define USART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CCIPR_REG) +#define USART2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 2, CCIPR_REG) +#define USART3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 4, CCIPR_REG) +#define UART4_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 6, CCIPR_REG) +#define UART5_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, CCIPR_REG) +#define LPUART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 10, CCIPR_REG) +#define I2C1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, CCIPR_REG) +#define I2C2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 14, CCIPR_REG) +#define I2C3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 16, CCIPR_REG) +#define LPTIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 18, CCIPR_REG) +#define LPTIM2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, CCIPR_REG) +#define SAI1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, CCIPR_REG) +#define SAI2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 24, CCIPR_REG) +#define CLK48_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 26, CCIPR_REG) +#define ADC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 28, CCIPR_REG) +#define SWPMI1_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 30, CCIPR_REG) +#define DFSDM1_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 31, CCIPR_REG) /** CCIPR2 devices */ -#define I2C4_SEL(val) STM32_CLOCK(val, 3, 0, CCIPR2_REG) -#define DFSDM_SEL(val) STM32_CLOCK(val, 1, 2, CCIPR2_REG) -#define ADFSDM_SEL(val) STM32_CLOCK(val, 3, 3, CCIPR2_REG) -/* #define SAI1_SEL(val) STM32_CLOCK(val, 7, 5, CCIPR2_REG) */ -/* #define SAI2_SEL(val) STM32_CLOCK(val, 7, 8, CCIPR2_REG) */ -#define DSI_SEL(val) STM32_CLOCK(val, 1, 12, CCIPR2_REG) -#define SDMMC_SEL(val) STM32_CLOCK(val, 1, 14, CCIPR2_REG) -#define OSPI_SEL(val) STM32_CLOCK(val, 3, 20, CCIPR2_REG) +#define I2C4_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CCIPR2_REG) +#define DFSDM_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 2, CCIPR2_REG) +#define ADFSDM_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 3, CCIPR2_REG) +/* #define SAI1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 5, CCIPR2_REG) */ +/* #define SAI2_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 8, CCIPR2_REG) */ +#define DSI_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 12, CCIPR2_REG) +#define SDMMC_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 14, CCIPR2_REG) +#define OSPI_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, CCIPR2_REG) /** BDCR devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, BDCR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG) +/** CFGR devices */ +#define MCO1_SEL(val) STM32_MCO_CFGR(val, 0xF, 24, CFGR_REG) +#define MCO1_PRE(val) STM32_MCO_CFGR(val, 0x7, 28, CFGR_REG) #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32L4_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32u0_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32u0_clock.h new file mode 100644 index 00000000..476c4236 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32u0_clock.h @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2024 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32U0_CLOCK_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32U0_CLOCK_H_ + +#include "stm32_common_clocks.h" + +/** Bus gatting clocks */ +#define STM32_CLOCK_BUS_AHB1 0x48 +#define STM32_CLOCK_BUS_IOP 0x4C +#define STM32_CLOCK_BUS_APB1 0x58 +#define STM32_CLOCK_BUS_APB1_2 0x60 + +#define STM32_PERIPH_BUS_MIN STM32_CLOCK_BUS_AHB1 +#define STM32_PERIPH_BUS_MAX STM32_CLOCK_BUS_APB1_2 + +/** Domain clocks */ +/* RM0503, clock configuration register (RCC_CCIPR) */ + +/** System clock */ +/* defined in stm32_common_clocks.h */ + +/** Fixed clocks */ +/* Low speed clocks defined in stm32_common_clocks.h */ +#define STM32_SRC_HSI (STM32_SRC_LSI + 1) +#define STM32_SRC_HSI48 (STM32_SRC_HSI + 1) +#define STM32_SRC_MSI (STM32_SRC_HSI48 + 1) +#define STM32_SRC_HSE (STM32_SRC_MSI + 1) +/** Peripheral bus clock */ +#define STM32_SRC_PCLK (STM32_SRC_HSE + 1) +/** PLL clock outputs */ +#define STM32_SRC_PLL_P (STM32_SRC_PCLK + 1) +#define STM32_SRC_PLL_Q (STM32_SRC_PLL_P + 1) +#define STM32_SRC_PLL_R (STM32_SRC_PLL_Q + 1) + +#define STM32_CLOCK_REG_MASK 0xFFU +#define STM32_CLOCK_REG_SHIFT 0U +#define STM32_CLOCK_SHIFT_MASK 0x1FU +#define STM32_CLOCK_SHIFT_SHIFT 8U +#define STM32_CLOCK_MASK_MASK 0x7U +#define STM32_CLOCK_MASK_SHIFT 13U +#define STM32_CLOCK_VAL_MASK 0x7U +#define STM32_CLOCK_VAL_SHIFT 16U + +/** + * @brief STM32 clock configuration bit field. + * + * - reg (1/2/3) [ 0 : 7 ] + * - shift (0..31) [ 8 : 12 ] + * - mask (0x1, 0x3, 0x7) [ 13 : 15 ] + * - val (0..7) [ 16 : 18 ] + * + * @param reg RCC_CCIPRx register offset + * @param shift Position within RCC_CCIPRx. + * @param mask Mask for the RCC_CCIPRx field. + * @param val Clock value (0, 1, ... 7). + */ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ + ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ + (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ + (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ + (((val) & STM32_CLOCK_VAL_MASK) << STM32_CLOCK_VAL_SHIFT)) + +/** @brief RCC_CCIPR register offset */ +#define CCIPR_REG 0x88 + +/** @brief RCC_BDCR register offset */ +#define BDCR_REG 0x90 + +/** @brief Device domain clocks selection helpers */ +/** CCIPR devices */ +#define USART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CCIPR_REG) +#define USART2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 2, CCIPR_REG) +#define LPUART3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 6, CCIPR_REG) +#define LPUART2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, CCIPR_REG) +#define LPUART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 10, CCIPR_REG) +#define I2C1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, CCIPR_REG) +#define I2C3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 16, CCIPR_REG) +#define LPTIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 18, CCIPR_REG) +#define LPTIM2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, CCIPR_REG) +#define LPTIM3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, CCIPR_REG) +#define TIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 24, CCIPR_REG) +#define TIM15_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 25, CCIPR_REG) +#define CLK48_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 26, CCIPR_REG) +#define ADC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 28, CCIPR_REG) +/** BDCR devices */ +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG) + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32U0_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32u5_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32u5_clock.h index 6f240fb3..4bb1f349 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32u5_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32u5_clock.h @@ -21,8 +21,13 @@ #define STM32_SRC_HSI48 (STM32_SRC_HSI16 + 1) #define STM32_SRC_MSIS (STM32_SRC_HSI48 + 1) #define STM32_SRC_MSIK (STM32_SRC_MSIS + 1) +/** Bus clock */ +#define STM32_SRC_HCLK (STM32_SRC_MSIK + 1) +#define STM32_SRC_PCLK1 (STM32_SRC_HCLK + 1) +#define STM32_SRC_PCLK2 (STM32_SRC_PCLK1 + 1) +#define STM32_SRC_PCLK3 (STM32_SRC_PCLK2 + 1) /** PLL outputs */ -#define STM32_SRC_PLL1_P (STM32_SRC_MSIK + 1) +#define STM32_SRC_PLL1_P (STM32_SRC_PCLK3 + 1) #define STM32_SRC_PLL1_Q (STM32_SRC_PLL1_P + 1) #define STM32_SRC_PLL1_R (STM32_SRC_PLL1_Q + 1) #define STM32_SRC_PLL2_P (STM32_SRC_PLL1_R + 1) @@ -69,7 +74,7 @@ * @param mask Mask for the RCC_CCIPRx field. * @param val Clock value (0, 1, ... 7). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ @@ -83,48 +88,62 @@ /** @brief RCC_BDCR register offset */ #define BDCR_REG 0xF0 +/** @brief RCC_CFGRx register offset */ +#define CFGR1_REG 0x1C + /** @brief Device domain clocks selection helpers */ /** CCIPR1 devices */ -#define USART1_SEL(val) STM32_CLOCK(val, 3, 0, CCIPR1_REG) -#define USART2_SEL(val) STM32_CLOCK(val, 3, 2, CCIPR1_REG) -#define USART3_SEL(val) STM32_CLOCK(val, 3, 4, CCIPR1_REG) -#define UART4_SEL(val) STM32_CLOCK(val, 3, 6, CCIPR1_REG) -#define UART5_SEL(val) STM32_CLOCK(val, 3, 8, CCIPR1_REG) -#define I2C1_SEL(val) STM32_CLOCK(val, 3, 10, CCIPR1_REG) -#define I2C2_SEL(val) STM32_CLOCK(val, 3, 12, CCIPR1_REG) -#define I2C4_SEL(val) STM32_CLOCK(val, 3, 14, CCIPR1_REG) -#define SPI2_SEL(val) STM32_CLOCK(val, 3, 16, CCIPR1_REG) -#define LPTIM2_SEL(val) STM32_CLOCK(val, 3, 18, CCIPR1_REG) -#define SPI1_SEL(val) STM32_CLOCK(val, 3, 20, CCIPR1_REG) -#define SYSTICK_SEL(val) STM32_CLOCK(val, 3, 22, CCIPR1_REG) -#define FDCAN1_SEL(val) STM32_CLOCK(val, 3, 24, CCIPR1_REG) -#define ICKLK_SEL(val) STM32_CLOCK(val, 3, 26, CCIPR1_REG) -#define TIMIC_SEL(val) STM32_CLOCK(val, 7, 29, CCIPR1_REG) +#define USART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CCIPR1_REG) +#define USART2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 2, CCIPR1_REG) +#define USART3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 4, CCIPR1_REG) +#define UART4_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 6, CCIPR1_REG) +#define UART5_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, CCIPR1_REG) +#define I2C1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 10, CCIPR1_REG) +#define I2C2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, CCIPR1_REG) +#define I2C4_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 14, CCIPR1_REG) +#define SPI2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 16, CCIPR1_REG) +#define LPTIM2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 18, CCIPR1_REG) +#define SPI1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, CCIPR1_REG) +#define SYSTICK_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, CCIPR1_REG) +#define FDCAN1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 24, CCIPR1_REG) +#define ICKLK_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 26, CCIPR1_REG) +#define TIMIC_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 29, CCIPR1_REG) /** CCIPR2 devices */ -#define MDF1_SEL(val) STM32_CLOCK(val, 7, 0, CCIPR2_REG) -#define SAI1_SEL(val) STM32_CLOCK(val, 7, 5, CCIPR2_REG) -#define SAI2_SEL(val) STM32_CLOCK(val, 7, 8, CCIPR2_REG) -#define SAE_SEL(val) STM32_CLOCK(val, 1, 11, CCIPR2_REG) -#define RNG_SEL(val) STM32_CLOCK(val, 3, 12, CCIPR2_REG) -#define SDMMC_SEL(val) STM32_CLOCK(val, 1, 14, CCIPR2_REG) -#define DSIHOST_SEL(val) STM32_CLOCK(val, 1, 15, CCIPR2_REG) -#define USART6_SEL(val) STM32_CLOCK(val, 1, 16, CCIPR2_REG) -#define LTDC_SEL(val) STM32_CLOCK(val, 1, 18, CCIPR2_REG) -#define OCTOSPI_SEL(val) STM32_CLOCK(val, 3, 20, CCIPR2_REG) -#define HSPI_SEL(val) STM32_CLOCK(val, 3, 22, CCIPR2_REG) -#define I2C5_SEL(val) STM32_CLOCK(val, 3, 24, CCIPR2_REG) -#define I2C6_SEL(val) STM32_CLOCK(val, 3, 26, CCIPR2_REG) -#define USBPHYC_SEL(val) STM32_CLOCK(val, 3, 30, CCIPR2_REG) +#define MDF1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 0, CCIPR2_REG) +#define SAI1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 5, CCIPR2_REG) +#define SAI2_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 8, CCIPR2_REG) +#define SAE_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 11, CCIPR2_REG) +#define RNG_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, CCIPR2_REG) +#define SDMMC_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 14, CCIPR2_REG) +#define DSIHOST_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 15, CCIPR2_REG) +#define USART6_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 16, CCIPR2_REG) +#define LTDC_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 18, CCIPR2_REG) +#define OCTOSPI_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, CCIPR2_REG) +#define HSPI_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, CCIPR2_REG) +#define I2C5_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 24, CCIPR2_REG) +#define I2C6_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 26, CCIPR2_REG) +#define OTGHS_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 30, CCIPR2_REG) /** CCIPR3 devices */ -#define LPUART1_SEL(val) STM32_CLOCK(val, 7, 0, CCIPR3_REG) -#define SPI3_SEL(val) STM32_CLOCK(val, 3, 3, CCIPR3_REG) -#define I2C3_SEL(val) STM32_CLOCK(val, 3, 6, CCIPR3_REG) -#define LPTIM34_SEL(val) STM32_CLOCK(val, 3, 8, CCIPR3_REG) -#define LPTIM1_SEL(val) STM32_CLOCK(val, 3, 10, CCIPR3_REG) -#define ADCDAC_SEL(val) STM32_CLOCK(val, 7, 12, CCIPR3_REG) -#define DAC1_SEL(val) STM32_CLOCK(val, 1, 15, CCIPR3_REG) -#define ADF1_SEL(val) STM32_CLOCK(val, 7, 16, CCIPR3_REG) +#define LPUART1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 0, CCIPR3_REG) +#define SPI3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 3, CCIPR3_REG) +#define I2C3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 6, CCIPR3_REG) +#define LPTIM34_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, CCIPR3_REG) +#define LPTIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 10, CCIPR3_REG) +#define ADCDAC_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 12, CCIPR3_REG) +#define DAC1_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 15, CCIPR3_REG) +#define ADF1_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 16, CCIPR3_REG) /** BDCR devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, BDCR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG) + +/** CFGR1 devices */ +#define MCO1_SEL(val) STM32_MCO_CFGR(val, 0xF, 24, CFGR1_REG) +#define MCO1_PRE(val) STM32_MCO_CFGR(val, 0x7, 28, CFGR1_REG) + +/* MCO prescaler : division factor */ +#define MCO_PRE_DIV_1 0 +#define MCO_PRE_DIV_2 1 +#define MCO_PRE_DIV_4 2 +#define MCO_PRE_DIV_8 3 +#define MCO_PRE_DIV_16 4 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32U5_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wb0_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wb0_clock.h new file mode 100644 index 00000000..23ba8e99 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wb0_clock.h @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2024 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32WB0_CLOCK_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32WB0_CLOCK_H_ + +/** Define system & low-speed clocks */ +#include "stm32_common_clocks.h" + +/** Other fixed clocks. + * - CLKSLOWMUX: used to query slow clock tree frequency + * - CLK16MHZ: secondary clock for LPUART, SPI3/I2S and BLE + * - CLK32MHZ: secondary clock for SPI3/I2S and BLE + */ +#define STM32_SRC_CLKSLOWMUX (STM32_SRC_LSI + 1) +#define STM32_SRC_CLK16MHZ (STM32_SRC_CLKSLOWMUX + 1) +#define STM32_SRC_CLK32MHZ (STM32_SRC_CLK16MHZ + 1) + +/** Bus clocks */ +#define STM32_CLOCK_BUS_AHB0 0x50 +#define STM32_CLOCK_BUS_APB0 0x54 +#define STM32_CLOCK_BUS_APB1 0x58 +#define STM32_CLOCK_BUS_APB2 0x60 + +#define STM32_PERIPH_BUS_MIN STM32_CLOCK_BUS_AHB0 +#define STM32_PERIPH_BUS_MAX STM32_CLOCK_BUS_APB2 + +#define STM32_CLOCK_REG_MASK (0xFFFFU) +#define STM32_CLOCK_REG_SHIFT (0U) +#define STM32_CLOCK_SHIFT_MASK (0x3FU) +#define STM32_CLOCK_SHIFT_SHIFT (16U) +#define STM32_CLOCK_MASK_MASK (0x1FU) +#define STM32_CLOCK_MASK_SHIFT (22U) +#define STM32_CLOCK_VAL_MASK STM32_CLOCK_MASK_MASK +#define STM32_CLOCK_VAL_SHIFT (27U) + +/** + * @brief STM32 clock configuration bit field + * + * @param reg Offset to target configuration register in RCC + * @param shift Position of field within RCC register (= field LSB's index) + * @param mask Mask of field in RCC register + * @param val Field value + * + * @note 'reg' range: 0x0~0xFFFF [ 00 : 15 ] + * @note 'shift' range: 0~63 [ 16 : 21 ] + * @note 'mask' range: 0x00~0x1F [ 22 : 26 ] + * @note 'val' range: 0x00~0x1F [ 27 : 31 ] + */ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ + ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ + (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ + (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ + (((val) & STM32_CLOCK_VAL_MASK) << STM32_CLOCK_VAL_SHIFT)) + +/** @brief RCC_CFGR register offset */ +#define CFGR_REG 0x08 + +/** @brief RCC_APB2ENR register offset */ +#define APB2ENR_REG 0x60 + +/** @brief Device clk sources selection helpers */ +#define LPUART1_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 13, CFGR_REG) /* WB05/WB09 only */ +#define SPI2_I2S2_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 22, CFGR_REG) /* WB06/WB07 only */ +/* `mask` is only 0x1 for WB06/WB07, but a single definition with mask=0x3 is acceptable */ +#define SPI3_I2S3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, CFGR_REG) + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32WB0_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wb_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wb_clock.h index d90b640d..31786c86 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wb_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wb_clock.h @@ -60,7 +60,7 @@ * @param mask Mask for the RCC_CCIPRx field. * @param val Clock value (0, 1, ... 7). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ @@ -77,19 +77,19 @@ /** @brief Device domain clocks selection helpers */ /** CCIPR devices */ -#define USART1_SEL(val) STM32_CLOCK(val, 3, 0, CCIPR_REG) -#define LPUART1_SEL(val) STM32_CLOCK(val, 3, 10, CCIPR_REG) -#define I2C1_SEL(val) STM32_CLOCK(val, 3, 12, CCIPR_REG) -#define I2C3_SEL(val) STM32_CLOCK(val, 3, 16, CCIPR_REG) -#define LPTIM1_SEL(val) STM32_CLOCK(val, 3, 18, CCIPR_REG) -#define LPTIM2_SEL(val) STM32_CLOCK(val, 3, 20, CCIPR_REG) -#define SAI1_SEL(val) STM32_CLOCK(val, 3, 22, CCIPR_REG) -#define CLK48_SEL(val) STM32_CLOCK(val, 3, 26, CCIPR_REG) -#define ADC_SEL(val) STM32_CLOCK(val, 3, 28, CCIPR_REG) -#define RNG_SEL(val) STM32_CLOCK(val, 3, 30, CCIPR_REG) +#define USART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CCIPR_REG) +#define LPUART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 10, CCIPR_REG) +#define I2C1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, CCIPR_REG) +#define I2C3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 16, CCIPR_REG) +#define LPTIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 18, CCIPR_REG) +#define LPTIM2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, CCIPR_REG) +#define SAI1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, CCIPR_REG) +#define CLK48_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 26, CCIPR_REG) +#define ADC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 28, CCIPR_REG) +#define RNG_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 30, CCIPR_REG) /** BDCR devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, BDCR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG) /** CSR devices */ -#define RFWKP_SEL(val) STM32_CLOCK(val, 3, 14, CSR_REG) +#define RFWKP_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 14, CSR_REG) #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32WB_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wba_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wba_clock.h index 4dc686e8..b8baaada 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wba_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wba_clock.h @@ -18,8 +18,14 @@ /* Low speed clocks defined in stm32_common_clocks.h */ #define STM32_SRC_HSE (STM32_SRC_LSI + 1) #define STM32_SRC_HSI16 (STM32_SRC_HSE + 1) +/** Bus clock */ +#define STM32_SRC_HCLK1 (STM32_SRC_HSI16 + 1) +#define STM32_SRC_HCLK5 (STM32_SRC_HCLK1 + 1) +#define STM32_SRC_PCLK1 (STM32_SRC_HCLK5 + 1) +#define STM32_SRC_PCLK2 (STM32_SRC_PCLK1 + 1) +#define STM32_SRC_PCLK7 (STM32_SRC_PCLK2 + 1) /** PLL outputs */ -#define STM32_SRC_PLL1_P (STM32_SRC_HSI16 + 1) +#define STM32_SRC_PLL1_P (STM32_SRC_PCLK7 + 1) #define STM32_SRC_PLL1_Q (STM32_SRC_PLL1_P + 1) #define STM32_SRC_PLL1_R (STM32_SRC_PLL1_Q + 1) @@ -62,7 +68,7 @@ #define STM32_CLOCK_VAL_MASK 0x7U #define STM32_CLOCK_VAL_SHIFT 16U -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ @@ -77,22 +83,22 @@ /** @brief Device clk sources selection helpers */ /** CCIPR1 devices */ -#define USART1_SEL(val) STM32_CLOCK(val, 3, 0, CCIPR1_REG) -#define USART2_SEL(val) STM32_CLOCK(val, 3, 2, CCIPR1_REG) -#define I2C1_SEL(val) STM32_CLOCK(val, 3, 10, CCIPR1_REG) -#define LPTIM2_SEL(val) STM32_CLOCK(val, 3, 18, CCIPR1_REG) -#define SPI1_SEL(val) STM32_CLOCK(val, 3, 20, CCIPR1_REG) -#define SYSTICK_SEL(val) STM32_CLOCK(val, 3, 22, CCIPR1_REG) -#define TIMIC_SEL(val) STM32_CLOCK(val, 1, 31, CCIPR1_REG) +#define USART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CCIPR1_REG) +#define USART2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 2, CCIPR1_REG) +#define I2C1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 10, CCIPR1_REG) +#define LPTIM2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 18, CCIPR1_REG) +#define SPI1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, CCIPR1_REG) +#define SYSTICK_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, CCIPR1_REG) +#define TIMIC_SEL(val) STM32_DOMAIN_CLOCK(val, 1, 31, CCIPR1_REG) /** CCIPR2 devices */ -#define RNG_SEL(val) STM32_CLOCK(val, 3, 12, CCIPR2_REG) +#define RNG_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, CCIPR2_REG) /** CCIPR3 devices */ -#define LPUART1_SEL(val) STM32_CLOCK(val, 3, 0, CCIPR3_REG) -#define SPI3_SEL(val) STM32_CLOCK(val, 3, 3, CCIPR3_REG) -#define I2C3_SEL(val) STM32_CLOCK(val, 3, 6, CCIPR3_REG) -#define LPTIM1_SEL(val) STM32_CLOCK(val, 3, 10, CCIPR3_REG) -#define ADC_SEL(val) STM32_CLOCK(val, 7, 12, CCIPR3_REG) +#define LPUART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CCIPR3_REG) +#define SPI3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 3, CCIPR3_REG) +#define I2C3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 6, CCIPR3_REG) +#define LPTIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 10, CCIPR3_REG) +#define ADC_SEL(val) STM32_DOMAIN_CLOCK(val, 7, 12, CCIPR3_REG) /** BCDR1 devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, BCDR1_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BCDR1_REG) #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32WBA_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wl_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wl_clock.h index 125e9a76..73847032 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wl_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/clock/stm32wl_clock.h @@ -60,7 +60,7 @@ * @param mask Mask for the RCC_CCIPRx field. * @param val Clock value (0, 1, ... 7). */ -#define STM32_CLOCK(val, mask, shift, reg) \ +#define STM32_DOMAIN_CLOCK(val, mask, shift, reg) \ ((((reg) & STM32_CLOCK_REG_MASK) << STM32_CLOCK_REG_SHIFT) | \ (((shift) & STM32_CLOCK_SHIFT_MASK) << STM32_CLOCK_SHIFT_SHIFT) | \ (((mask) & STM32_CLOCK_MASK_MASK) << STM32_CLOCK_MASK_SHIFT) | \ @@ -74,19 +74,19 @@ /** @brief Device domain clocks selection helpers */ /** CCIPR devices */ -#define USART1_SEL(val) STM32_CLOCK(val, 3, 0, CCIPR_REG) -#define USART2_SEL(val) STM32_CLOCK(val, 3, 2, CCIPR_REG) -#define SPI2_SEL(val) STM32_CLOCK(val, 3, 8, CCIPR_REG) -#define LPUART1_SEL(val) STM32_CLOCK(val, 3, 10, CCIPR_REG) -#define I2C1_SEL(val) STM32_CLOCK(val, 3, 12, CCIPR_REG) -#define I2C2_SEL(val) STM32_CLOCK(val, 3, 14, CCIPR_REG) -#define I2C3_SEL(val) STM32_CLOCK(val, 3, 16, CCIPR_REG) -#define LPTIM1_SEL(val) STM32_CLOCK(val, 3, 18, CCIPR_REG) -#define LPTIM2_SEL(val) STM32_CLOCK(val, 3, 20, CCIPR_REG) -#define LPTIM3_SEL(val) STM32_CLOCK(val, 3, 22, CCIPR_REG) -#define ADC_SEL(val) STM32_CLOCK(val, 3, 28, CCIPR_REG) -#define RNG_SEL(val) STM32_CLOCK(val, 3, 30, CCIPR_REG) +#define USART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 0, CCIPR_REG) +#define USART2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 2, CCIPR_REG) +#define SPI2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, CCIPR_REG) +#define LPUART1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 10, CCIPR_REG) +#define I2C1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 12, CCIPR_REG) +#define I2C2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 14, CCIPR_REG) +#define I2C3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 16, CCIPR_REG) +#define LPTIM1_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 18, CCIPR_REG) +#define LPTIM2_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 20, CCIPR_REG) +#define LPTIM3_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 22, CCIPR_REG) +#define ADC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 28, CCIPR_REG) +#define RNG_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 30, CCIPR_REG) /** BDCR devices */ -#define RTC_SEL(val) STM32_CLOCK(val, 3, 8, BDCR_REG) +#define RTC_SEL(val) STM32_DOMAIN_CLOCK(val, 3, 8, BDCR_REG) #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_CLOCK_STM32WL_CLOCK_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/dma_smartbond.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/dma_smartbond.h index 4240801c..abbaad11 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/dma_smartbond.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/dma_smartbond.h @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef DMA_SMARTBOND_H_ -#define DMA_SMARTBOND_H_ +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_DMA_DMA_SMARTBOND_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_DMA_DMA_SMARTBOND_H_ /** * @brief Vendror-specific DMA peripheral triggering sources. @@ -28,4 +28,4 @@ #define DMA_SMARTBOND_TRIG_MUX_SDADC 0xD #define DMA_SMARTBOND_TRIG_MUX_NONE 0xF -#endif /* DMA_SMARTBOND_H_ */ +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_DMA_DMA_SMARTBOND_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32655_dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32655_dma.h new file mode 100644 index 00000000..bedb4b5a --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32655_dma.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2023 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32655_DMA_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32655_DMA_H_ + +#define MAX32_DMA_SLOT_MEMTOMEM 0x00U +#define MAX32_DMA_SLOT_SPI1_RX 0x01U +#define MAX32_DMA_SLOT_UART0_RX 0x04U +#define MAX32_DMA_SLOT_UART1_RX 0x05U +#define MAX32_DMA_SLOT_I2C0_RX 0x07U +#define MAX32_DMA_SLOT_I2C1_RX 0x08U +#define MAX32_DMA_SLOT_ADC 0x09U +#define MAX32_DMA_SLOT_I2C2_RX 0x0AU +#define MAX32_DMA_SLOT_UART2_RX 0x0EU +#define MAX32_DMA_SLOT_SPI0_RX 0x0FU +#define MAX32_DMA_SLOT_UART3_RX 0x1CU +#define MAX32_DMA_SLOT_SPI1_TX 0x21U +#define MAX32_DMA_SLOT_UART0_TX 0x24U +#define MAX32_DMA_SLOT_UART1_TX 0x25U +#define MAX32_DMA_SLOT_I2C0_TX 0x27U +#define MAX32_DMA_SLOT_I2C1_TX 0x28U +#define MAX32_DMA_SLOT_I2C2_TX 0x2AU +#define MAX32_DMA_SLOT_CRC 0x2CU +#define MAX32_DMA_SLOT_UART2_TX 0x2EU +#define MAX32_DMA_SLOT_SPI0_TX 0x2FU +#define MAX32_DMA_SLOT_UART3_TX 0x3CU +#define MAX32_DMA_SLOT_I2S 0x3EU + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32655_DMA_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32662_dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32662_dma.h new file mode 100644 index 00000000..4ba582b8 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32662_dma.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2024 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32662_DMA_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32662_DMA_H_ + +#define MAX32_DMA_SLOT_MEMTOMEM 0x00U +#define MAX32_DMA_SLOT_SPI0_RX 0x01U +#define MAX32_DMA_SLOT_SPI1_RX 0x02U +#define MAX32_DMA_SLOT_UART0_RX 0x04U +#define MAX32_DMA_SLOT_UART1_RX 0x05U +#define MAX32_DMA_SLOT_CAN_RX 0x06U +#define MAX32_DMA_SLOT_I2C0_RX 0x07U +#define MAX32_DMA_SLOT_I2C1_RX 0x08U +#define MAX32_DMA_SLOT_ADC 0x09U +#define MAX32_DMA_SLOT_I2S_RX 0x1EU +#define MAX32_DMA_SLOT_SPI0_TX 0x21U +#define MAX32_DMA_SLOT_SPI1_TX 0x22U +#define MAX32_DMA_SLOT_UART0_TX 0x24U +#define MAX32_DMA_SLOT_UART1_TX 0x25U +#define MAX32_DMA_SLOT_CAN_TX 0x26U +#define MAX32_DMA_SLOT_I2C0_TX 0x27U +#define MAX32_DMA_SLOT_I2C1_TX 0x28U +#define MAX32_DMA_SLOT_I2S_TX 0x3EU + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32662_DMA_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32666_dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32666_dma.h new file mode 100644 index 00000000..8296e020 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32666_dma.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2023 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32666_DMA_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32666_DMA_H_ + +#define MAX32_DMA_SLOT_MEMTOMEM 0x00U +#define MAX32_DMA_SLOT_SPI1_RX 0x01U +#define MAX32_DMA_SLOT_SPI2_RX 0x02U +#define MAX32_DMA_SLOT_UART0_RX 0x04U +#define MAX32_DMA_SLOT_UART1_RX 0x05U +#define MAX32_DMA_SLOT_I2C0_RX 0x07U +#define MAX32_DMA_SLOT_I2C1_RX 0x08U +#define MAX32_DMA_SLOT_ADC 0x09U +#define MAX32_DMA_SLOT_I2C2_RX 0x0AU +#define MAX32_DMA_SLOT_UART2_RX 0x0EU +#define MAX32_DMA_SLOT_SPI0_RX 0x0FU +#define MAX32_DMA_SLOT_SPI1_TX 0x21U +#define MAX32_DMA_SLOT_SPI2_TX 0x21U +#define MAX32_DMA_SLOT_UART0_TX 0x24U +#define MAX32_DMA_SLOT_UART1_TX 0x25U +#define MAX32_DMA_SLOT_I2C0_TX 0x27U +#define MAX32_DMA_SLOT_I2C1_TX 0x28U +#define MAX32_DMA_SLOT_I2C2_TX 0x2AU +#define MAX32_DMA_SLOT_UART2_TX 0x2EU +#define MAX32_DMA_SLOT_SPI0_TX 0x2FU + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32666_DMA_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32670_dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32670_dma.h new file mode 100644 index 00000000..3eaf7182 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32670_dma.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2024 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32670_DMA_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32670_DMA_H_ + +#define MAX32_DMA_SLOT_MEMTOMEM 0x00U +#define MAX32_DMA_SLOT_SPI0_RX 0x01U +#define MAX32_DMA_SLOT_SPI1_RX 0x02U +#define MAX32_DMA_SLOT_SPI2_RX 0x03U +#define MAX32_DMA_SLOT_UART0_RX 0x04U +#define MAX32_DMA_SLOT_UART1_RX 0x05U +#define MAX32_DMA_SLOT_I2C0_RX 0x07U +#define MAX32_DMA_SLOT_I2C1_RX 0x08U +#define MAX32_DMA_SLOT_I2C2_RX 0x0AU +#define MAX32_DMA_SLOT_UART2_RX 0x0EU +#define MAX32_DMA_SLOT_AES_RX 0x10U +#define MAX32_DMA_SLOT_UART3_RX 0x1CU +#define MAX32_DMA_SLOT_I2S_RX 0x1EU +#define MAX32_DMA_SLOT_SPI0_TX 0x21U +#define MAX32_DMA_SLOT_SPI1_TX 0x22U +#define MAX32_DMA_SLOT_SPI2_TX 0x23U +#define MAX32_DMA_SLOT_UART0_TX 0x24U +#define MAX32_DMA_SLOT_UART1_TX 0x25U +#define MAX32_DMA_SLOT_I2C0_TX 0x27U +#define MAX32_DMA_SLOT_I2C1_TX 0x28U +#define MAX32_DMA_SLOT_I2C2_TX 0x2AU +#define MAX32_DMA_SLOT_CRC 0x2CU +#define MAX32_DMA_SLOT_UART2_TX 0x2EU +#define MAX32_DMA_SLOT_AES_TX 0x30U +#define MAX32_DMA_SLOT_UART3_TX 0x3CU +#define MAX32_DMA_SLOT_I2S_TX 0x3EU + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32670_DMA_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32672_dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32672_dma.h new file mode 100644 index 00000000..f6b1a134 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32672_dma.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32672_DMA_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32672_DMA_H_ + +#define MAX32_DMA_SLOT_MEMTOMEM 0x00U +#define MAX32_DMA_SLOT_SPI0_RX 0x01U +#define MAX32_DMA_SLOT_SPI1_RX 0x02U +#define MAX32_DMA_SLOT_SPI2_RX 0x03U +#define MAX32_DMA_SLOT_UART0_RX 0x04U +#define MAX32_DMA_SLOT_UART1_RX 0x05U +#define MAX32_DMA_SLOT_I2C0_RX 0x07U +#define MAX32_DMA_SLOT_I2C1_RX 0x08U +#define MAX32_DMA_SLOT_ADC 0x09U +#define MAX32_DMA_SLOT_I2C2_RX 0x0AU +#define MAX32_DMA_SLOT_UART2_RX 0x0EU +#define MAX32_DMA_SLOT_AES_RX 0x10U +#define MAX32_DMA_SLOT_UART3_RX 0x1CU +#define MAX32_DMA_SLOT_I2S_RX 0x1EU +#define MAX32_DMA_SLOT_SPI0_TX 0x21U +#define MAX32_DMA_SLOT_SPI1_TX 0x22U +#define MAX32_DMA_SLOT_SPI2_TX 0x23U +#define MAX32_DMA_SLOT_UART0_TX 0x24U +#define MAX32_DMA_SLOT_UART1_TX 0x25U +#define MAX32_DMA_SLOT_I2C0_TX 0x27U +#define MAX32_DMA_SLOT_I2C1_TX 0x28U +#define MAX32_DMA_SLOT_I2C2_TX 0x2AU +#define MAX32_DMA_SLOT_CRC 0x2CU +#define MAX32_DMA_SLOT_UART2_TX 0x2EU +#define MAX32_DMA_SLOT_AES_TX 0x30U +#define MAX32_DMA_SLOT_UART3_TX 0x3CU +#define MAX32_DMA_SLOT_I2S_TX 0x3EU + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32672_DMA_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32675_dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32675_dma.h new file mode 100644 index 00000000..e627637d --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32675_dma.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2024 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32675_DMA_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32675_DMA_H_ + +#define MAX32_DMA_SLOT_MEMTOMEM 0x00U +#define MAX32_DMA_SLOT_SPI0_RX 0x01U +#define MAX32_DMA_SLOT_SPI1_RX 0x02U +#define MAX32_DMA_SLOT_UART0_RX 0x04U +#define MAX32_DMA_SLOT_I2C0_RX 0x07U +#define MAX32_DMA_SLOT_I2C2_RX 0x0AU +#define MAX32_DMA_SLOT_UART2_RX 0x0EU +#define MAX32_DMA_SLOT_AES_RX 0x10U +#define MAX32_DMA_SLOT_I2S_RX 0x1EU +#define MAX32_DMA_SLOT_SPI0_TX 0x21U +#define MAX32_DMA_SLOT_SPI1_TX 0x22U +#define MAX32_DMA_SLOT_UART0_TX 0x24U +#define MAX32_DMA_SLOT_I2C0_TX 0x27U +#define MAX32_DMA_SLOT_I2C2_TX 0x2AU +#define MAX32_DMA_SLOT_CRC 0x2CU +#define MAX32_DMA_SLOT_UART2_TX 0x2EU +#define MAX32_DMA_SLOT_AES_TX 0x30U +#define MAX32_DMA_SLOT_I2S_TX 0x3EU + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32675_DMA_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32680_dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32680_dma.h new file mode 100644 index 00000000..dd5451e4 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32680_dma.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2024 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32680_DMA_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32680_DMA_H_ + +#define MAX32_DMA_SLOT_MEMTOMEM 0x00U +#define MAX32_DMA_SLOT_SPI1_RX 0x01U +#define MAX32_DMA_SLOT_UART0_RX 0x04U +#define MAX32_DMA_SLOT_UART1_RX 0x05U +#define MAX32_DMA_SLOT_I2C0_RX 0x07U +#define MAX32_DMA_SLOT_I2C1_RX 0x08U +#define MAX32_DMA_SLOT_ADC 0x09U +#define MAX32_DMA_SLOT_UART2_RX 0x0EU +#define MAX32_DMA_SLOT_SPI0_RX 0x0FU +#define MAX32_DMA_SLOT_UART3_RX 0x1CU +#define MAX32_DMA_SLOT_I2S_RX 0x1EU +#define MAX32_DMA_SLOT_SPI1_TX 0x21U +#define MAX32_DMA_SLOT_UART0_TX 0x24U +#define MAX32_DMA_SLOT_UART1_TX 0x25U +#define MAX32_DMA_SLOT_I2C0_TX 0x27U +#define MAX32_DMA_SLOT_I2C1_TX 0x28U +#define MAX32_DMA_SLOT_CRC 0x2CU +#define MAX32_DMA_SLOT_UART2_TX 0x2EU +#define MAX32_DMA_SLOT_SPI0_TX 0x2FU +#define MAX32_DMA_SLOT_UART3_TX 0x3CU +#define MAX32_DMA_SLOT_I2S_TX 0x3EU + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32680_DMA_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32690_dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32690_dma.h new file mode 100644 index 00000000..9e4bb8e5 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max32690_dma.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2023 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32690_DMA_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32690_DMA_H_ + +#define MAX32_DMA_SLOT_MEMTOMEM 0x00U +#define MAX32_DMA_SLOT_SPI0_RX 0x01U +#define MAX32_DMA_SLOT_SPI1_RX 0x02U +#define MAX32_DMA_SLOT_SPI2_RX 0x03U +#define MAX32_DMA_SLOT_UART0_RX 0x04U +#define MAX32_DMA_SLOT_UART1_RX 0x05U +#define MAX32_DMA_SLOT_CAN0_RX 0x06U +#define MAX32_DMA_SLOT_I2C0_RX 0x07U +#define MAX32_DMA_SLOT_I2C1_RX 0x08U +#define MAX32_DMA_SLOT_ADC 0x09U +#define MAX32_DMA_SLOT_I2C2_RX 0x0AU +#define MAX32_DMA_SLOT_UART2_RX 0x0EU +#define MAX32_DMA_SLOT_SPI3_RX 0x0FU +#define MAX32_DMA_SLOT_SPI4_RX 0x10U +#define MAX32_DMA_SLOT_USB1_IN 0x11U +#define MAX32_DMA_SLOT_USB2_IN 0x12U +#define MAX32_DMA_SLOT_USB3_IN 0x13U +#define MAX32_DMA_SLOT_USB4_IN 0x14U +#define MAX32_DMA_SLOT_USB5_IN 0x15U +#define MAX32_DMA_SLOT_USB6_IN 0x16U +#define MAX32_DMA_SLOT_USB7_IN 0x17U +#define MAX32_DMA_SLOT_USB8_IN 0x18U +#define MAX32_DMA_SLOT_USB9_IN 0x19U +#define MAX32_DMA_SLOT_USB10_IN 0x1AU +#define MAX32_DMA_SLOT_USB11_IN 0x1BU +#define MAX32_DMA_SLOT_UART3_RX 0x1CU +#define MAX32_DMA_SLOT_I2S_RX 0x1EU +#define MAX32_DMA_SLOT_CAN1_RX 0x1FU +#define MAX32_DMA_SLOT_SPI0_TX 0x21U +#define MAX32_DMA_SLOT_SPI1_TX 0x22U +#define MAX32_DMA_SLOT_SPI2_TX 0x23U +#define MAX32_DMA_SLOT_UART0_TX 0x24U +#define MAX32_DMA_SLOT_UART1_TX 0x25U +#define MAX32_DMA_SLOT_CAN0_TX 0x26U +#define MAX32_DMA_SLOT_I2C0_TX 0x27U +#define MAX32_DMA_SLOT_I2C1_TX 0x28U +#define MAX32_DMA_SLOT_I2C2_TX 0x2AU +#define MAX32_DMA_SLOT_UART2_TX 0x2EU +#define MAX32_DMA_SLOT_SPI3_TX 0x2FU +#define MAX32_DMA_SLOT_SPI4_TX 0x30U +#define MAX32_DMA_SLOT_USB1_OUT 0x31U +#define MAX32_DMA_SLOT_USB2_OUT 0x32U +#define MAX32_DMA_SLOT_USB3_OUT 0x33U +#define MAX32_DMA_SLOT_USB4_OUT 0x34U +#define MAX32_DMA_SLOT_USB5_OUT 0x35U +#define MAX32_DMA_SLOT_USB6_OUT 0x36U +#define MAX32_DMA_SLOT_USB7_OUT 0x37U +#define MAX32_DMA_SLOT_USB8_OUT 0x38U +#define MAX32_DMA_SLOT_USB9_OUT 0x39U +#define MAX32_DMA_SLOT_USB10_OUT 0x3AU +#define MAX32_DMA_SLOT_USB11_OUT 0x3BU +#define MAX32_DMA_SLOT_UART3_TX 0x3CU +#define MAX32_DMA_SLOT_I2S_TX 0x3EU +#define MAX32_DMA_SLOT_CAN1_TX 0x3FU + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX32690_DMA_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max78002_dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max78002_dma.h new file mode 100644 index 00000000..cb5592b3 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/max78002_dma.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2024 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX78002_DMA_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX78002_DMA_H_ + +#define MAX78_DMA_SLOT_MEMTOMEM 0x00U +#define MAX78_DMA_SLOT_SPI1_RX 0x01U +#define MAX78_DMA_SLOT_UART0_RX 0x04U +#define MAX78_DMA_SLOT_UART1_RX 0x05U +#define MAX78_DMA_SLOT_I2C0_RX 0x07U +#define MAX78_DMA_SLOT_I2C1_RX 0x08U +#define MAX78_DMA_SLOT_ADC 0x09U +#define MAX78_DMA_SLOT_I2C2_RX 0x0AU +#define MAX78_DMA_SLOT_UART2_RX 0x0EU +#define MAX78_DMA_SLOT_SPI0_RX 0x0FU +#define MAX78_DMA_SLOT_AES_RX 0x10U +#define MAX78_DMA_SLOT_I2S_RX 0x1EU +#define MAX78_DMA_SLOT_SPI1_TX 0x21U +#define MAX78_DMA_SLOT_UART0_TX 0x24U +#define MAX78_DMA_SLOT_UART1_TX 0x25U +#define MAX78_DMA_SLOT_I2C0_TX 0x27U +#define MAX78_DMA_SLOT_I2C1_TX 0x28U +#define MAX78_DMA_SLOT_I2C2_TX 0x2AU +#define MAX78_DMA_SLOT_CRC 0x2CU +#define MAX78_DMA_SLOT_UART2_TX 0x2EU +#define MAX78_DMA_SLOT_SPI0_TX 0x2FU +#define MAX78_DMA_SLOT_AES_TX 0x30U +#define MAX78_DMA_SLOT_I2S_TX 0x3EU + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_DMA_MAX78002_DMA_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/stm32_dma.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/stm32_dma.h index d61f6dfa..a6c1448b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/stm32_dma.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/dma/stm32_dma.h @@ -46,6 +46,8 @@ /** DMA Peripheral increment offset config on bit 15 */ #define STM32_DMA_CH_CFG_PERIPH_INC_FIXED(val) ((val & 0x1) << 15) +#define STM32_DMA_OFFSET_LINKED_BUS STM32_DMA_CH_CFG_PERIPH_INC_FIXED(0) +#define STM32_DMA_OFFSET_FIXED_4 STM32_DMA_CH_CFG_PERIPH_INC_FIXED(1) /** DMA Priority config on bits 16, 17*/ #define STM32_DMA_CH_CFG_PRIORITY(val) ((val & 0x3) << 16) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/espi/npcx_espi.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/espi/npcx_espi.h index d73eef41..e4851cc8 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/espi/npcx_espi.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/espi/npcx_espi.h @@ -6,6 +6,20 @@ #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_ESPI_NPCX_ESPI_H_ #define ZEPHYR_INCLUDE_DT_BINDINGS_ESPI_NPCX_ESPI_H_ +/* + * Encode virtual wire information into a 16-bit unsigned. + * index = bits[7:0], Replacement index number + * group = bits[11:8], Group number for VWEVMS or VWEVSM + * dir = bits[13:12], Direction for controller to target or target to controller + */ +#define ESPI_NPCX_VW_EX_VAL(dir, group, index) \ + (((dir & 0x1) << 12) + ((group & 0xf) << 8) + (index & 0xff)) + +/* extract specific information from encoded ESPI_NPCX_VW_EX_VAL */ +#define ESPI_NPCX_VW_EX_INDEX(e) ((e) & 0xff) +#define ESPI_NPCX_VW_EX_GROUP_NUM(e) (((e) >> 8) & 0xf) +#define ESPI_NPCX_VW_EX_DIR(e) (((e) >> 12) & 0x1) + /* eSPI VW Master to Slave Register Index */ #define NPCX_VWEVMS0 0 #define NPCX_VWEVMS1 1 @@ -17,6 +31,9 @@ #define NPCX_VWEVMS7 7 #define NPCX_VWEVMS8 8 #define NPCX_VWEVMS9 9 +#define NPCX_VWEVMS10 10 +#define NPCX_VWEVMS11 11 +#define NPCX_VWEVMS_MAX 12 /* eSPI VW Slave to Master Register Index */ #define NPCX_VWEVSM0 0 @@ -29,8 +46,7 @@ #define NPCX_VWEVSM7 7 #define NPCX_VWEVSM8 8 #define NPCX_VWEVSM9 9 -#define NPCX_VWEVSM10 10 -#define NPCX_VWEVSM11 11 +#define NPCX_VWEVSM_MAX 10 /* eSPI VW GPIO Slave to Master Register Index */ #define NPCX_VWGPSM0 0 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gnss/u_blox_m8.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gnss/u_blox_m8.h new file mode 100644 index 00000000..26117e63 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gnss/u_blox_m8.h @@ -0,0 +1,23 @@ +/* + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_U_BLOX_M8_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_U_BLOX_M8_H_ + +#include + +/* UART Baudrate. */ +#define UBX_M8_UART_BAUDRATE_4800 0x00 +#define UBX_M8_UART_BAUDRATE_9600 0x01 +#define UBX_M8_UART_BAUDRATE_19200 0x02 +#define UBX_M8_UART_BAUDRATE_38400 0x03 +#define UBX_M8_UART_BAUDRATE_57600 0x04 +#define UBX_M8_UART_BAUDRATE_115200 0x05 +#define UBX_M8_UART_BAUDRATE_230400 0x06 +#define UBX_M8_UART_BAUDRATE_460800 0x07 +#define UBX_M8_UART_BAUDRATE_921600 0x08 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_U_BLOX_M8_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/espressif-esp32-gpio.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/espressif-esp32-gpio.h index 36f824cd..cbea44cd 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/espressif-esp32-gpio.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/espressif-esp32-gpio.h @@ -32,4 +32,24 @@ /** @} */ +/** + * @name GPIO pin input/output enable flags + * + * These flags allow configuring a pin as input or output while keeping untouched + * its complementary configuration. By instance, if we configure a GPIO pin as an + * input and pass the flag ESP32_GPIO_PIN_OUT_EN, the driver will not disable the + * pin's output buffer. This functionality can be useful to render a pin both an + * input and output, for diagnose or testing purposes. + * + * @{ + */ + +/** Keep GPIO pin enabled as output */ +#define ESP32_GPIO_PIN_OUT_EN (1 << 12) + +/** Keep GPIO pin enabled as input */ +#define ESP32_GPIO_PIN_IN_EN (1 << 13) + +/** @} */ + #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_ESPRESSIF_ESP32_GPIO_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/nordic-npm2100-gpio.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/nordic-npm2100-gpio.h new file mode 100644 index 00000000..8173c128 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/nordic-npm2100-gpio.h @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2023 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_NORDIC_NPM2100_GPIO_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_NORDIC_NPM2100_GPIO_H_ + +/** + * @brief nPM2100-specific GPIO Flags + * @defgroup gpio_interface_npm2100 nPM2100-specific GPIO Flags + * + * The drive flags are encoded in the 8 upper bits of @ref gpio_dt_flags_t as + * follows: + * + * - Bit 8: Drive strength (0=1mA, 1=6mA) + * - Bit 9: Debounce (0=OFF, 1=ON) + * + * @ingroup gpio_interface + * @{ + */ + +/** + * @name nPM2100 GPIO drive strength flags + * @brief nPM2100 GPIO drive strength flags + * @{ + */ + +/** @cond INTERNAL_HIDDEN */ +/** Drive mode field mask */ +#define NPM2100_GPIO_DRIVE_MSK 0x0100U +/** @endcond */ + +/** Normal drive */ +#define NPM2100_GPIO_DRIVE_NORMAL (0U << 8U) +/** High drive */ +#define NPM2100_GPIO_DRIVE_HIGH (1U << 8U) + +/** @} */ + +/** + * @name nPM2100 GPIO debounce flags + * @brief nPM2100 GPIO debounce flags + * @{ + */ + +/** @cond INTERNAL_HIDDEN */ +/** Debounce field mask */ +#define NPM2100_GPIO_DEBOUNCE_MSK 0x0200U +/** @endcond */ + +/** Normal drive */ +#define NPM2100_GPIO_DEBOUNCE_OFF (0U << 9U) +/** High drive */ +#define NPM2100_GPIO_DEBOUNCE_ON (1U << 9U) + +/** @} */ + +/** @} */ + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_NORDIC_NPM2100_GPIO_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/renesas-ra-gpio-ioport.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/renesas-ra-gpio-ioport.h new file mode 100644 index 00000000..335f4b1c --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/renesas-ra-gpio-ioport.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_RENESAS_RA_GPIO_IOPORT_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_RENESAS_RA_GPIO_IOPORT_H_ + +#define RENESAS_GPIO_DS_POS (8) +#define RENESAS_GPIO_DS_MSK (0x3U << RENESAS_GPIO_DS_POS) +/* GPIO Drive strength */ +#define RENESAS_GPIO_DS_LOW (0x0 << RENESAS_GPIO_DRIVE_POS) +#define RENESAS_GPIO_DS_MIDDLE (0x1 << RENESAS_GPIO_DRIVE_POS) +#define RENESAS_GPIO_DS_HIGH_SPEED_HIGH_DRIVE (0x2 << RENESAS_GPIO_DRIVE_POS) +#define RENESAS_GPIO_DS_HIGH_DRIVE (0x3 << RENESAS_GPIO_DRIVE_POS) + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_RENESAS_RA_GPIO_IOPORT_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/renesas-rz-gpio.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/renesas-rz-gpio.h new file mode 100644 index 00000000..30729af9 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/gpio/renesas-rz-gpio.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_RENESAS_RZ_GPIO_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_RENESAS_RZ_GPIO_H_ + +/*********************************RZG3S*****************************************/ + +/** + * @brief RZ G3S specific GPIO Flags + * The pin driving ability flags are encoded in the 8 upper bits of @ref gpio_dt_flags_t as + * follows: + * - Bit 9..8: Pin driving ability value + * - Bit 11..10: Digital Noise Filter Clock Selection value + * - Bit 13..12: Digital Noise Filter Number value + * - Bit 14: Digital Noise Filter ON/OFF + * example: + * gpio-consumer { + * out-gpios = <&port8 2 (GPIO_PULL_UP | RZG3S_GPIO_FILTER_SET(1, 3, 3))>; + * }; + * gpio-consumer { + * out-gpios = <&port8 2 (GPIO_PULL_UP | RZG3S_GPIO_IOLH_SET(2))>; + * }; + */ + +/* GPIO drive IOLH */ +#define RZG3S_GPIO_IOLH_SHIFT 7U +#define RZG3S_GPIO_IOLH_SET(iolh_val) (iolh_val << RZG3S_GPIO_IOLH_SHIFT) + +/* GPIO filter */ +#define RZG3S_GPIO_FILTER_SHIFT 9U +#define RZG3S_GPIO_FILNUM_SHIFT 1U +#define RZG3S_GPIO_FILCLKSEL_SHIFT 3U +#define RZG3S_GPIO_FILTER_SET(fillonoff, filnum, filclksel) \ + (((fillonoff) | ((filnum) << RZG3S_GPIO_FILNUM_SHIFT) | \ + ((filclksel) << RZG3S_GPIO_FILCLKSEL_SHIFT)) \ + << RZG3S_GPIO_FILTER_SHIFT) + +/*******************************************************************************/ + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_GPIO_RENESAS_RZ_GPIO_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/input/cst816s-gesture-codes.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/input/cst816s-gesture-codes.h new file mode 100644 index 00000000..ec96e193 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/input/cst816s-gesture-codes.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024 Felipe Neves. + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_INPUT_CST816S_GESTURE_CODES_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_INPUT_CST816S_GESTURE_CODES_H_ + +#define CST816S_GESTURE_CODE_NONE 0x00 +#define CST816S_GESTURE_CODE_SWIPE_UP 0x01 +#define CST816S_GESTURE_CODE_SWIPE_DOWN 0x02 +#define CST816S_GESTURE_CODE_SWIPE_LEFT 0x03 +#define CST816S_GESTURE_CODE_SWIPE_RIGHT 0x04 +#define CST816S_GESTURE_CODE_SINGLE_CLICK 0x05 +#define CST816S_GESTURE_CODE_DOUBLE_CLICK 0x0B +#define CST816S_GESTURE_CODE_LONG_PRESS 0x0C + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/input/input-event-codes.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/input/input-event-codes.h index 629c1628..108691db 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/input/input-event-codes.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/input/input-event-codes.h @@ -26,6 +26,7 @@ #define INPUT_EV_REL 0x02 /**< Relative coordinate event */ #define INPUT_EV_ABS 0x03 /**< Absolute coordinate event */ #define INPUT_EV_MSC 0x04 /**< Miscellaneous event */ +#define INPUT_EV_DEVICE 0xef /**< Device specific input event */ #define INPUT_EV_VENDOR_START 0xf0 /**< Vendor specific event start */ #define INPUT_EV_VENDOR_STOP 0xff /**< Vendor specific event stop */ /** @} */ @@ -194,8 +195,8 @@ #define INPUT_BTN_7 0x107 /**< 7 button */ #define INPUT_BTN_8 0x108 /**< 8 button */ #define INPUT_BTN_9 0x109 /**< 9 button */ -#define INPUT_BTN_A BTN_SOUTH /**< A button */ -#define INPUT_BTN_B BTN_EAST /**< B button */ +#define INPUT_BTN_A INPUT_BTN_SOUTH /**< A button */ +#define INPUT_BTN_B INPUT_BTN_EAST /**< B button */ #define INPUT_BTN_BACK 0x116 /**< Back button */ #define INPUT_BTN_C 0x132 /**< C button */ #define INPUT_BTN_DPAD_DOWN 0x221 /**< Directional pad Down */ @@ -225,8 +226,8 @@ #define INPUT_BTN_TR 0x137 /**< Right trigger (R1) */ #define INPUT_BTN_TR2 0x139 /**< Right trigger 2 (R2) */ #define INPUT_BTN_WEST 0x134 /**< West button */ -#define INPUT_BTN_X BTN_NORTH /**< X button */ -#define INPUT_BTN_Y BTN_WEST /**< Y button */ +#define INPUT_BTN_X INPUT_BTN_NORTH /**< X button */ +#define INPUT_BTN_Y INPUT_BTN_WEST /**< Y button */ #define INPUT_BTN_Z 0x135 /**< Z button */ /** @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-esp32c2-intmux.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-esp32c2-intmux.h new file mode 100644 index 00000000..5f4cd793 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-esp32c2-intmux.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2024 Espressif Systems (Shanghai) Co., Ltd. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_INTERRUPT_CONTROLLER_ESP32C2_INTMUX_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_INTERRUPT_CONTROLLER_ESP32C2_INTMUX_H_ + +#define WIFI_MAC_INTR_SOURCE 0 +#define WIFI_MAC_NMI_SOURCE 1 +#define WIFI_PWR_INTR_SOURCE 2 +#define WIFI_BB_INTR_SOURCE 3 +#define BT_MAC_INTR_SOURCE 4 +#define BT_BB_INTR_SOURCE 5 +#define BT_BB_NMI_SOURCE 6 +#define LP_TIMER_SOURCE 7 +#define COEX_SOURCE 8 +#define BLE_TIMER_SOURCE 9 +#define BLE_SEC_SOURCE 10 +#define I2C_MASTER_SOURCE 11 +#define APB_CTRL_INTR_SOURCE 12 +#define GPIO_INTR_SOURCE 13 +#define GPIO_NMI_SOURCE 14 +#define SPI1_INTR_SOURCE 15 +#define SPI2_INTR_SOURCE 16 +#define UART0_INTR_SOURCE 17 +#define UART1_INTR_SOURCE 18 +#define LEDC_INTR_SOURCE 19 +#define EFUSE_INTR_SOURCE 20 +#define RTC_CORE_INTR_SOURCE 21 +#define I2C_EXT0_INTR_SOURCE 22 +#define TG0_T0_LEVEL_INTR_SOURCE 23 +#define TG0_WDT_LEVEL_INTR_SOURCE 24 +#define CACHE_IA_INTR_SOURCE 25 +#define SYSTIMER_TARGET0_EDGE_INTR_SOURCE 26 +#define SYSTIMER_TARGET1_EDGE_INTR_SOURCE 27 +#define SYSTIMER_TARGET2_EDGE_INTR_SOURCE 28 +#define SPI_MEM_REJECT_CACHE_INTR_SOURCE 29 +#define ICACHE_PRELOAD0_INTR_SOURCE 30 +#define ICACHE_SYNC0_INTR_SOURCE 31 +#define APB_ADC_INTR_SOURCE 32 +#define DMA_CH0_INTR_SOURCE 33 +#define SHA_INTR_SOURCE 34 +#define ECC_INTR_SOURCE 35 +#define FROM_CPU_INTR0_SOURCE 36 +#define FROM_CPU_INTR1_SOURCE 37 +#define FROM_CPU_INTR2_SOURCE 38 +#define FROM_CPU_INTR3_SOURCE 39 +#define ASSIST_DEBUG_INTR_SOURCE 40 +#define CORE0_PIF_PMS_SIZE_INTR_SOURCE 41 +#define CACHE_CORE0_ACS_INTR_SOURCE 42 + +/* RISC-V supports priority values from 1 (lowest) to 15. + * As interrupt controller for Xtensa and RISC-V is shared, this is + * set to an intermediate and compatible value. + */ +#define IRQ_DEFAULT_PRIORITY 3 + +#define ESP_INTR_FLAG_SHARED (1<<8) /* Interrupt can be shared between ISRs */ + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-esp32c3-intmux.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-esp32c3-intmux.h index f5e2cd61..f6059000 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-esp32c3-intmux.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-esp32c3-intmux.h @@ -70,4 +70,12 @@ #define BAK_PMS_VIOLATE_INTR_SOURCE 60 #define CACHE_CORE0_ACS_INTR_SOURCE 61 +/* RISC-V supports priority values from 1 (lowest) to 15. + * As interrupt controller for Xtensa and RISC-V is shared, this is + * set to an intermediate and compatible value. + */ +#define IRQ_DEFAULT_PRIORITY 3 + +#define ESP_INTR_FLAG_SHARED (1<<8) /* Interrupt can be shared between ISRs */ + #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-esp32c6-intmux.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-esp32c6-intmux.h index 644d8cfb..24b55504 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-esp32c6-intmux.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-esp32c6-intmux.h @@ -86,4 +86,12 @@ #define ECC_INTR_SOURCE 76 /* interrupt of ECC accelerator, level*/ #define MAX_INTR_SOURCE 77 +/* RISC-V supports priority values from 1 (lowest) to 15. + * As interrupt controller for Xtensa and RISC-V is shared, this is + * set to an intermediate and compatible value. + */ +#define IRQ_DEFAULT_PRIORITY 3 + +#define ESP_INTR_FLAG_SHARED (1<<8) /* Interrupt can be shared between ISRs */ + #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_INTERRUPT_CONTROLLER_ESP32C6_INTMUX_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-xtensa-intmux.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-xtensa-intmux.h index d0657714..32194e69 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-xtensa-intmux.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp-xtensa-intmux.h @@ -79,4 +79,11 @@ #define CACHE_IA_INTR_SOURCE 68 /* Cache Invalid Access, LEVEL */ #define MAX_INTR_SOURCE 69 /* total number of interrupt sources */ +/* For Xtensa architecture, zero will allocate low/medium + * levels of priority (ESP_INTR_FLAG_LOWMED) + */ +#define IRQ_DEFAULT_PRIORITY 0 + +#define ESP_INTR_FLAG_SHARED (1<<8) /* Interrupt can be shared between ISRs */ + #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp32s2-xtensa-intmux.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp32s2-xtensa-intmux.h index fd63ea50..383f9a62 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp32s2-xtensa-intmux.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp32s2-xtensa-intmux.h @@ -106,4 +106,11 @@ #define ICACHE_SYNC_INTR_SOURCE 94 /* instruction cache sync done, level */ #define MAX_INTR_SOURCE 95 /* total number of interrupt sources */ +/* For Xtensa architecture, zero will allocate low/medium + * levels of priority (ESP_INTR_FLAG_LOWMED) + */ +#define IRQ_DEFAULT_PRIORITY 0 + +#define ESP_INTR_FLAG_SHARED (1<<8) /* Interrupt can be shared between ISRs */ + #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp32s3-xtensa-intmux.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp32s3-xtensa-intmux.h index e2b94e57..87c69060 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp32s3-xtensa-intmux.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/interrupt-controller/esp32s3-xtensa-intmux.h @@ -104,4 +104,11 @@ #define DMA_EXTMEM_REJECT_SOURCE 98 #define MAX_INTR_SOURCE 99 /* number of interrupt sources */ +/* For Xtensa architecture, zero will allocate low/medium + * levels of priority (ESP_INTR_FLAG_LOWMED) + */ +#define IRQ_DEFAULT_PRIORITY 0 + +#define ESP_INTR_FLAG_SHARED (1<<8) /* Interrupt can be shared between ISRs */ + #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/mfd/mfd_it8801_altctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/mfd/mfd_it8801_altctrl.h new file mode 100644 index 00000000..673cb5d2 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/mfd/mfd_it8801_altctrl.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2024 ITE Technology Corporation. + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_MFD_IT8801_ALTCTRL_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_MFD_IT8801_ALTCTRL_H_ + +/** + * @brief PIN alternate function. + */ +#define IT8801_ALT_FUNC_1 0U +#define IT8801_ALT_FUNC_2 1U +#define IT8801_ALT_FUNC_3 2U +#define IT8801_ALT_DEFAULT 3U + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_MFD_IT8801_ALTCTRL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/mipi_dbi/mipi_dbi.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/mipi_dbi/mipi_dbi.h index 25886635..cb3eae16 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/mipi_dbi/mipi_dbi.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/mipi_dbi/mipi_dbi.h @@ -20,15 +20,15 @@ * command or data byte * * - * .---. .---. .---. .---. .---. .---. .---. .---. - * SCK -' '---' '---' '---' '---' '---' '---' '---' '--- + * .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .- + * SCK -' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' * - * -.---.---.---.---.---.---.---.---.---.---.---.---.---.---.---. + * -.---.---.---.---.---.---.---.---.---.---.---.---.---.---.---.- * DOUT |D/C| D7| D6| D5| D4| D3| D2| D1| D0|D/C| D7| D6| D5| D4|...| - * -'---'---'---'---'---'---'---'---'---'---'---'---'---'---'---' + * -'---'---'---'---'---'---'---'---'---'---'---'---'---'---'---'- * | Word 1 | Word n * - * -. .-- + * -. .- * CS '-----------------------------------------------------------' */ #define MIPI_DBI_MODE_SPI_3WIRE 0x1 @@ -37,15 +37,15 @@ * an additional C/D pin will be use to indicate whether the byte is a * command or data byte * - * .---. .---. .---. .---. .---. .---. .---. .---. - * SCK -' '---' '---' '---' '---' '---' '---' '---' '--- + * .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. + * SCK -' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '--- * - * -.---.---.---.---.---.---.---.---.---.---.---.---.---.---.---.---. + * -.---.---.---.---.---.---.---.---.---.---.---.---.---.---.---.---.- * DOUT | D7| D6| D5| D4| D3| D2| D1| D0| D7| D6| D5| D4| D3| D2| D1| D0| - * -'---'---'---'---'---'---'---'---'---'---'---'---'---'---'---'---' + * -'---'---'---'---'---'---'---'---'---'---'---'---'---'---'---'---'- * | Word 1 | Word n * - * -. .-- + * -. .- * CS '---------------------------------------------------------------' * * -.-------------------------------.-------------------------------.- @@ -110,6 +110,68 @@ #define MIPI_DBI_MODE_8080_BUS_9_BIT 0x7 #define MIPI_DBI_MODE_8080_BUS_8_BIT 0x8 +/** MIPI DBI tearing enable synchronization is disabled. */ +#define MIPI_DBI_TE_NO_EDGE 0x0 + +/** + * MIPI DBI tearing enable synchronization on rising edge of TE signal. + * The controller will only send display write data on a rising edge of TE. + * This should be used when the controller can send a frame worth of data + * data to the display panel faster than the display panel can read a frame + * from its RAM + * + * .------. .------. + * TE -----' '------------------------' '------------- + * -----. .----------------------. + * CS '--------' '-------------------- + */ +#define MIPI_DBI_TE_RISING_EDGE 0x1 + +/** + * MIPI DBI tearing enable synchronization on falling edge of TE signal. + * The controller will only send display write data on a falling edge of TE. + * This should be used when the controller sends a frame worth of data + * data to the display panel slower than the display panel can read a frame + * from its RAM. TE synchronization in this mode will only work if the + * controller can complete the write before the display panel completes 2 + * read cycles, otherwise the read pointer will "catch up" with the write + * pointer. + * + * .------. .------. + * TE -----' '------------------------' '------------- + * ------------. .----- + * CS '---------------------------------------' + */ +#define MIPI_DBI_TE_FALLING_EDGE 0x2 + +/** + * SPI transfer of DBI commands as 8-bit blocks, the default behaviour in + * SPI 4 wire (Type C3) mode. The clocking diagram corresponds exactly to + * the illustration of Type C3. + */ +#define MIPI_DBI_SPI_XFR_8BIT 8 +/** + * SPI transfer of DBI commands as 16-bit blocks, a rare and seldom behaviour + * in SPI 4 wire (Type C3) mode. The corresponding clocking diagram is slightly + * different to the illustration of Type C3. + * + * .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. + * SCK -' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '--- + * + * -.---.---.---.---.---.---.---.---.---.---.---.---.---.---.---.---.- + * DOUT |D15|D14|D13|D12|D11|D10| D9| D8| D7| D6| D5| D4| D3| D2| D1| D0| + * -'---'---'---'---'---'---'---'---'---'---'---'---'---'---'---'---'- + * | Word 1 (stuffing) : (byte) | + * + * -. .- + * CS '---------------------------------------------------------------' + * + * -.---------------------------------------------------------------.- + * CD | D/C | + * -'---------------------------------------------------------------'- + */ +#define MIPI_DBI_SPI_XFR_16BIT 16 + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-domain-id-nrf54h20.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-domain-id-nrf54h20.h index a5fd23fd..60bd120f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-domain-id-nrf54h20.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-domain-id-nrf54h20.h @@ -4,6 +4,7 @@ */ #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_DOMAIN_ID_NRF54H20_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_DOMAIN_ID_NRF54H20_H_ #define NRF_DOMAIN_ID_APPLICATION 2 #define NRF_DOMAIN_ID_RADIOCORE 3 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-domain-id-nrf9230.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-domain-id-nrf9230.h new file mode 100644 index 00000000..8e4e1759 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-domain-id-nrf9230.h @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_DOMAIN_ID_NRF9280_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_DOMAIN_ID_NRF9280_H_ + +#define NRF_DOMAIN_ID_APPLICATION 2 +#define NRF_DOMAIN_ID_RADIOCORE 3 +#define NRF_DOMAIN_ID_CELLCORE 4 +#define NRF_DOMAIN_ID_GLOBALFAST 12 +#define NRF_DOMAIN_ID_GLOBALSLOW 13 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_DOMAIN_ID_NRF9280_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-nrf-ficr-nrf9230-engb.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-nrf-ficr-nrf9230-engb.h new file mode 100644 index 00000000..aec19500 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-nrf-ficr-nrf9230-engb.h @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + +/* autogenerated using Nordic HAL utils/gen_offsets.py script */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_NRF_FICR_NRF9230_ENGB_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_NRF_FICR_NRF9230_ENGB_H_ + +#define NRF_FICR_BLE_ADDRTYPE 0x00CU +#define NRF_FICR_BLE_ADDR_0 0x010U +#define NRF_FICR_BLE_ADDR_1 0x014U +#define NRF_FICR_BLE_ER_0 0x018U +#define NRF_FICR_BLE_ER_1 0x01CU +#define NRF_FICR_BLE_ER_2 0x020U +#define NRF_FICR_BLE_ER_3 0x024U +#define NRF_FICR_BLE_IR_0 0x028U +#define NRF_FICR_BLE_IR_1 0x02CU +#define NRF_FICR_BLE_IR_2 0x030U +#define NRF_FICR_BLE_IR_3 0x034U +#define NRF_FICR_INFO_CONFIGID 0x050U +#define NRF_FICR_INFO_PART 0x054U +#define NRF_FICR_INFO_VARIANT 0x058U +#define NRF_FICR_INFO_PACKAGE 0x05CU +#define NRF_FICR_INFO_RAM 0x060U +#define NRF_FICR_INFO_MRAM 0x064U +#define NRF_FICR_INFO_CODEPAGESIZE 0x068U +#define NRF_FICR_INFO_CODESIZE 0x06CU +#define NRF_FICR_INFO_DEVICETYPE 0x070U +#define NRF_FICR_SIPINFO_OVERRIDE_LFOSC_CONFIG 0x0A4U +#define NRF_FICR_SIPINFO_OVERRIDE_LFOSC_LFXOCONFIG 0x0A8U +#define NRF_FICR_SIPINFO_OVERRIDE_LFOSC_LFXOCAL 0x0ACU +#define NRF_FICR_SIPINFO_OVERRIDE_LFOSC_LFRCAUTOCALCONFIG 0x0B0U +#define NRF_FICR_SIPINFO_OVERRIDE_HFXO64M_CONFIG 0x0B4U +#define NRF_FICR_SIPINFO_PARTNO 0x080U +#define NRF_FICR_SIPINFO_HWREVISION_0 0x084U +#define NRF_FICR_SIPINFO_HWREVISION_1 0x085U +#define NRF_FICR_SIPINFO_HWREVISION_2 0x086U +#define NRF_FICR_SIPINFO_HWREVISION_3 0x087U +#define NRF_FICR_SIPINFO_VARIANT_0 0x088U +#define NRF_FICR_SIPINFO_VARIANT_1 0x089U +#define NRF_FICR_SIPINFO_VARIANT_2 0x08AU +#define NRF_FICR_SIPINFO_VARIANT_3 0x08BU +#define NRF_FICR_SIPINFO_PMICVERSION 0x08CU +#define NRF_FICR_SIPINFO_TESTSITE_0 0x090U +#define NRF_FICR_SIPINFO_TESTSITE_1 0x091U +#define NRF_FICR_SIPINFO_TESTSITE_2 0x092U +#define NRF_FICR_SIPINFO_TESTSITE_3 0x093U +#define NRF_FICR_SIPINFO_LOT 0x094U +#define NRF_FICR_SIPINFO_TESTPROGRAMID_0 0x098U +#define NRF_FICR_SIPINFO_TESTPROGRAMID_1 0x099U +#define NRF_FICR_SIPINFO_TESTPROGRAMID_2 0x09AU +#define NRF_FICR_SIPINFO_TESTPROGRAMID_3 0x09BU +#define NRF_FICR_SIPINFO_OSATPARTNO 0x09CU +#define NRF_FICR_SIPINFO_HWBUILDVERSION_0 0x0A0U +#define NRF_FICR_SIPINFO_HWBUILDVERSION_1 0x0A1U +#define NRF_FICR_SIPINFO_HWBUILDVERSION_2 0x0A2U +#define NRF_FICR_SIPINFO_HWBUILDVERSION_3 0x0A3U +#define NRF_FICR_TRIM_GLOBAL_SAADC_CALVREF 0x344U +#define NRF_FICR_TRIM_GLOBAL_SAADC_CALGAIN_0 0x348U +#define NRF_FICR_TRIM_GLOBAL_SAADC_CALGAIN_1 0x34CU +#define NRF_FICR_TRIM_GLOBAL_SAADC_CALGAIN_2 0x350U +#define NRF_FICR_TRIM_GLOBAL_SAADC_CALOFFSET 0x354U +#define NRF_FICR_TRIM_GLOBAL_SAADC_LINCALCOEFF_0 0x358U +#define NRF_FICR_TRIM_GLOBAL_SAADC_LINCALCOEFF_1 0x35CU +#define NRF_FICR_TRIM_GLOBAL_SAADC_LINCALCOEFF_2 0x360U +#define NRF_FICR_TRIM_GLOBAL_SAADC_LINCALCOEFF_3 0x364U +#define NRF_FICR_TRIM_GLOBAL_SAADC_LINCALCOEFF_4 0x368U +#define NRF_FICR_TRIM_GLOBAL_SAADC_LINCALCOEFF_5 0x36CU +#define NRF_FICR_TRIM_GLOBAL_SAADC_CALIREF 0x370U +#define NRF_FICR_TRIM_GLOBAL_SAADC_CALVREFTC 0x374U +#define NRF_FICR_TRIM_GLOBAL_CANPLL_TRIM_CTUNE 0x380U +#define NRF_FICR_TRIM_GLOBAL_COMP_REFTRIM 0x390U +#define NRF_FICR_TRIM_APPLICATION_HSFLL_TRIM_VSUP 0x398U +#define NRF_FICR_TRIM_APPLICATION_HSFLL_TRIM_COARSE_0 0x39CU +#define NRF_FICR_TRIM_APPLICATION_HSFLL_TRIM_COARSE_1 0x3A0U +#define NRF_FICR_TRIM_APPLICATION_HSFLL_TRIM_COARSE_2 0x3A4U +#define NRF_FICR_TRIM_APPLICATION_HSFLL_TRIM_COARSE_3 0x3A8U +#define NRF_FICR_TRIM_APPLICATION_HSFLL_TRIM_COARSE_4 0x3ACU +#define NRF_FICR_TRIM_APPLICATION_HSFLL_TRIM_COARSE_5 0x3B0U +#define NRF_FICR_TRIM_APPLICATION_HSFLL_TRIM_FINE_0 0x3B4U +#define NRF_FICR_TRIM_APPLICATION_HSFLL_TRIM_FINE_1 0x3B8U +#define NRF_FICR_TRIM_APPLICATION_HSFLL_TRIM_FINE_2 0x3BCU +#define NRF_FICR_TRIM_APPLICATION_HSFLL_TRIM_FINE_3 0x3C0U +#define NRF_FICR_TRIM_APPLICATION_HSFLL_TRIM_FINE_4 0x3C4U +#define NRF_FICR_TRIM_APPLICATION_HSFLL_TRIM_FINE_5 0x3C8U +#define NRF_FICR_TRIM_APPLICATION_MEMCONF_BLOCKTYPE_0_TRIM 0x3CCU +#define NRF_FICR_TRIM_APPLICATION_MEMCONF_BLOCKTYPE_1_TRIM 0x3D0U +#define NRF_FICR_TRIM_APPLICATION_MEMCONF_BLOCKTYPE_2_TRIM 0x3D4U +#define NRF_FICR_TRIM_APPLICATION_MEMCONF_BLOCKTYPE_3_TRIM 0x3D8U +#define NRF_FICR_TRIM_RADIOCORE_HSFLL_TRIM_VSUP 0x3DCU +#define NRF_FICR_TRIM_RADIOCORE_HSFLL_TRIM_COARSE_0 0x3E0U +#define NRF_FICR_TRIM_RADIOCORE_HSFLL_TRIM_COARSE_1 0x3E4U +#define NRF_FICR_TRIM_RADIOCORE_HSFLL_TRIM_COARSE_2 0x3E8U +#define NRF_FICR_TRIM_RADIOCORE_HSFLL_TRIM_COARSE_3 0x3ECU +#define NRF_FICR_TRIM_RADIOCORE_HSFLL_TRIM_COARSE_4 0x3F0U +#define NRF_FICR_TRIM_RADIOCORE_HSFLL_TRIM_COARSE_5 0x3F4U +#define NRF_FICR_TRIM_RADIOCORE_HSFLL_TRIM_FINE_0 0x3F8U +#define NRF_FICR_TRIM_RADIOCORE_HSFLL_TRIM_FINE_1 0x3FCU +#define NRF_FICR_TRIM_RADIOCORE_HSFLL_TRIM_FINE_2 0x400U +#define NRF_FICR_TRIM_RADIOCORE_HSFLL_TRIM_FINE_3 0x404U +#define NRF_FICR_TRIM_RADIOCORE_HSFLL_TRIM_FINE_4 0x408U +#define NRF_FICR_TRIM_RADIOCORE_HSFLL_TRIM_FINE_5 0x40CU +#define NRF_FICR_TRIM_RADIOCORE_MEMCONF_BLOCKTYPE_0_TRIM 0x410U +#define NRF_FICR_TRIM_RADIOCORE_MEMCONF_BLOCKTYPE_1_TRIM 0x414U +#define NRF_FICR_TRIM_RADIOCORE_MEMCONF_BLOCKTYPE_2_TRIM 0x418U +#define NRF_FICR_TRIM_RADIOCORE_MEMCONF_BLOCKTYPE_3_TRIM 0x41CU + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_NRF_FICR_NRF9230_ENGB_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-owner-id-nrf54h20.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-owner-id-nrf54h20.h index 080b4e04..74761bf0 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-owner-id-nrf54h20.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-owner-id-nrf54h20.h @@ -4,6 +4,7 @@ */ #ifndef ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_OWNER_ID_NRF54H20_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_OWNER_ID_NRF54H20_H_ #define NRF_OWNER_ID_NONE 0 #define NRF_OWNER_ID_APPLICATION 2 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-owner-id-nrf9230.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-owner-id-nrf9230.h new file mode 100644 index 00000000..6d9a8f28 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-owner-id-nrf9230.h @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_OWNER_ID_NRF9280_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_OWNER_ID_NRF9280_H_ + +#define NRF_OWNER_ID_NONE 0 +#define NRF_OWNER_ID_APPLICATION 2 +#define NRF_OWNER_ID_RADIOCORE 3 +#define NRF_OWNER_ID_CELL 4 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_OWNER_ID_NRF9280_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-tddconf.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-tddconf.h new file mode 100644 index 00000000..44bc74e4 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/misc/nordic-tddconf.h @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_TDDCONF_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_TDDCONF_H_ + +#define NRF_TDDCONF_SOURCE_STMMAINCORE BIT(0) +#define NRF_TDDCONF_SOURCE_ETMMAINCORE BIT(1) +#define NRF_TDDCONF_SOURCE_STMHWEVENTS BIT(2) +#define NRF_TDDCONF_SOURCE_STMPPR BIT(3) +#define NRF_TDDCONF_SOURCE_STMFLPR BIT(4) + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_MISC_NORDIC_TDDCONF_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/ch32v003-pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/ch32v003-pinctrl.h new file mode 100644 index 00000000..f8bb545c --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/ch32v003-pinctrl.h @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2024 Michael Hope + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef __CH32V003_PINCTRL_H__ +#define __CH32V003_PINCTRL_H__ + +#define CH32V003_PINMUX_PORT_PA 0 +#define CH32V003_PINMUX_PORT_PC 1 +#define CH32V003_PINMUX_PORT_PD 2 + +/* + * Defines the starting bit for the remap field. Note that the I2C1 and USART1 fields are not + * contigious. + */ +#define CH32V003_PINMUX_SPI1_RM 0 +#define CH32V003_PINMUX_I2C1_RM 1 +#define CH32V003_PINMUX_I2C1_RM1 23 +#define CH32V003_PINMUX_USART1_RM 2 +#define CH32V003_PINMUX_USART1_RM1 21 +#define CH32V003_PINMUX_TIM1_RM 6 +#define CH32V003_PINMUX_TIM2_RM 8 + +/* Port number with 0-2 */ +#define CH32V003_PINCTRL_PORT_SHIFT 0 +/* Pin number 0-15 */ +#define CH32V003_PINCTRL_PIN_SHIFT 2 +/* Base remap bit 0-31 */ +#define CH32V003_PINCTRL_RM_BASE_SHIFT 6 +/* Function remapping ID 0-3 */ +#define CH32V003_PINCTRL_RM_SHIFT 11 + +#define CH32V003_PINMUX_DEFINE(port, pin, rm, remapping) \ + ((CH32V003_PINMUX_PORT_##port << CH32V003_PINCTRL_PORT_SHIFT) | \ + (pin << CH32V003_PINCTRL_PIN_SHIFT) | \ + (CH32V003_PINMUX_##rm##_RM << CH32V003_PINCTRL_RM_BASE_SHIFT) | \ + (remapping << CH32V003_PINCTRL_RM_SHIFT)) + +#define TIM1_ETR_PC5_0 CH32V003_PINMUX_DEFINE(PC, 5, TIM1, 0) +#define TIM1_ETR_PC5_1 CH32V003_PINMUX_DEFINE(PC, 5, TIM1, 1) +#define TIM1_ETR_PD4_2 CH32V003_PINMUX_DEFINE(PD, 4, TIM1, 2) +#define TIM1_ETR_PC2_3 CH32V003_PINMUX_DEFINE(PC, 2, TIM1, 3) +#define TIM1_CH1_PD2_0 CH32V003_PINMUX_DEFINE(PD, 2, TIM1, 0) +#define TIM1_CH1_PC6_1 CH32V003_PINMUX_DEFINE(PC, 6, TIM1, 1) +#define TIM1_CH1_PD2_2 CH32V003_PINMUX_DEFINE(PD, 2, TIM1, 2) +#define TIM1_CH1_PC4_3 CH32V003_PINMUX_DEFINE(PC, 4, TIM1, 3) +#define TIM1_CH2_PA1_0 CH32V003_PINMUX_DEFINE(PA, 1, TIM1, 0) +#define TIM1_CH2_PC7_1 CH32V003_PINMUX_DEFINE(PC, 7, TIM1, 1) +#define TIM1_CH2_PA1_2 CH32V003_PINMUX_DEFINE(PA, 1, TIM1, 2) +#define TIM1_CH2_PC7_3 CH32V003_PINMUX_DEFINE(PC, 7, TIM1, 3) +#define TIM1_CH3_PC3_0 CH32V003_PINMUX_DEFINE(PC, 3, TIM1, 0) +#define TIM1_CH3_PC0_1 CH32V003_PINMUX_DEFINE(PC, 0, TIM1, 1) +#define TIM1_CH3_PC3_2 CH32V003_PINMUX_DEFINE(PC, 3, TIM1, 2) +#define TIM1_CH3_PC5_3 CH32V003_PINMUX_DEFINE(PC, 5, TIM1, 3) +#define TIM1_CH4_PC4_0 CH32V003_PINMUX_DEFINE(PC, 4, TIM1, 0) +#define TIM1_CH4_PD3_1 CH32V003_PINMUX_DEFINE(PD, 3, TIM1, 1) +#define TIM1_CH4_PC4_2 CH32V003_PINMUX_DEFINE(PC, 4, TIM1, 2) +#define TIM1_CH4_PD4_3 CH32V003_PINMUX_DEFINE(PD, 4, TIM1, 3) +#define TIM1_BKIN_PC2_0 CH32V003_PINMUX_DEFINE(PC, 2, TIM1, 0) +#define TIM1_BKIN_PC1_1 CH32V003_PINMUX_DEFINE(PC, 1, TIM1, 1) +#define TIM1_BKIN_PC2_2 CH32V003_PINMUX_DEFINE(PC, 2, TIM1, 2) +#define TIM1_BKIN_PC1_3 CH32V003_PINMUX_DEFINE(PC, 1, TIM1, 3) +#define TIM1_CH1N_PD0_0 CH32V003_PINMUX_DEFINE(PD, 0, TIM1, 0) +#define TIM1_CH1N_PC3_1 CH32V003_PINMUX_DEFINE(PC, 3, TIM1, 1) +#define TIM1_CH1N_PD0_2 CH32V003_PINMUX_DEFINE(PD, 0, TIM1, 2) +#define TIM1_CH1N_PC3_3 CH32V003_PINMUX_DEFINE(PC, 3, TIM1, 3) +#define TIM1_CH2N_PA2_0 CH32V003_PINMUX_DEFINE(PA, 2, TIM1, 0) +#define TIM1_CH2N_PC4_1 CH32V003_PINMUX_DEFINE(PC, 4, TIM1, 1) +#define TIM1_CH2N_PA2_2 CH32V003_PINMUX_DEFINE(PA, 2, TIM1, 2) +#define TIM1_CH2N_PD2_3 CH32V003_PINMUX_DEFINE(PD, 2, TIM1, 3) +#define TIM1_CH3N_PD1_0 CH32V003_PINMUX_DEFINE(PD, 1, TIM1, 0) +#define TIM1_CH3N_PD1_1 CH32V003_PINMUX_DEFINE(PD, 1, TIM1, 1) +#define TIM1_CH3N_PD1_2 CH32V003_PINMUX_DEFINE(PD, 1, TIM1, 2) +#define TIM1_CH3N_PC6_3 CH32V003_PINMUX_DEFINE(PC, 6, TIM1, 3) + +#define TIM2_ETR_PD4_0 CH32V003_PINMUX_DEFINE(PD, 4, TIM2, 0) +#define TIM2_ETR_PC5_1 CH32V003_PINMUX_DEFINE(PC, 5, TIM2, 1) +#define TIM2_ETR_PC1_2 CH32V003_PINMUX_DEFINE(PC, 1, TIM2, 2) +#define TIM2_ETR_PC1_3 CH32V003_PINMUX_DEFINE(PC, 1, TIM2, 3) +#define TIM2_CH1_PD4_0 CH32V003_PINMUX_DEFINE(PD, 4, TIM2, 0) +#define TIM2_CH1_PC5_1 CH32V003_PINMUX_DEFINE(PC, 5, TIM2, 1) +#define TIM2_CH1_PC1_2 CH32V003_PINMUX_DEFINE(PC, 1, TIM2, 2) +#define TIM2_CH1_PC1_3 CH32V003_PINMUX_DEFINE(PC, 1, TIM2, 3) +#define TIM2_CH2_PD3_0 CH32V003_PINMUX_DEFINE(PD, 3, TIM2, 0) +#define TIM2_CH2_PC2_1 CH32V003_PINMUX_DEFINE(PC, 2, TIM2, 1) +#define TIM2_CH2_PD3_2 CH32V003_PINMUX_DEFINE(PD, 3, TIM2, 2) +#define TIM2_CH2_PC7_3 CH32V003_PINMUX_DEFINE(PC, 7, TIM2, 3) +#define TIM2_CH3_PC0_0 CH32V003_PINMUX_DEFINE(PC, 0, TIM2, 0) +#define TIM2_CH3_PD2_1 CH32V003_PINMUX_DEFINE(PD, 2, TIM2, 1) +#define TIM2_CH3_PC0_2 CH32V003_PINMUX_DEFINE(PC, 0, TIM2, 2) +#define TIM2_CH3_PD6_3 CH32V003_PINMUX_DEFINE(PD, 6, TIM2, 3) +#define TIM2_CH4_PD7_0 CH32V003_PINMUX_DEFINE(PD, 7, TIM2, 0) +#define TIM2_CH4_PC1_1 CH32V003_PINMUX_DEFINE(PC, 1, TIM2, 1) +#define TIM2_CH4_PD7_2 CH32V003_PINMUX_DEFINE(PD, 7, TIM2, 2) +#define TIM2_CH4_PD5_3 CH32V003_PINMUX_DEFINE(PD, 5, TIM2, 3) + +#define USART1_CK_PD4_0 CH32V003_PINMUX_DEFINE(PD, 4, USART1, 0) +#define USART1_CK_PD7_1 CH32V003_PINMUX_DEFINE(PD, 7, USART1, 1) +#define USART1_CK_PD7_2 CH32V003_PINMUX_DEFINE(PD, 7, USART1, 2) +#define USART1_CK_PC5_3 CH32V003_PINMUX_DEFINE(PC, 5, USART1, 3) +#define USART1_TX_PD5_0 CH32V003_PINMUX_DEFINE(PD, 5, USART1, 0) +#define USART1_TX_PD0_1 CH32V003_PINMUX_DEFINE(PD, 0, USART1, 1) +#define USART1_TX_PD6_2 CH32V003_PINMUX_DEFINE(PD, 6, USART1, 2) +#define USART1_TX_PC0_3 CH32V003_PINMUX_DEFINE(PC, 0, USART1, 3) +#define USART1_RX_PD6_0 CH32V003_PINMUX_DEFINE(PD, 6, USART1, 0) +#define USART1_RX_PD1_1 CH32V003_PINMUX_DEFINE(PD, 1, USART1, 1) +#define USART1_RX_PD5_2 CH32V003_PINMUX_DEFINE(PD, 5, USART1, 2) +#define USART1_RX_PC1_3 CH32V003_PINMUX_DEFINE(PC, 1, USART1, 3) +#define USART1_CTS_PD3_0 CH32V003_PINMUX_DEFINE(PD, 3, USART1, 0) +#define USART1_CTS_PC3_1 CH32V003_PINMUX_DEFINE(PC, 3, USART1, 1) +#define USART1_CTS_PC6_2 CH32V003_PINMUX_DEFINE(PC, 6, USART1, 2) +#define USART1_CTS_PC6_3 CH32V003_PINMUX_DEFINE(PC, 6, USART1, 3) +#define USART1_RTS_PC2_0 CH32V003_PINMUX_DEFINE(PC, 2, USART1, 0) +#define USART1_RTS_PC2_1 CH32V003_PINMUX_DEFINE(PC, 2, USART1, 1) +#define USART1_RTS_PC7_2 CH32V003_PINMUX_DEFINE(PC, 7, USART1, 2) +#define USART1_RTS_PC7_3 CH32V003_PINMUX_DEFINE(PC, 7, USART1, 3) + +#define SPI1_NSS_PC1_0 CH32V003_PINMUX_DEFINE(PC, 1, SPI1, 0) +#define SPI1_NSS_PC0_1 CH32V003_PINMUX_DEFINE(PC, 0, SPI1, 1) +#define SPI1_SCK_PC5_0 CH32V003_PINMUX_DEFINE(PC, 5, SPI1, 0) +#define SPI1_SCK_PC5_1 CH32V003_PINMUX_DEFINE(PC, 5, SPI1, 1) +#define SPI1_MISO_PC7_0 CH32V003_PINMUX_DEFINE(PC, 7, SPI1, 0) +#define SPI1_MISO_PC7_1 CH32V003_PINMUX_DEFINE(PC, 7, SPI1, 1) +#define SPI1_MOSI_PC6_0 CH32V003_PINMUX_DEFINE(PC, 6, SPI1, 0) +#define SPI1_MOSI_PC6_1 CH32V003_PINMUX_DEFINE(PC, 6, SPI1, 1) + +#define I2C1_SCL_PC2_0 CH32V003_PINMUX_DEFINE(PC, 2, I2C1, 0) +#define I2C1_SCL_PD1_1 CH32V003_PINMUX_DEFINE(PD, 1, I2C1, 1) +#define I2C1_SCL_PC5_2 CH32V003_PINMUX_DEFINE(PC, 5, I2C1, 2) +#define I2C1_SDA_PC1_0 CH32V003_PINMUX_DEFINE(PC, 1, I2C1, 0) +#define I2C1_SDA_PD0_1 CH32V003_PINMUX_DEFINE(PD, 0, I2C1, 1) +#define I2C1_SDA_PC6_2 CH32V003_PINMUX_DEFINE(PC, 6, I2C1, 2) + +#endif /* __CH32V003_PINCTRL_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32c2-gpio-sigmap.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32c2-gpio-sigmap.h new file mode 100644 index 00000000..4f6331fe --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32c2-gpio-sigmap.h @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2024 Espressif Systems (Shanghai) Co., Ltd. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_ESP32C2_GPIO_SIGMAP_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_ESP32C2_GPIO_SIGMAP_H_ + +#define ESP_NOSIG ESP_SIG_INVAL + +#define ESP_SPICLK_OUT_MUX ESP_SPICLK_OUT +#define ESP_SPIQ_IN 0 +#define ESP_SPIQ_OUT 0 +#define ESP_SPID_IN 1 +#define ESP_SPID_OUT 1 +#define ESP_SPIHD_IN 2 +#define ESP_SPIHD_OUT 2 +#define ESP_SPIWP_IN 3 +#define ESP_SPIWP_OUT 3 +#define ESP_SPICLK_OUT 4 +#define ESP_SPICS0_OUT 5 +#define ESP_U0RXD_IN 6 +#define ESP_U0TXD_OUT 6 +#define ESP_U0CTS_IN 7 +#define ESP_U0RTS_OUT 7 +#define ESP_U0DSR_IN 8 +#define ESP_U0DTR_OUT 8 +#define ESP_U1RXD_IN 9 +#define ESP_U1TXD_OUT 9 +#define ESP_U1CTS_IN 10 +#define ESP_U1RTS_OUT 10 +#define ESP_U1DSR_IN 11 +#define ESP_U1DTR_OUT 11 +#define ESP_SPIQ_MONITOR 15 +#define ESP_SPID_MONITOR 16 +#define ESP_SPIHD_MONITOR 17 +#define ESP_SPIWP_MONITOR 18 +#define ESP_SPICS1_OUT 19 +#define ESP_CPU_TESTBUS0 20 +#define ESP_CPU_TESTBUS1 21 +#define ESP_CPU_TESTBUS2 22 +#define ESP_CPU_TESTBUS3 23 +#define ESP_CPU_TESTBUS4 24 +#define ESP_CPU_TESTBUS5 25 +#define ESP_CPU_TESTBUS6 26 +#define ESP_CPU_TESTBUS7 27 +#define ESP_CPU_GPIO_IN0 28 +#define ESP_CPU_GPIO_OUT0 28 +#define ESP_CPU_GPIO_IN1 29 +#define ESP_CPU_GPIO_OUT1 29 +#define ESP_CPU_GPIO_IN2 30 +#define ESP_CPU_GPIO_OUT2 30 +#define ESP_CPU_GPIO_IN3 31 +#define ESP_CPU_GPIO_OUT3 31 +#define ESP_CPU_GPIO_IN4 32 +#define ESP_CPU_GPIO_OUT4 32 +#define ESP_CPU_GPIO_IN5 33 +#define ESP_CPU_GPIO_OUT5 33 +#define ESP_CPU_GPIO_IN6 34 +#define ESP_CPU_GPIO_OUT6 34 +#define ESP_CPU_GPIO_IN7 35 +#define ESP_CPU_GPIO_OUT7 35 +#define ESP_EXT_ADC_START 45 +#define ESP_LEDC_LS_SIG_OUT0 45 +#define ESP_LEDC_LS_SIG_OUT1 46 +#define ESP_LEDC_LS_SIG_OUT2 47 +#define ESP_LEDC_LS_SIG_OUT3 48 +#define ESP_LEDC_LS_SIG_OUT4 49 +#define ESP_LEDC_LS_SIG_OUT5 50 +#define ESP_RMT_SIG_IN0 51 +#define ESP_RMT_SIG_OUT0 51 +#define ESP_RMT_SIG_IN1 52 +#define ESP_RMT_SIG_OUT1 52 +#define ESP_I2CEXT0_SCL_IN 53 +#define ESP_I2CEXT0_SCL_OUT 53 +#define ESP_I2CEXT0_SDA_IN 54 +#define ESP_I2CEXT0_SDA_OUT 54 +#define ESP_FSPICLK_IN 63 +#define ESP_FSPICLK_OUT 63 +#define ESP_FSPIQ_IN 64 +#define ESP_FSPIQ_OUT 64 +#define ESP_FSPID_IN 65 +#define ESP_FSPID_OUT 65 +#define ESP_FSPIHD_IN 66 +#define ESP_FSPIHD_OUT 66 +#define ESP_FSPIWP_IN 67 +#define ESP_FSPIWP_OUT 67 +#define ESP_FSPICS0_IN 68 +#define ESP_FSPICS0_OUT 68 +#define ESP_FSPICS1_OUT 69 +#define ESP_FSPICS2_OUT 70 +#define ESP_FSPICS3_OUT 71 +#define ESP_FSPICS4_OUT 72 +#define ESP_FSPICS5_OUT 73 +#define ESP_EXTERN_PRIORITY_I 77 +#define ESP_EXTERN_PRIORITY_O 77 +#define ESP_EXTERN_ACTIVE_I 78 +#define ESP_EXTERN_ACTIVE_O 78 +#define ESP_GPIO_EVENT_MATRIX_IN0 79 +#define ESP_GPIO_TASK_MATRIX_OUT0 79 +#define ESP_GPIO_EVENT_MATRIX_IN1 80 +#define ESP_GPIO_TASK_MATRIX_OUT1 80 +#define ESP_GPIO_EVENT_MATRIX_IN2 81 +#define ESP_GPIO_TASK_MATRIX_OUT2 81 +#define ESP_GPIO_EVENT_MATRIX_IN3 82 +#define ESP_GPIO_TASK_MATRIX_OUT3 82 +#define ESP_BB_DIAG8_OUT 83 +#define ESP_BB_DIAG9_OUT 84 +#define ESP_BB_DIAG10_OUT 85 +#define ESP_BB_DIAG11_OUT 86 +#define ESP_BB_DIAG12_OUT 87 +#define ESP_BB_DIAG13_OUT 88 +#define ESP_ANT_SEL0 89 +#define ESP_ANT_SEL1 90 +#define ESP_ANT_SEL2 91 +#define ESP_ANT_SEL3 92 +#define ESP_ANT_SEL4 93 +#define ESP_ANT_SEL5 94 +#define ESP_ANT_SEL6 95 +#define ESP_ANT_SEL7 96 +#define ESP_SIG_IN_FUNC_97 97 +#define ESP_SIG_IN_FUNC97 97 +#define ESP_SIG_IN_FUNC_98 98 +#define ESP_SIG_IN_FUNC98 98 +#define ESP_SIG_IN_FUNC_99 99 +#define ESP_SIG_IN_FUNC99 99 +#define ESP_SIG_IN_FUNC_100 100 +#define ESP_SIG_IN_FUNC100 100 +#define ESP_BLE_DBG_SYNCERR 101 +#define ESP_BLE_DBG_SYNC_FOUND 102 +#define ESP_BLE_DBG_CH_IDX 103 +#define ESP_BLE_DBG_SYNC_WINDOW 104 +#define ESP_BLE_DBG_DATA_EN 105 +#define ESP_BLE_DBG_DATA 106 +#define ESP_BLE_DBG_PKT_TX_ON 107 +#define ESP_BLE_DBG_PKT_RX_ON 108 +#define ESP_BLE_DBG_TXRU_ON 109 +#define ESP_BLE_DBG_RXRU_ON 110 +#define ESP_BLE_DBG_LELC_ST0 111 +#define ESP_BLE_DBG_LELC_ST1 112 +#define ESP_BLE_DBG_LELC_ST2 113 +#define ESP_BLE_DBG_LELC_ST3 114 +#define ESP_BLE_DBG_CRCOK 115 +#define ESP_BLE_DBG_CLK_GPIO 116 +#define ESP_BLE_DBG_RADIO_START 117 +#define ESP_BLE_DBG_SEQUENCE_ON 118 +#define ESP_BLE_DBG_COEX_BT_ON 119 +#define ESP_BLE_DBG_COEX_WIFI_ON 120 +#define ESP_CLK_OUT_OUT1 123 +#define ESP_CLK_OUT_OUT2 124 +#define ESP_CLK_OUT_OUT3 125 +#define ESP_SIG_GPIO_OUT 128 +#define ESP_GPIO_MAP_DATE 0x2106190 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_ESP32C2_GPIO_SIGMAP_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32c2-pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32c2-pinctrl.h new file mode 100644 index 00000000..3b57a76c --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32c2-pinctrl.h @@ -0,0 +1,796 @@ +/* + * Copyright (c) 2024 Espressif Systems (Shanghai) Co., Ltd. + * + * SPDX-License-Identifier: Apache-2.0 + * + * NOTE: Autogenerated file using esp_genpinctrl.py + */ + +#ifndef INC_DT_BINDS_PINCTRL_ESP32C2_PINCTRL_HAL_H_ +#define INC_DT_BINDS_PINCTRL_ESP32C2_PINCTRL_HAL_H_ + +/* LEDC_CH0 */ +#define LEDC_CH0_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +/* LEDC_CH1 */ +#define LEDC_CH1_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +/* LEDC_CH2 */ +#define LEDC_CH2_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +/* LEDC_CH3 */ +#define LEDC_CH3_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +/* LEDC_CH4 */ +#define LEDC_CH4_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +/* LEDC_CH5 */ +#define LEDC_CH5_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +/* SPIM2_CSEL */ +#define SPIM2_CSEL_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS0_OUT) + +#define SPIM2_CSEL_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS0_OUT) + +#define SPIM2_CSEL_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS0_OUT) + +#define SPIM2_CSEL_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS0_OUT) + +#define SPIM2_CSEL_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS0_OUT) + +#define SPIM2_CSEL_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS0_OUT) + +#define SPIM2_CSEL_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS0_OUT) + +#define SPIM2_CSEL_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS0_OUT) + +#define SPIM2_CSEL_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS0_OUT) + +#define SPIM2_CSEL_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS0_OUT) + +#define SPIM2_CSEL_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS0_OUT) + +#define SPIM2_CSEL_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS0_OUT) + +#define SPIM2_CSEL_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS0_OUT) + +#define SPIM2_CSEL_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS0_OUT) + +/* SPIM2_CSEL1 */ +#define SPIM2_CSEL1_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS1_OUT) + +#define SPIM2_CSEL1_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS1_OUT) + +#define SPIM2_CSEL1_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS1_OUT) + +#define SPIM2_CSEL1_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS1_OUT) + +#define SPIM2_CSEL1_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS1_OUT) + +#define SPIM2_CSEL1_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS1_OUT) + +#define SPIM2_CSEL1_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS1_OUT) + +#define SPIM2_CSEL1_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS1_OUT) + +#define SPIM2_CSEL1_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS1_OUT) + +#define SPIM2_CSEL1_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS1_OUT) + +#define SPIM2_CSEL1_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS1_OUT) + +#define SPIM2_CSEL1_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS1_OUT) + +#define SPIM2_CSEL1_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS1_OUT) + +#define SPIM2_CSEL1_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS1_OUT) + +/* SPIM2_CSEL2 */ +#define SPIM2_CSEL2_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS2_OUT) + +#define SPIM2_CSEL2_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS2_OUT) + +#define SPIM2_CSEL2_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS2_OUT) + +#define SPIM2_CSEL2_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS2_OUT) + +#define SPIM2_CSEL2_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS2_OUT) + +#define SPIM2_CSEL2_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS2_OUT) + +#define SPIM2_CSEL2_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS2_OUT) + +#define SPIM2_CSEL2_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS2_OUT) + +#define SPIM2_CSEL2_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS2_OUT) + +#define SPIM2_CSEL2_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS2_OUT) + +#define SPIM2_CSEL2_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS2_OUT) + +#define SPIM2_CSEL2_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS2_OUT) + +#define SPIM2_CSEL2_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS2_OUT) + +#define SPIM2_CSEL2_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS2_OUT) + +/* SPIM2_CSEL3 */ +#define SPIM2_CSEL3_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS3_OUT) + +#define SPIM2_CSEL3_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS3_OUT) + +#define SPIM2_CSEL3_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS3_OUT) + +#define SPIM2_CSEL3_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS3_OUT) + +#define SPIM2_CSEL3_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS3_OUT) + +#define SPIM2_CSEL3_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS3_OUT) + +#define SPIM2_CSEL3_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS3_OUT) + +#define SPIM2_CSEL3_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS3_OUT) + +#define SPIM2_CSEL3_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS3_OUT) + +#define SPIM2_CSEL3_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS3_OUT) + +#define SPIM2_CSEL3_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS3_OUT) + +#define SPIM2_CSEL3_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS3_OUT) + +#define SPIM2_CSEL3_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS3_OUT) + +#define SPIM2_CSEL3_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS3_OUT) + +/* SPIM2_CSEL4 */ +#define SPIM2_CSEL4_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS4_OUT) + +#define SPIM2_CSEL4_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS4_OUT) + +#define SPIM2_CSEL4_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS4_OUT) + +#define SPIM2_CSEL4_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS4_OUT) + +#define SPIM2_CSEL4_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS4_OUT) + +#define SPIM2_CSEL4_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS4_OUT) + +#define SPIM2_CSEL4_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS4_OUT) + +#define SPIM2_CSEL4_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS4_OUT) + +#define SPIM2_CSEL4_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS4_OUT) + +#define SPIM2_CSEL4_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS4_OUT) + +#define SPIM2_CSEL4_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS4_OUT) + +#define SPIM2_CSEL4_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS4_OUT) + +#define SPIM2_CSEL4_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS4_OUT) + +#define SPIM2_CSEL4_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS4_OUT) + +/* SPIM2_CSEL5 */ +#define SPIM2_CSEL5_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS5_OUT) + +#define SPIM2_CSEL5_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS5_OUT) + +#define SPIM2_CSEL5_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS5_OUT) + +#define SPIM2_CSEL5_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS5_OUT) + +#define SPIM2_CSEL5_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS5_OUT) + +#define SPIM2_CSEL5_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS5_OUT) + +#define SPIM2_CSEL5_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS5_OUT) + +#define SPIM2_CSEL5_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS5_OUT) + +#define SPIM2_CSEL5_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS5_OUT) + +#define SPIM2_CSEL5_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS5_OUT) + +#define SPIM2_CSEL5_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS5_OUT) + +#define SPIM2_CSEL5_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS5_OUT) + +#define SPIM2_CSEL5_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS5_OUT) + +#define SPIM2_CSEL5_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS5_OUT) + +/* SPIM2_MISO */ +#define SPIM2_MISO_GPIO0 ESP32_PINMUX(0, ESP_FSPIQ_IN, ESP_NOSIG) + +#define SPIM2_MISO_GPIO1 ESP32_PINMUX(1, ESP_FSPIQ_IN, ESP_NOSIG) + +#define SPIM2_MISO_GPIO2 ESP32_PINMUX(2, ESP_FSPIQ_IN, ESP_NOSIG) + +#define SPIM2_MISO_GPIO3 ESP32_PINMUX(3, ESP_FSPIQ_IN, ESP_NOSIG) + +#define SPIM2_MISO_GPIO4 ESP32_PINMUX(4, ESP_FSPIQ_IN, ESP_NOSIG) + +#define SPIM2_MISO_GPIO5 ESP32_PINMUX(5, ESP_FSPIQ_IN, ESP_NOSIG) + +#define SPIM2_MISO_GPIO6 ESP32_PINMUX(6, ESP_FSPIQ_IN, ESP_NOSIG) + +#define SPIM2_MISO_GPIO7 ESP32_PINMUX(7, ESP_FSPIQ_IN, ESP_NOSIG) + +#define SPIM2_MISO_GPIO8 ESP32_PINMUX(8, ESP_FSPIQ_IN, ESP_NOSIG) + +#define SPIM2_MISO_GPIO9 ESP32_PINMUX(9, ESP_FSPIQ_IN, ESP_NOSIG) + +#define SPIM2_MISO_GPIO10 ESP32_PINMUX(10, ESP_FSPIQ_IN, ESP_NOSIG) + +#define SPIM2_MISO_GPIO18 ESP32_PINMUX(18, ESP_FSPIQ_IN, ESP_NOSIG) + +#define SPIM2_MISO_GPIO19 ESP32_PINMUX(19, ESP_FSPIQ_IN, ESP_NOSIG) + +#define SPIM2_MISO_GPIO20 ESP32_PINMUX(20, ESP_FSPIQ_IN, ESP_NOSIG) + +/* SPIM2_MOSI */ +#define SPIM2_MOSI_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPID_OUT) + +#define SPIM2_MOSI_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPID_OUT) + +#define SPIM2_MOSI_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPID_OUT) + +#define SPIM2_MOSI_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPID_OUT) + +#define SPIM2_MOSI_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPID_OUT) + +#define SPIM2_MOSI_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPID_OUT) + +#define SPIM2_MOSI_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPID_OUT) + +#define SPIM2_MOSI_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPID_OUT) + +#define SPIM2_MOSI_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPID_OUT) + +#define SPIM2_MOSI_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPID_OUT) + +#define SPIM2_MOSI_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPID_OUT) + +#define SPIM2_MOSI_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPID_OUT) + +#define SPIM2_MOSI_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPID_OUT) + +#define SPIM2_MOSI_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPID_OUT) + +/* SPIM2_SCLK */ +#define SPIM2_SCLK_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICLK_OUT) + +#define SPIM2_SCLK_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICLK_OUT) + +#define SPIM2_SCLK_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICLK_OUT) + +#define SPIM2_SCLK_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICLK_OUT) + +#define SPIM2_SCLK_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICLK_OUT) + +#define SPIM2_SCLK_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICLK_OUT) + +#define SPIM2_SCLK_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICLK_OUT) + +#define SPIM2_SCLK_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICLK_OUT) + +#define SPIM2_SCLK_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICLK_OUT) + +#define SPIM2_SCLK_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICLK_OUT) + +#define SPIM2_SCLK_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICLK_OUT) + +#define SPIM2_SCLK_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICLK_OUT) + +#define SPIM2_SCLK_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICLK_OUT) + +#define SPIM2_SCLK_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICLK_OUT) + +/* UART0_CTS */ +#define UART0_CTS_GPIO0 ESP32_PINMUX(0, ESP_U0CTS_IN, ESP_NOSIG) + +#define UART0_CTS_GPIO1 ESP32_PINMUX(1, ESP_U0CTS_IN, ESP_NOSIG) + +#define UART0_CTS_GPIO2 ESP32_PINMUX(2, ESP_U0CTS_IN, ESP_NOSIG) + +#define UART0_CTS_GPIO3 ESP32_PINMUX(3, ESP_U0CTS_IN, ESP_NOSIG) + +#define UART0_CTS_GPIO4 ESP32_PINMUX(4, ESP_U0CTS_IN, ESP_NOSIG) + +#define UART0_CTS_GPIO5 ESP32_PINMUX(5, ESP_U0CTS_IN, ESP_NOSIG) + +#define UART0_CTS_GPIO6 ESP32_PINMUX(6, ESP_U0CTS_IN, ESP_NOSIG) + +#define UART0_CTS_GPIO7 ESP32_PINMUX(7, ESP_U0CTS_IN, ESP_NOSIG) + +#define UART0_CTS_GPIO8 ESP32_PINMUX(8, ESP_U0CTS_IN, ESP_NOSIG) + +#define UART0_CTS_GPIO9 ESP32_PINMUX(9, ESP_U0CTS_IN, ESP_NOSIG) + +#define UART0_CTS_GPIO10 ESP32_PINMUX(10, ESP_U0CTS_IN, ESP_NOSIG) + +#define UART0_CTS_GPIO18 ESP32_PINMUX(18, ESP_U0CTS_IN, ESP_NOSIG) + +#define UART0_CTS_GPIO19 ESP32_PINMUX(19, ESP_U0CTS_IN, ESP_NOSIG) + +#define UART0_CTS_GPIO20 ESP32_PINMUX(20, ESP_U0CTS_IN, ESP_NOSIG) + +/* UART0_DSR */ +#define UART0_DSR_GPIO0 ESP32_PINMUX(0, ESP_U0DSR_IN, ESP_NOSIG) + +#define UART0_DSR_GPIO1 ESP32_PINMUX(1, ESP_U0DSR_IN, ESP_NOSIG) + +#define UART0_DSR_GPIO2 ESP32_PINMUX(2, ESP_U0DSR_IN, ESP_NOSIG) + +#define UART0_DSR_GPIO3 ESP32_PINMUX(3, ESP_U0DSR_IN, ESP_NOSIG) + +#define UART0_DSR_GPIO4 ESP32_PINMUX(4, ESP_U0DSR_IN, ESP_NOSIG) + +#define UART0_DSR_GPIO5 ESP32_PINMUX(5, ESP_U0DSR_IN, ESP_NOSIG) + +#define UART0_DSR_GPIO6 ESP32_PINMUX(6, ESP_U0DSR_IN, ESP_NOSIG) + +#define UART0_DSR_GPIO7 ESP32_PINMUX(7, ESP_U0DSR_IN, ESP_NOSIG) + +#define UART0_DSR_GPIO8 ESP32_PINMUX(8, ESP_U0DSR_IN, ESP_NOSIG) + +#define UART0_DSR_GPIO9 ESP32_PINMUX(9, ESP_U0DSR_IN, ESP_NOSIG) + +#define UART0_DSR_GPIO10 ESP32_PINMUX(10, ESP_U0DSR_IN, ESP_NOSIG) + +#define UART0_DSR_GPIO18 ESP32_PINMUX(18, ESP_U0DSR_IN, ESP_NOSIG) + +#define UART0_DSR_GPIO19 ESP32_PINMUX(19, ESP_U0DSR_IN, ESP_NOSIG) + +#define UART0_DSR_GPIO20 ESP32_PINMUX(20, ESP_U0DSR_IN, ESP_NOSIG) + +/* UART0_DTR */ +#define UART0_DTR_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U0DTR_OUT) + +#define UART0_DTR_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U0DTR_OUT) + +#define UART0_DTR_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U0DTR_OUT) + +#define UART0_DTR_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U0DTR_OUT) + +#define UART0_DTR_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U0DTR_OUT) + +#define UART0_DTR_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U0DTR_OUT) + +#define UART0_DTR_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U0DTR_OUT) + +#define UART0_DTR_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U0DTR_OUT) + +#define UART0_DTR_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U0DTR_OUT) + +#define UART0_DTR_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U0DTR_OUT) + +#define UART0_DTR_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U0DTR_OUT) + +#define UART0_DTR_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U0DTR_OUT) + +#define UART0_DTR_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U0DTR_OUT) + +#define UART0_DTR_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U0DTR_OUT) + +/* UART0_RTS */ +#define UART0_RTS_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U0RTS_OUT) + +#define UART0_RTS_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U0RTS_OUT) + +#define UART0_RTS_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U0RTS_OUT) + +#define UART0_RTS_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U0RTS_OUT) + +#define UART0_RTS_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U0RTS_OUT) + +#define UART0_RTS_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U0RTS_OUT) + +#define UART0_RTS_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U0RTS_OUT) + +#define UART0_RTS_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U0RTS_OUT) + +#define UART0_RTS_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U0RTS_OUT) + +#define UART0_RTS_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U0RTS_OUT) + +#define UART0_RTS_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U0RTS_OUT) + +#define UART0_RTS_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U0RTS_OUT) + +#define UART0_RTS_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U0RTS_OUT) + +#define UART0_RTS_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U0RTS_OUT) + +/* UART0_RX */ +#define UART0_RX_GPIO0 ESP32_PINMUX(0, ESP_U0RXD_IN, ESP_NOSIG) + +#define UART0_RX_GPIO1 ESP32_PINMUX(1, ESP_U0RXD_IN, ESP_NOSIG) + +#define UART0_RX_GPIO2 ESP32_PINMUX(2, ESP_U0RXD_IN, ESP_NOSIG) + +#define UART0_RX_GPIO3 ESP32_PINMUX(3, ESP_U0RXD_IN, ESP_NOSIG) + +#define UART0_RX_GPIO4 ESP32_PINMUX(4, ESP_U0RXD_IN, ESP_NOSIG) + +#define UART0_RX_GPIO5 ESP32_PINMUX(5, ESP_U0RXD_IN, ESP_NOSIG) + +#define UART0_RX_GPIO6 ESP32_PINMUX(6, ESP_U0RXD_IN, ESP_NOSIG) + +#define UART0_RX_GPIO7 ESP32_PINMUX(7, ESP_U0RXD_IN, ESP_NOSIG) + +#define UART0_RX_GPIO8 ESP32_PINMUX(8, ESP_U0RXD_IN, ESP_NOSIG) + +#define UART0_RX_GPIO9 ESP32_PINMUX(9, ESP_U0RXD_IN, ESP_NOSIG) + +#define UART0_RX_GPIO10 ESP32_PINMUX(10, ESP_U0RXD_IN, ESP_NOSIG) + +#define UART0_RX_GPIO18 ESP32_PINMUX(18, ESP_U0RXD_IN, ESP_NOSIG) + +#define UART0_RX_GPIO19 ESP32_PINMUX(19, ESP_U0RXD_IN, ESP_NOSIG) + +#define UART0_RX_GPIO20 ESP32_PINMUX(20, ESP_U0RXD_IN, ESP_NOSIG) + +/* UART0_TX */ +#define UART0_TX_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U0TXD_OUT) + +#define UART0_TX_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U0TXD_OUT) + +#define UART0_TX_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U0TXD_OUT) + +#define UART0_TX_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U0TXD_OUT) + +#define UART0_TX_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U0TXD_OUT) + +#define UART0_TX_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U0TXD_OUT) + +#define UART0_TX_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U0TXD_OUT) + +#define UART0_TX_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U0TXD_OUT) + +#define UART0_TX_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U0TXD_OUT) + +#define UART0_TX_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U0TXD_OUT) + +#define UART0_TX_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U0TXD_OUT) + +#define UART0_TX_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U0TXD_OUT) + +#define UART0_TX_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U0TXD_OUT) + +#define UART0_TX_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U0TXD_OUT) + +/* UART1_CTS */ +#define UART1_CTS_GPIO0 ESP32_PINMUX(0, ESP_U1CTS_IN, ESP_NOSIG) + +#define UART1_CTS_GPIO1 ESP32_PINMUX(1, ESP_U1CTS_IN, ESP_NOSIG) + +#define UART1_CTS_GPIO2 ESP32_PINMUX(2, ESP_U1CTS_IN, ESP_NOSIG) + +#define UART1_CTS_GPIO3 ESP32_PINMUX(3, ESP_U1CTS_IN, ESP_NOSIG) + +#define UART1_CTS_GPIO4 ESP32_PINMUX(4, ESP_U1CTS_IN, ESP_NOSIG) + +#define UART1_CTS_GPIO5 ESP32_PINMUX(5, ESP_U1CTS_IN, ESP_NOSIG) + +#define UART1_CTS_GPIO6 ESP32_PINMUX(6, ESP_U1CTS_IN, ESP_NOSIG) + +#define UART1_CTS_GPIO7 ESP32_PINMUX(7, ESP_U1CTS_IN, ESP_NOSIG) + +#define UART1_CTS_GPIO8 ESP32_PINMUX(8, ESP_U1CTS_IN, ESP_NOSIG) + +#define UART1_CTS_GPIO9 ESP32_PINMUX(9, ESP_U1CTS_IN, ESP_NOSIG) + +#define UART1_CTS_GPIO10 ESP32_PINMUX(10, ESP_U1CTS_IN, ESP_NOSIG) + +#define UART1_CTS_GPIO18 ESP32_PINMUX(18, ESP_U1CTS_IN, ESP_NOSIG) + +#define UART1_CTS_GPIO19 ESP32_PINMUX(19, ESP_U1CTS_IN, ESP_NOSIG) + +#define UART1_CTS_GPIO20 ESP32_PINMUX(20, ESP_U1CTS_IN, ESP_NOSIG) + +/* UART1_DSR */ +#define UART1_DSR_GPIO0 ESP32_PINMUX(0, ESP_U1DSR_IN, ESP_NOSIG) + +#define UART1_DSR_GPIO1 ESP32_PINMUX(1, ESP_U1DSR_IN, ESP_NOSIG) + +#define UART1_DSR_GPIO2 ESP32_PINMUX(2, ESP_U1DSR_IN, ESP_NOSIG) + +#define UART1_DSR_GPIO3 ESP32_PINMUX(3, ESP_U1DSR_IN, ESP_NOSIG) + +#define UART1_DSR_GPIO4 ESP32_PINMUX(4, ESP_U1DSR_IN, ESP_NOSIG) + +#define UART1_DSR_GPIO5 ESP32_PINMUX(5, ESP_U1DSR_IN, ESP_NOSIG) + +#define UART1_DSR_GPIO6 ESP32_PINMUX(6, ESP_U1DSR_IN, ESP_NOSIG) + +#define UART1_DSR_GPIO7 ESP32_PINMUX(7, ESP_U1DSR_IN, ESP_NOSIG) + +#define UART1_DSR_GPIO8 ESP32_PINMUX(8, ESP_U1DSR_IN, ESP_NOSIG) + +#define UART1_DSR_GPIO9 ESP32_PINMUX(9, ESP_U1DSR_IN, ESP_NOSIG) + +#define UART1_DSR_GPIO10 ESP32_PINMUX(10, ESP_U1DSR_IN, ESP_NOSIG) + +#define UART1_DSR_GPIO18 ESP32_PINMUX(18, ESP_U1DSR_IN, ESP_NOSIG) + +#define UART1_DSR_GPIO19 ESP32_PINMUX(19, ESP_U1DSR_IN, ESP_NOSIG) + +#define UART1_DSR_GPIO20 ESP32_PINMUX(20, ESP_U1DSR_IN, ESP_NOSIG) + +/* UART1_DTR */ +#define UART1_DTR_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U1DTR_OUT) + +#define UART1_DTR_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U1DTR_OUT) + +#define UART1_DTR_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U1DTR_OUT) + +#define UART1_DTR_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U1DTR_OUT) + +#define UART1_DTR_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U1DTR_OUT) + +#define UART1_DTR_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U1DTR_OUT) + +#define UART1_DTR_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U1DTR_OUT) + +#define UART1_DTR_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U1DTR_OUT) + +#define UART1_DTR_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U1DTR_OUT) + +#define UART1_DTR_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U1DTR_OUT) + +#define UART1_DTR_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U1DTR_OUT) + +#define UART1_DTR_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U1DTR_OUT) + +#define UART1_DTR_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U1DTR_OUT) + +#define UART1_DTR_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U1DTR_OUT) + +/* UART1_RTS */ +#define UART1_RTS_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U1RTS_OUT) + +#define UART1_RTS_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U1RTS_OUT) + +#define UART1_RTS_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U1RTS_OUT) + +#define UART1_RTS_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U1RTS_OUT) + +#define UART1_RTS_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U1RTS_OUT) + +#define UART1_RTS_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U1RTS_OUT) + +#define UART1_RTS_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U1RTS_OUT) + +#define UART1_RTS_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U1RTS_OUT) + +#define UART1_RTS_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U1RTS_OUT) + +#define UART1_RTS_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U1RTS_OUT) + +#define UART1_RTS_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U1RTS_OUT) + +#define UART1_RTS_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U1RTS_OUT) + +#define UART1_RTS_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U1RTS_OUT) + +#define UART1_RTS_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U1RTS_OUT) + +/* UART1_RX */ +#define UART1_RX_GPIO0 ESP32_PINMUX(0, ESP_U1RXD_IN, ESP_NOSIG) + +#define UART1_RX_GPIO1 ESP32_PINMUX(1, ESP_U1RXD_IN, ESP_NOSIG) + +#define UART1_RX_GPIO2 ESP32_PINMUX(2, ESP_U1RXD_IN, ESP_NOSIG) + +#define UART1_RX_GPIO3 ESP32_PINMUX(3, ESP_U1RXD_IN, ESP_NOSIG) + +#define UART1_RX_GPIO4 ESP32_PINMUX(4, ESP_U1RXD_IN, ESP_NOSIG) + +#define UART1_RX_GPIO5 ESP32_PINMUX(5, ESP_U1RXD_IN, ESP_NOSIG) + +#define UART1_RX_GPIO6 ESP32_PINMUX(6, ESP_U1RXD_IN, ESP_NOSIG) + +#define UART1_RX_GPIO7 ESP32_PINMUX(7, ESP_U1RXD_IN, ESP_NOSIG) + +#define UART1_RX_GPIO8 ESP32_PINMUX(8, ESP_U1RXD_IN, ESP_NOSIG) + +#define UART1_RX_GPIO9 ESP32_PINMUX(9, ESP_U1RXD_IN, ESP_NOSIG) + +#define UART1_RX_GPIO10 ESP32_PINMUX(10, ESP_U1RXD_IN, ESP_NOSIG) + +#define UART1_RX_GPIO18 ESP32_PINMUX(18, ESP_U1RXD_IN, ESP_NOSIG) + +#define UART1_RX_GPIO19 ESP32_PINMUX(19, ESP_U1RXD_IN, ESP_NOSIG) + +#define UART1_RX_GPIO20 ESP32_PINMUX(20, ESP_U1RXD_IN, ESP_NOSIG) + +/* UART1_TX */ +#define UART1_TX_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U1TXD_OUT) + +#define UART1_TX_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U1TXD_OUT) + +#define UART1_TX_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U1TXD_OUT) + +#define UART1_TX_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U1TXD_OUT) + +#define UART1_TX_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U1TXD_OUT) + +#define UART1_TX_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U1TXD_OUT) + +#define UART1_TX_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U1TXD_OUT) + +#define UART1_TX_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U1TXD_OUT) + +#define UART1_TX_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U1TXD_OUT) + +#define UART1_TX_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U1TXD_OUT) + +#define UART1_TX_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U1TXD_OUT) + +#define UART1_TX_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U1TXD_OUT) + +#define UART1_TX_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U1TXD_OUT) + +#define UART1_TX_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U1TXD_OUT) + + +#endif /* INC_DT_BINDS_PINCTRL_ESP32C2_PINCTRL_HAL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32c3-pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32c3-pinctrl.h index 2eda20f9..73a2a04c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32c3-pinctrl.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32c3-pinctrl.h @@ -10,2215 +10,1803 @@ #define INC_DT_BINDS_PINCTRL_ESP32C3_PINCTRL_HAL_H_ /* I2C0_SCL */ -#define I2C0_SCL_GPIO0 \ - ESP32_PINMUX(0, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO0 ESP32_PINMUX(0, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO1 \ - ESP32_PINMUX(1, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO1 ESP32_PINMUX(1, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO2 \ - ESP32_PINMUX(2, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO2 ESP32_PINMUX(2, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO3 \ - ESP32_PINMUX(3, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO3 ESP32_PINMUX(3, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO4 \ - ESP32_PINMUX(4, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO4 ESP32_PINMUX(4, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO5 \ - ESP32_PINMUX(5, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO5 ESP32_PINMUX(5, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO6 \ - ESP32_PINMUX(6, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO6 ESP32_PINMUX(6, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO7 \ - ESP32_PINMUX(7, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO7 ESP32_PINMUX(7, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO8 \ - ESP32_PINMUX(8, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO8 ESP32_PINMUX(8, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO9 \ - ESP32_PINMUX(9, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO9 ESP32_PINMUX(9, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO10 \ - ESP32_PINMUX(10, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO10 ESP32_PINMUX(10, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO11 \ - ESP32_PINMUX(11, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO11 ESP32_PINMUX(11, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO12 \ - ESP32_PINMUX(12, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO12 ESP32_PINMUX(12, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO13 \ - ESP32_PINMUX(13, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO13 ESP32_PINMUX(13, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO14 \ - ESP32_PINMUX(14, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO14 ESP32_PINMUX(14, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO15 \ - ESP32_PINMUX(15, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO15 ESP32_PINMUX(15, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO16 \ - ESP32_PINMUX(16, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO16 ESP32_PINMUX(16, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO17 \ - ESP32_PINMUX(17, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO17 ESP32_PINMUX(17, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO18 \ - ESP32_PINMUX(18, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO18 ESP32_PINMUX(18, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO19 \ - ESP32_PINMUX(19, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO19 ESP32_PINMUX(19, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO20 \ - ESP32_PINMUX(20, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO20 ESP32_PINMUX(20, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO21 \ - ESP32_PINMUX(21, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO21 ESP32_PINMUX(21, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) /* I2C0_SDA */ -#define I2C0_SDA_GPIO0 \ - ESP32_PINMUX(0, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO0 ESP32_PINMUX(0, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO1 \ - ESP32_PINMUX(1, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO1 ESP32_PINMUX(1, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO2 \ - ESP32_PINMUX(2, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO2 ESP32_PINMUX(2, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO3 \ - ESP32_PINMUX(3, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO3 ESP32_PINMUX(3, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO4 \ - ESP32_PINMUX(4, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO4 ESP32_PINMUX(4, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO5 \ - ESP32_PINMUX(5, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO5 ESP32_PINMUX(5, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO6 \ - ESP32_PINMUX(6, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO6 ESP32_PINMUX(6, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO7 \ - ESP32_PINMUX(7, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO7 ESP32_PINMUX(7, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO8 \ - ESP32_PINMUX(8, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO8 ESP32_PINMUX(8, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO9 \ - ESP32_PINMUX(9, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO9 ESP32_PINMUX(9, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO10 \ - ESP32_PINMUX(10, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO10 ESP32_PINMUX(10, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO11 \ - ESP32_PINMUX(11, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO11 ESP32_PINMUX(11, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO12 \ - ESP32_PINMUX(12, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO12 ESP32_PINMUX(12, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO13 \ - ESP32_PINMUX(13, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO13 ESP32_PINMUX(13, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO14 \ - ESP32_PINMUX(14, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO14 ESP32_PINMUX(14, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO15 \ - ESP32_PINMUX(15, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO15 ESP32_PINMUX(15, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO16 \ - ESP32_PINMUX(16, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO16 ESP32_PINMUX(16, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO17 \ - ESP32_PINMUX(17, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO17 ESP32_PINMUX(17, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO18 \ - ESP32_PINMUX(18, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO18 ESP32_PINMUX(18, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO19 \ - ESP32_PINMUX(19, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO19 ESP32_PINMUX(19, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO20 \ - ESP32_PINMUX(20, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO20 ESP32_PINMUX(20, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO21 \ - ESP32_PINMUX(21, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO21 ESP32_PINMUX(21, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) + +/* I2S_I_BCK */ +#define I2S_I_BCK_GPIO0 ESP32_PINMUX(0, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO1 ESP32_PINMUX(1, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO2 ESP32_PINMUX(2, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO3 ESP32_PINMUX(3, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO4 ESP32_PINMUX(4, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO5 ESP32_PINMUX(5, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO6 ESP32_PINMUX(6, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO7 ESP32_PINMUX(7, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO8 ESP32_PINMUX(8, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO9 ESP32_PINMUX(9, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO10 ESP32_PINMUX(10, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO11 ESP32_PINMUX(11, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO12 ESP32_PINMUX(12, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO13 ESP32_PINMUX(13, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO14 ESP32_PINMUX(14, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO15 ESP32_PINMUX(15, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO16 ESP32_PINMUX(16, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO17 ESP32_PINMUX(17, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO18 ESP32_PINMUX(18, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO19 ESP32_PINMUX(19, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO20 ESP32_PINMUX(20, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +#define I2S_I_BCK_GPIO21 ESP32_PINMUX(21, ESP_I2SI_BCK_IN, ESP_I2SI_BCK_OUT) + +/* I2S_I_SD */ +#define I2S_I_SD_GPIO0 ESP32_PINMUX(0, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO1 ESP32_PINMUX(1, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO2 ESP32_PINMUX(2, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO3 ESP32_PINMUX(3, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO4 ESP32_PINMUX(4, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO5 ESP32_PINMUX(5, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO6 ESP32_PINMUX(6, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO7 ESP32_PINMUX(7, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO8 ESP32_PINMUX(8, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO9 ESP32_PINMUX(9, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO10 ESP32_PINMUX(10, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO11 ESP32_PINMUX(11, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO12 ESP32_PINMUX(12, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO13 ESP32_PINMUX(13, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO14 ESP32_PINMUX(14, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO15 ESP32_PINMUX(15, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO16 ESP32_PINMUX(16, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO17 ESP32_PINMUX(17, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO18 ESP32_PINMUX(18, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO19 ESP32_PINMUX(19, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO20 ESP32_PINMUX(20, ESP_I2SI_SD_IN, ESP_NOSIG) + +#define I2S_I_SD_GPIO21 ESP32_PINMUX(21, ESP_I2SI_SD_IN, ESP_NOSIG) + +/* I2S_I_WS */ +#define I2S_I_WS_GPIO0 ESP32_PINMUX(0, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO1 ESP32_PINMUX(1, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO2 ESP32_PINMUX(2, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO3 ESP32_PINMUX(3, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO4 ESP32_PINMUX(4, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO5 ESP32_PINMUX(5, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO6 ESP32_PINMUX(6, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO7 ESP32_PINMUX(7, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO8 ESP32_PINMUX(8, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO9 ESP32_PINMUX(9, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO10 ESP32_PINMUX(10, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO11 ESP32_PINMUX(11, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO12 ESP32_PINMUX(12, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO13 ESP32_PINMUX(13, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO14 ESP32_PINMUX(14, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO15 ESP32_PINMUX(15, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO16 ESP32_PINMUX(16, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO17 ESP32_PINMUX(17, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO18 ESP32_PINMUX(18, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO19 ESP32_PINMUX(19, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO20 ESP32_PINMUX(20, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +#define I2S_I_WS_GPIO21 ESP32_PINMUX(21, ESP_I2SI_WS_IN, ESP_I2SI_WS_OUT) + +/* I2S_MCLK */ +#define I2S_MCLK_GPIO0 ESP32_PINMUX(0, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO1 ESP32_PINMUX(1, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO2 ESP32_PINMUX(2, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO3 ESP32_PINMUX(3, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO4 ESP32_PINMUX(4, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO5 ESP32_PINMUX(5, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO6 ESP32_PINMUX(6, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO7 ESP32_PINMUX(7, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO8 ESP32_PINMUX(8, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO9 ESP32_PINMUX(9, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO10 ESP32_PINMUX(10, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO11 ESP32_PINMUX(11, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO12 ESP32_PINMUX(12, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO13 ESP32_PINMUX(13, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO14 ESP32_PINMUX(14, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO15 ESP32_PINMUX(15, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO16 ESP32_PINMUX(16, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO17 ESP32_PINMUX(17, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO18 ESP32_PINMUX(18, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO19 ESP32_PINMUX(19, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO20 ESP32_PINMUX(20, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +#define I2S_MCLK_GPIO21 ESP32_PINMUX(21, ESP_I2S_MCLK_IN, ESP_I2S_MCLK_OUT) + +/* I2S_O_BCK */ +#define I2S_O_BCK_GPIO0 ESP32_PINMUX(0, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO1 ESP32_PINMUX(1, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO2 ESP32_PINMUX(2, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO3 ESP32_PINMUX(3, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO4 ESP32_PINMUX(4, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO5 ESP32_PINMUX(5, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO6 ESP32_PINMUX(6, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO7 ESP32_PINMUX(7, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO8 ESP32_PINMUX(8, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO9 ESP32_PINMUX(9, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO10 ESP32_PINMUX(10, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO11 ESP32_PINMUX(11, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO12 ESP32_PINMUX(12, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO13 ESP32_PINMUX(13, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO14 ESP32_PINMUX(14, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO15 ESP32_PINMUX(15, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO16 ESP32_PINMUX(16, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO17 ESP32_PINMUX(17, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO18 ESP32_PINMUX(18, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO19 ESP32_PINMUX(19, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO20 ESP32_PINMUX(20, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +#define I2S_O_BCK_GPIO21 ESP32_PINMUX(21, ESP_I2SO_BCK_IN, ESP_I2SO_BCK_OUT) + +/* I2S_O_SD */ +#define I2S_O_SD_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_I2SO_SD_OUT) + +#define I2S_O_SD_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_I2SO_SD_OUT) + +/* I2S_O_WS */ +#define I2S_O_WS_GPIO0 ESP32_PINMUX(0, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO1 ESP32_PINMUX(1, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO2 ESP32_PINMUX(2, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO3 ESP32_PINMUX(3, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO4 ESP32_PINMUX(4, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO5 ESP32_PINMUX(5, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO6 ESP32_PINMUX(6, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO7 ESP32_PINMUX(7, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO8 ESP32_PINMUX(8, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO9 ESP32_PINMUX(9, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO10 ESP32_PINMUX(10, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO11 ESP32_PINMUX(11, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO12 ESP32_PINMUX(12, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO13 ESP32_PINMUX(13, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO14 ESP32_PINMUX(14, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO15 ESP32_PINMUX(15, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO16 ESP32_PINMUX(16, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO17 ESP32_PINMUX(17, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO18 ESP32_PINMUX(18, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO19 ESP32_PINMUX(19, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO20 ESP32_PINMUX(20, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) + +#define I2S_O_WS_GPIO21 ESP32_PINMUX(21, ESP_I2SO_WS_IN, ESP_I2SO_WS_OUT) /* LEDC_CH0 */ -#define LEDC_CH0_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) -#define LEDC_CH0_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) /* LEDC_CH1 */ -#define LEDC_CH1_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) -#define LEDC_CH1_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define LEDC_CH1_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) /* LEDC_CH2 */ -#define LEDC_CH2_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) -#define LEDC_CH2_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define LEDC_CH2_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) /* LEDC_CH3 */ -#define LEDC_CH3_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) -#define LEDC_CH3_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define LEDC_CH3_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) /* LEDC_CH4 */ -#define LEDC_CH4_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) -#define LEDC_CH4_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define LEDC_CH4_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) /* LEDC_CH5 */ -#define LEDC_CH5_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) -#define LEDC_CH5_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define LEDC_CH5_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) /* SPIM2_CSEL */ -#define SPIM2_CSEL_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS0_OUT) /* SPIM2_CSEL1 */ -#define SPIM2_CSEL1_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS1_OUT) /* SPIM2_CSEL2 */ -#define SPIM2_CSEL2_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS2_OUT) /* SPIM2_CSEL3 */ -#define SPIM2_CSEL3_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS3_OUT) /* SPIM2_CSEL4 */ -#define SPIM2_CSEL4_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS4_OUT) /* SPIM2_CSEL5 */ -#define SPIM2_CSEL5_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS5_OUT) /* SPIM2_MISO */ -#define SPIM2_MISO_GPIO0 \ - ESP32_PINMUX(0, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO0 ESP32_PINMUX(0, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO1 \ - ESP32_PINMUX(1, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO1 ESP32_PINMUX(1, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO2 \ - ESP32_PINMUX(2, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO2 ESP32_PINMUX(2, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO3 \ - ESP32_PINMUX(3, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO3 ESP32_PINMUX(3, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO4 \ - ESP32_PINMUX(4, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO4 ESP32_PINMUX(4, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO5 \ - ESP32_PINMUX(5, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO5 ESP32_PINMUX(5, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO6 \ - ESP32_PINMUX(6, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO6 ESP32_PINMUX(6, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO7 \ - ESP32_PINMUX(7, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO7 ESP32_PINMUX(7, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO8 \ - ESP32_PINMUX(8, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO8 ESP32_PINMUX(8, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO9 \ - ESP32_PINMUX(9, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO9 ESP32_PINMUX(9, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO10 \ - ESP32_PINMUX(10, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO10 ESP32_PINMUX(10, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO11 \ - ESP32_PINMUX(11, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO11 ESP32_PINMUX(11, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO12 \ - ESP32_PINMUX(12, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO12 ESP32_PINMUX(12, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO13 \ - ESP32_PINMUX(13, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO13 ESP32_PINMUX(13, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO14 \ - ESP32_PINMUX(14, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO14 ESP32_PINMUX(14, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO15 \ - ESP32_PINMUX(15, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO15 ESP32_PINMUX(15, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO16 \ - ESP32_PINMUX(16, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO16 ESP32_PINMUX(16, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO17 \ - ESP32_PINMUX(17, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO17 ESP32_PINMUX(17, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO18 \ - ESP32_PINMUX(18, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO18 ESP32_PINMUX(18, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO19 \ - ESP32_PINMUX(19, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO19 ESP32_PINMUX(19, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO20 \ - ESP32_PINMUX(20, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO20 ESP32_PINMUX(20, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO21 \ - ESP32_PINMUX(21, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO21 ESP32_PINMUX(21, ESP_FSPIQ_IN, ESP_NOSIG) /* SPIM2_MOSI */ -#define SPIM2_MOSI_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPID_OUT) /* SPIM2_SCLK */ -#define SPIM2_SCLK_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICLK_OUT) /* TWAI_BUS_OFF */ -#define TWAI_BUS_OFF_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) /* TWAI_CLKOUT */ -#define TWAI_CLKOUT_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_TWAI_CLKOUT) /* TWAI_RX */ -#define TWAI_RX_GPIO0 \ - ESP32_PINMUX(0, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO0 ESP32_PINMUX(0, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO1 \ - ESP32_PINMUX(1, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO1 ESP32_PINMUX(1, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO2 \ - ESP32_PINMUX(2, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO2 ESP32_PINMUX(2, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO3 \ - ESP32_PINMUX(3, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO3 ESP32_PINMUX(3, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO4 \ - ESP32_PINMUX(4, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO4 ESP32_PINMUX(4, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO5 \ - ESP32_PINMUX(5, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO5 ESP32_PINMUX(5, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO6 \ - ESP32_PINMUX(6, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO6 ESP32_PINMUX(6, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO7 \ - ESP32_PINMUX(7, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO7 ESP32_PINMUX(7, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO8 \ - ESP32_PINMUX(8, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO8 ESP32_PINMUX(8, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO9 \ - ESP32_PINMUX(9, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO9 ESP32_PINMUX(9, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO10 \ - ESP32_PINMUX(10, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO10 ESP32_PINMUX(10, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO11 \ - ESP32_PINMUX(11, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO11 ESP32_PINMUX(11, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO12 \ - ESP32_PINMUX(12, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO12 ESP32_PINMUX(12, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO13 \ - ESP32_PINMUX(13, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO13 ESP32_PINMUX(13, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO14 \ - ESP32_PINMUX(14, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO14 ESP32_PINMUX(14, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO15 \ - ESP32_PINMUX(15, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO15 ESP32_PINMUX(15, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO16 \ - ESP32_PINMUX(16, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO16 ESP32_PINMUX(16, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO17 \ - ESP32_PINMUX(17, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO17 ESP32_PINMUX(17, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO18 \ - ESP32_PINMUX(18, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO18 ESP32_PINMUX(18, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO19 \ - ESP32_PINMUX(19, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO19 ESP32_PINMUX(19, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO20 \ - ESP32_PINMUX(20, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO20 ESP32_PINMUX(20, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO21 \ - ESP32_PINMUX(21, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO21 ESP32_PINMUX(21, ESP_TWAI_RX, ESP_NOSIG) /* TWAI_TX */ -#define TWAI_TX_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_TWAI_TX) /* UART0_CTS */ -#define UART0_CTS_GPIO0 \ - ESP32_PINMUX(0, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO0 ESP32_PINMUX(0, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO1 \ - ESP32_PINMUX(1, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO1 ESP32_PINMUX(1, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO2 \ - ESP32_PINMUX(2, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO2 ESP32_PINMUX(2, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO3 \ - ESP32_PINMUX(3, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO3 ESP32_PINMUX(3, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO4 \ - ESP32_PINMUX(4, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO4 ESP32_PINMUX(4, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO5 \ - ESP32_PINMUX(5, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO5 ESP32_PINMUX(5, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO6 \ - ESP32_PINMUX(6, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO6 ESP32_PINMUX(6, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO7 \ - ESP32_PINMUX(7, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO7 ESP32_PINMUX(7, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO8 \ - ESP32_PINMUX(8, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO8 ESP32_PINMUX(8, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO9 \ - ESP32_PINMUX(9, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO9 ESP32_PINMUX(9, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO10 \ - ESP32_PINMUX(10, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO10 ESP32_PINMUX(10, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO11 \ - ESP32_PINMUX(11, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO11 ESP32_PINMUX(11, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO12 \ - ESP32_PINMUX(12, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO12 ESP32_PINMUX(12, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO13 \ - ESP32_PINMUX(13, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO13 ESP32_PINMUX(13, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO14 \ - ESP32_PINMUX(14, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO14 ESP32_PINMUX(14, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO15 \ - ESP32_PINMUX(15, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO15 ESP32_PINMUX(15, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO16 \ - ESP32_PINMUX(16, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO16 ESP32_PINMUX(16, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO17 \ - ESP32_PINMUX(17, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO17 ESP32_PINMUX(17, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO18 \ - ESP32_PINMUX(18, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO18 ESP32_PINMUX(18, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO19 \ - ESP32_PINMUX(19, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO19 ESP32_PINMUX(19, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO20 \ - ESP32_PINMUX(20, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO20 ESP32_PINMUX(20, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO21 \ - ESP32_PINMUX(21, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO21 ESP32_PINMUX(21, ESP_U0CTS_IN, ESP_NOSIG) /* UART0_DSR */ -#define UART0_DSR_GPIO0 \ - ESP32_PINMUX(0, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO0 ESP32_PINMUX(0, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO1 \ - ESP32_PINMUX(1, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO1 ESP32_PINMUX(1, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO2 \ - ESP32_PINMUX(2, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO2 ESP32_PINMUX(2, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO3 \ - ESP32_PINMUX(3, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO3 ESP32_PINMUX(3, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO4 \ - ESP32_PINMUX(4, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO4 ESP32_PINMUX(4, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO5 \ - ESP32_PINMUX(5, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO5 ESP32_PINMUX(5, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO6 \ - ESP32_PINMUX(6, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO6 ESP32_PINMUX(6, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO7 \ - ESP32_PINMUX(7, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO7 ESP32_PINMUX(7, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO8 \ - ESP32_PINMUX(8, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO8 ESP32_PINMUX(8, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO9 \ - ESP32_PINMUX(9, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO9 ESP32_PINMUX(9, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO10 \ - ESP32_PINMUX(10, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO10 ESP32_PINMUX(10, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO11 \ - ESP32_PINMUX(11, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO11 ESP32_PINMUX(11, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO12 \ - ESP32_PINMUX(12, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO12 ESP32_PINMUX(12, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO13 \ - ESP32_PINMUX(13, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO13 ESP32_PINMUX(13, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO14 \ - ESP32_PINMUX(14, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO14 ESP32_PINMUX(14, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO15 \ - ESP32_PINMUX(15, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO15 ESP32_PINMUX(15, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO16 \ - ESP32_PINMUX(16, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO16 ESP32_PINMUX(16, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO17 \ - ESP32_PINMUX(17, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO17 ESP32_PINMUX(17, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO18 \ - ESP32_PINMUX(18, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO18 ESP32_PINMUX(18, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO19 \ - ESP32_PINMUX(19, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO19 ESP32_PINMUX(19, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO20 \ - ESP32_PINMUX(20, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO20 ESP32_PINMUX(20, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO21 \ - ESP32_PINMUX(21, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO21 ESP32_PINMUX(21, ESP_U0DSR_IN, ESP_NOSIG) /* UART0_DTR */ -#define UART0_DTR_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_U0DTR_OUT) /* UART0_RTS */ -#define UART0_RTS_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_U0RTS_OUT) /* UART0_RX */ -#define UART0_RX_GPIO0 \ - ESP32_PINMUX(0, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO0 ESP32_PINMUX(0, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO1 \ - ESP32_PINMUX(1, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO1 ESP32_PINMUX(1, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO2 \ - ESP32_PINMUX(2, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO2 ESP32_PINMUX(2, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO3 \ - ESP32_PINMUX(3, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO3 ESP32_PINMUX(3, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO4 \ - ESP32_PINMUX(4, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO4 ESP32_PINMUX(4, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO5 \ - ESP32_PINMUX(5, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO5 ESP32_PINMUX(5, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO6 \ - ESP32_PINMUX(6, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO6 ESP32_PINMUX(6, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO7 \ - ESP32_PINMUX(7, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO7 ESP32_PINMUX(7, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO8 \ - ESP32_PINMUX(8, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO8 ESP32_PINMUX(8, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO9 \ - ESP32_PINMUX(9, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO9 ESP32_PINMUX(9, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO10 \ - ESP32_PINMUX(10, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO10 ESP32_PINMUX(10, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO11 \ - ESP32_PINMUX(11, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO11 ESP32_PINMUX(11, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO12 \ - ESP32_PINMUX(12, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO12 ESP32_PINMUX(12, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO13 \ - ESP32_PINMUX(13, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO13 ESP32_PINMUX(13, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO14 \ - ESP32_PINMUX(14, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO14 ESP32_PINMUX(14, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO15 \ - ESP32_PINMUX(15, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO15 ESP32_PINMUX(15, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO16 \ - ESP32_PINMUX(16, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO16 ESP32_PINMUX(16, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO17 \ - ESP32_PINMUX(17, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO17 ESP32_PINMUX(17, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO18 \ - ESP32_PINMUX(18, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO18 ESP32_PINMUX(18, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO19 \ - ESP32_PINMUX(19, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO19 ESP32_PINMUX(19, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO20 \ - ESP32_PINMUX(20, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO20 ESP32_PINMUX(20, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO21 \ - ESP32_PINMUX(21, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO21 ESP32_PINMUX(21, ESP_U0RXD_IN, ESP_NOSIG) /* UART0_TX */ -#define UART0_TX_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_U0TXD_OUT) /* UART1_CTS */ -#define UART1_CTS_GPIO0 \ - ESP32_PINMUX(0, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO0 ESP32_PINMUX(0, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO1 \ - ESP32_PINMUX(1, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO1 ESP32_PINMUX(1, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO2 \ - ESP32_PINMUX(2, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO2 ESP32_PINMUX(2, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO3 \ - ESP32_PINMUX(3, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO3 ESP32_PINMUX(3, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO4 \ - ESP32_PINMUX(4, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO4 ESP32_PINMUX(4, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO5 \ - ESP32_PINMUX(5, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO5 ESP32_PINMUX(5, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO6 \ - ESP32_PINMUX(6, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO6 ESP32_PINMUX(6, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO7 \ - ESP32_PINMUX(7, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO7 ESP32_PINMUX(7, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO8 \ - ESP32_PINMUX(8, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO8 ESP32_PINMUX(8, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO9 \ - ESP32_PINMUX(9, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO9 ESP32_PINMUX(9, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO10 \ - ESP32_PINMUX(10, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO10 ESP32_PINMUX(10, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO11 \ - ESP32_PINMUX(11, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO11 ESP32_PINMUX(11, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO12 \ - ESP32_PINMUX(12, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO12 ESP32_PINMUX(12, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO13 \ - ESP32_PINMUX(13, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO13 ESP32_PINMUX(13, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO14 \ - ESP32_PINMUX(14, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO14 ESP32_PINMUX(14, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO15 \ - ESP32_PINMUX(15, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO15 ESP32_PINMUX(15, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO16 \ - ESP32_PINMUX(16, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO16 ESP32_PINMUX(16, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO17 \ - ESP32_PINMUX(17, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO17 ESP32_PINMUX(17, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO18 \ - ESP32_PINMUX(18, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO18 ESP32_PINMUX(18, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO19 \ - ESP32_PINMUX(19, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO19 ESP32_PINMUX(19, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO20 \ - ESP32_PINMUX(20, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO20 ESP32_PINMUX(20, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO21 \ - ESP32_PINMUX(21, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO21 ESP32_PINMUX(21, ESP_U1CTS_IN, ESP_NOSIG) /* UART1_DSR */ -#define UART1_DSR_GPIO0 \ - ESP32_PINMUX(0, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO0 ESP32_PINMUX(0, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO1 \ - ESP32_PINMUX(1, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO1 ESP32_PINMUX(1, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO2 \ - ESP32_PINMUX(2, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO2 ESP32_PINMUX(2, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO3 \ - ESP32_PINMUX(3, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO3 ESP32_PINMUX(3, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO4 \ - ESP32_PINMUX(4, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO4 ESP32_PINMUX(4, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO5 \ - ESP32_PINMUX(5, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO5 ESP32_PINMUX(5, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO6 \ - ESP32_PINMUX(6, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO6 ESP32_PINMUX(6, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO7 \ - ESP32_PINMUX(7, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO7 ESP32_PINMUX(7, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO8 \ - ESP32_PINMUX(8, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO8 ESP32_PINMUX(8, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO9 \ - ESP32_PINMUX(9, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO9 ESP32_PINMUX(9, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO10 \ - ESP32_PINMUX(10, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO10 ESP32_PINMUX(10, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO11 \ - ESP32_PINMUX(11, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO11 ESP32_PINMUX(11, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO12 \ - ESP32_PINMUX(12, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO12 ESP32_PINMUX(12, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO13 \ - ESP32_PINMUX(13, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO13 ESP32_PINMUX(13, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO14 \ - ESP32_PINMUX(14, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO14 ESP32_PINMUX(14, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO15 \ - ESP32_PINMUX(15, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO15 ESP32_PINMUX(15, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO16 \ - ESP32_PINMUX(16, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO16 ESP32_PINMUX(16, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO17 \ - ESP32_PINMUX(17, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO17 ESP32_PINMUX(17, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO18 \ - ESP32_PINMUX(18, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO18 ESP32_PINMUX(18, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO19 \ - ESP32_PINMUX(19, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO19 ESP32_PINMUX(19, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO20 \ - ESP32_PINMUX(20, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO20 ESP32_PINMUX(20, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO21 \ - ESP32_PINMUX(21, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO21 ESP32_PINMUX(21, ESP_U1DSR_IN, ESP_NOSIG) /* UART1_DTR */ -#define UART1_DTR_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_U1DTR_OUT) /* UART1_RTS */ -#define UART1_RTS_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_U1RTS_OUT) /* UART1_RX */ -#define UART1_RX_GPIO0 \ - ESP32_PINMUX(0, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO0 ESP32_PINMUX(0, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO1 \ - ESP32_PINMUX(1, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO1 ESP32_PINMUX(1, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO2 \ - ESP32_PINMUX(2, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO2 ESP32_PINMUX(2, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO3 \ - ESP32_PINMUX(3, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO3 ESP32_PINMUX(3, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO4 \ - ESP32_PINMUX(4, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO4 ESP32_PINMUX(4, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO5 \ - ESP32_PINMUX(5, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO5 ESP32_PINMUX(5, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO6 \ - ESP32_PINMUX(6, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO6 ESP32_PINMUX(6, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO7 \ - ESP32_PINMUX(7, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO7 ESP32_PINMUX(7, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO8 \ - ESP32_PINMUX(8, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO8 ESP32_PINMUX(8, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO9 \ - ESP32_PINMUX(9, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO9 ESP32_PINMUX(9, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO10 \ - ESP32_PINMUX(10, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO10 ESP32_PINMUX(10, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO11 \ - ESP32_PINMUX(11, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO11 ESP32_PINMUX(11, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO12 \ - ESP32_PINMUX(12, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO12 ESP32_PINMUX(12, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO13 \ - ESP32_PINMUX(13, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO13 ESP32_PINMUX(13, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO14 \ - ESP32_PINMUX(14, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO14 ESP32_PINMUX(14, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO15 \ - ESP32_PINMUX(15, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO15 ESP32_PINMUX(15, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO16 \ - ESP32_PINMUX(16, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO16 ESP32_PINMUX(16, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO17 \ - ESP32_PINMUX(17, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO17 ESP32_PINMUX(17, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO18 \ - ESP32_PINMUX(18, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO18 ESP32_PINMUX(18, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO19 \ - ESP32_PINMUX(19, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO19 ESP32_PINMUX(19, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO20 \ - ESP32_PINMUX(20, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO20 ESP32_PINMUX(20, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO21 \ - ESP32_PINMUX(21, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO21 ESP32_PINMUX(21, ESP_U1RXD_IN, ESP_NOSIG) /* UART1_TX */ -#define UART1_TX_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_U1TXD_OUT) - -#define UART1_TX_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_U1TXD_OUT) #endif /* INC_DT_BINDS_PINCTRL_ESP32C3_PINCTRL_HAL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32s3-pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32s3-pinctrl.h index f8713bec..0ea85498 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32s3-pinctrl.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/esp32s3-pinctrl.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Espressif Systems (Shanghai) Co., Ltd. + * Copyright (c) 2024 Espressif Systems (Shanghai) Co., Ltd. * * SPDX-License-Identifier: Apache-2.0 * @@ -10,12652 +10,15019 @@ #define INC_DT_BINDS_PINCTRL_ESP32S3_PINCTRL_HAL_H_ /* I2C0_SCL */ -#define I2C0_SCL_GPIO0 \ - ESP32_PINMUX(0, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO0 ESP32_PINMUX(0, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO1 \ - ESP32_PINMUX(1, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO1 ESP32_PINMUX(1, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO2 \ - ESP32_PINMUX(2, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO2 ESP32_PINMUX(2, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO3 \ - ESP32_PINMUX(3, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO3 ESP32_PINMUX(3, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO4 \ - ESP32_PINMUX(4, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO4 ESP32_PINMUX(4, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO5 \ - ESP32_PINMUX(5, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO5 ESP32_PINMUX(5, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO6 \ - ESP32_PINMUX(6, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO6 ESP32_PINMUX(6, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO7 \ - ESP32_PINMUX(7, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO7 ESP32_PINMUX(7, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO8 \ - ESP32_PINMUX(8, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO8 ESP32_PINMUX(8, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO9 \ - ESP32_PINMUX(9, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO9 ESP32_PINMUX(9, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO10 \ - ESP32_PINMUX(10, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO10 ESP32_PINMUX(10, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO11 \ - ESP32_PINMUX(11, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO11 ESP32_PINMUX(11, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO12 \ - ESP32_PINMUX(12, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO12 ESP32_PINMUX(12, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO13 \ - ESP32_PINMUX(13, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO13 ESP32_PINMUX(13, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO14 \ - ESP32_PINMUX(14, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO14 ESP32_PINMUX(14, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO15 \ - ESP32_PINMUX(15, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO15 ESP32_PINMUX(15, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO16 \ - ESP32_PINMUX(16, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO16 ESP32_PINMUX(16, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO17 \ - ESP32_PINMUX(17, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO17 ESP32_PINMUX(17, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO18 \ - ESP32_PINMUX(18, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO18 ESP32_PINMUX(18, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO19 \ - ESP32_PINMUX(19, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO19 ESP32_PINMUX(19, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO20 \ - ESP32_PINMUX(20, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO20 ESP32_PINMUX(20, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO21 \ - ESP32_PINMUX(21, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO21 ESP32_PINMUX(21, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO26 \ - ESP32_PINMUX(26, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO26 ESP32_PINMUX(26, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO27 \ - ESP32_PINMUX(27, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO27 ESP32_PINMUX(27, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO28 \ - ESP32_PINMUX(28, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO28 ESP32_PINMUX(28, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO29 \ - ESP32_PINMUX(29, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO29 ESP32_PINMUX(29, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO30 \ - ESP32_PINMUX(30, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO30 ESP32_PINMUX(30, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO31 \ - ESP32_PINMUX(31, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO31 ESP32_PINMUX(31, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO32 \ - ESP32_PINMUX(32, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO32 ESP32_PINMUX(32, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO33 \ - ESP32_PINMUX(33, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO33 ESP32_PINMUX(33, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO34 \ - ESP32_PINMUX(34, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO34 ESP32_PINMUX(34, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO35 \ - ESP32_PINMUX(35, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO35 ESP32_PINMUX(35, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO36 \ - ESP32_PINMUX(36, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO36 ESP32_PINMUX(36, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO37 \ - ESP32_PINMUX(37, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO37 ESP32_PINMUX(37, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO38 \ - ESP32_PINMUX(38, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO38 ESP32_PINMUX(38, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO39 \ - ESP32_PINMUX(39, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO39 ESP32_PINMUX(39, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO40 \ - ESP32_PINMUX(40, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO40 ESP32_PINMUX(40, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO41 \ - ESP32_PINMUX(41, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO41 ESP32_PINMUX(41, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO42 \ - ESP32_PINMUX(42, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO42 ESP32_PINMUX(42, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO43 \ - ESP32_PINMUX(43, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO43 ESP32_PINMUX(43, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO44 \ - ESP32_PINMUX(44, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO44 ESP32_PINMUX(44, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO45 \ - ESP32_PINMUX(45, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO45 ESP32_PINMUX(45, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO46 \ - ESP32_PINMUX(46, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO46 ESP32_PINMUX(46, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO47 \ - ESP32_PINMUX(47, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO47 ESP32_PINMUX(47, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) -#define I2C0_SCL_GPIO48 \ - ESP32_PINMUX(48, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) +#define I2C0_SCL_GPIO48 ESP32_PINMUX(48, ESP_I2CEXT0_SCL_IN, ESP_I2CEXT0_SCL_OUT) /* I2C0_SDA */ -#define I2C0_SDA_GPIO0 \ - ESP32_PINMUX(0, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO0 ESP32_PINMUX(0, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO1 \ - ESP32_PINMUX(1, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO1 ESP32_PINMUX(1, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO2 \ - ESP32_PINMUX(2, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO2 ESP32_PINMUX(2, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO3 \ - ESP32_PINMUX(3, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO3 ESP32_PINMUX(3, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO4 \ - ESP32_PINMUX(4, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO4 ESP32_PINMUX(4, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO5 \ - ESP32_PINMUX(5, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO5 ESP32_PINMUX(5, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO6 \ - ESP32_PINMUX(6, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO6 ESP32_PINMUX(6, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO7 \ - ESP32_PINMUX(7, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO7 ESP32_PINMUX(7, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO8 \ - ESP32_PINMUX(8, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO8 ESP32_PINMUX(8, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO9 \ - ESP32_PINMUX(9, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO9 ESP32_PINMUX(9, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO10 \ - ESP32_PINMUX(10, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO10 ESP32_PINMUX(10, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO11 \ - ESP32_PINMUX(11, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO11 ESP32_PINMUX(11, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO12 \ - ESP32_PINMUX(12, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO12 ESP32_PINMUX(12, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO13 \ - ESP32_PINMUX(13, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO13 ESP32_PINMUX(13, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO14 \ - ESP32_PINMUX(14, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO14 ESP32_PINMUX(14, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO15 \ - ESP32_PINMUX(15, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO15 ESP32_PINMUX(15, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO16 \ - ESP32_PINMUX(16, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO16 ESP32_PINMUX(16, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO17 \ - ESP32_PINMUX(17, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO17 ESP32_PINMUX(17, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO18 \ - ESP32_PINMUX(18, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO18 ESP32_PINMUX(18, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO19 \ - ESP32_PINMUX(19, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO19 ESP32_PINMUX(19, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO20 \ - ESP32_PINMUX(20, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO20 ESP32_PINMUX(20, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO21 \ - ESP32_PINMUX(21, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO21 ESP32_PINMUX(21, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO26 \ - ESP32_PINMUX(26, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO26 ESP32_PINMUX(26, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO27 \ - ESP32_PINMUX(27, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO27 ESP32_PINMUX(27, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO28 \ - ESP32_PINMUX(28, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO28 ESP32_PINMUX(28, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO29 \ - ESP32_PINMUX(29, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO29 ESP32_PINMUX(29, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO30 \ - ESP32_PINMUX(30, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO30 ESP32_PINMUX(30, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO31 \ - ESP32_PINMUX(31, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO31 ESP32_PINMUX(31, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO32 \ - ESP32_PINMUX(32, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO32 ESP32_PINMUX(32, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO33 \ - ESP32_PINMUX(33, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO33 ESP32_PINMUX(33, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO34 \ - ESP32_PINMUX(34, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO34 ESP32_PINMUX(34, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO35 \ - ESP32_PINMUX(35, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO35 ESP32_PINMUX(35, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO36 \ - ESP32_PINMUX(36, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO36 ESP32_PINMUX(36, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO37 \ - ESP32_PINMUX(37, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO37 ESP32_PINMUX(37, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO38 \ - ESP32_PINMUX(38, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO38 ESP32_PINMUX(38, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO39 \ - ESP32_PINMUX(39, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO39 ESP32_PINMUX(39, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO40 \ - ESP32_PINMUX(40, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO40 ESP32_PINMUX(40, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO41 \ - ESP32_PINMUX(41, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO41 ESP32_PINMUX(41, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO42 \ - ESP32_PINMUX(42, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO42 ESP32_PINMUX(42, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO43 \ - ESP32_PINMUX(43, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO43 ESP32_PINMUX(43, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO44 \ - ESP32_PINMUX(44, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO44 ESP32_PINMUX(44, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO45 \ - ESP32_PINMUX(45, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO45 ESP32_PINMUX(45, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO46 \ - ESP32_PINMUX(46, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO46 ESP32_PINMUX(46, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO47 \ - ESP32_PINMUX(47, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO47 ESP32_PINMUX(47, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) -#define I2C0_SDA_GPIO48 \ - ESP32_PINMUX(48, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) +#define I2C0_SDA_GPIO48 ESP32_PINMUX(48, ESP_I2CEXT0_SDA_IN, ESP_I2CEXT0_SDA_OUT) /* I2C1_SCL */ -#define I2C1_SCL_GPIO0 \ - ESP32_PINMUX(0, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO0 ESP32_PINMUX(0, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO1 \ - ESP32_PINMUX(1, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO1 ESP32_PINMUX(1, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO2 \ - ESP32_PINMUX(2, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO2 ESP32_PINMUX(2, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO3 \ - ESP32_PINMUX(3, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO3 ESP32_PINMUX(3, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO4 \ - ESP32_PINMUX(4, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO4 ESP32_PINMUX(4, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO5 \ - ESP32_PINMUX(5, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO5 ESP32_PINMUX(5, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO6 \ - ESP32_PINMUX(6, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO6 ESP32_PINMUX(6, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO7 \ - ESP32_PINMUX(7, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO7 ESP32_PINMUX(7, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO8 \ - ESP32_PINMUX(8, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO8 ESP32_PINMUX(8, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO9 \ - ESP32_PINMUX(9, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO9 ESP32_PINMUX(9, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO10 \ - ESP32_PINMUX(10, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO10 ESP32_PINMUX(10, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO11 \ - ESP32_PINMUX(11, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO11 ESP32_PINMUX(11, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO12 \ - ESP32_PINMUX(12, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO12 ESP32_PINMUX(12, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO13 \ - ESP32_PINMUX(13, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO13 ESP32_PINMUX(13, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO14 \ - ESP32_PINMUX(14, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO14 ESP32_PINMUX(14, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO15 \ - ESP32_PINMUX(15, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO15 ESP32_PINMUX(15, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO16 \ - ESP32_PINMUX(16, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO16 ESP32_PINMUX(16, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO17 \ - ESP32_PINMUX(17, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO17 ESP32_PINMUX(17, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO18 \ - ESP32_PINMUX(18, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO18 ESP32_PINMUX(18, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO19 \ - ESP32_PINMUX(19, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO19 ESP32_PINMUX(19, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO20 \ - ESP32_PINMUX(20, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO20 ESP32_PINMUX(20, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO21 \ - ESP32_PINMUX(21, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO21 ESP32_PINMUX(21, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO26 \ - ESP32_PINMUX(26, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO26 ESP32_PINMUX(26, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO27 \ - ESP32_PINMUX(27, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO27 ESP32_PINMUX(27, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO28 \ - ESP32_PINMUX(28, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO28 ESP32_PINMUX(28, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO29 \ - ESP32_PINMUX(29, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO29 ESP32_PINMUX(29, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO30 \ - ESP32_PINMUX(30, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO30 ESP32_PINMUX(30, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO31 \ - ESP32_PINMUX(31, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO31 ESP32_PINMUX(31, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO32 \ - ESP32_PINMUX(32, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO32 ESP32_PINMUX(32, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO33 \ - ESP32_PINMUX(33, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO33 ESP32_PINMUX(33, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO34 \ - ESP32_PINMUX(34, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO34 ESP32_PINMUX(34, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO35 \ - ESP32_PINMUX(35, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO35 ESP32_PINMUX(35, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO36 \ - ESP32_PINMUX(36, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO36 ESP32_PINMUX(36, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO37 \ - ESP32_PINMUX(37, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO37 ESP32_PINMUX(37, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO38 \ - ESP32_PINMUX(38, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO38 ESP32_PINMUX(38, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO39 \ - ESP32_PINMUX(39, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO39 ESP32_PINMUX(39, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO40 \ - ESP32_PINMUX(40, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO40 ESP32_PINMUX(40, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO41 \ - ESP32_PINMUX(41, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO41 ESP32_PINMUX(41, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO42 \ - ESP32_PINMUX(42, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO42 ESP32_PINMUX(42, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO43 \ - ESP32_PINMUX(43, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO43 ESP32_PINMUX(43, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO44 \ - ESP32_PINMUX(44, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO44 ESP32_PINMUX(44, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO45 \ - ESP32_PINMUX(45, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO45 ESP32_PINMUX(45, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO46 \ - ESP32_PINMUX(46, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO46 ESP32_PINMUX(46, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO47 \ - ESP32_PINMUX(47, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO47 ESP32_PINMUX(47, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) -#define I2C1_SCL_GPIO48 \ - ESP32_PINMUX(48, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) +#define I2C1_SCL_GPIO48 ESP32_PINMUX(48, ESP_I2CEXT1_SCL_IN, ESP_I2CEXT1_SCL_OUT) /* I2C1_SDA */ -#define I2C1_SDA_GPIO0 \ - ESP32_PINMUX(0, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO0 ESP32_PINMUX(0, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO1 \ - ESP32_PINMUX(1, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO1 ESP32_PINMUX(1, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO2 \ - ESP32_PINMUX(2, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO2 ESP32_PINMUX(2, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO3 \ - ESP32_PINMUX(3, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO3 ESP32_PINMUX(3, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO4 \ - ESP32_PINMUX(4, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO4 ESP32_PINMUX(4, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO5 \ - ESP32_PINMUX(5, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO5 ESP32_PINMUX(5, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO6 \ - ESP32_PINMUX(6, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO6 ESP32_PINMUX(6, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO7 \ - ESP32_PINMUX(7, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO7 ESP32_PINMUX(7, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO8 \ - ESP32_PINMUX(8, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO8 ESP32_PINMUX(8, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO9 \ - ESP32_PINMUX(9, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO9 ESP32_PINMUX(9, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO10 \ - ESP32_PINMUX(10, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO10 ESP32_PINMUX(10, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO11 \ - ESP32_PINMUX(11, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO11 ESP32_PINMUX(11, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO12 \ - ESP32_PINMUX(12, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO12 ESP32_PINMUX(12, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO13 \ - ESP32_PINMUX(13, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO13 ESP32_PINMUX(13, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO14 \ - ESP32_PINMUX(14, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO14 ESP32_PINMUX(14, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO15 \ - ESP32_PINMUX(15, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO15 ESP32_PINMUX(15, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO16 \ - ESP32_PINMUX(16, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO16 ESP32_PINMUX(16, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO17 \ - ESP32_PINMUX(17, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO17 ESP32_PINMUX(17, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO18 \ - ESP32_PINMUX(18, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO18 ESP32_PINMUX(18, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO19 \ - ESP32_PINMUX(19, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO19 ESP32_PINMUX(19, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO20 \ - ESP32_PINMUX(20, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO20 ESP32_PINMUX(20, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO21 \ - ESP32_PINMUX(21, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO21 ESP32_PINMUX(21, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO26 \ - ESP32_PINMUX(26, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO26 ESP32_PINMUX(26, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO27 \ - ESP32_PINMUX(27, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO27 ESP32_PINMUX(27, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO28 \ - ESP32_PINMUX(28, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO28 ESP32_PINMUX(28, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO29 \ - ESP32_PINMUX(29, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO29 ESP32_PINMUX(29, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO30 \ - ESP32_PINMUX(30, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO30 ESP32_PINMUX(30, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO31 \ - ESP32_PINMUX(31, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO31 ESP32_PINMUX(31, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO32 \ - ESP32_PINMUX(32, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO32 ESP32_PINMUX(32, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO33 \ - ESP32_PINMUX(33, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO33 ESP32_PINMUX(33, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO34 \ - ESP32_PINMUX(34, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO34 ESP32_PINMUX(34, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO35 \ - ESP32_PINMUX(35, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO35 ESP32_PINMUX(35, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO36 \ - ESP32_PINMUX(36, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO36 ESP32_PINMUX(36, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO37 \ - ESP32_PINMUX(37, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO37 ESP32_PINMUX(37, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO38 \ - ESP32_PINMUX(38, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO38 ESP32_PINMUX(38, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO39 \ - ESP32_PINMUX(39, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO39 ESP32_PINMUX(39, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO40 \ - ESP32_PINMUX(40, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO40 ESP32_PINMUX(40, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO41 \ - ESP32_PINMUX(41, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO41 ESP32_PINMUX(41, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO42 \ - ESP32_PINMUX(42, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO42 ESP32_PINMUX(42, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO43 \ - ESP32_PINMUX(43, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO43 ESP32_PINMUX(43, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO44 \ - ESP32_PINMUX(44, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO44 ESP32_PINMUX(44, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO45 \ - ESP32_PINMUX(45, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO45 ESP32_PINMUX(45, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO46 \ - ESP32_PINMUX(46, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO46 ESP32_PINMUX(46, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO47 \ - ESP32_PINMUX(47, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO47 ESP32_PINMUX(47, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) -#define I2C1_SDA_GPIO48 \ - ESP32_PINMUX(48, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) +#define I2C1_SDA_GPIO48 ESP32_PINMUX(48, ESP_I2CEXT1_SDA_IN, ESP_I2CEXT1_SDA_OUT) + +/* I2S0_I_BCK */ +#define I2S0_I_BCK_GPIO0 ESP32_PINMUX(0, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO1 ESP32_PINMUX(1, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO2 ESP32_PINMUX(2, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO3 ESP32_PINMUX(3, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO4 ESP32_PINMUX(4, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO5 ESP32_PINMUX(5, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO6 ESP32_PINMUX(6, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO7 ESP32_PINMUX(7, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO8 ESP32_PINMUX(8, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO9 ESP32_PINMUX(9, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO10 ESP32_PINMUX(10, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO11 ESP32_PINMUX(11, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO12 ESP32_PINMUX(12, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO13 ESP32_PINMUX(13, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO14 ESP32_PINMUX(14, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO15 ESP32_PINMUX(15, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO16 ESP32_PINMUX(16, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO17 ESP32_PINMUX(17, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO18 ESP32_PINMUX(18, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO19 ESP32_PINMUX(19, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO20 ESP32_PINMUX(20, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO21 ESP32_PINMUX(21, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO26 ESP32_PINMUX(26, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO27 ESP32_PINMUX(27, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO28 ESP32_PINMUX(28, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO29 ESP32_PINMUX(29, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO30 ESP32_PINMUX(30, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO31 ESP32_PINMUX(31, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO32 ESP32_PINMUX(32, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO33 ESP32_PINMUX(33, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO34 ESP32_PINMUX(34, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO35 ESP32_PINMUX(35, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO36 ESP32_PINMUX(36, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO37 ESP32_PINMUX(37, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO38 ESP32_PINMUX(38, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO39 ESP32_PINMUX(39, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO40 ESP32_PINMUX(40, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO41 ESP32_PINMUX(41, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO42 ESP32_PINMUX(42, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO43 ESP32_PINMUX(43, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO44 ESP32_PINMUX(44, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO45 ESP32_PINMUX(45, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO46 ESP32_PINMUX(46, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO47 ESP32_PINMUX(47, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +#define I2S0_I_BCK_GPIO48 ESP32_PINMUX(48, ESP_I2S0I_BCK_IN, ESP_I2S0I_BCK_OUT) + +/* I2S0_I_SD */ +#define I2S0_I_SD_GPIO0 ESP32_PINMUX(0, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO1 ESP32_PINMUX(1, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO2 ESP32_PINMUX(2, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO3 ESP32_PINMUX(3, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO4 ESP32_PINMUX(4, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO5 ESP32_PINMUX(5, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO6 ESP32_PINMUX(6, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO7 ESP32_PINMUX(7, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO8 ESP32_PINMUX(8, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO9 ESP32_PINMUX(9, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO10 ESP32_PINMUX(10, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO11 ESP32_PINMUX(11, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO12 ESP32_PINMUX(12, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO13 ESP32_PINMUX(13, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO14 ESP32_PINMUX(14, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO15 ESP32_PINMUX(15, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO16 ESP32_PINMUX(16, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO17 ESP32_PINMUX(17, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO18 ESP32_PINMUX(18, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO19 ESP32_PINMUX(19, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO20 ESP32_PINMUX(20, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO21 ESP32_PINMUX(21, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO26 ESP32_PINMUX(26, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO27 ESP32_PINMUX(27, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO28 ESP32_PINMUX(28, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO29 ESP32_PINMUX(29, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO30 ESP32_PINMUX(30, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO31 ESP32_PINMUX(31, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO32 ESP32_PINMUX(32, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO33 ESP32_PINMUX(33, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO34 ESP32_PINMUX(34, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO35 ESP32_PINMUX(35, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO36 ESP32_PINMUX(36, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO37 ESP32_PINMUX(37, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO38 ESP32_PINMUX(38, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO39 ESP32_PINMUX(39, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO40 ESP32_PINMUX(40, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO41 ESP32_PINMUX(41, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO42 ESP32_PINMUX(42, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO43 ESP32_PINMUX(43, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO44 ESP32_PINMUX(44, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO45 ESP32_PINMUX(45, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO46 ESP32_PINMUX(46, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO47 ESP32_PINMUX(47, ESP_I2S0I_SD_IN, ESP_NOSIG) + +#define I2S0_I_SD_GPIO48 ESP32_PINMUX(48, ESP_I2S0I_SD_IN, ESP_NOSIG) + +/* I2S0_I_WS */ +#define I2S0_I_WS_GPIO0 ESP32_PINMUX(0, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO1 ESP32_PINMUX(1, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO2 ESP32_PINMUX(2, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO3 ESP32_PINMUX(3, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO4 ESP32_PINMUX(4, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO5 ESP32_PINMUX(5, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO6 ESP32_PINMUX(6, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO7 ESP32_PINMUX(7, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO8 ESP32_PINMUX(8, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO9 ESP32_PINMUX(9, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO10 ESP32_PINMUX(10, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO11 ESP32_PINMUX(11, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO12 ESP32_PINMUX(12, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO13 ESP32_PINMUX(13, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO14 ESP32_PINMUX(14, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO15 ESP32_PINMUX(15, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO16 ESP32_PINMUX(16, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO17 ESP32_PINMUX(17, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO18 ESP32_PINMUX(18, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO19 ESP32_PINMUX(19, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO20 ESP32_PINMUX(20, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO21 ESP32_PINMUX(21, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO26 ESP32_PINMUX(26, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO27 ESP32_PINMUX(27, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO28 ESP32_PINMUX(28, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO29 ESP32_PINMUX(29, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO30 ESP32_PINMUX(30, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO31 ESP32_PINMUX(31, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO32 ESP32_PINMUX(32, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO33 ESP32_PINMUX(33, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO34 ESP32_PINMUX(34, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO35 ESP32_PINMUX(35, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO36 ESP32_PINMUX(36, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO37 ESP32_PINMUX(37, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO38 ESP32_PINMUX(38, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO39 ESP32_PINMUX(39, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO40 ESP32_PINMUX(40, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO41 ESP32_PINMUX(41, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO42 ESP32_PINMUX(42, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO43 ESP32_PINMUX(43, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO44 ESP32_PINMUX(44, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO45 ESP32_PINMUX(45, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO46 ESP32_PINMUX(46, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO47 ESP32_PINMUX(47, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +#define I2S0_I_WS_GPIO48 ESP32_PINMUX(48, ESP_I2S0I_WS_IN, ESP_I2S0I_WS_OUT) + +/* I2S0_MCLK */ +#define I2S0_MCLK_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +#define I2S0_MCLK_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_I2S0_MCLK_OUT) + +/* I2S0_O_BCK */ +#define I2S0_O_BCK_GPIO0 ESP32_PINMUX(0, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO1 ESP32_PINMUX(1, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO2 ESP32_PINMUX(2, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO3 ESP32_PINMUX(3, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO4 ESP32_PINMUX(4, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO5 ESP32_PINMUX(5, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO6 ESP32_PINMUX(6, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO7 ESP32_PINMUX(7, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO8 ESP32_PINMUX(8, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO9 ESP32_PINMUX(9, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO10 ESP32_PINMUX(10, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO11 ESP32_PINMUX(11, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO12 ESP32_PINMUX(12, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO13 ESP32_PINMUX(13, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO14 ESP32_PINMUX(14, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO15 ESP32_PINMUX(15, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO16 ESP32_PINMUX(16, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO17 ESP32_PINMUX(17, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO18 ESP32_PINMUX(18, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO19 ESP32_PINMUX(19, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO20 ESP32_PINMUX(20, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO21 ESP32_PINMUX(21, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO26 ESP32_PINMUX(26, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO27 ESP32_PINMUX(27, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO28 ESP32_PINMUX(28, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO29 ESP32_PINMUX(29, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO30 ESP32_PINMUX(30, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO31 ESP32_PINMUX(31, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO32 ESP32_PINMUX(32, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO33 ESP32_PINMUX(33, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO34 ESP32_PINMUX(34, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO35 ESP32_PINMUX(35, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO36 ESP32_PINMUX(36, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO37 ESP32_PINMUX(37, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO38 ESP32_PINMUX(38, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO39 ESP32_PINMUX(39, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO40 ESP32_PINMUX(40, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO41 ESP32_PINMUX(41, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO42 ESP32_PINMUX(42, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO43 ESP32_PINMUX(43, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO44 ESP32_PINMUX(44, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO45 ESP32_PINMUX(45, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO46 ESP32_PINMUX(46, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO47 ESP32_PINMUX(47, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +#define I2S0_O_BCK_GPIO48 ESP32_PINMUX(48, ESP_I2S0O_BCK_IN, ESP_I2S0O_BCK_OUT) + +/* I2S0_O_SD */ +#define I2S0_O_SD_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +#define I2S0_O_SD_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_I2S0O_SD_OUT) + +/* I2S0_O_WS */ +#define I2S0_O_WS_GPIO0 ESP32_PINMUX(0, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO1 ESP32_PINMUX(1, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO2 ESP32_PINMUX(2, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO3 ESP32_PINMUX(3, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO4 ESP32_PINMUX(4, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO5 ESP32_PINMUX(5, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO6 ESP32_PINMUX(6, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO7 ESP32_PINMUX(7, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO8 ESP32_PINMUX(8, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO9 ESP32_PINMUX(9, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO10 ESP32_PINMUX(10, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO11 ESP32_PINMUX(11, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO12 ESP32_PINMUX(12, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO13 ESP32_PINMUX(13, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO14 ESP32_PINMUX(14, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO15 ESP32_PINMUX(15, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO16 ESP32_PINMUX(16, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO17 ESP32_PINMUX(17, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO18 ESP32_PINMUX(18, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO19 ESP32_PINMUX(19, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO20 ESP32_PINMUX(20, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO21 ESP32_PINMUX(21, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO26 ESP32_PINMUX(26, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO27 ESP32_PINMUX(27, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO28 ESP32_PINMUX(28, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO29 ESP32_PINMUX(29, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO30 ESP32_PINMUX(30, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO31 ESP32_PINMUX(31, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO32 ESP32_PINMUX(32, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO33 ESP32_PINMUX(33, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO34 ESP32_PINMUX(34, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO35 ESP32_PINMUX(35, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO36 ESP32_PINMUX(36, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO37 ESP32_PINMUX(37, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO38 ESP32_PINMUX(38, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO39 ESP32_PINMUX(39, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO40 ESP32_PINMUX(40, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO41 ESP32_PINMUX(41, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO42 ESP32_PINMUX(42, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO43 ESP32_PINMUX(43, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO44 ESP32_PINMUX(44, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO45 ESP32_PINMUX(45, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO46 ESP32_PINMUX(46, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO47 ESP32_PINMUX(47, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +#define I2S0_O_WS_GPIO48 ESP32_PINMUX(48, ESP_I2S0O_WS_IN, ESP_I2S0O_WS_OUT) + +/* I2S1_I_BCK */ +#define I2S1_I_BCK_GPIO0 ESP32_PINMUX(0, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO1 ESP32_PINMUX(1, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO2 ESP32_PINMUX(2, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO3 ESP32_PINMUX(3, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO4 ESP32_PINMUX(4, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO5 ESP32_PINMUX(5, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO6 ESP32_PINMUX(6, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO7 ESP32_PINMUX(7, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO8 ESP32_PINMUX(8, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO9 ESP32_PINMUX(9, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO10 ESP32_PINMUX(10, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO11 ESP32_PINMUX(11, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO12 ESP32_PINMUX(12, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO13 ESP32_PINMUX(13, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO14 ESP32_PINMUX(14, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO15 ESP32_PINMUX(15, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO16 ESP32_PINMUX(16, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO17 ESP32_PINMUX(17, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO18 ESP32_PINMUX(18, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO19 ESP32_PINMUX(19, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO20 ESP32_PINMUX(20, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO21 ESP32_PINMUX(21, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO26 ESP32_PINMUX(26, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO27 ESP32_PINMUX(27, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO28 ESP32_PINMUX(28, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO29 ESP32_PINMUX(29, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO30 ESP32_PINMUX(30, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO31 ESP32_PINMUX(31, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO32 ESP32_PINMUX(32, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO33 ESP32_PINMUX(33, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO34 ESP32_PINMUX(34, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO35 ESP32_PINMUX(35, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO36 ESP32_PINMUX(36, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO37 ESP32_PINMUX(37, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO38 ESP32_PINMUX(38, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO39 ESP32_PINMUX(39, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO40 ESP32_PINMUX(40, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO41 ESP32_PINMUX(41, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO42 ESP32_PINMUX(42, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO43 ESP32_PINMUX(43, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO44 ESP32_PINMUX(44, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO45 ESP32_PINMUX(45, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO46 ESP32_PINMUX(46, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO47 ESP32_PINMUX(47, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +#define I2S1_I_BCK_GPIO48 ESP32_PINMUX(48, ESP_I2S1I_BCK_IN, ESP_I2S1I_BCK_OUT) + +/* I2S1_I_SD */ +#define I2S1_I_SD_GPIO0 ESP32_PINMUX(0, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO1 ESP32_PINMUX(1, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO2 ESP32_PINMUX(2, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO3 ESP32_PINMUX(3, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO4 ESP32_PINMUX(4, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO5 ESP32_PINMUX(5, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO6 ESP32_PINMUX(6, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO7 ESP32_PINMUX(7, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO8 ESP32_PINMUX(8, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO9 ESP32_PINMUX(9, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO10 ESP32_PINMUX(10, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO11 ESP32_PINMUX(11, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO12 ESP32_PINMUX(12, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO13 ESP32_PINMUX(13, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO14 ESP32_PINMUX(14, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO15 ESP32_PINMUX(15, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO16 ESP32_PINMUX(16, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO17 ESP32_PINMUX(17, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO18 ESP32_PINMUX(18, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO19 ESP32_PINMUX(19, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO20 ESP32_PINMUX(20, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO21 ESP32_PINMUX(21, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO26 ESP32_PINMUX(26, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO27 ESP32_PINMUX(27, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO28 ESP32_PINMUX(28, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO29 ESP32_PINMUX(29, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO30 ESP32_PINMUX(30, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO31 ESP32_PINMUX(31, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO32 ESP32_PINMUX(32, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO33 ESP32_PINMUX(33, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO34 ESP32_PINMUX(34, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO35 ESP32_PINMUX(35, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO36 ESP32_PINMUX(36, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO37 ESP32_PINMUX(37, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO38 ESP32_PINMUX(38, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO39 ESP32_PINMUX(39, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO40 ESP32_PINMUX(40, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO41 ESP32_PINMUX(41, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO42 ESP32_PINMUX(42, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO43 ESP32_PINMUX(43, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO44 ESP32_PINMUX(44, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO45 ESP32_PINMUX(45, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO46 ESP32_PINMUX(46, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO47 ESP32_PINMUX(47, ESP_I2S1I_SD_IN, ESP_NOSIG) + +#define I2S1_I_SD_GPIO48 ESP32_PINMUX(48, ESP_I2S1I_SD_IN, ESP_NOSIG) + +/* I2S1_I_WS */ +#define I2S1_I_WS_GPIO0 ESP32_PINMUX(0, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO1 ESP32_PINMUX(1, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO2 ESP32_PINMUX(2, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO3 ESP32_PINMUX(3, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO4 ESP32_PINMUX(4, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO5 ESP32_PINMUX(5, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO6 ESP32_PINMUX(6, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO7 ESP32_PINMUX(7, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO8 ESP32_PINMUX(8, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO9 ESP32_PINMUX(9, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO10 ESP32_PINMUX(10, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO11 ESP32_PINMUX(11, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO12 ESP32_PINMUX(12, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO13 ESP32_PINMUX(13, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO14 ESP32_PINMUX(14, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO15 ESP32_PINMUX(15, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO16 ESP32_PINMUX(16, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO17 ESP32_PINMUX(17, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO18 ESP32_PINMUX(18, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO19 ESP32_PINMUX(19, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO20 ESP32_PINMUX(20, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO21 ESP32_PINMUX(21, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO26 ESP32_PINMUX(26, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO27 ESP32_PINMUX(27, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO28 ESP32_PINMUX(28, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO29 ESP32_PINMUX(29, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO30 ESP32_PINMUX(30, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO31 ESP32_PINMUX(31, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO32 ESP32_PINMUX(32, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO33 ESP32_PINMUX(33, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO34 ESP32_PINMUX(34, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO35 ESP32_PINMUX(35, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO36 ESP32_PINMUX(36, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO37 ESP32_PINMUX(37, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO38 ESP32_PINMUX(38, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO39 ESP32_PINMUX(39, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO40 ESP32_PINMUX(40, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO41 ESP32_PINMUX(41, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO42 ESP32_PINMUX(42, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO43 ESP32_PINMUX(43, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO44 ESP32_PINMUX(44, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO45 ESP32_PINMUX(45, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO46 ESP32_PINMUX(46, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO47 ESP32_PINMUX(47, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +#define I2S1_I_WS_GPIO48 ESP32_PINMUX(48, ESP_I2S1I_WS_IN, ESP_I2S1I_WS_OUT) + +/* I2S1_MCLK */ +#define I2S1_MCLK_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +#define I2S1_MCLK_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_I2S1_MCLK_OUT) + +/* I2S1_O_BCK */ +#define I2S1_O_BCK_GPIO0 ESP32_PINMUX(0, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO1 ESP32_PINMUX(1, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO2 ESP32_PINMUX(2, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO3 ESP32_PINMUX(3, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO4 ESP32_PINMUX(4, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO5 ESP32_PINMUX(5, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO6 ESP32_PINMUX(6, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO7 ESP32_PINMUX(7, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO8 ESP32_PINMUX(8, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO9 ESP32_PINMUX(9, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO10 ESP32_PINMUX(10, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO11 ESP32_PINMUX(11, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO12 ESP32_PINMUX(12, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO13 ESP32_PINMUX(13, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO14 ESP32_PINMUX(14, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO15 ESP32_PINMUX(15, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO16 ESP32_PINMUX(16, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO17 ESP32_PINMUX(17, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO18 ESP32_PINMUX(18, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO19 ESP32_PINMUX(19, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO20 ESP32_PINMUX(20, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO21 ESP32_PINMUX(21, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO26 ESP32_PINMUX(26, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO27 ESP32_PINMUX(27, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO28 ESP32_PINMUX(28, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO29 ESP32_PINMUX(29, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO30 ESP32_PINMUX(30, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO31 ESP32_PINMUX(31, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO32 ESP32_PINMUX(32, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO33 ESP32_PINMUX(33, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO34 ESP32_PINMUX(34, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO35 ESP32_PINMUX(35, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO36 ESP32_PINMUX(36, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO37 ESP32_PINMUX(37, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO38 ESP32_PINMUX(38, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO39 ESP32_PINMUX(39, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO40 ESP32_PINMUX(40, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO41 ESP32_PINMUX(41, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO42 ESP32_PINMUX(42, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO43 ESP32_PINMUX(43, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO44 ESP32_PINMUX(44, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO45 ESP32_PINMUX(45, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO46 ESP32_PINMUX(46, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO47 ESP32_PINMUX(47, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +#define I2S1_O_BCK_GPIO48 ESP32_PINMUX(48, ESP_I2S1O_BCK_IN, ESP_I2S1O_BCK_OUT) + +/* I2S1_O_SD */ +#define I2S1_O_SD_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +#define I2S1_O_SD_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_I2S1O_SD_OUT) + +/* I2S1_O_WS */ +#define I2S1_O_WS_GPIO0 ESP32_PINMUX(0, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO1 ESP32_PINMUX(1, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO2 ESP32_PINMUX(2, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO3 ESP32_PINMUX(3, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO4 ESP32_PINMUX(4, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO5 ESP32_PINMUX(5, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO6 ESP32_PINMUX(6, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO7 ESP32_PINMUX(7, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO8 ESP32_PINMUX(8, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO9 ESP32_PINMUX(9, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO10 ESP32_PINMUX(10, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO11 ESP32_PINMUX(11, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO12 ESP32_PINMUX(12, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO13 ESP32_PINMUX(13, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO14 ESP32_PINMUX(14, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO15 ESP32_PINMUX(15, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO16 ESP32_PINMUX(16, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO17 ESP32_PINMUX(17, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO18 ESP32_PINMUX(18, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO19 ESP32_PINMUX(19, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO20 ESP32_PINMUX(20, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO21 ESP32_PINMUX(21, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO26 ESP32_PINMUX(26, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO27 ESP32_PINMUX(27, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO28 ESP32_PINMUX(28, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO29 ESP32_PINMUX(29, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO30 ESP32_PINMUX(30, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO31 ESP32_PINMUX(31, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO32 ESP32_PINMUX(32, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO33 ESP32_PINMUX(33, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO34 ESP32_PINMUX(34, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO35 ESP32_PINMUX(35, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO36 ESP32_PINMUX(36, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO37 ESP32_PINMUX(37, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO38 ESP32_PINMUX(38, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO39 ESP32_PINMUX(39, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO40 ESP32_PINMUX(40, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO41 ESP32_PINMUX(41, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO42 ESP32_PINMUX(42, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO43 ESP32_PINMUX(43, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO44 ESP32_PINMUX(44, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO45 ESP32_PINMUX(45, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO46 ESP32_PINMUX(46, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO47 ESP32_PINMUX(47, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +#define I2S1_O_WS_GPIO48 ESP32_PINMUX(48, ESP_I2S1O_WS_IN, ESP_I2S1O_WS_OUT) + +/* LCD_CAM_CAM_CLK */ +#define LCD_CAM_CAM_CLK_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_CAM_CLK) + +#define LCD_CAM_CAM_CLK_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_CAM_CLK) + +/* LCD_CAM_CAM_PCLK */ +#define LCD_CAM_CAM_PCLK_GPIO0 ESP32_PINMUX(0, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO1 ESP32_PINMUX(1, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO2 ESP32_PINMUX(2, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO3 ESP32_PINMUX(3, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO4 ESP32_PINMUX(4, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO5 ESP32_PINMUX(5, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO6 ESP32_PINMUX(6, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO7 ESP32_PINMUX(7, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO8 ESP32_PINMUX(8, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO9 ESP32_PINMUX(9, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO10 ESP32_PINMUX(10, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO11 ESP32_PINMUX(11, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO12 ESP32_PINMUX(12, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO13 ESP32_PINMUX(13, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO14 ESP32_PINMUX(14, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO15 ESP32_PINMUX(15, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO16 ESP32_PINMUX(16, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO17 ESP32_PINMUX(17, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO18 ESP32_PINMUX(18, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO19 ESP32_PINMUX(19, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO20 ESP32_PINMUX(20, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO21 ESP32_PINMUX(21, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO26 ESP32_PINMUX(26, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO27 ESP32_PINMUX(27, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO28 ESP32_PINMUX(28, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO29 ESP32_PINMUX(29, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO30 ESP32_PINMUX(30, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO31 ESP32_PINMUX(31, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO32 ESP32_PINMUX(32, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO33 ESP32_PINMUX(33, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO34 ESP32_PINMUX(34, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO35 ESP32_PINMUX(35, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO36 ESP32_PINMUX(36, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO37 ESP32_PINMUX(37, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO38 ESP32_PINMUX(38, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO39 ESP32_PINMUX(39, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO40 ESP32_PINMUX(40, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO41 ESP32_PINMUX(41, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO42 ESP32_PINMUX(42, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO43 ESP32_PINMUX(43, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO44 ESP32_PINMUX(44, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO45 ESP32_PINMUX(45, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO46 ESP32_PINMUX(46, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO47 ESP32_PINMUX(47, ESP_CAM_PCLK, ESP_NOSIG) + +#define LCD_CAM_CAM_PCLK_GPIO48 ESP32_PINMUX(48, ESP_CAM_PCLK, ESP_NOSIG) + +/* LCD_CAM_DATA_IN0 */ +#define LCD_CAM_DATA_IN0_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN0, ESP_NOSIG) + +#define LCD_CAM_DATA_IN0_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN0, ESP_NOSIG) + +/* LCD_CAM_DATA_IN1 */ +#define LCD_CAM_DATA_IN1_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN1, ESP_NOSIG) + +#define LCD_CAM_DATA_IN1_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN1, ESP_NOSIG) + +/* LCD_CAM_DATA_IN10 */ +#define LCD_CAM_DATA_IN10_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN10, ESP_NOSIG) + +#define LCD_CAM_DATA_IN10_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN10, ESP_NOSIG) + +/* LCD_CAM_DATA_IN11 */ +#define LCD_CAM_DATA_IN11_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN11, ESP_NOSIG) + +#define LCD_CAM_DATA_IN11_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN11, ESP_NOSIG) + +/* LCD_CAM_DATA_IN12 */ +#define LCD_CAM_DATA_IN12_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN12, ESP_NOSIG) + +#define LCD_CAM_DATA_IN12_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN12, ESP_NOSIG) + +/* LCD_CAM_DATA_IN13 */ +#define LCD_CAM_DATA_IN13_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN13, ESP_NOSIG) + +#define LCD_CAM_DATA_IN13_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN13, ESP_NOSIG) + +/* LCD_CAM_DATA_IN14 */ +#define LCD_CAM_DATA_IN14_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN14, ESP_NOSIG) + +#define LCD_CAM_DATA_IN14_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN14, ESP_NOSIG) + +/* LCD_CAM_DATA_IN15 */ +#define LCD_CAM_DATA_IN15_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN15, ESP_NOSIG) + +#define LCD_CAM_DATA_IN15_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN15, ESP_NOSIG) + +/* LCD_CAM_DATA_IN2 */ +#define LCD_CAM_DATA_IN2_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN2, ESP_NOSIG) + +#define LCD_CAM_DATA_IN2_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN2, ESP_NOSIG) + +/* LCD_CAM_DATA_IN3 */ +#define LCD_CAM_DATA_IN3_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN3, ESP_NOSIG) + +#define LCD_CAM_DATA_IN3_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN3, ESP_NOSIG) + +/* LCD_CAM_DATA_IN4 */ +#define LCD_CAM_DATA_IN4_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN4, ESP_NOSIG) + +#define LCD_CAM_DATA_IN4_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN4, ESP_NOSIG) + +/* LCD_CAM_DATA_IN5 */ +#define LCD_CAM_DATA_IN5_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN5, ESP_NOSIG) + +#define LCD_CAM_DATA_IN5_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN5, ESP_NOSIG) + +/* LCD_CAM_DATA_IN6 */ +#define LCD_CAM_DATA_IN6_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN6, ESP_NOSIG) + +#define LCD_CAM_DATA_IN6_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN6, ESP_NOSIG) + +/* LCD_CAM_DATA_IN7 */ +#define LCD_CAM_DATA_IN7_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN7, ESP_NOSIG) + +#define LCD_CAM_DATA_IN7_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN7, ESP_NOSIG) + +/* LCD_CAM_DATA_IN8 */ +#define LCD_CAM_DATA_IN8_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN8, ESP_NOSIG) + +#define LCD_CAM_DATA_IN8_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN8, ESP_NOSIG) + +/* LCD_CAM_DATA_IN9 */ +#define LCD_CAM_DATA_IN9_GPIO0 ESP32_PINMUX(0, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO1 ESP32_PINMUX(1, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO2 ESP32_PINMUX(2, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO3 ESP32_PINMUX(3, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO4 ESP32_PINMUX(4, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO5 ESP32_PINMUX(5, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO6 ESP32_PINMUX(6, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO7 ESP32_PINMUX(7, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO8 ESP32_PINMUX(8, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO9 ESP32_PINMUX(9, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO10 ESP32_PINMUX(10, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO11 ESP32_PINMUX(11, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO12 ESP32_PINMUX(12, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO13 ESP32_PINMUX(13, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO14 ESP32_PINMUX(14, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO15 ESP32_PINMUX(15, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO16 ESP32_PINMUX(16, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO17 ESP32_PINMUX(17, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO18 ESP32_PINMUX(18, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO19 ESP32_PINMUX(19, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO20 ESP32_PINMUX(20, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO21 ESP32_PINMUX(21, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO26 ESP32_PINMUX(26, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO27 ESP32_PINMUX(27, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO28 ESP32_PINMUX(28, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO29 ESP32_PINMUX(29, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO30 ESP32_PINMUX(30, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO31 ESP32_PINMUX(31, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO32 ESP32_PINMUX(32, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO33 ESP32_PINMUX(33, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO34 ESP32_PINMUX(34, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO35 ESP32_PINMUX(35, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO36 ESP32_PINMUX(36, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO37 ESP32_PINMUX(37, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO38 ESP32_PINMUX(38, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO39 ESP32_PINMUX(39, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO40 ESP32_PINMUX(40, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO41 ESP32_PINMUX(41, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO42 ESP32_PINMUX(42, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO43 ESP32_PINMUX(43, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO44 ESP32_PINMUX(44, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO45 ESP32_PINMUX(45, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO46 ESP32_PINMUX(46, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO47 ESP32_PINMUX(47, ESP_CAM_DATA_IN9, ESP_NOSIG) + +#define LCD_CAM_DATA_IN9_GPIO48 ESP32_PINMUX(48, ESP_CAM_DATA_IN9, ESP_NOSIG) + +/* LCD_CAM_DATA_OUT0 */ +#define LCD_CAM_DATA_OUT0_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +#define LCD_CAM_DATA_OUT0_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT0) + +/* LCD_CAM_DATA_OUT1 */ +#define LCD_CAM_DATA_OUT1_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +#define LCD_CAM_DATA_OUT1_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT1) + +/* LCD_CAM_DATA_OUT10 */ +#define LCD_CAM_DATA_OUT10_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +#define LCD_CAM_DATA_OUT10_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT10) + +/* LCD_CAM_DATA_OUT11 */ +#define LCD_CAM_DATA_OUT11_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +#define LCD_CAM_DATA_OUT11_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT11) + +/* LCD_CAM_DATA_OUT12 */ +#define LCD_CAM_DATA_OUT12_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +#define LCD_CAM_DATA_OUT12_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT12) + +/* LCD_CAM_DATA_OUT13 */ +#define LCD_CAM_DATA_OUT13_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +#define LCD_CAM_DATA_OUT13_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT13) + +/* LCD_CAM_DATA_OUT14 */ +#define LCD_CAM_DATA_OUT14_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +#define LCD_CAM_DATA_OUT14_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT14) + +/* LCD_CAM_DATA_OUT15 */ +#define LCD_CAM_DATA_OUT15_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +#define LCD_CAM_DATA_OUT15_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT15) + +/* LCD_CAM_DATA_OUT2 */ +#define LCD_CAM_DATA_OUT2_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +#define LCD_CAM_DATA_OUT2_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT2) + +/* LCD_CAM_DATA_OUT3 */ +#define LCD_CAM_DATA_OUT3_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +#define LCD_CAM_DATA_OUT3_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT3) + +/* LCD_CAM_DATA_OUT4 */ +#define LCD_CAM_DATA_OUT4_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +#define LCD_CAM_DATA_OUT4_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT4) + +/* LCD_CAM_DATA_OUT5 */ +#define LCD_CAM_DATA_OUT5_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +#define LCD_CAM_DATA_OUT5_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT5) + +/* LCD_CAM_DATA_OUT6 */ +#define LCD_CAM_DATA_OUT6_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +#define LCD_CAM_DATA_OUT6_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT6) + +/* LCD_CAM_DATA_OUT7 */ +#define LCD_CAM_DATA_OUT7_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +#define LCD_CAM_DATA_OUT7_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT7) + +/* LCD_CAM_DATA_OUT8 */ +#define LCD_CAM_DATA_OUT8_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +#define LCD_CAM_DATA_OUT8_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT8) + +/* LCD_CAM_DATA_OUT9 */ +#define LCD_CAM_DATA_OUT9_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +#define LCD_CAM_DATA_OUT9_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DATA_OUT9) + +/* LCD_CAM_DC */ +#define LCD_CAM_DC_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_DC) + +#define LCD_CAM_DC_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_DC) + +/* LCD_CAM_H_ENABLE_CAM */ +#define LCD_CAM_H_ENABLE_CAM_GPIO0 ESP32_PINMUX(0, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO1 ESP32_PINMUX(1, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO2 ESP32_PINMUX(2, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO3 ESP32_PINMUX(3, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO4 ESP32_PINMUX(4, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO5 ESP32_PINMUX(5, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO6 ESP32_PINMUX(6, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO7 ESP32_PINMUX(7, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO8 ESP32_PINMUX(8, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO9 ESP32_PINMUX(9, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO10 ESP32_PINMUX(10, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO11 ESP32_PINMUX(11, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO12 ESP32_PINMUX(12, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO13 ESP32_PINMUX(13, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO14 ESP32_PINMUX(14, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO15 ESP32_PINMUX(15, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO16 ESP32_PINMUX(16, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO17 ESP32_PINMUX(17, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO18 ESP32_PINMUX(18, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO19 ESP32_PINMUX(19, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO20 ESP32_PINMUX(20, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO21 ESP32_PINMUX(21, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO26 ESP32_PINMUX(26, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO27 ESP32_PINMUX(27, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO28 ESP32_PINMUX(28, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO29 ESP32_PINMUX(29, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO30 ESP32_PINMUX(30, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO31 ESP32_PINMUX(31, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO32 ESP32_PINMUX(32, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO33 ESP32_PINMUX(33, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO34 ESP32_PINMUX(34, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO35 ESP32_PINMUX(35, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO36 ESP32_PINMUX(36, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO37 ESP32_PINMUX(37, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO38 ESP32_PINMUX(38, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO39 ESP32_PINMUX(39, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO40 ESP32_PINMUX(40, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO41 ESP32_PINMUX(41, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO42 ESP32_PINMUX(42, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO43 ESP32_PINMUX(43, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO44 ESP32_PINMUX(44, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO45 ESP32_PINMUX(45, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO46 ESP32_PINMUX(46, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO47 ESP32_PINMUX(47, ESP_CAM_H_ENABLE, ESP_NOSIG) + +#define LCD_CAM_H_ENABLE_CAM_GPIO48 ESP32_PINMUX(48, ESP_CAM_H_ENABLE, ESP_NOSIG) + +/* LCD_CAM_H_ENABLE_LCD */ +#define LCD_CAM_H_ENABLE_LCD_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_H_ENABLE) + +#define LCD_CAM_H_ENABLE_LCD_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_H_ENABLE) + +/* LCD_CAM_H_SYNC_CAM */ +#define LCD_CAM_H_SYNC_CAM_GPIO0 ESP32_PINMUX(0, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO1 ESP32_PINMUX(1, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO2 ESP32_PINMUX(2, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO3 ESP32_PINMUX(3, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO4 ESP32_PINMUX(4, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO5 ESP32_PINMUX(5, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO6 ESP32_PINMUX(6, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO7 ESP32_PINMUX(7, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO8 ESP32_PINMUX(8, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO9 ESP32_PINMUX(9, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO10 ESP32_PINMUX(10, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO11 ESP32_PINMUX(11, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO12 ESP32_PINMUX(12, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO13 ESP32_PINMUX(13, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO14 ESP32_PINMUX(14, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO15 ESP32_PINMUX(15, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO16 ESP32_PINMUX(16, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO17 ESP32_PINMUX(17, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO18 ESP32_PINMUX(18, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO19 ESP32_PINMUX(19, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO20 ESP32_PINMUX(20, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO21 ESP32_PINMUX(21, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO26 ESP32_PINMUX(26, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO27 ESP32_PINMUX(27, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO28 ESP32_PINMUX(28, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO29 ESP32_PINMUX(29, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO30 ESP32_PINMUX(30, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO31 ESP32_PINMUX(31, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO32 ESP32_PINMUX(32, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO33 ESP32_PINMUX(33, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO34 ESP32_PINMUX(34, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO35 ESP32_PINMUX(35, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO36 ESP32_PINMUX(36, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO37 ESP32_PINMUX(37, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO38 ESP32_PINMUX(38, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO39 ESP32_PINMUX(39, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO40 ESP32_PINMUX(40, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO41 ESP32_PINMUX(41, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO42 ESP32_PINMUX(42, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO43 ESP32_PINMUX(43, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO44 ESP32_PINMUX(44, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO45 ESP32_PINMUX(45, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO46 ESP32_PINMUX(46, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO47 ESP32_PINMUX(47, ESP_CAM_H_SYNC, ESP_NOSIG) + +#define LCD_CAM_H_SYNC_CAM_GPIO48 ESP32_PINMUX(48, ESP_CAM_H_SYNC, ESP_NOSIG) + +/* LCD_CAM_H_SYNC_LCD */ +#define LCD_CAM_H_SYNC_LCD_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_H_SYNC) + +#define LCD_CAM_H_SYNC_LCD_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_H_SYNC) + +/* LCD_CAM_LCD_CLK */ +#define LCD_CAM_LCD_CLK_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_PCLK) + +#define LCD_CAM_LCD_CLK_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_PCLK) + +/* LCD_CAM_V_SYNC_CAM */ +#define LCD_CAM_V_SYNC_CAM_GPIO0 ESP32_PINMUX(0, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO1 ESP32_PINMUX(1, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO2 ESP32_PINMUX(2, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO3 ESP32_PINMUX(3, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO4 ESP32_PINMUX(4, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO5 ESP32_PINMUX(5, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO6 ESP32_PINMUX(6, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO7 ESP32_PINMUX(7, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO8 ESP32_PINMUX(8, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO9 ESP32_PINMUX(9, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO10 ESP32_PINMUX(10, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO11 ESP32_PINMUX(11, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO12 ESP32_PINMUX(12, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO13 ESP32_PINMUX(13, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO14 ESP32_PINMUX(14, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO15 ESP32_PINMUX(15, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO16 ESP32_PINMUX(16, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO17 ESP32_PINMUX(17, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO18 ESP32_PINMUX(18, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO19 ESP32_PINMUX(19, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO20 ESP32_PINMUX(20, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO21 ESP32_PINMUX(21, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO26 ESP32_PINMUX(26, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO27 ESP32_PINMUX(27, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO28 ESP32_PINMUX(28, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO29 ESP32_PINMUX(29, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO30 ESP32_PINMUX(30, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO31 ESP32_PINMUX(31, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO32 ESP32_PINMUX(32, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO33 ESP32_PINMUX(33, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO34 ESP32_PINMUX(34, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO35 ESP32_PINMUX(35, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO36 ESP32_PINMUX(36, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO37 ESP32_PINMUX(37, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO38 ESP32_PINMUX(38, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO39 ESP32_PINMUX(39, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO40 ESP32_PINMUX(40, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO41 ESP32_PINMUX(41, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO42 ESP32_PINMUX(42, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO43 ESP32_PINMUX(43, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO44 ESP32_PINMUX(44, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO45 ESP32_PINMUX(45, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO46 ESP32_PINMUX(46, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO47 ESP32_PINMUX(47, ESP_CAM_V_SYNC, ESP_NOSIG) + +#define LCD_CAM_V_SYNC_CAM_GPIO48 ESP32_PINMUX(48, ESP_CAM_V_SYNC, ESP_NOSIG) + +/* LCD_CAM_V_SYNC_LCD */ +#define LCD_CAM_V_SYNC_LCD_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LCD_V_SYNC) + +#define LCD_CAM_V_SYNC_LCD_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LCD_V_SYNC) /* LEDC_CH0 */ -#define LEDC_CH0_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define LEDC_CH0_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +#define LEDC_CH0_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) + +/* LEDC_CH1 */ +#define LEDC_CH1_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +#define LEDC_CH1_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) + +/* LEDC_CH2 */ +#define LEDC_CH2_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +#define LEDC_CH2_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) + +/* LEDC_CH3 */ +#define LEDC_CH3_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +#define LEDC_CH3_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) + +/* LEDC_CH4 */ +#define LEDC_CH4_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +#define LEDC_CH4_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) + +/* LEDC_CH5 */ +#define LEDC_CH5_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +#define LEDC_CH5_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) + +/* LEDC_CH6 */ +#define LEDC_CH6_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +#define LEDC_CH6_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) + +/* LEDC_CH7 */ +#define LEDC_CH7_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +#define LEDC_CH7_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) + +/* MCPWM0_CAP0 */ +#define MCPWM0_CAP0_GPIO0 ESP32_PINMUX(0, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO1 ESP32_PINMUX(1, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO2 ESP32_PINMUX(2, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO3 ESP32_PINMUX(3, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO4 ESP32_PINMUX(4, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO5 ESP32_PINMUX(5, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO6 ESP32_PINMUX(6, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO7 ESP32_PINMUX(7, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO8 ESP32_PINMUX(8, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO9 ESP32_PINMUX(9, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO10 ESP32_PINMUX(10, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO11 ESP32_PINMUX(11, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO12 ESP32_PINMUX(12, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO13 ESP32_PINMUX(13, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO14 ESP32_PINMUX(14, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO15 ESP32_PINMUX(15, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO16 ESP32_PINMUX(16, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO17 ESP32_PINMUX(17, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO18 ESP32_PINMUX(18, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO19 ESP32_PINMUX(19, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO20 ESP32_PINMUX(20, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO21 ESP32_PINMUX(21, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO26 ESP32_PINMUX(26, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO27 ESP32_PINMUX(27, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO28 ESP32_PINMUX(28, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO29 ESP32_PINMUX(29, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO30 ESP32_PINMUX(30, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO31 ESP32_PINMUX(31, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO32 ESP32_PINMUX(32, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO33 ESP32_PINMUX(33, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO34 ESP32_PINMUX(34, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO35 ESP32_PINMUX(35, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO36 ESP32_PINMUX(36, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO37 ESP32_PINMUX(37, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO38 ESP32_PINMUX(38, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO39 ESP32_PINMUX(39, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO40 ESP32_PINMUX(40, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO41 ESP32_PINMUX(41, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO42 ESP32_PINMUX(42, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO43 ESP32_PINMUX(43, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO44 ESP32_PINMUX(44, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO45 ESP32_PINMUX(45, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO46 ESP32_PINMUX(46, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO47 ESP32_PINMUX(47, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +#define MCPWM0_CAP0_GPIO48 ESP32_PINMUX(48, ESP_PWM0_CAP0_IN, ESP_NOSIG) + +/* MCPWM0_CAP1 */ +#define MCPWM0_CAP1_GPIO0 ESP32_PINMUX(0, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO1 ESP32_PINMUX(1, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO2 ESP32_PINMUX(2, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO3 ESP32_PINMUX(3, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO4 ESP32_PINMUX(4, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO5 ESP32_PINMUX(5, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO6 ESP32_PINMUX(6, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO7 ESP32_PINMUX(7, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO8 ESP32_PINMUX(8, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO9 ESP32_PINMUX(9, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO10 ESP32_PINMUX(10, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO11 ESP32_PINMUX(11, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO12 ESP32_PINMUX(12, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO13 ESP32_PINMUX(13, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO14 ESP32_PINMUX(14, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO15 ESP32_PINMUX(15, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO16 ESP32_PINMUX(16, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO17 ESP32_PINMUX(17, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO18 ESP32_PINMUX(18, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO19 ESP32_PINMUX(19, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO20 ESP32_PINMUX(20, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO21 ESP32_PINMUX(21, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO26 ESP32_PINMUX(26, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO27 ESP32_PINMUX(27, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO28 ESP32_PINMUX(28, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO29 ESP32_PINMUX(29, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO30 ESP32_PINMUX(30, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO31 ESP32_PINMUX(31, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO32 ESP32_PINMUX(32, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO33 ESP32_PINMUX(33, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO34 ESP32_PINMUX(34, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO35 ESP32_PINMUX(35, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO36 ESP32_PINMUX(36, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO37 ESP32_PINMUX(37, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO38 ESP32_PINMUX(38, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO39 ESP32_PINMUX(39, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO40 ESP32_PINMUX(40, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO41 ESP32_PINMUX(41, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO42 ESP32_PINMUX(42, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO43 ESP32_PINMUX(43, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO44 ESP32_PINMUX(44, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO45 ESP32_PINMUX(45, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO46 ESP32_PINMUX(46, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO47 ESP32_PINMUX(47, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +#define MCPWM0_CAP1_GPIO48 ESP32_PINMUX(48, ESP_PWM0_CAP1_IN, ESP_NOSIG) + +/* MCPWM0_CAP2 */ +#define MCPWM0_CAP2_GPIO0 ESP32_PINMUX(0, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO1 ESP32_PINMUX(1, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO2 ESP32_PINMUX(2, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO3 ESP32_PINMUX(3, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO4 ESP32_PINMUX(4, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO5 ESP32_PINMUX(5, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO6 ESP32_PINMUX(6, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO7 ESP32_PINMUX(7, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO8 ESP32_PINMUX(8, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO9 ESP32_PINMUX(9, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO10 ESP32_PINMUX(10, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO11 ESP32_PINMUX(11, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO12 ESP32_PINMUX(12, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO13 ESP32_PINMUX(13, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO14 ESP32_PINMUX(14, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO15 ESP32_PINMUX(15, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO16 ESP32_PINMUX(16, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO17 ESP32_PINMUX(17, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO18 ESP32_PINMUX(18, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO19 ESP32_PINMUX(19, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO20 ESP32_PINMUX(20, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO21 ESP32_PINMUX(21, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO26 ESP32_PINMUX(26, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO27 ESP32_PINMUX(27, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO28 ESP32_PINMUX(28, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO29 ESP32_PINMUX(29, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO30 ESP32_PINMUX(30, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO31 ESP32_PINMUX(31, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO32 ESP32_PINMUX(32, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO33 ESP32_PINMUX(33, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO34 ESP32_PINMUX(34, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO35 ESP32_PINMUX(35, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO36 ESP32_PINMUX(36, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO37 ESP32_PINMUX(37, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO38 ESP32_PINMUX(38, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO39 ESP32_PINMUX(39, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO40 ESP32_PINMUX(40, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO41 ESP32_PINMUX(41, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO42 ESP32_PINMUX(42, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO43 ESP32_PINMUX(43, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO44 ESP32_PINMUX(44, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO45 ESP32_PINMUX(45, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO46 ESP32_PINMUX(46, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO47 ESP32_PINMUX(47, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +#define MCPWM0_CAP2_GPIO48 ESP32_PINMUX(48, ESP_PWM0_CAP2_IN, ESP_NOSIG) + +/* MCPWM0_FAULT0 */ +#define MCPWM0_FAULT0_GPIO0 ESP32_PINMUX(0, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO1 ESP32_PINMUX(1, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO2 ESP32_PINMUX(2, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO3 ESP32_PINMUX(3, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO4 ESP32_PINMUX(4, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO5 ESP32_PINMUX(5, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO6 ESP32_PINMUX(6, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO7 ESP32_PINMUX(7, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO8 ESP32_PINMUX(8, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO9 ESP32_PINMUX(9, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO10 ESP32_PINMUX(10, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO11 ESP32_PINMUX(11, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO12 ESP32_PINMUX(12, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO13 ESP32_PINMUX(13, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO14 ESP32_PINMUX(14, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO15 ESP32_PINMUX(15, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO16 ESP32_PINMUX(16, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO17 ESP32_PINMUX(17, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO18 ESP32_PINMUX(18, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO19 ESP32_PINMUX(19, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO20 ESP32_PINMUX(20, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO21 ESP32_PINMUX(21, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO26 ESP32_PINMUX(26, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO27 ESP32_PINMUX(27, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO28 ESP32_PINMUX(28, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO29 ESP32_PINMUX(29, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO30 ESP32_PINMUX(30, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO31 ESP32_PINMUX(31, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO32 ESP32_PINMUX(32, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO33 ESP32_PINMUX(33, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO34 ESP32_PINMUX(34, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO35 ESP32_PINMUX(35, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO36 ESP32_PINMUX(36, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO37 ESP32_PINMUX(37, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO38 ESP32_PINMUX(38, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO39 ESP32_PINMUX(39, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO40 ESP32_PINMUX(40, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO41 ESP32_PINMUX(41, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO42 ESP32_PINMUX(42, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO43 ESP32_PINMUX(43, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO44 ESP32_PINMUX(44, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO45 ESP32_PINMUX(45, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO46 ESP32_PINMUX(46, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO47 ESP32_PINMUX(47, ESP_PWM0_F0_IN, ESP_NOSIG) + +#define MCPWM0_FAULT0_GPIO48 ESP32_PINMUX(48, ESP_PWM0_F0_IN, ESP_NOSIG) + +/* MCPWM0_FAULT1 */ +#define MCPWM0_FAULT1_GPIO0 ESP32_PINMUX(0, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO1 ESP32_PINMUX(1, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO2 ESP32_PINMUX(2, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO3 ESP32_PINMUX(3, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO4 ESP32_PINMUX(4, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO5 ESP32_PINMUX(5, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO6 ESP32_PINMUX(6, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO7 ESP32_PINMUX(7, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO8 ESP32_PINMUX(8, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO9 ESP32_PINMUX(9, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO10 ESP32_PINMUX(10, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO11 ESP32_PINMUX(11, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO12 ESP32_PINMUX(12, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO13 ESP32_PINMUX(13, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO14 ESP32_PINMUX(14, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO15 ESP32_PINMUX(15, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO16 ESP32_PINMUX(16, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO17 ESP32_PINMUX(17, ESP_PWM0_F1_IN, ESP_NOSIG) + +#define MCPWM0_FAULT1_GPIO18 ESP32_PINMUX(18, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO19 ESP32_PINMUX(19, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO20 ESP32_PINMUX(20, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO21 ESP32_PINMUX(21, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO26 ESP32_PINMUX(26, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO27 ESP32_PINMUX(27, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO28 ESP32_PINMUX(28, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO29 ESP32_PINMUX(29, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO30 ESP32_PINMUX(30, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO31 ESP32_PINMUX(31, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO32 ESP32_PINMUX(32, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO33 ESP32_PINMUX(33, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO34 ESP32_PINMUX(34, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO35 ESP32_PINMUX(35, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO36 ESP32_PINMUX(36, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO37 ESP32_PINMUX(37, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO38 ESP32_PINMUX(38, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO39 ESP32_PINMUX(39, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO40 ESP32_PINMUX(40, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO41 ESP32_PINMUX(41, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO42 ESP32_PINMUX(42, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO43 ESP32_PINMUX(43, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO44 ESP32_PINMUX(44, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO45 ESP32_PINMUX(45, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO46 ESP32_PINMUX(46, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO47 ESP32_PINMUX(47, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT1_GPIO48 ESP32_PINMUX(48, ESP_PWM0_F1_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +/* MCPWM0_FAULT2 */ +#define MCPWM0_FAULT2_GPIO0 ESP32_PINMUX(0, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO1 ESP32_PINMUX(1, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO2 ESP32_PINMUX(2, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO3 ESP32_PINMUX(3, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO4 ESP32_PINMUX(4, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO5 ESP32_PINMUX(5, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO6 ESP32_PINMUX(6, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO7 ESP32_PINMUX(7, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO8 ESP32_PINMUX(8, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO9 ESP32_PINMUX(9, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO10 ESP32_PINMUX(10, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO11 ESP32_PINMUX(11, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO12 ESP32_PINMUX(12, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO13 ESP32_PINMUX(13, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO14 ESP32_PINMUX(14, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO15 ESP32_PINMUX(15, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO16 ESP32_PINMUX(16, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH0_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT0) +#define MCPWM0_FAULT2_GPIO17 ESP32_PINMUX(17, ESP_PWM0_F2_IN, ESP_NOSIG) -/* LEDC_CH1 */ -#define LEDC_CH1_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO18 ESP32_PINMUX(18, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO19 ESP32_PINMUX(19, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO20 ESP32_PINMUX(20, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO21 ESP32_PINMUX(21, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO26 ESP32_PINMUX(26, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO27 ESP32_PINMUX(27, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO28 ESP32_PINMUX(28, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO29 ESP32_PINMUX(29, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO30 ESP32_PINMUX(30, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO31 ESP32_PINMUX(31, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO32 ESP32_PINMUX(32, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO33 ESP32_PINMUX(33, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO34 ESP32_PINMUX(34, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO35 ESP32_PINMUX(35, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO36 ESP32_PINMUX(36, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO37 ESP32_PINMUX(37, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO38 ESP32_PINMUX(38, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO39 ESP32_PINMUX(39, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO40 ESP32_PINMUX(40, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO41 ESP32_PINMUX(41, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO42 ESP32_PINMUX(42, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO43 ESP32_PINMUX(43, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO44 ESP32_PINMUX(44, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO45 ESP32_PINMUX(45, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO46 ESP32_PINMUX(46, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO47 ESP32_PINMUX(47, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_FAULT2_GPIO48 ESP32_PINMUX(48, ESP_PWM0_F2_IN, ESP_NOSIG) -#define LEDC_CH1_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +/* MCPWM0_OUT0A */ +#define MCPWM0_OUT0A_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH1_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT1) +#define MCPWM0_OUT0A_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM0_OUT0A) -/* LEDC_CH2 */ -#define LEDC_CH2_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0A_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM0_OUT0A) -#define LEDC_CH2_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +/* MCPWM0_OUT0B */ +#define MCPWM0_OUT0B_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH2_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT2) +#define MCPWM0_OUT0B_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM0_OUT0B) -/* LEDC_CH3 */ -#define LEDC_CH3_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT0B_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM0_OUT0B) -#define LEDC_CH3_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +/* MCPWM0_OUT1A */ +#define MCPWM0_OUT1A_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH3_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT3) +#define MCPWM0_OUT1A_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM0_OUT1A) -/* LEDC_CH4 */ -#define LEDC_CH4_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1A_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM0_OUT1A) -#define LEDC_CH4_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +/* MCPWM0_OUT1B */ +#define MCPWM0_OUT1B_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH4_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT4) +#define MCPWM0_OUT1B_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM0_OUT1B) -/* LEDC_CH5 */ -#define LEDC_CH5_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT1B_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM0_OUT1B) -#define LEDC_CH5_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +/* MCPWM0_OUT2A */ +#define MCPWM0_OUT2A_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH5_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT5) +#define MCPWM0_OUT2A_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM0_OUT2A) -/* LEDC_CH6 */ -#define LEDC_CH6_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2A_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM0_OUT2A) -#define LEDC_CH6_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +/* MCPWM0_OUT2B */ +#define MCPWM0_OUT2B_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH6_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT6) +#define MCPWM0_OUT2B_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM0_OUT2B) -/* LEDC_CH7 */ -#define LEDC_CH7_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_OUT2B_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM0_OUT2B) -#define LEDC_CH7_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +/* MCPWM0_SYNC0 */ +#define MCPWM0_SYNC0_GPIO0 ESP32_PINMUX(0, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO1 ESP32_PINMUX(1, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO2 ESP32_PINMUX(2, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO3 ESP32_PINMUX(3, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO4 ESP32_PINMUX(4, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO5 ESP32_PINMUX(5, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO6 ESP32_PINMUX(6, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO7 ESP32_PINMUX(7, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO8 ESP32_PINMUX(8, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO9 ESP32_PINMUX(9, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO10 ESP32_PINMUX(10, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO11 ESP32_PINMUX(11, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO12 ESP32_PINMUX(12, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO13 ESP32_PINMUX(13, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO14 ESP32_PINMUX(14, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO15 ESP32_PINMUX(15, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO16 ESP32_PINMUX(16, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define LEDC_CH7_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_LEDC_LS_SIG_OUT7) +#define MCPWM0_SYNC0_GPIO17 ESP32_PINMUX(17, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -/* MCPWM0_CAP0 */ -#define MCPWM0_CAP0_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO18 ESP32_PINMUX(18, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO19 ESP32_PINMUX(19, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO20 ESP32_PINMUX(20, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO21 ESP32_PINMUX(21, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO26 ESP32_PINMUX(26, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO27 ESP32_PINMUX(27, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO28 ESP32_PINMUX(28, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO29 ESP32_PINMUX(29, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO30 ESP32_PINMUX(30, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO31 ESP32_PINMUX(31, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO32 ESP32_PINMUX(32, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO33 ESP32_PINMUX(33, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO34 ESP32_PINMUX(34, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO35 ESP32_PINMUX(35, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO36 ESP32_PINMUX(36, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO37 ESP32_PINMUX(37, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO38 ESP32_PINMUX(38, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO39 ESP32_PINMUX(39, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO40 ESP32_PINMUX(40, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO41 ESP32_PINMUX(41, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO42 ESP32_PINMUX(42, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO43 ESP32_PINMUX(43, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO44 ESP32_PINMUX(44, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO45 ESP32_PINMUX(45, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO46 ESP32_PINMUX(46, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO47 ESP32_PINMUX(47, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC0_GPIO48 ESP32_PINMUX(48, ESP_PWM0_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM0_CAP0_IN, ESP_NOSIG) +/* MCPWM0_SYNC1 */ +#define MCPWM0_SYNC1_GPIO0 ESP32_PINMUX(0, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO1 ESP32_PINMUX(1, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO2 ESP32_PINMUX(2, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO3 ESP32_PINMUX(3, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO4 ESP32_PINMUX(4, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO5 ESP32_PINMUX(5, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO6 ESP32_PINMUX(6, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO7 ESP32_PINMUX(7, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO8 ESP32_PINMUX(8, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO9 ESP32_PINMUX(9, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO10 ESP32_PINMUX(10, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO11 ESP32_PINMUX(11, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO12 ESP32_PINMUX(12, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO13 ESP32_PINMUX(13, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO14 ESP32_PINMUX(14, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO15 ESP32_PINMUX(15, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO16 ESP32_PINMUX(16, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP0_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM0_CAP0_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO17 ESP32_PINMUX(17, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -/* MCPWM0_CAP1 */ -#define MCPWM0_CAP1_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO18 ESP32_PINMUX(18, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO19 ESP32_PINMUX(19, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO20 ESP32_PINMUX(20, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO21 ESP32_PINMUX(21, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO26 ESP32_PINMUX(26, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO27 ESP32_PINMUX(27, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO28 ESP32_PINMUX(28, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO29 ESP32_PINMUX(29, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO30 ESP32_PINMUX(30, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO31 ESP32_PINMUX(31, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO32 ESP32_PINMUX(32, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO33 ESP32_PINMUX(33, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO34 ESP32_PINMUX(34, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO35 ESP32_PINMUX(35, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO36 ESP32_PINMUX(36, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO37 ESP32_PINMUX(37, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO38 ESP32_PINMUX(38, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO39 ESP32_PINMUX(39, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO40 ESP32_PINMUX(40, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO41 ESP32_PINMUX(41, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO42 ESP32_PINMUX(42, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO43 ESP32_PINMUX(43, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO44 ESP32_PINMUX(44, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO45 ESP32_PINMUX(45, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO46 ESP32_PINMUX(46, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO47 ESP32_PINMUX(47, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC1_GPIO48 ESP32_PINMUX(48, ESP_PWM0_SYNC1_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM0_CAP1_IN, ESP_NOSIG) +/* MCPWM0_SYNC2 */ +#define MCPWM0_SYNC2_GPIO0 ESP32_PINMUX(0, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO1 ESP32_PINMUX(1, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO2 ESP32_PINMUX(2, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO3 ESP32_PINMUX(3, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO4 ESP32_PINMUX(4, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO5 ESP32_PINMUX(5, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO6 ESP32_PINMUX(6, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO7 ESP32_PINMUX(7, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO8 ESP32_PINMUX(8, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO9 ESP32_PINMUX(9, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO10 ESP32_PINMUX(10, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO11 ESP32_PINMUX(11, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO12 ESP32_PINMUX(12, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO13 ESP32_PINMUX(13, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO14 ESP32_PINMUX(14, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO15 ESP32_PINMUX(15, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO16 ESP32_PINMUX(16, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP1_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM0_CAP1_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO17 ESP32_PINMUX(17, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -/* MCPWM0_CAP2 */ -#define MCPWM0_CAP2_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO18 ESP32_PINMUX(18, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO19 ESP32_PINMUX(19, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO20 ESP32_PINMUX(20, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO21 ESP32_PINMUX(21, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO26 ESP32_PINMUX(26, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO27 ESP32_PINMUX(27, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO28 ESP32_PINMUX(28, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO29 ESP32_PINMUX(29, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO30 ESP32_PINMUX(30, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO31 ESP32_PINMUX(31, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO32 ESP32_PINMUX(32, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO33 ESP32_PINMUX(33, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO34 ESP32_PINMUX(34, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO35 ESP32_PINMUX(35, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO36 ESP32_PINMUX(36, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO37 ESP32_PINMUX(37, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO38 ESP32_PINMUX(38, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO39 ESP32_PINMUX(39, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO40 ESP32_PINMUX(40, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO41 ESP32_PINMUX(41, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO42 ESP32_PINMUX(42, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO43 ESP32_PINMUX(43, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO44 ESP32_PINMUX(44, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO45 ESP32_PINMUX(45, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO46 ESP32_PINMUX(46, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO47 ESP32_PINMUX(47, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM0_SYNC2_GPIO48 ESP32_PINMUX(48, ESP_PWM0_SYNC2_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM0_CAP2_IN, ESP_NOSIG) +/* MCPWM1_CAP0 */ +#define MCPWM1_CAP0_GPIO0 ESP32_PINMUX(0, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO1 ESP32_PINMUX(1, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO2 ESP32_PINMUX(2, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO3 ESP32_PINMUX(3, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO4 ESP32_PINMUX(4, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO5 ESP32_PINMUX(5, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO6 ESP32_PINMUX(6, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO7 ESP32_PINMUX(7, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO8 ESP32_PINMUX(8, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO9 ESP32_PINMUX(9, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO10 ESP32_PINMUX(10, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO11 ESP32_PINMUX(11, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO12 ESP32_PINMUX(12, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO13 ESP32_PINMUX(13, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO14 ESP32_PINMUX(14, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO15 ESP32_PINMUX(15, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO16 ESP32_PINMUX(16, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_CAP2_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM0_CAP2_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO17 ESP32_PINMUX(17, ESP_PWM1_CAP0_IN, ESP_NOSIG) -/* MCPWM0_FAULT0 */ -#define MCPWM0_FAULT0_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO18 ESP32_PINMUX(18, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO19 ESP32_PINMUX(19, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO20 ESP32_PINMUX(20, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO21 ESP32_PINMUX(21, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO26 ESP32_PINMUX(26, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO27 ESP32_PINMUX(27, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO28 ESP32_PINMUX(28, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO29 ESP32_PINMUX(29, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO30 ESP32_PINMUX(30, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO31 ESP32_PINMUX(31, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO32 ESP32_PINMUX(32, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO33 ESP32_PINMUX(33, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO34 ESP32_PINMUX(34, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO35 ESP32_PINMUX(35, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO36 ESP32_PINMUX(36, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO37 ESP32_PINMUX(37, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO38 ESP32_PINMUX(38, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO39 ESP32_PINMUX(39, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO40 ESP32_PINMUX(40, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO41 ESP32_PINMUX(41, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO42 ESP32_PINMUX(42, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO43 ESP32_PINMUX(43, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO44 ESP32_PINMUX(44, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO45 ESP32_PINMUX(45, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO46 ESP32_PINMUX(46, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO47 ESP32_PINMUX(47, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP0_GPIO48 ESP32_PINMUX(48, ESP_PWM1_CAP0_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM0_F0_IN, ESP_NOSIG) +/* MCPWM1_CAP1 */ +#define MCPWM1_CAP1_GPIO0 ESP32_PINMUX(0, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO1 ESP32_PINMUX(1, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO2 ESP32_PINMUX(2, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO3 ESP32_PINMUX(3, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO4 ESP32_PINMUX(4, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO5 ESP32_PINMUX(5, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO6 ESP32_PINMUX(6, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO7 ESP32_PINMUX(7, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO8 ESP32_PINMUX(8, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO9 ESP32_PINMUX(9, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO10 ESP32_PINMUX(10, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO11 ESP32_PINMUX(11, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO12 ESP32_PINMUX(12, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO13 ESP32_PINMUX(13, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO14 ESP32_PINMUX(14, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO15 ESP32_PINMUX(15, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO16 ESP32_PINMUX(16, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT0_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM0_F0_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO17 ESP32_PINMUX(17, ESP_PWM1_CAP1_IN, ESP_NOSIG) -/* MCPWM0_FAULT1 */ -#define MCPWM0_FAULT1_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO18 ESP32_PINMUX(18, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO19 ESP32_PINMUX(19, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO20 ESP32_PINMUX(20, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO21 ESP32_PINMUX(21, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO26 ESP32_PINMUX(26, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO27 ESP32_PINMUX(27, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO28 ESP32_PINMUX(28, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO29 ESP32_PINMUX(29, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO30 ESP32_PINMUX(30, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO31 ESP32_PINMUX(31, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO32 ESP32_PINMUX(32, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO33 ESP32_PINMUX(33, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO34 ESP32_PINMUX(34, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO35 ESP32_PINMUX(35, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO36 ESP32_PINMUX(36, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO37 ESP32_PINMUX(37, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO38 ESP32_PINMUX(38, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO39 ESP32_PINMUX(39, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO40 ESP32_PINMUX(40, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO41 ESP32_PINMUX(41, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO42 ESP32_PINMUX(42, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO43 ESP32_PINMUX(43, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO44 ESP32_PINMUX(44, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO45 ESP32_PINMUX(45, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO46 ESP32_PINMUX(46, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO47 ESP32_PINMUX(47, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP1_GPIO48 ESP32_PINMUX(48, ESP_PWM1_CAP1_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM0_F1_IN, ESP_NOSIG) +/* MCPWM1_CAP2 */ +#define MCPWM1_CAP2_GPIO0 ESP32_PINMUX(0, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO1 ESP32_PINMUX(1, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO2 ESP32_PINMUX(2, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO3 ESP32_PINMUX(3, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO4 ESP32_PINMUX(4, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO5 ESP32_PINMUX(5, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO6 ESP32_PINMUX(6, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO7 ESP32_PINMUX(7, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO8 ESP32_PINMUX(8, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO9 ESP32_PINMUX(9, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO10 ESP32_PINMUX(10, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO11 ESP32_PINMUX(11, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO12 ESP32_PINMUX(12, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO13 ESP32_PINMUX(13, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO14 ESP32_PINMUX(14, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO15 ESP32_PINMUX(15, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO16 ESP32_PINMUX(16, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT1_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM0_F1_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO17 ESP32_PINMUX(17, ESP_PWM1_CAP2_IN, ESP_NOSIG) -/* MCPWM0_FAULT2 */ -#define MCPWM0_FAULT2_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO18 ESP32_PINMUX(18, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO19 ESP32_PINMUX(19, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO20 ESP32_PINMUX(20, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO21 ESP32_PINMUX(21, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO26 ESP32_PINMUX(26, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO27 ESP32_PINMUX(27, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO28 ESP32_PINMUX(28, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO29 ESP32_PINMUX(29, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO30 ESP32_PINMUX(30, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO31 ESP32_PINMUX(31, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO32 ESP32_PINMUX(32, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO33 ESP32_PINMUX(33, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO34 ESP32_PINMUX(34, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO35 ESP32_PINMUX(35, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO36 ESP32_PINMUX(36, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO37 ESP32_PINMUX(37, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO38 ESP32_PINMUX(38, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO39 ESP32_PINMUX(39, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO40 ESP32_PINMUX(40, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO41 ESP32_PINMUX(41, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO42 ESP32_PINMUX(42, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO43 ESP32_PINMUX(43, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO44 ESP32_PINMUX(44, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO45 ESP32_PINMUX(45, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO46 ESP32_PINMUX(46, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO47 ESP32_PINMUX(47, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_CAP2_GPIO48 ESP32_PINMUX(48, ESP_PWM1_CAP2_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM0_F2_IN, ESP_NOSIG) +/* MCPWM1_FAULT0 */ +#define MCPWM1_FAULT0_GPIO0 ESP32_PINMUX(0, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO1 ESP32_PINMUX(1, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO2 ESP32_PINMUX(2, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO3 ESP32_PINMUX(3, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO4 ESP32_PINMUX(4, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO5 ESP32_PINMUX(5, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO6 ESP32_PINMUX(6, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO7 ESP32_PINMUX(7, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO8 ESP32_PINMUX(8, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO9 ESP32_PINMUX(9, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO10 ESP32_PINMUX(10, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO11 ESP32_PINMUX(11, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO12 ESP32_PINMUX(12, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO13 ESP32_PINMUX(13, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO14 ESP32_PINMUX(14, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO15 ESP32_PINMUX(15, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO16 ESP32_PINMUX(16, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_FAULT2_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM0_F2_IN, ESP_NOSIG) +#define MCPWM1_FAULT0_GPIO17 ESP32_PINMUX(17, ESP_PWM1_F0_IN, ESP_NOSIG) -/* MCPWM0_OUT0A */ -#define MCPWM0_OUT0A_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO18 ESP32_PINMUX(18, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO19 ESP32_PINMUX(19, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO20 ESP32_PINMUX(20, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO21 ESP32_PINMUX(21, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO26 ESP32_PINMUX(26, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO27 ESP32_PINMUX(27, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO28 ESP32_PINMUX(28, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO29 ESP32_PINMUX(29, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO30 ESP32_PINMUX(30, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO31 ESP32_PINMUX(31, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO32 ESP32_PINMUX(32, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO33 ESP32_PINMUX(33, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO34 ESP32_PINMUX(34, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO35 ESP32_PINMUX(35, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO36 ESP32_PINMUX(36, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO37 ESP32_PINMUX(37, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO38 ESP32_PINMUX(38, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO39 ESP32_PINMUX(39, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO40 ESP32_PINMUX(40, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO41 ESP32_PINMUX(41, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO42 ESP32_PINMUX(42, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO43 ESP32_PINMUX(43, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO44 ESP32_PINMUX(44, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO45 ESP32_PINMUX(45, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO46 ESP32_PINMUX(46, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO47 ESP32_PINMUX(47, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT0_GPIO48 ESP32_PINMUX(48, ESP_PWM1_F0_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM0_OUT0A) +/* MCPWM1_FAULT1 */ +#define MCPWM1_FAULT1_GPIO0 ESP32_PINMUX(0, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO1 ESP32_PINMUX(1, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO2 ESP32_PINMUX(2, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO3 ESP32_PINMUX(3, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO4 ESP32_PINMUX(4, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO5 ESP32_PINMUX(5, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO6 ESP32_PINMUX(6, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO7 ESP32_PINMUX(7, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO8 ESP32_PINMUX(8, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO9 ESP32_PINMUX(9, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO10 ESP32_PINMUX(10, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO11 ESP32_PINMUX(11, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO12 ESP32_PINMUX(12, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO13 ESP32_PINMUX(13, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO14 ESP32_PINMUX(14, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO15 ESP32_PINMUX(15, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO16 ESP32_PINMUX(16, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0A_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM0_OUT0A) +#define MCPWM1_FAULT1_GPIO17 ESP32_PINMUX(17, ESP_PWM1_F1_IN, ESP_NOSIG) -/* MCPWM0_OUT0B */ -#define MCPWM0_OUT0B_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO18 ESP32_PINMUX(18, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO19 ESP32_PINMUX(19, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO20 ESP32_PINMUX(20, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO21 ESP32_PINMUX(21, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO26 ESP32_PINMUX(26, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO27 ESP32_PINMUX(27, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO28 ESP32_PINMUX(28, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO29 ESP32_PINMUX(29, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO30 ESP32_PINMUX(30, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO31 ESP32_PINMUX(31, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO32 ESP32_PINMUX(32, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO33 ESP32_PINMUX(33, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO34 ESP32_PINMUX(34, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO35 ESP32_PINMUX(35, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO36 ESP32_PINMUX(36, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO37 ESP32_PINMUX(37, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO38 ESP32_PINMUX(38, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO39 ESP32_PINMUX(39, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO40 ESP32_PINMUX(40, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO41 ESP32_PINMUX(41, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO42 ESP32_PINMUX(42, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO43 ESP32_PINMUX(43, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO44 ESP32_PINMUX(44, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO45 ESP32_PINMUX(45, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO46 ESP32_PINMUX(46, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO47 ESP32_PINMUX(47, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT1_GPIO48 ESP32_PINMUX(48, ESP_PWM1_F1_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM0_OUT0B) +/* MCPWM1_FAULT2 */ +#define MCPWM1_FAULT2_GPIO0 ESP32_PINMUX(0, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO1 ESP32_PINMUX(1, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO2 ESP32_PINMUX(2, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO3 ESP32_PINMUX(3, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO4 ESP32_PINMUX(4, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO5 ESP32_PINMUX(5, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO6 ESP32_PINMUX(6, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO7 ESP32_PINMUX(7, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO8 ESP32_PINMUX(8, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO9 ESP32_PINMUX(9, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO10 ESP32_PINMUX(10, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO11 ESP32_PINMUX(11, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO12 ESP32_PINMUX(12, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO13 ESP32_PINMUX(13, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO14 ESP32_PINMUX(14, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO15 ESP32_PINMUX(15, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO16 ESP32_PINMUX(16, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT0B_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM0_OUT0B) +#define MCPWM1_FAULT2_GPIO17 ESP32_PINMUX(17, ESP_PWM1_F2_IN, ESP_NOSIG) -/* MCPWM0_OUT1A */ -#define MCPWM0_OUT1A_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO18 ESP32_PINMUX(18, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO19 ESP32_PINMUX(19, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO20 ESP32_PINMUX(20, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO21 ESP32_PINMUX(21, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO26 ESP32_PINMUX(26, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO27 ESP32_PINMUX(27, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO28 ESP32_PINMUX(28, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO29 ESP32_PINMUX(29, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO30 ESP32_PINMUX(30, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO31 ESP32_PINMUX(31, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO32 ESP32_PINMUX(32, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO33 ESP32_PINMUX(33, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO34 ESP32_PINMUX(34, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO35 ESP32_PINMUX(35, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO36 ESP32_PINMUX(36, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO37 ESP32_PINMUX(37, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO38 ESP32_PINMUX(38, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO39 ESP32_PINMUX(39, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO40 ESP32_PINMUX(40, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO41 ESP32_PINMUX(41, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO42 ESP32_PINMUX(42, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO43 ESP32_PINMUX(43, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO44 ESP32_PINMUX(44, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO45 ESP32_PINMUX(45, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO46 ESP32_PINMUX(46, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO47 ESP32_PINMUX(47, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_FAULT2_GPIO48 ESP32_PINMUX(48, ESP_PWM1_F2_IN, ESP_NOSIG) -#define MCPWM0_OUT1A_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM0_OUT1A) +/* MCPWM1_OUT0A */ +#define MCPWM1_OUT0A_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1A_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM0_OUT1A) +#define MCPWM1_OUT0A_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM1_OUT0A) -/* MCPWM0_OUT1B */ -#define MCPWM0_OUT1B_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0A_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM1_OUT0A) -#define MCPWM0_OUT1B_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM0_OUT1B) +/* MCPWM1_OUT0B */ +#define MCPWM1_OUT0B_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT1B_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM0_OUT1B) +#define MCPWM1_OUT0B_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM1_OUT0B) -/* MCPWM0_OUT2A */ -#define MCPWM0_OUT2A_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT0B_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM1_OUT0B) -#define MCPWM0_OUT2A_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM0_OUT2A) +/* MCPWM1_OUT1A */ +#define MCPWM1_OUT1A_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2A_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM0_OUT2A) +#define MCPWM1_OUT1A_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM1_OUT1A) -/* MCPWM0_OUT2B */ -#define MCPWM0_OUT2B_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1A_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM1_OUT1A) -#define MCPWM0_OUT2B_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM0_OUT2B) +/* MCPWM1_OUT1B */ +#define MCPWM1_OUT1B_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_OUT2B_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM0_OUT2B) +#define MCPWM1_OUT1B_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM1_OUT1B) -/* MCPWM0_SYNC0 */ -#define MCPWM0_SYNC0_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT1B_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM1_OUT1B) -#define MCPWM0_SYNC0_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +/* MCPWM1_OUT2A */ +#define MCPWM1_OUT2A_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC0_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM0_SYNC0_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM1_OUT2A) -/* MCPWM0_SYNC1 */ -#define MCPWM0_SYNC1_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2A_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM1_OUT2A) -#define MCPWM0_SYNC1_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +/* MCPWM1_OUT2B */ +#define MCPWM1_OUT2B_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC1_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM0_SYNC1_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM1_OUT2B) -/* MCPWM0_SYNC2 */ -#define MCPWM0_SYNC2_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_OUT2B_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM1_OUT2B) -#define MCPWM0_SYNC2_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +/* MCPWM1_SYNC0 */ +#define MCPWM1_SYNC0_GPIO0 ESP32_PINMUX(0, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO1 ESP32_PINMUX(1, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO2 ESP32_PINMUX(2, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO3 ESP32_PINMUX(3, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO4 ESP32_PINMUX(4, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO5 ESP32_PINMUX(5, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO6 ESP32_PINMUX(6, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO7 ESP32_PINMUX(7, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO8 ESP32_PINMUX(8, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO9 ESP32_PINMUX(9, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO10 ESP32_PINMUX(10, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO11 ESP32_PINMUX(11, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO12 ESP32_PINMUX(12, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO13 ESP32_PINMUX(13, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO14 ESP32_PINMUX(14, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO15 ESP32_PINMUX(15, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO16 ESP32_PINMUX(16, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM0_SYNC2_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM0_SYNC2_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO17 ESP32_PINMUX(17, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -/* MCPWM1_CAP0 */ -#define MCPWM1_CAP0_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO18 ESP32_PINMUX(18, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO19 ESP32_PINMUX(19, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO20 ESP32_PINMUX(20, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO21 ESP32_PINMUX(21, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO26 ESP32_PINMUX(26, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO27 ESP32_PINMUX(27, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO28 ESP32_PINMUX(28, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO29 ESP32_PINMUX(29, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO30 ESP32_PINMUX(30, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO31 ESP32_PINMUX(31, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO32 ESP32_PINMUX(32, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO33 ESP32_PINMUX(33, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO34 ESP32_PINMUX(34, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO35 ESP32_PINMUX(35, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO36 ESP32_PINMUX(36, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO37 ESP32_PINMUX(37, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO38 ESP32_PINMUX(38, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO39 ESP32_PINMUX(39, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO40 ESP32_PINMUX(40, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO41 ESP32_PINMUX(41, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO42 ESP32_PINMUX(42, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO43 ESP32_PINMUX(43, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO44 ESP32_PINMUX(44, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO45 ESP32_PINMUX(45, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO46 ESP32_PINMUX(46, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO47 ESP32_PINMUX(47, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC0_GPIO48 ESP32_PINMUX(48, ESP_PWM1_SYNC0_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM1_CAP0_IN, ESP_NOSIG) +/* MCPWM1_SYNC1 */ +#define MCPWM1_SYNC1_GPIO0 ESP32_PINMUX(0, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO1 ESP32_PINMUX(1, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO2 ESP32_PINMUX(2, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO3 ESP32_PINMUX(3, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO4 ESP32_PINMUX(4, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO5 ESP32_PINMUX(5, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO6 ESP32_PINMUX(6, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO7 ESP32_PINMUX(7, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO8 ESP32_PINMUX(8, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO9 ESP32_PINMUX(9, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO10 ESP32_PINMUX(10, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO11 ESP32_PINMUX(11, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO12 ESP32_PINMUX(12, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO13 ESP32_PINMUX(13, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO14 ESP32_PINMUX(14, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO15 ESP32_PINMUX(15, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO16 ESP32_PINMUX(16, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP0_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM1_CAP0_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO17 ESP32_PINMUX(17, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -/* MCPWM1_CAP1 */ -#define MCPWM1_CAP1_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO18 ESP32_PINMUX(18, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO19 ESP32_PINMUX(19, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO20 ESP32_PINMUX(20, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO21 ESP32_PINMUX(21, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO26 ESP32_PINMUX(26, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO27 ESP32_PINMUX(27, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO28 ESP32_PINMUX(28, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO29 ESP32_PINMUX(29, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO30 ESP32_PINMUX(30, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO31 ESP32_PINMUX(31, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO32 ESP32_PINMUX(32, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO33 ESP32_PINMUX(33, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO34 ESP32_PINMUX(34, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO35 ESP32_PINMUX(35, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO36 ESP32_PINMUX(36, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO37 ESP32_PINMUX(37, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO38 ESP32_PINMUX(38, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO39 ESP32_PINMUX(39, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO40 ESP32_PINMUX(40, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO41 ESP32_PINMUX(41, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO42 ESP32_PINMUX(42, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO43 ESP32_PINMUX(43, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO44 ESP32_PINMUX(44, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO45 ESP32_PINMUX(45, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO46 ESP32_PINMUX(46, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO47 ESP32_PINMUX(47, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC1_GPIO48 ESP32_PINMUX(48, ESP_PWM1_SYNC1_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM1_CAP1_IN, ESP_NOSIG) +/* MCPWM1_SYNC2 */ +#define MCPWM1_SYNC2_GPIO0 ESP32_PINMUX(0, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO1 ESP32_PINMUX(1, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO2 ESP32_PINMUX(2, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO3 ESP32_PINMUX(3, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO4 ESP32_PINMUX(4, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO5 ESP32_PINMUX(5, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO6 ESP32_PINMUX(6, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO7 ESP32_PINMUX(7, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO8 ESP32_PINMUX(8, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO9 ESP32_PINMUX(9, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO10 ESP32_PINMUX(10, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO11 ESP32_PINMUX(11, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO12 ESP32_PINMUX(12, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO13 ESP32_PINMUX(13, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO14 ESP32_PINMUX(14, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO15 ESP32_PINMUX(15, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO16 ESP32_PINMUX(16, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP1_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM1_CAP1_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO17 ESP32_PINMUX(17, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -/* MCPWM1_CAP2 */ -#define MCPWM1_CAP2_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO18 ESP32_PINMUX(18, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO19 ESP32_PINMUX(19, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO20 ESP32_PINMUX(20, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO21 ESP32_PINMUX(21, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO26 ESP32_PINMUX(26, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO27 ESP32_PINMUX(27, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO28 ESP32_PINMUX(28, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO29 ESP32_PINMUX(29, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO30 ESP32_PINMUX(30, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO31 ESP32_PINMUX(31, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO32 ESP32_PINMUX(32, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO33 ESP32_PINMUX(33, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO34 ESP32_PINMUX(34, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO35 ESP32_PINMUX(35, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO36 ESP32_PINMUX(36, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO37 ESP32_PINMUX(37, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO38 ESP32_PINMUX(38, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO39 ESP32_PINMUX(39, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO40 ESP32_PINMUX(40, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO41 ESP32_PINMUX(41, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO42 ESP32_PINMUX(42, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO43 ESP32_PINMUX(43, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO44 ESP32_PINMUX(44, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO45 ESP32_PINMUX(45, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO46 ESP32_PINMUX(46, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO47 ESP32_PINMUX(47, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define MCPWM1_SYNC2_GPIO48 ESP32_PINMUX(48, ESP_PWM1_SYNC2_IN, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM1_CAP2_IN, ESP_NOSIG) +/* PCNT0_CH0CTRL */ +#define PCNT0_CH0CTRL_GPIO0 ESP32_PINMUX(0, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO1 ESP32_PINMUX(1, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO2 ESP32_PINMUX(2, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO3 ESP32_PINMUX(3, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO4 ESP32_PINMUX(4, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO5 ESP32_PINMUX(5, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO6 ESP32_PINMUX(6, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO7 ESP32_PINMUX(7, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO8 ESP32_PINMUX(8, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO9 ESP32_PINMUX(9, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO10 ESP32_PINMUX(10, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO11 ESP32_PINMUX(11, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO12 ESP32_PINMUX(12, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO13 ESP32_PINMUX(13, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO14 ESP32_PINMUX(14, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO15 ESP32_PINMUX(15, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO16 ESP32_PINMUX(16, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_CAP2_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM1_CAP2_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO17 ESP32_PINMUX(17, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -/* MCPWM1_FAULT0 */ -#define MCPWM1_FAULT0_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO18 ESP32_PINMUX(18, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO19 ESP32_PINMUX(19, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO20 ESP32_PINMUX(20, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO21 ESP32_PINMUX(21, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO26 ESP32_PINMUX(26, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO27 ESP32_PINMUX(27, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO28 ESP32_PINMUX(28, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO29 ESP32_PINMUX(29, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO30 ESP32_PINMUX(30, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO31 ESP32_PINMUX(31, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO32 ESP32_PINMUX(32, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO33 ESP32_PINMUX(33, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO34 ESP32_PINMUX(34, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO35 ESP32_PINMUX(35, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO36 ESP32_PINMUX(36, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO37 ESP32_PINMUX(37, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO38 ESP32_PINMUX(38, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO39 ESP32_PINMUX(39, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO40 ESP32_PINMUX(40, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO41 ESP32_PINMUX(41, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO42 ESP32_PINMUX(42, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO43 ESP32_PINMUX(43, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO44 ESP32_PINMUX(44, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO45 ESP32_PINMUX(45, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO46 ESP32_PINMUX(46, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO47 ESP32_PINMUX(47, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0CTRL_GPIO48 ESP32_PINMUX(48, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM1_F0_IN, ESP_NOSIG) +/* PCNT0_CH0SIG */ +#define PCNT0_CH0SIG_GPIO0 ESP32_PINMUX(0, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO1 ESP32_PINMUX(1, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO2 ESP32_PINMUX(2, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO3 ESP32_PINMUX(3, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO4 ESP32_PINMUX(4, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO5 ESP32_PINMUX(5, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO6 ESP32_PINMUX(6, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO7 ESP32_PINMUX(7, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO8 ESP32_PINMUX(8, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO9 ESP32_PINMUX(9, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO10 ESP32_PINMUX(10, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO11 ESP32_PINMUX(11, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO12 ESP32_PINMUX(12, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO13 ESP32_PINMUX(13, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO14 ESP32_PINMUX(14, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO15 ESP32_PINMUX(15, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO16 ESP32_PINMUX(16, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT0_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM1_F0_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO17 ESP32_PINMUX(17, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -/* MCPWM1_FAULT1 */ -#define MCPWM1_FAULT1_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO18 ESP32_PINMUX(18, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO19 ESP32_PINMUX(19, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO20 ESP32_PINMUX(20, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO21 ESP32_PINMUX(21, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO26 ESP32_PINMUX(26, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO27 ESP32_PINMUX(27, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO28 ESP32_PINMUX(28, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO29 ESP32_PINMUX(29, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO30 ESP32_PINMUX(30, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO31 ESP32_PINMUX(31, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO32 ESP32_PINMUX(32, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO33 ESP32_PINMUX(33, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO34 ESP32_PINMUX(34, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO35 ESP32_PINMUX(35, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO36 ESP32_PINMUX(36, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO37 ESP32_PINMUX(37, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO38 ESP32_PINMUX(38, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO39 ESP32_PINMUX(39, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO40 ESP32_PINMUX(40, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO41 ESP32_PINMUX(41, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO42 ESP32_PINMUX(42, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO43 ESP32_PINMUX(43, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO44 ESP32_PINMUX(44, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO45 ESP32_PINMUX(45, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO46 ESP32_PINMUX(46, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO47 ESP32_PINMUX(47, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH0SIG_GPIO48 ESP32_PINMUX(48, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM1_F1_IN, ESP_NOSIG) +/* PCNT0_CH1CTRL */ +#define PCNT0_CH1CTRL_GPIO0 ESP32_PINMUX(0, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO1 ESP32_PINMUX(1, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO2 ESP32_PINMUX(2, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO3 ESP32_PINMUX(3, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO4 ESP32_PINMUX(4, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO5 ESP32_PINMUX(5, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO6 ESP32_PINMUX(6, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO7 ESP32_PINMUX(7, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO8 ESP32_PINMUX(8, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO9 ESP32_PINMUX(9, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO10 ESP32_PINMUX(10, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO11 ESP32_PINMUX(11, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO12 ESP32_PINMUX(12, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO13 ESP32_PINMUX(13, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO14 ESP32_PINMUX(14, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO15 ESP32_PINMUX(15, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO16 ESP32_PINMUX(16, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT1_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM1_F1_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO17 ESP32_PINMUX(17, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -/* MCPWM1_FAULT2 */ -#define MCPWM1_FAULT2_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO18 ESP32_PINMUX(18, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO19 ESP32_PINMUX(19, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO20 ESP32_PINMUX(20, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO21 ESP32_PINMUX(21, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO26 ESP32_PINMUX(26, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO27 ESP32_PINMUX(27, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO28 ESP32_PINMUX(28, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO29 ESP32_PINMUX(29, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO30 ESP32_PINMUX(30, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO31 ESP32_PINMUX(31, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO32 ESP32_PINMUX(32, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO33 ESP32_PINMUX(33, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO34 ESP32_PINMUX(34, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO35 ESP32_PINMUX(35, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO36 ESP32_PINMUX(36, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO37 ESP32_PINMUX(37, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO38 ESP32_PINMUX(38, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO39 ESP32_PINMUX(39, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO40 ESP32_PINMUX(40, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO41 ESP32_PINMUX(41, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO42 ESP32_PINMUX(42, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO43 ESP32_PINMUX(43, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO44 ESP32_PINMUX(44, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO45 ESP32_PINMUX(45, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO46 ESP32_PINMUX(46, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO47 ESP32_PINMUX(47, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1CTRL_GPIO48 ESP32_PINMUX(48, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM1_F2_IN, ESP_NOSIG) +/* PCNT0_CH1SIG */ +#define PCNT0_CH1SIG_GPIO0 ESP32_PINMUX(0, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO1 ESP32_PINMUX(1, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO2 ESP32_PINMUX(2, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO3 ESP32_PINMUX(3, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO4 ESP32_PINMUX(4, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO5 ESP32_PINMUX(5, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO6 ESP32_PINMUX(6, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO7 ESP32_PINMUX(7, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO8 ESP32_PINMUX(8, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO9 ESP32_PINMUX(9, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO10 ESP32_PINMUX(10, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO11 ESP32_PINMUX(11, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO12 ESP32_PINMUX(12, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO13 ESP32_PINMUX(13, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO14 ESP32_PINMUX(14, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO15 ESP32_PINMUX(15, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO16 ESP32_PINMUX(16, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_FAULT2_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM1_F2_IN, ESP_NOSIG) +#define PCNT0_CH1SIG_GPIO17 ESP32_PINMUX(17, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -/* MCPWM1_OUT0A */ -#define MCPWM1_OUT0A_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO18 ESP32_PINMUX(18, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO19 ESP32_PINMUX(19, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO20 ESP32_PINMUX(20, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO21 ESP32_PINMUX(21, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO26 ESP32_PINMUX(26, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO27 ESP32_PINMUX(27, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO28 ESP32_PINMUX(28, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO29 ESP32_PINMUX(29, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO30 ESP32_PINMUX(30, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO31 ESP32_PINMUX(31, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO32 ESP32_PINMUX(32, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO33 ESP32_PINMUX(33, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO34 ESP32_PINMUX(34, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO35 ESP32_PINMUX(35, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO36 ESP32_PINMUX(36, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO37 ESP32_PINMUX(37, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO38 ESP32_PINMUX(38, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO39 ESP32_PINMUX(39, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO40 ESP32_PINMUX(40, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO41 ESP32_PINMUX(41, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO42 ESP32_PINMUX(42, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO43 ESP32_PINMUX(43, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO44 ESP32_PINMUX(44, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO45 ESP32_PINMUX(45, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO46 ESP32_PINMUX(46, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO47 ESP32_PINMUX(47, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT0_CH1SIG_GPIO48 ESP32_PINMUX(48, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM1_OUT0A) +/* PCNT1_CH0CTRL */ +#define PCNT1_CH0CTRL_GPIO0 ESP32_PINMUX(0, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO1 ESP32_PINMUX(1, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO2 ESP32_PINMUX(2, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO3 ESP32_PINMUX(3, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO4 ESP32_PINMUX(4, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO5 ESP32_PINMUX(5, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO6 ESP32_PINMUX(6, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO7 ESP32_PINMUX(7, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO8 ESP32_PINMUX(8, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO9 ESP32_PINMUX(9, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO10 ESP32_PINMUX(10, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO11 ESP32_PINMUX(11, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO12 ESP32_PINMUX(12, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO13 ESP32_PINMUX(13, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO14 ESP32_PINMUX(14, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO15 ESP32_PINMUX(15, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO16 ESP32_PINMUX(16, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0A_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM1_OUT0A) +#define PCNT1_CH0CTRL_GPIO17 ESP32_PINMUX(17, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -/* MCPWM1_OUT0B */ -#define MCPWM1_OUT0B_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO18 ESP32_PINMUX(18, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO19 ESP32_PINMUX(19, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO20 ESP32_PINMUX(20, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO21 ESP32_PINMUX(21, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO26 ESP32_PINMUX(26, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO27 ESP32_PINMUX(27, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO28 ESP32_PINMUX(28, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO29 ESP32_PINMUX(29, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO30 ESP32_PINMUX(30, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO31 ESP32_PINMUX(31, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO32 ESP32_PINMUX(32, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO33 ESP32_PINMUX(33, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO34 ESP32_PINMUX(34, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO35 ESP32_PINMUX(35, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO36 ESP32_PINMUX(36, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO37 ESP32_PINMUX(37, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO38 ESP32_PINMUX(38, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO39 ESP32_PINMUX(39, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO40 ESP32_PINMUX(40, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO41 ESP32_PINMUX(41, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO42 ESP32_PINMUX(42, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO43 ESP32_PINMUX(43, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO44 ESP32_PINMUX(44, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO45 ESP32_PINMUX(45, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO46 ESP32_PINMUX(46, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO47 ESP32_PINMUX(47, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0CTRL_GPIO48 ESP32_PINMUX(48, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM1_OUT0B) +/* PCNT1_CH0SIG */ +#define PCNT1_CH0SIG_GPIO0 ESP32_PINMUX(0, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO1 ESP32_PINMUX(1, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO2 ESP32_PINMUX(2, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO3 ESP32_PINMUX(3, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO4 ESP32_PINMUX(4, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO5 ESP32_PINMUX(5, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO6 ESP32_PINMUX(6, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO7 ESP32_PINMUX(7, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO8 ESP32_PINMUX(8, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO9 ESP32_PINMUX(9, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO10 ESP32_PINMUX(10, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO11 ESP32_PINMUX(11, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO12 ESP32_PINMUX(12, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO13 ESP32_PINMUX(13, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO14 ESP32_PINMUX(14, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO15 ESP32_PINMUX(15, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO16 ESP32_PINMUX(16, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT0B_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM1_OUT0B) +#define PCNT1_CH0SIG_GPIO17 ESP32_PINMUX(17, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -/* MCPWM1_OUT1A */ -#define MCPWM1_OUT1A_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO18 ESP32_PINMUX(18, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO19 ESP32_PINMUX(19, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO20 ESP32_PINMUX(20, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO21 ESP32_PINMUX(21, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO26 ESP32_PINMUX(26, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO27 ESP32_PINMUX(27, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO28 ESP32_PINMUX(28, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO29 ESP32_PINMUX(29, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO30 ESP32_PINMUX(30, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO31 ESP32_PINMUX(31, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO32 ESP32_PINMUX(32, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO33 ESP32_PINMUX(33, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO34 ESP32_PINMUX(34, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO35 ESP32_PINMUX(35, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO36 ESP32_PINMUX(36, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO37 ESP32_PINMUX(37, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO38 ESP32_PINMUX(38, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO39 ESP32_PINMUX(39, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO40 ESP32_PINMUX(40, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO41 ESP32_PINMUX(41, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO42 ESP32_PINMUX(42, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO43 ESP32_PINMUX(43, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO44 ESP32_PINMUX(44, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO45 ESP32_PINMUX(45, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO46 ESP32_PINMUX(46, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO47 ESP32_PINMUX(47, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH0SIG_GPIO48 ESP32_PINMUX(48, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM1_OUT1A) +/* PCNT1_CH1CTRL */ +#define PCNT1_CH1CTRL_GPIO0 ESP32_PINMUX(0, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO1 ESP32_PINMUX(1, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO2 ESP32_PINMUX(2, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO3 ESP32_PINMUX(3, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO4 ESP32_PINMUX(4, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO5 ESP32_PINMUX(5, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO6 ESP32_PINMUX(6, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO7 ESP32_PINMUX(7, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO8 ESP32_PINMUX(8, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO9 ESP32_PINMUX(9, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO10 ESP32_PINMUX(10, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO11 ESP32_PINMUX(11, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO12 ESP32_PINMUX(12, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO13 ESP32_PINMUX(13, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO14 ESP32_PINMUX(14, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO15 ESP32_PINMUX(15, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO16 ESP32_PINMUX(16, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1A_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM1_OUT1A) +#define PCNT1_CH1CTRL_GPIO17 ESP32_PINMUX(17, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -/* MCPWM1_OUT1B */ -#define MCPWM1_OUT1B_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO18 ESP32_PINMUX(18, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO19 ESP32_PINMUX(19, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO20 ESP32_PINMUX(20, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO21 ESP32_PINMUX(21, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO26 ESP32_PINMUX(26, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO27 ESP32_PINMUX(27, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO28 ESP32_PINMUX(28, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO29 ESP32_PINMUX(29, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO30 ESP32_PINMUX(30, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO31 ESP32_PINMUX(31, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO32 ESP32_PINMUX(32, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO33 ESP32_PINMUX(33, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO34 ESP32_PINMUX(34, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO35 ESP32_PINMUX(35, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO36 ESP32_PINMUX(36, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO37 ESP32_PINMUX(37, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO38 ESP32_PINMUX(38, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO39 ESP32_PINMUX(39, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO40 ESP32_PINMUX(40, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO41 ESP32_PINMUX(41, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO42 ESP32_PINMUX(42, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO43 ESP32_PINMUX(43, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO44 ESP32_PINMUX(44, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO45 ESP32_PINMUX(45, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO46 ESP32_PINMUX(46, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO47 ESP32_PINMUX(47, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1CTRL_GPIO48 ESP32_PINMUX(48, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM1_OUT1B) +/* PCNT1_CH1SIG */ +#define PCNT1_CH1SIG_GPIO0 ESP32_PINMUX(0, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO1 ESP32_PINMUX(1, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO2 ESP32_PINMUX(2, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO3 ESP32_PINMUX(3, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO4 ESP32_PINMUX(4, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO5 ESP32_PINMUX(5, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO6 ESP32_PINMUX(6, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO7 ESP32_PINMUX(7, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO8 ESP32_PINMUX(8, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO9 ESP32_PINMUX(9, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO10 ESP32_PINMUX(10, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO11 ESP32_PINMUX(11, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO12 ESP32_PINMUX(12, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO13 ESP32_PINMUX(13, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO14 ESP32_PINMUX(14, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO15 ESP32_PINMUX(15, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO16 ESP32_PINMUX(16, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT1B_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM1_OUT1B) +#define PCNT1_CH1SIG_GPIO17 ESP32_PINMUX(17, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -/* MCPWM1_OUT2A */ -#define MCPWM1_OUT2A_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO18 ESP32_PINMUX(18, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO19 ESP32_PINMUX(19, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO20 ESP32_PINMUX(20, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO21 ESP32_PINMUX(21, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO26 ESP32_PINMUX(26, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO27 ESP32_PINMUX(27, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO28 ESP32_PINMUX(28, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO29 ESP32_PINMUX(29, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO30 ESP32_PINMUX(30, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO31 ESP32_PINMUX(31, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO32 ESP32_PINMUX(32, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO33 ESP32_PINMUX(33, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO34 ESP32_PINMUX(34, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO35 ESP32_PINMUX(35, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO36 ESP32_PINMUX(36, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO37 ESP32_PINMUX(37, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO38 ESP32_PINMUX(38, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO39 ESP32_PINMUX(39, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO40 ESP32_PINMUX(40, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO41 ESP32_PINMUX(41, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO42 ESP32_PINMUX(42, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO43 ESP32_PINMUX(43, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO44 ESP32_PINMUX(44, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO45 ESP32_PINMUX(45, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO46 ESP32_PINMUX(46, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO47 ESP32_PINMUX(47, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT1_CH1SIG_GPIO48 ESP32_PINMUX(48, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM1_OUT2A) +/* PCNT2_CH0CTRL */ +#define PCNT2_CH0CTRL_GPIO0 ESP32_PINMUX(0, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO1 ESP32_PINMUX(1, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO2 ESP32_PINMUX(2, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO3 ESP32_PINMUX(3, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO4 ESP32_PINMUX(4, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO5 ESP32_PINMUX(5, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO6 ESP32_PINMUX(6, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO7 ESP32_PINMUX(7, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO8 ESP32_PINMUX(8, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO9 ESP32_PINMUX(9, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO10 ESP32_PINMUX(10, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO11 ESP32_PINMUX(11, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO12 ESP32_PINMUX(12, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO13 ESP32_PINMUX(13, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO14 ESP32_PINMUX(14, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO15 ESP32_PINMUX(15, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO16 ESP32_PINMUX(16, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2A_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM1_OUT2A) +#define PCNT2_CH0CTRL_GPIO17 ESP32_PINMUX(17, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -/* MCPWM1_OUT2B */ -#define MCPWM1_OUT2B_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO18 ESP32_PINMUX(18, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO19 ESP32_PINMUX(19, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO20 ESP32_PINMUX(20, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO21 ESP32_PINMUX(21, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO26 ESP32_PINMUX(26, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO27 ESP32_PINMUX(27, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO28 ESP32_PINMUX(28, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO29 ESP32_PINMUX(29, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO30 ESP32_PINMUX(30, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO31 ESP32_PINMUX(31, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO32 ESP32_PINMUX(32, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO33 ESP32_PINMUX(33, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO34 ESP32_PINMUX(34, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO35 ESP32_PINMUX(35, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO36 ESP32_PINMUX(36, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO37 ESP32_PINMUX(37, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO38 ESP32_PINMUX(38, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO39 ESP32_PINMUX(39, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO40 ESP32_PINMUX(40, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO41 ESP32_PINMUX(41, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO42 ESP32_PINMUX(42, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO43 ESP32_PINMUX(43, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO44 ESP32_PINMUX(44, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO45 ESP32_PINMUX(45, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO46 ESP32_PINMUX(46, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO47 ESP32_PINMUX(47, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0CTRL_GPIO48 ESP32_PINMUX(48, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_PWM1_OUT2B) +/* PCNT2_CH0SIG */ +#define PCNT2_CH0SIG_GPIO0 ESP32_PINMUX(0, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO1 ESP32_PINMUX(1, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO2 ESP32_PINMUX(2, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO3 ESP32_PINMUX(3, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO4 ESP32_PINMUX(4, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO5 ESP32_PINMUX(5, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO6 ESP32_PINMUX(6, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO7 ESP32_PINMUX(7, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO8 ESP32_PINMUX(8, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO9 ESP32_PINMUX(9, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO10 ESP32_PINMUX(10, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO11 ESP32_PINMUX(11, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO12 ESP32_PINMUX(12, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO13 ESP32_PINMUX(13, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO14 ESP32_PINMUX(14, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO15 ESP32_PINMUX(15, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO16 ESP32_PINMUX(16, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_OUT2B_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_PWM1_OUT2B) +#define PCNT2_CH0SIG_GPIO17 ESP32_PINMUX(17, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -/* MCPWM1_SYNC0 */ -#define MCPWM1_SYNC0_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO18 ESP32_PINMUX(18, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO19 ESP32_PINMUX(19, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO20 ESP32_PINMUX(20, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO21 ESP32_PINMUX(21, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO26 ESP32_PINMUX(26, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO27 ESP32_PINMUX(27, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO28 ESP32_PINMUX(28, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO29 ESP32_PINMUX(29, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO30 ESP32_PINMUX(30, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO31 ESP32_PINMUX(31, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO32 ESP32_PINMUX(32, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO33 ESP32_PINMUX(33, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO34 ESP32_PINMUX(34, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO35 ESP32_PINMUX(35, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO36 ESP32_PINMUX(36, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO37 ESP32_PINMUX(37, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO38 ESP32_PINMUX(38, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO39 ESP32_PINMUX(39, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO40 ESP32_PINMUX(40, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO41 ESP32_PINMUX(41, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO42 ESP32_PINMUX(42, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO43 ESP32_PINMUX(43, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO44 ESP32_PINMUX(44, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO45 ESP32_PINMUX(45, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO46 ESP32_PINMUX(46, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO47 ESP32_PINMUX(47, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH0SIG_GPIO48 ESP32_PINMUX(48, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +/* PCNT2_CH1CTRL */ +#define PCNT2_CH1CTRL_GPIO0 ESP32_PINMUX(0, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO1 ESP32_PINMUX(1, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO2 ESP32_PINMUX(2, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO3 ESP32_PINMUX(3, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO4 ESP32_PINMUX(4, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO5 ESP32_PINMUX(5, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO6 ESP32_PINMUX(6, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO7 ESP32_PINMUX(7, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO8 ESP32_PINMUX(8, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO9 ESP32_PINMUX(9, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO10 ESP32_PINMUX(10, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO11 ESP32_PINMUX(11, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO12 ESP32_PINMUX(12, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO13 ESP32_PINMUX(13, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO14 ESP32_PINMUX(14, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO15 ESP32_PINMUX(15, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO16 ESP32_PINMUX(16, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC0_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM1_SYNC0_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO17 ESP32_PINMUX(17, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -/* MCPWM1_SYNC1 */ -#define MCPWM1_SYNC1_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO18 ESP32_PINMUX(18, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO19 ESP32_PINMUX(19, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO20 ESP32_PINMUX(20, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO21 ESP32_PINMUX(21, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO26 ESP32_PINMUX(26, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO27 ESP32_PINMUX(27, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO28 ESP32_PINMUX(28, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO29 ESP32_PINMUX(29, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO30 ESP32_PINMUX(30, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO31 ESP32_PINMUX(31, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO32 ESP32_PINMUX(32, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO33 ESP32_PINMUX(33, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO34 ESP32_PINMUX(34, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO35 ESP32_PINMUX(35, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO36 ESP32_PINMUX(36, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO37 ESP32_PINMUX(37, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO38 ESP32_PINMUX(38, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO39 ESP32_PINMUX(39, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO40 ESP32_PINMUX(40, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO41 ESP32_PINMUX(41, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO42 ESP32_PINMUX(42, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO43 ESP32_PINMUX(43, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO44 ESP32_PINMUX(44, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO45 ESP32_PINMUX(45, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO46 ESP32_PINMUX(46, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO47 ESP32_PINMUX(47, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1CTRL_GPIO48 ESP32_PINMUX(48, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +/* PCNT2_CH1SIG */ +#define PCNT2_CH1SIG_GPIO0 ESP32_PINMUX(0, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO1 ESP32_PINMUX(1, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO2 ESP32_PINMUX(2, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO3 ESP32_PINMUX(3, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO4 ESP32_PINMUX(4, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO5 ESP32_PINMUX(5, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO6 ESP32_PINMUX(6, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO7 ESP32_PINMUX(7, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO8 ESP32_PINMUX(8, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO9 ESP32_PINMUX(9, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO10 ESP32_PINMUX(10, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO11 ESP32_PINMUX(11, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO12 ESP32_PINMUX(12, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO13 ESP32_PINMUX(13, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO14 ESP32_PINMUX(14, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO15 ESP32_PINMUX(15, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO16 ESP32_PINMUX(16, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC1_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM1_SYNC1_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO17 ESP32_PINMUX(17, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -/* MCPWM1_SYNC2 */ -#define MCPWM1_SYNC2_GPIO0 \ - ESP32_PINMUX(0, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO18 ESP32_PINMUX(18, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO1 \ - ESP32_PINMUX(1, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO19 ESP32_PINMUX(19, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO2 \ - ESP32_PINMUX(2, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO20 ESP32_PINMUX(20, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO3 \ - ESP32_PINMUX(3, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO21 ESP32_PINMUX(21, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO4 \ - ESP32_PINMUX(4, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO26 ESP32_PINMUX(26, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO5 \ - ESP32_PINMUX(5, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO27 ESP32_PINMUX(27, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO6 \ - ESP32_PINMUX(6, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO28 ESP32_PINMUX(28, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO7 \ - ESP32_PINMUX(7, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO29 ESP32_PINMUX(29, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO8 \ - ESP32_PINMUX(8, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO30 ESP32_PINMUX(30, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO9 \ - ESP32_PINMUX(9, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO31 ESP32_PINMUX(31, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO10 \ - ESP32_PINMUX(10, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO32 ESP32_PINMUX(32, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO11 \ - ESP32_PINMUX(11, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO33 ESP32_PINMUX(33, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO12 \ - ESP32_PINMUX(12, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO34 ESP32_PINMUX(34, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO13 \ - ESP32_PINMUX(13, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO35 ESP32_PINMUX(35, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO14 \ - ESP32_PINMUX(14, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO36 ESP32_PINMUX(36, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO15 \ - ESP32_PINMUX(15, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO37 ESP32_PINMUX(37, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO16 \ - ESP32_PINMUX(16, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO38 ESP32_PINMUX(38, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO17 \ - ESP32_PINMUX(17, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO39 ESP32_PINMUX(39, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO18 \ - ESP32_PINMUX(18, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO40 ESP32_PINMUX(40, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO19 \ - ESP32_PINMUX(19, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO41 ESP32_PINMUX(41, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO20 \ - ESP32_PINMUX(20, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO42 ESP32_PINMUX(42, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO21 \ - ESP32_PINMUX(21, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO43 ESP32_PINMUX(43, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO26 \ - ESP32_PINMUX(26, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO44 ESP32_PINMUX(44, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO27 \ - ESP32_PINMUX(27, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO45 ESP32_PINMUX(45, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO28 \ - ESP32_PINMUX(28, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO46 ESP32_PINMUX(46, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO29 \ - ESP32_PINMUX(29, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO47 ESP32_PINMUX(47, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO30 \ - ESP32_PINMUX(30, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT2_CH1SIG_GPIO48 ESP32_PINMUX(48, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO31 \ - ESP32_PINMUX(31, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +/* PCNT3_CH0CTRL */ +#define PCNT3_CH0CTRL_GPIO0 ESP32_PINMUX(0, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO32 \ - ESP32_PINMUX(32, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO1 ESP32_PINMUX(1, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO33 \ - ESP32_PINMUX(33, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO2 ESP32_PINMUX(2, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO34 \ - ESP32_PINMUX(34, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO3 ESP32_PINMUX(3, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO35 \ - ESP32_PINMUX(35, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO4 ESP32_PINMUX(4, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO36 \ - ESP32_PINMUX(36, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO5 ESP32_PINMUX(5, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO37 \ - ESP32_PINMUX(37, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO6 ESP32_PINMUX(6, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO38 \ - ESP32_PINMUX(38, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO7 ESP32_PINMUX(7, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO39 \ - ESP32_PINMUX(39, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO8 ESP32_PINMUX(8, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO40 \ - ESP32_PINMUX(40, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO9 ESP32_PINMUX(9, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO41 \ - ESP32_PINMUX(41, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO10 ESP32_PINMUX(10, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO42 \ - ESP32_PINMUX(42, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO11 ESP32_PINMUX(11, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO43 \ - ESP32_PINMUX(43, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO12 ESP32_PINMUX(12, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO44 \ - ESP32_PINMUX(44, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO13 ESP32_PINMUX(13, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO45 \ - ESP32_PINMUX(45, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO14 ESP32_PINMUX(14, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO46 \ - ESP32_PINMUX(46, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO15 ESP32_PINMUX(15, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO47 \ - ESP32_PINMUX(47, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO16 ESP32_PINMUX(16, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define MCPWM1_SYNC2_GPIO48 \ - ESP32_PINMUX(48, ESP_PWM1_SYNC2_IN, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO17 ESP32_PINMUX(17, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -/* PCNT0_CH0CTRL */ -#define PCNT0_CH0CTRL_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO18 ESP32_PINMUX(18, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO19 ESP32_PINMUX(19, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO20 ESP32_PINMUX(20, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO21 ESP32_PINMUX(21, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO26 ESP32_PINMUX(26, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO27 ESP32_PINMUX(27, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO28 ESP32_PINMUX(28, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO29 ESP32_PINMUX(29, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO30 ESP32_PINMUX(30, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO31 ESP32_PINMUX(31, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO32 ESP32_PINMUX(32, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO33 ESP32_PINMUX(33, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO34 ESP32_PINMUX(34, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO35 ESP32_PINMUX(35, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO36 ESP32_PINMUX(36, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO37 ESP32_PINMUX(37, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO38 ESP32_PINMUX(38, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO39 ESP32_PINMUX(39, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO40 ESP32_PINMUX(40, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO41 ESP32_PINMUX(41, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO42 ESP32_PINMUX(42, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO43 ESP32_PINMUX(43, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO44 ESP32_PINMUX(44, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO45 ESP32_PINMUX(45, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO46 ESP32_PINMUX(46, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO47 ESP32_PINMUX(47, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0CTRL_GPIO48 ESP32_PINMUX(48, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +/* PCNT3_CH0SIG */ +#define PCNT3_CH0SIG_GPIO0 ESP32_PINMUX(0, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO1 ESP32_PINMUX(1, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO2 ESP32_PINMUX(2, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO3 ESP32_PINMUX(3, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO4 ESP32_PINMUX(4, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO5 ESP32_PINMUX(5, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO6 ESP32_PINMUX(6, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO7 ESP32_PINMUX(7, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO8 ESP32_PINMUX(8, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO9 ESP32_PINMUX(9, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO10 ESP32_PINMUX(10, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO11 ESP32_PINMUX(11, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO12 ESP32_PINMUX(12, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO13 ESP32_PINMUX(13, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO14 ESP32_PINMUX(14, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO15 ESP32_PINMUX(15, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO16 ESP32_PINMUX(16, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0CTRL_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_CTRL_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO17 ESP32_PINMUX(17, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -/* PCNT0_CH0SIG */ -#define PCNT0_CH0SIG_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO18 ESP32_PINMUX(18, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO19 ESP32_PINMUX(19, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO20 ESP32_PINMUX(20, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO21 ESP32_PINMUX(21, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO26 ESP32_PINMUX(26, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO27 ESP32_PINMUX(27, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO28 ESP32_PINMUX(28, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO29 ESP32_PINMUX(29, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO30 ESP32_PINMUX(30, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO31 ESP32_PINMUX(31, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO32 ESP32_PINMUX(32, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO33 ESP32_PINMUX(33, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO34 ESP32_PINMUX(34, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO35 ESP32_PINMUX(35, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO36 ESP32_PINMUX(36, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO37 ESP32_PINMUX(37, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO38 ESP32_PINMUX(38, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO39 ESP32_PINMUX(39, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO40 ESP32_PINMUX(40, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO41 ESP32_PINMUX(41, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO42 ESP32_PINMUX(42, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO43 ESP32_PINMUX(43, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO44 ESP32_PINMUX(44, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO45 ESP32_PINMUX(45, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO46 ESP32_PINMUX(46, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO47 ESP32_PINMUX(47, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH0SIG_GPIO48 ESP32_PINMUX(48, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +/* PCNT3_CH1CTRL */ +#define PCNT3_CH1CTRL_GPIO0 ESP32_PINMUX(0, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO1 ESP32_PINMUX(1, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO2 ESP32_PINMUX(2, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO3 ESP32_PINMUX(3, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO4 ESP32_PINMUX(4, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO5 ESP32_PINMUX(5, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO6 ESP32_PINMUX(6, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO7 ESP32_PINMUX(7, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO8 ESP32_PINMUX(8, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO9 ESP32_PINMUX(9, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO10 ESP32_PINMUX(10, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO11 ESP32_PINMUX(11, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO12 ESP32_PINMUX(12, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO13 ESP32_PINMUX(13, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO14 ESP32_PINMUX(14, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO15 ESP32_PINMUX(15, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO16 ESP32_PINMUX(16, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH0SIG_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_SIG_CH0_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO17 ESP32_PINMUX(17, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -/* PCNT0_CH1CTRL */ -#define PCNT0_CH1CTRL_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO18 ESP32_PINMUX(18, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO19 ESP32_PINMUX(19, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO20 ESP32_PINMUX(20, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO21 ESP32_PINMUX(21, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO26 ESP32_PINMUX(26, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO27 ESP32_PINMUX(27, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO28 ESP32_PINMUX(28, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO29 ESP32_PINMUX(29, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO30 ESP32_PINMUX(30, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO31 ESP32_PINMUX(31, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO32 ESP32_PINMUX(32, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO33 ESP32_PINMUX(33, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO34 ESP32_PINMUX(34, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO35 ESP32_PINMUX(35, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO36 ESP32_PINMUX(36, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO37 ESP32_PINMUX(37, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO38 ESP32_PINMUX(38, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO39 ESP32_PINMUX(39, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO40 ESP32_PINMUX(40, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO41 ESP32_PINMUX(41, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO42 ESP32_PINMUX(42, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO43 ESP32_PINMUX(43, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO44 ESP32_PINMUX(44, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO45 ESP32_PINMUX(45, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO46 ESP32_PINMUX(46, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO47 ESP32_PINMUX(47, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1CTRL_GPIO48 ESP32_PINMUX(48, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +/* PCNT3_CH1SIG */ +#define PCNT3_CH1SIG_GPIO0 ESP32_PINMUX(0, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO1 ESP32_PINMUX(1, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO2 ESP32_PINMUX(2, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO3 ESP32_PINMUX(3, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO4 ESP32_PINMUX(4, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO5 ESP32_PINMUX(5, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO6 ESP32_PINMUX(6, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO7 ESP32_PINMUX(7, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO8 ESP32_PINMUX(8, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO9 ESP32_PINMUX(9, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO10 ESP32_PINMUX(10, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO11 ESP32_PINMUX(11, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO12 ESP32_PINMUX(12, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO13 ESP32_PINMUX(13, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO14 ESP32_PINMUX(14, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO15 ESP32_PINMUX(15, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO16 ESP32_PINMUX(16, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1CTRL_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_CTRL_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO17 ESP32_PINMUX(17, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -/* PCNT0_CH1SIG */ -#define PCNT0_CH1SIG_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO18 ESP32_PINMUX(18, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO19 ESP32_PINMUX(19, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO20 ESP32_PINMUX(20, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO21 ESP32_PINMUX(21, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO26 ESP32_PINMUX(26, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO27 ESP32_PINMUX(27, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO28 ESP32_PINMUX(28, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO29 ESP32_PINMUX(29, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO30 ESP32_PINMUX(30, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO31 ESP32_PINMUX(31, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO32 ESP32_PINMUX(32, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO33 ESP32_PINMUX(33, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO34 ESP32_PINMUX(34, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO35 ESP32_PINMUX(35, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO36 ESP32_PINMUX(36, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO37 ESP32_PINMUX(37, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO38 ESP32_PINMUX(38, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO39 ESP32_PINMUX(39, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO40 ESP32_PINMUX(40, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO41 ESP32_PINMUX(41, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO42 ESP32_PINMUX(42, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO43 ESP32_PINMUX(43, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO44 ESP32_PINMUX(44, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO45 ESP32_PINMUX(45, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO46 ESP32_PINMUX(46, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO47 ESP32_PINMUX(47, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define PCNT3_CH1SIG_GPIO48 ESP32_PINMUX(48, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +/* SDHC0_CD */ +#define SDHC0_CD_GPIO0 ESP32_PINMUX(0, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO1 ESP32_PINMUX(1, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO2 ESP32_PINMUX(2, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO3 ESP32_PINMUX(3, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO4 ESP32_PINMUX(4, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO5 ESP32_PINMUX(5, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO6 ESP32_PINMUX(6, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO7 ESP32_PINMUX(7, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO8 ESP32_PINMUX(8, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO9 ESP32_PINMUX(9, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO10 ESP32_PINMUX(10, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO11 ESP32_PINMUX(11, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO12 ESP32_PINMUX(12, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO13 ESP32_PINMUX(13, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO14 ESP32_PINMUX(14, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO15 ESP32_PINMUX(15, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO16 ESP32_PINMUX(16, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT0_CH1SIG_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_SIG_CH1_IN0, ESP_NOSIG) +#define SDHC0_CD_GPIO17 ESP32_PINMUX(17, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -/* PCNT1_CH0CTRL */ -#define PCNT1_CH0CTRL_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO18 ESP32_PINMUX(18, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO19 ESP32_PINMUX(19, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO20 ESP32_PINMUX(20, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO21 ESP32_PINMUX(21, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO26 ESP32_PINMUX(26, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO27 ESP32_PINMUX(27, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO28 ESP32_PINMUX(28, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO29 ESP32_PINMUX(29, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO30 ESP32_PINMUX(30, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO31 ESP32_PINMUX(31, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO32 ESP32_PINMUX(32, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO33 ESP32_PINMUX(33, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO34 ESP32_PINMUX(34, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO35 ESP32_PINMUX(35, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO36 ESP32_PINMUX(36, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO37 ESP32_PINMUX(37, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO38 ESP32_PINMUX(38, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO39 ESP32_PINMUX(39, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO40 ESP32_PINMUX(40, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO41 ESP32_PINMUX(41, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO42 ESP32_PINMUX(42, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO43 ESP32_PINMUX(43, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO44 ESP32_PINMUX(44, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO45 ESP32_PINMUX(45, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO46 ESP32_PINMUX(46, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO47 ESP32_PINMUX(47, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CD_GPIO48 ESP32_PINMUX(48, ESP_SDHOST_CARD_DETECT_N_1, ESP_NOSIG) -#define PCNT1_CH0CTRL_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +/* SDHC0_CLKOUT */ +#define SDHC0_CLKOUT_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0CTRL_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_CTRL_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -/* PCNT1_CH0SIG */ -#define PCNT1_CH0SIG_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CLKOUT_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_1) -#define PCNT1_CH0SIG_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +/* SDHC0_CMD */ +#define SDHC0_CMD_GPIO0 ESP32_PINMUX(0, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO1 ESP32_PINMUX(1, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO2 ESP32_PINMUX(2, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO3 ESP32_PINMUX(3, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO4 ESP32_PINMUX(4, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO5 ESP32_PINMUX(5, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO6 ESP32_PINMUX(6, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO7 ESP32_PINMUX(7, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO8 ESP32_PINMUX(8, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO9 ESP32_PINMUX(9, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO10 ESP32_PINMUX(10, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO11 ESP32_PINMUX(11, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO12 ESP32_PINMUX(12, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO13 ESP32_PINMUX(13, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO14 ESP32_PINMUX(14, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO15 ESP32_PINMUX(15, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO16 ESP32_PINMUX(16, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH0SIG_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_SIG_CH0_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO17 ESP32_PINMUX(17, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -/* PCNT1_CH1CTRL */ -#define PCNT1_CH1CTRL_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO18 ESP32_PINMUX(18, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO19 ESP32_PINMUX(19, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO20 ESP32_PINMUX(20, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO21 ESP32_PINMUX(21, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO26 ESP32_PINMUX(26, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO27 ESP32_PINMUX(27, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO28 ESP32_PINMUX(28, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO29 ESP32_PINMUX(29, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO30 ESP32_PINMUX(30, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO31 ESP32_PINMUX(31, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO32 ESP32_PINMUX(32, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO33 ESP32_PINMUX(33, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO34 ESP32_PINMUX(34, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO35 ESP32_PINMUX(35, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO36 ESP32_PINMUX(36, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO37 ESP32_PINMUX(37, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO38 ESP32_PINMUX(38, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO39 ESP32_PINMUX(39, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO40 ESP32_PINMUX(40, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO41 ESP32_PINMUX(41, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO42 ESP32_PINMUX(42, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO43 ESP32_PINMUX(43, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO44 ESP32_PINMUX(44, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO45 ESP32_PINMUX(45, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO46 ESP32_PINMUX(46, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO47 ESP32_PINMUX(47, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_CMD_GPIO48 ESP32_PINMUX(48, ESP_SDHOST_CCMD_IN_1, ESP_SDHOST_CCMD_OUT_1) -#define PCNT1_CH1CTRL_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +/* SDHC0_DATA0 */ +#define SDHC0_DATA0_GPIO0 ESP32_PINMUX(0, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO1 ESP32_PINMUX(1, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO2 ESP32_PINMUX(2, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO3 ESP32_PINMUX(3, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO4 ESP32_PINMUX(4, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO5 ESP32_PINMUX(5, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO6 ESP32_PINMUX(6, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO7 ESP32_PINMUX(7, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO8 ESP32_PINMUX(8, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO9 ESP32_PINMUX(9, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO10 ESP32_PINMUX(10, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO11 ESP32_PINMUX(11, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO12 ESP32_PINMUX(12, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO13 ESP32_PINMUX(13, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO14 ESP32_PINMUX(14, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO15 ESP32_PINMUX(15, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO16 ESP32_PINMUX(16, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1CTRL_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_CTRL_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO17 ESP32_PINMUX(17, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -/* PCNT1_CH1SIG */ -#define PCNT1_CH1SIG_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO18 ESP32_PINMUX(18, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO19 ESP32_PINMUX(19, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO20 ESP32_PINMUX(20, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO21 ESP32_PINMUX(21, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO26 ESP32_PINMUX(26, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO27 ESP32_PINMUX(27, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO28 ESP32_PINMUX(28, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO29 ESP32_PINMUX(29, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO30 ESP32_PINMUX(30, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO31 ESP32_PINMUX(31, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO32 ESP32_PINMUX(32, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO33 ESP32_PINMUX(33, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO34 ESP32_PINMUX(34, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO35 ESP32_PINMUX(35, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO36 ESP32_PINMUX(36, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO37 ESP32_PINMUX(37, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO38 ESP32_PINMUX(38, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO39 ESP32_PINMUX(39, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO40 ESP32_PINMUX(40, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO41 ESP32_PINMUX(41, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO42 ESP32_PINMUX(42, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO43 ESP32_PINMUX(43, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO44 ESP32_PINMUX(44, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO45 ESP32_PINMUX(45, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO46 ESP32_PINMUX(46, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO47 ESP32_PINMUX(47, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA0_GPIO48 ESP32_PINMUX(48, ESP_SDHOST_CDATA_IN_10, ESP_SDHOST_CDATA_OUT_10) -#define PCNT1_CH1SIG_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +/* SDHC0_DATA1 */ +#define SDHC0_DATA1_GPIO0 ESP32_PINMUX(0, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO1 ESP32_PINMUX(1, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO2 ESP32_PINMUX(2, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO3 ESP32_PINMUX(3, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO4 ESP32_PINMUX(4, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO5 ESP32_PINMUX(5, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO6 ESP32_PINMUX(6, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO7 ESP32_PINMUX(7, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO8 ESP32_PINMUX(8, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO9 ESP32_PINMUX(9, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO10 ESP32_PINMUX(10, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO11 ESP32_PINMUX(11, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO12 ESP32_PINMUX(12, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO13 ESP32_PINMUX(13, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO14 ESP32_PINMUX(14, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO15 ESP32_PINMUX(15, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO16 ESP32_PINMUX(16, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT1_CH1SIG_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_SIG_CH1_IN1, ESP_NOSIG) +#define SDHC0_DATA1_GPIO17 ESP32_PINMUX(17, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -/* PCNT2_CH0CTRL */ -#define PCNT2_CH0CTRL_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO18 ESP32_PINMUX(18, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO19 ESP32_PINMUX(19, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO20 ESP32_PINMUX(20, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO21 ESP32_PINMUX(21, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO26 ESP32_PINMUX(26, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO27 ESP32_PINMUX(27, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO28 ESP32_PINMUX(28, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO29 ESP32_PINMUX(29, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO30 ESP32_PINMUX(30, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO31 ESP32_PINMUX(31, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO32 ESP32_PINMUX(32, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO33 ESP32_PINMUX(33, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO34 ESP32_PINMUX(34, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO35 ESP32_PINMUX(35, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO36 ESP32_PINMUX(36, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO37 ESP32_PINMUX(37, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO38 ESP32_PINMUX(38, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO39 ESP32_PINMUX(39, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO40 ESP32_PINMUX(40, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO41 ESP32_PINMUX(41, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO42 ESP32_PINMUX(42, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO43 ESP32_PINMUX(43, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO44 ESP32_PINMUX(44, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO45 ESP32_PINMUX(45, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO46 ESP32_PINMUX(46, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO47 ESP32_PINMUX(47, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA1_GPIO48 ESP32_PINMUX(48, ESP_SDHOST_CDATA_IN_11, ESP_SDHOST_CDATA_OUT_11) -#define PCNT2_CH0CTRL_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +/* SDHC0_DATA2 */ +#define SDHC0_DATA2_GPIO0 ESP32_PINMUX(0, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO1 ESP32_PINMUX(1, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO2 ESP32_PINMUX(2, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO3 ESP32_PINMUX(3, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO4 ESP32_PINMUX(4, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO5 ESP32_PINMUX(5, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO6 ESP32_PINMUX(6, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO7 ESP32_PINMUX(7, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO8 ESP32_PINMUX(8, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO9 ESP32_PINMUX(9, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO10 ESP32_PINMUX(10, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO11 ESP32_PINMUX(11, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO12 ESP32_PINMUX(12, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO13 ESP32_PINMUX(13, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO14 ESP32_PINMUX(14, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO15 ESP32_PINMUX(15, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO16 ESP32_PINMUX(16, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0CTRL_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_CTRL_CH0_IN2, ESP_NOSIG) +#define SDHC0_DATA2_GPIO17 ESP32_PINMUX(17, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -/* PCNT2_CH0SIG */ -#define PCNT2_CH0SIG_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO18 ESP32_PINMUX(18, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO19 ESP32_PINMUX(19, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO20 ESP32_PINMUX(20, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO21 ESP32_PINMUX(21, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO26 ESP32_PINMUX(26, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO27 ESP32_PINMUX(27, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO28 ESP32_PINMUX(28, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO29 ESP32_PINMUX(29, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO30 ESP32_PINMUX(30, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO31 ESP32_PINMUX(31, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO32 ESP32_PINMUX(32, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO33 ESP32_PINMUX(33, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO34 ESP32_PINMUX(34, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO35 ESP32_PINMUX(35, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO36 ESP32_PINMUX(36, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO37 ESP32_PINMUX(37, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO38 ESP32_PINMUX(38, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO39 ESP32_PINMUX(39, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO40 ESP32_PINMUX(40, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO41 ESP32_PINMUX(41, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO42 ESP32_PINMUX(42, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO43 ESP32_PINMUX(43, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO44 ESP32_PINMUX(44, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO45 ESP32_PINMUX(45, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO46 ESP32_PINMUX(46, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO47 ESP32_PINMUX(47, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA2_GPIO48 ESP32_PINMUX(48, ESP_SDHOST_CDATA_IN_12, ESP_SDHOST_CDATA_OUT_12) -#define PCNT2_CH0SIG_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +/* SDHC0_DATA3 */ +#define SDHC0_DATA3_GPIO0 ESP32_PINMUX(0, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO1 ESP32_PINMUX(1, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO2 ESP32_PINMUX(2, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO3 ESP32_PINMUX(3, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO4 ESP32_PINMUX(4, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO5 ESP32_PINMUX(5, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO6 ESP32_PINMUX(6, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO7 ESP32_PINMUX(7, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO8 ESP32_PINMUX(8, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO9 ESP32_PINMUX(9, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO10 ESP32_PINMUX(10, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO11 ESP32_PINMUX(11, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO12 ESP32_PINMUX(12, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO13 ESP32_PINMUX(13, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO14 ESP32_PINMUX(14, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO15 ESP32_PINMUX(15, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO16 ESP32_PINMUX(16, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH0SIG_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC0_DATA3_GPIO17 ESP32_PINMUX(17, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -/* PCNT2_CH1CTRL */ -#define PCNT2_CH1CTRL_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO18 ESP32_PINMUX(18, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO19 ESP32_PINMUX(19, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO20 ESP32_PINMUX(20, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO21 ESP32_PINMUX(21, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO26 ESP32_PINMUX(26, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO27 ESP32_PINMUX(27, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO28 ESP32_PINMUX(28, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO29 ESP32_PINMUX(29, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO30 ESP32_PINMUX(30, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO31 ESP32_PINMUX(31, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO32 ESP32_PINMUX(32, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO33 ESP32_PINMUX(33, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO34 ESP32_PINMUX(34, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO35 ESP32_PINMUX(35, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO36 ESP32_PINMUX(36, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO37 ESP32_PINMUX(37, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO38 ESP32_PINMUX(38, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO39 ESP32_PINMUX(39, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO40 ESP32_PINMUX(40, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO41 ESP32_PINMUX(41, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO42 ESP32_PINMUX(42, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO43 ESP32_PINMUX(43, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO44 ESP32_PINMUX(44, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO45 ESP32_PINMUX(45, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO46 ESP32_PINMUX(46, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO47 ESP32_PINMUX(47, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_DATA3_GPIO48 ESP32_PINMUX(48, ESP_SDHOST_CDATA_IN_13, ESP_SDHOST_CDATA_OUT_13) -#define PCNT2_CH1CTRL_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +/* SDHC0_WP */ +#define SDHC0_WP_GPIO0 ESP32_PINMUX(0, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO1 ESP32_PINMUX(1, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO2 ESP32_PINMUX(2, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO3 ESP32_PINMUX(3, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO4 ESP32_PINMUX(4, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO5 ESP32_PINMUX(5, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO6 ESP32_PINMUX(6, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO7 ESP32_PINMUX(7, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO8 ESP32_PINMUX(8, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO9 ESP32_PINMUX(9, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO10 ESP32_PINMUX(10, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO11 ESP32_PINMUX(11, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO12 ESP32_PINMUX(12, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO13 ESP32_PINMUX(13, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO14 ESP32_PINMUX(14, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO15 ESP32_PINMUX(15, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO16 ESP32_PINMUX(16, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1CTRL_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_CTRL_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO17 ESP32_PINMUX(17, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -/* PCNT2_CH1SIG */ -#define PCNT2_CH1SIG_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO18 ESP32_PINMUX(18, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO19 ESP32_PINMUX(19, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO20 ESP32_PINMUX(20, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO21 ESP32_PINMUX(21, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO26 ESP32_PINMUX(26, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO27 ESP32_PINMUX(27, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO28 ESP32_PINMUX(28, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO29 ESP32_PINMUX(29, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO30 ESP32_PINMUX(30, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO31 ESP32_PINMUX(31, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO32 ESP32_PINMUX(32, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO33 ESP32_PINMUX(33, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO34 ESP32_PINMUX(34, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO35 ESP32_PINMUX(35, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO36 ESP32_PINMUX(36, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO37 ESP32_PINMUX(37, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO38 ESP32_PINMUX(38, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO39 ESP32_PINMUX(39, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO40 ESP32_PINMUX(40, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO41 ESP32_PINMUX(41, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO42 ESP32_PINMUX(42, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO43 ESP32_PINMUX(43, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO44 ESP32_PINMUX(44, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO45 ESP32_PINMUX(45, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO46 ESP32_PINMUX(46, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO47 ESP32_PINMUX(47, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC0_WP_GPIO48 ESP32_PINMUX(48, ESP_SDHOST_CARD_WRITE_PRT_1, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +/* SDHC1_CD */ +#define SDHC1_CD_GPIO0 ESP32_PINMUX(0, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO1 ESP32_PINMUX(1, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO2 ESP32_PINMUX(2, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO3 ESP32_PINMUX(3, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO4 ESP32_PINMUX(4, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO5 ESP32_PINMUX(5, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO6 ESP32_PINMUX(6, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO7 ESP32_PINMUX(7, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO8 ESP32_PINMUX(8, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO9 ESP32_PINMUX(9, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO10 ESP32_PINMUX(10, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO11 ESP32_PINMUX(11, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO12 ESP32_PINMUX(12, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO13 ESP32_PINMUX(13, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO14 ESP32_PINMUX(14, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO15 ESP32_PINMUX(15, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO16 ESP32_PINMUX(16, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT2_CH1SIG_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_SIG_CH1_IN2, ESP_NOSIG) +#define SDHC1_CD_GPIO17 ESP32_PINMUX(17, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -/* PCNT3_CH0CTRL */ -#define PCNT3_CH0CTRL_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO18 ESP32_PINMUX(18, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO19 ESP32_PINMUX(19, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO20 ESP32_PINMUX(20, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO21 ESP32_PINMUX(21, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO26 ESP32_PINMUX(26, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO27 ESP32_PINMUX(27, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO28 ESP32_PINMUX(28, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO29 ESP32_PINMUX(29, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO30 ESP32_PINMUX(30, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO31 ESP32_PINMUX(31, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO32 ESP32_PINMUX(32, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO33 ESP32_PINMUX(33, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO34 ESP32_PINMUX(34, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO35 ESP32_PINMUX(35, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO36 ESP32_PINMUX(36, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO37 ESP32_PINMUX(37, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO38 ESP32_PINMUX(38, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO39 ESP32_PINMUX(39, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO40 ESP32_PINMUX(40, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO41 ESP32_PINMUX(41, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO42 ESP32_PINMUX(42, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO43 ESP32_PINMUX(43, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO44 ESP32_PINMUX(44, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO45 ESP32_PINMUX(45, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO46 ESP32_PINMUX(46, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO47 ESP32_PINMUX(47, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CD_GPIO48 ESP32_PINMUX(48, ESP_SDHOST_CARD_DETECT_N_2, ESP_NOSIG) -#define PCNT3_CH0CTRL_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +/* SDHC1_CLKOUT */ +#define SDHC1_CLKOUT_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0CTRL_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_CTRL_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -/* PCNT3_CH0SIG */ -#define PCNT3_CH0SIG_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CLKOUT_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_SDHOST_CCLK_OUT_2) -#define PCNT3_CH0SIG_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +/* SDHC1_CMD */ +#define SDHC1_CMD_GPIO0 ESP32_PINMUX(0, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO1 ESP32_PINMUX(1, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO2 ESP32_PINMUX(2, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO3 ESP32_PINMUX(3, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO4 ESP32_PINMUX(4, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO5 ESP32_PINMUX(5, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO6 ESP32_PINMUX(6, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO7 ESP32_PINMUX(7, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO8 ESP32_PINMUX(8, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO9 ESP32_PINMUX(9, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO10 ESP32_PINMUX(10, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO11 ESP32_PINMUX(11, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO12 ESP32_PINMUX(12, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO13 ESP32_PINMUX(13, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO14 ESP32_PINMUX(14, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO15 ESP32_PINMUX(15, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO16 ESP32_PINMUX(16, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH0SIG_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_SIG_CH0_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO17 ESP32_PINMUX(17, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -/* PCNT3_CH1CTRL */ -#define PCNT3_CH1CTRL_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO18 ESP32_PINMUX(18, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO19 ESP32_PINMUX(19, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO20 ESP32_PINMUX(20, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO21 ESP32_PINMUX(21, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO26 ESP32_PINMUX(26, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO27 ESP32_PINMUX(27, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO28 ESP32_PINMUX(28, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO29 ESP32_PINMUX(29, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO30 ESP32_PINMUX(30, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO31 ESP32_PINMUX(31, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO32 ESP32_PINMUX(32, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO33 ESP32_PINMUX(33, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO34 ESP32_PINMUX(34, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO35 ESP32_PINMUX(35, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO36 ESP32_PINMUX(36, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO37 ESP32_PINMUX(37, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO38 ESP32_PINMUX(38, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO39 ESP32_PINMUX(39, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO40 ESP32_PINMUX(40, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO41 ESP32_PINMUX(41, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO42 ESP32_PINMUX(42, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO43 ESP32_PINMUX(43, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO44 ESP32_PINMUX(44, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO45 ESP32_PINMUX(45, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO46 ESP32_PINMUX(46, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO47 ESP32_PINMUX(47, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_CMD_GPIO48 ESP32_PINMUX(48, ESP_SDHOST_CCMD_IN_2, ESP_SDHOST_CCMD_OUT_2) -#define PCNT3_CH1CTRL_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +/* SDHC1_DATA0 */ +#define SDHC1_DATA0_GPIO0 ESP32_PINMUX(0, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO1 ESP32_PINMUX(1, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO2 ESP32_PINMUX(2, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO3 ESP32_PINMUX(3, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO4 ESP32_PINMUX(4, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO5 ESP32_PINMUX(5, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO6 ESP32_PINMUX(6, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO7 ESP32_PINMUX(7, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO8 ESP32_PINMUX(8, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO9 ESP32_PINMUX(9, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO10 ESP32_PINMUX(10, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO11 ESP32_PINMUX(11, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO12 ESP32_PINMUX(12, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO13 ESP32_PINMUX(13, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO14 ESP32_PINMUX(14, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO15 ESP32_PINMUX(15, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO16 ESP32_PINMUX(16, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -#define PCNT3_CH1CTRL_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_CTRL_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO17 ESP32_PINMUX(17, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) -/* PCNT3_CH1SIG */ -#define PCNT3_CH1SIG_GPIO0 \ - ESP32_PINMUX(0, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_DATA0_GPIO18 ESP32_PINMUX(18, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO19 ESP32_PINMUX(19, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO20 ESP32_PINMUX(20, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO21 ESP32_PINMUX(21, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO26 ESP32_PINMUX(26, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO27 ESP32_PINMUX(27, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO28 ESP32_PINMUX(28, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO29 ESP32_PINMUX(29, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO30 ESP32_PINMUX(30, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO31 ESP32_PINMUX(31, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO32 ESP32_PINMUX(32, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO33 ESP32_PINMUX(33, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO34 ESP32_PINMUX(34, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO35 ESP32_PINMUX(35, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO36 ESP32_PINMUX(36, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO37 ESP32_PINMUX(37, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO38 ESP32_PINMUX(38, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO39 ESP32_PINMUX(39, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO40 ESP32_PINMUX(40, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO41 ESP32_PINMUX(41, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO42 ESP32_PINMUX(42, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO43 ESP32_PINMUX(43, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO44 ESP32_PINMUX(44, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO45 ESP32_PINMUX(45, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO46 ESP32_PINMUX(46, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO47 ESP32_PINMUX(47, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +#define SDHC1_DATA0_GPIO48 ESP32_PINMUX(48, ESP_SDHOST_CDATA_IN_20, ESP_SDHOST_CDATA_OUT_20) + +/* SDHC1_DATA1 */ +#define SDHC1_DATA1_GPIO0 ESP32_PINMUX(0, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO1 ESP32_PINMUX(1, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO2 ESP32_PINMUX(2, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO3 ESP32_PINMUX(3, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO4 ESP32_PINMUX(4, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO5 ESP32_PINMUX(5, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO6 ESP32_PINMUX(6, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO7 ESP32_PINMUX(7, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO8 ESP32_PINMUX(8, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO9 ESP32_PINMUX(9, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO10 ESP32_PINMUX(10, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO11 ESP32_PINMUX(11, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO12 ESP32_PINMUX(12, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO13 ESP32_PINMUX(13, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO14 ESP32_PINMUX(14, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO15 ESP32_PINMUX(15, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO16 ESP32_PINMUX(16, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO17 ESP32_PINMUX(17, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO18 ESP32_PINMUX(18, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO19 ESP32_PINMUX(19, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO20 ESP32_PINMUX(20, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO21 ESP32_PINMUX(21, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO26 ESP32_PINMUX(26, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO27 ESP32_PINMUX(27, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO28 ESP32_PINMUX(28, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO29 ESP32_PINMUX(29, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO30 ESP32_PINMUX(30, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO31 ESP32_PINMUX(31, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO32 ESP32_PINMUX(32, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO33 ESP32_PINMUX(33, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO34 ESP32_PINMUX(34, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO35 ESP32_PINMUX(35, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO36 ESP32_PINMUX(36, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO37 ESP32_PINMUX(37, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO38 ESP32_PINMUX(38, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO39 ESP32_PINMUX(39, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO40 ESP32_PINMUX(40, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO41 ESP32_PINMUX(41, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO42 ESP32_PINMUX(42, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO43 ESP32_PINMUX(43, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO44 ESP32_PINMUX(44, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO45 ESP32_PINMUX(45, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO46 ESP32_PINMUX(46, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO47 ESP32_PINMUX(47, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +#define SDHC1_DATA1_GPIO48 ESP32_PINMUX(48, ESP_SDHOST_CDATA_IN_21, ESP_SDHOST_CDATA_OUT_21) + +/* SDHC1_DATA2 */ +#define SDHC1_DATA2_GPIO0 ESP32_PINMUX(0, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO1 ESP32_PINMUX(1, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO2 ESP32_PINMUX(2, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO3 ESP32_PINMUX(3, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO4 ESP32_PINMUX(4, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO5 ESP32_PINMUX(5, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO6 ESP32_PINMUX(6, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO7 ESP32_PINMUX(7, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO8 ESP32_PINMUX(8, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO9 ESP32_PINMUX(9, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO10 ESP32_PINMUX(10, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO11 ESP32_PINMUX(11, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO12 ESP32_PINMUX(12, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO13 ESP32_PINMUX(13, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO14 ESP32_PINMUX(14, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO15 ESP32_PINMUX(15, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO16 ESP32_PINMUX(16, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO17 ESP32_PINMUX(17, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO18 ESP32_PINMUX(18, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO19 ESP32_PINMUX(19, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO20 ESP32_PINMUX(20, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO21 ESP32_PINMUX(21, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO26 ESP32_PINMUX(26, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO27 ESP32_PINMUX(27, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO28 ESP32_PINMUX(28, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO29 ESP32_PINMUX(29, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO30 ESP32_PINMUX(30, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO31 ESP32_PINMUX(31, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO32 ESP32_PINMUX(32, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO33 ESP32_PINMUX(33, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO34 ESP32_PINMUX(34, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO35 ESP32_PINMUX(35, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO36 ESP32_PINMUX(36, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO37 ESP32_PINMUX(37, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO38 ESP32_PINMUX(38, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO39 ESP32_PINMUX(39, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO40 ESP32_PINMUX(40, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO41 ESP32_PINMUX(41, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO42 ESP32_PINMUX(42, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO43 ESP32_PINMUX(43, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO44 ESP32_PINMUX(44, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO45 ESP32_PINMUX(45, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO46 ESP32_PINMUX(46, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO47 ESP32_PINMUX(47, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +#define SDHC1_DATA2_GPIO48 ESP32_PINMUX(48, ESP_SDHOST_CDATA_IN_22, ESP_SDHOST_CDATA_OUT_22) + +/* SDHC1_DATA3 */ +#define SDHC1_DATA3_GPIO0 ESP32_PINMUX(0, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO1 ESP32_PINMUX(1, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO2 ESP32_PINMUX(2, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO3 ESP32_PINMUX(3, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO4 ESP32_PINMUX(4, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO5 ESP32_PINMUX(5, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO6 ESP32_PINMUX(6, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO7 ESP32_PINMUX(7, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO8 ESP32_PINMUX(8, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO9 ESP32_PINMUX(9, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO10 ESP32_PINMUX(10, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO11 ESP32_PINMUX(11, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO12 ESP32_PINMUX(12, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO13 ESP32_PINMUX(13, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO14 ESP32_PINMUX(14, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO15 ESP32_PINMUX(15, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO16 ESP32_PINMUX(16, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO17 ESP32_PINMUX(17, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO18 ESP32_PINMUX(18, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO19 ESP32_PINMUX(19, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO20 ESP32_PINMUX(20, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO21 ESP32_PINMUX(21, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO26 ESP32_PINMUX(26, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO27 ESP32_PINMUX(27, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO28 ESP32_PINMUX(28, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO29 ESP32_PINMUX(29, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO30 ESP32_PINMUX(30, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO31 ESP32_PINMUX(31, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO32 ESP32_PINMUX(32, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO33 ESP32_PINMUX(33, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO34 ESP32_PINMUX(34, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO35 ESP32_PINMUX(35, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO36 ESP32_PINMUX(36, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO37 ESP32_PINMUX(37, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO38 ESP32_PINMUX(38, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO39 ESP32_PINMUX(39, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO40 ESP32_PINMUX(40, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO41 ESP32_PINMUX(41, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO42 ESP32_PINMUX(42, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO43 ESP32_PINMUX(43, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO44 ESP32_PINMUX(44, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO45 ESP32_PINMUX(45, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO46 ESP32_PINMUX(46, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO47 ESP32_PINMUX(47, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +#define SDHC1_DATA3_GPIO48 ESP32_PINMUX(48, ESP_SDHOST_CDATA_IN_23, ESP_SDHOST_CDATA_OUT_23) + +/* SDHC1_WP */ +#define SDHC1_WP_GPIO0 ESP32_PINMUX(0, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO1 \ - ESP32_PINMUX(1, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO1 ESP32_PINMUX(1, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO2 \ - ESP32_PINMUX(2, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO2 ESP32_PINMUX(2, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO3 \ - ESP32_PINMUX(3, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO3 ESP32_PINMUX(3, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO4 \ - ESP32_PINMUX(4, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO4 ESP32_PINMUX(4, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO5 \ - ESP32_PINMUX(5, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO5 ESP32_PINMUX(5, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO6 \ - ESP32_PINMUX(6, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO6 ESP32_PINMUX(6, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO7 \ - ESP32_PINMUX(7, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO7 ESP32_PINMUX(7, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO8 \ - ESP32_PINMUX(8, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO8 ESP32_PINMUX(8, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO9 \ - ESP32_PINMUX(9, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO9 ESP32_PINMUX(9, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO10 \ - ESP32_PINMUX(10, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO10 ESP32_PINMUX(10, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO11 \ - ESP32_PINMUX(11, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO11 ESP32_PINMUX(11, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO12 \ - ESP32_PINMUX(12, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO12 ESP32_PINMUX(12, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO13 \ - ESP32_PINMUX(13, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO13 ESP32_PINMUX(13, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO14 \ - ESP32_PINMUX(14, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO14 ESP32_PINMUX(14, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO15 \ - ESP32_PINMUX(15, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO15 ESP32_PINMUX(15, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO16 \ - ESP32_PINMUX(16, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO16 ESP32_PINMUX(16, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO17 \ - ESP32_PINMUX(17, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO17 ESP32_PINMUX(17, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO18 \ - ESP32_PINMUX(18, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO18 ESP32_PINMUX(18, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO19 \ - ESP32_PINMUX(19, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO19 ESP32_PINMUX(19, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO20 \ - ESP32_PINMUX(20, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO20 ESP32_PINMUX(20, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO21 \ - ESP32_PINMUX(21, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO21 ESP32_PINMUX(21, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO26 \ - ESP32_PINMUX(26, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO26 ESP32_PINMUX(26, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO27 \ - ESP32_PINMUX(27, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO27 ESP32_PINMUX(27, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO28 \ - ESP32_PINMUX(28, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO28 ESP32_PINMUX(28, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO29 \ - ESP32_PINMUX(29, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO29 ESP32_PINMUX(29, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO30 \ - ESP32_PINMUX(30, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO30 ESP32_PINMUX(30, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO31 \ - ESP32_PINMUX(31, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO31 ESP32_PINMUX(31, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO32 \ - ESP32_PINMUX(32, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO32 ESP32_PINMUX(32, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO33 \ - ESP32_PINMUX(33, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO33 ESP32_PINMUX(33, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO34 \ - ESP32_PINMUX(34, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO34 ESP32_PINMUX(34, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO35 \ - ESP32_PINMUX(35, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO35 ESP32_PINMUX(35, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO36 \ - ESP32_PINMUX(36, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO36 ESP32_PINMUX(36, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO37 \ - ESP32_PINMUX(37, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO37 ESP32_PINMUX(37, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO38 \ - ESP32_PINMUX(38, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO38 ESP32_PINMUX(38, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO39 \ - ESP32_PINMUX(39, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO39 ESP32_PINMUX(39, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO40 \ - ESP32_PINMUX(40, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO40 ESP32_PINMUX(40, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO41 \ - ESP32_PINMUX(41, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO41 ESP32_PINMUX(41, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO42 \ - ESP32_PINMUX(42, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO42 ESP32_PINMUX(42, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO43 \ - ESP32_PINMUX(43, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO43 ESP32_PINMUX(43, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO44 \ - ESP32_PINMUX(44, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO44 ESP32_PINMUX(44, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO45 \ - ESP32_PINMUX(45, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO45 ESP32_PINMUX(45, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO46 \ - ESP32_PINMUX(46, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO46 ESP32_PINMUX(46, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO47 \ - ESP32_PINMUX(47, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO47 ESP32_PINMUX(47, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) -#define PCNT3_CH1SIG_GPIO48 \ - ESP32_PINMUX(48, ESP_PCNT_SIG_CH1_IN3, ESP_NOSIG) +#define SDHC1_WP_GPIO48 ESP32_PINMUX(48, ESP_SDHOST_CARD_WRITE_PRT_2, ESP_NOSIG) /* SPIM2_CSEL */ -#define SPIM2_CSEL_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPICS0_OUT) -#define SPIM2_CSEL_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPICS0_OUT) +#define SPIM2_CSEL_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPICS0_OUT) /* SPIM2_CSEL1 */ -#define SPIM2_CSEL1_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPICS1_OUT) -#define SPIM2_CSEL1_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPICS1_OUT) +#define SPIM2_CSEL1_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPICS1_OUT) /* SPIM2_CSEL2 */ -#define SPIM2_CSEL2_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPICS2_OUT) -#define SPIM2_CSEL2_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPICS2_OUT) +#define SPIM2_CSEL2_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPICS2_OUT) /* SPIM2_CSEL3 */ -#define SPIM2_CSEL3_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPICS3_OUT) -#define SPIM2_CSEL3_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPICS3_OUT) +#define SPIM2_CSEL3_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPICS3_OUT) /* SPIM2_CSEL4 */ -#define SPIM2_CSEL4_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPICS4_OUT) -#define SPIM2_CSEL4_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPICS4_OUT) +#define SPIM2_CSEL4_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPICS4_OUT) /* SPIM2_CSEL5 */ -#define SPIM2_CSEL5_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPICS5_OUT) -#define SPIM2_CSEL5_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPICS5_OUT) +#define SPIM2_CSEL5_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPICS5_OUT) /* SPIM2_MISO */ -#define SPIM2_MISO_GPIO0 \ - ESP32_PINMUX(0, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO0 ESP32_PINMUX(0, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO1 \ - ESP32_PINMUX(1, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO1 ESP32_PINMUX(1, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO2 \ - ESP32_PINMUX(2, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO2 ESP32_PINMUX(2, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO3 \ - ESP32_PINMUX(3, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO3 ESP32_PINMUX(3, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO4 \ - ESP32_PINMUX(4, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO4 ESP32_PINMUX(4, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO5 \ - ESP32_PINMUX(5, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO5 ESP32_PINMUX(5, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO6 \ - ESP32_PINMUX(6, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO6 ESP32_PINMUX(6, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO7 \ - ESP32_PINMUX(7, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO7 ESP32_PINMUX(7, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO8 \ - ESP32_PINMUX(8, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO8 ESP32_PINMUX(8, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO9 \ - ESP32_PINMUX(9, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO9 ESP32_PINMUX(9, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO10 \ - ESP32_PINMUX(10, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO10 ESP32_PINMUX(10, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO11 \ - ESP32_PINMUX(11, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO11 ESP32_PINMUX(11, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO12 \ - ESP32_PINMUX(12, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO12 ESP32_PINMUX(12, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO13 \ - ESP32_PINMUX(13, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO13 ESP32_PINMUX(13, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO14 \ - ESP32_PINMUX(14, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO14 ESP32_PINMUX(14, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO15 \ - ESP32_PINMUX(15, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO15 ESP32_PINMUX(15, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO16 \ - ESP32_PINMUX(16, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO16 ESP32_PINMUX(16, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO17 \ - ESP32_PINMUX(17, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO17 ESP32_PINMUX(17, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO18 \ - ESP32_PINMUX(18, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO18 ESP32_PINMUX(18, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO19 \ - ESP32_PINMUX(19, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO19 ESP32_PINMUX(19, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO20 \ - ESP32_PINMUX(20, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO20 ESP32_PINMUX(20, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO21 \ - ESP32_PINMUX(21, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO21 ESP32_PINMUX(21, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO26 \ - ESP32_PINMUX(26, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO26 ESP32_PINMUX(26, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO27 \ - ESP32_PINMUX(27, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO27 ESP32_PINMUX(27, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO28 \ - ESP32_PINMUX(28, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO28 ESP32_PINMUX(28, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO29 \ - ESP32_PINMUX(29, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO29 ESP32_PINMUX(29, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO30 \ - ESP32_PINMUX(30, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO30 ESP32_PINMUX(30, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO31 \ - ESP32_PINMUX(31, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO31 ESP32_PINMUX(31, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO32 \ - ESP32_PINMUX(32, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO32 ESP32_PINMUX(32, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO33 \ - ESP32_PINMUX(33, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO33 ESP32_PINMUX(33, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO34 \ - ESP32_PINMUX(34, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO34 ESP32_PINMUX(34, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO35 \ - ESP32_PINMUX(35, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO35 ESP32_PINMUX(35, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO36 \ - ESP32_PINMUX(36, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO36 ESP32_PINMUX(36, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO37 \ - ESP32_PINMUX(37, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO37 ESP32_PINMUX(37, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO38 \ - ESP32_PINMUX(38, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO38 ESP32_PINMUX(38, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO39 \ - ESP32_PINMUX(39, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO39 ESP32_PINMUX(39, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO40 \ - ESP32_PINMUX(40, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO40 ESP32_PINMUX(40, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO41 \ - ESP32_PINMUX(41, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO41 ESP32_PINMUX(41, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO42 \ - ESP32_PINMUX(42, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO42 ESP32_PINMUX(42, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO43 \ - ESP32_PINMUX(43, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO43 ESP32_PINMUX(43, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO44 \ - ESP32_PINMUX(44, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO44 ESP32_PINMUX(44, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO45 \ - ESP32_PINMUX(45, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO45 ESP32_PINMUX(45, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO46 \ - ESP32_PINMUX(46, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO46 ESP32_PINMUX(46, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO47 \ - ESP32_PINMUX(47, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO47 ESP32_PINMUX(47, ESP_FSPIQ_IN, ESP_NOSIG) -#define SPIM2_MISO_GPIO48 \ - ESP32_PINMUX(48, ESP_FSPIQ_IN, ESP_NOSIG) +#define SPIM2_MISO_GPIO48 ESP32_PINMUX(48, ESP_FSPIQ_IN, ESP_NOSIG) /* SPIM2_MOSI */ -#define SPIM2_MOSI_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPID_OUT) -#define SPIM2_MOSI_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPID_OUT) +#define SPIM2_MOSI_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPID_OUT) /* SPIM2_SCLK */ -#define SPIM2_SCLK_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_FSPICLK_OUT) -#define SPIM2_SCLK_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPICLK_OUT) +#define SPIM2_SCLK_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_FSPICLK_OUT) /* SPIM3_CSEL */ -#define SPIM3_CSEL_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_SPI3_CS0_OUT) -#define SPIM3_CSEL_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_SPI3_CS0_OUT) +#define SPIM3_CSEL_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_SPI3_CS0_OUT) /* SPIM3_CSEL1 */ -#define SPIM3_CSEL1_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_SPI3_CS1_OUT) -#define SPIM3_CSEL1_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_SPI3_CS1_OUT) +#define SPIM3_CSEL1_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_SPI3_CS1_OUT) /* SPIM3_CSEL2 */ -#define SPIM3_CSEL2_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_SPI3_CS2_OUT) -#define SPIM3_CSEL2_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_SPI3_CS2_OUT) +#define SPIM3_CSEL2_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_SPI3_CS2_OUT) /* SPIM3_MISO */ -#define SPIM3_MISO_GPIO0 \ - ESP32_PINMUX(0, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO0 ESP32_PINMUX(0, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO1 \ - ESP32_PINMUX(1, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO1 ESP32_PINMUX(1, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO2 \ - ESP32_PINMUX(2, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO2 ESP32_PINMUX(2, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO3 \ - ESP32_PINMUX(3, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO3 ESP32_PINMUX(3, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO4 \ - ESP32_PINMUX(4, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO4 ESP32_PINMUX(4, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO5 \ - ESP32_PINMUX(5, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO5 ESP32_PINMUX(5, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO6 \ - ESP32_PINMUX(6, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO6 ESP32_PINMUX(6, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO7 \ - ESP32_PINMUX(7, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO7 ESP32_PINMUX(7, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO8 \ - ESP32_PINMUX(8, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO8 ESP32_PINMUX(8, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO9 \ - ESP32_PINMUX(9, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO9 ESP32_PINMUX(9, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO10 \ - ESP32_PINMUX(10, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO10 ESP32_PINMUX(10, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO11 \ - ESP32_PINMUX(11, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO11 ESP32_PINMUX(11, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO12 \ - ESP32_PINMUX(12, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO12 ESP32_PINMUX(12, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO13 \ - ESP32_PINMUX(13, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO13 ESP32_PINMUX(13, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO14 \ - ESP32_PINMUX(14, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO14 ESP32_PINMUX(14, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO15 \ - ESP32_PINMUX(15, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO15 ESP32_PINMUX(15, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO16 \ - ESP32_PINMUX(16, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO16 ESP32_PINMUX(16, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO17 \ - ESP32_PINMUX(17, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO17 ESP32_PINMUX(17, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO18 \ - ESP32_PINMUX(18, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO18 ESP32_PINMUX(18, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO19 \ - ESP32_PINMUX(19, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO19 ESP32_PINMUX(19, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO20 \ - ESP32_PINMUX(20, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO20 ESP32_PINMUX(20, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO21 \ - ESP32_PINMUX(21, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO21 ESP32_PINMUX(21, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO26 \ - ESP32_PINMUX(26, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO26 ESP32_PINMUX(26, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO27 \ - ESP32_PINMUX(27, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO27 ESP32_PINMUX(27, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO28 \ - ESP32_PINMUX(28, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO28 ESP32_PINMUX(28, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO29 \ - ESP32_PINMUX(29, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO29 ESP32_PINMUX(29, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO30 \ - ESP32_PINMUX(30, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO30 ESP32_PINMUX(30, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO31 \ - ESP32_PINMUX(31, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO31 ESP32_PINMUX(31, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO32 \ - ESP32_PINMUX(32, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO32 ESP32_PINMUX(32, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO33 \ - ESP32_PINMUX(33, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO33 ESP32_PINMUX(33, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO34 \ - ESP32_PINMUX(34, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO34 ESP32_PINMUX(34, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO35 \ - ESP32_PINMUX(35, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO35 ESP32_PINMUX(35, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO36 \ - ESP32_PINMUX(36, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO36 ESP32_PINMUX(36, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO37 \ - ESP32_PINMUX(37, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO37 ESP32_PINMUX(37, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO38 \ - ESP32_PINMUX(38, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO38 ESP32_PINMUX(38, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO39 \ - ESP32_PINMUX(39, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO39 ESP32_PINMUX(39, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO40 \ - ESP32_PINMUX(40, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO40 ESP32_PINMUX(40, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO41 \ - ESP32_PINMUX(41, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO41 ESP32_PINMUX(41, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO42 \ - ESP32_PINMUX(42, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO42 ESP32_PINMUX(42, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO43 \ - ESP32_PINMUX(43, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO43 ESP32_PINMUX(43, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO44 \ - ESP32_PINMUX(44, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO44 ESP32_PINMUX(44, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO45 \ - ESP32_PINMUX(45, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO45 ESP32_PINMUX(45, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO46 \ - ESP32_PINMUX(46, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO46 ESP32_PINMUX(46, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO47 \ - ESP32_PINMUX(47, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO47 ESP32_PINMUX(47, ESP_SPI3_Q_IN, ESP_NOSIG) -#define SPIM3_MISO_GPIO48 \ - ESP32_PINMUX(48, ESP_SPI3_Q_IN, ESP_NOSIG) +#define SPIM3_MISO_GPIO48 ESP32_PINMUX(48, ESP_SPI3_Q_IN, ESP_NOSIG) /* SPIM3_MOSI */ -#define SPIM3_MOSI_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_SPI3_D_OUT) -#define SPIM3_MOSI_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_SPI3_D_OUT) +#define SPIM3_MOSI_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_SPI3_D_OUT) /* SPIM3_SCLK */ -#define SPIM3_SCLK_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_SPI3_CLK_OUT) -#define SPIM3_SCLK_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_SPI3_CLK_OUT) +#define SPIM3_SCLK_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_SPI3_CLK_OUT) /* TWAI_BUS_OFF */ -#define TWAI_BUS_OFF_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) -#define TWAI_BUS_OFF_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) +#define TWAI_BUS_OFF_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_TWAI_BUS_OFF_ON) /* TWAI_CLKOUT */ -#define TWAI_CLKOUT_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_TWAI_CLKOUT) -#define TWAI_CLKOUT_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_TWAI_CLKOUT) +#define TWAI_CLKOUT_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_TWAI_CLKOUT) /* TWAI_RX */ -#define TWAI_RX_GPIO0 \ - ESP32_PINMUX(0, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO0 ESP32_PINMUX(0, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO1 \ - ESP32_PINMUX(1, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO1 ESP32_PINMUX(1, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO2 \ - ESP32_PINMUX(2, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO2 ESP32_PINMUX(2, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO3 \ - ESP32_PINMUX(3, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO3 ESP32_PINMUX(3, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO4 \ - ESP32_PINMUX(4, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO4 ESP32_PINMUX(4, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO5 \ - ESP32_PINMUX(5, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO5 ESP32_PINMUX(5, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO6 \ - ESP32_PINMUX(6, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO6 ESP32_PINMUX(6, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO7 \ - ESP32_PINMUX(7, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO7 ESP32_PINMUX(7, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO8 \ - ESP32_PINMUX(8, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO8 ESP32_PINMUX(8, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO9 \ - ESP32_PINMUX(9, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO9 ESP32_PINMUX(9, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO10 \ - ESP32_PINMUX(10, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO10 ESP32_PINMUX(10, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO11 \ - ESP32_PINMUX(11, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO11 ESP32_PINMUX(11, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO12 \ - ESP32_PINMUX(12, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO12 ESP32_PINMUX(12, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO13 \ - ESP32_PINMUX(13, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO13 ESP32_PINMUX(13, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO14 \ - ESP32_PINMUX(14, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO14 ESP32_PINMUX(14, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO15 \ - ESP32_PINMUX(15, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO15 ESP32_PINMUX(15, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO16 \ - ESP32_PINMUX(16, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO16 ESP32_PINMUX(16, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO17 \ - ESP32_PINMUX(17, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO17 ESP32_PINMUX(17, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO18 \ - ESP32_PINMUX(18, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO18 ESP32_PINMUX(18, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO19 \ - ESP32_PINMUX(19, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO19 ESP32_PINMUX(19, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO20 \ - ESP32_PINMUX(20, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO20 ESP32_PINMUX(20, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO21 \ - ESP32_PINMUX(21, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO21 ESP32_PINMUX(21, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO26 \ - ESP32_PINMUX(26, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO26 ESP32_PINMUX(26, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO27 \ - ESP32_PINMUX(27, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO27 ESP32_PINMUX(27, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO28 \ - ESP32_PINMUX(28, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO28 ESP32_PINMUX(28, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO29 \ - ESP32_PINMUX(29, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO29 ESP32_PINMUX(29, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO30 \ - ESP32_PINMUX(30, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO30 ESP32_PINMUX(30, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO31 \ - ESP32_PINMUX(31, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO31 ESP32_PINMUX(31, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO32 \ - ESP32_PINMUX(32, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO32 ESP32_PINMUX(32, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO33 \ - ESP32_PINMUX(33, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO33 ESP32_PINMUX(33, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO34 \ - ESP32_PINMUX(34, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO34 ESP32_PINMUX(34, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO35 \ - ESP32_PINMUX(35, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO35 ESP32_PINMUX(35, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO36 \ - ESP32_PINMUX(36, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO36 ESP32_PINMUX(36, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO37 \ - ESP32_PINMUX(37, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO37 ESP32_PINMUX(37, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO38 \ - ESP32_PINMUX(38, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO38 ESP32_PINMUX(38, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO39 \ - ESP32_PINMUX(39, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO39 ESP32_PINMUX(39, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO40 \ - ESP32_PINMUX(40, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO40 ESP32_PINMUX(40, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO41 \ - ESP32_PINMUX(41, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO41 ESP32_PINMUX(41, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO42 \ - ESP32_PINMUX(42, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO42 ESP32_PINMUX(42, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO43 \ - ESP32_PINMUX(43, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO43 ESP32_PINMUX(43, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO44 \ - ESP32_PINMUX(44, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO44 ESP32_PINMUX(44, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO45 \ - ESP32_PINMUX(45, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO45 ESP32_PINMUX(45, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO46 \ - ESP32_PINMUX(46, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO46 ESP32_PINMUX(46, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO47 \ - ESP32_PINMUX(47, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO47 ESP32_PINMUX(47, ESP_TWAI_RX, ESP_NOSIG) -#define TWAI_RX_GPIO48 \ - ESP32_PINMUX(48, ESP_TWAI_RX, ESP_NOSIG) +#define TWAI_RX_GPIO48 ESP32_PINMUX(48, ESP_TWAI_RX, ESP_NOSIG) /* TWAI_TX */ -#define TWAI_TX_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_TWAI_TX) -#define TWAI_TX_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_TWAI_TX) +#define TWAI_TX_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_TWAI_TX) /* UART0_CTS */ -#define UART0_CTS_GPIO0 \ - ESP32_PINMUX(0, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO0 ESP32_PINMUX(0, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO1 \ - ESP32_PINMUX(1, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO1 ESP32_PINMUX(1, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO2 \ - ESP32_PINMUX(2, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO2 ESP32_PINMUX(2, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO3 \ - ESP32_PINMUX(3, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO3 ESP32_PINMUX(3, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO4 \ - ESP32_PINMUX(4, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO4 ESP32_PINMUX(4, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO5 \ - ESP32_PINMUX(5, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO5 ESP32_PINMUX(5, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO6 \ - ESP32_PINMUX(6, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO6 ESP32_PINMUX(6, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO7 \ - ESP32_PINMUX(7, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO7 ESP32_PINMUX(7, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO8 \ - ESP32_PINMUX(8, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO8 ESP32_PINMUX(8, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO9 \ - ESP32_PINMUX(9, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO9 ESP32_PINMUX(9, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO10 \ - ESP32_PINMUX(10, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO10 ESP32_PINMUX(10, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO11 \ - ESP32_PINMUX(11, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO11 ESP32_PINMUX(11, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO12 \ - ESP32_PINMUX(12, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO12 ESP32_PINMUX(12, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO13 \ - ESP32_PINMUX(13, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO13 ESP32_PINMUX(13, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO14 \ - ESP32_PINMUX(14, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO14 ESP32_PINMUX(14, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO15 \ - ESP32_PINMUX(15, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO15 ESP32_PINMUX(15, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO16 \ - ESP32_PINMUX(16, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO16 ESP32_PINMUX(16, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO17 \ - ESP32_PINMUX(17, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO17 ESP32_PINMUX(17, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO18 \ - ESP32_PINMUX(18, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO18 ESP32_PINMUX(18, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO19 \ - ESP32_PINMUX(19, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO19 ESP32_PINMUX(19, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO20 \ - ESP32_PINMUX(20, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO20 ESP32_PINMUX(20, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO21 \ - ESP32_PINMUX(21, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO21 ESP32_PINMUX(21, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO26 \ - ESP32_PINMUX(26, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO26 ESP32_PINMUX(26, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO27 \ - ESP32_PINMUX(27, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO27 ESP32_PINMUX(27, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO28 \ - ESP32_PINMUX(28, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO28 ESP32_PINMUX(28, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO29 \ - ESP32_PINMUX(29, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO29 ESP32_PINMUX(29, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO30 \ - ESP32_PINMUX(30, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO30 ESP32_PINMUX(30, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO31 \ - ESP32_PINMUX(31, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO31 ESP32_PINMUX(31, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO32 \ - ESP32_PINMUX(32, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO32 ESP32_PINMUX(32, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO33 \ - ESP32_PINMUX(33, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO33 ESP32_PINMUX(33, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO34 \ - ESP32_PINMUX(34, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO34 ESP32_PINMUX(34, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO35 \ - ESP32_PINMUX(35, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO35 ESP32_PINMUX(35, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO36 \ - ESP32_PINMUX(36, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO36 ESP32_PINMUX(36, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO37 \ - ESP32_PINMUX(37, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO37 ESP32_PINMUX(37, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO38 \ - ESP32_PINMUX(38, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO38 ESP32_PINMUX(38, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO39 \ - ESP32_PINMUX(39, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO39 ESP32_PINMUX(39, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO40 \ - ESP32_PINMUX(40, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO40 ESP32_PINMUX(40, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO41 \ - ESP32_PINMUX(41, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO41 ESP32_PINMUX(41, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO42 \ - ESP32_PINMUX(42, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO42 ESP32_PINMUX(42, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO43 \ - ESP32_PINMUX(43, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO43 ESP32_PINMUX(43, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO44 \ - ESP32_PINMUX(44, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO44 ESP32_PINMUX(44, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO45 \ - ESP32_PINMUX(45, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO45 ESP32_PINMUX(45, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO46 \ - ESP32_PINMUX(46, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO46 ESP32_PINMUX(46, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO47 \ - ESP32_PINMUX(47, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO47 ESP32_PINMUX(47, ESP_U0CTS_IN, ESP_NOSIG) -#define UART0_CTS_GPIO48 \ - ESP32_PINMUX(48, ESP_U0CTS_IN, ESP_NOSIG) +#define UART0_CTS_GPIO48 ESP32_PINMUX(48, ESP_U0CTS_IN, ESP_NOSIG) /* UART0_DSR */ -#define UART0_DSR_GPIO0 \ - ESP32_PINMUX(0, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO0 ESP32_PINMUX(0, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO1 \ - ESP32_PINMUX(1, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO1 ESP32_PINMUX(1, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO2 \ - ESP32_PINMUX(2, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO2 ESP32_PINMUX(2, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO3 \ - ESP32_PINMUX(3, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO3 ESP32_PINMUX(3, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO4 \ - ESP32_PINMUX(4, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO4 ESP32_PINMUX(4, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO5 \ - ESP32_PINMUX(5, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO5 ESP32_PINMUX(5, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO6 \ - ESP32_PINMUX(6, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO6 ESP32_PINMUX(6, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO7 \ - ESP32_PINMUX(7, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO7 ESP32_PINMUX(7, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO8 \ - ESP32_PINMUX(8, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO8 ESP32_PINMUX(8, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO9 \ - ESP32_PINMUX(9, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO9 ESP32_PINMUX(9, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO10 \ - ESP32_PINMUX(10, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO10 ESP32_PINMUX(10, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO11 \ - ESP32_PINMUX(11, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO11 ESP32_PINMUX(11, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO12 \ - ESP32_PINMUX(12, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO12 ESP32_PINMUX(12, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO13 \ - ESP32_PINMUX(13, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO13 ESP32_PINMUX(13, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO14 \ - ESP32_PINMUX(14, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO14 ESP32_PINMUX(14, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO15 \ - ESP32_PINMUX(15, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO15 ESP32_PINMUX(15, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO16 \ - ESP32_PINMUX(16, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO16 ESP32_PINMUX(16, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO17 \ - ESP32_PINMUX(17, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO17 ESP32_PINMUX(17, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO18 \ - ESP32_PINMUX(18, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO18 ESP32_PINMUX(18, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO19 \ - ESP32_PINMUX(19, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO19 ESP32_PINMUX(19, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO20 \ - ESP32_PINMUX(20, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO20 ESP32_PINMUX(20, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO21 \ - ESP32_PINMUX(21, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO21 ESP32_PINMUX(21, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO26 \ - ESP32_PINMUX(26, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO26 ESP32_PINMUX(26, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO27 \ - ESP32_PINMUX(27, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO27 ESP32_PINMUX(27, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO28 \ - ESP32_PINMUX(28, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO28 ESP32_PINMUX(28, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO29 \ - ESP32_PINMUX(29, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO29 ESP32_PINMUX(29, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO30 \ - ESP32_PINMUX(30, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO30 ESP32_PINMUX(30, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO31 \ - ESP32_PINMUX(31, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO31 ESP32_PINMUX(31, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO32 \ - ESP32_PINMUX(32, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO32 ESP32_PINMUX(32, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO33 \ - ESP32_PINMUX(33, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO33 ESP32_PINMUX(33, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO34 \ - ESP32_PINMUX(34, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO34 ESP32_PINMUX(34, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO35 \ - ESP32_PINMUX(35, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO35 ESP32_PINMUX(35, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO36 \ - ESP32_PINMUX(36, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO36 ESP32_PINMUX(36, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO37 \ - ESP32_PINMUX(37, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO37 ESP32_PINMUX(37, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO38 \ - ESP32_PINMUX(38, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO38 ESP32_PINMUX(38, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO39 \ - ESP32_PINMUX(39, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO39 ESP32_PINMUX(39, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO40 \ - ESP32_PINMUX(40, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO40 ESP32_PINMUX(40, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO41 \ - ESP32_PINMUX(41, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO41 ESP32_PINMUX(41, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO42 \ - ESP32_PINMUX(42, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO42 ESP32_PINMUX(42, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO43 \ - ESP32_PINMUX(43, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO43 ESP32_PINMUX(43, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO44 \ - ESP32_PINMUX(44, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO44 ESP32_PINMUX(44, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO45 \ - ESP32_PINMUX(45, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO45 ESP32_PINMUX(45, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO46 \ - ESP32_PINMUX(46, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO46 ESP32_PINMUX(46, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO47 \ - ESP32_PINMUX(47, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO47 ESP32_PINMUX(47, ESP_U0DSR_IN, ESP_NOSIG) -#define UART0_DSR_GPIO48 \ - ESP32_PINMUX(48, ESP_U0DSR_IN, ESP_NOSIG) +#define UART0_DSR_GPIO48 ESP32_PINMUX(48, ESP_U0DSR_IN, ESP_NOSIG) /* UART0_DTR */ -#define UART0_DTR_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_U0DTR_OUT) -#define UART0_DTR_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_U0DTR_OUT) +#define UART0_DTR_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_U0DTR_OUT) /* UART0_RTS */ -#define UART0_RTS_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_U0RTS_OUT) -#define UART0_RTS_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_U0RTS_OUT) +#define UART0_RTS_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_U0RTS_OUT) /* UART0_RX */ -#define UART0_RX_GPIO0 \ - ESP32_PINMUX(0, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO0 ESP32_PINMUX(0, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO1 \ - ESP32_PINMUX(1, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO1 ESP32_PINMUX(1, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO2 \ - ESP32_PINMUX(2, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO2 ESP32_PINMUX(2, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO3 \ - ESP32_PINMUX(3, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO3 ESP32_PINMUX(3, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO4 \ - ESP32_PINMUX(4, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO4 ESP32_PINMUX(4, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO5 \ - ESP32_PINMUX(5, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO5 ESP32_PINMUX(5, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO6 \ - ESP32_PINMUX(6, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO6 ESP32_PINMUX(6, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO7 \ - ESP32_PINMUX(7, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO7 ESP32_PINMUX(7, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO8 \ - ESP32_PINMUX(8, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO8 ESP32_PINMUX(8, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO9 \ - ESP32_PINMUX(9, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO9 ESP32_PINMUX(9, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO10 \ - ESP32_PINMUX(10, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO10 ESP32_PINMUX(10, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO11 \ - ESP32_PINMUX(11, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO11 ESP32_PINMUX(11, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO12 \ - ESP32_PINMUX(12, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO12 ESP32_PINMUX(12, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO13 \ - ESP32_PINMUX(13, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO13 ESP32_PINMUX(13, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO14 \ - ESP32_PINMUX(14, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO14 ESP32_PINMUX(14, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO15 \ - ESP32_PINMUX(15, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO15 ESP32_PINMUX(15, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO16 \ - ESP32_PINMUX(16, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO16 ESP32_PINMUX(16, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO17 \ - ESP32_PINMUX(17, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO17 ESP32_PINMUX(17, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO18 \ - ESP32_PINMUX(18, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO18 ESP32_PINMUX(18, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO19 \ - ESP32_PINMUX(19, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO19 ESP32_PINMUX(19, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO20 \ - ESP32_PINMUX(20, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO20 ESP32_PINMUX(20, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO21 \ - ESP32_PINMUX(21, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO21 ESP32_PINMUX(21, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO26 \ - ESP32_PINMUX(26, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO26 ESP32_PINMUX(26, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO27 \ - ESP32_PINMUX(27, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO27 ESP32_PINMUX(27, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO28 \ - ESP32_PINMUX(28, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO28 ESP32_PINMUX(28, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO29 \ - ESP32_PINMUX(29, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO29 ESP32_PINMUX(29, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO30 \ - ESP32_PINMUX(30, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO30 ESP32_PINMUX(30, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO31 \ - ESP32_PINMUX(31, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO31 ESP32_PINMUX(31, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO32 \ - ESP32_PINMUX(32, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO32 ESP32_PINMUX(32, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO33 \ - ESP32_PINMUX(33, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO33 ESP32_PINMUX(33, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO34 \ - ESP32_PINMUX(34, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO34 ESP32_PINMUX(34, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO35 \ - ESP32_PINMUX(35, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO35 ESP32_PINMUX(35, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO36 \ - ESP32_PINMUX(36, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO36 ESP32_PINMUX(36, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO37 \ - ESP32_PINMUX(37, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO37 ESP32_PINMUX(37, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO38 \ - ESP32_PINMUX(38, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO38 ESP32_PINMUX(38, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO39 \ - ESP32_PINMUX(39, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO39 ESP32_PINMUX(39, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO40 \ - ESP32_PINMUX(40, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO40 ESP32_PINMUX(40, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO41 \ - ESP32_PINMUX(41, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO41 ESP32_PINMUX(41, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO42 \ - ESP32_PINMUX(42, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO42 ESP32_PINMUX(42, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO43 \ - ESP32_PINMUX(43, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO43 ESP32_PINMUX(43, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO44 \ - ESP32_PINMUX(44, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO44 ESP32_PINMUX(44, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO45 \ - ESP32_PINMUX(45, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO45 ESP32_PINMUX(45, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO46 \ - ESP32_PINMUX(46, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO46 ESP32_PINMUX(46, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO47 \ - ESP32_PINMUX(47, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO47 ESP32_PINMUX(47, ESP_U0RXD_IN, ESP_NOSIG) -#define UART0_RX_GPIO48 \ - ESP32_PINMUX(48, ESP_U0RXD_IN, ESP_NOSIG) +#define UART0_RX_GPIO48 ESP32_PINMUX(48, ESP_U0RXD_IN, ESP_NOSIG) /* UART0_TX */ -#define UART0_TX_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_U0TXD_OUT) -#define UART0_TX_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_U0TXD_OUT) +#define UART0_TX_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_U0TXD_OUT) /* UART1_CTS */ -#define UART1_CTS_GPIO0 \ - ESP32_PINMUX(0, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO0 ESP32_PINMUX(0, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO1 \ - ESP32_PINMUX(1, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO1 ESP32_PINMUX(1, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO2 \ - ESP32_PINMUX(2, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO2 ESP32_PINMUX(2, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO3 \ - ESP32_PINMUX(3, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO3 ESP32_PINMUX(3, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO4 \ - ESP32_PINMUX(4, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO4 ESP32_PINMUX(4, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO5 \ - ESP32_PINMUX(5, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO5 ESP32_PINMUX(5, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO6 \ - ESP32_PINMUX(6, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO6 ESP32_PINMUX(6, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO7 \ - ESP32_PINMUX(7, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO7 ESP32_PINMUX(7, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO8 \ - ESP32_PINMUX(8, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO8 ESP32_PINMUX(8, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO9 \ - ESP32_PINMUX(9, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO9 ESP32_PINMUX(9, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO10 \ - ESP32_PINMUX(10, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO10 ESP32_PINMUX(10, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO11 \ - ESP32_PINMUX(11, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO11 ESP32_PINMUX(11, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO12 \ - ESP32_PINMUX(12, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO12 ESP32_PINMUX(12, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO13 \ - ESP32_PINMUX(13, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO13 ESP32_PINMUX(13, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO14 \ - ESP32_PINMUX(14, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO14 ESP32_PINMUX(14, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO15 \ - ESP32_PINMUX(15, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO15 ESP32_PINMUX(15, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO16 \ - ESP32_PINMUX(16, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO16 ESP32_PINMUX(16, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO17 \ - ESP32_PINMUX(17, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO17 ESP32_PINMUX(17, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO18 \ - ESP32_PINMUX(18, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO18 ESP32_PINMUX(18, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO19 \ - ESP32_PINMUX(19, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO19 ESP32_PINMUX(19, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO20 \ - ESP32_PINMUX(20, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO20 ESP32_PINMUX(20, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO21 \ - ESP32_PINMUX(21, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO21 ESP32_PINMUX(21, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO26 \ - ESP32_PINMUX(26, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO26 ESP32_PINMUX(26, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO27 \ - ESP32_PINMUX(27, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO27 ESP32_PINMUX(27, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO28 \ - ESP32_PINMUX(28, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO28 ESP32_PINMUX(28, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO29 \ - ESP32_PINMUX(29, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO29 ESP32_PINMUX(29, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO30 \ - ESP32_PINMUX(30, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO30 ESP32_PINMUX(30, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO31 \ - ESP32_PINMUX(31, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO31 ESP32_PINMUX(31, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO32 \ - ESP32_PINMUX(32, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO32 ESP32_PINMUX(32, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO33 \ - ESP32_PINMUX(33, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO33 ESP32_PINMUX(33, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO34 \ - ESP32_PINMUX(34, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO34 ESP32_PINMUX(34, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO35 \ - ESP32_PINMUX(35, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO35 ESP32_PINMUX(35, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO36 \ - ESP32_PINMUX(36, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO36 ESP32_PINMUX(36, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO37 \ - ESP32_PINMUX(37, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO37 ESP32_PINMUX(37, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO38 \ - ESP32_PINMUX(38, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO38 ESP32_PINMUX(38, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO39 \ - ESP32_PINMUX(39, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO39 ESP32_PINMUX(39, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO40 \ - ESP32_PINMUX(40, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO40 ESP32_PINMUX(40, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO41 \ - ESP32_PINMUX(41, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO41 ESP32_PINMUX(41, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO42 \ - ESP32_PINMUX(42, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO42 ESP32_PINMUX(42, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO43 \ - ESP32_PINMUX(43, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO43 ESP32_PINMUX(43, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO44 \ - ESP32_PINMUX(44, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO44 ESP32_PINMUX(44, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO45 \ - ESP32_PINMUX(45, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO45 ESP32_PINMUX(45, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO46 \ - ESP32_PINMUX(46, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO46 ESP32_PINMUX(46, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO47 \ - ESP32_PINMUX(47, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO47 ESP32_PINMUX(47, ESP_U1CTS_IN, ESP_NOSIG) -#define UART1_CTS_GPIO48 \ - ESP32_PINMUX(48, ESP_U1CTS_IN, ESP_NOSIG) +#define UART1_CTS_GPIO48 ESP32_PINMUX(48, ESP_U1CTS_IN, ESP_NOSIG) /* UART1_DSR */ -#define UART1_DSR_GPIO0 \ - ESP32_PINMUX(0, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO0 ESP32_PINMUX(0, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO1 \ - ESP32_PINMUX(1, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO1 ESP32_PINMUX(1, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO2 \ - ESP32_PINMUX(2, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO2 ESP32_PINMUX(2, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO3 \ - ESP32_PINMUX(3, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO3 ESP32_PINMUX(3, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO4 \ - ESP32_PINMUX(4, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO4 ESP32_PINMUX(4, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO5 \ - ESP32_PINMUX(5, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO5 ESP32_PINMUX(5, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO6 \ - ESP32_PINMUX(6, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO6 ESP32_PINMUX(6, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO7 \ - ESP32_PINMUX(7, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO7 ESP32_PINMUX(7, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO8 \ - ESP32_PINMUX(8, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO8 ESP32_PINMUX(8, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO9 \ - ESP32_PINMUX(9, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO9 ESP32_PINMUX(9, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO10 \ - ESP32_PINMUX(10, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO10 ESP32_PINMUX(10, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO11 \ - ESP32_PINMUX(11, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO11 ESP32_PINMUX(11, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO12 \ - ESP32_PINMUX(12, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO12 ESP32_PINMUX(12, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO13 \ - ESP32_PINMUX(13, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO13 ESP32_PINMUX(13, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO14 \ - ESP32_PINMUX(14, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO14 ESP32_PINMUX(14, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO15 \ - ESP32_PINMUX(15, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO15 ESP32_PINMUX(15, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO16 \ - ESP32_PINMUX(16, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO16 ESP32_PINMUX(16, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO17 \ - ESP32_PINMUX(17, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO17 ESP32_PINMUX(17, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO18 \ - ESP32_PINMUX(18, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO18 ESP32_PINMUX(18, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO19 \ - ESP32_PINMUX(19, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO19 ESP32_PINMUX(19, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO20 \ - ESP32_PINMUX(20, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO20 ESP32_PINMUX(20, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO21 \ - ESP32_PINMUX(21, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO21 ESP32_PINMUX(21, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO26 \ - ESP32_PINMUX(26, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO26 ESP32_PINMUX(26, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO27 \ - ESP32_PINMUX(27, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO27 ESP32_PINMUX(27, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO28 \ - ESP32_PINMUX(28, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO28 ESP32_PINMUX(28, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO29 \ - ESP32_PINMUX(29, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO29 ESP32_PINMUX(29, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO30 \ - ESP32_PINMUX(30, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO30 ESP32_PINMUX(30, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO31 \ - ESP32_PINMUX(31, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO31 ESP32_PINMUX(31, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO32 \ - ESP32_PINMUX(32, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO32 ESP32_PINMUX(32, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO33 \ - ESP32_PINMUX(33, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO33 ESP32_PINMUX(33, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO34 \ - ESP32_PINMUX(34, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO34 ESP32_PINMUX(34, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO35 \ - ESP32_PINMUX(35, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO35 ESP32_PINMUX(35, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO36 \ - ESP32_PINMUX(36, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO36 ESP32_PINMUX(36, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO37 \ - ESP32_PINMUX(37, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO37 ESP32_PINMUX(37, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO38 \ - ESP32_PINMUX(38, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO38 ESP32_PINMUX(38, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO39 \ - ESP32_PINMUX(39, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO39 ESP32_PINMUX(39, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO40 \ - ESP32_PINMUX(40, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO40 ESP32_PINMUX(40, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO41 \ - ESP32_PINMUX(41, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO41 ESP32_PINMUX(41, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO42 \ - ESP32_PINMUX(42, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO42 ESP32_PINMUX(42, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO43 \ - ESP32_PINMUX(43, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO43 ESP32_PINMUX(43, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO44 \ - ESP32_PINMUX(44, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO44 ESP32_PINMUX(44, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO45 \ - ESP32_PINMUX(45, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO45 ESP32_PINMUX(45, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO46 \ - ESP32_PINMUX(46, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO46 ESP32_PINMUX(46, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO47 \ - ESP32_PINMUX(47, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO47 ESP32_PINMUX(47, ESP_U1DSR_IN, ESP_NOSIG) -#define UART1_DSR_GPIO48 \ - ESP32_PINMUX(48, ESP_U1DSR_IN, ESP_NOSIG) +#define UART1_DSR_GPIO48 ESP32_PINMUX(48, ESP_U1DSR_IN, ESP_NOSIG) /* UART1_DTR */ -#define UART1_DTR_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_U1DTR_OUT) -#define UART1_DTR_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_U1DTR_OUT) +#define UART1_DTR_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_U1DTR_OUT) /* UART1_RTS */ -#define UART1_RTS_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_U1RTS_OUT) -#define UART1_RTS_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_U1RTS_OUT) +#define UART1_RTS_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_U1RTS_OUT) /* UART1_RX */ -#define UART1_RX_GPIO0 \ - ESP32_PINMUX(0, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO0 ESP32_PINMUX(0, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO1 \ - ESP32_PINMUX(1, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO1 ESP32_PINMUX(1, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO2 \ - ESP32_PINMUX(2, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO2 ESP32_PINMUX(2, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO3 \ - ESP32_PINMUX(3, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO3 ESP32_PINMUX(3, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO4 \ - ESP32_PINMUX(4, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO4 ESP32_PINMUX(4, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO5 \ - ESP32_PINMUX(5, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO5 ESP32_PINMUX(5, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO6 \ - ESP32_PINMUX(6, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO6 ESP32_PINMUX(6, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO7 \ - ESP32_PINMUX(7, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO7 ESP32_PINMUX(7, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO8 \ - ESP32_PINMUX(8, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO8 ESP32_PINMUX(8, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO9 \ - ESP32_PINMUX(9, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO9 ESP32_PINMUX(9, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO10 \ - ESP32_PINMUX(10, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO10 ESP32_PINMUX(10, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO11 \ - ESP32_PINMUX(11, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO11 ESP32_PINMUX(11, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO12 \ - ESP32_PINMUX(12, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO12 ESP32_PINMUX(12, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO13 \ - ESP32_PINMUX(13, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO13 ESP32_PINMUX(13, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO14 \ - ESP32_PINMUX(14, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO14 ESP32_PINMUX(14, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO15 \ - ESP32_PINMUX(15, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO15 ESP32_PINMUX(15, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO16 \ - ESP32_PINMUX(16, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO16 ESP32_PINMUX(16, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO17 \ - ESP32_PINMUX(17, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO17 ESP32_PINMUX(17, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO18 \ - ESP32_PINMUX(18, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO18 ESP32_PINMUX(18, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO19 \ - ESP32_PINMUX(19, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO19 ESP32_PINMUX(19, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO20 \ - ESP32_PINMUX(20, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO20 ESP32_PINMUX(20, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO21 \ - ESP32_PINMUX(21, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO21 ESP32_PINMUX(21, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO26 \ - ESP32_PINMUX(26, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO26 ESP32_PINMUX(26, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO27 \ - ESP32_PINMUX(27, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO27 ESP32_PINMUX(27, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO28 \ - ESP32_PINMUX(28, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO28 ESP32_PINMUX(28, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO29 \ - ESP32_PINMUX(29, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO29 ESP32_PINMUX(29, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO30 \ - ESP32_PINMUX(30, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO30 ESP32_PINMUX(30, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO31 \ - ESP32_PINMUX(31, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO31 ESP32_PINMUX(31, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO32 \ - ESP32_PINMUX(32, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO32 ESP32_PINMUX(32, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO33 \ - ESP32_PINMUX(33, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO33 ESP32_PINMUX(33, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO34 \ - ESP32_PINMUX(34, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO34 ESP32_PINMUX(34, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO35 \ - ESP32_PINMUX(35, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO35 ESP32_PINMUX(35, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO36 \ - ESP32_PINMUX(36, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO36 ESP32_PINMUX(36, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO37 \ - ESP32_PINMUX(37, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO37 ESP32_PINMUX(37, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO38 \ - ESP32_PINMUX(38, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO38 ESP32_PINMUX(38, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO39 \ - ESP32_PINMUX(39, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO39 ESP32_PINMUX(39, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO40 \ - ESP32_PINMUX(40, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO40 ESP32_PINMUX(40, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO41 \ - ESP32_PINMUX(41, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO41 ESP32_PINMUX(41, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO42 \ - ESP32_PINMUX(42, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO42 ESP32_PINMUX(42, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO43 \ - ESP32_PINMUX(43, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO43 ESP32_PINMUX(43, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO44 \ - ESP32_PINMUX(44, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO44 ESP32_PINMUX(44, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO45 \ - ESP32_PINMUX(45, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO45 ESP32_PINMUX(45, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO46 \ - ESP32_PINMUX(46, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO46 ESP32_PINMUX(46, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO47 \ - ESP32_PINMUX(47, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO47 ESP32_PINMUX(47, ESP_U1RXD_IN, ESP_NOSIG) -#define UART1_RX_GPIO48 \ - ESP32_PINMUX(48, ESP_U1RXD_IN, ESP_NOSIG) +#define UART1_RX_GPIO48 ESP32_PINMUX(48, ESP_U1RXD_IN, ESP_NOSIG) /* UART1_TX */ -#define UART1_TX_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_U1TXD_OUT) -#define UART1_TX_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_U1TXD_OUT) +#define UART1_TX_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_U1TXD_OUT) /* UART2_CTS */ -#define UART2_CTS_GPIO0 \ - ESP32_PINMUX(0, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO0 ESP32_PINMUX(0, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO1 \ - ESP32_PINMUX(1, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO1 ESP32_PINMUX(1, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO2 \ - ESP32_PINMUX(2, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO2 ESP32_PINMUX(2, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO3 \ - ESP32_PINMUX(3, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO3 ESP32_PINMUX(3, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO4 \ - ESP32_PINMUX(4, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO4 ESP32_PINMUX(4, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO5 \ - ESP32_PINMUX(5, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO5 ESP32_PINMUX(5, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO6 \ - ESP32_PINMUX(6, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO6 ESP32_PINMUX(6, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO7 \ - ESP32_PINMUX(7, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO7 ESP32_PINMUX(7, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO8 \ - ESP32_PINMUX(8, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO8 ESP32_PINMUX(8, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO9 \ - ESP32_PINMUX(9, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO9 ESP32_PINMUX(9, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO10 \ - ESP32_PINMUX(10, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO10 ESP32_PINMUX(10, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO11 \ - ESP32_PINMUX(11, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO11 ESP32_PINMUX(11, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO12 \ - ESP32_PINMUX(12, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO12 ESP32_PINMUX(12, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO13 \ - ESP32_PINMUX(13, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO13 ESP32_PINMUX(13, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO14 \ - ESP32_PINMUX(14, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO14 ESP32_PINMUX(14, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO15 \ - ESP32_PINMUX(15, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO15 ESP32_PINMUX(15, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO16 \ - ESP32_PINMUX(16, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO16 ESP32_PINMUX(16, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO17 \ - ESP32_PINMUX(17, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO17 ESP32_PINMUX(17, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO18 \ - ESP32_PINMUX(18, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO18 ESP32_PINMUX(18, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO19 \ - ESP32_PINMUX(19, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO19 ESP32_PINMUX(19, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO20 \ - ESP32_PINMUX(20, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO20 ESP32_PINMUX(20, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO21 \ - ESP32_PINMUX(21, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO21 ESP32_PINMUX(21, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO26 \ - ESP32_PINMUX(26, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO26 ESP32_PINMUX(26, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO27 \ - ESP32_PINMUX(27, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO27 ESP32_PINMUX(27, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO28 \ - ESP32_PINMUX(28, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO28 ESP32_PINMUX(28, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO29 \ - ESP32_PINMUX(29, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO29 ESP32_PINMUX(29, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO30 \ - ESP32_PINMUX(30, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO30 ESP32_PINMUX(30, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO31 \ - ESP32_PINMUX(31, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO31 ESP32_PINMUX(31, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO32 \ - ESP32_PINMUX(32, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO32 ESP32_PINMUX(32, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO33 \ - ESP32_PINMUX(33, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO33 ESP32_PINMUX(33, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO34 \ - ESP32_PINMUX(34, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO34 ESP32_PINMUX(34, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO35 \ - ESP32_PINMUX(35, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO35 ESP32_PINMUX(35, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO36 \ - ESP32_PINMUX(36, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO36 ESP32_PINMUX(36, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO37 \ - ESP32_PINMUX(37, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO37 ESP32_PINMUX(37, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO38 \ - ESP32_PINMUX(38, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO38 ESP32_PINMUX(38, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO39 \ - ESP32_PINMUX(39, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO39 ESP32_PINMUX(39, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO40 \ - ESP32_PINMUX(40, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO40 ESP32_PINMUX(40, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO41 \ - ESP32_PINMUX(41, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO41 ESP32_PINMUX(41, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO42 \ - ESP32_PINMUX(42, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO42 ESP32_PINMUX(42, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO43 \ - ESP32_PINMUX(43, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO43 ESP32_PINMUX(43, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO44 \ - ESP32_PINMUX(44, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO44 ESP32_PINMUX(44, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO45 \ - ESP32_PINMUX(45, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO45 ESP32_PINMUX(45, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO46 \ - ESP32_PINMUX(46, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO46 ESP32_PINMUX(46, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO47 \ - ESP32_PINMUX(47, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO47 ESP32_PINMUX(47, ESP_U2CTS_IN, ESP_NOSIG) -#define UART2_CTS_GPIO48 \ - ESP32_PINMUX(48, ESP_U2CTS_IN, ESP_NOSIG) +#define UART2_CTS_GPIO48 ESP32_PINMUX(48, ESP_U2CTS_IN, ESP_NOSIG) /* UART2_RTS */ -#define UART2_RTS_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_U2RTS_OUT) -#define UART2_RTS_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_U2RTS_OUT) +#define UART2_RTS_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_U2RTS_OUT) /* UART2_RX */ -#define UART2_RX_GPIO0 \ - ESP32_PINMUX(0, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO0 ESP32_PINMUX(0, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO1 \ - ESP32_PINMUX(1, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO1 ESP32_PINMUX(1, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO2 \ - ESP32_PINMUX(2, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO2 ESP32_PINMUX(2, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO3 \ - ESP32_PINMUX(3, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO3 ESP32_PINMUX(3, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO4 \ - ESP32_PINMUX(4, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO4 ESP32_PINMUX(4, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO5 \ - ESP32_PINMUX(5, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO5 ESP32_PINMUX(5, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO6 \ - ESP32_PINMUX(6, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO6 ESP32_PINMUX(6, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO7 \ - ESP32_PINMUX(7, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO7 ESP32_PINMUX(7, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO8 \ - ESP32_PINMUX(8, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO8 ESP32_PINMUX(8, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO9 \ - ESP32_PINMUX(9, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO9 ESP32_PINMUX(9, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO10 \ - ESP32_PINMUX(10, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO10 ESP32_PINMUX(10, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO11 \ - ESP32_PINMUX(11, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO11 ESP32_PINMUX(11, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO12 \ - ESP32_PINMUX(12, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO12 ESP32_PINMUX(12, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO13 \ - ESP32_PINMUX(13, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO13 ESP32_PINMUX(13, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO14 \ - ESP32_PINMUX(14, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO14 ESP32_PINMUX(14, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO15 \ - ESP32_PINMUX(15, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO15 ESP32_PINMUX(15, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO16 \ - ESP32_PINMUX(16, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO16 ESP32_PINMUX(16, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO17 \ - ESP32_PINMUX(17, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO17 ESP32_PINMUX(17, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO18 \ - ESP32_PINMUX(18, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO18 ESP32_PINMUX(18, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO19 \ - ESP32_PINMUX(19, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO19 ESP32_PINMUX(19, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO20 \ - ESP32_PINMUX(20, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO20 ESP32_PINMUX(20, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO21 \ - ESP32_PINMUX(21, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO21 ESP32_PINMUX(21, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO26 \ - ESP32_PINMUX(26, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO26 ESP32_PINMUX(26, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO27 \ - ESP32_PINMUX(27, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO27 ESP32_PINMUX(27, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO28 \ - ESP32_PINMUX(28, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO28 ESP32_PINMUX(28, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO29 \ - ESP32_PINMUX(29, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO29 ESP32_PINMUX(29, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO30 \ - ESP32_PINMUX(30, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO30 ESP32_PINMUX(30, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO31 \ - ESP32_PINMUX(31, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO31 ESP32_PINMUX(31, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO32 \ - ESP32_PINMUX(32, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO32 ESP32_PINMUX(32, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO33 \ - ESP32_PINMUX(33, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO33 ESP32_PINMUX(33, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO34 \ - ESP32_PINMUX(34, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO34 ESP32_PINMUX(34, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO35 \ - ESP32_PINMUX(35, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO35 ESP32_PINMUX(35, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO36 \ - ESP32_PINMUX(36, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO36 ESP32_PINMUX(36, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO37 \ - ESP32_PINMUX(37, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO37 ESP32_PINMUX(37, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO38 \ - ESP32_PINMUX(38, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO38 ESP32_PINMUX(38, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO39 \ - ESP32_PINMUX(39, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO39 ESP32_PINMUX(39, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO40 \ - ESP32_PINMUX(40, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO40 ESP32_PINMUX(40, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO41 \ - ESP32_PINMUX(41, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO41 ESP32_PINMUX(41, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO42 \ - ESP32_PINMUX(42, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO42 ESP32_PINMUX(42, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO43 \ - ESP32_PINMUX(43, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO43 ESP32_PINMUX(43, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO44 \ - ESP32_PINMUX(44, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO44 ESP32_PINMUX(44, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO45 \ - ESP32_PINMUX(45, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO45 ESP32_PINMUX(45, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO46 \ - ESP32_PINMUX(46, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO46 ESP32_PINMUX(46, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO47 \ - ESP32_PINMUX(47, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO47 ESP32_PINMUX(47, ESP_U2RXD_IN, ESP_NOSIG) -#define UART2_RX_GPIO48 \ - ESP32_PINMUX(48, ESP_U2RXD_IN, ESP_NOSIG) +#define UART2_RX_GPIO48 ESP32_PINMUX(48, ESP_U2RXD_IN, ESP_NOSIG) /* UART2_TX */ -#define UART2_TX_GPIO0 \ - ESP32_PINMUX(0, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO0 ESP32_PINMUX(0, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO1 \ - ESP32_PINMUX(1, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO1 ESP32_PINMUX(1, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO2 \ - ESP32_PINMUX(2, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO2 ESP32_PINMUX(2, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO3 \ - ESP32_PINMUX(3, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO3 ESP32_PINMUX(3, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO4 \ - ESP32_PINMUX(4, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO4 ESP32_PINMUX(4, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO5 \ - ESP32_PINMUX(5, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO5 ESP32_PINMUX(5, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO6 \ - ESP32_PINMUX(6, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO6 ESP32_PINMUX(6, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO7 \ - ESP32_PINMUX(7, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO7 ESP32_PINMUX(7, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO8 \ - ESP32_PINMUX(8, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO8 ESP32_PINMUX(8, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO9 \ - ESP32_PINMUX(9, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO9 ESP32_PINMUX(9, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO10 \ - ESP32_PINMUX(10, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO10 ESP32_PINMUX(10, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO11 \ - ESP32_PINMUX(11, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO11 ESP32_PINMUX(11, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO12 \ - ESP32_PINMUX(12, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO12 ESP32_PINMUX(12, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO13 \ - ESP32_PINMUX(13, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO13 ESP32_PINMUX(13, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO14 \ - ESP32_PINMUX(14, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO14 ESP32_PINMUX(14, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO15 \ - ESP32_PINMUX(15, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO15 ESP32_PINMUX(15, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO16 \ - ESP32_PINMUX(16, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO16 ESP32_PINMUX(16, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO17 \ - ESP32_PINMUX(17, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO17 ESP32_PINMUX(17, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO18 \ - ESP32_PINMUX(18, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO18 ESP32_PINMUX(18, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO19 \ - ESP32_PINMUX(19, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO19 ESP32_PINMUX(19, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO20 \ - ESP32_PINMUX(20, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO20 ESP32_PINMUX(20, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO21 \ - ESP32_PINMUX(21, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO21 ESP32_PINMUX(21, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO26 \ - ESP32_PINMUX(26, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO26 ESP32_PINMUX(26, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO27 \ - ESP32_PINMUX(27, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO27 ESP32_PINMUX(27, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO28 \ - ESP32_PINMUX(28, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO28 ESP32_PINMUX(28, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO29 \ - ESP32_PINMUX(29, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO29 ESP32_PINMUX(29, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO30 \ - ESP32_PINMUX(30, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO30 ESP32_PINMUX(30, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO31 \ - ESP32_PINMUX(31, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO31 ESP32_PINMUX(31, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO32 \ - ESP32_PINMUX(32, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO32 ESP32_PINMUX(32, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO33 \ - ESP32_PINMUX(33, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO33 ESP32_PINMUX(33, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO34 \ - ESP32_PINMUX(34, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO34 ESP32_PINMUX(34, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO35 \ - ESP32_PINMUX(35, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO35 ESP32_PINMUX(35, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO36 \ - ESP32_PINMUX(36, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO36 ESP32_PINMUX(36, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO37 \ - ESP32_PINMUX(37, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO37 ESP32_PINMUX(37, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO38 \ - ESP32_PINMUX(38, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO38 ESP32_PINMUX(38, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO39 \ - ESP32_PINMUX(39, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO39 ESP32_PINMUX(39, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO40 \ - ESP32_PINMUX(40, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO40 ESP32_PINMUX(40, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO41 \ - ESP32_PINMUX(41, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO41 ESP32_PINMUX(41, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO42 \ - ESP32_PINMUX(42, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO42 ESP32_PINMUX(42, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO43 \ - ESP32_PINMUX(43, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO43 ESP32_PINMUX(43, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO44 \ - ESP32_PINMUX(44, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO44 ESP32_PINMUX(44, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO45 \ - ESP32_PINMUX(45, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO45 ESP32_PINMUX(45, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO46 \ - ESP32_PINMUX(46, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO46 ESP32_PINMUX(46, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO47 \ - ESP32_PINMUX(47, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO47 ESP32_PINMUX(47, ESP_NOSIG, ESP_U2TXD_OUT) -#define UART2_TX_GPIO48 \ - ESP32_PINMUX(48, ESP_NOSIG, ESP_U2TXD_OUT) +#define UART2_TX_GPIO48 ESP32_PINMUX(48, ESP_NOSIG, ESP_U2TXD_OUT) #endif /* INC_DT_BINDS_PINCTRL_ESP32S3_PINCTRL_HAL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/gecko-pinctrl-s1.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/gecko-pinctrl-s1.h index 38b8f6e4..885c8d57 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/gecko-pinctrl-s1.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/gecko-pinctrl-s1.h @@ -3,8 +3,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_GECKO_PINCTRL_H_ -#define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_GECKO_PINCTRL_H_ +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_GECKO_PINCTRL_S1_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_GECKO_PINCTRL_S1_H_ /* * The whole GECKO_pin configuration information is encoded in a 32-bit bitfield @@ -115,4 +115,4 @@ (((GECKO_LOCATION(##loc##) & GECKO_LOC_MSK) << GECKO_LOC_POS) | \ ((GECKO_FUN_##fun##_LOC & GECKO_FUN_MSK) << GECKO_FUN_POS)) -#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_GECKO_PINCTRL_H_ */ +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_GECKO_PINCTRL_S1_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/max32-pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/max32-pinctrl.h index 97a3ab76..fbfaf777 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/max32-pinctrl.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/max32-pinctrl.h @@ -63,5 +63,6 @@ #define MAX32_POWER_SOURCE_SHIFT 0x04 #define MAX32_OUTPUT_HIGH_SHIFT 0x05 #define MAX32_DRV_STRENGTH_SHIFT 0x06 /* 2 bits */ +#define MAX32_DRV_STRENGTH_MASK 0x03 #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_MAX32_PINCTRL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/nrf-pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/nrf-pinctrl.h index bdb370d2..4611baef 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/nrf-pinctrl.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/nrf-pinctrl.h @@ -10,7 +10,10 @@ * The whole nRF pin configuration information is encoded in a 32-bit bitfield * organized as follows: * - * - 31..17: Pin function. + * - 31..24: Pin function. + * - 19-23: Reserved. + * - 18: Associated peripheral belongs to GD FAST ACTIVE1 (nRF54H only) + * - 17: Clockpin enable. * - 16: Pin inversion mode. * - 15: Pin low power mode. * - 14..11: Pin output drive configuration. @@ -24,9 +27,17 @@ */ /** Position of the function field. */ -#define NRF_FUN_POS 17U +#define NRF_FUN_POS 24U /** Mask for the function field. */ -#define NRF_FUN_MSK 0x7FFFU +#define NRF_FUN_MSK 0xFFU +/** Position of the GPD FAST ACTIVE1 */ +#define NRF_GPD_FAST_ACTIVE1_POS 18U +/** Mask for the GPD FAST ACTIVE1 */ +#define NRF_GPD_FAST_ACTIVE1_MSK 0x1U +/** Position of the clockpin enable field. */ +#define NRF_CLOCKPIN_ENABLE_POS 17U +/** Mask for the clockpin enable field. */ +#define NRF_CLOCKPIN_ENABLE_MSK 0x1U /** Position of the invert field. */ #define NRF_INVERT_POS 16U /** Mask for the invert field. */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/nxp-s32-pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/nxp-s32-pinctrl.h index f32f926a..a63cada0 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/nxp-s32-pinctrl.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/nxp-s32-pinctrl.h @@ -1,5 +1,5 @@ /* - * Copyright 2022 NXP + * Copyright 2022, 2024 NXP * * SPDX-License-Identifier: Apache-2.0 */ @@ -16,19 +16,22 @@ * - 3..6: Input mux Source Signal Selection (IMCR.SSS) * - 7..15: Input Multiplexed Signal Configuration Register (IMCR) index * - 16..24: Multiplexed Signal Configuration Register (MSCR) index - * - 25..27: SIUL2 instance index (0..7) - * - 28..31: Reserved for future use + * - 25..27: MSCR SIUL2 instance index (0..7) + * - 28..30: IMCR SIUL2 instance index (0..7) + * - 31: Reserved for future use */ -#define NXP_S32_MSCR_SSS_SHIFT 0U -#define NXP_S32_MSCR_SSS_MASK BIT_MASK(3) -#define NXP_S32_IMCR_SSS_SHIFT 3U -#define NXP_S32_IMCR_SSS_MASK BIT_MASK(4) -#define NXP_S32_IMCR_IDX_SHIFT 7U -#define NXP_S32_IMCR_IDX_MASK BIT_MASK(9) -#define NXP_S32_MSCR_IDX_SHIFT 16U -#define NXP_S32_MSCR_IDX_MASK BIT_MASK(9) -#define NXP_S32_SIUL2_IDX_SHIFT 25U -#define NXP_S32_SIUL2_IDX_MASK BIT_MASK(3) +#define NXP_S32_MSCR_SSS_SHIFT 0U +#define NXP_S32_MSCR_SSS_MASK BIT_MASK(3) +#define NXP_S32_IMCR_SSS_SHIFT 3U +#define NXP_S32_IMCR_SSS_MASK BIT_MASK(4) +#define NXP_S32_IMCR_IDX_SHIFT 7U +#define NXP_S32_IMCR_IDX_MASK BIT_MASK(9) +#define NXP_S32_MSCR_IDX_SHIFT 16U +#define NXP_S32_MSCR_IDX_MASK BIT_MASK(9) +#define NXP_S32_MSCR_SIUL2_IDX_SHIFT 25U +#define NXP_S32_MSCR_SIUL2_IDX_MASK BIT_MASK(3) +#define NXP_S32_IMCR_SIUL2_IDX_SHIFT 28U +#define NXP_S32_IMCR_SIUL2_IDX_MASK BIT_MASK(3) #define NXP_S32_PINMUX_MSCR_SSS(cfg) \ (((cfg) & NXP_S32_MSCR_SSS_MASK) << NXP_S32_MSCR_SSS_SHIFT) @@ -42,8 +45,11 @@ #define NXP_S32_PINMUX_MSCR_IDX(cfg) \ (((cfg) & NXP_S32_MSCR_IDX_MASK) << NXP_S32_MSCR_IDX_SHIFT) -#define NXP_S32_PINMUX_SIUL2_IDX(cfg) \ - (((cfg) & NXP_S32_SIUL2_IDX_MASK) << NXP_S32_SIUL2_IDX_SHIFT) +#define NXP_S32_PINMUX_MSCR_SIUL2_IDX(cfg) \ + (((cfg) & NXP_S32_MSCR_SIUL2_IDX_MASK) << NXP_S32_MSCR_SIUL2_IDX_SHIFT) + +#define NXP_S32_PINMUX_IMCR_SIUL2_IDX(cfg) \ + (((cfg) & NXP_S32_IMCR_SIUL2_IDX_MASK) << NXP_S32_IMCR_SIUL2_IDX_SHIFT) #define NXP_S32_PINMUX_GET_MSCR_SSS(cfg) \ (((cfg) >> NXP_S32_MSCR_SSS_SHIFT) & NXP_S32_MSCR_SSS_MASK) @@ -57,21 +63,28 @@ #define NXP_S32_PINMUX_GET_MSCR_IDX(cfg) \ (((cfg) >> NXP_S32_MSCR_IDX_SHIFT) & NXP_S32_MSCR_IDX_MASK) -#define NXP_S32_PINMUX_GET_SIUL2_IDX(cfg) \ - (((cfg) >> NXP_S32_SIUL2_IDX_SHIFT) & NXP_S32_SIUL2_IDX_MASK) +#define NXP_S32_PINMUX_GET_MSCR_SIUL2_IDX(cfg) \ + (((cfg) >> NXP_S32_MSCR_SIUL2_IDX_SHIFT) & NXP_S32_MSCR_SIUL2_IDX_MASK) + +#define NXP_S32_PINMUX_GET_IMCR_SIUL2_IDX(cfg) \ + (((cfg) >> NXP_S32_IMCR_SIUL2_IDX_SHIFT) & NXP_S32_IMCR_SIUL2_IDX_MASK) /** * @brief Utility macro to build NXP S32 pinmux property for pinctrl nodes. * - * @param siul2_idx SIUL2 instance index + * @param mscr_siul2_idx MSCR SIUL2 instance index + * @param imcr_siul2_idx IMCR SIUL2 instance index * @param mscr_idx Multiplexed Signal Configuration Register (MSCR) index * @param mscr_sss Output mux Source Signal Selection (MSCR.SSS) * @param imcr_idx Input Multiplexed Signal Configuration Register (IMCR) index * @param imcr_sss Input mux Source Signal Selection (IMCR.SSS) */ -#define NXP_S32_PINMUX(siul2_idx, mscr_idx, mscr_sss, imcr_idx, imcr_sss) \ - (NXP_S32_PINMUX_SIUL2_IDX(siul2_idx) | NXP_S32_PINMUX_MSCR_IDX(mscr_idx) \ - | NXP_S32_PINMUX_MSCR_SSS(mscr_sss) | NXP_S32_PINMUX_IMCR_IDX(imcr_idx) \ - | NXP_S32_PINMUX_IMCR_SSS(imcr_sss)) +#define NXP_S32_PINMUX(mscr_siul2_idx, imcr_siul2_idx, mscr_idx, mscr_sss, imcr_idx, imcr_sss) \ + (NXP_S32_PINMUX_MSCR_SIUL2_IDX(mscr_siul2_idx) | \ + NXP_S32_PINMUX_IMCR_SIUL2_IDX(imcr_siul2_idx) | \ + NXP_S32_PINMUX_MSCR_IDX(mscr_idx) | \ + NXP_S32_PINMUX_MSCR_SSS(mscr_sss) | \ + NXP_S32_PINMUX_IMCR_IDX(imcr_idx) | \ + NXP_S32_PINMUX_IMCR_SSS(imcr_sss)) #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_NXP_NXP_S32_PINCTRL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/renesas/pinctrl-ra.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/renesas/pinctrl-ra.h new file mode 100644 index 00000000..5d88ea6e --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/renesas/pinctrl-ra.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef __ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_RENESAS_RA_PINCTRL_H__ +#define __ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_RENESAS_RA_PINCTRL_H__ + +#define RA_PORT_NUM_POS 0 +#define RA_PORT_NUM_MASK 0xf + +#define RA_PIN_NUM_POS 4 +#define RA_PIN_NUM_MASK 0xf + +#define RA_PSEL_HIZ_JTAG_SWD 0x0 +#define RA_PSEL_AGT 0x1 +#define RA_PSEL_GPT0 0x2 +#define RA_PSEL_GPT1 0x3 +#define RA_PSEL_SCI_0 0x4 +#define RA_PSEL_SCI_2 0x4 +#define RA_PSEL_SCI_4 0x4 +#define RA_PSEL_SCI_6 0x4 +#define RA_PSEL_SCI_8 0x4 +#define RA_PSEL_SCI_1 0x5 +#define RA_PSEL_SCI_3 0x5 +#define RA_PSEL_SCI_5 0x5 +#define RA_PSEL_SCI_7 0x5 +#define RA_PSEL_SCI_9 0x5 +#define RA_PSEL_SPI 0x6 +#define RA_PSEL_I2C 0x7 +#define RA_PSEL_CLKOUT_RTC 0x9 +#define RA_PSEL_CAC_ADC 0xa +#define RA_PSEL_BUS 0xb +#define RA_PSEL_CANFD 0x10 +#define RA_PSEL_QSPI 0x11 +#define RA_PSEL_SSIE 0x12 +#define RA_PSEL_USBFS 0x13 +#define RA_PSEL_USBHS 0x14 +#define RA_PSEL_SDHI 0x15 +#define RA_PSEL_ETH_MII 0x16 +#define RA_PSEL_ETH_RMII 0x17 +#define RA_PSEL_GLCDC 0x19 +#define RA_PSEL_OSPI 0x1c +#define RA_PSEL_ADC 0x00 + +#define RA_PSEL_POS 8 +#define RA_PSEL_MASK 0x1f + +#define RA_MODE_POS 13 +#define RA_MODE_MASK 0x1 + +#define RA_PSEL(psel, port_num, pin_num) \ + (1 << RA_MODE_POS | psel << RA_PSEL_POS | port_num << RA_PORT_NUM_POS | \ + pin_num << RA_PIN_NUM_POS) + +#endif /* __ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_RENESAS_RA_PINCTRL_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/renesas/pinctrl-rzg-common.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/renesas/pinctrl-rzg-common.h new file mode 100644 index 00000000..da9266ac --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/renesas/pinctrl-rzg-common.h @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_RENESAS_PINCTRL_RZG_COMMON_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_RENESAS_PINCTRL_RZG_COMMON_H_ + +/* Superset list of all possible IO ports. */ +#define PORT_00 0x0000 /* IO port 0 */ +#define PORT_01 0x1000 /* IO port 1 */ +#define PORT_02 0x1100 /* IO port 2 */ +#define PORT_03 0x1200 /* IO port 3 */ +#define PORT_04 0x1300 /* IO port 4 */ +#define PORT_05 0x0100 /* IO port 5 */ +#define PORT_06 0x0200 /* IO port 6 */ +#define PORT_07 0x1400 /* IO port 7 */ +#define PORT_08 0x1500 /* IO port 8 */ +#define PORT_09 0x1600 /* IO port 9 */ +#define PORT_10 0x1700 /* IO port 10 */ +#define PORT_11 0x0300 /* IO port 11 */ +#define PORT_12 0x0400 /* IO port 12 */ +#define PORT_13 0x0500 /* IO port 13 */ +#define PORT_14 0x0600 /* IO port 14 */ +#define PORT_15 0x0700 /* IO port 15 */ +#define PORT_16 0x0800 /* IO port 16 */ +#define PORT_17 0x0900 /* IO port 17 */ +#define PORT_18 0x0A00 /* IO port 18 */ + +/* + * Create the value contain port/pin/function information + * + * port: port number BSP_IO_PORT_00..BSP_IO_PORT_18 + * pin: pin number + * func: pin function + */ +#define RZG_PINMUX(port, pin, func) (port | pin | (func << 4)) + +/* Special purpose port */ +#define BSP_IO_NMI 0xFFFF0000 /* NMI */ + +#define BSP_IO_TMS_SWDIO 0xFFFF0100 /* TMS_SWDIO */ +#define BSP_IO_TDO 0xFFFF0101 /* TDO */ + +#define BSP_IO_AUDIO_CLK1 0xFFFF0200 /* AUDIO_CLK1 */ +#define BSP_IO_AUDIO_CLK2 0xFFFF0201 /* AUDIO_CLK2 */ + +#define BSP_IO_XSPI_SPCLK 0xFFFF0400 /* XSPI_SPCLK */ +#define BSP_IO_XSPI_RESET_N 0xFFFF0401 /* XSPI_RESET_N */ +#define BSP_IO_XSPI_WP_N 0xFFFF0402 /* XSPI_WP_N */ +#define BSP_IO_XSPI_DS 0xFFFF0403 /* XSPI_DS */ +#define BSP_IO_XSPI_CS0_N 0xFFFF0404 /* XSPI_CS0_N */ +#define BSP_IO_XSPI_CS1_N 0xFFFF0405 /* XSPI_CS1_N */ + +#define BSP_IO_XSPI_IO0 0xFFFF0500 /* XSPI_IO0 */ +#define BSP_IO_XSPI_IO1 0xFFFF0501 /* XSPI_IO1 */ +#define BSP_IO_XSPI_IO2 0xFFFF0502 /* XSPI_IO2 */ +#define BSP_IO_XSPI_IO3 0xFFFF0503 /* XSPI_IO3 */ +#define BSP_IO_XSPI_IO4 0xFFFF0504 /* XSPI_IO4 */ +#define BSP_IO_XSPI_IO5 0xFFFF0505 /* XSPI_IO5 */ +#define BSP_IO_XSPI_IO6 0xFFFF0506 /* XSPI_IO6 */ +#define BSP_IO_XSPI_IO7 0xFFFF0507 /* XSPI_IO7 */ + +#define BSP_IO_WDTOVF_PERROUT 0xFFFF0600 /* WDTOVF_PERROUT */ + +#define BSP_IO_I3C_SDA 0xFFFF0900 /* I3C_SDA */ +#define BSP_IO_I3C_SCL 0xFFFF0901 /* I3C_SCL */ + +#define BSP_IO_SD0_CLK 0xFFFF1000 /* CD0_CLK */ +#define BSP_IO_SD0_CMD 0xFFFF1001 /* CD0_CMD */ +#define BSP_IO_SD0_RST_N 0xFFFF1002 /* CD0_RST_N */ + +#define BSP_IO_SD0_DATA0 0xFFFF1100 /* SD0_DATA0 */ +#define BSP_IO_SD0_DATA1 0xFFFF1101 /* SD0_DATA1 */ +#define BSP_IO_SD0_DATA2 0xFFFF1102 /* SD0_DATA2 */ +#define BSP_IO_SD0_DATA3 0xFFFF1103 /* SD0_DATA3 */ +#define BSP_IO_SD0_DATA4 0xFFFF1104 /* SD0_DATA4 */ +#define BSP_IO_SD0_DATA5 0xFFFF1105 /* SD0_DATA5 */ +#define BSP_IO_SD0_DATA6 0xFFFF1106 /* SD0_DATA6 */ +#define BSP_IO_SD0_DATA7 0xFFFF1107 /* SD0_DATA7 */ + +#define BSP_IO_SD1_CLK 0xFFFF1200 /* SD1_CLK */ +#define BSP_IO_SD1_CMD 0xFFFF1201 /* SD1_CMD */ + +#define BSP_IO_SD1_DATA0 0xFFFF1300 /* SD1_DATA0 */ +#define BSP_IO_SD1_DATA1 0xFFFF1301 /* SD1_DATA1 */ +#define BSP_IO_SD1_DATA2 0xFFFF1302 /* SD1_DATA2 */ +#define BSP_IO_SD1_DATA3 0xFFFF1303 /* SD1_DATA3 */ + +/*FILNUM*/ +#define RZG_FILNUM_4_STAGE 0 +#define RZG_FILNUM_8_STAGE 1 +#define RZG_FILNUM_12_STAGE 2 +#define RZG_FILNUM_16_STAGE 3 + +/*FILCLKSEL*/ +#define RZG_FILCLKSEL_NOT_DIV 0 +#define RZG_FILCLKSEL_DIV_9000 1 +#define RZG_FILCLKSEL_DIV_18000 2 +#define RZG_FILCLKSEL_DIV_36000 3 + +#define RZG_FILTER_SET(filnum, filclksel) (((filnum) & 0x3) << 0x2) | (filclksel & 0x3) + +#endif /*ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_RENESAS_PINCTRL_RZG_COMMON_H_*/ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/rpi-pico-rp2040-pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/rpi-pico-rp2040-pinctrl.h index c7870a21..64c3832d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/rpi-pico-rp2040-pinctrl.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/rpi-pico-rp2040-pinctrl.h @@ -25,6 +25,11 @@ #define RP2_PIN_NUM_POS 4 #define RP2_PIN_NUM_MASK 0x1f +#define RP2_GPIO_OVERRIDE_NORMAL 0 +#define RP2_GPIO_OVERRIDE_INVERT 1 +#define RP2_GPIO_OVERRIDE_LOW 2 +#define RP2_GPIO_OVERRIDE_HIGH 3 + #define RP2040_PINMUX(pin_num, alt_func) (pin_num << RP2_PIN_NUM_POS | \ alt_func << RP2_ALT_FUNC_POS) @@ -226,4 +231,15 @@ #define GPOUT2_P24 RP2040_PINMUX(24, RP2_PINCTRL_GPIO_FUNC_GPCK) #define GPOUT3_P25 RP2040_PINMUX(25, RP2_PINCTRL_GPIO_FUNC_GPCK) +#define USB_VBUS_DET_P1 RP2040_PINMUX(1, RP2_PINCTRL_GPIO_FUNC_USB) +#define USB_VBUS_DET_P4 RP2040_PINMUX(4, RP2_PINCTRL_GPIO_FUNC_USB) +#define USB_VBUS_DET_P7 RP2040_PINMUX(7, RP2_PINCTRL_GPIO_FUNC_USB) +#define USB_VBUS_DET_P10 RP2040_PINMUX(10, RP2_PINCTRL_GPIO_FUNC_USB) +#define USB_VBUS_DET_P13 RP2040_PINMUX(13, RP2_PINCTRL_GPIO_FUNC_USB) +#define USB_VBUS_DET_P16 RP2040_PINMUX(16, RP2_PINCTRL_GPIO_FUNC_USB) +#define USB_VBUS_DET_P19 RP2040_PINMUX(19, RP2_PINCTRL_GPIO_FUNC_USB) +#define USB_VBUS_DET_P22 RP2040_PINMUX(22, RP2_PINCTRL_GPIO_FUNC_USB) +#define USB_VBUS_DET_P25 RP2040_PINMUX(25, RP2_PINCTRL_GPIO_FUNC_USB) +#define USB_VBUS_DET_P28 RP2040_PINMUX(28, RP2_PINCTRL_GPIO_FUNC_USB) + #endif /* __RP2040_PINCTRL_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/si32-pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/si32-pinctrl.h new file mode 100644 index 00000000..994480b3 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/si32-pinctrl.h @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2024 GARDENA GmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_SI32_PINCTRL_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_SI32_PINCTRL_ + +#define SI32_SIGNAL_USART0_TX 0 +#define SI32_SIGNAL_USART0_RX 1 +#define SI32_SIGNAL_USART0_RTS 2 +#define SI32_SIGNAL_USART0_CTS 3 +#define SI32_SIGNAL_USART0_UCLK 4 + +#define SI32_SIGNAL_SPI0_SCK 5 +#define SI32_SIGNAL_SPI0_MISO 6 +#define SI32_SIGNAL_SPI0_MOSI 7 +#define SI32_SIGNAL_SPI0_NSS 8 + +#define SI32_SIGNAL_USART1_TX 9 +#define SI32_SIGNAL_USART1_RX 10 +#define SI32_SIGNAL_USART1_RTS 11 +#define SI32_SIGNAL_USART1_CTS 12 +#define SI32_SIGNAL_USART1_UCLK 13 + +#define SI32_SIGNAL_EPCA0_CEX0 14 +#define SI32_SIGNAL_EPCA0_CEX1 15 +#define SI32_SIGNAL_EPCA0_CEX2 16 +#define SI32_SIGNAL_EPCA0_CEX3 17 +#define SI32_SIGNAL_EPCA0_CEX4 18 +#define SI32_SIGNAL_EPCA0_CEX4 19 + +#define SI32_SIGNAL_PCA0_CEX0 20 +#define SI32_SIGNAL_PCA0_CEX1 21 + +#define SI32_SIGNAL_PCA1_CEX0 22 +#define SI32_SIGNAL_PCA1_CEX1 23 + +#define SI32_SIGNAL_EPCA0_ECI 24 + +#define SI32_SIGNAL_PCA0_ECI 25 + +#define SI32_SIGNAL_PCA1_ECI 26 + +#define SI32_SIGNAL_I2S0_TX_WS 27 +#define SI32_SIGNAL_I2S0_TX_SCK 28 +#define SI32_SIGNAL_I2S0_TX_SD 29 + +#define SI32_SIGNAL_I2C0_SDA 30 +#define SI32_SIGNAL_I2C0_SCL 31 + +#define SI32_SIGNAL_CMP0S 32 +#define SI32_SIGNAL_CMP0A 33 + +#define SI32_SIGNAL_CMP1S 34 +#define SI32_SIGNAL_CMP1A 35 + +#define SI32_SIGNAL_TIMER0_CT 36 +#define SI32_SIGNAL_TIMER0_EX 37 + +#define SI32_SIGNAL_TIMER1_CT 38 +#define SI32_SIGNAL_TIMER1_EX 39 + +#define SI32_SIGNAL_UART0_TX 40 +#define SI32_SIGNAL_UART0_RX 41 +#define SI32_SIGNAL_UART0_RTS 42 +#define SI32_SIGNAL_UART0_CTS 43 + +#define SI32_SIGNAL_UART1_TX 44 +#define SI32_SIGNAL_UART1_RX 45 + +#define SI32_SIGNAL_SPI1_SCK 46 +#define SI32_SIGNAL_SPI1_MISO 47 +#define SI32_SIGNAL_SPI1_MOSI 48 +#define SI32_SIGNAL_SPI1_NSS 49 + +#define SI32_SIGNAL_SPI2_SCK 50 +#define SI32_SIGNAL_SPI2_MISO 51 +#define SI32_SIGNAL_SPI2_MOSI 52 +#define SI32_SIGNAL_SPI2_NSS 53 + +#define SI32_SIGNAL_AHB_OUT 54 + +#define SI32_SIGNAL_SSG0_EX0 55 +#define SI32_SIGNAL_SSG0_EX1 56 +#define SI32_SIGNAL_SSG0_EX2 57 +#define SI32_SIGNAL_SSG0_EX3 58 + +#define SI32_SIGNAL_RTC0_OUT 59 + +#define SI32_SIGNAL_I2S0_RX_WS 60 +#define SI32_SIGNAL_I2S0_RX_SCK 61 +#define SI32_SIGNAL_I2S0_RX_SD 62 + +#define SI32_SIGNAL_LPTIMER0_OUT 63 + +#define SI32_SIGNAL_I2C1_SDA 64 +#define SI32_SIGNAL_I2C1_SCL 65 + +#define SI32_SIGNAL_PB_HDKILL 66 + +/** + * @brief Specify MUX field + * + * @param fun Function name + * @param port Port number (0 to 4) + * @param pin Port pin number (0 to 15) + */ +#define SI32_MUX(fun, port, pin) \ + ((((port)&0x7)) | (((pin)&0xF) << 3) | ((SI32_SIGNAL_##fun & 0x7F) << 22)) + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_SI32_PINCTRL_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs-pinctrl-dbus.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs-pinctrl-dbus.h new file mode 100644 index 00000000..9ad02a5c --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs-pinctrl-dbus.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2024 Silicon Labs + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_SILABS_PINCTRL_DBUS_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_SILABS_PINCTRL_DBUS_H_ + +#include + +/* + * Silabs Series 2 DBUS configuration is encoded in a 32-bit bitfield organized as follows: + * + * 31..29: Reserved + * 28..24: Route register offset in words from peripheral config (offset of ROUTE + * register in GPIO_ROUTE_TypeDef) + * 23..19: Enable bit (offset into ROUTEEN register for given function) + * 18 : Enable bit presence (some inputs are auto-enabled) + * 17..8 : Peripheral config offset in words from DBUS base within GPIO (offset of ROUTE[n] + * register in GPIO_TypeDef minus offset of first route register [DBGROUTEPEN, 0x440]) + * 7..4 : GPIO pin + * 3..0 : GPIO port + */ + +#define SILABS_PINCTRL_GPIO_PORT_MASK 0x0000000FUL +#define SILABS_PINCTRL_GPIO_PIN_MASK 0x000000F0UL +#define SILABS_PINCTRL_PERIPH_BASE_MASK 0x0003FF00UL +#define SILABS_PINCTRL_HAVE_EN_MASK 0x00040000UL +#define SILABS_PINCTRL_EN_BIT_MASK 0x00F80000UL +#define SILABS_PINCTRL_ROUTE_MASK 0x1F000000UL + +#define SILABS_DBUS(port, pin, periph_base, en_present, en_bit, route) \ + (FIELD_PREP(SILABS_PINCTRL_GPIO_PORT_MASK, port) | \ + FIELD_PREP(SILABS_PINCTRL_GPIO_PIN_MASK, pin) | \ + FIELD_PREP(SILABS_PINCTRL_PERIPH_BASE_MASK, periph_base) | \ + FIELD_PREP(SILABS_PINCTRL_HAVE_EN_MASK, en_present) | \ + FIELD_PREP(SILABS_PINCTRL_EN_BIT_MASK, en_bit) | \ + FIELD_PREP(SILABS_PINCTRL_ROUTE_MASK, route)) + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PINCTRL_SILABS_PINCTRL_DBUS_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg21-pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg21-pinctrl.h new file mode 100644 index 00000000..4ab1c6ab --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg21-pinctrl.h @@ -0,0 +1,1188 @@ +/* + * Copyright (c) 2024 Silicon Laboratories Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Pin Control for Silicon Labs XG21 devices + * + * This file was generated by the script gen_pinctrl.py in the hal_silabs module. + * Do not manually edit. + */ + +#ifndef ZEPHYR_DT_BINDINGS_PINCTRL_SILABS_XG21_PINCTRL_H_ +#define ZEPHYR_DT_BINDINGS_PINCTRL_SILABS_XG21_PINCTRL_H_ + +#include + +#define SILABS_DBUS_ACMP0_ACMPOUT(port, pin) SILABS_DBUS(port, pin, 4, 1, 0, 1) + +#define SILABS_DBUS_ACMP1_ACMPOUT(port, pin) SILABS_DBUS(port, pin, 7, 1, 0, 1) + +#define SILABS_DBUS_CMU_CLKOUT0(port, pin) SILABS_DBUS(port, pin, 10, 1, 0, 2) +#define SILABS_DBUS_CMU_CLKOUT1(port, pin) SILABS_DBUS(port, pin, 10, 1, 1, 3) +#define SILABS_DBUS_CMU_CLKOUT2(port, pin) SILABS_DBUS(port, pin, 10, 1, 2, 4) +#define SILABS_DBUS_CMU_CLKIN0(port, pin) SILABS_DBUS(port, pin, 10, 0, 0, 1) + +#define SILABS_DBUS_PTI_DCLK(port, pin) SILABS_DBUS(port, pin, 17, 1, 0, 1) +#define SILABS_DBUS_PTI_DFRAME(port, pin) SILABS_DBUS(port, pin, 17, 1, 1, 2) +#define SILABS_DBUS_PTI_DOUT(port, pin) SILABS_DBUS(port, pin, 17, 1, 2, 3) + +#define SILABS_DBUS_I2C0_SCL(port, pin) SILABS_DBUS(port, pin, 22, 1, 0, 1) +#define SILABS_DBUS_I2C0_SDA(port, pin) SILABS_DBUS(port, pin, 22, 1, 1, 2) + +#define SILABS_DBUS_I2C1_SCL(port, pin) SILABS_DBUS(port, pin, 26, 1, 0, 1) +#define SILABS_DBUS_I2C1_SDA(port, pin) SILABS_DBUS(port, pin, 26, 1, 1, 2) + +#define SILABS_DBUS_LETIMER0_OUT0(port, pin) SILABS_DBUS(port, pin, 30, 1, 0, 1) +#define SILABS_DBUS_LETIMER0_OUT1(port, pin) SILABS_DBUS(port, pin, 30, 1, 1, 2) + +#define SILABS_DBUS_MODEM_ANT0(port, pin) SILABS_DBUS(port, pin, 34, 1, 0, 1) +#define SILABS_DBUS_MODEM_ANT1(port, pin) SILABS_DBUS(port, pin, 34, 1, 1, 2) +#define SILABS_DBUS_MODEM_DCLK(port, pin) SILABS_DBUS(port, pin, 34, 1, 2, 3) +#define SILABS_DBUS_MODEM_DOUT(port, pin) SILABS_DBUS(port, pin, 34, 1, 3, 5) +#define SILABS_DBUS_MODEM_DIN(port, pin) SILABS_DBUS(port, pin, 34, 0, 0, 4) + +#define SILABS_DBUS_PRS0_ASYNCH0(port, pin) SILABS_DBUS(port, pin, 41, 1, 0, 1) +#define SILABS_DBUS_PRS0_ASYNCH1(port, pin) SILABS_DBUS(port, pin, 41, 1, 1, 2) +#define SILABS_DBUS_PRS0_ASYNCH2(port, pin) SILABS_DBUS(port, pin, 41, 1, 2, 3) +#define SILABS_DBUS_PRS0_ASYNCH3(port, pin) SILABS_DBUS(port, pin, 41, 1, 3, 4) +#define SILABS_DBUS_PRS0_ASYNCH4(port, pin) SILABS_DBUS(port, pin, 41, 1, 4, 5) +#define SILABS_DBUS_PRS0_ASYNCH5(port, pin) SILABS_DBUS(port, pin, 41, 1, 5, 6) +#define SILABS_DBUS_PRS0_ASYNCH6(port, pin) SILABS_DBUS(port, pin, 41, 1, 6, 7) +#define SILABS_DBUS_PRS0_ASYNCH7(port, pin) SILABS_DBUS(port, pin, 41, 1, 7, 8) +#define SILABS_DBUS_PRS0_ASYNCH8(port, pin) SILABS_DBUS(port, pin, 41, 1, 8, 9) +#define SILABS_DBUS_PRS0_ASYNCH9(port, pin) SILABS_DBUS(port, pin, 41, 1, 9, 10) +#define SILABS_DBUS_PRS0_ASYNCH10(port, pin) SILABS_DBUS(port, pin, 41, 1, 10, 11) +#define SILABS_DBUS_PRS0_ASYNCH11(port, pin) SILABS_DBUS(port, pin, 41, 1, 11, 12) +#define SILABS_DBUS_PRS0_SYNCH0(port, pin) SILABS_DBUS(port, pin, 41, 1, 12, 13) +#define SILABS_DBUS_PRS0_SYNCH1(port, pin) SILABS_DBUS(port, pin, 41, 1, 13, 14) +#define SILABS_DBUS_PRS0_SYNCH2(port, pin) SILABS_DBUS(port, pin, 41, 1, 14, 15) +#define SILABS_DBUS_PRS0_SYNCH3(port, pin) SILABS_DBUS(port, pin, 41, 1, 15, 16) + +#define SILABS_DBUS_TIMER0_CC0(port, pin) SILABS_DBUS(port, pin, 59, 1, 0, 1) +#define SILABS_DBUS_TIMER0_CC1(port, pin) SILABS_DBUS(port, pin, 59, 1, 1, 2) +#define SILABS_DBUS_TIMER0_CC2(port, pin) SILABS_DBUS(port, pin, 59, 1, 2, 3) +#define SILABS_DBUS_TIMER0_CDTI0(port, pin) SILABS_DBUS(port, pin, 59, 1, 3, 4) +#define SILABS_DBUS_TIMER0_CDTI1(port, pin) SILABS_DBUS(port, pin, 59, 1, 4, 5) +#define SILABS_DBUS_TIMER0_CDTI2(port, pin) SILABS_DBUS(port, pin, 59, 1, 5, 6) + +#define SILABS_DBUS_TIMER1_CC0(port, pin) SILABS_DBUS(port, pin, 67, 1, 0, 1) +#define SILABS_DBUS_TIMER1_CC1(port, pin) SILABS_DBUS(port, pin, 67, 1, 1, 2) +#define SILABS_DBUS_TIMER1_CC2(port, pin) SILABS_DBUS(port, pin, 67, 1, 2, 3) +#define SILABS_DBUS_TIMER1_CDTI0(port, pin) SILABS_DBUS(port, pin, 67, 1, 3, 4) +#define SILABS_DBUS_TIMER1_CDTI1(port, pin) SILABS_DBUS(port, pin, 67, 1, 4, 5) +#define SILABS_DBUS_TIMER1_CDTI2(port, pin) SILABS_DBUS(port, pin, 67, 1, 5, 6) + +#define SILABS_DBUS_TIMER2_CC0(port, pin) SILABS_DBUS(port, pin, 75, 1, 0, 1) +#define SILABS_DBUS_TIMER2_CC1(port, pin) SILABS_DBUS(port, pin, 75, 1, 1, 2) +#define SILABS_DBUS_TIMER2_CC2(port, pin) SILABS_DBUS(port, pin, 75, 1, 2, 3) +#define SILABS_DBUS_TIMER2_CDTI0(port, pin) SILABS_DBUS(port, pin, 75, 1, 3, 4) +#define SILABS_DBUS_TIMER2_CDTI1(port, pin) SILABS_DBUS(port, pin, 75, 1, 4, 5) +#define SILABS_DBUS_TIMER2_CDTI2(port, pin) SILABS_DBUS(port, pin, 75, 1, 5, 6) + +#define SILABS_DBUS_TIMER3_CC0(port, pin) SILABS_DBUS(port, pin, 83, 1, 0, 1) +#define SILABS_DBUS_TIMER3_CC1(port, pin) SILABS_DBUS(port, pin, 83, 1, 1, 2) +#define SILABS_DBUS_TIMER3_CC2(port, pin) SILABS_DBUS(port, pin, 83, 1, 2, 3) +#define SILABS_DBUS_TIMER3_CDTI0(port, pin) SILABS_DBUS(port, pin, 83, 1, 3, 4) +#define SILABS_DBUS_TIMER3_CDTI1(port, pin) SILABS_DBUS(port, pin, 83, 1, 4, 5) +#define SILABS_DBUS_TIMER3_CDTI2(port, pin) SILABS_DBUS(port, pin, 83, 1, 5, 6) + +#define SILABS_DBUS_USART0_CS(port, pin) SILABS_DBUS(port, pin, 91, 1, 0, 1) +#define SILABS_DBUS_USART0_RTS(port, pin) SILABS_DBUS(port, pin, 91, 1, 1, 3) +#define SILABS_DBUS_USART0_RX(port, pin) SILABS_DBUS(port, pin, 91, 1, 2, 4) +#define SILABS_DBUS_USART0_CLK(port, pin) SILABS_DBUS(port, pin, 91, 1, 3, 5) +#define SILABS_DBUS_USART0_TX(port, pin) SILABS_DBUS(port, pin, 91, 1, 4, 6) +#define SILABS_DBUS_USART0_CTS(port, pin) SILABS_DBUS(port, pin, 91, 0, 0, 2) + +#define SILABS_DBUS_USART1_CS(port, pin) SILABS_DBUS(port, pin, 99, 1, 0, 1) +#define SILABS_DBUS_USART1_RTS(port, pin) SILABS_DBUS(port, pin, 99, 1, 1, 3) +#define SILABS_DBUS_USART1_RX(port, pin) SILABS_DBUS(port, pin, 99, 1, 2, 4) +#define SILABS_DBUS_USART1_CLK(port, pin) SILABS_DBUS(port, pin, 99, 1, 3, 5) +#define SILABS_DBUS_USART1_TX(port, pin) SILABS_DBUS(port, pin, 99, 1, 4, 6) +#define SILABS_DBUS_USART1_CTS(port, pin) SILABS_DBUS(port, pin, 99, 0, 0, 2) + +#define SILABS_DBUS_USART2_CS(port, pin) SILABS_DBUS(port, pin, 107, 1, 0, 1) +#define SILABS_DBUS_USART2_RTS(port, pin) SILABS_DBUS(port, pin, 107, 1, 1, 3) +#define SILABS_DBUS_USART2_RX(port, pin) SILABS_DBUS(port, pin, 107, 1, 2, 4) +#define SILABS_DBUS_USART2_CLK(port, pin) SILABS_DBUS(port, pin, 107, 1, 3, 5) +#define SILABS_DBUS_USART2_TX(port, pin) SILABS_DBUS(port, pin, 107, 1, 4, 6) +#define SILABS_DBUS_USART2_CTS(port, pin) SILABS_DBUS(port, pin, 107, 0, 0, 2) + +#define ACMP0_ACMPOUT_PA0 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x0) +#define ACMP0_ACMPOUT_PA1 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x1) +#define ACMP0_ACMPOUT_PA2 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x2) +#define ACMP0_ACMPOUT_PA3 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x3) +#define ACMP0_ACMPOUT_PA4 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x4) +#define ACMP0_ACMPOUT_PA5 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x5) +#define ACMP0_ACMPOUT_PA6 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x6) +#define ACMP0_ACMPOUT_PB0 SILABS_DBUS_ACMP0_ACMPOUT(0x1, 0x0) +#define ACMP0_ACMPOUT_PB1 SILABS_DBUS_ACMP0_ACMPOUT(0x1, 0x1) +#define ACMP0_ACMPOUT_PC0 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x0) +#define ACMP0_ACMPOUT_PC1 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x1) +#define ACMP0_ACMPOUT_PC2 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x2) +#define ACMP0_ACMPOUT_PC3 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x3) +#define ACMP0_ACMPOUT_PC4 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x4) +#define ACMP0_ACMPOUT_PC5 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x5) +#define ACMP0_ACMPOUT_PD0 SILABS_DBUS_ACMP0_ACMPOUT(0x3, 0x0) +#define ACMP0_ACMPOUT_PD1 SILABS_DBUS_ACMP0_ACMPOUT(0x3, 0x1) +#define ACMP0_ACMPOUT_PD2 SILABS_DBUS_ACMP0_ACMPOUT(0x3, 0x2) +#define ACMP0_ACMPOUT_PD3 SILABS_DBUS_ACMP0_ACMPOUT(0x3, 0x3) +#define ACMP0_ACMPOUT_PD4 SILABS_DBUS_ACMP0_ACMPOUT(0x3, 0x4) + +#define ACMP1_ACMPOUT_PA0 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x0) +#define ACMP1_ACMPOUT_PA1 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x1) +#define ACMP1_ACMPOUT_PA2 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x2) +#define ACMP1_ACMPOUT_PA3 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x3) +#define ACMP1_ACMPOUT_PA4 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x4) +#define ACMP1_ACMPOUT_PA5 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x5) +#define ACMP1_ACMPOUT_PA6 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x6) +#define ACMP1_ACMPOUT_PB0 SILABS_DBUS_ACMP1_ACMPOUT(0x1, 0x0) +#define ACMP1_ACMPOUT_PB1 SILABS_DBUS_ACMP1_ACMPOUT(0x1, 0x1) +#define ACMP1_ACMPOUT_PC0 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x0) +#define ACMP1_ACMPOUT_PC1 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x1) +#define ACMP1_ACMPOUT_PC2 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x2) +#define ACMP1_ACMPOUT_PC3 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x3) +#define ACMP1_ACMPOUT_PC4 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x4) +#define ACMP1_ACMPOUT_PC5 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x5) +#define ACMP1_ACMPOUT_PD0 SILABS_DBUS_ACMP1_ACMPOUT(0x3, 0x0) +#define ACMP1_ACMPOUT_PD1 SILABS_DBUS_ACMP1_ACMPOUT(0x3, 0x1) +#define ACMP1_ACMPOUT_PD2 SILABS_DBUS_ACMP1_ACMPOUT(0x3, 0x2) +#define ACMP1_ACMPOUT_PD3 SILABS_DBUS_ACMP1_ACMPOUT(0x3, 0x3) +#define ACMP1_ACMPOUT_PD4 SILABS_DBUS_ACMP1_ACMPOUT(0x3, 0x4) + +#define CMU_CLKOUT0_PC0 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x0) +#define CMU_CLKOUT0_PC1 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x1) +#define CMU_CLKOUT0_PC2 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x2) +#define CMU_CLKOUT0_PC3 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x3) +#define CMU_CLKOUT0_PC4 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x4) +#define CMU_CLKOUT0_PC5 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x5) +#define CMU_CLKOUT0_PD0 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x0) +#define CMU_CLKOUT0_PD1 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x1) +#define CMU_CLKOUT0_PD2 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x2) +#define CMU_CLKOUT0_PD3 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x3) +#define CMU_CLKOUT0_PD4 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x4) +#define CMU_CLKOUT1_PC0 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x0) +#define CMU_CLKOUT1_PC1 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x1) +#define CMU_CLKOUT1_PC2 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x2) +#define CMU_CLKOUT1_PC3 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x3) +#define CMU_CLKOUT1_PC4 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x4) +#define CMU_CLKOUT1_PC5 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x5) +#define CMU_CLKOUT1_PD0 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x0) +#define CMU_CLKOUT1_PD1 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x1) +#define CMU_CLKOUT1_PD2 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x2) +#define CMU_CLKOUT1_PD3 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x3) +#define CMU_CLKOUT1_PD4 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x4) +#define CMU_CLKOUT2_PA0 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x0) +#define CMU_CLKOUT2_PA1 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x1) +#define CMU_CLKOUT2_PA2 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x2) +#define CMU_CLKOUT2_PA3 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x3) +#define CMU_CLKOUT2_PA4 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x4) +#define CMU_CLKOUT2_PA5 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x5) +#define CMU_CLKOUT2_PA6 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x6) +#define CMU_CLKOUT2_PB0 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x0) +#define CMU_CLKOUT2_PB1 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x1) +#define CMU_CLKIN0_PC0 SILABS_DBUS_CMU_CLKIN0(0x2, 0x0) +#define CMU_CLKIN0_PC1 SILABS_DBUS_CMU_CLKIN0(0x2, 0x1) +#define CMU_CLKIN0_PC2 SILABS_DBUS_CMU_CLKIN0(0x2, 0x2) +#define CMU_CLKIN0_PC3 SILABS_DBUS_CMU_CLKIN0(0x2, 0x3) +#define CMU_CLKIN0_PC4 SILABS_DBUS_CMU_CLKIN0(0x2, 0x4) +#define CMU_CLKIN0_PC5 SILABS_DBUS_CMU_CLKIN0(0x2, 0x5) +#define CMU_CLKIN0_PD0 SILABS_DBUS_CMU_CLKIN0(0x3, 0x0) +#define CMU_CLKIN0_PD1 SILABS_DBUS_CMU_CLKIN0(0x3, 0x1) +#define CMU_CLKIN0_PD2 SILABS_DBUS_CMU_CLKIN0(0x3, 0x2) +#define CMU_CLKIN0_PD3 SILABS_DBUS_CMU_CLKIN0(0x3, 0x3) +#define CMU_CLKIN0_PD4 SILABS_DBUS_CMU_CLKIN0(0x3, 0x4) + +#define PTI_DCLK_PC0 SILABS_DBUS_PTI_DCLK(0x2, 0x0) +#define PTI_DCLK_PC1 SILABS_DBUS_PTI_DCLK(0x2, 0x1) +#define PTI_DCLK_PC2 SILABS_DBUS_PTI_DCLK(0x2, 0x2) +#define PTI_DCLK_PC3 SILABS_DBUS_PTI_DCLK(0x2, 0x3) +#define PTI_DCLK_PC4 SILABS_DBUS_PTI_DCLK(0x2, 0x4) +#define PTI_DCLK_PC5 SILABS_DBUS_PTI_DCLK(0x2, 0x5) +#define PTI_DCLK_PD0 SILABS_DBUS_PTI_DCLK(0x3, 0x0) +#define PTI_DCLK_PD1 SILABS_DBUS_PTI_DCLK(0x3, 0x1) +#define PTI_DCLK_PD2 SILABS_DBUS_PTI_DCLK(0x3, 0x2) +#define PTI_DCLK_PD3 SILABS_DBUS_PTI_DCLK(0x3, 0x3) +#define PTI_DCLK_PD4 SILABS_DBUS_PTI_DCLK(0x3, 0x4) +#define PTI_DFRAME_PC0 SILABS_DBUS_PTI_DFRAME(0x2, 0x0) +#define PTI_DFRAME_PC1 SILABS_DBUS_PTI_DFRAME(0x2, 0x1) +#define PTI_DFRAME_PC2 SILABS_DBUS_PTI_DFRAME(0x2, 0x2) +#define PTI_DFRAME_PC3 SILABS_DBUS_PTI_DFRAME(0x2, 0x3) +#define PTI_DFRAME_PC4 SILABS_DBUS_PTI_DFRAME(0x2, 0x4) +#define PTI_DFRAME_PC5 SILABS_DBUS_PTI_DFRAME(0x2, 0x5) +#define PTI_DFRAME_PD0 SILABS_DBUS_PTI_DFRAME(0x3, 0x0) +#define PTI_DFRAME_PD1 SILABS_DBUS_PTI_DFRAME(0x3, 0x1) +#define PTI_DFRAME_PD2 SILABS_DBUS_PTI_DFRAME(0x3, 0x2) +#define PTI_DFRAME_PD3 SILABS_DBUS_PTI_DFRAME(0x3, 0x3) +#define PTI_DFRAME_PD4 SILABS_DBUS_PTI_DFRAME(0x3, 0x4) +#define PTI_DOUT_PC0 SILABS_DBUS_PTI_DOUT(0x2, 0x0) +#define PTI_DOUT_PC1 SILABS_DBUS_PTI_DOUT(0x2, 0x1) +#define PTI_DOUT_PC2 SILABS_DBUS_PTI_DOUT(0x2, 0x2) +#define PTI_DOUT_PC3 SILABS_DBUS_PTI_DOUT(0x2, 0x3) +#define PTI_DOUT_PC4 SILABS_DBUS_PTI_DOUT(0x2, 0x4) +#define PTI_DOUT_PC5 SILABS_DBUS_PTI_DOUT(0x2, 0x5) +#define PTI_DOUT_PD0 SILABS_DBUS_PTI_DOUT(0x3, 0x0) +#define PTI_DOUT_PD1 SILABS_DBUS_PTI_DOUT(0x3, 0x1) +#define PTI_DOUT_PD2 SILABS_DBUS_PTI_DOUT(0x3, 0x2) +#define PTI_DOUT_PD3 SILABS_DBUS_PTI_DOUT(0x3, 0x3) +#define PTI_DOUT_PD4 SILABS_DBUS_PTI_DOUT(0x3, 0x4) + +#define I2C0_SCL_PA0 SILABS_DBUS_I2C0_SCL(0x0, 0x0) +#define I2C0_SCL_PA1 SILABS_DBUS_I2C0_SCL(0x0, 0x1) +#define I2C0_SCL_PA2 SILABS_DBUS_I2C0_SCL(0x0, 0x2) +#define I2C0_SCL_PA3 SILABS_DBUS_I2C0_SCL(0x0, 0x3) +#define I2C0_SCL_PA4 SILABS_DBUS_I2C0_SCL(0x0, 0x4) +#define I2C0_SCL_PA5 SILABS_DBUS_I2C0_SCL(0x0, 0x5) +#define I2C0_SCL_PA6 SILABS_DBUS_I2C0_SCL(0x0, 0x6) +#define I2C0_SCL_PB0 SILABS_DBUS_I2C0_SCL(0x1, 0x0) +#define I2C0_SCL_PB1 SILABS_DBUS_I2C0_SCL(0x1, 0x1) +#define I2C0_SCL_PC0 SILABS_DBUS_I2C0_SCL(0x2, 0x0) +#define I2C0_SCL_PC1 SILABS_DBUS_I2C0_SCL(0x2, 0x1) +#define I2C0_SCL_PC2 SILABS_DBUS_I2C0_SCL(0x2, 0x2) +#define I2C0_SCL_PC3 SILABS_DBUS_I2C0_SCL(0x2, 0x3) +#define I2C0_SCL_PC4 SILABS_DBUS_I2C0_SCL(0x2, 0x4) +#define I2C0_SCL_PC5 SILABS_DBUS_I2C0_SCL(0x2, 0x5) +#define I2C0_SCL_PD0 SILABS_DBUS_I2C0_SCL(0x3, 0x0) +#define I2C0_SCL_PD1 SILABS_DBUS_I2C0_SCL(0x3, 0x1) +#define I2C0_SCL_PD2 SILABS_DBUS_I2C0_SCL(0x3, 0x2) +#define I2C0_SCL_PD3 SILABS_DBUS_I2C0_SCL(0x3, 0x3) +#define I2C0_SCL_PD4 SILABS_DBUS_I2C0_SCL(0x3, 0x4) +#define I2C0_SDA_PA0 SILABS_DBUS_I2C0_SDA(0x0, 0x0) +#define I2C0_SDA_PA1 SILABS_DBUS_I2C0_SDA(0x0, 0x1) +#define I2C0_SDA_PA2 SILABS_DBUS_I2C0_SDA(0x0, 0x2) +#define I2C0_SDA_PA3 SILABS_DBUS_I2C0_SDA(0x0, 0x3) +#define I2C0_SDA_PA4 SILABS_DBUS_I2C0_SDA(0x0, 0x4) +#define I2C0_SDA_PA5 SILABS_DBUS_I2C0_SDA(0x0, 0x5) +#define I2C0_SDA_PA6 SILABS_DBUS_I2C0_SDA(0x0, 0x6) +#define I2C0_SDA_PB0 SILABS_DBUS_I2C0_SDA(0x1, 0x0) +#define I2C0_SDA_PB1 SILABS_DBUS_I2C0_SDA(0x1, 0x1) +#define I2C0_SDA_PC0 SILABS_DBUS_I2C0_SDA(0x2, 0x0) +#define I2C0_SDA_PC1 SILABS_DBUS_I2C0_SDA(0x2, 0x1) +#define I2C0_SDA_PC2 SILABS_DBUS_I2C0_SDA(0x2, 0x2) +#define I2C0_SDA_PC3 SILABS_DBUS_I2C0_SDA(0x2, 0x3) +#define I2C0_SDA_PC4 SILABS_DBUS_I2C0_SDA(0x2, 0x4) +#define I2C0_SDA_PC5 SILABS_DBUS_I2C0_SDA(0x2, 0x5) +#define I2C0_SDA_PD0 SILABS_DBUS_I2C0_SDA(0x3, 0x0) +#define I2C0_SDA_PD1 SILABS_DBUS_I2C0_SDA(0x3, 0x1) +#define I2C0_SDA_PD2 SILABS_DBUS_I2C0_SDA(0x3, 0x2) +#define I2C0_SDA_PD3 SILABS_DBUS_I2C0_SDA(0x3, 0x3) +#define I2C0_SDA_PD4 SILABS_DBUS_I2C0_SDA(0x3, 0x4) + +#define I2C1_SCL_PC0 SILABS_DBUS_I2C1_SCL(0x2, 0x0) +#define I2C1_SCL_PC1 SILABS_DBUS_I2C1_SCL(0x2, 0x1) +#define I2C1_SCL_PC2 SILABS_DBUS_I2C1_SCL(0x2, 0x2) +#define I2C1_SCL_PC3 SILABS_DBUS_I2C1_SCL(0x2, 0x3) +#define I2C1_SCL_PC4 SILABS_DBUS_I2C1_SCL(0x2, 0x4) +#define I2C1_SCL_PC5 SILABS_DBUS_I2C1_SCL(0x2, 0x5) +#define I2C1_SCL_PD0 SILABS_DBUS_I2C1_SCL(0x3, 0x0) +#define I2C1_SCL_PD1 SILABS_DBUS_I2C1_SCL(0x3, 0x1) +#define I2C1_SCL_PD2 SILABS_DBUS_I2C1_SCL(0x3, 0x2) +#define I2C1_SCL_PD3 SILABS_DBUS_I2C1_SCL(0x3, 0x3) +#define I2C1_SCL_PD4 SILABS_DBUS_I2C1_SCL(0x3, 0x4) +#define I2C1_SDA_PC0 SILABS_DBUS_I2C1_SDA(0x2, 0x0) +#define I2C1_SDA_PC1 SILABS_DBUS_I2C1_SDA(0x2, 0x1) +#define I2C1_SDA_PC2 SILABS_DBUS_I2C1_SDA(0x2, 0x2) +#define I2C1_SDA_PC3 SILABS_DBUS_I2C1_SDA(0x2, 0x3) +#define I2C1_SDA_PC4 SILABS_DBUS_I2C1_SDA(0x2, 0x4) +#define I2C1_SDA_PC5 SILABS_DBUS_I2C1_SDA(0x2, 0x5) +#define I2C1_SDA_PD0 SILABS_DBUS_I2C1_SDA(0x3, 0x0) +#define I2C1_SDA_PD1 SILABS_DBUS_I2C1_SDA(0x3, 0x1) +#define I2C1_SDA_PD2 SILABS_DBUS_I2C1_SDA(0x3, 0x2) +#define I2C1_SDA_PD3 SILABS_DBUS_I2C1_SDA(0x3, 0x3) +#define I2C1_SDA_PD4 SILABS_DBUS_I2C1_SDA(0x3, 0x4) + +#define LETIMER0_OUT0_PA0 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x0) +#define LETIMER0_OUT0_PA1 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x1) +#define LETIMER0_OUT0_PA2 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x2) +#define LETIMER0_OUT0_PA3 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x3) +#define LETIMER0_OUT0_PA4 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x4) +#define LETIMER0_OUT0_PA5 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x5) +#define LETIMER0_OUT0_PA6 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x6) +#define LETIMER0_OUT0_PB0 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x0) +#define LETIMER0_OUT0_PB1 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x1) +#define LETIMER0_OUT1_PA0 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x0) +#define LETIMER0_OUT1_PA1 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x1) +#define LETIMER0_OUT1_PA2 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x2) +#define LETIMER0_OUT1_PA3 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x3) +#define LETIMER0_OUT1_PA4 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x4) +#define LETIMER0_OUT1_PA5 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x5) +#define LETIMER0_OUT1_PA6 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x6) +#define LETIMER0_OUT1_PB0 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x0) +#define LETIMER0_OUT1_PB1 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x1) + +#define MODEM_ANT0_PA0 SILABS_DBUS_MODEM_ANT0(0x0, 0x0) +#define MODEM_ANT0_PA1 SILABS_DBUS_MODEM_ANT0(0x0, 0x1) +#define MODEM_ANT0_PA2 SILABS_DBUS_MODEM_ANT0(0x0, 0x2) +#define MODEM_ANT0_PA3 SILABS_DBUS_MODEM_ANT0(0x0, 0x3) +#define MODEM_ANT0_PA4 SILABS_DBUS_MODEM_ANT0(0x0, 0x4) +#define MODEM_ANT0_PA5 SILABS_DBUS_MODEM_ANT0(0x0, 0x5) +#define MODEM_ANT0_PA6 SILABS_DBUS_MODEM_ANT0(0x0, 0x6) +#define MODEM_ANT0_PB0 SILABS_DBUS_MODEM_ANT0(0x1, 0x0) +#define MODEM_ANT0_PB1 SILABS_DBUS_MODEM_ANT0(0x1, 0x1) +#define MODEM_ANT0_PC0 SILABS_DBUS_MODEM_ANT0(0x2, 0x0) +#define MODEM_ANT0_PC1 SILABS_DBUS_MODEM_ANT0(0x2, 0x1) +#define MODEM_ANT0_PC2 SILABS_DBUS_MODEM_ANT0(0x2, 0x2) +#define MODEM_ANT0_PC3 SILABS_DBUS_MODEM_ANT0(0x2, 0x3) +#define MODEM_ANT0_PC4 SILABS_DBUS_MODEM_ANT0(0x2, 0x4) +#define MODEM_ANT0_PC5 SILABS_DBUS_MODEM_ANT0(0x2, 0x5) +#define MODEM_ANT0_PD0 SILABS_DBUS_MODEM_ANT0(0x3, 0x0) +#define MODEM_ANT0_PD1 SILABS_DBUS_MODEM_ANT0(0x3, 0x1) +#define MODEM_ANT0_PD2 SILABS_DBUS_MODEM_ANT0(0x3, 0x2) +#define MODEM_ANT0_PD3 SILABS_DBUS_MODEM_ANT0(0x3, 0x3) +#define MODEM_ANT0_PD4 SILABS_DBUS_MODEM_ANT0(0x3, 0x4) +#define MODEM_ANT1_PA0 SILABS_DBUS_MODEM_ANT1(0x0, 0x0) +#define MODEM_ANT1_PA1 SILABS_DBUS_MODEM_ANT1(0x0, 0x1) +#define MODEM_ANT1_PA2 SILABS_DBUS_MODEM_ANT1(0x0, 0x2) +#define MODEM_ANT1_PA3 SILABS_DBUS_MODEM_ANT1(0x0, 0x3) +#define MODEM_ANT1_PA4 SILABS_DBUS_MODEM_ANT1(0x0, 0x4) +#define MODEM_ANT1_PA5 SILABS_DBUS_MODEM_ANT1(0x0, 0x5) +#define MODEM_ANT1_PA6 SILABS_DBUS_MODEM_ANT1(0x0, 0x6) +#define MODEM_ANT1_PB0 SILABS_DBUS_MODEM_ANT1(0x1, 0x0) +#define MODEM_ANT1_PB1 SILABS_DBUS_MODEM_ANT1(0x1, 0x1) +#define MODEM_ANT1_PC0 SILABS_DBUS_MODEM_ANT1(0x2, 0x0) +#define MODEM_ANT1_PC1 SILABS_DBUS_MODEM_ANT1(0x2, 0x1) +#define MODEM_ANT1_PC2 SILABS_DBUS_MODEM_ANT1(0x2, 0x2) +#define MODEM_ANT1_PC3 SILABS_DBUS_MODEM_ANT1(0x2, 0x3) +#define MODEM_ANT1_PC4 SILABS_DBUS_MODEM_ANT1(0x2, 0x4) +#define MODEM_ANT1_PC5 SILABS_DBUS_MODEM_ANT1(0x2, 0x5) +#define MODEM_ANT1_PD0 SILABS_DBUS_MODEM_ANT1(0x3, 0x0) +#define MODEM_ANT1_PD1 SILABS_DBUS_MODEM_ANT1(0x3, 0x1) +#define MODEM_ANT1_PD2 SILABS_DBUS_MODEM_ANT1(0x3, 0x2) +#define MODEM_ANT1_PD3 SILABS_DBUS_MODEM_ANT1(0x3, 0x3) +#define MODEM_ANT1_PD4 SILABS_DBUS_MODEM_ANT1(0x3, 0x4) +#define MODEM_DCLK_PA0 SILABS_DBUS_MODEM_DCLK(0x0, 0x0) +#define MODEM_DCLK_PA1 SILABS_DBUS_MODEM_DCLK(0x0, 0x1) +#define MODEM_DCLK_PA2 SILABS_DBUS_MODEM_DCLK(0x0, 0x2) +#define MODEM_DCLK_PA3 SILABS_DBUS_MODEM_DCLK(0x0, 0x3) +#define MODEM_DCLK_PA4 SILABS_DBUS_MODEM_DCLK(0x0, 0x4) +#define MODEM_DCLK_PA5 SILABS_DBUS_MODEM_DCLK(0x0, 0x5) +#define MODEM_DCLK_PA6 SILABS_DBUS_MODEM_DCLK(0x0, 0x6) +#define MODEM_DCLK_PB0 SILABS_DBUS_MODEM_DCLK(0x1, 0x0) +#define MODEM_DCLK_PB1 SILABS_DBUS_MODEM_DCLK(0x1, 0x1) +#define MODEM_DOUT_PA0 SILABS_DBUS_MODEM_DOUT(0x0, 0x0) +#define MODEM_DOUT_PA1 SILABS_DBUS_MODEM_DOUT(0x0, 0x1) +#define MODEM_DOUT_PA2 SILABS_DBUS_MODEM_DOUT(0x0, 0x2) +#define MODEM_DOUT_PA3 SILABS_DBUS_MODEM_DOUT(0x0, 0x3) +#define MODEM_DOUT_PA4 SILABS_DBUS_MODEM_DOUT(0x0, 0x4) +#define MODEM_DOUT_PA5 SILABS_DBUS_MODEM_DOUT(0x0, 0x5) +#define MODEM_DOUT_PA6 SILABS_DBUS_MODEM_DOUT(0x0, 0x6) +#define MODEM_DOUT_PB0 SILABS_DBUS_MODEM_DOUT(0x1, 0x0) +#define MODEM_DOUT_PB1 SILABS_DBUS_MODEM_DOUT(0x1, 0x1) +#define MODEM_DIN_PA0 SILABS_DBUS_MODEM_DIN(0x0, 0x0) +#define MODEM_DIN_PA1 SILABS_DBUS_MODEM_DIN(0x0, 0x1) +#define MODEM_DIN_PA2 SILABS_DBUS_MODEM_DIN(0x0, 0x2) +#define MODEM_DIN_PA3 SILABS_DBUS_MODEM_DIN(0x0, 0x3) +#define MODEM_DIN_PA4 SILABS_DBUS_MODEM_DIN(0x0, 0x4) +#define MODEM_DIN_PA5 SILABS_DBUS_MODEM_DIN(0x0, 0x5) +#define MODEM_DIN_PA6 SILABS_DBUS_MODEM_DIN(0x0, 0x6) +#define MODEM_DIN_PB0 SILABS_DBUS_MODEM_DIN(0x1, 0x0) +#define MODEM_DIN_PB1 SILABS_DBUS_MODEM_DIN(0x1, 0x1) + +#define PRS0_ASYNCH0_PA0 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x0) +#define PRS0_ASYNCH0_PA1 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x1) +#define PRS0_ASYNCH0_PA2 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x2) +#define PRS0_ASYNCH0_PA3 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x3) +#define PRS0_ASYNCH0_PA4 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x4) +#define PRS0_ASYNCH0_PA5 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x5) +#define PRS0_ASYNCH0_PA6 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x6) +#define PRS0_ASYNCH0_PB0 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x0) +#define PRS0_ASYNCH0_PB1 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x1) +#define PRS0_ASYNCH1_PA0 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x0) +#define PRS0_ASYNCH1_PA1 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x1) +#define PRS0_ASYNCH1_PA2 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x2) +#define PRS0_ASYNCH1_PA3 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x3) +#define PRS0_ASYNCH1_PA4 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x4) +#define PRS0_ASYNCH1_PA5 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x5) +#define PRS0_ASYNCH1_PA6 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x6) +#define PRS0_ASYNCH1_PB0 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x0) +#define PRS0_ASYNCH1_PB1 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x1) +#define PRS0_ASYNCH2_PA0 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x0) +#define PRS0_ASYNCH2_PA1 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x1) +#define PRS0_ASYNCH2_PA2 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x2) +#define PRS0_ASYNCH2_PA3 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x3) +#define PRS0_ASYNCH2_PA4 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x4) +#define PRS0_ASYNCH2_PA5 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x5) +#define PRS0_ASYNCH2_PA6 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x6) +#define PRS0_ASYNCH2_PB0 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x0) +#define PRS0_ASYNCH2_PB1 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x1) +#define PRS0_ASYNCH3_PA0 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x0) +#define PRS0_ASYNCH3_PA1 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x1) +#define PRS0_ASYNCH3_PA2 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x2) +#define PRS0_ASYNCH3_PA3 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x3) +#define PRS0_ASYNCH3_PA4 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x4) +#define PRS0_ASYNCH3_PA5 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x5) +#define PRS0_ASYNCH3_PA6 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x6) +#define PRS0_ASYNCH3_PB0 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x0) +#define PRS0_ASYNCH3_PB1 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x1) +#define PRS0_ASYNCH4_PA0 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x0) +#define PRS0_ASYNCH4_PA1 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x1) +#define PRS0_ASYNCH4_PA2 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x2) +#define PRS0_ASYNCH4_PA3 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x3) +#define PRS0_ASYNCH4_PA4 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x4) +#define PRS0_ASYNCH4_PA5 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x5) +#define PRS0_ASYNCH4_PA6 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x6) +#define PRS0_ASYNCH4_PB0 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x0) +#define PRS0_ASYNCH4_PB1 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x1) +#define PRS0_ASYNCH5_PA0 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x0) +#define PRS0_ASYNCH5_PA1 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x1) +#define PRS0_ASYNCH5_PA2 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x2) +#define PRS0_ASYNCH5_PA3 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x3) +#define PRS0_ASYNCH5_PA4 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x4) +#define PRS0_ASYNCH5_PA5 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x5) +#define PRS0_ASYNCH5_PA6 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x6) +#define PRS0_ASYNCH5_PB0 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x0) +#define PRS0_ASYNCH5_PB1 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x1) +#define PRS0_ASYNCH6_PC0 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x0) +#define PRS0_ASYNCH6_PC1 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x1) +#define PRS0_ASYNCH6_PC2 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x2) +#define PRS0_ASYNCH6_PC3 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x3) +#define PRS0_ASYNCH6_PC4 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x4) +#define PRS0_ASYNCH6_PC5 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x5) +#define PRS0_ASYNCH6_PD0 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x0) +#define PRS0_ASYNCH6_PD1 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x1) +#define PRS0_ASYNCH6_PD2 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x2) +#define PRS0_ASYNCH6_PD3 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x3) +#define PRS0_ASYNCH6_PD4 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x4) +#define PRS0_ASYNCH7_PC0 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x0) +#define PRS0_ASYNCH7_PC1 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x1) +#define PRS0_ASYNCH7_PC2 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x2) +#define PRS0_ASYNCH7_PC3 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x3) +#define PRS0_ASYNCH7_PC4 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x4) +#define PRS0_ASYNCH7_PC5 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x5) +#define PRS0_ASYNCH7_PD0 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x0) +#define PRS0_ASYNCH7_PD1 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x1) +#define PRS0_ASYNCH7_PD2 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x2) +#define PRS0_ASYNCH7_PD3 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x3) +#define PRS0_ASYNCH7_PD4 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x4) +#define PRS0_ASYNCH8_PC0 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x0) +#define PRS0_ASYNCH8_PC1 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x1) +#define PRS0_ASYNCH8_PC2 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x2) +#define PRS0_ASYNCH8_PC3 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x3) +#define PRS0_ASYNCH8_PC4 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x4) +#define PRS0_ASYNCH8_PC5 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x5) +#define PRS0_ASYNCH8_PD0 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x0) +#define PRS0_ASYNCH8_PD1 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x1) +#define PRS0_ASYNCH8_PD2 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x2) +#define PRS0_ASYNCH8_PD3 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x3) +#define PRS0_ASYNCH8_PD4 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x4) +#define PRS0_ASYNCH9_PC0 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x0) +#define PRS0_ASYNCH9_PC1 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x1) +#define PRS0_ASYNCH9_PC2 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x2) +#define PRS0_ASYNCH9_PC3 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x3) +#define PRS0_ASYNCH9_PC4 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x4) +#define PRS0_ASYNCH9_PC5 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x5) +#define PRS0_ASYNCH9_PD0 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x0) +#define PRS0_ASYNCH9_PD1 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x1) +#define PRS0_ASYNCH9_PD2 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x2) +#define PRS0_ASYNCH9_PD3 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x3) +#define PRS0_ASYNCH9_PD4 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x4) +#define PRS0_ASYNCH10_PC0 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x0) +#define PRS0_ASYNCH10_PC1 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x1) +#define PRS0_ASYNCH10_PC2 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x2) +#define PRS0_ASYNCH10_PC3 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x3) +#define PRS0_ASYNCH10_PC4 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x4) +#define PRS0_ASYNCH10_PC5 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x5) +#define PRS0_ASYNCH10_PD0 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x0) +#define PRS0_ASYNCH10_PD1 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x1) +#define PRS0_ASYNCH10_PD2 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x2) +#define PRS0_ASYNCH10_PD3 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x3) +#define PRS0_ASYNCH10_PD4 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x4) +#define PRS0_ASYNCH11_PC0 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x0) +#define PRS0_ASYNCH11_PC1 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x1) +#define PRS0_ASYNCH11_PC2 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x2) +#define PRS0_ASYNCH11_PC3 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x3) +#define PRS0_ASYNCH11_PC4 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x4) +#define PRS0_ASYNCH11_PC5 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x5) +#define PRS0_ASYNCH11_PD0 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x0) +#define PRS0_ASYNCH11_PD1 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x1) +#define PRS0_ASYNCH11_PD2 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x2) +#define PRS0_ASYNCH11_PD3 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x3) +#define PRS0_ASYNCH11_PD4 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x4) +#define PRS0_SYNCH0_PA0 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x0) +#define PRS0_SYNCH0_PA1 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x1) +#define PRS0_SYNCH0_PA2 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x2) +#define PRS0_SYNCH0_PA3 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x3) +#define PRS0_SYNCH0_PA4 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x4) +#define PRS0_SYNCH0_PA5 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x5) +#define PRS0_SYNCH0_PA6 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x6) +#define PRS0_SYNCH0_PB0 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x0) +#define PRS0_SYNCH0_PB1 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x1) +#define PRS0_SYNCH0_PC0 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x0) +#define PRS0_SYNCH0_PC1 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x1) +#define PRS0_SYNCH0_PC2 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x2) +#define PRS0_SYNCH0_PC3 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x3) +#define PRS0_SYNCH0_PC4 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x4) +#define PRS0_SYNCH0_PC5 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x5) +#define PRS0_SYNCH0_PD0 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x0) +#define PRS0_SYNCH0_PD1 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x1) +#define PRS0_SYNCH0_PD2 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x2) +#define PRS0_SYNCH0_PD3 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x3) +#define PRS0_SYNCH0_PD4 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x4) +#define PRS0_SYNCH1_PA0 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x0) +#define PRS0_SYNCH1_PA1 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x1) +#define PRS0_SYNCH1_PA2 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x2) +#define PRS0_SYNCH1_PA3 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x3) +#define PRS0_SYNCH1_PA4 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x4) +#define PRS0_SYNCH1_PA5 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x5) +#define PRS0_SYNCH1_PA6 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x6) +#define PRS0_SYNCH1_PB0 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x0) +#define PRS0_SYNCH1_PB1 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x1) +#define PRS0_SYNCH1_PC0 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x0) +#define PRS0_SYNCH1_PC1 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x1) +#define PRS0_SYNCH1_PC2 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x2) +#define PRS0_SYNCH1_PC3 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x3) +#define PRS0_SYNCH1_PC4 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x4) +#define PRS0_SYNCH1_PC5 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x5) +#define PRS0_SYNCH1_PD0 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x0) +#define PRS0_SYNCH1_PD1 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x1) +#define PRS0_SYNCH1_PD2 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x2) +#define PRS0_SYNCH1_PD3 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x3) +#define PRS0_SYNCH1_PD4 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x4) +#define PRS0_SYNCH2_PA0 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x0) +#define PRS0_SYNCH2_PA1 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x1) +#define PRS0_SYNCH2_PA2 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x2) +#define PRS0_SYNCH2_PA3 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x3) +#define PRS0_SYNCH2_PA4 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x4) +#define PRS0_SYNCH2_PA5 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x5) +#define PRS0_SYNCH2_PA6 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x6) +#define PRS0_SYNCH2_PB0 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x0) +#define PRS0_SYNCH2_PB1 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x1) +#define PRS0_SYNCH2_PC0 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x0) +#define PRS0_SYNCH2_PC1 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x1) +#define PRS0_SYNCH2_PC2 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x2) +#define PRS0_SYNCH2_PC3 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x3) +#define PRS0_SYNCH2_PC4 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x4) +#define PRS0_SYNCH2_PC5 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x5) +#define PRS0_SYNCH2_PD0 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x0) +#define PRS0_SYNCH2_PD1 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x1) +#define PRS0_SYNCH2_PD2 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x2) +#define PRS0_SYNCH2_PD3 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x3) +#define PRS0_SYNCH2_PD4 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x4) +#define PRS0_SYNCH3_PA0 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x0) +#define PRS0_SYNCH3_PA1 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x1) +#define PRS0_SYNCH3_PA2 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x2) +#define PRS0_SYNCH3_PA3 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x3) +#define PRS0_SYNCH3_PA4 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x4) +#define PRS0_SYNCH3_PA5 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x5) +#define PRS0_SYNCH3_PA6 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x6) +#define PRS0_SYNCH3_PB0 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x0) +#define PRS0_SYNCH3_PB1 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x1) +#define PRS0_SYNCH3_PC0 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x0) +#define PRS0_SYNCH3_PC1 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x1) +#define PRS0_SYNCH3_PC2 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x2) +#define PRS0_SYNCH3_PC3 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x3) +#define PRS0_SYNCH3_PC4 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x4) +#define PRS0_SYNCH3_PC5 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x5) +#define PRS0_SYNCH3_PD0 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x0) +#define PRS0_SYNCH3_PD1 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x1) +#define PRS0_SYNCH3_PD2 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x2) +#define PRS0_SYNCH3_PD3 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x3) +#define PRS0_SYNCH3_PD4 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x4) + +#define TIMER0_CC0_PA0 SILABS_DBUS_TIMER0_CC0(0x0, 0x0) +#define TIMER0_CC0_PA1 SILABS_DBUS_TIMER0_CC0(0x0, 0x1) +#define TIMER0_CC0_PA2 SILABS_DBUS_TIMER0_CC0(0x0, 0x2) +#define TIMER0_CC0_PA3 SILABS_DBUS_TIMER0_CC0(0x0, 0x3) +#define TIMER0_CC0_PA4 SILABS_DBUS_TIMER0_CC0(0x0, 0x4) +#define TIMER0_CC0_PA5 SILABS_DBUS_TIMER0_CC0(0x0, 0x5) +#define TIMER0_CC0_PA6 SILABS_DBUS_TIMER0_CC0(0x0, 0x6) +#define TIMER0_CC0_PB0 SILABS_DBUS_TIMER0_CC0(0x1, 0x0) +#define TIMER0_CC0_PB1 SILABS_DBUS_TIMER0_CC0(0x1, 0x1) +#define TIMER0_CC0_PC0 SILABS_DBUS_TIMER0_CC0(0x2, 0x0) +#define TIMER0_CC0_PC1 SILABS_DBUS_TIMER0_CC0(0x2, 0x1) +#define TIMER0_CC0_PC2 SILABS_DBUS_TIMER0_CC0(0x2, 0x2) +#define TIMER0_CC0_PC3 SILABS_DBUS_TIMER0_CC0(0x2, 0x3) +#define TIMER0_CC0_PC4 SILABS_DBUS_TIMER0_CC0(0x2, 0x4) +#define TIMER0_CC0_PC5 SILABS_DBUS_TIMER0_CC0(0x2, 0x5) +#define TIMER0_CC0_PD0 SILABS_DBUS_TIMER0_CC0(0x3, 0x0) +#define TIMER0_CC0_PD1 SILABS_DBUS_TIMER0_CC0(0x3, 0x1) +#define TIMER0_CC0_PD2 SILABS_DBUS_TIMER0_CC0(0x3, 0x2) +#define TIMER0_CC0_PD3 SILABS_DBUS_TIMER0_CC0(0x3, 0x3) +#define TIMER0_CC0_PD4 SILABS_DBUS_TIMER0_CC0(0x3, 0x4) +#define TIMER0_CC1_PA0 SILABS_DBUS_TIMER0_CC1(0x0, 0x0) +#define TIMER0_CC1_PA1 SILABS_DBUS_TIMER0_CC1(0x0, 0x1) +#define TIMER0_CC1_PA2 SILABS_DBUS_TIMER0_CC1(0x0, 0x2) +#define TIMER0_CC1_PA3 SILABS_DBUS_TIMER0_CC1(0x0, 0x3) +#define TIMER0_CC1_PA4 SILABS_DBUS_TIMER0_CC1(0x0, 0x4) +#define TIMER0_CC1_PA5 SILABS_DBUS_TIMER0_CC1(0x0, 0x5) +#define TIMER0_CC1_PA6 SILABS_DBUS_TIMER0_CC1(0x0, 0x6) +#define TIMER0_CC1_PB0 SILABS_DBUS_TIMER0_CC1(0x1, 0x0) +#define TIMER0_CC1_PB1 SILABS_DBUS_TIMER0_CC1(0x1, 0x1) +#define TIMER0_CC1_PC0 SILABS_DBUS_TIMER0_CC1(0x2, 0x0) +#define TIMER0_CC1_PC1 SILABS_DBUS_TIMER0_CC1(0x2, 0x1) +#define TIMER0_CC1_PC2 SILABS_DBUS_TIMER0_CC1(0x2, 0x2) +#define TIMER0_CC1_PC3 SILABS_DBUS_TIMER0_CC1(0x2, 0x3) +#define TIMER0_CC1_PC4 SILABS_DBUS_TIMER0_CC1(0x2, 0x4) +#define TIMER0_CC1_PC5 SILABS_DBUS_TIMER0_CC1(0x2, 0x5) +#define TIMER0_CC1_PD0 SILABS_DBUS_TIMER0_CC1(0x3, 0x0) +#define TIMER0_CC1_PD1 SILABS_DBUS_TIMER0_CC1(0x3, 0x1) +#define TIMER0_CC1_PD2 SILABS_DBUS_TIMER0_CC1(0x3, 0x2) +#define TIMER0_CC1_PD3 SILABS_DBUS_TIMER0_CC1(0x3, 0x3) +#define TIMER0_CC1_PD4 SILABS_DBUS_TIMER0_CC1(0x3, 0x4) +#define TIMER0_CC2_PA0 SILABS_DBUS_TIMER0_CC2(0x0, 0x0) +#define TIMER0_CC2_PA1 SILABS_DBUS_TIMER0_CC2(0x0, 0x1) +#define TIMER0_CC2_PA2 SILABS_DBUS_TIMER0_CC2(0x0, 0x2) +#define TIMER0_CC2_PA3 SILABS_DBUS_TIMER0_CC2(0x0, 0x3) +#define TIMER0_CC2_PA4 SILABS_DBUS_TIMER0_CC2(0x0, 0x4) +#define TIMER0_CC2_PA5 SILABS_DBUS_TIMER0_CC2(0x0, 0x5) +#define TIMER0_CC2_PA6 SILABS_DBUS_TIMER0_CC2(0x0, 0x6) +#define TIMER0_CC2_PB0 SILABS_DBUS_TIMER0_CC2(0x1, 0x0) +#define TIMER0_CC2_PB1 SILABS_DBUS_TIMER0_CC2(0x1, 0x1) +#define TIMER0_CC2_PC0 SILABS_DBUS_TIMER0_CC2(0x2, 0x0) +#define TIMER0_CC2_PC1 SILABS_DBUS_TIMER0_CC2(0x2, 0x1) +#define TIMER0_CC2_PC2 SILABS_DBUS_TIMER0_CC2(0x2, 0x2) +#define TIMER0_CC2_PC3 SILABS_DBUS_TIMER0_CC2(0x2, 0x3) +#define TIMER0_CC2_PC4 SILABS_DBUS_TIMER0_CC2(0x2, 0x4) +#define TIMER0_CC2_PC5 SILABS_DBUS_TIMER0_CC2(0x2, 0x5) +#define TIMER0_CC2_PD0 SILABS_DBUS_TIMER0_CC2(0x3, 0x0) +#define TIMER0_CC2_PD1 SILABS_DBUS_TIMER0_CC2(0x3, 0x1) +#define TIMER0_CC2_PD2 SILABS_DBUS_TIMER0_CC2(0x3, 0x2) +#define TIMER0_CC2_PD3 SILABS_DBUS_TIMER0_CC2(0x3, 0x3) +#define TIMER0_CC2_PD4 SILABS_DBUS_TIMER0_CC2(0x3, 0x4) +#define TIMER0_CDTI0_PA0 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x0) +#define TIMER0_CDTI0_PA1 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x1) +#define TIMER0_CDTI0_PA2 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x2) +#define TIMER0_CDTI0_PA3 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x3) +#define TIMER0_CDTI0_PA4 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x4) +#define TIMER0_CDTI0_PA5 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x5) +#define TIMER0_CDTI0_PA6 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x6) +#define TIMER0_CDTI0_PB0 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x0) +#define TIMER0_CDTI0_PB1 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x1) +#define TIMER0_CDTI0_PC0 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x0) +#define TIMER0_CDTI0_PC1 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x1) +#define TIMER0_CDTI0_PC2 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x2) +#define TIMER0_CDTI0_PC3 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x3) +#define TIMER0_CDTI0_PC4 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x4) +#define TIMER0_CDTI0_PC5 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x5) +#define TIMER0_CDTI0_PD0 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x0) +#define TIMER0_CDTI0_PD1 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x1) +#define TIMER0_CDTI0_PD2 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x2) +#define TIMER0_CDTI0_PD3 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x3) +#define TIMER0_CDTI0_PD4 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x4) +#define TIMER0_CDTI1_PA0 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x0) +#define TIMER0_CDTI1_PA1 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x1) +#define TIMER0_CDTI1_PA2 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x2) +#define TIMER0_CDTI1_PA3 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x3) +#define TIMER0_CDTI1_PA4 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x4) +#define TIMER0_CDTI1_PA5 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x5) +#define TIMER0_CDTI1_PA6 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x6) +#define TIMER0_CDTI1_PB0 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x0) +#define TIMER0_CDTI1_PB1 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x1) +#define TIMER0_CDTI1_PC0 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x0) +#define TIMER0_CDTI1_PC1 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x1) +#define TIMER0_CDTI1_PC2 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x2) +#define TIMER0_CDTI1_PC3 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x3) +#define TIMER0_CDTI1_PC4 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x4) +#define TIMER0_CDTI1_PC5 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x5) +#define TIMER0_CDTI1_PD0 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x0) +#define TIMER0_CDTI1_PD1 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x1) +#define TIMER0_CDTI1_PD2 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x2) +#define TIMER0_CDTI1_PD3 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x3) +#define TIMER0_CDTI1_PD4 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x4) +#define TIMER0_CDTI2_PA0 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x0) +#define TIMER0_CDTI2_PA1 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x1) +#define TIMER0_CDTI2_PA2 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x2) +#define TIMER0_CDTI2_PA3 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x3) +#define TIMER0_CDTI2_PA4 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x4) +#define TIMER0_CDTI2_PA5 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x5) +#define TIMER0_CDTI2_PA6 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x6) +#define TIMER0_CDTI2_PB0 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x0) +#define TIMER0_CDTI2_PB1 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x1) +#define TIMER0_CDTI2_PC0 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x0) +#define TIMER0_CDTI2_PC1 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x1) +#define TIMER0_CDTI2_PC2 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x2) +#define TIMER0_CDTI2_PC3 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x3) +#define TIMER0_CDTI2_PC4 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x4) +#define TIMER0_CDTI2_PC5 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x5) +#define TIMER0_CDTI2_PD0 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x0) +#define TIMER0_CDTI2_PD1 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x1) +#define TIMER0_CDTI2_PD2 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x2) +#define TIMER0_CDTI2_PD3 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x3) +#define TIMER0_CDTI2_PD4 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x4) + +#define TIMER1_CC0_PA0 SILABS_DBUS_TIMER1_CC0(0x0, 0x0) +#define TIMER1_CC0_PA1 SILABS_DBUS_TIMER1_CC0(0x0, 0x1) +#define TIMER1_CC0_PA2 SILABS_DBUS_TIMER1_CC0(0x0, 0x2) +#define TIMER1_CC0_PA3 SILABS_DBUS_TIMER1_CC0(0x0, 0x3) +#define TIMER1_CC0_PA4 SILABS_DBUS_TIMER1_CC0(0x0, 0x4) +#define TIMER1_CC0_PA5 SILABS_DBUS_TIMER1_CC0(0x0, 0x5) +#define TIMER1_CC0_PA6 SILABS_DBUS_TIMER1_CC0(0x0, 0x6) +#define TIMER1_CC0_PB0 SILABS_DBUS_TIMER1_CC0(0x1, 0x0) +#define TIMER1_CC0_PB1 SILABS_DBUS_TIMER1_CC0(0x1, 0x1) +#define TIMER1_CC0_PC0 SILABS_DBUS_TIMER1_CC0(0x2, 0x0) +#define TIMER1_CC0_PC1 SILABS_DBUS_TIMER1_CC0(0x2, 0x1) +#define TIMER1_CC0_PC2 SILABS_DBUS_TIMER1_CC0(0x2, 0x2) +#define TIMER1_CC0_PC3 SILABS_DBUS_TIMER1_CC0(0x2, 0x3) +#define TIMER1_CC0_PC4 SILABS_DBUS_TIMER1_CC0(0x2, 0x4) +#define TIMER1_CC0_PC5 SILABS_DBUS_TIMER1_CC0(0x2, 0x5) +#define TIMER1_CC0_PD0 SILABS_DBUS_TIMER1_CC0(0x3, 0x0) +#define TIMER1_CC0_PD1 SILABS_DBUS_TIMER1_CC0(0x3, 0x1) +#define TIMER1_CC0_PD2 SILABS_DBUS_TIMER1_CC0(0x3, 0x2) +#define TIMER1_CC0_PD3 SILABS_DBUS_TIMER1_CC0(0x3, 0x3) +#define TIMER1_CC0_PD4 SILABS_DBUS_TIMER1_CC0(0x3, 0x4) +#define TIMER1_CC1_PA0 SILABS_DBUS_TIMER1_CC1(0x0, 0x0) +#define TIMER1_CC1_PA1 SILABS_DBUS_TIMER1_CC1(0x0, 0x1) +#define TIMER1_CC1_PA2 SILABS_DBUS_TIMER1_CC1(0x0, 0x2) +#define TIMER1_CC1_PA3 SILABS_DBUS_TIMER1_CC1(0x0, 0x3) +#define TIMER1_CC1_PA4 SILABS_DBUS_TIMER1_CC1(0x0, 0x4) +#define TIMER1_CC1_PA5 SILABS_DBUS_TIMER1_CC1(0x0, 0x5) +#define TIMER1_CC1_PA6 SILABS_DBUS_TIMER1_CC1(0x0, 0x6) +#define TIMER1_CC1_PB0 SILABS_DBUS_TIMER1_CC1(0x1, 0x0) +#define TIMER1_CC1_PB1 SILABS_DBUS_TIMER1_CC1(0x1, 0x1) +#define TIMER1_CC1_PC0 SILABS_DBUS_TIMER1_CC1(0x2, 0x0) +#define TIMER1_CC1_PC1 SILABS_DBUS_TIMER1_CC1(0x2, 0x1) +#define TIMER1_CC1_PC2 SILABS_DBUS_TIMER1_CC1(0x2, 0x2) +#define TIMER1_CC1_PC3 SILABS_DBUS_TIMER1_CC1(0x2, 0x3) +#define TIMER1_CC1_PC4 SILABS_DBUS_TIMER1_CC1(0x2, 0x4) +#define TIMER1_CC1_PC5 SILABS_DBUS_TIMER1_CC1(0x2, 0x5) +#define TIMER1_CC1_PD0 SILABS_DBUS_TIMER1_CC1(0x3, 0x0) +#define TIMER1_CC1_PD1 SILABS_DBUS_TIMER1_CC1(0x3, 0x1) +#define TIMER1_CC1_PD2 SILABS_DBUS_TIMER1_CC1(0x3, 0x2) +#define TIMER1_CC1_PD3 SILABS_DBUS_TIMER1_CC1(0x3, 0x3) +#define TIMER1_CC1_PD4 SILABS_DBUS_TIMER1_CC1(0x3, 0x4) +#define TIMER1_CC2_PA0 SILABS_DBUS_TIMER1_CC2(0x0, 0x0) +#define TIMER1_CC2_PA1 SILABS_DBUS_TIMER1_CC2(0x0, 0x1) +#define TIMER1_CC2_PA2 SILABS_DBUS_TIMER1_CC2(0x0, 0x2) +#define TIMER1_CC2_PA3 SILABS_DBUS_TIMER1_CC2(0x0, 0x3) +#define TIMER1_CC2_PA4 SILABS_DBUS_TIMER1_CC2(0x0, 0x4) +#define TIMER1_CC2_PA5 SILABS_DBUS_TIMER1_CC2(0x0, 0x5) +#define TIMER1_CC2_PA6 SILABS_DBUS_TIMER1_CC2(0x0, 0x6) +#define TIMER1_CC2_PB0 SILABS_DBUS_TIMER1_CC2(0x1, 0x0) +#define TIMER1_CC2_PB1 SILABS_DBUS_TIMER1_CC2(0x1, 0x1) +#define TIMER1_CC2_PC0 SILABS_DBUS_TIMER1_CC2(0x2, 0x0) +#define TIMER1_CC2_PC1 SILABS_DBUS_TIMER1_CC2(0x2, 0x1) +#define TIMER1_CC2_PC2 SILABS_DBUS_TIMER1_CC2(0x2, 0x2) +#define TIMER1_CC2_PC3 SILABS_DBUS_TIMER1_CC2(0x2, 0x3) +#define TIMER1_CC2_PC4 SILABS_DBUS_TIMER1_CC2(0x2, 0x4) +#define TIMER1_CC2_PC5 SILABS_DBUS_TIMER1_CC2(0x2, 0x5) +#define TIMER1_CC2_PD0 SILABS_DBUS_TIMER1_CC2(0x3, 0x0) +#define TIMER1_CC2_PD1 SILABS_DBUS_TIMER1_CC2(0x3, 0x1) +#define TIMER1_CC2_PD2 SILABS_DBUS_TIMER1_CC2(0x3, 0x2) +#define TIMER1_CC2_PD3 SILABS_DBUS_TIMER1_CC2(0x3, 0x3) +#define TIMER1_CC2_PD4 SILABS_DBUS_TIMER1_CC2(0x3, 0x4) +#define TIMER1_CDTI0_PA0 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x0) +#define TIMER1_CDTI0_PA1 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x1) +#define TIMER1_CDTI0_PA2 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x2) +#define TIMER1_CDTI0_PA3 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x3) +#define TIMER1_CDTI0_PA4 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x4) +#define TIMER1_CDTI0_PA5 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x5) +#define TIMER1_CDTI0_PA6 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x6) +#define TIMER1_CDTI0_PB0 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x0) +#define TIMER1_CDTI0_PB1 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x1) +#define TIMER1_CDTI0_PC0 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x0) +#define TIMER1_CDTI0_PC1 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x1) +#define TIMER1_CDTI0_PC2 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x2) +#define TIMER1_CDTI0_PC3 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x3) +#define TIMER1_CDTI0_PC4 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x4) +#define TIMER1_CDTI0_PC5 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x5) +#define TIMER1_CDTI0_PD0 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x0) +#define TIMER1_CDTI0_PD1 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x1) +#define TIMER1_CDTI0_PD2 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x2) +#define TIMER1_CDTI0_PD3 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x3) +#define TIMER1_CDTI0_PD4 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x4) +#define TIMER1_CDTI1_PA0 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x0) +#define TIMER1_CDTI1_PA1 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x1) +#define TIMER1_CDTI1_PA2 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x2) +#define TIMER1_CDTI1_PA3 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x3) +#define TIMER1_CDTI1_PA4 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x4) +#define TIMER1_CDTI1_PA5 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x5) +#define TIMER1_CDTI1_PA6 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x6) +#define TIMER1_CDTI1_PB0 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x0) +#define TIMER1_CDTI1_PB1 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x1) +#define TIMER1_CDTI1_PC0 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x0) +#define TIMER1_CDTI1_PC1 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x1) +#define TIMER1_CDTI1_PC2 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x2) +#define TIMER1_CDTI1_PC3 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x3) +#define TIMER1_CDTI1_PC4 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x4) +#define TIMER1_CDTI1_PC5 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x5) +#define TIMER1_CDTI1_PD0 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x0) +#define TIMER1_CDTI1_PD1 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x1) +#define TIMER1_CDTI1_PD2 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x2) +#define TIMER1_CDTI1_PD3 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x3) +#define TIMER1_CDTI1_PD4 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x4) +#define TIMER1_CDTI2_PA0 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x0) +#define TIMER1_CDTI2_PA1 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x1) +#define TIMER1_CDTI2_PA2 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x2) +#define TIMER1_CDTI2_PA3 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x3) +#define TIMER1_CDTI2_PA4 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x4) +#define TIMER1_CDTI2_PA5 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x5) +#define TIMER1_CDTI2_PA6 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x6) +#define TIMER1_CDTI2_PB0 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x0) +#define TIMER1_CDTI2_PB1 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x1) +#define TIMER1_CDTI2_PC0 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x0) +#define TIMER1_CDTI2_PC1 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x1) +#define TIMER1_CDTI2_PC2 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x2) +#define TIMER1_CDTI2_PC3 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x3) +#define TIMER1_CDTI2_PC4 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x4) +#define TIMER1_CDTI2_PC5 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x5) +#define TIMER1_CDTI2_PD0 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x0) +#define TIMER1_CDTI2_PD1 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x1) +#define TIMER1_CDTI2_PD2 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x2) +#define TIMER1_CDTI2_PD3 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x3) +#define TIMER1_CDTI2_PD4 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x4) + +#define TIMER2_CC0_PA0 SILABS_DBUS_TIMER2_CC0(0x0, 0x0) +#define TIMER2_CC0_PA1 SILABS_DBUS_TIMER2_CC0(0x0, 0x1) +#define TIMER2_CC0_PA2 SILABS_DBUS_TIMER2_CC0(0x0, 0x2) +#define TIMER2_CC0_PA3 SILABS_DBUS_TIMER2_CC0(0x0, 0x3) +#define TIMER2_CC0_PA4 SILABS_DBUS_TIMER2_CC0(0x0, 0x4) +#define TIMER2_CC0_PA5 SILABS_DBUS_TIMER2_CC0(0x0, 0x5) +#define TIMER2_CC0_PA6 SILABS_DBUS_TIMER2_CC0(0x0, 0x6) +#define TIMER2_CC0_PB0 SILABS_DBUS_TIMER2_CC0(0x1, 0x0) +#define TIMER2_CC0_PB1 SILABS_DBUS_TIMER2_CC0(0x1, 0x1) +#define TIMER2_CC1_PA0 SILABS_DBUS_TIMER2_CC1(0x0, 0x0) +#define TIMER2_CC1_PA1 SILABS_DBUS_TIMER2_CC1(0x0, 0x1) +#define TIMER2_CC1_PA2 SILABS_DBUS_TIMER2_CC1(0x0, 0x2) +#define TIMER2_CC1_PA3 SILABS_DBUS_TIMER2_CC1(0x0, 0x3) +#define TIMER2_CC1_PA4 SILABS_DBUS_TIMER2_CC1(0x0, 0x4) +#define TIMER2_CC1_PA5 SILABS_DBUS_TIMER2_CC1(0x0, 0x5) +#define TIMER2_CC1_PA6 SILABS_DBUS_TIMER2_CC1(0x0, 0x6) +#define TIMER2_CC1_PB0 SILABS_DBUS_TIMER2_CC1(0x1, 0x0) +#define TIMER2_CC1_PB1 SILABS_DBUS_TIMER2_CC1(0x1, 0x1) +#define TIMER2_CC2_PA0 SILABS_DBUS_TIMER2_CC2(0x0, 0x0) +#define TIMER2_CC2_PA1 SILABS_DBUS_TIMER2_CC2(0x0, 0x1) +#define TIMER2_CC2_PA2 SILABS_DBUS_TIMER2_CC2(0x0, 0x2) +#define TIMER2_CC2_PA3 SILABS_DBUS_TIMER2_CC2(0x0, 0x3) +#define TIMER2_CC2_PA4 SILABS_DBUS_TIMER2_CC2(0x0, 0x4) +#define TIMER2_CC2_PA5 SILABS_DBUS_TIMER2_CC2(0x0, 0x5) +#define TIMER2_CC2_PA6 SILABS_DBUS_TIMER2_CC2(0x0, 0x6) +#define TIMER2_CC2_PB0 SILABS_DBUS_TIMER2_CC2(0x1, 0x0) +#define TIMER2_CC2_PB1 SILABS_DBUS_TIMER2_CC2(0x1, 0x1) +#define TIMER2_CDTI0_PA0 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x0) +#define TIMER2_CDTI0_PA1 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x1) +#define TIMER2_CDTI0_PA2 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x2) +#define TIMER2_CDTI0_PA3 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x3) +#define TIMER2_CDTI0_PA4 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x4) +#define TIMER2_CDTI0_PA5 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x5) +#define TIMER2_CDTI0_PA6 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x6) +#define TIMER2_CDTI0_PB0 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x0) +#define TIMER2_CDTI0_PB1 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x1) +#define TIMER2_CDTI1_PA0 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x0) +#define TIMER2_CDTI1_PA1 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x1) +#define TIMER2_CDTI1_PA2 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x2) +#define TIMER2_CDTI1_PA3 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x3) +#define TIMER2_CDTI1_PA4 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x4) +#define TIMER2_CDTI1_PA5 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x5) +#define TIMER2_CDTI1_PA6 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x6) +#define TIMER2_CDTI1_PB0 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x0) +#define TIMER2_CDTI1_PB1 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x1) +#define TIMER2_CDTI2_PA0 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x0) +#define TIMER2_CDTI2_PA1 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x1) +#define TIMER2_CDTI2_PA2 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x2) +#define TIMER2_CDTI2_PA3 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x3) +#define TIMER2_CDTI2_PA4 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x4) +#define TIMER2_CDTI2_PA5 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x5) +#define TIMER2_CDTI2_PA6 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x6) +#define TIMER2_CDTI2_PB0 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x0) +#define TIMER2_CDTI2_PB1 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x1) + +#define TIMER3_CC0_PC0 SILABS_DBUS_TIMER3_CC0(0x2, 0x0) +#define TIMER3_CC0_PC1 SILABS_DBUS_TIMER3_CC0(0x2, 0x1) +#define TIMER3_CC0_PC2 SILABS_DBUS_TIMER3_CC0(0x2, 0x2) +#define TIMER3_CC0_PC3 SILABS_DBUS_TIMER3_CC0(0x2, 0x3) +#define TIMER3_CC0_PC4 SILABS_DBUS_TIMER3_CC0(0x2, 0x4) +#define TIMER3_CC0_PC5 SILABS_DBUS_TIMER3_CC0(0x2, 0x5) +#define TIMER3_CC0_PD0 SILABS_DBUS_TIMER3_CC0(0x3, 0x0) +#define TIMER3_CC0_PD1 SILABS_DBUS_TIMER3_CC0(0x3, 0x1) +#define TIMER3_CC0_PD2 SILABS_DBUS_TIMER3_CC0(0x3, 0x2) +#define TIMER3_CC0_PD3 SILABS_DBUS_TIMER3_CC0(0x3, 0x3) +#define TIMER3_CC0_PD4 SILABS_DBUS_TIMER3_CC0(0x3, 0x4) +#define TIMER3_CC1_PC0 SILABS_DBUS_TIMER3_CC1(0x2, 0x0) +#define TIMER3_CC1_PC1 SILABS_DBUS_TIMER3_CC1(0x2, 0x1) +#define TIMER3_CC1_PC2 SILABS_DBUS_TIMER3_CC1(0x2, 0x2) +#define TIMER3_CC1_PC3 SILABS_DBUS_TIMER3_CC1(0x2, 0x3) +#define TIMER3_CC1_PC4 SILABS_DBUS_TIMER3_CC1(0x2, 0x4) +#define TIMER3_CC1_PC5 SILABS_DBUS_TIMER3_CC1(0x2, 0x5) +#define TIMER3_CC1_PD0 SILABS_DBUS_TIMER3_CC1(0x3, 0x0) +#define TIMER3_CC1_PD1 SILABS_DBUS_TIMER3_CC1(0x3, 0x1) +#define TIMER3_CC1_PD2 SILABS_DBUS_TIMER3_CC1(0x3, 0x2) +#define TIMER3_CC1_PD3 SILABS_DBUS_TIMER3_CC1(0x3, 0x3) +#define TIMER3_CC1_PD4 SILABS_DBUS_TIMER3_CC1(0x3, 0x4) +#define TIMER3_CC2_PC0 SILABS_DBUS_TIMER3_CC2(0x2, 0x0) +#define TIMER3_CC2_PC1 SILABS_DBUS_TIMER3_CC2(0x2, 0x1) +#define TIMER3_CC2_PC2 SILABS_DBUS_TIMER3_CC2(0x2, 0x2) +#define TIMER3_CC2_PC3 SILABS_DBUS_TIMER3_CC2(0x2, 0x3) +#define TIMER3_CC2_PC4 SILABS_DBUS_TIMER3_CC2(0x2, 0x4) +#define TIMER3_CC2_PC5 SILABS_DBUS_TIMER3_CC2(0x2, 0x5) +#define TIMER3_CC2_PD0 SILABS_DBUS_TIMER3_CC2(0x3, 0x0) +#define TIMER3_CC2_PD1 SILABS_DBUS_TIMER3_CC2(0x3, 0x1) +#define TIMER3_CC2_PD2 SILABS_DBUS_TIMER3_CC2(0x3, 0x2) +#define TIMER3_CC2_PD3 SILABS_DBUS_TIMER3_CC2(0x3, 0x3) +#define TIMER3_CC2_PD4 SILABS_DBUS_TIMER3_CC2(0x3, 0x4) +#define TIMER3_CDTI0_PC0 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x0) +#define TIMER3_CDTI0_PC1 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x1) +#define TIMER3_CDTI0_PC2 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x2) +#define TIMER3_CDTI0_PC3 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x3) +#define TIMER3_CDTI0_PC4 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x4) +#define TIMER3_CDTI0_PC5 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x5) +#define TIMER3_CDTI0_PD0 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x0) +#define TIMER3_CDTI0_PD1 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x1) +#define TIMER3_CDTI0_PD2 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x2) +#define TIMER3_CDTI0_PD3 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x3) +#define TIMER3_CDTI0_PD4 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x4) +#define TIMER3_CDTI1_PC0 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x0) +#define TIMER3_CDTI1_PC1 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x1) +#define TIMER3_CDTI1_PC2 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x2) +#define TIMER3_CDTI1_PC3 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x3) +#define TIMER3_CDTI1_PC4 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x4) +#define TIMER3_CDTI1_PC5 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x5) +#define TIMER3_CDTI1_PD0 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x0) +#define TIMER3_CDTI1_PD1 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x1) +#define TIMER3_CDTI1_PD2 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x2) +#define TIMER3_CDTI1_PD3 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x3) +#define TIMER3_CDTI1_PD4 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x4) +#define TIMER3_CDTI2_PC0 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x0) +#define TIMER3_CDTI2_PC1 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x1) +#define TIMER3_CDTI2_PC2 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x2) +#define TIMER3_CDTI2_PC3 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x3) +#define TIMER3_CDTI2_PC4 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x4) +#define TIMER3_CDTI2_PC5 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x5) +#define TIMER3_CDTI2_PD0 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x0) +#define TIMER3_CDTI2_PD1 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x1) +#define TIMER3_CDTI2_PD2 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x2) +#define TIMER3_CDTI2_PD3 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x3) +#define TIMER3_CDTI2_PD4 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x4) + +#define USART0_CS_PA0 SILABS_DBUS_USART0_CS(0x0, 0x0) +#define USART0_CS_PA1 SILABS_DBUS_USART0_CS(0x0, 0x1) +#define USART0_CS_PA2 SILABS_DBUS_USART0_CS(0x0, 0x2) +#define USART0_CS_PA3 SILABS_DBUS_USART0_CS(0x0, 0x3) +#define USART0_CS_PA4 SILABS_DBUS_USART0_CS(0x0, 0x4) +#define USART0_CS_PA5 SILABS_DBUS_USART0_CS(0x0, 0x5) +#define USART0_CS_PA6 SILABS_DBUS_USART0_CS(0x0, 0x6) +#define USART0_CS_PB0 SILABS_DBUS_USART0_CS(0x1, 0x0) +#define USART0_CS_PB1 SILABS_DBUS_USART0_CS(0x1, 0x1) +#define USART0_CS_PC0 SILABS_DBUS_USART0_CS(0x2, 0x0) +#define USART0_CS_PC1 SILABS_DBUS_USART0_CS(0x2, 0x1) +#define USART0_CS_PC2 SILABS_DBUS_USART0_CS(0x2, 0x2) +#define USART0_CS_PC3 SILABS_DBUS_USART0_CS(0x2, 0x3) +#define USART0_CS_PC4 SILABS_DBUS_USART0_CS(0x2, 0x4) +#define USART0_CS_PC5 SILABS_DBUS_USART0_CS(0x2, 0x5) +#define USART0_CS_PD0 SILABS_DBUS_USART0_CS(0x3, 0x0) +#define USART0_CS_PD1 SILABS_DBUS_USART0_CS(0x3, 0x1) +#define USART0_CS_PD2 SILABS_DBUS_USART0_CS(0x3, 0x2) +#define USART0_CS_PD3 SILABS_DBUS_USART0_CS(0x3, 0x3) +#define USART0_CS_PD4 SILABS_DBUS_USART0_CS(0x3, 0x4) +#define USART0_RTS_PA0 SILABS_DBUS_USART0_RTS(0x0, 0x0) +#define USART0_RTS_PA1 SILABS_DBUS_USART0_RTS(0x0, 0x1) +#define USART0_RTS_PA2 SILABS_DBUS_USART0_RTS(0x0, 0x2) +#define USART0_RTS_PA3 SILABS_DBUS_USART0_RTS(0x0, 0x3) +#define USART0_RTS_PA4 SILABS_DBUS_USART0_RTS(0x0, 0x4) +#define USART0_RTS_PA5 SILABS_DBUS_USART0_RTS(0x0, 0x5) +#define USART0_RTS_PA6 SILABS_DBUS_USART0_RTS(0x0, 0x6) +#define USART0_RTS_PB0 SILABS_DBUS_USART0_RTS(0x1, 0x0) +#define USART0_RTS_PB1 SILABS_DBUS_USART0_RTS(0x1, 0x1) +#define USART0_RTS_PC0 SILABS_DBUS_USART0_RTS(0x2, 0x0) +#define USART0_RTS_PC1 SILABS_DBUS_USART0_RTS(0x2, 0x1) +#define USART0_RTS_PC2 SILABS_DBUS_USART0_RTS(0x2, 0x2) +#define USART0_RTS_PC3 SILABS_DBUS_USART0_RTS(0x2, 0x3) +#define USART0_RTS_PC4 SILABS_DBUS_USART0_RTS(0x2, 0x4) +#define USART0_RTS_PC5 SILABS_DBUS_USART0_RTS(0x2, 0x5) +#define USART0_RTS_PD0 SILABS_DBUS_USART0_RTS(0x3, 0x0) +#define USART0_RTS_PD1 SILABS_DBUS_USART0_RTS(0x3, 0x1) +#define USART0_RTS_PD2 SILABS_DBUS_USART0_RTS(0x3, 0x2) +#define USART0_RTS_PD3 SILABS_DBUS_USART0_RTS(0x3, 0x3) +#define USART0_RTS_PD4 SILABS_DBUS_USART0_RTS(0x3, 0x4) +#define USART0_RX_PA0 SILABS_DBUS_USART0_RX(0x0, 0x0) +#define USART0_RX_PA1 SILABS_DBUS_USART0_RX(0x0, 0x1) +#define USART0_RX_PA2 SILABS_DBUS_USART0_RX(0x0, 0x2) +#define USART0_RX_PA3 SILABS_DBUS_USART0_RX(0x0, 0x3) +#define USART0_RX_PA4 SILABS_DBUS_USART0_RX(0x0, 0x4) +#define USART0_RX_PA5 SILABS_DBUS_USART0_RX(0x0, 0x5) +#define USART0_RX_PA6 SILABS_DBUS_USART0_RX(0x0, 0x6) +#define USART0_RX_PB0 SILABS_DBUS_USART0_RX(0x1, 0x0) +#define USART0_RX_PB1 SILABS_DBUS_USART0_RX(0x1, 0x1) +#define USART0_RX_PC0 SILABS_DBUS_USART0_RX(0x2, 0x0) +#define USART0_RX_PC1 SILABS_DBUS_USART0_RX(0x2, 0x1) +#define USART0_RX_PC2 SILABS_DBUS_USART0_RX(0x2, 0x2) +#define USART0_RX_PC3 SILABS_DBUS_USART0_RX(0x2, 0x3) +#define USART0_RX_PC4 SILABS_DBUS_USART0_RX(0x2, 0x4) +#define USART0_RX_PC5 SILABS_DBUS_USART0_RX(0x2, 0x5) +#define USART0_RX_PD0 SILABS_DBUS_USART0_RX(0x3, 0x0) +#define USART0_RX_PD1 SILABS_DBUS_USART0_RX(0x3, 0x1) +#define USART0_RX_PD2 SILABS_DBUS_USART0_RX(0x3, 0x2) +#define USART0_RX_PD3 SILABS_DBUS_USART0_RX(0x3, 0x3) +#define USART0_RX_PD4 SILABS_DBUS_USART0_RX(0x3, 0x4) +#define USART0_CLK_PA0 SILABS_DBUS_USART0_CLK(0x0, 0x0) +#define USART0_CLK_PA1 SILABS_DBUS_USART0_CLK(0x0, 0x1) +#define USART0_CLK_PA2 SILABS_DBUS_USART0_CLK(0x0, 0x2) +#define USART0_CLK_PA3 SILABS_DBUS_USART0_CLK(0x0, 0x3) +#define USART0_CLK_PA4 SILABS_DBUS_USART0_CLK(0x0, 0x4) +#define USART0_CLK_PA5 SILABS_DBUS_USART0_CLK(0x0, 0x5) +#define USART0_CLK_PA6 SILABS_DBUS_USART0_CLK(0x0, 0x6) +#define USART0_CLK_PB0 SILABS_DBUS_USART0_CLK(0x1, 0x0) +#define USART0_CLK_PB1 SILABS_DBUS_USART0_CLK(0x1, 0x1) +#define USART0_CLK_PC0 SILABS_DBUS_USART0_CLK(0x2, 0x0) +#define USART0_CLK_PC1 SILABS_DBUS_USART0_CLK(0x2, 0x1) +#define USART0_CLK_PC2 SILABS_DBUS_USART0_CLK(0x2, 0x2) +#define USART0_CLK_PC3 SILABS_DBUS_USART0_CLK(0x2, 0x3) +#define USART0_CLK_PC4 SILABS_DBUS_USART0_CLK(0x2, 0x4) +#define USART0_CLK_PC5 SILABS_DBUS_USART0_CLK(0x2, 0x5) +#define USART0_CLK_PD0 SILABS_DBUS_USART0_CLK(0x3, 0x0) +#define USART0_CLK_PD1 SILABS_DBUS_USART0_CLK(0x3, 0x1) +#define USART0_CLK_PD2 SILABS_DBUS_USART0_CLK(0x3, 0x2) +#define USART0_CLK_PD3 SILABS_DBUS_USART0_CLK(0x3, 0x3) +#define USART0_CLK_PD4 SILABS_DBUS_USART0_CLK(0x3, 0x4) +#define USART0_TX_PA0 SILABS_DBUS_USART0_TX(0x0, 0x0) +#define USART0_TX_PA1 SILABS_DBUS_USART0_TX(0x0, 0x1) +#define USART0_TX_PA2 SILABS_DBUS_USART0_TX(0x0, 0x2) +#define USART0_TX_PA3 SILABS_DBUS_USART0_TX(0x0, 0x3) +#define USART0_TX_PA4 SILABS_DBUS_USART0_TX(0x0, 0x4) +#define USART0_TX_PA5 SILABS_DBUS_USART0_TX(0x0, 0x5) +#define USART0_TX_PA6 SILABS_DBUS_USART0_TX(0x0, 0x6) +#define USART0_TX_PB0 SILABS_DBUS_USART0_TX(0x1, 0x0) +#define USART0_TX_PB1 SILABS_DBUS_USART0_TX(0x1, 0x1) +#define USART0_TX_PC0 SILABS_DBUS_USART0_TX(0x2, 0x0) +#define USART0_TX_PC1 SILABS_DBUS_USART0_TX(0x2, 0x1) +#define USART0_TX_PC2 SILABS_DBUS_USART0_TX(0x2, 0x2) +#define USART0_TX_PC3 SILABS_DBUS_USART0_TX(0x2, 0x3) +#define USART0_TX_PC4 SILABS_DBUS_USART0_TX(0x2, 0x4) +#define USART0_TX_PC5 SILABS_DBUS_USART0_TX(0x2, 0x5) +#define USART0_TX_PD0 SILABS_DBUS_USART0_TX(0x3, 0x0) +#define USART0_TX_PD1 SILABS_DBUS_USART0_TX(0x3, 0x1) +#define USART0_TX_PD2 SILABS_DBUS_USART0_TX(0x3, 0x2) +#define USART0_TX_PD3 SILABS_DBUS_USART0_TX(0x3, 0x3) +#define USART0_TX_PD4 SILABS_DBUS_USART0_TX(0x3, 0x4) +#define USART0_CTS_PA0 SILABS_DBUS_USART0_CTS(0x0, 0x0) +#define USART0_CTS_PA1 SILABS_DBUS_USART0_CTS(0x0, 0x1) +#define USART0_CTS_PA2 SILABS_DBUS_USART0_CTS(0x0, 0x2) +#define USART0_CTS_PA3 SILABS_DBUS_USART0_CTS(0x0, 0x3) +#define USART0_CTS_PA4 SILABS_DBUS_USART0_CTS(0x0, 0x4) +#define USART0_CTS_PA5 SILABS_DBUS_USART0_CTS(0x0, 0x5) +#define USART0_CTS_PA6 SILABS_DBUS_USART0_CTS(0x0, 0x6) +#define USART0_CTS_PB0 SILABS_DBUS_USART0_CTS(0x1, 0x0) +#define USART0_CTS_PB1 SILABS_DBUS_USART0_CTS(0x1, 0x1) +#define USART0_CTS_PC0 SILABS_DBUS_USART0_CTS(0x2, 0x0) +#define USART0_CTS_PC1 SILABS_DBUS_USART0_CTS(0x2, 0x1) +#define USART0_CTS_PC2 SILABS_DBUS_USART0_CTS(0x2, 0x2) +#define USART0_CTS_PC3 SILABS_DBUS_USART0_CTS(0x2, 0x3) +#define USART0_CTS_PC4 SILABS_DBUS_USART0_CTS(0x2, 0x4) +#define USART0_CTS_PC5 SILABS_DBUS_USART0_CTS(0x2, 0x5) +#define USART0_CTS_PD0 SILABS_DBUS_USART0_CTS(0x3, 0x0) +#define USART0_CTS_PD1 SILABS_DBUS_USART0_CTS(0x3, 0x1) +#define USART0_CTS_PD2 SILABS_DBUS_USART0_CTS(0x3, 0x2) +#define USART0_CTS_PD3 SILABS_DBUS_USART0_CTS(0x3, 0x3) +#define USART0_CTS_PD4 SILABS_DBUS_USART0_CTS(0x3, 0x4) + +#define USART1_CS_PA0 SILABS_DBUS_USART1_CS(0x0, 0x0) +#define USART1_CS_PA1 SILABS_DBUS_USART1_CS(0x0, 0x1) +#define USART1_CS_PA2 SILABS_DBUS_USART1_CS(0x0, 0x2) +#define USART1_CS_PA3 SILABS_DBUS_USART1_CS(0x0, 0x3) +#define USART1_CS_PA4 SILABS_DBUS_USART1_CS(0x0, 0x4) +#define USART1_CS_PA5 SILABS_DBUS_USART1_CS(0x0, 0x5) +#define USART1_CS_PA6 SILABS_DBUS_USART1_CS(0x0, 0x6) +#define USART1_CS_PB0 SILABS_DBUS_USART1_CS(0x1, 0x0) +#define USART1_CS_PB1 SILABS_DBUS_USART1_CS(0x1, 0x1) +#define USART1_RTS_PA0 SILABS_DBUS_USART1_RTS(0x0, 0x0) +#define USART1_RTS_PA1 SILABS_DBUS_USART1_RTS(0x0, 0x1) +#define USART1_RTS_PA2 SILABS_DBUS_USART1_RTS(0x0, 0x2) +#define USART1_RTS_PA3 SILABS_DBUS_USART1_RTS(0x0, 0x3) +#define USART1_RTS_PA4 SILABS_DBUS_USART1_RTS(0x0, 0x4) +#define USART1_RTS_PA5 SILABS_DBUS_USART1_RTS(0x0, 0x5) +#define USART1_RTS_PA6 SILABS_DBUS_USART1_RTS(0x0, 0x6) +#define USART1_RTS_PB0 SILABS_DBUS_USART1_RTS(0x1, 0x0) +#define USART1_RTS_PB1 SILABS_DBUS_USART1_RTS(0x1, 0x1) +#define USART1_RX_PA0 SILABS_DBUS_USART1_RX(0x0, 0x0) +#define USART1_RX_PA1 SILABS_DBUS_USART1_RX(0x0, 0x1) +#define USART1_RX_PA2 SILABS_DBUS_USART1_RX(0x0, 0x2) +#define USART1_RX_PA3 SILABS_DBUS_USART1_RX(0x0, 0x3) +#define USART1_RX_PA4 SILABS_DBUS_USART1_RX(0x0, 0x4) +#define USART1_RX_PA5 SILABS_DBUS_USART1_RX(0x0, 0x5) +#define USART1_RX_PA6 SILABS_DBUS_USART1_RX(0x0, 0x6) +#define USART1_RX_PB0 SILABS_DBUS_USART1_RX(0x1, 0x0) +#define USART1_RX_PB1 SILABS_DBUS_USART1_RX(0x1, 0x1) +#define USART1_CLK_PA0 SILABS_DBUS_USART1_CLK(0x0, 0x0) +#define USART1_CLK_PA1 SILABS_DBUS_USART1_CLK(0x0, 0x1) +#define USART1_CLK_PA2 SILABS_DBUS_USART1_CLK(0x0, 0x2) +#define USART1_CLK_PA3 SILABS_DBUS_USART1_CLK(0x0, 0x3) +#define USART1_CLK_PA4 SILABS_DBUS_USART1_CLK(0x0, 0x4) +#define USART1_CLK_PA5 SILABS_DBUS_USART1_CLK(0x0, 0x5) +#define USART1_CLK_PA6 SILABS_DBUS_USART1_CLK(0x0, 0x6) +#define USART1_CLK_PB0 SILABS_DBUS_USART1_CLK(0x1, 0x0) +#define USART1_CLK_PB1 SILABS_DBUS_USART1_CLK(0x1, 0x1) +#define USART1_TX_PA0 SILABS_DBUS_USART1_TX(0x0, 0x0) +#define USART1_TX_PA1 SILABS_DBUS_USART1_TX(0x0, 0x1) +#define USART1_TX_PA2 SILABS_DBUS_USART1_TX(0x0, 0x2) +#define USART1_TX_PA3 SILABS_DBUS_USART1_TX(0x0, 0x3) +#define USART1_TX_PA4 SILABS_DBUS_USART1_TX(0x0, 0x4) +#define USART1_TX_PA5 SILABS_DBUS_USART1_TX(0x0, 0x5) +#define USART1_TX_PA6 SILABS_DBUS_USART1_TX(0x0, 0x6) +#define USART1_TX_PB0 SILABS_DBUS_USART1_TX(0x1, 0x0) +#define USART1_TX_PB1 SILABS_DBUS_USART1_TX(0x1, 0x1) +#define USART1_CTS_PA0 SILABS_DBUS_USART1_CTS(0x0, 0x0) +#define USART1_CTS_PA1 SILABS_DBUS_USART1_CTS(0x0, 0x1) +#define USART1_CTS_PA2 SILABS_DBUS_USART1_CTS(0x0, 0x2) +#define USART1_CTS_PA3 SILABS_DBUS_USART1_CTS(0x0, 0x3) +#define USART1_CTS_PA4 SILABS_DBUS_USART1_CTS(0x0, 0x4) +#define USART1_CTS_PA5 SILABS_DBUS_USART1_CTS(0x0, 0x5) +#define USART1_CTS_PA6 SILABS_DBUS_USART1_CTS(0x0, 0x6) +#define USART1_CTS_PB0 SILABS_DBUS_USART1_CTS(0x1, 0x0) +#define USART1_CTS_PB1 SILABS_DBUS_USART1_CTS(0x1, 0x1) + +#define USART2_CS_PC0 SILABS_DBUS_USART2_CS(0x2, 0x0) +#define USART2_CS_PC1 SILABS_DBUS_USART2_CS(0x2, 0x1) +#define USART2_CS_PC2 SILABS_DBUS_USART2_CS(0x2, 0x2) +#define USART2_CS_PC3 SILABS_DBUS_USART2_CS(0x2, 0x3) +#define USART2_CS_PC4 SILABS_DBUS_USART2_CS(0x2, 0x4) +#define USART2_CS_PC5 SILABS_DBUS_USART2_CS(0x2, 0x5) +#define USART2_CS_PD0 SILABS_DBUS_USART2_CS(0x3, 0x0) +#define USART2_CS_PD1 SILABS_DBUS_USART2_CS(0x3, 0x1) +#define USART2_CS_PD2 SILABS_DBUS_USART2_CS(0x3, 0x2) +#define USART2_CS_PD3 SILABS_DBUS_USART2_CS(0x3, 0x3) +#define USART2_CS_PD4 SILABS_DBUS_USART2_CS(0x3, 0x4) +#define USART2_RTS_PC0 SILABS_DBUS_USART2_RTS(0x2, 0x0) +#define USART2_RTS_PC1 SILABS_DBUS_USART2_RTS(0x2, 0x1) +#define USART2_RTS_PC2 SILABS_DBUS_USART2_RTS(0x2, 0x2) +#define USART2_RTS_PC3 SILABS_DBUS_USART2_RTS(0x2, 0x3) +#define USART2_RTS_PC4 SILABS_DBUS_USART2_RTS(0x2, 0x4) +#define USART2_RTS_PC5 SILABS_DBUS_USART2_RTS(0x2, 0x5) +#define USART2_RTS_PD0 SILABS_DBUS_USART2_RTS(0x3, 0x0) +#define USART2_RTS_PD1 SILABS_DBUS_USART2_RTS(0x3, 0x1) +#define USART2_RTS_PD2 SILABS_DBUS_USART2_RTS(0x3, 0x2) +#define USART2_RTS_PD3 SILABS_DBUS_USART2_RTS(0x3, 0x3) +#define USART2_RTS_PD4 SILABS_DBUS_USART2_RTS(0x3, 0x4) +#define USART2_RX_PC0 SILABS_DBUS_USART2_RX(0x2, 0x0) +#define USART2_RX_PC1 SILABS_DBUS_USART2_RX(0x2, 0x1) +#define USART2_RX_PC2 SILABS_DBUS_USART2_RX(0x2, 0x2) +#define USART2_RX_PC3 SILABS_DBUS_USART2_RX(0x2, 0x3) +#define USART2_RX_PC4 SILABS_DBUS_USART2_RX(0x2, 0x4) +#define USART2_RX_PC5 SILABS_DBUS_USART2_RX(0x2, 0x5) +#define USART2_RX_PD0 SILABS_DBUS_USART2_RX(0x3, 0x0) +#define USART2_RX_PD1 SILABS_DBUS_USART2_RX(0x3, 0x1) +#define USART2_RX_PD2 SILABS_DBUS_USART2_RX(0x3, 0x2) +#define USART2_RX_PD3 SILABS_DBUS_USART2_RX(0x3, 0x3) +#define USART2_RX_PD4 SILABS_DBUS_USART2_RX(0x3, 0x4) +#define USART2_CLK_PC0 SILABS_DBUS_USART2_CLK(0x2, 0x0) +#define USART2_CLK_PC1 SILABS_DBUS_USART2_CLK(0x2, 0x1) +#define USART2_CLK_PC2 SILABS_DBUS_USART2_CLK(0x2, 0x2) +#define USART2_CLK_PC3 SILABS_DBUS_USART2_CLK(0x2, 0x3) +#define USART2_CLK_PC4 SILABS_DBUS_USART2_CLK(0x2, 0x4) +#define USART2_CLK_PC5 SILABS_DBUS_USART2_CLK(0x2, 0x5) +#define USART2_CLK_PD0 SILABS_DBUS_USART2_CLK(0x3, 0x0) +#define USART2_CLK_PD1 SILABS_DBUS_USART2_CLK(0x3, 0x1) +#define USART2_CLK_PD2 SILABS_DBUS_USART2_CLK(0x3, 0x2) +#define USART2_CLK_PD3 SILABS_DBUS_USART2_CLK(0x3, 0x3) +#define USART2_CLK_PD4 SILABS_DBUS_USART2_CLK(0x3, 0x4) +#define USART2_TX_PC0 SILABS_DBUS_USART2_TX(0x2, 0x0) +#define USART2_TX_PC1 SILABS_DBUS_USART2_TX(0x2, 0x1) +#define USART2_TX_PC2 SILABS_DBUS_USART2_TX(0x2, 0x2) +#define USART2_TX_PC3 SILABS_DBUS_USART2_TX(0x2, 0x3) +#define USART2_TX_PC4 SILABS_DBUS_USART2_TX(0x2, 0x4) +#define USART2_TX_PC5 SILABS_DBUS_USART2_TX(0x2, 0x5) +#define USART2_TX_PD0 SILABS_DBUS_USART2_TX(0x3, 0x0) +#define USART2_TX_PD1 SILABS_DBUS_USART2_TX(0x3, 0x1) +#define USART2_TX_PD2 SILABS_DBUS_USART2_TX(0x3, 0x2) +#define USART2_TX_PD3 SILABS_DBUS_USART2_TX(0x3, 0x3) +#define USART2_TX_PD4 SILABS_DBUS_USART2_TX(0x3, 0x4) +#define USART2_CTS_PC0 SILABS_DBUS_USART2_CTS(0x2, 0x0) +#define USART2_CTS_PC1 SILABS_DBUS_USART2_CTS(0x2, 0x1) +#define USART2_CTS_PC2 SILABS_DBUS_USART2_CTS(0x2, 0x2) +#define USART2_CTS_PC3 SILABS_DBUS_USART2_CTS(0x2, 0x3) +#define USART2_CTS_PC4 SILABS_DBUS_USART2_CTS(0x2, 0x4) +#define USART2_CTS_PC5 SILABS_DBUS_USART2_CTS(0x2, 0x5) +#define USART2_CTS_PD0 SILABS_DBUS_USART2_CTS(0x3, 0x0) +#define USART2_CTS_PD1 SILABS_DBUS_USART2_CTS(0x3, 0x1) +#define USART2_CTS_PD2 SILABS_DBUS_USART2_CTS(0x3, 0x2) +#define USART2_CTS_PD3 SILABS_DBUS_USART2_CTS(0x3, 0x3) +#define USART2_CTS_PD4 SILABS_DBUS_USART2_CTS(0x3, 0x4) + +#endif /* ZEPHYR_DT_BINDINGS_PINCTRL_SILABS_XG21_PINCTRL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg22-pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg22-pinctrl.h new file mode 100644 index 00000000..d276d1f5 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg22-pinctrl.h @@ -0,0 +1,1792 @@ +/* + * Copyright (c) 2024 Silicon Laboratories Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Pin Control for Silicon Labs XG22 devices + * + * This file was generated by the script gen_pinctrl.py in the hal_silabs module. + * Do not manually edit. + */ + +#ifndef ZEPHYR_DT_BINDINGS_PINCTRL_SILABS_XG22_PINCTRL_H_ +#define ZEPHYR_DT_BINDINGS_PINCTRL_SILABS_XG22_PINCTRL_H_ + +#include + +#define SILABS_DBUS_CMU_CLKOUT0(port, pin) SILABS_DBUS(port, pin, 4, 1, 0, 2) +#define SILABS_DBUS_CMU_CLKOUT1(port, pin) SILABS_DBUS(port, pin, 4, 1, 1, 3) +#define SILABS_DBUS_CMU_CLKOUT2(port, pin) SILABS_DBUS(port, pin, 4, 1, 2, 4) +#define SILABS_DBUS_CMU_CLKIN0(port, pin) SILABS_DBUS(port, pin, 4, 0, 0, 1) + +#define SILABS_DBUS_PTI_DCLK(port, pin) SILABS_DBUS(port, pin, 15, 1, 0, 1) +#define SILABS_DBUS_PTI_DFRAME(port, pin) SILABS_DBUS(port, pin, 15, 1, 1, 2) +#define SILABS_DBUS_PTI_DOUT(port, pin) SILABS_DBUS(port, pin, 15, 1, 2, 3) + +#define SILABS_DBUS_I2C0_SCL(port, pin) SILABS_DBUS(port, pin, 20, 1, 0, 1) +#define SILABS_DBUS_I2C0_SDA(port, pin) SILABS_DBUS(port, pin, 20, 1, 1, 2) + +#define SILABS_DBUS_I2C1_SCL(port, pin) SILABS_DBUS(port, pin, 24, 1, 0, 1) +#define SILABS_DBUS_I2C1_SDA(port, pin) SILABS_DBUS(port, pin, 24, 1, 1, 2) + +#define SILABS_DBUS_LETIMER0_OUT0(port, pin) SILABS_DBUS(port, pin, 28, 1, 0, 1) +#define SILABS_DBUS_LETIMER0_OUT1(port, pin) SILABS_DBUS(port, pin, 28, 1, 1, 2) + +#define SILABS_DBUS_EUART0_RTS(port, pin) SILABS_DBUS(port, pin, 32, 1, 0, 2) +#define SILABS_DBUS_EUART0_TX(port, pin) SILABS_DBUS(port, pin, 32, 1, 1, 4) +#define SILABS_DBUS_EUART0_CTS(port, pin) SILABS_DBUS(port, pin, 32, 0, 0, 1) +#define SILABS_DBUS_EUART0_RX(port, pin) SILABS_DBUS(port, pin, 32, 0, 0, 3) + +#define SILABS_DBUS_MODEM_ANT0(port, pin) SILABS_DBUS(port, pin, 38, 1, 0, 1) +#define SILABS_DBUS_MODEM_ANT1(port, pin) SILABS_DBUS(port, pin, 38, 1, 1, 2) +#define SILABS_DBUS_MODEM_ANTROLLOVER(port, pin) SILABS_DBUS(port, pin, 38, 1, 2, 3) +#define SILABS_DBUS_MODEM_ANTRR0(port, pin) SILABS_DBUS(port, pin, 38, 1, 3, 4) +#define SILABS_DBUS_MODEM_ANTRR1(port, pin) SILABS_DBUS(port, pin, 38, 1, 4, 5) +#define SILABS_DBUS_MODEM_ANTRR2(port, pin) SILABS_DBUS(port, pin, 38, 1, 5, 6) +#define SILABS_DBUS_MODEM_ANTRR3(port, pin) SILABS_DBUS(port, pin, 38, 1, 6, 7) +#define SILABS_DBUS_MODEM_ANTRR4(port, pin) SILABS_DBUS(port, pin, 38, 1, 7, 8) +#define SILABS_DBUS_MODEM_ANTRR5(port, pin) SILABS_DBUS(port, pin, 38, 1, 8, 9) +#define SILABS_DBUS_MODEM_ANTSWEN(port, pin) SILABS_DBUS(port, pin, 38, 1, 9, 10) +#define SILABS_DBUS_MODEM_ANTSWUS(port, pin) SILABS_DBUS(port, pin, 38, 1, 10, 11) +#define SILABS_DBUS_MODEM_ANTTRIG(port, pin) SILABS_DBUS(port, pin, 38, 1, 11, 12) +#define SILABS_DBUS_MODEM_ANTTRIGSTOP(port, pin) SILABS_DBUS(port, pin, 38, 1, 12, 13) +#define SILABS_DBUS_MODEM_DCLK(port, pin) SILABS_DBUS(port, pin, 38, 1, 13, 14) +#define SILABS_DBUS_MODEM_DOUT(port, pin) SILABS_DBUS(port, pin, 38, 1, 14, 16) +#define SILABS_DBUS_MODEM_DIN(port, pin) SILABS_DBUS(port, pin, 38, 0, 0, 15) + +#define SILABS_DBUS_PDM_CLK(port, pin) SILABS_DBUS(port, pin, 56, 1, 0, 1) +#define SILABS_DBUS_PDM_DAT0(port, pin) SILABS_DBUS(port, pin, 56, 0, 0, 2) +#define SILABS_DBUS_PDM_DAT1(port, pin) SILABS_DBUS(port, pin, 56, 0, 0, 3) + +#define SILABS_DBUS_PRS0_ASYNCH0(port, pin) SILABS_DBUS(port, pin, 61, 1, 0, 1) +#define SILABS_DBUS_PRS0_ASYNCH1(port, pin) SILABS_DBUS(port, pin, 61, 1, 1, 2) +#define SILABS_DBUS_PRS0_ASYNCH2(port, pin) SILABS_DBUS(port, pin, 61, 1, 2, 3) +#define SILABS_DBUS_PRS0_ASYNCH3(port, pin) SILABS_DBUS(port, pin, 61, 1, 3, 4) +#define SILABS_DBUS_PRS0_ASYNCH4(port, pin) SILABS_DBUS(port, pin, 61, 1, 4, 5) +#define SILABS_DBUS_PRS0_ASYNCH5(port, pin) SILABS_DBUS(port, pin, 61, 1, 5, 6) +#define SILABS_DBUS_PRS0_ASYNCH6(port, pin) SILABS_DBUS(port, pin, 61, 1, 6, 7) +#define SILABS_DBUS_PRS0_ASYNCH7(port, pin) SILABS_DBUS(port, pin, 61, 1, 7, 8) +#define SILABS_DBUS_PRS0_ASYNCH8(port, pin) SILABS_DBUS(port, pin, 61, 1, 8, 9) +#define SILABS_DBUS_PRS0_ASYNCH9(port, pin) SILABS_DBUS(port, pin, 61, 1, 9, 10) +#define SILABS_DBUS_PRS0_ASYNCH10(port, pin) SILABS_DBUS(port, pin, 61, 1, 10, 11) +#define SILABS_DBUS_PRS0_ASYNCH11(port, pin) SILABS_DBUS(port, pin, 61, 1, 11, 12) +#define SILABS_DBUS_PRS0_SYNCH0(port, pin) SILABS_DBUS(port, pin, 61, 1, 12, 13) +#define SILABS_DBUS_PRS0_SYNCH1(port, pin) SILABS_DBUS(port, pin, 61, 1, 13, 14) +#define SILABS_DBUS_PRS0_SYNCH2(port, pin) SILABS_DBUS(port, pin, 61, 1, 14, 15) +#define SILABS_DBUS_PRS0_SYNCH3(port, pin) SILABS_DBUS(port, pin, 61, 1, 15, 16) + +#define SILABS_DBUS_TIMER0_CC0(port, pin) SILABS_DBUS(port, pin, 79, 1, 0, 1) +#define SILABS_DBUS_TIMER0_CC1(port, pin) SILABS_DBUS(port, pin, 79, 1, 1, 2) +#define SILABS_DBUS_TIMER0_CC2(port, pin) SILABS_DBUS(port, pin, 79, 1, 2, 3) +#define SILABS_DBUS_TIMER0_CDTI0(port, pin) SILABS_DBUS(port, pin, 79, 1, 3, 4) +#define SILABS_DBUS_TIMER0_CDTI1(port, pin) SILABS_DBUS(port, pin, 79, 1, 4, 5) +#define SILABS_DBUS_TIMER0_CDTI2(port, pin) SILABS_DBUS(port, pin, 79, 1, 5, 6) + +#define SILABS_DBUS_TIMER1_CC0(port, pin) SILABS_DBUS(port, pin, 87, 1, 0, 1) +#define SILABS_DBUS_TIMER1_CC1(port, pin) SILABS_DBUS(port, pin, 87, 1, 1, 2) +#define SILABS_DBUS_TIMER1_CC2(port, pin) SILABS_DBUS(port, pin, 87, 1, 2, 3) +#define SILABS_DBUS_TIMER1_CDTI0(port, pin) SILABS_DBUS(port, pin, 87, 1, 3, 4) +#define SILABS_DBUS_TIMER1_CDTI1(port, pin) SILABS_DBUS(port, pin, 87, 1, 4, 5) +#define SILABS_DBUS_TIMER1_CDTI2(port, pin) SILABS_DBUS(port, pin, 87, 1, 5, 6) + +#define SILABS_DBUS_TIMER2_CC0(port, pin) SILABS_DBUS(port, pin, 95, 1, 0, 1) +#define SILABS_DBUS_TIMER2_CC1(port, pin) SILABS_DBUS(port, pin, 95, 1, 1, 2) +#define SILABS_DBUS_TIMER2_CC2(port, pin) SILABS_DBUS(port, pin, 95, 1, 2, 3) +#define SILABS_DBUS_TIMER2_CDTI0(port, pin) SILABS_DBUS(port, pin, 95, 1, 3, 4) +#define SILABS_DBUS_TIMER2_CDTI1(port, pin) SILABS_DBUS(port, pin, 95, 1, 4, 5) +#define SILABS_DBUS_TIMER2_CDTI2(port, pin) SILABS_DBUS(port, pin, 95, 1, 5, 6) + +#define SILABS_DBUS_TIMER3_CC0(port, pin) SILABS_DBUS(port, pin, 103, 1, 0, 1) +#define SILABS_DBUS_TIMER3_CC1(port, pin) SILABS_DBUS(port, pin, 103, 1, 1, 2) +#define SILABS_DBUS_TIMER3_CC2(port, pin) SILABS_DBUS(port, pin, 103, 1, 2, 3) +#define SILABS_DBUS_TIMER3_CDTI0(port, pin) SILABS_DBUS(port, pin, 103, 1, 3, 4) +#define SILABS_DBUS_TIMER3_CDTI1(port, pin) SILABS_DBUS(port, pin, 103, 1, 4, 5) +#define SILABS_DBUS_TIMER3_CDTI2(port, pin) SILABS_DBUS(port, pin, 103, 1, 5, 6) + +#define SILABS_DBUS_TIMER4_CC0(port, pin) SILABS_DBUS(port, pin, 111, 1, 0, 1) +#define SILABS_DBUS_TIMER4_CC1(port, pin) SILABS_DBUS(port, pin, 111, 1, 1, 2) +#define SILABS_DBUS_TIMER4_CC2(port, pin) SILABS_DBUS(port, pin, 111, 1, 2, 3) +#define SILABS_DBUS_TIMER4_CDTI0(port, pin) SILABS_DBUS(port, pin, 111, 1, 3, 4) +#define SILABS_DBUS_TIMER4_CDTI1(port, pin) SILABS_DBUS(port, pin, 111, 1, 4, 5) +#define SILABS_DBUS_TIMER4_CDTI2(port, pin) SILABS_DBUS(port, pin, 111, 1, 5, 6) + +#define SILABS_DBUS_USART0_CS(port, pin) SILABS_DBUS(port, pin, 119, 1, 0, 1) +#define SILABS_DBUS_USART0_RTS(port, pin) SILABS_DBUS(port, pin, 119, 1, 1, 3) +#define SILABS_DBUS_USART0_RX(port, pin) SILABS_DBUS(port, pin, 119, 1, 2, 4) +#define SILABS_DBUS_USART0_CLK(port, pin) SILABS_DBUS(port, pin, 119, 1, 3, 5) +#define SILABS_DBUS_USART0_TX(port, pin) SILABS_DBUS(port, pin, 119, 1, 4, 6) +#define SILABS_DBUS_USART0_CTS(port, pin) SILABS_DBUS(port, pin, 119, 0, 0, 2) + +#define SILABS_DBUS_USART1_CS(port, pin) SILABS_DBUS(port, pin, 127, 1, 0, 1) +#define SILABS_DBUS_USART1_RTS(port, pin) SILABS_DBUS(port, pin, 127, 1, 1, 3) +#define SILABS_DBUS_USART1_RX(port, pin) SILABS_DBUS(port, pin, 127, 1, 2, 4) +#define SILABS_DBUS_USART1_CLK(port, pin) SILABS_DBUS(port, pin, 127, 1, 3, 5) +#define SILABS_DBUS_USART1_TX(port, pin) SILABS_DBUS(port, pin, 127, 1, 4, 6) +#define SILABS_DBUS_USART1_CTS(port, pin) SILABS_DBUS(port, pin, 127, 0, 0, 2) + +#define CMU_CLKOUT0_PC0 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x0) +#define CMU_CLKOUT0_PC1 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x1) +#define CMU_CLKOUT0_PC2 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x2) +#define CMU_CLKOUT0_PC3 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x3) +#define CMU_CLKOUT0_PC4 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x4) +#define CMU_CLKOUT0_PC5 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x5) +#define CMU_CLKOUT0_PC6 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x6) +#define CMU_CLKOUT0_PC7 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x7) +#define CMU_CLKOUT0_PD0 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x0) +#define CMU_CLKOUT0_PD1 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x1) +#define CMU_CLKOUT0_PD2 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x2) +#define CMU_CLKOUT0_PD3 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x3) +#define CMU_CLKOUT1_PC0 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x0) +#define CMU_CLKOUT1_PC1 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x1) +#define CMU_CLKOUT1_PC2 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x2) +#define CMU_CLKOUT1_PC3 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x3) +#define CMU_CLKOUT1_PC4 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x4) +#define CMU_CLKOUT1_PC5 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x5) +#define CMU_CLKOUT1_PC6 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x6) +#define CMU_CLKOUT1_PC7 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x7) +#define CMU_CLKOUT1_PD0 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x0) +#define CMU_CLKOUT1_PD1 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x1) +#define CMU_CLKOUT1_PD2 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x2) +#define CMU_CLKOUT1_PD3 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x3) +#define CMU_CLKOUT2_PA0 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x0) +#define CMU_CLKOUT2_PA1 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x1) +#define CMU_CLKOUT2_PA2 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x2) +#define CMU_CLKOUT2_PA3 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x3) +#define CMU_CLKOUT2_PA4 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x4) +#define CMU_CLKOUT2_PA5 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x5) +#define CMU_CLKOUT2_PA6 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x6) +#define CMU_CLKOUT2_PA7 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x7) +#define CMU_CLKOUT2_PA8 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x8) +#define CMU_CLKOUT2_PB0 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x0) +#define CMU_CLKOUT2_PB1 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x1) +#define CMU_CLKOUT2_PB2 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x2) +#define CMU_CLKOUT2_PB3 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x3) +#define CMU_CLKOUT2_PB4 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x4) +#define CMU_CLKIN0_PC0 SILABS_DBUS_CMU_CLKIN0(0x2, 0x0) +#define CMU_CLKIN0_PC1 SILABS_DBUS_CMU_CLKIN0(0x2, 0x1) +#define CMU_CLKIN0_PC2 SILABS_DBUS_CMU_CLKIN0(0x2, 0x2) +#define CMU_CLKIN0_PC3 SILABS_DBUS_CMU_CLKIN0(0x2, 0x3) +#define CMU_CLKIN0_PC4 SILABS_DBUS_CMU_CLKIN0(0x2, 0x4) +#define CMU_CLKIN0_PC5 SILABS_DBUS_CMU_CLKIN0(0x2, 0x5) +#define CMU_CLKIN0_PC6 SILABS_DBUS_CMU_CLKIN0(0x2, 0x6) +#define CMU_CLKIN0_PC7 SILABS_DBUS_CMU_CLKIN0(0x2, 0x7) +#define CMU_CLKIN0_PD0 SILABS_DBUS_CMU_CLKIN0(0x3, 0x0) +#define CMU_CLKIN0_PD1 SILABS_DBUS_CMU_CLKIN0(0x3, 0x1) +#define CMU_CLKIN0_PD2 SILABS_DBUS_CMU_CLKIN0(0x3, 0x2) +#define CMU_CLKIN0_PD3 SILABS_DBUS_CMU_CLKIN0(0x3, 0x3) + +#define PTI_DCLK_PC0 SILABS_DBUS_PTI_DCLK(0x2, 0x0) +#define PTI_DCLK_PC1 SILABS_DBUS_PTI_DCLK(0x2, 0x1) +#define PTI_DCLK_PC2 SILABS_DBUS_PTI_DCLK(0x2, 0x2) +#define PTI_DCLK_PC3 SILABS_DBUS_PTI_DCLK(0x2, 0x3) +#define PTI_DCLK_PC4 SILABS_DBUS_PTI_DCLK(0x2, 0x4) +#define PTI_DCLK_PC5 SILABS_DBUS_PTI_DCLK(0x2, 0x5) +#define PTI_DCLK_PC6 SILABS_DBUS_PTI_DCLK(0x2, 0x6) +#define PTI_DCLK_PC7 SILABS_DBUS_PTI_DCLK(0x2, 0x7) +#define PTI_DCLK_PD0 SILABS_DBUS_PTI_DCLK(0x3, 0x0) +#define PTI_DCLK_PD1 SILABS_DBUS_PTI_DCLK(0x3, 0x1) +#define PTI_DCLK_PD2 SILABS_DBUS_PTI_DCLK(0x3, 0x2) +#define PTI_DCLK_PD3 SILABS_DBUS_PTI_DCLK(0x3, 0x3) +#define PTI_DFRAME_PC0 SILABS_DBUS_PTI_DFRAME(0x2, 0x0) +#define PTI_DFRAME_PC1 SILABS_DBUS_PTI_DFRAME(0x2, 0x1) +#define PTI_DFRAME_PC2 SILABS_DBUS_PTI_DFRAME(0x2, 0x2) +#define PTI_DFRAME_PC3 SILABS_DBUS_PTI_DFRAME(0x2, 0x3) +#define PTI_DFRAME_PC4 SILABS_DBUS_PTI_DFRAME(0x2, 0x4) +#define PTI_DFRAME_PC5 SILABS_DBUS_PTI_DFRAME(0x2, 0x5) +#define PTI_DFRAME_PC6 SILABS_DBUS_PTI_DFRAME(0x2, 0x6) +#define PTI_DFRAME_PC7 SILABS_DBUS_PTI_DFRAME(0x2, 0x7) +#define PTI_DFRAME_PD0 SILABS_DBUS_PTI_DFRAME(0x3, 0x0) +#define PTI_DFRAME_PD1 SILABS_DBUS_PTI_DFRAME(0x3, 0x1) +#define PTI_DFRAME_PD2 SILABS_DBUS_PTI_DFRAME(0x3, 0x2) +#define PTI_DFRAME_PD3 SILABS_DBUS_PTI_DFRAME(0x3, 0x3) +#define PTI_DOUT_PC0 SILABS_DBUS_PTI_DOUT(0x2, 0x0) +#define PTI_DOUT_PC1 SILABS_DBUS_PTI_DOUT(0x2, 0x1) +#define PTI_DOUT_PC2 SILABS_DBUS_PTI_DOUT(0x2, 0x2) +#define PTI_DOUT_PC3 SILABS_DBUS_PTI_DOUT(0x2, 0x3) +#define PTI_DOUT_PC4 SILABS_DBUS_PTI_DOUT(0x2, 0x4) +#define PTI_DOUT_PC5 SILABS_DBUS_PTI_DOUT(0x2, 0x5) +#define PTI_DOUT_PC6 SILABS_DBUS_PTI_DOUT(0x2, 0x6) +#define PTI_DOUT_PC7 SILABS_DBUS_PTI_DOUT(0x2, 0x7) +#define PTI_DOUT_PD0 SILABS_DBUS_PTI_DOUT(0x3, 0x0) +#define PTI_DOUT_PD1 SILABS_DBUS_PTI_DOUT(0x3, 0x1) +#define PTI_DOUT_PD2 SILABS_DBUS_PTI_DOUT(0x3, 0x2) +#define PTI_DOUT_PD3 SILABS_DBUS_PTI_DOUT(0x3, 0x3) + +#define I2C0_SCL_PA0 SILABS_DBUS_I2C0_SCL(0x0, 0x0) +#define I2C0_SCL_PA1 SILABS_DBUS_I2C0_SCL(0x0, 0x1) +#define I2C0_SCL_PA2 SILABS_DBUS_I2C0_SCL(0x0, 0x2) +#define I2C0_SCL_PA3 SILABS_DBUS_I2C0_SCL(0x0, 0x3) +#define I2C0_SCL_PA4 SILABS_DBUS_I2C0_SCL(0x0, 0x4) +#define I2C0_SCL_PA5 SILABS_DBUS_I2C0_SCL(0x0, 0x5) +#define I2C0_SCL_PA6 SILABS_DBUS_I2C0_SCL(0x0, 0x6) +#define I2C0_SCL_PA7 SILABS_DBUS_I2C0_SCL(0x0, 0x7) +#define I2C0_SCL_PA8 SILABS_DBUS_I2C0_SCL(0x0, 0x8) +#define I2C0_SCL_PB0 SILABS_DBUS_I2C0_SCL(0x1, 0x0) +#define I2C0_SCL_PB1 SILABS_DBUS_I2C0_SCL(0x1, 0x1) +#define I2C0_SCL_PB2 SILABS_DBUS_I2C0_SCL(0x1, 0x2) +#define I2C0_SCL_PB3 SILABS_DBUS_I2C0_SCL(0x1, 0x3) +#define I2C0_SCL_PB4 SILABS_DBUS_I2C0_SCL(0x1, 0x4) +#define I2C0_SCL_PC0 SILABS_DBUS_I2C0_SCL(0x2, 0x0) +#define I2C0_SCL_PC1 SILABS_DBUS_I2C0_SCL(0x2, 0x1) +#define I2C0_SCL_PC2 SILABS_DBUS_I2C0_SCL(0x2, 0x2) +#define I2C0_SCL_PC3 SILABS_DBUS_I2C0_SCL(0x2, 0x3) +#define I2C0_SCL_PC4 SILABS_DBUS_I2C0_SCL(0x2, 0x4) +#define I2C0_SCL_PC5 SILABS_DBUS_I2C0_SCL(0x2, 0x5) +#define I2C0_SCL_PC6 SILABS_DBUS_I2C0_SCL(0x2, 0x6) +#define I2C0_SCL_PC7 SILABS_DBUS_I2C0_SCL(0x2, 0x7) +#define I2C0_SCL_PD0 SILABS_DBUS_I2C0_SCL(0x3, 0x0) +#define I2C0_SCL_PD1 SILABS_DBUS_I2C0_SCL(0x3, 0x1) +#define I2C0_SCL_PD2 SILABS_DBUS_I2C0_SCL(0x3, 0x2) +#define I2C0_SCL_PD3 SILABS_DBUS_I2C0_SCL(0x3, 0x3) +#define I2C0_SDA_PA0 SILABS_DBUS_I2C0_SDA(0x0, 0x0) +#define I2C0_SDA_PA1 SILABS_DBUS_I2C0_SDA(0x0, 0x1) +#define I2C0_SDA_PA2 SILABS_DBUS_I2C0_SDA(0x0, 0x2) +#define I2C0_SDA_PA3 SILABS_DBUS_I2C0_SDA(0x0, 0x3) +#define I2C0_SDA_PA4 SILABS_DBUS_I2C0_SDA(0x0, 0x4) +#define I2C0_SDA_PA5 SILABS_DBUS_I2C0_SDA(0x0, 0x5) +#define I2C0_SDA_PA6 SILABS_DBUS_I2C0_SDA(0x0, 0x6) +#define I2C0_SDA_PA7 SILABS_DBUS_I2C0_SDA(0x0, 0x7) +#define I2C0_SDA_PA8 SILABS_DBUS_I2C0_SDA(0x0, 0x8) +#define I2C0_SDA_PB0 SILABS_DBUS_I2C0_SDA(0x1, 0x0) +#define I2C0_SDA_PB1 SILABS_DBUS_I2C0_SDA(0x1, 0x1) +#define I2C0_SDA_PB2 SILABS_DBUS_I2C0_SDA(0x1, 0x2) +#define I2C0_SDA_PB3 SILABS_DBUS_I2C0_SDA(0x1, 0x3) +#define I2C0_SDA_PB4 SILABS_DBUS_I2C0_SDA(0x1, 0x4) +#define I2C0_SDA_PC0 SILABS_DBUS_I2C0_SDA(0x2, 0x0) +#define I2C0_SDA_PC1 SILABS_DBUS_I2C0_SDA(0x2, 0x1) +#define I2C0_SDA_PC2 SILABS_DBUS_I2C0_SDA(0x2, 0x2) +#define I2C0_SDA_PC3 SILABS_DBUS_I2C0_SDA(0x2, 0x3) +#define I2C0_SDA_PC4 SILABS_DBUS_I2C0_SDA(0x2, 0x4) +#define I2C0_SDA_PC5 SILABS_DBUS_I2C0_SDA(0x2, 0x5) +#define I2C0_SDA_PC6 SILABS_DBUS_I2C0_SDA(0x2, 0x6) +#define I2C0_SDA_PC7 SILABS_DBUS_I2C0_SDA(0x2, 0x7) +#define I2C0_SDA_PD0 SILABS_DBUS_I2C0_SDA(0x3, 0x0) +#define I2C0_SDA_PD1 SILABS_DBUS_I2C0_SDA(0x3, 0x1) +#define I2C0_SDA_PD2 SILABS_DBUS_I2C0_SDA(0x3, 0x2) +#define I2C0_SDA_PD3 SILABS_DBUS_I2C0_SDA(0x3, 0x3) + +#define I2C1_SCL_PC0 SILABS_DBUS_I2C1_SCL(0x2, 0x0) +#define I2C1_SCL_PC1 SILABS_DBUS_I2C1_SCL(0x2, 0x1) +#define I2C1_SCL_PC2 SILABS_DBUS_I2C1_SCL(0x2, 0x2) +#define I2C1_SCL_PC3 SILABS_DBUS_I2C1_SCL(0x2, 0x3) +#define I2C1_SCL_PC4 SILABS_DBUS_I2C1_SCL(0x2, 0x4) +#define I2C1_SCL_PC5 SILABS_DBUS_I2C1_SCL(0x2, 0x5) +#define I2C1_SCL_PC6 SILABS_DBUS_I2C1_SCL(0x2, 0x6) +#define I2C1_SCL_PC7 SILABS_DBUS_I2C1_SCL(0x2, 0x7) +#define I2C1_SCL_PD0 SILABS_DBUS_I2C1_SCL(0x3, 0x0) +#define I2C1_SCL_PD1 SILABS_DBUS_I2C1_SCL(0x3, 0x1) +#define I2C1_SCL_PD2 SILABS_DBUS_I2C1_SCL(0x3, 0x2) +#define I2C1_SCL_PD3 SILABS_DBUS_I2C1_SCL(0x3, 0x3) +#define I2C1_SDA_PC0 SILABS_DBUS_I2C1_SDA(0x2, 0x0) +#define I2C1_SDA_PC1 SILABS_DBUS_I2C1_SDA(0x2, 0x1) +#define I2C1_SDA_PC2 SILABS_DBUS_I2C1_SDA(0x2, 0x2) +#define I2C1_SDA_PC3 SILABS_DBUS_I2C1_SDA(0x2, 0x3) +#define I2C1_SDA_PC4 SILABS_DBUS_I2C1_SDA(0x2, 0x4) +#define I2C1_SDA_PC5 SILABS_DBUS_I2C1_SDA(0x2, 0x5) +#define I2C1_SDA_PC6 SILABS_DBUS_I2C1_SDA(0x2, 0x6) +#define I2C1_SDA_PC7 SILABS_DBUS_I2C1_SDA(0x2, 0x7) +#define I2C1_SDA_PD0 SILABS_DBUS_I2C1_SDA(0x3, 0x0) +#define I2C1_SDA_PD1 SILABS_DBUS_I2C1_SDA(0x3, 0x1) +#define I2C1_SDA_PD2 SILABS_DBUS_I2C1_SDA(0x3, 0x2) +#define I2C1_SDA_PD3 SILABS_DBUS_I2C1_SDA(0x3, 0x3) + +#define LETIMER0_OUT0_PA0 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x0) +#define LETIMER0_OUT0_PA1 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x1) +#define LETIMER0_OUT0_PA2 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x2) +#define LETIMER0_OUT0_PA3 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x3) +#define LETIMER0_OUT0_PA4 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x4) +#define LETIMER0_OUT0_PA5 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x5) +#define LETIMER0_OUT0_PA6 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x6) +#define LETIMER0_OUT0_PA7 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x7) +#define LETIMER0_OUT0_PA8 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x8) +#define LETIMER0_OUT0_PB0 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x0) +#define LETIMER0_OUT0_PB1 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x1) +#define LETIMER0_OUT0_PB2 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x2) +#define LETIMER0_OUT0_PB3 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x3) +#define LETIMER0_OUT0_PB4 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x4) +#define LETIMER0_OUT1_PA0 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x0) +#define LETIMER0_OUT1_PA1 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x1) +#define LETIMER0_OUT1_PA2 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x2) +#define LETIMER0_OUT1_PA3 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x3) +#define LETIMER0_OUT1_PA4 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x4) +#define LETIMER0_OUT1_PA5 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x5) +#define LETIMER0_OUT1_PA6 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x6) +#define LETIMER0_OUT1_PA7 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x7) +#define LETIMER0_OUT1_PA8 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x8) +#define LETIMER0_OUT1_PB0 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x0) +#define LETIMER0_OUT1_PB1 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x1) +#define LETIMER0_OUT1_PB2 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x2) +#define LETIMER0_OUT1_PB3 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x3) +#define LETIMER0_OUT1_PB4 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x4) + +#define EUART0_RTS_PA0 SILABS_DBUS_EUART0_RTS(0x0, 0x0) +#define EUART0_RTS_PA1 SILABS_DBUS_EUART0_RTS(0x0, 0x1) +#define EUART0_RTS_PA2 SILABS_DBUS_EUART0_RTS(0x0, 0x2) +#define EUART0_RTS_PA3 SILABS_DBUS_EUART0_RTS(0x0, 0x3) +#define EUART0_RTS_PA4 SILABS_DBUS_EUART0_RTS(0x0, 0x4) +#define EUART0_RTS_PA5 SILABS_DBUS_EUART0_RTS(0x0, 0x5) +#define EUART0_RTS_PA6 SILABS_DBUS_EUART0_RTS(0x0, 0x6) +#define EUART0_RTS_PA7 SILABS_DBUS_EUART0_RTS(0x0, 0x7) +#define EUART0_RTS_PA8 SILABS_DBUS_EUART0_RTS(0x0, 0x8) +#define EUART0_RTS_PB0 SILABS_DBUS_EUART0_RTS(0x1, 0x0) +#define EUART0_RTS_PB1 SILABS_DBUS_EUART0_RTS(0x1, 0x1) +#define EUART0_RTS_PB2 SILABS_DBUS_EUART0_RTS(0x1, 0x2) +#define EUART0_RTS_PB3 SILABS_DBUS_EUART0_RTS(0x1, 0x3) +#define EUART0_RTS_PB4 SILABS_DBUS_EUART0_RTS(0x1, 0x4) +#define EUART0_RTS_PC0 SILABS_DBUS_EUART0_RTS(0x2, 0x0) +#define EUART0_RTS_PC1 SILABS_DBUS_EUART0_RTS(0x2, 0x1) +#define EUART0_RTS_PC2 SILABS_DBUS_EUART0_RTS(0x2, 0x2) +#define EUART0_RTS_PC3 SILABS_DBUS_EUART0_RTS(0x2, 0x3) +#define EUART0_RTS_PC4 SILABS_DBUS_EUART0_RTS(0x2, 0x4) +#define EUART0_RTS_PC5 SILABS_DBUS_EUART0_RTS(0x2, 0x5) +#define EUART0_RTS_PC6 SILABS_DBUS_EUART0_RTS(0x2, 0x6) +#define EUART0_RTS_PC7 SILABS_DBUS_EUART0_RTS(0x2, 0x7) +#define EUART0_RTS_PD0 SILABS_DBUS_EUART0_RTS(0x3, 0x0) +#define EUART0_RTS_PD1 SILABS_DBUS_EUART0_RTS(0x3, 0x1) +#define EUART0_RTS_PD2 SILABS_DBUS_EUART0_RTS(0x3, 0x2) +#define EUART0_RTS_PD3 SILABS_DBUS_EUART0_RTS(0x3, 0x3) +#define EUART0_TX_PA0 SILABS_DBUS_EUART0_TX(0x0, 0x0) +#define EUART0_TX_PA1 SILABS_DBUS_EUART0_TX(0x0, 0x1) +#define EUART0_TX_PA2 SILABS_DBUS_EUART0_TX(0x0, 0x2) +#define EUART0_TX_PA3 SILABS_DBUS_EUART0_TX(0x0, 0x3) +#define EUART0_TX_PA4 SILABS_DBUS_EUART0_TX(0x0, 0x4) +#define EUART0_TX_PA5 SILABS_DBUS_EUART0_TX(0x0, 0x5) +#define EUART0_TX_PA6 SILABS_DBUS_EUART0_TX(0x0, 0x6) +#define EUART0_TX_PA7 SILABS_DBUS_EUART0_TX(0x0, 0x7) +#define EUART0_TX_PA8 SILABS_DBUS_EUART0_TX(0x0, 0x8) +#define EUART0_TX_PB0 SILABS_DBUS_EUART0_TX(0x1, 0x0) +#define EUART0_TX_PB1 SILABS_DBUS_EUART0_TX(0x1, 0x1) +#define EUART0_TX_PB2 SILABS_DBUS_EUART0_TX(0x1, 0x2) +#define EUART0_TX_PB3 SILABS_DBUS_EUART0_TX(0x1, 0x3) +#define EUART0_TX_PB4 SILABS_DBUS_EUART0_TX(0x1, 0x4) +#define EUART0_TX_PC0 SILABS_DBUS_EUART0_TX(0x2, 0x0) +#define EUART0_TX_PC1 SILABS_DBUS_EUART0_TX(0x2, 0x1) +#define EUART0_TX_PC2 SILABS_DBUS_EUART0_TX(0x2, 0x2) +#define EUART0_TX_PC3 SILABS_DBUS_EUART0_TX(0x2, 0x3) +#define EUART0_TX_PC4 SILABS_DBUS_EUART0_TX(0x2, 0x4) +#define EUART0_TX_PC5 SILABS_DBUS_EUART0_TX(0x2, 0x5) +#define EUART0_TX_PC6 SILABS_DBUS_EUART0_TX(0x2, 0x6) +#define EUART0_TX_PC7 SILABS_DBUS_EUART0_TX(0x2, 0x7) +#define EUART0_TX_PD0 SILABS_DBUS_EUART0_TX(0x3, 0x0) +#define EUART0_TX_PD1 SILABS_DBUS_EUART0_TX(0x3, 0x1) +#define EUART0_TX_PD2 SILABS_DBUS_EUART0_TX(0x3, 0x2) +#define EUART0_TX_PD3 SILABS_DBUS_EUART0_TX(0x3, 0x3) +#define EUART0_CTS_PA0 SILABS_DBUS_EUART0_CTS(0x0, 0x0) +#define EUART0_CTS_PA1 SILABS_DBUS_EUART0_CTS(0x0, 0x1) +#define EUART0_CTS_PA2 SILABS_DBUS_EUART0_CTS(0x0, 0x2) +#define EUART0_CTS_PA3 SILABS_DBUS_EUART0_CTS(0x0, 0x3) +#define EUART0_CTS_PA4 SILABS_DBUS_EUART0_CTS(0x0, 0x4) +#define EUART0_CTS_PA5 SILABS_DBUS_EUART0_CTS(0x0, 0x5) +#define EUART0_CTS_PA6 SILABS_DBUS_EUART0_CTS(0x0, 0x6) +#define EUART0_CTS_PA7 SILABS_DBUS_EUART0_CTS(0x0, 0x7) +#define EUART0_CTS_PA8 SILABS_DBUS_EUART0_CTS(0x0, 0x8) +#define EUART0_CTS_PB0 SILABS_DBUS_EUART0_CTS(0x1, 0x0) +#define EUART0_CTS_PB1 SILABS_DBUS_EUART0_CTS(0x1, 0x1) +#define EUART0_CTS_PB2 SILABS_DBUS_EUART0_CTS(0x1, 0x2) +#define EUART0_CTS_PB3 SILABS_DBUS_EUART0_CTS(0x1, 0x3) +#define EUART0_CTS_PB4 SILABS_DBUS_EUART0_CTS(0x1, 0x4) +#define EUART0_CTS_PC0 SILABS_DBUS_EUART0_CTS(0x2, 0x0) +#define EUART0_CTS_PC1 SILABS_DBUS_EUART0_CTS(0x2, 0x1) +#define EUART0_CTS_PC2 SILABS_DBUS_EUART0_CTS(0x2, 0x2) +#define EUART0_CTS_PC3 SILABS_DBUS_EUART0_CTS(0x2, 0x3) +#define EUART0_CTS_PC4 SILABS_DBUS_EUART0_CTS(0x2, 0x4) +#define EUART0_CTS_PC5 SILABS_DBUS_EUART0_CTS(0x2, 0x5) +#define EUART0_CTS_PC6 SILABS_DBUS_EUART0_CTS(0x2, 0x6) +#define EUART0_CTS_PC7 SILABS_DBUS_EUART0_CTS(0x2, 0x7) +#define EUART0_CTS_PD0 SILABS_DBUS_EUART0_CTS(0x3, 0x0) +#define EUART0_CTS_PD1 SILABS_DBUS_EUART0_CTS(0x3, 0x1) +#define EUART0_CTS_PD2 SILABS_DBUS_EUART0_CTS(0x3, 0x2) +#define EUART0_CTS_PD3 SILABS_DBUS_EUART0_CTS(0x3, 0x3) +#define EUART0_RX_PA0 SILABS_DBUS_EUART0_RX(0x0, 0x0) +#define EUART0_RX_PA1 SILABS_DBUS_EUART0_RX(0x0, 0x1) +#define EUART0_RX_PA2 SILABS_DBUS_EUART0_RX(0x0, 0x2) +#define EUART0_RX_PA3 SILABS_DBUS_EUART0_RX(0x0, 0x3) +#define EUART0_RX_PA4 SILABS_DBUS_EUART0_RX(0x0, 0x4) +#define EUART0_RX_PA5 SILABS_DBUS_EUART0_RX(0x0, 0x5) +#define EUART0_RX_PA6 SILABS_DBUS_EUART0_RX(0x0, 0x6) +#define EUART0_RX_PA7 SILABS_DBUS_EUART0_RX(0x0, 0x7) +#define EUART0_RX_PA8 SILABS_DBUS_EUART0_RX(0x0, 0x8) +#define EUART0_RX_PB0 SILABS_DBUS_EUART0_RX(0x1, 0x0) +#define EUART0_RX_PB1 SILABS_DBUS_EUART0_RX(0x1, 0x1) +#define EUART0_RX_PB2 SILABS_DBUS_EUART0_RX(0x1, 0x2) +#define EUART0_RX_PB3 SILABS_DBUS_EUART0_RX(0x1, 0x3) +#define EUART0_RX_PB4 SILABS_DBUS_EUART0_RX(0x1, 0x4) +#define EUART0_RX_PC0 SILABS_DBUS_EUART0_RX(0x2, 0x0) +#define EUART0_RX_PC1 SILABS_DBUS_EUART0_RX(0x2, 0x1) +#define EUART0_RX_PC2 SILABS_DBUS_EUART0_RX(0x2, 0x2) +#define EUART0_RX_PC3 SILABS_DBUS_EUART0_RX(0x2, 0x3) +#define EUART0_RX_PC4 SILABS_DBUS_EUART0_RX(0x2, 0x4) +#define EUART0_RX_PC5 SILABS_DBUS_EUART0_RX(0x2, 0x5) +#define EUART0_RX_PC6 SILABS_DBUS_EUART0_RX(0x2, 0x6) +#define EUART0_RX_PC7 SILABS_DBUS_EUART0_RX(0x2, 0x7) +#define EUART0_RX_PD0 SILABS_DBUS_EUART0_RX(0x3, 0x0) +#define EUART0_RX_PD1 SILABS_DBUS_EUART0_RX(0x3, 0x1) +#define EUART0_RX_PD2 SILABS_DBUS_EUART0_RX(0x3, 0x2) +#define EUART0_RX_PD3 SILABS_DBUS_EUART0_RX(0x3, 0x3) + +#define MODEM_ANT0_PA0 SILABS_DBUS_MODEM_ANT0(0x0, 0x0) +#define MODEM_ANT0_PA1 SILABS_DBUS_MODEM_ANT0(0x0, 0x1) +#define MODEM_ANT0_PA2 SILABS_DBUS_MODEM_ANT0(0x0, 0x2) +#define MODEM_ANT0_PA3 SILABS_DBUS_MODEM_ANT0(0x0, 0x3) +#define MODEM_ANT0_PA4 SILABS_DBUS_MODEM_ANT0(0x0, 0x4) +#define MODEM_ANT0_PA5 SILABS_DBUS_MODEM_ANT0(0x0, 0x5) +#define MODEM_ANT0_PA6 SILABS_DBUS_MODEM_ANT0(0x0, 0x6) +#define MODEM_ANT0_PA7 SILABS_DBUS_MODEM_ANT0(0x0, 0x7) +#define MODEM_ANT0_PA8 SILABS_DBUS_MODEM_ANT0(0x0, 0x8) +#define MODEM_ANT0_PB0 SILABS_DBUS_MODEM_ANT0(0x1, 0x0) +#define MODEM_ANT0_PB1 SILABS_DBUS_MODEM_ANT0(0x1, 0x1) +#define MODEM_ANT0_PB2 SILABS_DBUS_MODEM_ANT0(0x1, 0x2) +#define MODEM_ANT0_PB3 SILABS_DBUS_MODEM_ANT0(0x1, 0x3) +#define MODEM_ANT0_PB4 SILABS_DBUS_MODEM_ANT0(0x1, 0x4) +#define MODEM_ANT0_PC0 SILABS_DBUS_MODEM_ANT0(0x2, 0x0) +#define MODEM_ANT0_PC1 SILABS_DBUS_MODEM_ANT0(0x2, 0x1) +#define MODEM_ANT0_PC2 SILABS_DBUS_MODEM_ANT0(0x2, 0x2) +#define MODEM_ANT0_PC3 SILABS_DBUS_MODEM_ANT0(0x2, 0x3) +#define MODEM_ANT0_PC4 SILABS_DBUS_MODEM_ANT0(0x2, 0x4) +#define MODEM_ANT0_PC5 SILABS_DBUS_MODEM_ANT0(0x2, 0x5) +#define MODEM_ANT0_PC6 SILABS_DBUS_MODEM_ANT0(0x2, 0x6) +#define MODEM_ANT0_PC7 SILABS_DBUS_MODEM_ANT0(0x2, 0x7) +#define MODEM_ANT0_PD0 SILABS_DBUS_MODEM_ANT0(0x3, 0x0) +#define MODEM_ANT0_PD1 SILABS_DBUS_MODEM_ANT0(0x3, 0x1) +#define MODEM_ANT0_PD2 SILABS_DBUS_MODEM_ANT0(0x3, 0x2) +#define MODEM_ANT0_PD3 SILABS_DBUS_MODEM_ANT0(0x3, 0x3) +#define MODEM_ANT1_PA0 SILABS_DBUS_MODEM_ANT1(0x0, 0x0) +#define MODEM_ANT1_PA1 SILABS_DBUS_MODEM_ANT1(0x0, 0x1) +#define MODEM_ANT1_PA2 SILABS_DBUS_MODEM_ANT1(0x0, 0x2) +#define MODEM_ANT1_PA3 SILABS_DBUS_MODEM_ANT1(0x0, 0x3) +#define MODEM_ANT1_PA4 SILABS_DBUS_MODEM_ANT1(0x0, 0x4) +#define MODEM_ANT1_PA5 SILABS_DBUS_MODEM_ANT1(0x0, 0x5) +#define MODEM_ANT1_PA6 SILABS_DBUS_MODEM_ANT1(0x0, 0x6) +#define MODEM_ANT1_PA7 SILABS_DBUS_MODEM_ANT1(0x0, 0x7) +#define MODEM_ANT1_PA8 SILABS_DBUS_MODEM_ANT1(0x0, 0x8) +#define MODEM_ANT1_PB0 SILABS_DBUS_MODEM_ANT1(0x1, 0x0) +#define MODEM_ANT1_PB1 SILABS_DBUS_MODEM_ANT1(0x1, 0x1) +#define MODEM_ANT1_PB2 SILABS_DBUS_MODEM_ANT1(0x1, 0x2) +#define MODEM_ANT1_PB3 SILABS_DBUS_MODEM_ANT1(0x1, 0x3) +#define MODEM_ANT1_PB4 SILABS_DBUS_MODEM_ANT1(0x1, 0x4) +#define MODEM_ANT1_PC0 SILABS_DBUS_MODEM_ANT1(0x2, 0x0) +#define MODEM_ANT1_PC1 SILABS_DBUS_MODEM_ANT1(0x2, 0x1) +#define MODEM_ANT1_PC2 SILABS_DBUS_MODEM_ANT1(0x2, 0x2) +#define MODEM_ANT1_PC3 SILABS_DBUS_MODEM_ANT1(0x2, 0x3) +#define MODEM_ANT1_PC4 SILABS_DBUS_MODEM_ANT1(0x2, 0x4) +#define MODEM_ANT1_PC5 SILABS_DBUS_MODEM_ANT1(0x2, 0x5) +#define MODEM_ANT1_PC6 SILABS_DBUS_MODEM_ANT1(0x2, 0x6) +#define MODEM_ANT1_PC7 SILABS_DBUS_MODEM_ANT1(0x2, 0x7) +#define MODEM_ANT1_PD0 SILABS_DBUS_MODEM_ANT1(0x3, 0x0) +#define MODEM_ANT1_PD1 SILABS_DBUS_MODEM_ANT1(0x3, 0x1) +#define MODEM_ANT1_PD2 SILABS_DBUS_MODEM_ANT1(0x3, 0x2) +#define MODEM_ANT1_PD3 SILABS_DBUS_MODEM_ANT1(0x3, 0x3) +#define MODEM_ANTROLLOVER_PC0 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x0) +#define MODEM_ANTROLLOVER_PC1 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x1) +#define MODEM_ANTROLLOVER_PC2 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x2) +#define MODEM_ANTROLLOVER_PC3 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x3) +#define MODEM_ANTROLLOVER_PC4 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x4) +#define MODEM_ANTROLLOVER_PC5 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x5) +#define MODEM_ANTROLLOVER_PC6 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x6) +#define MODEM_ANTROLLOVER_PC7 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x7) +#define MODEM_ANTROLLOVER_PD0 SILABS_DBUS_MODEM_ANTROLLOVER(0x3, 0x0) +#define MODEM_ANTROLLOVER_PD1 SILABS_DBUS_MODEM_ANTROLLOVER(0x3, 0x1) +#define MODEM_ANTROLLOVER_PD2 SILABS_DBUS_MODEM_ANTROLLOVER(0x3, 0x2) +#define MODEM_ANTROLLOVER_PD3 SILABS_DBUS_MODEM_ANTROLLOVER(0x3, 0x3) +#define MODEM_ANTRR0_PC0 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x0) +#define MODEM_ANTRR0_PC1 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x1) +#define MODEM_ANTRR0_PC2 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x2) +#define MODEM_ANTRR0_PC3 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x3) +#define MODEM_ANTRR0_PC4 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x4) +#define MODEM_ANTRR0_PC5 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x5) +#define MODEM_ANTRR0_PC6 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x6) +#define MODEM_ANTRR0_PC7 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x7) +#define MODEM_ANTRR0_PD0 SILABS_DBUS_MODEM_ANTRR0(0x3, 0x0) +#define MODEM_ANTRR0_PD1 SILABS_DBUS_MODEM_ANTRR0(0x3, 0x1) +#define MODEM_ANTRR0_PD2 SILABS_DBUS_MODEM_ANTRR0(0x3, 0x2) +#define MODEM_ANTRR0_PD3 SILABS_DBUS_MODEM_ANTRR0(0x3, 0x3) +#define MODEM_ANTRR1_PC0 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x0) +#define MODEM_ANTRR1_PC1 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x1) +#define MODEM_ANTRR1_PC2 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x2) +#define MODEM_ANTRR1_PC3 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x3) +#define MODEM_ANTRR1_PC4 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x4) +#define MODEM_ANTRR1_PC5 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x5) +#define MODEM_ANTRR1_PC6 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x6) +#define MODEM_ANTRR1_PC7 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x7) +#define MODEM_ANTRR1_PD0 SILABS_DBUS_MODEM_ANTRR1(0x3, 0x0) +#define MODEM_ANTRR1_PD1 SILABS_DBUS_MODEM_ANTRR1(0x3, 0x1) +#define MODEM_ANTRR1_PD2 SILABS_DBUS_MODEM_ANTRR1(0x3, 0x2) +#define MODEM_ANTRR1_PD3 SILABS_DBUS_MODEM_ANTRR1(0x3, 0x3) +#define MODEM_ANTRR2_PC0 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x0) +#define MODEM_ANTRR2_PC1 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x1) +#define MODEM_ANTRR2_PC2 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x2) +#define MODEM_ANTRR2_PC3 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x3) +#define MODEM_ANTRR2_PC4 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x4) +#define MODEM_ANTRR2_PC5 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x5) +#define MODEM_ANTRR2_PC6 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x6) +#define MODEM_ANTRR2_PC7 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x7) +#define MODEM_ANTRR2_PD0 SILABS_DBUS_MODEM_ANTRR2(0x3, 0x0) +#define MODEM_ANTRR2_PD1 SILABS_DBUS_MODEM_ANTRR2(0x3, 0x1) +#define MODEM_ANTRR2_PD2 SILABS_DBUS_MODEM_ANTRR2(0x3, 0x2) +#define MODEM_ANTRR2_PD3 SILABS_DBUS_MODEM_ANTRR2(0x3, 0x3) +#define MODEM_ANTRR3_PC0 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x0) +#define MODEM_ANTRR3_PC1 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x1) +#define MODEM_ANTRR3_PC2 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x2) +#define MODEM_ANTRR3_PC3 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x3) +#define MODEM_ANTRR3_PC4 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x4) +#define MODEM_ANTRR3_PC5 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x5) +#define MODEM_ANTRR3_PC6 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x6) +#define MODEM_ANTRR3_PC7 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x7) +#define MODEM_ANTRR3_PD0 SILABS_DBUS_MODEM_ANTRR3(0x3, 0x0) +#define MODEM_ANTRR3_PD1 SILABS_DBUS_MODEM_ANTRR3(0x3, 0x1) +#define MODEM_ANTRR3_PD2 SILABS_DBUS_MODEM_ANTRR3(0x3, 0x2) +#define MODEM_ANTRR3_PD3 SILABS_DBUS_MODEM_ANTRR3(0x3, 0x3) +#define MODEM_ANTRR4_PC0 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x0) +#define MODEM_ANTRR4_PC1 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x1) +#define MODEM_ANTRR4_PC2 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x2) +#define MODEM_ANTRR4_PC3 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x3) +#define MODEM_ANTRR4_PC4 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x4) +#define MODEM_ANTRR4_PC5 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x5) +#define MODEM_ANTRR4_PC6 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x6) +#define MODEM_ANTRR4_PC7 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x7) +#define MODEM_ANTRR4_PD0 SILABS_DBUS_MODEM_ANTRR4(0x3, 0x0) +#define MODEM_ANTRR4_PD1 SILABS_DBUS_MODEM_ANTRR4(0x3, 0x1) +#define MODEM_ANTRR4_PD2 SILABS_DBUS_MODEM_ANTRR4(0x3, 0x2) +#define MODEM_ANTRR4_PD3 SILABS_DBUS_MODEM_ANTRR4(0x3, 0x3) +#define MODEM_ANTRR5_PC0 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x0) +#define MODEM_ANTRR5_PC1 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x1) +#define MODEM_ANTRR5_PC2 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x2) +#define MODEM_ANTRR5_PC3 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x3) +#define MODEM_ANTRR5_PC4 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x4) +#define MODEM_ANTRR5_PC5 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x5) +#define MODEM_ANTRR5_PC6 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x6) +#define MODEM_ANTRR5_PC7 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x7) +#define MODEM_ANTRR5_PD0 SILABS_DBUS_MODEM_ANTRR5(0x3, 0x0) +#define MODEM_ANTRR5_PD1 SILABS_DBUS_MODEM_ANTRR5(0x3, 0x1) +#define MODEM_ANTRR5_PD2 SILABS_DBUS_MODEM_ANTRR5(0x3, 0x2) +#define MODEM_ANTRR5_PD3 SILABS_DBUS_MODEM_ANTRR5(0x3, 0x3) +#define MODEM_ANTSWEN_PC0 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x0) +#define MODEM_ANTSWEN_PC1 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x1) +#define MODEM_ANTSWEN_PC2 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x2) +#define MODEM_ANTSWEN_PC3 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x3) +#define MODEM_ANTSWEN_PC4 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x4) +#define MODEM_ANTSWEN_PC5 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x5) +#define MODEM_ANTSWEN_PC6 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x6) +#define MODEM_ANTSWEN_PC7 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x7) +#define MODEM_ANTSWEN_PD0 SILABS_DBUS_MODEM_ANTSWEN(0x3, 0x0) +#define MODEM_ANTSWEN_PD1 SILABS_DBUS_MODEM_ANTSWEN(0x3, 0x1) +#define MODEM_ANTSWEN_PD2 SILABS_DBUS_MODEM_ANTSWEN(0x3, 0x2) +#define MODEM_ANTSWEN_PD3 SILABS_DBUS_MODEM_ANTSWEN(0x3, 0x3) +#define MODEM_ANTSWUS_PC0 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x0) +#define MODEM_ANTSWUS_PC1 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x1) +#define MODEM_ANTSWUS_PC2 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x2) +#define MODEM_ANTSWUS_PC3 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x3) +#define MODEM_ANTSWUS_PC4 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x4) +#define MODEM_ANTSWUS_PC5 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x5) +#define MODEM_ANTSWUS_PC6 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x6) +#define MODEM_ANTSWUS_PC7 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x7) +#define MODEM_ANTSWUS_PD0 SILABS_DBUS_MODEM_ANTSWUS(0x3, 0x0) +#define MODEM_ANTSWUS_PD1 SILABS_DBUS_MODEM_ANTSWUS(0x3, 0x1) +#define MODEM_ANTSWUS_PD2 SILABS_DBUS_MODEM_ANTSWUS(0x3, 0x2) +#define MODEM_ANTSWUS_PD3 SILABS_DBUS_MODEM_ANTSWUS(0x3, 0x3) +#define MODEM_ANTTRIG_PC0 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x0) +#define MODEM_ANTTRIG_PC1 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x1) +#define MODEM_ANTTRIG_PC2 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x2) +#define MODEM_ANTTRIG_PC3 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x3) +#define MODEM_ANTTRIG_PC4 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x4) +#define MODEM_ANTTRIG_PC5 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x5) +#define MODEM_ANTTRIG_PC6 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x6) +#define MODEM_ANTTRIG_PC7 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x7) +#define MODEM_ANTTRIG_PD0 SILABS_DBUS_MODEM_ANTTRIG(0x3, 0x0) +#define MODEM_ANTTRIG_PD1 SILABS_DBUS_MODEM_ANTTRIG(0x3, 0x1) +#define MODEM_ANTTRIG_PD2 SILABS_DBUS_MODEM_ANTTRIG(0x3, 0x2) +#define MODEM_ANTTRIG_PD3 SILABS_DBUS_MODEM_ANTTRIG(0x3, 0x3) +#define MODEM_ANTTRIGSTOP_PC0 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x0) +#define MODEM_ANTTRIGSTOP_PC1 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x1) +#define MODEM_ANTTRIGSTOP_PC2 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x2) +#define MODEM_ANTTRIGSTOP_PC3 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x3) +#define MODEM_ANTTRIGSTOP_PC4 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x4) +#define MODEM_ANTTRIGSTOP_PC5 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x5) +#define MODEM_ANTTRIGSTOP_PC6 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x6) +#define MODEM_ANTTRIGSTOP_PC7 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x7) +#define MODEM_ANTTRIGSTOP_PD0 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x3, 0x0) +#define MODEM_ANTTRIGSTOP_PD1 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x3, 0x1) +#define MODEM_ANTTRIGSTOP_PD2 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x3, 0x2) +#define MODEM_ANTTRIGSTOP_PD3 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x3, 0x3) +#define MODEM_DCLK_PA0 SILABS_DBUS_MODEM_DCLK(0x0, 0x0) +#define MODEM_DCLK_PA1 SILABS_DBUS_MODEM_DCLK(0x0, 0x1) +#define MODEM_DCLK_PA2 SILABS_DBUS_MODEM_DCLK(0x0, 0x2) +#define MODEM_DCLK_PA3 SILABS_DBUS_MODEM_DCLK(0x0, 0x3) +#define MODEM_DCLK_PA4 SILABS_DBUS_MODEM_DCLK(0x0, 0x4) +#define MODEM_DCLK_PA5 SILABS_DBUS_MODEM_DCLK(0x0, 0x5) +#define MODEM_DCLK_PA6 SILABS_DBUS_MODEM_DCLK(0x0, 0x6) +#define MODEM_DCLK_PA7 SILABS_DBUS_MODEM_DCLK(0x0, 0x7) +#define MODEM_DCLK_PA8 SILABS_DBUS_MODEM_DCLK(0x0, 0x8) +#define MODEM_DCLK_PB0 SILABS_DBUS_MODEM_DCLK(0x1, 0x0) +#define MODEM_DCLK_PB1 SILABS_DBUS_MODEM_DCLK(0x1, 0x1) +#define MODEM_DCLK_PB2 SILABS_DBUS_MODEM_DCLK(0x1, 0x2) +#define MODEM_DCLK_PB3 SILABS_DBUS_MODEM_DCLK(0x1, 0x3) +#define MODEM_DCLK_PB4 SILABS_DBUS_MODEM_DCLK(0x1, 0x4) +#define MODEM_DOUT_PA0 SILABS_DBUS_MODEM_DOUT(0x0, 0x0) +#define MODEM_DOUT_PA1 SILABS_DBUS_MODEM_DOUT(0x0, 0x1) +#define MODEM_DOUT_PA2 SILABS_DBUS_MODEM_DOUT(0x0, 0x2) +#define MODEM_DOUT_PA3 SILABS_DBUS_MODEM_DOUT(0x0, 0x3) +#define MODEM_DOUT_PA4 SILABS_DBUS_MODEM_DOUT(0x0, 0x4) +#define MODEM_DOUT_PA5 SILABS_DBUS_MODEM_DOUT(0x0, 0x5) +#define MODEM_DOUT_PA6 SILABS_DBUS_MODEM_DOUT(0x0, 0x6) +#define MODEM_DOUT_PA7 SILABS_DBUS_MODEM_DOUT(0x0, 0x7) +#define MODEM_DOUT_PA8 SILABS_DBUS_MODEM_DOUT(0x0, 0x8) +#define MODEM_DOUT_PB0 SILABS_DBUS_MODEM_DOUT(0x1, 0x0) +#define MODEM_DOUT_PB1 SILABS_DBUS_MODEM_DOUT(0x1, 0x1) +#define MODEM_DOUT_PB2 SILABS_DBUS_MODEM_DOUT(0x1, 0x2) +#define MODEM_DOUT_PB3 SILABS_DBUS_MODEM_DOUT(0x1, 0x3) +#define MODEM_DOUT_PB4 SILABS_DBUS_MODEM_DOUT(0x1, 0x4) +#define MODEM_DIN_PA0 SILABS_DBUS_MODEM_DIN(0x0, 0x0) +#define MODEM_DIN_PA1 SILABS_DBUS_MODEM_DIN(0x0, 0x1) +#define MODEM_DIN_PA2 SILABS_DBUS_MODEM_DIN(0x0, 0x2) +#define MODEM_DIN_PA3 SILABS_DBUS_MODEM_DIN(0x0, 0x3) +#define MODEM_DIN_PA4 SILABS_DBUS_MODEM_DIN(0x0, 0x4) +#define MODEM_DIN_PA5 SILABS_DBUS_MODEM_DIN(0x0, 0x5) +#define MODEM_DIN_PA6 SILABS_DBUS_MODEM_DIN(0x0, 0x6) +#define MODEM_DIN_PA7 SILABS_DBUS_MODEM_DIN(0x0, 0x7) +#define MODEM_DIN_PA8 SILABS_DBUS_MODEM_DIN(0x0, 0x8) +#define MODEM_DIN_PB0 SILABS_DBUS_MODEM_DIN(0x1, 0x0) +#define MODEM_DIN_PB1 SILABS_DBUS_MODEM_DIN(0x1, 0x1) +#define MODEM_DIN_PB2 SILABS_DBUS_MODEM_DIN(0x1, 0x2) +#define MODEM_DIN_PB3 SILABS_DBUS_MODEM_DIN(0x1, 0x3) +#define MODEM_DIN_PB4 SILABS_DBUS_MODEM_DIN(0x1, 0x4) + +#define PDM_CLK_PA0 SILABS_DBUS_PDM_CLK(0x0, 0x0) +#define PDM_CLK_PA1 SILABS_DBUS_PDM_CLK(0x0, 0x1) +#define PDM_CLK_PA2 SILABS_DBUS_PDM_CLK(0x0, 0x2) +#define PDM_CLK_PA3 SILABS_DBUS_PDM_CLK(0x0, 0x3) +#define PDM_CLK_PA4 SILABS_DBUS_PDM_CLK(0x0, 0x4) +#define PDM_CLK_PA5 SILABS_DBUS_PDM_CLK(0x0, 0x5) +#define PDM_CLK_PA6 SILABS_DBUS_PDM_CLK(0x0, 0x6) +#define PDM_CLK_PA7 SILABS_DBUS_PDM_CLK(0x0, 0x7) +#define PDM_CLK_PA8 SILABS_DBUS_PDM_CLK(0x0, 0x8) +#define PDM_CLK_PB0 SILABS_DBUS_PDM_CLK(0x1, 0x0) +#define PDM_CLK_PB1 SILABS_DBUS_PDM_CLK(0x1, 0x1) +#define PDM_CLK_PB2 SILABS_DBUS_PDM_CLK(0x1, 0x2) +#define PDM_CLK_PB3 SILABS_DBUS_PDM_CLK(0x1, 0x3) +#define PDM_CLK_PB4 SILABS_DBUS_PDM_CLK(0x1, 0x4) +#define PDM_CLK_PC0 SILABS_DBUS_PDM_CLK(0x2, 0x0) +#define PDM_CLK_PC1 SILABS_DBUS_PDM_CLK(0x2, 0x1) +#define PDM_CLK_PC2 SILABS_DBUS_PDM_CLK(0x2, 0x2) +#define PDM_CLK_PC3 SILABS_DBUS_PDM_CLK(0x2, 0x3) +#define PDM_CLK_PC4 SILABS_DBUS_PDM_CLK(0x2, 0x4) +#define PDM_CLK_PC5 SILABS_DBUS_PDM_CLK(0x2, 0x5) +#define PDM_CLK_PC6 SILABS_DBUS_PDM_CLK(0x2, 0x6) +#define PDM_CLK_PC7 SILABS_DBUS_PDM_CLK(0x2, 0x7) +#define PDM_CLK_PD0 SILABS_DBUS_PDM_CLK(0x3, 0x0) +#define PDM_CLK_PD1 SILABS_DBUS_PDM_CLK(0x3, 0x1) +#define PDM_CLK_PD2 SILABS_DBUS_PDM_CLK(0x3, 0x2) +#define PDM_CLK_PD3 SILABS_DBUS_PDM_CLK(0x3, 0x3) +#define PDM_DAT0_PA0 SILABS_DBUS_PDM_DAT0(0x0, 0x0) +#define PDM_DAT0_PA1 SILABS_DBUS_PDM_DAT0(0x0, 0x1) +#define PDM_DAT0_PA2 SILABS_DBUS_PDM_DAT0(0x0, 0x2) +#define PDM_DAT0_PA3 SILABS_DBUS_PDM_DAT0(0x0, 0x3) +#define PDM_DAT0_PA4 SILABS_DBUS_PDM_DAT0(0x0, 0x4) +#define PDM_DAT0_PA5 SILABS_DBUS_PDM_DAT0(0x0, 0x5) +#define PDM_DAT0_PA6 SILABS_DBUS_PDM_DAT0(0x0, 0x6) +#define PDM_DAT0_PA7 SILABS_DBUS_PDM_DAT0(0x0, 0x7) +#define PDM_DAT0_PA8 SILABS_DBUS_PDM_DAT0(0x0, 0x8) +#define PDM_DAT0_PB0 SILABS_DBUS_PDM_DAT0(0x1, 0x0) +#define PDM_DAT0_PB1 SILABS_DBUS_PDM_DAT0(0x1, 0x1) +#define PDM_DAT0_PB2 SILABS_DBUS_PDM_DAT0(0x1, 0x2) +#define PDM_DAT0_PB3 SILABS_DBUS_PDM_DAT0(0x1, 0x3) +#define PDM_DAT0_PB4 SILABS_DBUS_PDM_DAT0(0x1, 0x4) +#define PDM_DAT0_PC0 SILABS_DBUS_PDM_DAT0(0x2, 0x0) +#define PDM_DAT0_PC1 SILABS_DBUS_PDM_DAT0(0x2, 0x1) +#define PDM_DAT0_PC2 SILABS_DBUS_PDM_DAT0(0x2, 0x2) +#define PDM_DAT0_PC3 SILABS_DBUS_PDM_DAT0(0x2, 0x3) +#define PDM_DAT0_PC4 SILABS_DBUS_PDM_DAT0(0x2, 0x4) +#define PDM_DAT0_PC5 SILABS_DBUS_PDM_DAT0(0x2, 0x5) +#define PDM_DAT0_PC6 SILABS_DBUS_PDM_DAT0(0x2, 0x6) +#define PDM_DAT0_PC7 SILABS_DBUS_PDM_DAT0(0x2, 0x7) +#define PDM_DAT0_PD0 SILABS_DBUS_PDM_DAT0(0x3, 0x0) +#define PDM_DAT0_PD1 SILABS_DBUS_PDM_DAT0(0x3, 0x1) +#define PDM_DAT0_PD2 SILABS_DBUS_PDM_DAT0(0x3, 0x2) +#define PDM_DAT0_PD3 SILABS_DBUS_PDM_DAT0(0x3, 0x3) +#define PDM_DAT1_PA0 SILABS_DBUS_PDM_DAT1(0x0, 0x0) +#define PDM_DAT1_PA1 SILABS_DBUS_PDM_DAT1(0x0, 0x1) +#define PDM_DAT1_PA2 SILABS_DBUS_PDM_DAT1(0x0, 0x2) +#define PDM_DAT1_PA3 SILABS_DBUS_PDM_DAT1(0x0, 0x3) +#define PDM_DAT1_PA4 SILABS_DBUS_PDM_DAT1(0x0, 0x4) +#define PDM_DAT1_PA5 SILABS_DBUS_PDM_DAT1(0x0, 0x5) +#define PDM_DAT1_PA6 SILABS_DBUS_PDM_DAT1(0x0, 0x6) +#define PDM_DAT1_PA7 SILABS_DBUS_PDM_DAT1(0x0, 0x7) +#define PDM_DAT1_PA8 SILABS_DBUS_PDM_DAT1(0x0, 0x8) +#define PDM_DAT1_PB0 SILABS_DBUS_PDM_DAT1(0x1, 0x0) +#define PDM_DAT1_PB1 SILABS_DBUS_PDM_DAT1(0x1, 0x1) +#define PDM_DAT1_PB2 SILABS_DBUS_PDM_DAT1(0x1, 0x2) +#define PDM_DAT1_PB3 SILABS_DBUS_PDM_DAT1(0x1, 0x3) +#define PDM_DAT1_PB4 SILABS_DBUS_PDM_DAT1(0x1, 0x4) +#define PDM_DAT1_PC0 SILABS_DBUS_PDM_DAT1(0x2, 0x0) +#define PDM_DAT1_PC1 SILABS_DBUS_PDM_DAT1(0x2, 0x1) +#define PDM_DAT1_PC2 SILABS_DBUS_PDM_DAT1(0x2, 0x2) +#define PDM_DAT1_PC3 SILABS_DBUS_PDM_DAT1(0x2, 0x3) +#define PDM_DAT1_PC4 SILABS_DBUS_PDM_DAT1(0x2, 0x4) +#define PDM_DAT1_PC5 SILABS_DBUS_PDM_DAT1(0x2, 0x5) +#define PDM_DAT1_PC6 SILABS_DBUS_PDM_DAT1(0x2, 0x6) +#define PDM_DAT1_PC7 SILABS_DBUS_PDM_DAT1(0x2, 0x7) +#define PDM_DAT1_PD0 SILABS_DBUS_PDM_DAT1(0x3, 0x0) +#define PDM_DAT1_PD1 SILABS_DBUS_PDM_DAT1(0x3, 0x1) +#define PDM_DAT1_PD2 SILABS_DBUS_PDM_DAT1(0x3, 0x2) +#define PDM_DAT1_PD3 SILABS_DBUS_PDM_DAT1(0x3, 0x3) + +#define PRS0_ASYNCH0_PA0 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x0) +#define PRS0_ASYNCH0_PA1 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x1) +#define PRS0_ASYNCH0_PA2 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x2) +#define PRS0_ASYNCH0_PA3 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x3) +#define PRS0_ASYNCH0_PA4 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x4) +#define PRS0_ASYNCH0_PA5 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x5) +#define PRS0_ASYNCH0_PA6 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x6) +#define PRS0_ASYNCH0_PA7 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x7) +#define PRS0_ASYNCH0_PA8 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x8) +#define PRS0_ASYNCH0_PB0 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x0) +#define PRS0_ASYNCH0_PB1 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x1) +#define PRS0_ASYNCH0_PB2 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x2) +#define PRS0_ASYNCH0_PB3 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x3) +#define PRS0_ASYNCH0_PB4 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x4) +#define PRS0_ASYNCH1_PA0 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x0) +#define PRS0_ASYNCH1_PA1 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x1) +#define PRS0_ASYNCH1_PA2 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x2) +#define PRS0_ASYNCH1_PA3 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x3) +#define PRS0_ASYNCH1_PA4 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x4) +#define PRS0_ASYNCH1_PA5 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x5) +#define PRS0_ASYNCH1_PA6 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x6) +#define PRS0_ASYNCH1_PA7 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x7) +#define PRS0_ASYNCH1_PA8 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x8) +#define PRS0_ASYNCH1_PB0 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x0) +#define PRS0_ASYNCH1_PB1 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x1) +#define PRS0_ASYNCH1_PB2 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x2) +#define PRS0_ASYNCH1_PB3 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x3) +#define PRS0_ASYNCH1_PB4 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x4) +#define PRS0_ASYNCH2_PA0 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x0) +#define PRS0_ASYNCH2_PA1 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x1) +#define PRS0_ASYNCH2_PA2 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x2) +#define PRS0_ASYNCH2_PA3 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x3) +#define PRS0_ASYNCH2_PA4 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x4) +#define PRS0_ASYNCH2_PA5 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x5) +#define PRS0_ASYNCH2_PA6 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x6) +#define PRS0_ASYNCH2_PA7 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x7) +#define PRS0_ASYNCH2_PA8 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x8) +#define PRS0_ASYNCH2_PB0 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x0) +#define PRS0_ASYNCH2_PB1 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x1) +#define PRS0_ASYNCH2_PB2 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x2) +#define PRS0_ASYNCH2_PB3 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x3) +#define PRS0_ASYNCH2_PB4 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x4) +#define PRS0_ASYNCH3_PA0 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x0) +#define PRS0_ASYNCH3_PA1 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x1) +#define PRS0_ASYNCH3_PA2 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x2) +#define PRS0_ASYNCH3_PA3 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x3) +#define PRS0_ASYNCH3_PA4 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x4) +#define PRS0_ASYNCH3_PA5 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x5) +#define PRS0_ASYNCH3_PA6 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x6) +#define PRS0_ASYNCH3_PA7 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x7) +#define PRS0_ASYNCH3_PA8 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x8) +#define PRS0_ASYNCH3_PB0 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x0) +#define PRS0_ASYNCH3_PB1 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x1) +#define PRS0_ASYNCH3_PB2 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x2) +#define PRS0_ASYNCH3_PB3 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x3) +#define PRS0_ASYNCH3_PB4 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x4) +#define PRS0_ASYNCH4_PA0 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x0) +#define PRS0_ASYNCH4_PA1 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x1) +#define PRS0_ASYNCH4_PA2 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x2) +#define PRS0_ASYNCH4_PA3 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x3) +#define PRS0_ASYNCH4_PA4 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x4) +#define PRS0_ASYNCH4_PA5 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x5) +#define PRS0_ASYNCH4_PA6 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x6) +#define PRS0_ASYNCH4_PA7 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x7) +#define PRS0_ASYNCH4_PA8 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x8) +#define PRS0_ASYNCH4_PB0 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x0) +#define PRS0_ASYNCH4_PB1 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x1) +#define PRS0_ASYNCH4_PB2 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x2) +#define PRS0_ASYNCH4_PB3 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x3) +#define PRS0_ASYNCH4_PB4 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x4) +#define PRS0_ASYNCH5_PA0 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x0) +#define PRS0_ASYNCH5_PA1 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x1) +#define PRS0_ASYNCH5_PA2 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x2) +#define PRS0_ASYNCH5_PA3 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x3) +#define PRS0_ASYNCH5_PA4 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x4) +#define PRS0_ASYNCH5_PA5 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x5) +#define PRS0_ASYNCH5_PA6 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x6) +#define PRS0_ASYNCH5_PA7 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x7) +#define PRS0_ASYNCH5_PA8 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x8) +#define PRS0_ASYNCH5_PB0 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x0) +#define PRS0_ASYNCH5_PB1 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x1) +#define PRS0_ASYNCH5_PB2 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x2) +#define PRS0_ASYNCH5_PB3 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x3) +#define PRS0_ASYNCH5_PB4 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x4) +#define PRS0_ASYNCH6_PC0 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x0) +#define PRS0_ASYNCH6_PC1 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x1) +#define PRS0_ASYNCH6_PC2 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x2) +#define PRS0_ASYNCH6_PC3 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x3) +#define PRS0_ASYNCH6_PC4 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x4) +#define PRS0_ASYNCH6_PC5 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x5) +#define PRS0_ASYNCH6_PC6 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x6) +#define PRS0_ASYNCH6_PC7 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x7) +#define PRS0_ASYNCH6_PD0 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x0) +#define PRS0_ASYNCH6_PD1 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x1) +#define PRS0_ASYNCH6_PD2 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x2) +#define PRS0_ASYNCH6_PD3 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x3) +#define PRS0_ASYNCH7_PC0 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x0) +#define PRS0_ASYNCH7_PC1 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x1) +#define PRS0_ASYNCH7_PC2 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x2) +#define PRS0_ASYNCH7_PC3 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x3) +#define PRS0_ASYNCH7_PC4 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x4) +#define PRS0_ASYNCH7_PC5 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x5) +#define PRS0_ASYNCH7_PC6 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x6) +#define PRS0_ASYNCH7_PC7 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x7) +#define PRS0_ASYNCH7_PD0 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x0) +#define PRS0_ASYNCH7_PD1 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x1) +#define PRS0_ASYNCH7_PD2 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x2) +#define PRS0_ASYNCH7_PD3 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x3) +#define PRS0_ASYNCH8_PC0 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x0) +#define PRS0_ASYNCH8_PC1 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x1) +#define PRS0_ASYNCH8_PC2 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x2) +#define PRS0_ASYNCH8_PC3 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x3) +#define PRS0_ASYNCH8_PC4 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x4) +#define PRS0_ASYNCH8_PC5 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x5) +#define PRS0_ASYNCH8_PC6 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x6) +#define PRS0_ASYNCH8_PC7 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x7) +#define PRS0_ASYNCH8_PD0 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x0) +#define PRS0_ASYNCH8_PD1 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x1) +#define PRS0_ASYNCH8_PD2 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x2) +#define PRS0_ASYNCH8_PD3 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x3) +#define PRS0_ASYNCH9_PC0 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x0) +#define PRS0_ASYNCH9_PC1 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x1) +#define PRS0_ASYNCH9_PC2 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x2) +#define PRS0_ASYNCH9_PC3 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x3) +#define PRS0_ASYNCH9_PC4 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x4) +#define PRS0_ASYNCH9_PC5 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x5) +#define PRS0_ASYNCH9_PC6 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x6) +#define PRS0_ASYNCH9_PC7 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x7) +#define PRS0_ASYNCH9_PD0 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x0) +#define PRS0_ASYNCH9_PD1 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x1) +#define PRS0_ASYNCH9_PD2 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x2) +#define PRS0_ASYNCH9_PD3 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x3) +#define PRS0_ASYNCH10_PC0 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x0) +#define PRS0_ASYNCH10_PC1 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x1) +#define PRS0_ASYNCH10_PC2 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x2) +#define PRS0_ASYNCH10_PC3 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x3) +#define PRS0_ASYNCH10_PC4 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x4) +#define PRS0_ASYNCH10_PC5 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x5) +#define PRS0_ASYNCH10_PC6 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x6) +#define PRS0_ASYNCH10_PC7 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x7) +#define PRS0_ASYNCH10_PD0 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x0) +#define PRS0_ASYNCH10_PD1 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x1) +#define PRS0_ASYNCH10_PD2 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x2) +#define PRS0_ASYNCH10_PD3 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x3) +#define PRS0_ASYNCH11_PC0 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x0) +#define PRS0_ASYNCH11_PC1 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x1) +#define PRS0_ASYNCH11_PC2 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x2) +#define PRS0_ASYNCH11_PC3 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x3) +#define PRS0_ASYNCH11_PC4 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x4) +#define PRS0_ASYNCH11_PC5 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x5) +#define PRS0_ASYNCH11_PC6 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x6) +#define PRS0_ASYNCH11_PC7 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x7) +#define PRS0_ASYNCH11_PD0 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x0) +#define PRS0_ASYNCH11_PD1 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x1) +#define PRS0_ASYNCH11_PD2 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x2) +#define PRS0_ASYNCH11_PD3 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x3) +#define PRS0_SYNCH0_PA0 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x0) +#define PRS0_SYNCH0_PA1 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x1) +#define PRS0_SYNCH0_PA2 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x2) +#define PRS0_SYNCH0_PA3 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x3) +#define PRS0_SYNCH0_PA4 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x4) +#define PRS0_SYNCH0_PA5 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x5) +#define PRS0_SYNCH0_PA6 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x6) +#define PRS0_SYNCH0_PA7 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x7) +#define PRS0_SYNCH0_PA8 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x8) +#define PRS0_SYNCH0_PB0 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x0) +#define PRS0_SYNCH0_PB1 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x1) +#define PRS0_SYNCH0_PB2 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x2) +#define PRS0_SYNCH0_PB3 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x3) +#define PRS0_SYNCH0_PB4 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x4) +#define PRS0_SYNCH0_PC0 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x0) +#define PRS0_SYNCH0_PC1 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x1) +#define PRS0_SYNCH0_PC2 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x2) +#define PRS0_SYNCH0_PC3 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x3) +#define PRS0_SYNCH0_PC4 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x4) +#define PRS0_SYNCH0_PC5 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x5) +#define PRS0_SYNCH0_PC6 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x6) +#define PRS0_SYNCH0_PC7 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x7) +#define PRS0_SYNCH0_PD0 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x0) +#define PRS0_SYNCH0_PD1 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x1) +#define PRS0_SYNCH0_PD2 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x2) +#define PRS0_SYNCH0_PD3 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x3) +#define PRS0_SYNCH1_PA0 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x0) +#define PRS0_SYNCH1_PA1 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x1) +#define PRS0_SYNCH1_PA2 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x2) +#define PRS0_SYNCH1_PA3 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x3) +#define PRS0_SYNCH1_PA4 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x4) +#define PRS0_SYNCH1_PA5 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x5) +#define PRS0_SYNCH1_PA6 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x6) +#define PRS0_SYNCH1_PA7 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x7) +#define PRS0_SYNCH1_PA8 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x8) +#define PRS0_SYNCH1_PB0 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x0) +#define PRS0_SYNCH1_PB1 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x1) +#define PRS0_SYNCH1_PB2 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x2) +#define PRS0_SYNCH1_PB3 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x3) +#define PRS0_SYNCH1_PB4 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x4) +#define PRS0_SYNCH1_PC0 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x0) +#define PRS0_SYNCH1_PC1 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x1) +#define PRS0_SYNCH1_PC2 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x2) +#define PRS0_SYNCH1_PC3 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x3) +#define PRS0_SYNCH1_PC4 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x4) +#define PRS0_SYNCH1_PC5 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x5) +#define PRS0_SYNCH1_PC6 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x6) +#define PRS0_SYNCH1_PC7 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x7) +#define PRS0_SYNCH1_PD0 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x0) +#define PRS0_SYNCH1_PD1 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x1) +#define PRS0_SYNCH1_PD2 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x2) +#define PRS0_SYNCH1_PD3 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x3) +#define PRS0_SYNCH2_PA0 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x0) +#define PRS0_SYNCH2_PA1 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x1) +#define PRS0_SYNCH2_PA2 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x2) +#define PRS0_SYNCH2_PA3 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x3) +#define PRS0_SYNCH2_PA4 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x4) +#define PRS0_SYNCH2_PA5 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x5) +#define PRS0_SYNCH2_PA6 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x6) +#define PRS0_SYNCH2_PA7 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x7) +#define PRS0_SYNCH2_PA8 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x8) +#define PRS0_SYNCH2_PB0 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x0) +#define PRS0_SYNCH2_PB1 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x1) +#define PRS0_SYNCH2_PB2 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x2) +#define PRS0_SYNCH2_PB3 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x3) +#define PRS0_SYNCH2_PB4 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x4) +#define PRS0_SYNCH2_PC0 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x0) +#define PRS0_SYNCH2_PC1 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x1) +#define PRS0_SYNCH2_PC2 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x2) +#define PRS0_SYNCH2_PC3 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x3) +#define PRS0_SYNCH2_PC4 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x4) +#define PRS0_SYNCH2_PC5 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x5) +#define PRS0_SYNCH2_PC6 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x6) +#define PRS0_SYNCH2_PC7 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x7) +#define PRS0_SYNCH2_PD0 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x0) +#define PRS0_SYNCH2_PD1 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x1) +#define PRS0_SYNCH2_PD2 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x2) +#define PRS0_SYNCH2_PD3 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x3) +#define PRS0_SYNCH3_PA0 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x0) +#define PRS0_SYNCH3_PA1 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x1) +#define PRS0_SYNCH3_PA2 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x2) +#define PRS0_SYNCH3_PA3 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x3) +#define PRS0_SYNCH3_PA4 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x4) +#define PRS0_SYNCH3_PA5 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x5) +#define PRS0_SYNCH3_PA6 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x6) +#define PRS0_SYNCH3_PA7 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x7) +#define PRS0_SYNCH3_PA8 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x8) +#define PRS0_SYNCH3_PB0 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x0) +#define PRS0_SYNCH3_PB1 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x1) +#define PRS0_SYNCH3_PB2 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x2) +#define PRS0_SYNCH3_PB3 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x3) +#define PRS0_SYNCH3_PB4 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x4) +#define PRS0_SYNCH3_PC0 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x0) +#define PRS0_SYNCH3_PC1 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x1) +#define PRS0_SYNCH3_PC2 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x2) +#define PRS0_SYNCH3_PC3 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x3) +#define PRS0_SYNCH3_PC4 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x4) +#define PRS0_SYNCH3_PC5 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x5) +#define PRS0_SYNCH3_PC6 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x6) +#define PRS0_SYNCH3_PC7 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x7) +#define PRS0_SYNCH3_PD0 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x0) +#define PRS0_SYNCH3_PD1 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x1) +#define PRS0_SYNCH3_PD2 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x2) +#define PRS0_SYNCH3_PD3 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x3) + +#define TIMER0_CC0_PA0 SILABS_DBUS_TIMER0_CC0(0x0, 0x0) +#define TIMER0_CC0_PA1 SILABS_DBUS_TIMER0_CC0(0x0, 0x1) +#define TIMER0_CC0_PA2 SILABS_DBUS_TIMER0_CC0(0x0, 0x2) +#define TIMER0_CC0_PA3 SILABS_DBUS_TIMER0_CC0(0x0, 0x3) +#define TIMER0_CC0_PA4 SILABS_DBUS_TIMER0_CC0(0x0, 0x4) +#define TIMER0_CC0_PA5 SILABS_DBUS_TIMER0_CC0(0x0, 0x5) +#define TIMER0_CC0_PA6 SILABS_DBUS_TIMER0_CC0(0x0, 0x6) +#define TIMER0_CC0_PA7 SILABS_DBUS_TIMER0_CC0(0x0, 0x7) +#define TIMER0_CC0_PA8 SILABS_DBUS_TIMER0_CC0(0x0, 0x8) +#define TIMER0_CC0_PB0 SILABS_DBUS_TIMER0_CC0(0x1, 0x0) +#define TIMER0_CC0_PB1 SILABS_DBUS_TIMER0_CC0(0x1, 0x1) +#define TIMER0_CC0_PB2 SILABS_DBUS_TIMER0_CC0(0x1, 0x2) +#define TIMER0_CC0_PB3 SILABS_DBUS_TIMER0_CC0(0x1, 0x3) +#define TIMER0_CC0_PB4 SILABS_DBUS_TIMER0_CC0(0x1, 0x4) +#define TIMER0_CC0_PC0 SILABS_DBUS_TIMER0_CC0(0x2, 0x0) +#define TIMER0_CC0_PC1 SILABS_DBUS_TIMER0_CC0(0x2, 0x1) +#define TIMER0_CC0_PC2 SILABS_DBUS_TIMER0_CC0(0x2, 0x2) +#define TIMER0_CC0_PC3 SILABS_DBUS_TIMER0_CC0(0x2, 0x3) +#define TIMER0_CC0_PC4 SILABS_DBUS_TIMER0_CC0(0x2, 0x4) +#define TIMER0_CC0_PC5 SILABS_DBUS_TIMER0_CC0(0x2, 0x5) +#define TIMER0_CC0_PC6 SILABS_DBUS_TIMER0_CC0(0x2, 0x6) +#define TIMER0_CC0_PC7 SILABS_DBUS_TIMER0_CC0(0x2, 0x7) +#define TIMER0_CC0_PD0 SILABS_DBUS_TIMER0_CC0(0x3, 0x0) +#define TIMER0_CC0_PD1 SILABS_DBUS_TIMER0_CC0(0x3, 0x1) +#define TIMER0_CC0_PD2 SILABS_DBUS_TIMER0_CC0(0x3, 0x2) +#define TIMER0_CC0_PD3 SILABS_DBUS_TIMER0_CC0(0x3, 0x3) +#define TIMER0_CC1_PA0 SILABS_DBUS_TIMER0_CC1(0x0, 0x0) +#define TIMER0_CC1_PA1 SILABS_DBUS_TIMER0_CC1(0x0, 0x1) +#define TIMER0_CC1_PA2 SILABS_DBUS_TIMER0_CC1(0x0, 0x2) +#define TIMER0_CC1_PA3 SILABS_DBUS_TIMER0_CC1(0x0, 0x3) +#define TIMER0_CC1_PA4 SILABS_DBUS_TIMER0_CC1(0x0, 0x4) +#define TIMER0_CC1_PA5 SILABS_DBUS_TIMER0_CC1(0x0, 0x5) +#define TIMER0_CC1_PA6 SILABS_DBUS_TIMER0_CC1(0x0, 0x6) +#define TIMER0_CC1_PA7 SILABS_DBUS_TIMER0_CC1(0x0, 0x7) +#define TIMER0_CC1_PA8 SILABS_DBUS_TIMER0_CC1(0x0, 0x8) +#define TIMER0_CC1_PB0 SILABS_DBUS_TIMER0_CC1(0x1, 0x0) +#define TIMER0_CC1_PB1 SILABS_DBUS_TIMER0_CC1(0x1, 0x1) +#define TIMER0_CC1_PB2 SILABS_DBUS_TIMER0_CC1(0x1, 0x2) +#define TIMER0_CC1_PB3 SILABS_DBUS_TIMER0_CC1(0x1, 0x3) +#define TIMER0_CC1_PB4 SILABS_DBUS_TIMER0_CC1(0x1, 0x4) +#define TIMER0_CC1_PC0 SILABS_DBUS_TIMER0_CC1(0x2, 0x0) +#define TIMER0_CC1_PC1 SILABS_DBUS_TIMER0_CC1(0x2, 0x1) +#define TIMER0_CC1_PC2 SILABS_DBUS_TIMER0_CC1(0x2, 0x2) +#define TIMER0_CC1_PC3 SILABS_DBUS_TIMER0_CC1(0x2, 0x3) +#define TIMER0_CC1_PC4 SILABS_DBUS_TIMER0_CC1(0x2, 0x4) +#define TIMER0_CC1_PC5 SILABS_DBUS_TIMER0_CC1(0x2, 0x5) +#define TIMER0_CC1_PC6 SILABS_DBUS_TIMER0_CC1(0x2, 0x6) +#define TIMER0_CC1_PC7 SILABS_DBUS_TIMER0_CC1(0x2, 0x7) +#define TIMER0_CC1_PD0 SILABS_DBUS_TIMER0_CC1(0x3, 0x0) +#define TIMER0_CC1_PD1 SILABS_DBUS_TIMER0_CC1(0x3, 0x1) +#define TIMER0_CC1_PD2 SILABS_DBUS_TIMER0_CC1(0x3, 0x2) +#define TIMER0_CC1_PD3 SILABS_DBUS_TIMER0_CC1(0x3, 0x3) +#define TIMER0_CC2_PA0 SILABS_DBUS_TIMER0_CC2(0x0, 0x0) +#define TIMER0_CC2_PA1 SILABS_DBUS_TIMER0_CC2(0x0, 0x1) +#define TIMER0_CC2_PA2 SILABS_DBUS_TIMER0_CC2(0x0, 0x2) +#define TIMER0_CC2_PA3 SILABS_DBUS_TIMER0_CC2(0x0, 0x3) +#define TIMER0_CC2_PA4 SILABS_DBUS_TIMER0_CC2(0x0, 0x4) +#define TIMER0_CC2_PA5 SILABS_DBUS_TIMER0_CC2(0x0, 0x5) +#define TIMER0_CC2_PA6 SILABS_DBUS_TIMER0_CC2(0x0, 0x6) +#define TIMER0_CC2_PA7 SILABS_DBUS_TIMER0_CC2(0x0, 0x7) +#define TIMER0_CC2_PA8 SILABS_DBUS_TIMER0_CC2(0x0, 0x8) +#define TIMER0_CC2_PB0 SILABS_DBUS_TIMER0_CC2(0x1, 0x0) +#define TIMER0_CC2_PB1 SILABS_DBUS_TIMER0_CC2(0x1, 0x1) +#define TIMER0_CC2_PB2 SILABS_DBUS_TIMER0_CC2(0x1, 0x2) +#define TIMER0_CC2_PB3 SILABS_DBUS_TIMER0_CC2(0x1, 0x3) +#define TIMER0_CC2_PB4 SILABS_DBUS_TIMER0_CC2(0x1, 0x4) +#define TIMER0_CC2_PC0 SILABS_DBUS_TIMER0_CC2(0x2, 0x0) +#define TIMER0_CC2_PC1 SILABS_DBUS_TIMER0_CC2(0x2, 0x1) +#define TIMER0_CC2_PC2 SILABS_DBUS_TIMER0_CC2(0x2, 0x2) +#define TIMER0_CC2_PC3 SILABS_DBUS_TIMER0_CC2(0x2, 0x3) +#define TIMER0_CC2_PC4 SILABS_DBUS_TIMER0_CC2(0x2, 0x4) +#define TIMER0_CC2_PC5 SILABS_DBUS_TIMER0_CC2(0x2, 0x5) +#define TIMER0_CC2_PC6 SILABS_DBUS_TIMER0_CC2(0x2, 0x6) +#define TIMER0_CC2_PC7 SILABS_DBUS_TIMER0_CC2(0x2, 0x7) +#define TIMER0_CC2_PD0 SILABS_DBUS_TIMER0_CC2(0x3, 0x0) +#define TIMER0_CC2_PD1 SILABS_DBUS_TIMER0_CC2(0x3, 0x1) +#define TIMER0_CC2_PD2 SILABS_DBUS_TIMER0_CC2(0x3, 0x2) +#define TIMER0_CC2_PD3 SILABS_DBUS_TIMER0_CC2(0x3, 0x3) +#define TIMER0_CDTI0_PA0 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x0) +#define TIMER0_CDTI0_PA1 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x1) +#define TIMER0_CDTI0_PA2 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x2) +#define TIMER0_CDTI0_PA3 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x3) +#define TIMER0_CDTI0_PA4 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x4) +#define TIMER0_CDTI0_PA5 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x5) +#define TIMER0_CDTI0_PA6 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x6) +#define TIMER0_CDTI0_PA7 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x7) +#define TIMER0_CDTI0_PA8 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x8) +#define TIMER0_CDTI0_PB0 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x0) +#define TIMER0_CDTI0_PB1 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x1) +#define TIMER0_CDTI0_PB2 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x2) +#define TIMER0_CDTI0_PB3 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x3) +#define TIMER0_CDTI0_PB4 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x4) +#define TIMER0_CDTI0_PC0 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x0) +#define TIMER0_CDTI0_PC1 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x1) +#define TIMER0_CDTI0_PC2 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x2) +#define TIMER0_CDTI0_PC3 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x3) +#define TIMER0_CDTI0_PC4 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x4) +#define TIMER0_CDTI0_PC5 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x5) +#define TIMER0_CDTI0_PC6 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x6) +#define TIMER0_CDTI0_PC7 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x7) +#define TIMER0_CDTI0_PD0 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x0) +#define TIMER0_CDTI0_PD1 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x1) +#define TIMER0_CDTI0_PD2 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x2) +#define TIMER0_CDTI0_PD3 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x3) +#define TIMER0_CDTI1_PA0 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x0) +#define TIMER0_CDTI1_PA1 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x1) +#define TIMER0_CDTI1_PA2 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x2) +#define TIMER0_CDTI1_PA3 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x3) +#define TIMER0_CDTI1_PA4 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x4) +#define TIMER0_CDTI1_PA5 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x5) +#define TIMER0_CDTI1_PA6 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x6) +#define TIMER0_CDTI1_PA7 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x7) +#define TIMER0_CDTI1_PA8 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x8) +#define TIMER0_CDTI1_PB0 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x0) +#define TIMER0_CDTI1_PB1 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x1) +#define TIMER0_CDTI1_PB2 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x2) +#define TIMER0_CDTI1_PB3 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x3) +#define TIMER0_CDTI1_PB4 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x4) +#define TIMER0_CDTI1_PC0 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x0) +#define TIMER0_CDTI1_PC1 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x1) +#define TIMER0_CDTI1_PC2 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x2) +#define TIMER0_CDTI1_PC3 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x3) +#define TIMER0_CDTI1_PC4 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x4) +#define TIMER0_CDTI1_PC5 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x5) +#define TIMER0_CDTI1_PC6 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x6) +#define TIMER0_CDTI1_PC7 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x7) +#define TIMER0_CDTI1_PD0 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x0) +#define TIMER0_CDTI1_PD1 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x1) +#define TIMER0_CDTI1_PD2 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x2) +#define TIMER0_CDTI1_PD3 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x3) +#define TIMER0_CDTI2_PA0 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x0) +#define TIMER0_CDTI2_PA1 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x1) +#define TIMER0_CDTI2_PA2 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x2) +#define TIMER0_CDTI2_PA3 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x3) +#define TIMER0_CDTI2_PA4 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x4) +#define TIMER0_CDTI2_PA5 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x5) +#define TIMER0_CDTI2_PA6 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x6) +#define TIMER0_CDTI2_PA7 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x7) +#define TIMER0_CDTI2_PA8 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x8) +#define TIMER0_CDTI2_PB0 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x0) +#define TIMER0_CDTI2_PB1 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x1) +#define TIMER0_CDTI2_PB2 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x2) +#define TIMER0_CDTI2_PB3 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x3) +#define TIMER0_CDTI2_PB4 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x4) +#define TIMER0_CDTI2_PC0 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x0) +#define TIMER0_CDTI2_PC1 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x1) +#define TIMER0_CDTI2_PC2 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x2) +#define TIMER0_CDTI2_PC3 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x3) +#define TIMER0_CDTI2_PC4 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x4) +#define TIMER0_CDTI2_PC5 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x5) +#define TIMER0_CDTI2_PC6 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x6) +#define TIMER0_CDTI2_PC7 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x7) +#define TIMER0_CDTI2_PD0 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x0) +#define TIMER0_CDTI2_PD1 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x1) +#define TIMER0_CDTI2_PD2 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x2) +#define TIMER0_CDTI2_PD3 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x3) + +#define TIMER1_CC0_PA0 SILABS_DBUS_TIMER1_CC0(0x0, 0x0) +#define TIMER1_CC0_PA1 SILABS_DBUS_TIMER1_CC0(0x0, 0x1) +#define TIMER1_CC0_PA2 SILABS_DBUS_TIMER1_CC0(0x0, 0x2) +#define TIMER1_CC0_PA3 SILABS_DBUS_TIMER1_CC0(0x0, 0x3) +#define TIMER1_CC0_PA4 SILABS_DBUS_TIMER1_CC0(0x0, 0x4) +#define TIMER1_CC0_PA5 SILABS_DBUS_TIMER1_CC0(0x0, 0x5) +#define TIMER1_CC0_PA6 SILABS_DBUS_TIMER1_CC0(0x0, 0x6) +#define TIMER1_CC0_PA7 SILABS_DBUS_TIMER1_CC0(0x0, 0x7) +#define TIMER1_CC0_PA8 SILABS_DBUS_TIMER1_CC0(0x0, 0x8) +#define TIMER1_CC0_PB0 SILABS_DBUS_TIMER1_CC0(0x1, 0x0) +#define TIMER1_CC0_PB1 SILABS_DBUS_TIMER1_CC0(0x1, 0x1) +#define TIMER1_CC0_PB2 SILABS_DBUS_TIMER1_CC0(0x1, 0x2) +#define TIMER1_CC0_PB3 SILABS_DBUS_TIMER1_CC0(0x1, 0x3) +#define TIMER1_CC0_PB4 SILABS_DBUS_TIMER1_CC0(0x1, 0x4) +#define TIMER1_CC0_PC0 SILABS_DBUS_TIMER1_CC0(0x2, 0x0) +#define TIMER1_CC0_PC1 SILABS_DBUS_TIMER1_CC0(0x2, 0x1) +#define TIMER1_CC0_PC2 SILABS_DBUS_TIMER1_CC0(0x2, 0x2) +#define TIMER1_CC0_PC3 SILABS_DBUS_TIMER1_CC0(0x2, 0x3) +#define TIMER1_CC0_PC4 SILABS_DBUS_TIMER1_CC0(0x2, 0x4) +#define TIMER1_CC0_PC5 SILABS_DBUS_TIMER1_CC0(0x2, 0x5) +#define TIMER1_CC0_PC6 SILABS_DBUS_TIMER1_CC0(0x2, 0x6) +#define TIMER1_CC0_PC7 SILABS_DBUS_TIMER1_CC0(0x2, 0x7) +#define TIMER1_CC0_PD0 SILABS_DBUS_TIMER1_CC0(0x3, 0x0) +#define TIMER1_CC0_PD1 SILABS_DBUS_TIMER1_CC0(0x3, 0x1) +#define TIMER1_CC0_PD2 SILABS_DBUS_TIMER1_CC0(0x3, 0x2) +#define TIMER1_CC0_PD3 SILABS_DBUS_TIMER1_CC0(0x3, 0x3) +#define TIMER1_CC1_PA0 SILABS_DBUS_TIMER1_CC1(0x0, 0x0) +#define TIMER1_CC1_PA1 SILABS_DBUS_TIMER1_CC1(0x0, 0x1) +#define TIMER1_CC1_PA2 SILABS_DBUS_TIMER1_CC1(0x0, 0x2) +#define TIMER1_CC1_PA3 SILABS_DBUS_TIMER1_CC1(0x0, 0x3) +#define TIMER1_CC1_PA4 SILABS_DBUS_TIMER1_CC1(0x0, 0x4) +#define TIMER1_CC1_PA5 SILABS_DBUS_TIMER1_CC1(0x0, 0x5) +#define TIMER1_CC1_PA6 SILABS_DBUS_TIMER1_CC1(0x0, 0x6) +#define TIMER1_CC1_PA7 SILABS_DBUS_TIMER1_CC1(0x0, 0x7) +#define TIMER1_CC1_PA8 SILABS_DBUS_TIMER1_CC1(0x0, 0x8) +#define TIMER1_CC1_PB0 SILABS_DBUS_TIMER1_CC1(0x1, 0x0) +#define TIMER1_CC1_PB1 SILABS_DBUS_TIMER1_CC1(0x1, 0x1) +#define TIMER1_CC1_PB2 SILABS_DBUS_TIMER1_CC1(0x1, 0x2) +#define TIMER1_CC1_PB3 SILABS_DBUS_TIMER1_CC1(0x1, 0x3) +#define TIMER1_CC1_PB4 SILABS_DBUS_TIMER1_CC1(0x1, 0x4) +#define TIMER1_CC1_PC0 SILABS_DBUS_TIMER1_CC1(0x2, 0x0) +#define TIMER1_CC1_PC1 SILABS_DBUS_TIMER1_CC1(0x2, 0x1) +#define TIMER1_CC1_PC2 SILABS_DBUS_TIMER1_CC1(0x2, 0x2) +#define TIMER1_CC1_PC3 SILABS_DBUS_TIMER1_CC1(0x2, 0x3) +#define TIMER1_CC1_PC4 SILABS_DBUS_TIMER1_CC1(0x2, 0x4) +#define TIMER1_CC1_PC5 SILABS_DBUS_TIMER1_CC1(0x2, 0x5) +#define TIMER1_CC1_PC6 SILABS_DBUS_TIMER1_CC1(0x2, 0x6) +#define TIMER1_CC1_PC7 SILABS_DBUS_TIMER1_CC1(0x2, 0x7) +#define TIMER1_CC1_PD0 SILABS_DBUS_TIMER1_CC1(0x3, 0x0) +#define TIMER1_CC1_PD1 SILABS_DBUS_TIMER1_CC1(0x3, 0x1) +#define TIMER1_CC1_PD2 SILABS_DBUS_TIMER1_CC1(0x3, 0x2) +#define TIMER1_CC1_PD3 SILABS_DBUS_TIMER1_CC1(0x3, 0x3) +#define TIMER1_CC2_PA0 SILABS_DBUS_TIMER1_CC2(0x0, 0x0) +#define TIMER1_CC2_PA1 SILABS_DBUS_TIMER1_CC2(0x0, 0x1) +#define TIMER1_CC2_PA2 SILABS_DBUS_TIMER1_CC2(0x0, 0x2) +#define TIMER1_CC2_PA3 SILABS_DBUS_TIMER1_CC2(0x0, 0x3) +#define TIMER1_CC2_PA4 SILABS_DBUS_TIMER1_CC2(0x0, 0x4) +#define TIMER1_CC2_PA5 SILABS_DBUS_TIMER1_CC2(0x0, 0x5) +#define TIMER1_CC2_PA6 SILABS_DBUS_TIMER1_CC2(0x0, 0x6) +#define TIMER1_CC2_PA7 SILABS_DBUS_TIMER1_CC2(0x0, 0x7) +#define TIMER1_CC2_PA8 SILABS_DBUS_TIMER1_CC2(0x0, 0x8) +#define TIMER1_CC2_PB0 SILABS_DBUS_TIMER1_CC2(0x1, 0x0) +#define TIMER1_CC2_PB1 SILABS_DBUS_TIMER1_CC2(0x1, 0x1) +#define TIMER1_CC2_PB2 SILABS_DBUS_TIMER1_CC2(0x1, 0x2) +#define TIMER1_CC2_PB3 SILABS_DBUS_TIMER1_CC2(0x1, 0x3) +#define TIMER1_CC2_PB4 SILABS_DBUS_TIMER1_CC2(0x1, 0x4) +#define TIMER1_CC2_PC0 SILABS_DBUS_TIMER1_CC2(0x2, 0x0) +#define TIMER1_CC2_PC1 SILABS_DBUS_TIMER1_CC2(0x2, 0x1) +#define TIMER1_CC2_PC2 SILABS_DBUS_TIMER1_CC2(0x2, 0x2) +#define TIMER1_CC2_PC3 SILABS_DBUS_TIMER1_CC2(0x2, 0x3) +#define TIMER1_CC2_PC4 SILABS_DBUS_TIMER1_CC2(0x2, 0x4) +#define TIMER1_CC2_PC5 SILABS_DBUS_TIMER1_CC2(0x2, 0x5) +#define TIMER1_CC2_PC6 SILABS_DBUS_TIMER1_CC2(0x2, 0x6) +#define TIMER1_CC2_PC7 SILABS_DBUS_TIMER1_CC2(0x2, 0x7) +#define TIMER1_CC2_PD0 SILABS_DBUS_TIMER1_CC2(0x3, 0x0) +#define TIMER1_CC2_PD1 SILABS_DBUS_TIMER1_CC2(0x3, 0x1) +#define TIMER1_CC2_PD2 SILABS_DBUS_TIMER1_CC2(0x3, 0x2) +#define TIMER1_CC2_PD3 SILABS_DBUS_TIMER1_CC2(0x3, 0x3) +#define TIMER1_CDTI0_PA0 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x0) +#define TIMER1_CDTI0_PA1 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x1) +#define TIMER1_CDTI0_PA2 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x2) +#define TIMER1_CDTI0_PA3 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x3) +#define TIMER1_CDTI0_PA4 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x4) +#define TIMER1_CDTI0_PA5 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x5) +#define TIMER1_CDTI0_PA6 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x6) +#define TIMER1_CDTI0_PA7 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x7) +#define TIMER1_CDTI0_PA8 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x8) +#define TIMER1_CDTI0_PB0 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x0) +#define TIMER1_CDTI0_PB1 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x1) +#define TIMER1_CDTI0_PB2 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x2) +#define TIMER1_CDTI0_PB3 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x3) +#define TIMER1_CDTI0_PB4 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x4) +#define TIMER1_CDTI0_PC0 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x0) +#define TIMER1_CDTI0_PC1 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x1) +#define TIMER1_CDTI0_PC2 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x2) +#define TIMER1_CDTI0_PC3 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x3) +#define TIMER1_CDTI0_PC4 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x4) +#define TIMER1_CDTI0_PC5 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x5) +#define TIMER1_CDTI0_PC6 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x6) +#define TIMER1_CDTI0_PC7 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x7) +#define TIMER1_CDTI0_PD0 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x0) +#define TIMER1_CDTI0_PD1 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x1) +#define TIMER1_CDTI0_PD2 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x2) +#define TIMER1_CDTI0_PD3 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x3) +#define TIMER1_CDTI1_PA0 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x0) +#define TIMER1_CDTI1_PA1 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x1) +#define TIMER1_CDTI1_PA2 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x2) +#define TIMER1_CDTI1_PA3 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x3) +#define TIMER1_CDTI1_PA4 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x4) +#define TIMER1_CDTI1_PA5 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x5) +#define TIMER1_CDTI1_PA6 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x6) +#define TIMER1_CDTI1_PA7 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x7) +#define TIMER1_CDTI1_PA8 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x8) +#define TIMER1_CDTI1_PB0 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x0) +#define TIMER1_CDTI1_PB1 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x1) +#define TIMER1_CDTI1_PB2 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x2) +#define TIMER1_CDTI1_PB3 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x3) +#define TIMER1_CDTI1_PB4 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x4) +#define TIMER1_CDTI1_PC0 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x0) +#define TIMER1_CDTI1_PC1 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x1) +#define TIMER1_CDTI1_PC2 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x2) +#define TIMER1_CDTI1_PC3 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x3) +#define TIMER1_CDTI1_PC4 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x4) +#define TIMER1_CDTI1_PC5 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x5) +#define TIMER1_CDTI1_PC6 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x6) +#define TIMER1_CDTI1_PC7 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x7) +#define TIMER1_CDTI1_PD0 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x0) +#define TIMER1_CDTI1_PD1 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x1) +#define TIMER1_CDTI1_PD2 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x2) +#define TIMER1_CDTI1_PD3 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x3) +#define TIMER1_CDTI2_PA0 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x0) +#define TIMER1_CDTI2_PA1 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x1) +#define TIMER1_CDTI2_PA2 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x2) +#define TIMER1_CDTI2_PA3 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x3) +#define TIMER1_CDTI2_PA4 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x4) +#define TIMER1_CDTI2_PA5 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x5) +#define TIMER1_CDTI2_PA6 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x6) +#define TIMER1_CDTI2_PA7 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x7) +#define TIMER1_CDTI2_PA8 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x8) +#define TIMER1_CDTI2_PB0 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x0) +#define TIMER1_CDTI2_PB1 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x1) +#define TIMER1_CDTI2_PB2 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x2) +#define TIMER1_CDTI2_PB3 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x3) +#define TIMER1_CDTI2_PB4 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x4) +#define TIMER1_CDTI2_PC0 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x0) +#define TIMER1_CDTI2_PC1 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x1) +#define TIMER1_CDTI2_PC2 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x2) +#define TIMER1_CDTI2_PC3 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x3) +#define TIMER1_CDTI2_PC4 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x4) +#define TIMER1_CDTI2_PC5 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x5) +#define TIMER1_CDTI2_PC6 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x6) +#define TIMER1_CDTI2_PC7 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x7) +#define TIMER1_CDTI2_PD0 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x0) +#define TIMER1_CDTI2_PD1 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x1) +#define TIMER1_CDTI2_PD2 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x2) +#define TIMER1_CDTI2_PD3 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x3) + +#define TIMER2_CC0_PA0 SILABS_DBUS_TIMER2_CC0(0x0, 0x0) +#define TIMER2_CC0_PA1 SILABS_DBUS_TIMER2_CC0(0x0, 0x1) +#define TIMER2_CC0_PA2 SILABS_DBUS_TIMER2_CC0(0x0, 0x2) +#define TIMER2_CC0_PA3 SILABS_DBUS_TIMER2_CC0(0x0, 0x3) +#define TIMER2_CC0_PA4 SILABS_DBUS_TIMER2_CC0(0x0, 0x4) +#define TIMER2_CC0_PA5 SILABS_DBUS_TIMER2_CC0(0x0, 0x5) +#define TIMER2_CC0_PA6 SILABS_DBUS_TIMER2_CC0(0x0, 0x6) +#define TIMER2_CC0_PA7 SILABS_DBUS_TIMER2_CC0(0x0, 0x7) +#define TIMER2_CC0_PA8 SILABS_DBUS_TIMER2_CC0(0x0, 0x8) +#define TIMER2_CC0_PB0 SILABS_DBUS_TIMER2_CC0(0x1, 0x0) +#define TIMER2_CC0_PB1 SILABS_DBUS_TIMER2_CC0(0x1, 0x1) +#define TIMER2_CC0_PB2 SILABS_DBUS_TIMER2_CC0(0x1, 0x2) +#define TIMER2_CC0_PB3 SILABS_DBUS_TIMER2_CC0(0x1, 0x3) +#define TIMER2_CC0_PB4 SILABS_DBUS_TIMER2_CC0(0x1, 0x4) +#define TIMER2_CC1_PA0 SILABS_DBUS_TIMER2_CC1(0x0, 0x0) +#define TIMER2_CC1_PA1 SILABS_DBUS_TIMER2_CC1(0x0, 0x1) +#define TIMER2_CC1_PA2 SILABS_DBUS_TIMER2_CC1(0x0, 0x2) +#define TIMER2_CC1_PA3 SILABS_DBUS_TIMER2_CC1(0x0, 0x3) +#define TIMER2_CC1_PA4 SILABS_DBUS_TIMER2_CC1(0x0, 0x4) +#define TIMER2_CC1_PA5 SILABS_DBUS_TIMER2_CC1(0x0, 0x5) +#define TIMER2_CC1_PA6 SILABS_DBUS_TIMER2_CC1(0x0, 0x6) +#define TIMER2_CC1_PA7 SILABS_DBUS_TIMER2_CC1(0x0, 0x7) +#define TIMER2_CC1_PA8 SILABS_DBUS_TIMER2_CC1(0x0, 0x8) +#define TIMER2_CC1_PB0 SILABS_DBUS_TIMER2_CC1(0x1, 0x0) +#define TIMER2_CC1_PB1 SILABS_DBUS_TIMER2_CC1(0x1, 0x1) +#define TIMER2_CC1_PB2 SILABS_DBUS_TIMER2_CC1(0x1, 0x2) +#define TIMER2_CC1_PB3 SILABS_DBUS_TIMER2_CC1(0x1, 0x3) +#define TIMER2_CC1_PB4 SILABS_DBUS_TIMER2_CC1(0x1, 0x4) +#define TIMER2_CC2_PA0 SILABS_DBUS_TIMER2_CC2(0x0, 0x0) +#define TIMER2_CC2_PA1 SILABS_DBUS_TIMER2_CC2(0x0, 0x1) +#define TIMER2_CC2_PA2 SILABS_DBUS_TIMER2_CC2(0x0, 0x2) +#define TIMER2_CC2_PA3 SILABS_DBUS_TIMER2_CC2(0x0, 0x3) +#define TIMER2_CC2_PA4 SILABS_DBUS_TIMER2_CC2(0x0, 0x4) +#define TIMER2_CC2_PA5 SILABS_DBUS_TIMER2_CC2(0x0, 0x5) +#define TIMER2_CC2_PA6 SILABS_DBUS_TIMER2_CC2(0x0, 0x6) +#define TIMER2_CC2_PA7 SILABS_DBUS_TIMER2_CC2(0x0, 0x7) +#define TIMER2_CC2_PA8 SILABS_DBUS_TIMER2_CC2(0x0, 0x8) +#define TIMER2_CC2_PB0 SILABS_DBUS_TIMER2_CC2(0x1, 0x0) +#define TIMER2_CC2_PB1 SILABS_DBUS_TIMER2_CC2(0x1, 0x1) +#define TIMER2_CC2_PB2 SILABS_DBUS_TIMER2_CC2(0x1, 0x2) +#define TIMER2_CC2_PB3 SILABS_DBUS_TIMER2_CC2(0x1, 0x3) +#define TIMER2_CC2_PB4 SILABS_DBUS_TIMER2_CC2(0x1, 0x4) +#define TIMER2_CDTI0_PA0 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x0) +#define TIMER2_CDTI0_PA1 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x1) +#define TIMER2_CDTI0_PA2 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x2) +#define TIMER2_CDTI0_PA3 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x3) +#define TIMER2_CDTI0_PA4 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x4) +#define TIMER2_CDTI0_PA5 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x5) +#define TIMER2_CDTI0_PA6 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x6) +#define TIMER2_CDTI0_PA7 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x7) +#define TIMER2_CDTI0_PA8 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x8) +#define TIMER2_CDTI0_PB0 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x0) +#define TIMER2_CDTI0_PB1 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x1) +#define TIMER2_CDTI0_PB2 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x2) +#define TIMER2_CDTI0_PB3 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x3) +#define TIMER2_CDTI0_PB4 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x4) +#define TIMER2_CDTI1_PA0 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x0) +#define TIMER2_CDTI1_PA1 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x1) +#define TIMER2_CDTI1_PA2 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x2) +#define TIMER2_CDTI1_PA3 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x3) +#define TIMER2_CDTI1_PA4 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x4) +#define TIMER2_CDTI1_PA5 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x5) +#define TIMER2_CDTI1_PA6 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x6) +#define TIMER2_CDTI1_PA7 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x7) +#define TIMER2_CDTI1_PA8 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x8) +#define TIMER2_CDTI1_PB0 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x0) +#define TIMER2_CDTI1_PB1 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x1) +#define TIMER2_CDTI1_PB2 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x2) +#define TIMER2_CDTI1_PB3 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x3) +#define TIMER2_CDTI1_PB4 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x4) +#define TIMER2_CDTI2_PA0 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x0) +#define TIMER2_CDTI2_PA1 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x1) +#define TIMER2_CDTI2_PA2 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x2) +#define TIMER2_CDTI2_PA3 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x3) +#define TIMER2_CDTI2_PA4 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x4) +#define TIMER2_CDTI2_PA5 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x5) +#define TIMER2_CDTI2_PA6 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x6) +#define TIMER2_CDTI2_PA7 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x7) +#define TIMER2_CDTI2_PA8 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x8) +#define TIMER2_CDTI2_PB0 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x0) +#define TIMER2_CDTI2_PB1 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x1) +#define TIMER2_CDTI2_PB2 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x2) +#define TIMER2_CDTI2_PB3 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x3) +#define TIMER2_CDTI2_PB4 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x4) + +#define TIMER3_CC0_PC0 SILABS_DBUS_TIMER3_CC0(0x2, 0x0) +#define TIMER3_CC0_PC1 SILABS_DBUS_TIMER3_CC0(0x2, 0x1) +#define TIMER3_CC0_PC2 SILABS_DBUS_TIMER3_CC0(0x2, 0x2) +#define TIMER3_CC0_PC3 SILABS_DBUS_TIMER3_CC0(0x2, 0x3) +#define TIMER3_CC0_PC4 SILABS_DBUS_TIMER3_CC0(0x2, 0x4) +#define TIMER3_CC0_PC5 SILABS_DBUS_TIMER3_CC0(0x2, 0x5) +#define TIMER3_CC0_PC6 SILABS_DBUS_TIMER3_CC0(0x2, 0x6) +#define TIMER3_CC0_PC7 SILABS_DBUS_TIMER3_CC0(0x2, 0x7) +#define TIMER3_CC0_PD0 SILABS_DBUS_TIMER3_CC0(0x3, 0x0) +#define TIMER3_CC0_PD1 SILABS_DBUS_TIMER3_CC0(0x3, 0x1) +#define TIMER3_CC0_PD2 SILABS_DBUS_TIMER3_CC0(0x3, 0x2) +#define TIMER3_CC0_PD3 SILABS_DBUS_TIMER3_CC0(0x3, 0x3) +#define TIMER3_CC1_PC0 SILABS_DBUS_TIMER3_CC1(0x2, 0x0) +#define TIMER3_CC1_PC1 SILABS_DBUS_TIMER3_CC1(0x2, 0x1) +#define TIMER3_CC1_PC2 SILABS_DBUS_TIMER3_CC1(0x2, 0x2) +#define TIMER3_CC1_PC3 SILABS_DBUS_TIMER3_CC1(0x2, 0x3) +#define TIMER3_CC1_PC4 SILABS_DBUS_TIMER3_CC1(0x2, 0x4) +#define TIMER3_CC1_PC5 SILABS_DBUS_TIMER3_CC1(0x2, 0x5) +#define TIMER3_CC1_PC6 SILABS_DBUS_TIMER3_CC1(0x2, 0x6) +#define TIMER3_CC1_PC7 SILABS_DBUS_TIMER3_CC1(0x2, 0x7) +#define TIMER3_CC1_PD0 SILABS_DBUS_TIMER3_CC1(0x3, 0x0) +#define TIMER3_CC1_PD1 SILABS_DBUS_TIMER3_CC1(0x3, 0x1) +#define TIMER3_CC1_PD2 SILABS_DBUS_TIMER3_CC1(0x3, 0x2) +#define TIMER3_CC1_PD3 SILABS_DBUS_TIMER3_CC1(0x3, 0x3) +#define TIMER3_CC2_PC0 SILABS_DBUS_TIMER3_CC2(0x2, 0x0) +#define TIMER3_CC2_PC1 SILABS_DBUS_TIMER3_CC2(0x2, 0x1) +#define TIMER3_CC2_PC2 SILABS_DBUS_TIMER3_CC2(0x2, 0x2) +#define TIMER3_CC2_PC3 SILABS_DBUS_TIMER3_CC2(0x2, 0x3) +#define TIMER3_CC2_PC4 SILABS_DBUS_TIMER3_CC2(0x2, 0x4) +#define TIMER3_CC2_PC5 SILABS_DBUS_TIMER3_CC2(0x2, 0x5) +#define TIMER3_CC2_PC6 SILABS_DBUS_TIMER3_CC2(0x2, 0x6) +#define TIMER3_CC2_PC7 SILABS_DBUS_TIMER3_CC2(0x2, 0x7) +#define TIMER3_CC2_PD0 SILABS_DBUS_TIMER3_CC2(0x3, 0x0) +#define TIMER3_CC2_PD1 SILABS_DBUS_TIMER3_CC2(0x3, 0x1) +#define TIMER3_CC2_PD2 SILABS_DBUS_TIMER3_CC2(0x3, 0x2) +#define TIMER3_CC2_PD3 SILABS_DBUS_TIMER3_CC2(0x3, 0x3) +#define TIMER3_CDTI0_PC0 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x0) +#define TIMER3_CDTI0_PC1 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x1) +#define TIMER3_CDTI0_PC2 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x2) +#define TIMER3_CDTI0_PC3 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x3) +#define TIMER3_CDTI0_PC4 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x4) +#define TIMER3_CDTI0_PC5 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x5) +#define TIMER3_CDTI0_PC6 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x6) +#define TIMER3_CDTI0_PC7 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x7) +#define TIMER3_CDTI0_PD0 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x0) +#define TIMER3_CDTI0_PD1 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x1) +#define TIMER3_CDTI0_PD2 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x2) +#define TIMER3_CDTI0_PD3 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x3) +#define TIMER3_CDTI1_PC0 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x0) +#define TIMER3_CDTI1_PC1 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x1) +#define TIMER3_CDTI1_PC2 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x2) +#define TIMER3_CDTI1_PC3 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x3) +#define TIMER3_CDTI1_PC4 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x4) +#define TIMER3_CDTI1_PC5 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x5) +#define TIMER3_CDTI1_PC6 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x6) +#define TIMER3_CDTI1_PC7 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x7) +#define TIMER3_CDTI1_PD0 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x0) +#define TIMER3_CDTI1_PD1 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x1) +#define TIMER3_CDTI1_PD2 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x2) +#define TIMER3_CDTI1_PD3 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x3) +#define TIMER3_CDTI2_PC0 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x0) +#define TIMER3_CDTI2_PC1 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x1) +#define TIMER3_CDTI2_PC2 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x2) +#define TIMER3_CDTI2_PC3 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x3) +#define TIMER3_CDTI2_PC4 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x4) +#define TIMER3_CDTI2_PC5 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x5) +#define TIMER3_CDTI2_PC6 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x6) +#define TIMER3_CDTI2_PC7 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x7) +#define TIMER3_CDTI2_PD0 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x0) +#define TIMER3_CDTI2_PD1 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x1) +#define TIMER3_CDTI2_PD2 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x2) +#define TIMER3_CDTI2_PD3 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x3) + +#define TIMER4_CC0_PA0 SILABS_DBUS_TIMER4_CC0(0x0, 0x0) +#define TIMER4_CC0_PA1 SILABS_DBUS_TIMER4_CC0(0x0, 0x1) +#define TIMER4_CC0_PA2 SILABS_DBUS_TIMER4_CC0(0x0, 0x2) +#define TIMER4_CC0_PA3 SILABS_DBUS_TIMER4_CC0(0x0, 0x3) +#define TIMER4_CC0_PA4 SILABS_DBUS_TIMER4_CC0(0x0, 0x4) +#define TIMER4_CC0_PA5 SILABS_DBUS_TIMER4_CC0(0x0, 0x5) +#define TIMER4_CC0_PA6 SILABS_DBUS_TIMER4_CC0(0x0, 0x6) +#define TIMER4_CC0_PA7 SILABS_DBUS_TIMER4_CC0(0x0, 0x7) +#define TIMER4_CC0_PA8 SILABS_DBUS_TIMER4_CC0(0x0, 0x8) +#define TIMER4_CC0_PB0 SILABS_DBUS_TIMER4_CC0(0x1, 0x0) +#define TIMER4_CC0_PB1 SILABS_DBUS_TIMER4_CC0(0x1, 0x1) +#define TIMER4_CC0_PB2 SILABS_DBUS_TIMER4_CC0(0x1, 0x2) +#define TIMER4_CC0_PB3 SILABS_DBUS_TIMER4_CC0(0x1, 0x3) +#define TIMER4_CC0_PB4 SILABS_DBUS_TIMER4_CC0(0x1, 0x4) +#define TIMER4_CC1_PA0 SILABS_DBUS_TIMER4_CC1(0x0, 0x0) +#define TIMER4_CC1_PA1 SILABS_DBUS_TIMER4_CC1(0x0, 0x1) +#define TIMER4_CC1_PA2 SILABS_DBUS_TIMER4_CC1(0x0, 0x2) +#define TIMER4_CC1_PA3 SILABS_DBUS_TIMER4_CC1(0x0, 0x3) +#define TIMER4_CC1_PA4 SILABS_DBUS_TIMER4_CC1(0x0, 0x4) +#define TIMER4_CC1_PA5 SILABS_DBUS_TIMER4_CC1(0x0, 0x5) +#define TIMER4_CC1_PA6 SILABS_DBUS_TIMER4_CC1(0x0, 0x6) +#define TIMER4_CC1_PA7 SILABS_DBUS_TIMER4_CC1(0x0, 0x7) +#define TIMER4_CC1_PA8 SILABS_DBUS_TIMER4_CC1(0x0, 0x8) +#define TIMER4_CC1_PB0 SILABS_DBUS_TIMER4_CC1(0x1, 0x0) +#define TIMER4_CC1_PB1 SILABS_DBUS_TIMER4_CC1(0x1, 0x1) +#define TIMER4_CC1_PB2 SILABS_DBUS_TIMER4_CC1(0x1, 0x2) +#define TIMER4_CC1_PB3 SILABS_DBUS_TIMER4_CC1(0x1, 0x3) +#define TIMER4_CC1_PB4 SILABS_DBUS_TIMER4_CC1(0x1, 0x4) +#define TIMER4_CC2_PA0 SILABS_DBUS_TIMER4_CC2(0x0, 0x0) +#define TIMER4_CC2_PA1 SILABS_DBUS_TIMER4_CC2(0x0, 0x1) +#define TIMER4_CC2_PA2 SILABS_DBUS_TIMER4_CC2(0x0, 0x2) +#define TIMER4_CC2_PA3 SILABS_DBUS_TIMER4_CC2(0x0, 0x3) +#define TIMER4_CC2_PA4 SILABS_DBUS_TIMER4_CC2(0x0, 0x4) +#define TIMER4_CC2_PA5 SILABS_DBUS_TIMER4_CC2(0x0, 0x5) +#define TIMER4_CC2_PA6 SILABS_DBUS_TIMER4_CC2(0x0, 0x6) +#define TIMER4_CC2_PA7 SILABS_DBUS_TIMER4_CC2(0x0, 0x7) +#define TIMER4_CC2_PA8 SILABS_DBUS_TIMER4_CC2(0x0, 0x8) +#define TIMER4_CC2_PB0 SILABS_DBUS_TIMER4_CC2(0x1, 0x0) +#define TIMER4_CC2_PB1 SILABS_DBUS_TIMER4_CC2(0x1, 0x1) +#define TIMER4_CC2_PB2 SILABS_DBUS_TIMER4_CC2(0x1, 0x2) +#define TIMER4_CC2_PB3 SILABS_DBUS_TIMER4_CC2(0x1, 0x3) +#define TIMER4_CC2_PB4 SILABS_DBUS_TIMER4_CC2(0x1, 0x4) +#define TIMER4_CDTI0_PA0 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x0) +#define TIMER4_CDTI0_PA1 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x1) +#define TIMER4_CDTI0_PA2 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x2) +#define TIMER4_CDTI0_PA3 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x3) +#define TIMER4_CDTI0_PA4 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x4) +#define TIMER4_CDTI0_PA5 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x5) +#define TIMER4_CDTI0_PA6 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x6) +#define TIMER4_CDTI0_PA7 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x7) +#define TIMER4_CDTI0_PA8 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x8) +#define TIMER4_CDTI0_PB0 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x0) +#define TIMER4_CDTI0_PB1 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x1) +#define TIMER4_CDTI0_PB2 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x2) +#define TIMER4_CDTI0_PB3 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x3) +#define TIMER4_CDTI0_PB4 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x4) +#define TIMER4_CDTI1_PA0 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x0) +#define TIMER4_CDTI1_PA1 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x1) +#define TIMER4_CDTI1_PA2 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x2) +#define TIMER4_CDTI1_PA3 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x3) +#define TIMER4_CDTI1_PA4 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x4) +#define TIMER4_CDTI1_PA5 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x5) +#define TIMER4_CDTI1_PA6 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x6) +#define TIMER4_CDTI1_PA7 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x7) +#define TIMER4_CDTI1_PA8 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x8) +#define TIMER4_CDTI1_PB0 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x0) +#define TIMER4_CDTI1_PB1 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x1) +#define TIMER4_CDTI1_PB2 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x2) +#define TIMER4_CDTI1_PB3 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x3) +#define TIMER4_CDTI1_PB4 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x4) +#define TIMER4_CDTI2_PA0 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x0) +#define TIMER4_CDTI2_PA1 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x1) +#define TIMER4_CDTI2_PA2 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x2) +#define TIMER4_CDTI2_PA3 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x3) +#define TIMER4_CDTI2_PA4 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x4) +#define TIMER4_CDTI2_PA5 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x5) +#define TIMER4_CDTI2_PA6 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x6) +#define TIMER4_CDTI2_PA7 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x7) +#define TIMER4_CDTI2_PA8 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x8) +#define TIMER4_CDTI2_PB0 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x0) +#define TIMER4_CDTI2_PB1 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x1) +#define TIMER4_CDTI2_PB2 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x2) +#define TIMER4_CDTI2_PB3 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x3) +#define TIMER4_CDTI2_PB4 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x4) + +#define USART0_CS_PA0 SILABS_DBUS_USART0_CS(0x0, 0x0) +#define USART0_CS_PA1 SILABS_DBUS_USART0_CS(0x0, 0x1) +#define USART0_CS_PA2 SILABS_DBUS_USART0_CS(0x0, 0x2) +#define USART0_CS_PA3 SILABS_DBUS_USART0_CS(0x0, 0x3) +#define USART0_CS_PA4 SILABS_DBUS_USART0_CS(0x0, 0x4) +#define USART0_CS_PA5 SILABS_DBUS_USART0_CS(0x0, 0x5) +#define USART0_CS_PA6 SILABS_DBUS_USART0_CS(0x0, 0x6) +#define USART0_CS_PA7 SILABS_DBUS_USART0_CS(0x0, 0x7) +#define USART0_CS_PA8 SILABS_DBUS_USART0_CS(0x0, 0x8) +#define USART0_CS_PB0 SILABS_DBUS_USART0_CS(0x1, 0x0) +#define USART0_CS_PB1 SILABS_DBUS_USART0_CS(0x1, 0x1) +#define USART0_CS_PB2 SILABS_DBUS_USART0_CS(0x1, 0x2) +#define USART0_CS_PB3 SILABS_DBUS_USART0_CS(0x1, 0x3) +#define USART0_CS_PB4 SILABS_DBUS_USART0_CS(0x1, 0x4) +#define USART0_CS_PC0 SILABS_DBUS_USART0_CS(0x2, 0x0) +#define USART0_CS_PC1 SILABS_DBUS_USART0_CS(0x2, 0x1) +#define USART0_CS_PC2 SILABS_DBUS_USART0_CS(0x2, 0x2) +#define USART0_CS_PC3 SILABS_DBUS_USART0_CS(0x2, 0x3) +#define USART0_CS_PC4 SILABS_DBUS_USART0_CS(0x2, 0x4) +#define USART0_CS_PC5 SILABS_DBUS_USART0_CS(0x2, 0x5) +#define USART0_CS_PC6 SILABS_DBUS_USART0_CS(0x2, 0x6) +#define USART0_CS_PC7 SILABS_DBUS_USART0_CS(0x2, 0x7) +#define USART0_CS_PD0 SILABS_DBUS_USART0_CS(0x3, 0x0) +#define USART0_CS_PD1 SILABS_DBUS_USART0_CS(0x3, 0x1) +#define USART0_CS_PD2 SILABS_DBUS_USART0_CS(0x3, 0x2) +#define USART0_CS_PD3 SILABS_DBUS_USART0_CS(0x3, 0x3) +#define USART0_RTS_PA0 SILABS_DBUS_USART0_RTS(0x0, 0x0) +#define USART0_RTS_PA1 SILABS_DBUS_USART0_RTS(0x0, 0x1) +#define USART0_RTS_PA2 SILABS_DBUS_USART0_RTS(0x0, 0x2) +#define USART0_RTS_PA3 SILABS_DBUS_USART0_RTS(0x0, 0x3) +#define USART0_RTS_PA4 SILABS_DBUS_USART0_RTS(0x0, 0x4) +#define USART0_RTS_PA5 SILABS_DBUS_USART0_RTS(0x0, 0x5) +#define USART0_RTS_PA6 SILABS_DBUS_USART0_RTS(0x0, 0x6) +#define USART0_RTS_PA7 SILABS_DBUS_USART0_RTS(0x0, 0x7) +#define USART0_RTS_PA8 SILABS_DBUS_USART0_RTS(0x0, 0x8) +#define USART0_RTS_PB0 SILABS_DBUS_USART0_RTS(0x1, 0x0) +#define USART0_RTS_PB1 SILABS_DBUS_USART0_RTS(0x1, 0x1) +#define USART0_RTS_PB2 SILABS_DBUS_USART0_RTS(0x1, 0x2) +#define USART0_RTS_PB3 SILABS_DBUS_USART0_RTS(0x1, 0x3) +#define USART0_RTS_PB4 SILABS_DBUS_USART0_RTS(0x1, 0x4) +#define USART0_RTS_PC0 SILABS_DBUS_USART0_RTS(0x2, 0x0) +#define USART0_RTS_PC1 SILABS_DBUS_USART0_RTS(0x2, 0x1) +#define USART0_RTS_PC2 SILABS_DBUS_USART0_RTS(0x2, 0x2) +#define USART0_RTS_PC3 SILABS_DBUS_USART0_RTS(0x2, 0x3) +#define USART0_RTS_PC4 SILABS_DBUS_USART0_RTS(0x2, 0x4) +#define USART0_RTS_PC5 SILABS_DBUS_USART0_RTS(0x2, 0x5) +#define USART0_RTS_PC6 SILABS_DBUS_USART0_RTS(0x2, 0x6) +#define USART0_RTS_PC7 SILABS_DBUS_USART0_RTS(0x2, 0x7) +#define USART0_RTS_PD0 SILABS_DBUS_USART0_RTS(0x3, 0x0) +#define USART0_RTS_PD1 SILABS_DBUS_USART0_RTS(0x3, 0x1) +#define USART0_RTS_PD2 SILABS_DBUS_USART0_RTS(0x3, 0x2) +#define USART0_RTS_PD3 SILABS_DBUS_USART0_RTS(0x3, 0x3) +#define USART0_RX_PA0 SILABS_DBUS_USART0_RX(0x0, 0x0) +#define USART0_RX_PA1 SILABS_DBUS_USART0_RX(0x0, 0x1) +#define USART0_RX_PA2 SILABS_DBUS_USART0_RX(0x0, 0x2) +#define USART0_RX_PA3 SILABS_DBUS_USART0_RX(0x0, 0x3) +#define USART0_RX_PA4 SILABS_DBUS_USART0_RX(0x0, 0x4) +#define USART0_RX_PA5 SILABS_DBUS_USART0_RX(0x0, 0x5) +#define USART0_RX_PA6 SILABS_DBUS_USART0_RX(0x0, 0x6) +#define USART0_RX_PA7 SILABS_DBUS_USART0_RX(0x0, 0x7) +#define USART0_RX_PA8 SILABS_DBUS_USART0_RX(0x0, 0x8) +#define USART0_RX_PB0 SILABS_DBUS_USART0_RX(0x1, 0x0) +#define USART0_RX_PB1 SILABS_DBUS_USART0_RX(0x1, 0x1) +#define USART0_RX_PB2 SILABS_DBUS_USART0_RX(0x1, 0x2) +#define USART0_RX_PB3 SILABS_DBUS_USART0_RX(0x1, 0x3) +#define USART0_RX_PB4 SILABS_DBUS_USART0_RX(0x1, 0x4) +#define USART0_RX_PC0 SILABS_DBUS_USART0_RX(0x2, 0x0) +#define USART0_RX_PC1 SILABS_DBUS_USART0_RX(0x2, 0x1) +#define USART0_RX_PC2 SILABS_DBUS_USART0_RX(0x2, 0x2) +#define USART0_RX_PC3 SILABS_DBUS_USART0_RX(0x2, 0x3) +#define USART0_RX_PC4 SILABS_DBUS_USART0_RX(0x2, 0x4) +#define USART0_RX_PC5 SILABS_DBUS_USART0_RX(0x2, 0x5) +#define USART0_RX_PC6 SILABS_DBUS_USART0_RX(0x2, 0x6) +#define USART0_RX_PC7 SILABS_DBUS_USART0_RX(0x2, 0x7) +#define USART0_RX_PD0 SILABS_DBUS_USART0_RX(0x3, 0x0) +#define USART0_RX_PD1 SILABS_DBUS_USART0_RX(0x3, 0x1) +#define USART0_RX_PD2 SILABS_DBUS_USART0_RX(0x3, 0x2) +#define USART0_RX_PD3 SILABS_DBUS_USART0_RX(0x3, 0x3) +#define USART0_CLK_PA0 SILABS_DBUS_USART0_CLK(0x0, 0x0) +#define USART0_CLK_PA1 SILABS_DBUS_USART0_CLK(0x0, 0x1) +#define USART0_CLK_PA2 SILABS_DBUS_USART0_CLK(0x0, 0x2) +#define USART0_CLK_PA3 SILABS_DBUS_USART0_CLK(0x0, 0x3) +#define USART0_CLK_PA4 SILABS_DBUS_USART0_CLK(0x0, 0x4) +#define USART0_CLK_PA5 SILABS_DBUS_USART0_CLK(0x0, 0x5) +#define USART0_CLK_PA6 SILABS_DBUS_USART0_CLK(0x0, 0x6) +#define USART0_CLK_PA7 SILABS_DBUS_USART0_CLK(0x0, 0x7) +#define USART0_CLK_PA8 SILABS_DBUS_USART0_CLK(0x0, 0x8) +#define USART0_CLK_PB0 SILABS_DBUS_USART0_CLK(0x1, 0x0) +#define USART0_CLK_PB1 SILABS_DBUS_USART0_CLK(0x1, 0x1) +#define USART0_CLK_PB2 SILABS_DBUS_USART0_CLK(0x1, 0x2) +#define USART0_CLK_PB3 SILABS_DBUS_USART0_CLK(0x1, 0x3) +#define USART0_CLK_PB4 SILABS_DBUS_USART0_CLK(0x1, 0x4) +#define USART0_CLK_PC0 SILABS_DBUS_USART0_CLK(0x2, 0x0) +#define USART0_CLK_PC1 SILABS_DBUS_USART0_CLK(0x2, 0x1) +#define USART0_CLK_PC2 SILABS_DBUS_USART0_CLK(0x2, 0x2) +#define USART0_CLK_PC3 SILABS_DBUS_USART0_CLK(0x2, 0x3) +#define USART0_CLK_PC4 SILABS_DBUS_USART0_CLK(0x2, 0x4) +#define USART0_CLK_PC5 SILABS_DBUS_USART0_CLK(0x2, 0x5) +#define USART0_CLK_PC6 SILABS_DBUS_USART0_CLK(0x2, 0x6) +#define USART0_CLK_PC7 SILABS_DBUS_USART0_CLK(0x2, 0x7) +#define USART0_CLK_PD0 SILABS_DBUS_USART0_CLK(0x3, 0x0) +#define USART0_CLK_PD1 SILABS_DBUS_USART0_CLK(0x3, 0x1) +#define USART0_CLK_PD2 SILABS_DBUS_USART0_CLK(0x3, 0x2) +#define USART0_CLK_PD3 SILABS_DBUS_USART0_CLK(0x3, 0x3) +#define USART0_TX_PA0 SILABS_DBUS_USART0_TX(0x0, 0x0) +#define USART0_TX_PA1 SILABS_DBUS_USART0_TX(0x0, 0x1) +#define USART0_TX_PA2 SILABS_DBUS_USART0_TX(0x0, 0x2) +#define USART0_TX_PA3 SILABS_DBUS_USART0_TX(0x0, 0x3) +#define USART0_TX_PA4 SILABS_DBUS_USART0_TX(0x0, 0x4) +#define USART0_TX_PA5 SILABS_DBUS_USART0_TX(0x0, 0x5) +#define USART0_TX_PA6 SILABS_DBUS_USART0_TX(0x0, 0x6) +#define USART0_TX_PA7 SILABS_DBUS_USART0_TX(0x0, 0x7) +#define USART0_TX_PA8 SILABS_DBUS_USART0_TX(0x0, 0x8) +#define USART0_TX_PB0 SILABS_DBUS_USART0_TX(0x1, 0x0) +#define USART0_TX_PB1 SILABS_DBUS_USART0_TX(0x1, 0x1) +#define USART0_TX_PB2 SILABS_DBUS_USART0_TX(0x1, 0x2) +#define USART0_TX_PB3 SILABS_DBUS_USART0_TX(0x1, 0x3) +#define USART0_TX_PB4 SILABS_DBUS_USART0_TX(0x1, 0x4) +#define USART0_TX_PC0 SILABS_DBUS_USART0_TX(0x2, 0x0) +#define USART0_TX_PC1 SILABS_DBUS_USART0_TX(0x2, 0x1) +#define USART0_TX_PC2 SILABS_DBUS_USART0_TX(0x2, 0x2) +#define USART0_TX_PC3 SILABS_DBUS_USART0_TX(0x2, 0x3) +#define USART0_TX_PC4 SILABS_DBUS_USART0_TX(0x2, 0x4) +#define USART0_TX_PC5 SILABS_DBUS_USART0_TX(0x2, 0x5) +#define USART0_TX_PC6 SILABS_DBUS_USART0_TX(0x2, 0x6) +#define USART0_TX_PC7 SILABS_DBUS_USART0_TX(0x2, 0x7) +#define USART0_TX_PD0 SILABS_DBUS_USART0_TX(0x3, 0x0) +#define USART0_TX_PD1 SILABS_DBUS_USART0_TX(0x3, 0x1) +#define USART0_TX_PD2 SILABS_DBUS_USART0_TX(0x3, 0x2) +#define USART0_TX_PD3 SILABS_DBUS_USART0_TX(0x3, 0x3) +#define USART0_CTS_PA0 SILABS_DBUS_USART0_CTS(0x0, 0x0) +#define USART0_CTS_PA1 SILABS_DBUS_USART0_CTS(0x0, 0x1) +#define USART0_CTS_PA2 SILABS_DBUS_USART0_CTS(0x0, 0x2) +#define USART0_CTS_PA3 SILABS_DBUS_USART0_CTS(0x0, 0x3) +#define USART0_CTS_PA4 SILABS_DBUS_USART0_CTS(0x0, 0x4) +#define USART0_CTS_PA5 SILABS_DBUS_USART0_CTS(0x0, 0x5) +#define USART0_CTS_PA6 SILABS_DBUS_USART0_CTS(0x0, 0x6) +#define USART0_CTS_PA7 SILABS_DBUS_USART0_CTS(0x0, 0x7) +#define USART0_CTS_PA8 SILABS_DBUS_USART0_CTS(0x0, 0x8) +#define USART0_CTS_PB0 SILABS_DBUS_USART0_CTS(0x1, 0x0) +#define USART0_CTS_PB1 SILABS_DBUS_USART0_CTS(0x1, 0x1) +#define USART0_CTS_PB2 SILABS_DBUS_USART0_CTS(0x1, 0x2) +#define USART0_CTS_PB3 SILABS_DBUS_USART0_CTS(0x1, 0x3) +#define USART0_CTS_PB4 SILABS_DBUS_USART0_CTS(0x1, 0x4) +#define USART0_CTS_PC0 SILABS_DBUS_USART0_CTS(0x2, 0x0) +#define USART0_CTS_PC1 SILABS_DBUS_USART0_CTS(0x2, 0x1) +#define USART0_CTS_PC2 SILABS_DBUS_USART0_CTS(0x2, 0x2) +#define USART0_CTS_PC3 SILABS_DBUS_USART0_CTS(0x2, 0x3) +#define USART0_CTS_PC4 SILABS_DBUS_USART0_CTS(0x2, 0x4) +#define USART0_CTS_PC5 SILABS_DBUS_USART0_CTS(0x2, 0x5) +#define USART0_CTS_PC6 SILABS_DBUS_USART0_CTS(0x2, 0x6) +#define USART0_CTS_PC7 SILABS_DBUS_USART0_CTS(0x2, 0x7) +#define USART0_CTS_PD0 SILABS_DBUS_USART0_CTS(0x3, 0x0) +#define USART0_CTS_PD1 SILABS_DBUS_USART0_CTS(0x3, 0x1) +#define USART0_CTS_PD2 SILABS_DBUS_USART0_CTS(0x3, 0x2) +#define USART0_CTS_PD3 SILABS_DBUS_USART0_CTS(0x3, 0x3) + +#define USART1_CS_PA0 SILABS_DBUS_USART1_CS(0x0, 0x0) +#define USART1_CS_PA1 SILABS_DBUS_USART1_CS(0x0, 0x1) +#define USART1_CS_PA2 SILABS_DBUS_USART1_CS(0x0, 0x2) +#define USART1_CS_PA3 SILABS_DBUS_USART1_CS(0x0, 0x3) +#define USART1_CS_PA4 SILABS_DBUS_USART1_CS(0x0, 0x4) +#define USART1_CS_PA5 SILABS_DBUS_USART1_CS(0x0, 0x5) +#define USART1_CS_PA6 SILABS_DBUS_USART1_CS(0x0, 0x6) +#define USART1_CS_PA7 SILABS_DBUS_USART1_CS(0x0, 0x7) +#define USART1_CS_PA8 SILABS_DBUS_USART1_CS(0x0, 0x8) +#define USART1_CS_PB0 SILABS_DBUS_USART1_CS(0x1, 0x0) +#define USART1_CS_PB1 SILABS_DBUS_USART1_CS(0x1, 0x1) +#define USART1_CS_PB2 SILABS_DBUS_USART1_CS(0x1, 0x2) +#define USART1_CS_PB3 SILABS_DBUS_USART1_CS(0x1, 0x3) +#define USART1_CS_PB4 SILABS_DBUS_USART1_CS(0x1, 0x4) +#define USART1_RTS_PA0 SILABS_DBUS_USART1_RTS(0x0, 0x0) +#define USART1_RTS_PA1 SILABS_DBUS_USART1_RTS(0x0, 0x1) +#define USART1_RTS_PA2 SILABS_DBUS_USART1_RTS(0x0, 0x2) +#define USART1_RTS_PA3 SILABS_DBUS_USART1_RTS(0x0, 0x3) +#define USART1_RTS_PA4 SILABS_DBUS_USART1_RTS(0x0, 0x4) +#define USART1_RTS_PA5 SILABS_DBUS_USART1_RTS(0x0, 0x5) +#define USART1_RTS_PA6 SILABS_DBUS_USART1_RTS(0x0, 0x6) +#define USART1_RTS_PA7 SILABS_DBUS_USART1_RTS(0x0, 0x7) +#define USART1_RTS_PA8 SILABS_DBUS_USART1_RTS(0x0, 0x8) +#define USART1_RTS_PB0 SILABS_DBUS_USART1_RTS(0x1, 0x0) +#define USART1_RTS_PB1 SILABS_DBUS_USART1_RTS(0x1, 0x1) +#define USART1_RTS_PB2 SILABS_DBUS_USART1_RTS(0x1, 0x2) +#define USART1_RTS_PB3 SILABS_DBUS_USART1_RTS(0x1, 0x3) +#define USART1_RTS_PB4 SILABS_DBUS_USART1_RTS(0x1, 0x4) +#define USART1_RX_PA0 SILABS_DBUS_USART1_RX(0x0, 0x0) +#define USART1_RX_PA1 SILABS_DBUS_USART1_RX(0x0, 0x1) +#define USART1_RX_PA2 SILABS_DBUS_USART1_RX(0x0, 0x2) +#define USART1_RX_PA3 SILABS_DBUS_USART1_RX(0x0, 0x3) +#define USART1_RX_PA4 SILABS_DBUS_USART1_RX(0x0, 0x4) +#define USART1_RX_PA5 SILABS_DBUS_USART1_RX(0x0, 0x5) +#define USART1_RX_PA6 SILABS_DBUS_USART1_RX(0x0, 0x6) +#define USART1_RX_PA7 SILABS_DBUS_USART1_RX(0x0, 0x7) +#define USART1_RX_PA8 SILABS_DBUS_USART1_RX(0x0, 0x8) +#define USART1_RX_PB0 SILABS_DBUS_USART1_RX(0x1, 0x0) +#define USART1_RX_PB1 SILABS_DBUS_USART1_RX(0x1, 0x1) +#define USART1_RX_PB2 SILABS_DBUS_USART1_RX(0x1, 0x2) +#define USART1_RX_PB3 SILABS_DBUS_USART1_RX(0x1, 0x3) +#define USART1_RX_PB4 SILABS_DBUS_USART1_RX(0x1, 0x4) +#define USART1_CLK_PA0 SILABS_DBUS_USART1_CLK(0x0, 0x0) +#define USART1_CLK_PA1 SILABS_DBUS_USART1_CLK(0x0, 0x1) +#define USART1_CLK_PA2 SILABS_DBUS_USART1_CLK(0x0, 0x2) +#define USART1_CLK_PA3 SILABS_DBUS_USART1_CLK(0x0, 0x3) +#define USART1_CLK_PA4 SILABS_DBUS_USART1_CLK(0x0, 0x4) +#define USART1_CLK_PA5 SILABS_DBUS_USART1_CLK(0x0, 0x5) +#define USART1_CLK_PA6 SILABS_DBUS_USART1_CLK(0x0, 0x6) +#define USART1_CLK_PA7 SILABS_DBUS_USART1_CLK(0x0, 0x7) +#define USART1_CLK_PA8 SILABS_DBUS_USART1_CLK(0x0, 0x8) +#define USART1_CLK_PB0 SILABS_DBUS_USART1_CLK(0x1, 0x0) +#define USART1_CLK_PB1 SILABS_DBUS_USART1_CLK(0x1, 0x1) +#define USART1_CLK_PB2 SILABS_DBUS_USART1_CLK(0x1, 0x2) +#define USART1_CLK_PB3 SILABS_DBUS_USART1_CLK(0x1, 0x3) +#define USART1_CLK_PB4 SILABS_DBUS_USART1_CLK(0x1, 0x4) +#define USART1_TX_PA0 SILABS_DBUS_USART1_TX(0x0, 0x0) +#define USART1_TX_PA1 SILABS_DBUS_USART1_TX(0x0, 0x1) +#define USART1_TX_PA2 SILABS_DBUS_USART1_TX(0x0, 0x2) +#define USART1_TX_PA3 SILABS_DBUS_USART1_TX(0x0, 0x3) +#define USART1_TX_PA4 SILABS_DBUS_USART1_TX(0x0, 0x4) +#define USART1_TX_PA5 SILABS_DBUS_USART1_TX(0x0, 0x5) +#define USART1_TX_PA6 SILABS_DBUS_USART1_TX(0x0, 0x6) +#define USART1_TX_PA7 SILABS_DBUS_USART1_TX(0x0, 0x7) +#define USART1_TX_PA8 SILABS_DBUS_USART1_TX(0x0, 0x8) +#define USART1_TX_PB0 SILABS_DBUS_USART1_TX(0x1, 0x0) +#define USART1_TX_PB1 SILABS_DBUS_USART1_TX(0x1, 0x1) +#define USART1_TX_PB2 SILABS_DBUS_USART1_TX(0x1, 0x2) +#define USART1_TX_PB3 SILABS_DBUS_USART1_TX(0x1, 0x3) +#define USART1_TX_PB4 SILABS_DBUS_USART1_TX(0x1, 0x4) +#define USART1_CTS_PA0 SILABS_DBUS_USART1_CTS(0x0, 0x0) +#define USART1_CTS_PA1 SILABS_DBUS_USART1_CTS(0x0, 0x1) +#define USART1_CTS_PA2 SILABS_DBUS_USART1_CTS(0x0, 0x2) +#define USART1_CTS_PA3 SILABS_DBUS_USART1_CTS(0x0, 0x3) +#define USART1_CTS_PA4 SILABS_DBUS_USART1_CTS(0x0, 0x4) +#define USART1_CTS_PA5 SILABS_DBUS_USART1_CTS(0x0, 0x5) +#define USART1_CTS_PA6 SILABS_DBUS_USART1_CTS(0x0, 0x6) +#define USART1_CTS_PA7 SILABS_DBUS_USART1_CTS(0x0, 0x7) +#define USART1_CTS_PA8 SILABS_DBUS_USART1_CTS(0x0, 0x8) +#define USART1_CTS_PB0 SILABS_DBUS_USART1_CTS(0x1, 0x0) +#define USART1_CTS_PB1 SILABS_DBUS_USART1_CTS(0x1, 0x1) +#define USART1_CTS_PB2 SILABS_DBUS_USART1_CTS(0x1, 0x2) +#define USART1_CTS_PB3 SILABS_DBUS_USART1_CTS(0x1, 0x3) +#define USART1_CTS_PB4 SILABS_DBUS_USART1_CTS(0x1, 0x4) + +#endif /* ZEPHYR_DT_BINDINGS_PINCTRL_SILABS_XG22_PINCTRL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg24-pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg24-pinctrl.h new file mode 100644 index 00000000..3bcbd132 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg24-pinctrl.h @@ -0,0 +1,2703 @@ +/* + * Copyright (c) 2024 Silicon Laboratories Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Pin Control for Silicon Labs XG24 devices + * + * This file was generated by the script gen_pinctrl.py in the hal_silabs module. + * Do not manually edit. + */ + +#ifndef ZEPHYR_DT_BINDINGS_PINCTRL_SILABS_XG24_PINCTRL_H_ +#define ZEPHYR_DT_BINDINGS_PINCTRL_SILABS_XG24_PINCTRL_H_ + +#include + +#define SILABS_DBUS_ACMP0_ACMPOUT(port, pin) SILABS_DBUS(port, pin, 4, 1, 0, 1) + +#define SILABS_DBUS_ACMP1_ACMPOUT(port, pin) SILABS_DBUS(port, pin, 7, 1, 0, 1) + +#define SILABS_DBUS_CMU_CLKOUT0(port, pin) SILABS_DBUS(port, pin, 10, 1, 0, 2) +#define SILABS_DBUS_CMU_CLKOUT1(port, pin) SILABS_DBUS(port, pin, 10, 1, 1, 3) +#define SILABS_DBUS_CMU_CLKOUT2(port, pin) SILABS_DBUS(port, pin, 10, 1, 2, 4) +#define SILABS_DBUS_CMU_CLKIN0(port, pin) SILABS_DBUS(port, pin, 10, 0, 0, 1) + +#define SILABS_DBUS_EUSART0_CS(port, pin) SILABS_DBUS(port, pin, 21, 1, 0, 1) +#define SILABS_DBUS_EUSART0_RTS(port, pin) SILABS_DBUS(port, pin, 21, 1, 1, 3) +#define SILABS_DBUS_EUSART0_RX(port, pin) SILABS_DBUS(port, pin, 21, 1, 2, 4) +#define SILABS_DBUS_EUSART0_SCLK(port, pin) SILABS_DBUS(port, pin, 21, 1, 3, 5) +#define SILABS_DBUS_EUSART0_TX(port, pin) SILABS_DBUS(port, pin, 21, 1, 4, 6) +#define SILABS_DBUS_EUSART0_CTS(port, pin) SILABS_DBUS(port, pin, 21, 0, 0, 2) + +#define SILABS_DBUS_EUSART1_CS(port, pin) SILABS_DBUS(port, pin, 29, 1, 0, 1) +#define SILABS_DBUS_EUSART1_RTS(port, pin) SILABS_DBUS(port, pin, 29, 1, 1, 3) +#define SILABS_DBUS_EUSART1_RX(port, pin) SILABS_DBUS(port, pin, 29, 1, 2, 4) +#define SILABS_DBUS_EUSART1_SCLK(port, pin) SILABS_DBUS(port, pin, 29, 1, 3, 5) +#define SILABS_DBUS_EUSART1_TX(port, pin) SILABS_DBUS(port, pin, 29, 1, 4, 6) +#define SILABS_DBUS_EUSART1_CTS(port, pin) SILABS_DBUS(port, pin, 29, 0, 0, 2) + +#define SILABS_DBUS_PTI_DCLK(port, pin) SILABS_DBUS(port, pin, 37, 1, 0, 1) +#define SILABS_DBUS_PTI_DFRAME(port, pin) SILABS_DBUS(port, pin, 37, 1, 1, 2) +#define SILABS_DBUS_PTI_DOUT(port, pin) SILABS_DBUS(port, pin, 37, 1, 2, 3) + +#define SILABS_DBUS_I2C0_SCL(port, pin) SILABS_DBUS(port, pin, 42, 1, 0, 1) +#define SILABS_DBUS_I2C0_SDA(port, pin) SILABS_DBUS(port, pin, 42, 1, 1, 2) + +#define SILABS_DBUS_I2C1_SCL(port, pin) SILABS_DBUS(port, pin, 46, 1, 0, 1) +#define SILABS_DBUS_I2C1_SDA(port, pin) SILABS_DBUS(port, pin, 46, 1, 1, 2) + +#define SILABS_DBUS_KEYSCAN_COLOUT0(port, pin) SILABS_DBUS(port, pin, 50, 1, 0, 1) +#define SILABS_DBUS_KEYSCAN_COLOUT1(port, pin) SILABS_DBUS(port, pin, 50, 1, 1, 2) +#define SILABS_DBUS_KEYSCAN_COLOUT2(port, pin) SILABS_DBUS(port, pin, 50, 1, 2, 3) +#define SILABS_DBUS_KEYSCAN_COLOUT3(port, pin) SILABS_DBUS(port, pin, 50, 1, 3, 4) +#define SILABS_DBUS_KEYSCAN_COLOUT4(port, pin) SILABS_DBUS(port, pin, 50, 1, 4, 5) +#define SILABS_DBUS_KEYSCAN_COLOUT5(port, pin) SILABS_DBUS(port, pin, 50, 1, 5, 6) +#define SILABS_DBUS_KEYSCAN_COLOUT6(port, pin) SILABS_DBUS(port, pin, 50, 1, 6, 7) +#define SILABS_DBUS_KEYSCAN_COLOUT7(port, pin) SILABS_DBUS(port, pin, 50, 1, 7, 8) +#define SILABS_DBUS_KEYSCAN_ROWSENSE0(port, pin) SILABS_DBUS(port, pin, 50, 0, 0, 9) +#define SILABS_DBUS_KEYSCAN_ROWSENSE1(port, pin) SILABS_DBUS(port, pin, 50, 0, 0, 10) +#define SILABS_DBUS_KEYSCAN_ROWSENSE2(port, pin) SILABS_DBUS(port, pin, 50, 0, 0, 11) +#define SILABS_DBUS_KEYSCAN_ROWSENSE3(port, pin) SILABS_DBUS(port, pin, 50, 0, 0, 12) +#define SILABS_DBUS_KEYSCAN_ROWSENSE4(port, pin) SILABS_DBUS(port, pin, 50, 0, 0, 13) +#define SILABS_DBUS_KEYSCAN_ROWSENSE5(port, pin) SILABS_DBUS(port, pin, 50, 0, 0, 14) + +#define SILABS_DBUS_LETIMER0_OUT0(port, pin) SILABS_DBUS(port, pin, 66, 1, 0, 1) +#define SILABS_DBUS_LETIMER0_OUT1(port, pin) SILABS_DBUS(port, pin, 66, 1, 1, 2) + +#define SILABS_DBUS_MODEM_ANT0(port, pin) SILABS_DBUS(port, pin, 70, 1, 0, 1) +#define SILABS_DBUS_MODEM_ANT1(port, pin) SILABS_DBUS(port, pin, 70, 1, 1, 2) +#define SILABS_DBUS_MODEM_ANTROLLOVER(port, pin) SILABS_DBUS(port, pin, 70, 1, 2, 3) +#define SILABS_DBUS_MODEM_ANTRR0(port, pin) SILABS_DBUS(port, pin, 70, 1, 3, 4) +#define SILABS_DBUS_MODEM_ANTRR1(port, pin) SILABS_DBUS(port, pin, 70, 1, 4, 5) +#define SILABS_DBUS_MODEM_ANTRR2(port, pin) SILABS_DBUS(port, pin, 70, 1, 5, 6) +#define SILABS_DBUS_MODEM_ANTRR3(port, pin) SILABS_DBUS(port, pin, 70, 1, 6, 7) +#define SILABS_DBUS_MODEM_ANTRR4(port, pin) SILABS_DBUS(port, pin, 70, 1, 7, 8) +#define SILABS_DBUS_MODEM_ANTRR5(port, pin) SILABS_DBUS(port, pin, 70, 1, 8, 9) +#define SILABS_DBUS_MODEM_ANTSWEN(port, pin) SILABS_DBUS(port, pin, 70, 1, 9, 10) +#define SILABS_DBUS_MODEM_ANTSWUS(port, pin) SILABS_DBUS(port, pin, 70, 1, 10, 11) +#define SILABS_DBUS_MODEM_ANTTRIG(port, pin) SILABS_DBUS(port, pin, 70, 1, 11, 12) +#define SILABS_DBUS_MODEM_ANTTRIGSTOP(port, pin) SILABS_DBUS(port, pin, 70, 1, 12, 13) +#define SILABS_DBUS_MODEM_DCLK(port, pin) SILABS_DBUS(port, pin, 70, 1, 13, 14) +#define SILABS_DBUS_MODEM_DOUT(port, pin) SILABS_DBUS(port, pin, 70, 1, 14, 16) +#define SILABS_DBUS_MODEM_DIN(port, pin) SILABS_DBUS(port, pin, 70, 0, 0, 15) + +#define SILABS_DBUS_PCNT0_S0IN(port, pin) SILABS_DBUS(port, pin, 89, 0, 0, 0) +#define SILABS_DBUS_PCNT0_S1IN(port, pin) SILABS_DBUS(port, pin, 89, 0, 0, 1) + +#define SILABS_DBUS_PRS0_ASYNCH0(port, pin) SILABS_DBUS(port, pin, 92, 1, 0, 1) +#define SILABS_DBUS_PRS0_ASYNCH1(port, pin) SILABS_DBUS(port, pin, 92, 1, 1, 2) +#define SILABS_DBUS_PRS0_ASYNCH2(port, pin) SILABS_DBUS(port, pin, 92, 1, 2, 3) +#define SILABS_DBUS_PRS0_ASYNCH3(port, pin) SILABS_DBUS(port, pin, 92, 1, 3, 4) +#define SILABS_DBUS_PRS0_ASYNCH4(port, pin) SILABS_DBUS(port, pin, 92, 1, 4, 5) +#define SILABS_DBUS_PRS0_ASYNCH5(port, pin) SILABS_DBUS(port, pin, 92, 1, 5, 6) +#define SILABS_DBUS_PRS0_ASYNCH6(port, pin) SILABS_DBUS(port, pin, 92, 1, 6, 7) +#define SILABS_DBUS_PRS0_ASYNCH7(port, pin) SILABS_DBUS(port, pin, 92, 1, 7, 8) +#define SILABS_DBUS_PRS0_ASYNCH8(port, pin) SILABS_DBUS(port, pin, 92, 1, 8, 9) +#define SILABS_DBUS_PRS0_ASYNCH9(port, pin) SILABS_DBUS(port, pin, 92, 1, 9, 10) +#define SILABS_DBUS_PRS0_ASYNCH10(port, pin) SILABS_DBUS(port, pin, 92, 1, 10, 11) +#define SILABS_DBUS_PRS0_ASYNCH11(port, pin) SILABS_DBUS(port, pin, 92, 1, 11, 12) +#define SILABS_DBUS_PRS0_ASYNCH12(port, pin) SILABS_DBUS(port, pin, 92, 1, 12, 13) +#define SILABS_DBUS_PRS0_ASYNCH13(port, pin) SILABS_DBUS(port, pin, 92, 1, 13, 14) +#define SILABS_DBUS_PRS0_ASYNCH14(port, pin) SILABS_DBUS(port, pin, 92, 1, 14, 15) +#define SILABS_DBUS_PRS0_ASYNCH15(port, pin) SILABS_DBUS(port, pin, 92, 1, 15, 16) +#define SILABS_DBUS_PRS0_SYNCH0(port, pin) SILABS_DBUS(port, pin, 92, 1, 16, 17) +#define SILABS_DBUS_PRS0_SYNCH1(port, pin) SILABS_DBUS(port, pin, 92, 1, 17, 18) +#define SILABS_DBUS_PRS0_SYNCH2(port, pin) SILABS_DBUS(port, pin, 92, 1, 18, 19) +#define SILABS_DBUS_PRS0_SYNCH3(port, pin) SILABS_DBUS(port, pin, 92, 1, 19, 20) + +#define SILABS_DBUS_RAC_LNAEN(port, pin) SILABS_DBUS(port, pin, 114, 1, 0, 1) +#define SILABS_DBUS_RAC_PAEN(port, pin) SILABS_DBUS(port, pin, 114, 1, 1, 2) + +#define SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(port, pin) SILABS_DBUS(port, pin, 142, 0, 0, 0) + +#define SILABS_DBUS_TIMER0_CC0(port, pin) SILABS_DBUS(port, pin, 144, 1, 0, 1) +#define SILABS_DBUS_TIMER0_CC1(port, pin) SILABS_DBUS(port, pin, 144, 1, 1, 2) +#define SILABS_DBUS_TIMER0_CC2(port, pin) SILABS_DBUS(port, pin, 144, 1, 2, 3) +#define SILABS_DBUS_TIMER0_CDTI0(port, pin) SILABS_DBUS(port, pin, 144, 1, 3, 4) +#define SILABS_DBUS_TIMER0_CDTI1(port, pin) SILABS_DBUS(port, pin, 144, 1, 4, 5) +#define SILABS_DBUS_TIMER0_CDTI2(port, pin) SILABS_DBUS(port, pin, 144, 1, 5, 6) + +#define SILABS_DBUS_TIMER1_CC0(port, pin) SILABS_DBUS(port, pin, 152, 1, 0, 1) +#define SILABS_DBUS_TIMER1_CC1(port, pin) SILABS_DBUS(port, pin, 152, 1, 1, 2) +#define SILABS_DBUS_TIMER1_CC2(port, pin) SILABS_DBUS(port, pin, 152, 1, 2, 3) +#define SILABS_DBUS_TIMER1_CDTI0(port, pin) SILABS_DBUS(port, pin, 152, 1, 3, 4) +#define SILABS_DBUS_TIMER1_CDTI1(port, pin) SILABS_DBUS(port, pin, 152, 1, 4, 5) +#define SILABS_DBUS_TIMER1_CDTI2(port, pin) SILABS_DBUS(port, pin, 152, 1, 5, 6) + +#define SILABS_DBUS_TIMER2_CC0(port, pin) SILABS_DBUS(port, pin, 160, 1, 0, 1) +#define SILABS_DBUS_TIMER2_CC1(port, pin) SILABS_DBUS(port, pin, 160, 1, 1, 2) +#define SILABS_DBUS_TIMER2_CC2(port, pin) SILABS_DBUS(port, pin, 160, 1, 2, 3) +#define SILABS_DBUS_TIMER2_CDTI0(port, pin) SILABS_DBUS(port, pin, 160, 1, 3, 4) +#define SILABS_DBUS_TIMER2_CDTI1(port, pin) SILABS_DBUS(port, pin, 160, 1, 4, 5) +#define SILABS_DBUS_TIMER2_CDTI2(port, pin) SILABS_DBUS(port, pin, 160, 1, 5, 6) + +#define SILABS_DBUS_TIMER3_CC0(port, pin) SILABS_DBUS(port, pin, 168, 1, 0, 1) +#define SILABS_DBUS_TIMER3_CC1(port, pin) SILABS_DBUS(port, pin, 168, 1, 1, 2) +#define SILABS_DBUS_TIMER3_CC2(port, pin) SILABS_DBUS(port, pin, 168, 1, 2, 3) +#define SILABS_DBUS_TIMER3_CDTI0(port, pin) SILABS_DBUS(port, pin, 168, 1, 3, 4) +#define SILABS_DBUS_TIMER3_CDTI1(port, pin) SILABS_DBUS(port, pin, 168, 1, 4, 5) +#define SILABS_DBUS_TIMER3_CDTI2(port, pin) SILABS_DBUS(port, pin, 168, 1, 5, 6) + +#define SILABS_DBUS_TIMER4_CC0(port, pin) SILABS_DBUS(port, pin, 176, 1, 0, 1) +#define SILABS_DBUS_TIMER4_CC1(port, pin) SILABS_DBUS(port, pin, 176, 1, 1, 2) +#define SILABS_DBUS_TIMER4_CC2(port, pin) SILABS_DBUS(port, pin, 176, 1, 2, 3) +#define SILABS_DBUS_TIMER4_CDTI0(port, pin) SILABS_DBUS(port, pin, 176, 1, 3, 4) +#define SILABS_DBUS_TIMER4_CDTI1(port, pin) SILABS_DBUS(port, pin, 176, 1, 4, 5) +#define SILABS_DBUS_TIMER4_CDTI2(port, pin) SILABS_DBUS(port, pin, 176, 1, 5, 6) + +#define SILABS_DBUS_USART0_CS(port, pin) SILABS_DBUS(port, pin, 184, 1, 0, 1) +#define SILABS_DBUS_USART0_RTS(port, pin) SILABS_DBUS(port, pin, 184, 1, 1, 3) +#define SILABS_DBUS_USART0_RX(port, pin) SILABS_DBUS(port, pin, 184, 1, 2, 4) +#define SILABS_DBUS_USART0_CLK(port, pin) SILABS_DBUS(port, pin, 184, 1, 3, 5) +#define SILABS_DBUS_USART0_TX(port, pin) SILABS_DBUS(port, pin, 184, 1, 4, 6) +#define SILABS_DBUS_USART0_CTS(port, pin) SILABS_DBUS(port, pin, 184, 0, 0, 2) + +#define ACMP0_ACMPOUT_PA0 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x0) +#define ACMP0_ACMPOUT_PA1 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x1) +#define ACMP0_ACMPOUT_PA2 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x2) +#define ACMP0_ACMPOUT_PA3 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x3) +#define ACMP0_ACMPOUT_PA4 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x4) +#define ACMP0_ACMPOUT_PA5 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x5) +#define ACMP0_ACMPOUT_PA6 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x6) +#define ACMP0_ACMPOUT_PA7 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x7) +#define ACMP0_ACMPOUT_PA8 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x8) +#define ACMP0_ACMPOUT_PA9 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x9) +#define ACMP0_ACMPOUT_PB0 SILABS_DBUS_ACMP0_ACMPOUT(0x1, 0x0) +#define ACMP0_ACMPOUT_PB1 SILABS_DBUS_ACMP0_ACMPOUT(0x1, 0x1) +#define ACMP0_ACMPOUT_PB2 SILABS_DBUS_ACMP0_ACMPOUT(0x1, 0x2) +#define ACMP0_ACMPOUT_PB3 SILABS_DBUS_ACMP0_ACMPOUT(0x1, 0x3) +#define ACMP0_ACMPOUT_PB4 SILABS_DBUS_ACMP0_ACMPOUT(0x1, 0x4) +#define ACMP0_ACMPOUT_PB5 SILABS_DBUS_ACMP0_ACMPOUT(0x1, 0x5) +#define ACMP0_ACMPOUT_PC0 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x0) +#define ACMP0_ACMPOUT_PC1 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x1) +#define ACMP0_ACMPOUT_PC2 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x2) +#define ACMP0_ACMPOUT_PC3 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x3) +#define ACMP0_ACMPOUT_PC4 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x4) +#define ACMP0_ACMPOUT_PC5 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x5) +#define ACMP0_ACMPOUT_PC6 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x6) +#define ACMP0_ACMPOUT_PC7 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x7) +#define ACMP0_ACMPOUT_PC8 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x8) +#define ACMP0_ACMPOUT_PC9 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x9) +#define ACMP0_ACMPOUT_PD0 SILABS_DBUS_ACMP0_ACMPOUT(0x3, 0x0) +#define ACMP0_ACMPOUT_PD1 SILABS_DBUS_ACMP0_ACMPOUT(0x3, 0x1) +#define ACMP0_ACMPOUT_PD2 SILABS_DBUS_ACMP0_ACMPOUT(0x3, 0x2) +#define ACMP0_ACMPOUT_PD3 SILABS_DBUS_ACMP0_ACMPOUT(0x3, 0x3) +#define ACMP0_ACMPOUT_PD4 SILABS_DBUS_ACMP0_ACMPOUT(0x3, 0x4) +#define ACMP0_ACMPOUT_PD5 SILABS_DBUS_ACMP0_ACMPOUT(0x3, 0x5) + +#define ACMP1_ACMPOUT_PA0 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x0) +#define ACMP1_ACMPOUT_PA1 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x1) +#define ACMP1_ACMPOUT_PA2 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x2) +#define ACMP1_ACMPOUT_PA3 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x3) +#define ACMP1_ACMPOUT_PA4 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x4) +#define ACMP1_ACMPOUT_PA5 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x5) +#define ACMP1_ACMPOUT_PA6 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x6) +#define ACMP1_ACMPOUT_PA7 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x7) +#define ACMP1_ACMPOUT_PA8 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x8) +#define ACMP1_ACMPOUT_PA9 SILABS_DBUS_ACMP1_ACMPOUT(0x0, 0x9) +#define ACMP1_ACMPOUT_PB0 SILABS_DBUS_ACMP1_ACMPOUT(0x1, 0x0) +#define ACMP1_ACMPOUT_PB1 SILABS_DBUS_ACMP1_ACMPOUT(0x1, 0x1) +#define ACMP1_ACMPOUT_PB2 SILABS_DBUS_ACMP1_ACMPOUT(0x1, 0x2) +#define ACMP1_ACMPOUT_PB3 SILABS_DBUS_ACMP1_ACMPOUT(0x1, 0x3) +#define ACMP1_ACMPOUT_PB4 SILABS_DBUS_ACMP1_ACMPOUT(0x1, 0x4) +#define ACMP1_ACMPOUT_PB5 SILABS_DBUS_ACMP1_ACMPOUT(0x1, 0x5) +#define ACMP1_ACMPOUT_PC0 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x0) +#define ACMP1_ACMPOUT_PC1 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x1) +#define ACMP1_ACMPOUT_PC2 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x2) +#define ACMP1_ACMPOUT_PC3 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x3) +#define ACMP1_ACMPOUT_PC4 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x4) +#define ACMP1_ACMPOUT_PC5 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x5) +#define ACMP1_ACMPOUT_PC6 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x6) +#define ACMP1_ACMPOUT_PC7 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x7) +#define ACMP1_ACMPOUT_PC8 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x8) +#define ACMP1_ACMPOUT_PC9 SILABS_DBUS_ACMP1_ACMPOUT(0x2, 0x9) +#define ACMP1_ACMPOUT_PD0 SILABS_DBUS_ACMP1_ACMPOUT(0x3, 0x0) +#define ACMP1_ACMPOUT_PD1 SILABS_DBUS_ACMP1_ACMPOUT(0x3, 0x1) +#define ACMP1_ACMPOUT_PD2 SILABS_DBUS_ACMP1_ACMPOUT(0x3, 0x2) +#define ACMP1_ACMPOUT_PD3 SILABS_DBUS_ACMP1_ACMPOUT(0x3, 0x3) +#define ACMP1_ACMPOUT_PD4 SILABS_DBUS_ACMP1_ACMPOUT(0x3, 0x4) +#define ACMP1_ACMPOUT_PD5 SILABS_DBUS_ACMP1_ACMPOUT(0x3, 0x5) + +#define CMU_CLKOUT0_PC0 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x0) +#define CMU_CLKOUT0_PC1 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x1) +#define CMU_CLKOUT0_PC2 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x2) +#define CMU_CLKOUT0_PC3 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x3) +#define CMU_CLKOUT0_PC4 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x4) +#define CMU_CLKOUT0_PC5 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x5) +#define CMU_CLKOUT0_PC6 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x6) +#define CMU_CLKOUT0_PC7 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x7) +#define CMU_CLKOUT0_PC8 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x8) +#define CMU_CLKOUT0_PC9 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x9) +#define CMU_CLKOUT0_PD0 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x0) +#define CMU_CLKOUT0_PD1 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x1) +#define CMU_CLKOUT0_PD2 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x2) +#define CMU_CLKOUT0_PD3 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x3) +#define CMU_CLKOUT0_PD4 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x4) +#define CMU_CLKOUT0_PD5 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x5) +#define CMU_CLKOUT1_PC0 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x0) +#define CMU_CLKOUT1_PC1 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x1) +#define CMU_CLKOUT1_PC2 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x2) +#define CMU_CLKOUT1_PC3 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x3) +#define CMU_CLKOUT1_PC4 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x4) +#define CMU_CLKOUT1_PC5 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x5) +#define CMU_CLKOUT1_PC6 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x6) +#define CMU_CLKOUT1_PC7 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x7) +#define CMU_CLKOUT1_PC8 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x8) +#define CMU_CLKOUT1_PC9 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x9) +#define CMU_CLKOUT1_PD0 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x0) +#define CMU_CLKOUT1_PD1 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x1) +#define CMU_CLKOUT1_PD2 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x2) +#define CMU_CLKOUT1_PD3 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x3) +#define CMU_CLKOUT1_PD4 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x4) +#define CMU_CLKOUT1_PD5 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x5) +#define CMU_CLKOUT2_PA0 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x0) +#define CMU_CLKOUT2_PA1 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x1) +#define CMU_CLKOUT2_PA2 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x2) +#define CMU_CLKOUT2_PA3 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x3) +#define CMU_CLKOUT2_PA4 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x4) +#define CMU_CLKOUT2_PA5 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x5) +#define CMU_CLKOUT2_PA6 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x6) +#define CMU_CLKOUT2_PA7 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x7) +#define CMU_CLKOUT2_PA8 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x8) +#define CMU_CLKOUT2_PA9 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x9) +#define CMU_CLKOUT2_PB0 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x0) +#define CMU_CLKOUT2_PB1 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x1) +#define CMU_CLKOUT2_PB2 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x2) +#define CMU_CLKOUT2_PB3 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x3) +#define CMU_CLKOUT2_PB4 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x4) +#define CMU_CLKOUT2_PB5 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x5) +#define CMU_CLKIN0_PC0 SILABS_DBUS_CMU_CLKIN0(0x2, 0x0) +#define CMU_CLKIN0_PC1 SILABS_DBUS_CMU_CLKIN0(0x2, 0x1) +#define CMU_CLKIN0_PC2 SILABS_DBUS_CMU_CLKIN0(0x2, 0x2) +#define CMU_CLKIN0_PC3 SILABS_DBUS_CMU_CLKIN0(0x2, 0x3) +#define CMU_CLKIN0_PC4 SILABS_DBUS_CMU_CLKIN0(0x2, 0x4) +#define CMU_CLKIN0_PC5 SILABS_DBUS_CMU_CLKIN0(0x2, 0x5) +#define CMU_CLKIN0_PC6 SILABS_DBUS_CMU_CLKIN0(0x2, 0x6) +#define CMU_CLKIN0_PC7 SILABS_DBUS_CMU_CLKIN0(0x2, 0x7) +#define CMU_CLKIN0_PC8 SILABS_DBUS_CMU_CLKIN0(0x2, 0x8) +#define CMU_CLKIN0_PC9 SILABS_DBUS_CMU_CLKIN0(0x2, 0x9) +#define CMU_CLKIN0_PD0 SILABS_DBUS_CMU_CLKIN0(0x3, 0x0) +#define CMU_CLKIN0_PD1 SILABS_DBUS_CMU_CLKIN0(0x3, 0x1) +#define CMU_CLKIN0_PD2 SILABS_DBUS_CMU_CLKIN0(0x3, 0x2) +#define CMU_CLKIN0_PD3 SILABS_DBUS_CMU_CLKIN0(0x3, 0x3) +#define CMU_CLKIN0_PD4 SILABS_DBUS_CMU_CLKIN0(0x3, 0x4) +#define CMU_CLKIN0_PD5 SILABS_DBUS_CMU_CLKIN0(0x3, 0x5) + +#define EUSART0_CS_PA0 SILABS_DBUS_EUSART0_CS(0x0, 0x0) +#define EUSART0_CS_PA1 SILABS_DBUS_EUSART0_CS(0x0, 0x1) +#define EUSART0_CS_PA2 SILABS_DBUS_EUSART0_CS(0x0, 0x2) +#define EUSART0_CS_PA3 SILABS_DBUS_EUSART0_CS(0x0, 0x3) +#define EUSART0_CS_PA4 SILABS_DBUS_EUSART0_CS(0x0, 0x4) +#define EUSART0_CS_PA5 SILABS_DBUS_EUSART0_CS(0x0, 0x5) +#define EUSART0_CS_PA6 SILABS_DBUS_EUSART0_CS(0x0, 0x6) +#define EUSART0_CS_PA7 SILABS_DBUS_EUSART0_CS(0x0, 0x7) +#define EUSART0_CS_PA8 SILABS_DBUS_EUSART0_CS(0x0, 0x8) +#define EUSART0_CS_PA9 SILABS_DBUS_EUSART0_CS(0x0, 0x9) +#define EUSART0_CS_PB0 SILABS_DBUS_EUSART0_CS(0x1, 0x0) +#define EUSART0_CS_PB1 SILABS_DBUS_EUSART0_CS(0x1, 0x1) +#define EUSART0_CS_PB2 SILABS_DBUS_EUSART0_CS(0x1, 0x2) +#define EUSART0_CS_PB3 SILABS_DBUS_EUSART0_CS(0x1, 0x3) +#define EUSART0_CS_PB4 SILABS_DBUS_EUSART0_CS(0x1, 0x4) +#define EUSART0_CS_PB5 SILABS_DBUS_EUSART0_CS(0x1, 0x5) +#define EUSART0_RTS_PA0 SILABS_DBUS_EUSART0_RTS(0x0, 0x0) +#define EUSART0_RTS_PA1 SILABS_DBUS_EUSART0_RTS(0x0, 0x1) +#define EUSART0_RTS_PA2 SILABS_DBUS_EUSART0_RTS(0x0, 0x2) +#define EUSART0_RTS_PA3 SILABS_DBUS_EUSART0_RTS(0x0, 0x3) +#define EUSART0_RTS_PA4 SILABS_DBUS_EUSART0_RTS(0x0, 0x4) +#define EUSART0_RTS_PA5 SILABS_DBUS_EUSART0_RTS(0x0, 0x5) +#define EUSART0_RTS_PA6 SILABS_DBUS_EUSART0_RTS(0x0, 0x6) +#define EUSART0_RTS_PA7 SILABS_DBUS_EUSART0_RTS(0x0, 0x7) +#define EUSART0_RTS_PA8 SILABS_DBUS_EUSART0_RTS(0x0, 0x8) +#define EUSART0_RTS_PA9 SILABS_DBUS_EUSART0_RTS(0x0, 0x9) +#define EUSART0_RTS_PB0 SILABS_DBUS_EUSART0_RTS(0x1, 0x0) +#define EUSART0_RTS_PB1 SILABS_DBUS_EUSART0_RTS(0x1, 0x1) +#define EUSART0_RTS_PB2 SILABS_DBUS_EUSART0_RTS(0x1, 0x2) +#define EUSART0_RTS_PB3 SILABS_DBUS_EUSART0_RTS(0x1, 0x3) +#define EUSART0_RTS_PB4 SILABS_DBUS_EUSART0_RTS(0x1, 0x4) +#define EUSART0_RTS_PB5 SILABS_DBUS_EUSART0_RTS(0x1, 0x5) +#define EUSART0_RX_PA0 SILABS_DBUS_EUSART0_RX(0x0, 0x0) +#define EUSART0_RX_PA1 SILABS_DBUS_EUSART0_RX(0x0, 0x1) +#define EUSART0_RX_PA2 SILABS_DBUS_EUSART0_RX(0x0, 0x2) +#define EUSART0_RX_PA3 SILABS_DBUS_EUSART0_RX(0x0, 0x3) +#define EUSART0_RX_PA4 SILABS_DBUS_EUSART0_RX(0x0, 0x4) +#define EUSART0_RX_PA5 SILABS_DBUS_EUSART0_RX(0x0, 0x5) +#define EUSART0_RX_PA6 SILABS_DBUS_EUSART0_RX(0x0, 0x6) +#define EUSART0_RX_PA7 SILABS_DBUS_EUSART0_RX(0x0, 0x7) +#define EUSART0_RX_PA8 SILABS_DBUS_EUSART0_RX(0x0, 0x8) +#define EUSART0_RX_PA9 SILABS_DBUS_EUSART0_RX(0x0, 0x9) +#define EUSART0_RX_PB0 SILABS_DBUS_EUSART0_RX(0x1, 0x0) +#define EUSART0_RX_PB1 SILABS_DBUS_EUSART0_RX(0x1, 0x1) +#define EUSART0_RX_PB2 SILABS_DBUS_EUSART0_RX(0x1, 0x2) +#define EUSART0_RX_PB3 SILABS_DBUS_EUSART0_RX(0x1, 0x3) +#define EUSART0_RX_PB4 SILABS_DBUS_EUSART0_RX(0x1, 0x4) +#define EUSART0_RX_PB5 SILABS_DBUS_EUSART0_RX(0x1, 0x5) +#define EUSART0_SCLK_PA0 SILABS_DBUS_EUSART0_SCLK(0x0, 0x0) +#define EUSART0_SCLK_PA1 SILABS_DBUS_EUSART0_SCLK(0x0, 0x1) +#define EUSART0_SCLK_PA2 SILABS_DBUS_EUSART0_SCLK(0x0, 0x2) +#define EUSART0_SCLK_PA3 SILABS_DBUS_EUSART0_SCLK(0x0, 0x3) +#define EUSART0_SCLK_PA4 SILABS_DBUS_EUSART0_SCLK(0x0, 0x4) +#define EUSART0_SCLK_PA5 SILABS_DBUS_EUSART0_SCLK(0x0, 0x5) +#define EUSART0_SCLK_PA6 SILABS_DBUS_EUSART0_SCLK(0x0, 0x6) +#define EUSART0_SCLK_PA7 SILABS_DBUS_EUSART0_SCLK(0x0, 0x7) +#define EUSART0_SCLK_PA8 SILABS_DBUS_EUSART0_SCLK(0x0, 0x8) +#define EUSART0_SCLK_PA9 SILABS_DBUS_EUSART0_SCLK(0x0, 0x9) +#define EUSART0_SCLK_PB0 SILABS_DBUS_EUSART0_SCLK(0x1, 0x0) +#define EUSART0_SCLK_PB1 SILABS_DBUS_EUSART0_SCLK(0x1, 0x1) +#define EUSART0_SCLK_PB2 SILABS_DBUS_EUSART0_SCLK(0x1, 0x2) +#define EUSART0_SCLK_PB3 SILABS_DBUS_EUSART0_SCLK(0x1, 0x3) +#define EUSART0_SCLK_PB4 SILABS_DBUS_EUSART0_SCLK(0x1, 0x4) +#define EUSART0_SCLK_PB5 SILABS_DBUS_EUSART0_SCLK(0x1, 0x5) +#define EUSART0_TX_PA0 SILABS_DBUS_EUSART0_TX(0x0, 0x0) +#define EUSART0_TX_PA1 SILABS_DBUS_EUSART0_TX(0x0, 0x1) +#define EUSART0_TX_PA2 SILABS_DBUS_EUSART0_TX(0x0, 0x2) +#define EUSART0_TX_PA3 SILABS_DBUS_EUSART0_TX(0x0, 0x3) +#define EUSART0_TX_PA4 SILABS_DBUS_EUSART0_TX(0x0, 0x4) +#define EUSART0_TX_PA5 SILABS_DBUS_EUSART0_TX(0x0, 0x5) +#define EUSART0_TX_PA6 SILABS_DBUS_EUSART0_TX(0x0, 0x6) +#define EUSART0_TX_PA7 SILABS_DBUS_EUSART0_TX(0x0, 0x7) +#define EUSART0_TX_PA8 SILABS_DBUS_EUSART0_TX(0x0, 0x8) +#define EUSART0_TX_PA9 SILABS_DBUS_EUSART0_TX(0x0, 0x9) +#define EUSART0_TX_PB0 SILABS_DBUS_EUSART0_TX(0x1, 0x0) +#define EUSART0_TX_PB1 SILABS_DBUS_EUSART0_TX(0x1, 0x1) +#define EUSART0_TX_PB2 SILABS_DBUS_EUSART0_TX(0x1, 0x2) +#define EUSART0_TX_PB3 SILABS_DBUS_EUSART0_TX(0x1, 0x3) +#define EUSART0_TX_PB4 SILABS_DBUS_EUSART0_TX(0x1, 0x4) +#define EUSART0_TX_PB5 SILABS_DBUS_EUSART0_TX(0x1, 0x5) +#define EUSART0_CTS_PA0 SILABS_DBUS_EUSART0_CTS(0x0, 0x0) +#define EUSART0_CTS_PA1 SILABS_DBUS_EUSART0_CTS(0x0, 0x1) +#define EUSART0_CTS_PA2 SILABS_DBUS_EUSART0_CTS(0x0, 0x2) +#define EUSART0_CTS_PA3 SILABS_DBUS_EUSART0_CTS(0x0, 0x3) +#define EUSART0_CTS_PA4 SILABS_DBUS_EUSART0_CTS(0x0, 0x4) +#define EUSART0_CTS_PA5 SILABS_DBUS_EUSART0_CTS(0x0, 0x5) +#define EUSART0_CTS_PA6 SILABS_DBUS_EUSART0_CTS(0x0, 0x6) +#define EUSART0_CTS_PA7 SILABS_DBUS_EUSART0_CTS(0x0, 0x7) +#define EUSART0_CTS_PA8 SILABS_DBUS_EUSART0_CTS(0x0, 0x8) +#define EUSART0_CTS_PA9 SILABS_DBUS_EUSART0_CTS(0x0, 0x9) +#define EUSART0_CTS_PB0 SILABS_DBUS_EUSART0_CTS(0x1, 0x0) +#define EUSART0_CTS_PB1 SILABS_DBUS_EUSART0_CTS(0x1, 0x1) +#define EUSART0_CTS_PB2 SILABS_DBUS_EUSART0_CTS(0x1, 0x2) +#define EUSART0_CTS_PB3 SILABS_DBUS_EUSART0_CTS(0x1, 0x3) +#define EUSART0_CTS_PB4 SILABS_DBUS_EUSART0_CTS(0x1, 0x4) +#define EUSART0_CTS_PB5 SILABS_DBUS_EUSART0_CTS(0x1, 0x5) + +#define EUSART1_CS_PA0 SILABS_DBUS_EUSART1_CS(0x0, 0x0) +#define EUSART1_CS_PA1 SILABS_DBUS_EUSART1_CS(0x0, 0x1) +#define EUSART1_CS_PA2 SILABS_DBUS_EUSART1_CS(0x0, 0x2) +#define EUSART1_CS_PA3 SILABS_DBUS_EUSART1_CS(0x0, 0x3) +#define EUSART1_CS_PA4 SILABS_DBUS_EUSART1_CS(0x0, 0x4) +#define EUSART1_CS_PA5 SILABS_DBUS_EUSART1_CS(0x0, 0x5) +#define EUSART1_CS_PA6 SILABS_DBUS_EUSART1_CS(0x0, 0x6) +#define EUSART1_CS_PA7 SILABS_DBUS_EUSART1_CS(0x0, 0x7) +#define EUSART1_CS_PA8 SILABS_DBUS_EUSART1_CS(0x0, 0x8) +#define EUSART1_CS_PA9 SILABS_DBUS_EUSART1_CS(0x0, 0x9) +#define EUSART1_CS_PB0 SILABS_DBUS_EUSART1_CS(0x1, 0x0) +#define EUSART1_CS_PB1 SILABS_DBUS_EUSART1_CS(0x1, 0x1) +#define EUSART1_CS_PB2 SILABS_DBUS_EUSART1_CS(0x1, 0x2) +#define EUSART1_CS_PB3 SILABS_DBUS_EUSART1_CS(0x1, 0x3) +#define EUSART1_CS_PB4 SILABS_DBUS_EUSART1_CS(0x1, 0x4) +#define EUSART1_CS_PB5 SILABS_DBUS_EUSART1_CS(0x1, 0x5) +#define EUSART1_CS_PC0 SILABS_DBUS_EUSART1_CS(0x2, 0x0) +#define EUSART1_CS_PC1 SILABS_DBUS_EUSART1_CS(0x2, 0x1) +#define EUSART1_CS_PC2 SILABS_DBUS_EUSART1_CS(0x2, 0x2) +#define EUSART1_CS_PC3 SILABS_DBUS_EUSART1_CS(0x2, 0x3) +#define EUSART1_CS_PC4 SILABS_DBUS_EUSART1_CS(0x2, 0x4) +#define EUSART1_CS_PC5 SILABS_DBUS_EUSART1_CS(0x2, 0x5) +#define EUSART1_CS_PC6 SILABS_DBUS_EUSART1_CS(0x2, 0x6) +#define EUSART1_CS_PC7 SILABS_DBUS_EUSART1_CS(0x2, 0x7) +#define EUSART1_CS_PC8 SILABS_DBUS_EUSART1_CS(0x2, 0x8) +#define EUSART1_CS_PC9 SILABS_DBUS_EUSART1_CS(0x2, 0x9) +#define EUSART1_CS_PD0 SILABS_DBUS_EUSART1_CS(0x3, 0x0) +#define EUSART1_CS_PD1 SILABS_DBUS_EUSART1_CS(0x3, 0x1) +#define EUSART1_CS_PD2 SILABS_DBUS_EUSART1_CS(0x3, 0x2) +#define EUSART1_CS_PD3 SILABS_DBUS_EUSART1_CS(0x3, 0x3) +#define EUSART1_CS_PD4 SILABS_DBUS_EUSART1_CS(0x3, 0x4) +#define EUSART1_CS_PD5 SILABS_DBUS_EUSART1_CS(0x3, 0x5) +#define EUSART1_RTS_PA0 SILABS_DBUS_EUSART1_RTS(0x0, 0x0) +#define EUSART1_RTS_PA1 SILABS_DBUS_EUSART1_RTS(0x0, 0x1) +#define EUSART1_RTS_PA2 SILABS_DBUS_EUSART1_RTS(0x0, 0x2) +#define EUSART1_RTS_PA3 SILABS_DBUS_EUSART1_RTS(0x0, 0x3) +#define EUSART1_RTS_PA4 SILABS_DBUS_EUSART1_RTS(0x0, 0x4) +#define EUSART1_RTS_PA5 SILABS_DBUS_EUSART1_RTS(0x0, 0x5) +#define EUSART1_RTS_PA6 SILABS_DBUS_EUSART1_RTS(0x0, 0x6) +#define EUSART1_RTS_PA7 SILABS_DBUS_EUSART1_RTS(0x0, 0x7) +#define EUSART1_RTS_PA8 SILABS_DBUS_EUSART1_RTS(0x0, 0x8) +#define EUSART1_RTS_PA9 SILABS_DBUS_EUSART1_RTS(0x0, 0x9) +#define EUSART1_RTS_PB0 SILABS_DBUS_EUSART1_RTS(0x1, 0x0) +#define EUSART1_RTS_PB1 SILABS_DBUS_EUSART1_RTS(0x1, 0x1) +#define EUSART1_RTS_PB2 SILABS_DBUS_EUSART1_RTS(0x1, 0x2) +#define EUSART1_RTS_PB3 SILABS_DBUS_EUSART1_RTS(0x1, 0x3) +#define EUSART1_RTS_PB4 SILABS_DBUS_EUSART1_RTS(0x1, 0x4) +#define EUSART1_RTS_PB5 SILABS_DBUS_EUSART1_RTS(0x1, 0x5) +#define EUSART1_RTS_PC0 SILABS_DBUS_EUSART1_RTS(0x2, 0x0) +#define EUSART1_RTS_PC1 SILABS_DBUS_EUSART1_RTS(0x2, 0x1) +#define EUSART1_RTS_PC2 SILABS_DBUS_EUSART1_RTS(0x2, 0x2) +#define EUSART1_RTS_PC3 SILABS_DBUS_EUSART1_RTS(0x2, 0x3) +#define EUSART1_RTS_PC4 SILABS_DBUS_EUSART1_RTS(0x2, 0x4) +#define EUSART1_RTS_PC5 SILABS_DBUS_EUSART1_RTS(0x2, 0x5) +#define EUSART1_RTS_PC6 SILABS_DBUS_EUSART1_RTS(0x2, 0x6) +#define EUSART1_RTS_PC7 SILABS_DBUS_EUSART1_RTS(0x2, 0x7) +#define EUSART1_RTS_PC8 SILABS_DBUS_EUSART1_RTS(0x2, 0x8) +#define EUSART1_RTS_PC9 SILABS_DBUS_EUSART1_RTS(0x2, 0x9) +#define EUSART1_RTS_PD0 SILABS_DBUS_EUSART1_RTS(0x3, 0x0) +#define EUSART1_RTS_PD1 SILABS_DBUS_EUSART1_RTS(0x3, 0x1) +#define EUSART1_RTS_PD2 SILABS_DBUS_EUSART1_RTS(0x3, 0x2) +#define EUSART1_RTS_PD3 SILABS_DBUS_EUSART1_RTS(0x3, 0x3) +#define EUSART1_RTS_PD4 SILABS_DBUS_EUSART1_RTS(0x3, 0x4) +#define EUSART1_RTS_PD5 SILABS_DBUS_EUSART1_RTS(0x3, 0x5) +#define EUSART1_RX_PA0 SILABS_DBUS_EUSART1_RX(0x0, 0x0) +#define EUSART1_RX_PA1 SILABS_DBUS_EUSART1_RX(0x0, 0x1) +#define EUSART1_RX_PA2 SILABS_DBUS_EUSART1_RX(0x0, 0x2) +#define EUSART1_RX_PA3 SILABS_DBUS_EUSART1_RX(0x0, 0x3) +#define EUSART1_RX_PA4 SILABS_DBUS_EUSART1_RX(0x0, 0x4) +#define EUSART1_RX_PA5 SILABS_DBUS_EUSART1_RX(0x0, 0x5) +#define EUSART1_RX_PA6 SILABS_DBUS_EUSART1_RX(0x0, 0x6) +#define EUSART1_RX_PA7 SILABS_DBUS_EUSART1_RX(0x0, 0x7) +#define EUSART1_RX_PA8 SILABS_DBUS_EUSART1_RX(0x0, 0x8) +#define EUSART1_RX_PA9 SILABS_DBUS_EUSART1_RX(0x0, 0x9) +#define EUSART1_RX_PB0 SILABS_DBUS_EUSART1_RX(0x1, 0x0) +#define EUSART1_RX_PB1 SILABS_DBUS_EUSART1_RX(0x1, 0x1) +#define EUSART1_RX_PB2 SILABS_DBUS_EUSART1_RX(0x1, 0x2) +#define EUSART1_RX_PB3 SILABS_DBUS_EUSART1_RX(0x1, 0x3) +#define EUSART1_RX_PB4 SILABS_DBUS_EUSART1_RX(0x1, 0x4) +#define EUSART1_RX_PB5 SILABS_DBUS_EUSART1_RX(0x1, 0x5) +#define EUSART1_RX_PC0 SILABS_DBUS_EUSART1_RX(0x2, 0x0) +#define EUSART1_RX_PC1 SILABS_DBUS_EUSART1_RX(0x2, 0x1) +#define EUSART1_RX_PC2 SILABS_DBUS_EUSART1_RX(0x2, 0x2) +#define EUSART1_RX_PC3 SILABS_DBUS_EUSART1_RX(0x2, 0x3) +#define EUSART1_RX_PC4 SILABS_DBUS_EUSART1_RX(0x2, 0x4) +#define EUSART1_RX_PC5 SILABS_DBUS_EUSART1_RX(0x2, 0x5) +#define EUSART1_RX_PC6 SILABS_DBUS_EUSART1_RX(0x2, 0x6) +#define EUSART1_RX_PC7 SILABS_DBUS_EUSART1_RX(0x2, 0x7) +#define EUSART1_RX_PC8 SILABS_DBUS_EUSART1_RX(0x2, 0x8) +#define EUSART1_RX_PC9 SILABS_DBUS_EUSART1_RX(0x2, 0x9) +#define EUSART1_RX_PD0 SILABS_DBUS_EUSART1_RX(0x3, 0x0) +#define EUSART1_RX_PD1 SILABS_DBUS_EUSART1_RX(0x3, 0x1) +#define EUSART1_RX_PD2 SILABS_DBUS_EUSART1_RX(0x3, 0x2) +#define EUSART1_RX_PD3 SILABS_DBUS_EUSART1_RX(0x3, 0x3) +#define EUSART1_RX_PD4 SILABS_DBUS_EUSART1_RX(0x3, 0x4) +#define EUSART1_RX_PD5 SILABS_DBUS_EUSART1_RX(0x3, 0x5) +#define EUSART1_SCLK_PA0 SILABS_DBUS_EUSART1_SCLK(0x0, 0x0) +#define EUSART1_SCLK_PA1 SILABS_DBUS_EUSART1_SCLK(0x0, 0x1) +#define EUSART1_SCLK_PA2 SILABS_DBUS_EUSART1_SCLK(0x0, 0x2) +#define EUSART1_SCLK_PA3 SILABS_DBUS_EUSART1_SCLK(0x0, 0x3) +#define EUSART1_SCLK_PA4 SILABS_DBUS_EUSART1_SCLK(0x0, 0x4) +#define EUSART1_SCLK_PA5 SILABS_DBUS_EUSART1_SCLK(0x0, 0x5) +#define EUSART1_SCLK_PA6 SILABS_DBUS_EUSART1_SCLK(0x0, 0x6) +#define EUSART1_SCLK_PA7 SILABS_DBUS_EUSART1_SCLK(0x0, 0x7) +#define EUSART1_SCLK_PA8 SILABS_DBUS_EUSART1_SCLK(0x0, 0x8) +#define EUSART1_SCLK_PA9 SILABS_DBUS_EUSART1_SCLK(0x0, 0x9) +#define EUSART1_SCLK_PB0 SILABS_DBUS_EUSART1_SCLK(0x1, 0x0) +#define EUSART1_SCLK_PB1 SILABS_DBUS_EUSART1_SCLK(0x1, 0x1) +#define EUSART1_SCLK_PB2 SILABS_DBUS_EUSART1_SCLK(0x1, 0x2) +#define EUSART1_SCLK_PB3 SILABS_DBUS_EUSART1_SCLK(0x1, 0x3) +#define EUSART1_SCLK_PB4 SILABS_DBUS_EUSART1_SCLK(0x1, 0x4) +#define EUSART1_SCLK_PB5 SILABS_DBUS_EUSART1_SCLK(0x1, 0x5) +#define EUSART1_SCLK_PC0 SILABS_DBUS_EUSART1_SCLK(0x2, 0x0) +#define EUSART1_SCLK_PC1 SILABS_DBUS_EUSART1_SCLK(0x2, 0x1) +#define EUSART1_SCLK_PC2 SILABS_DBUS_EUSART1_SCLK(0x2, 0x2) +#define EUSART1_SCLK_PC3 SILABS_DBUS_EUSART1_SCLK(0x2, 0x3) +#define EUSART1_SCLK_PC4 SILABS_DBUS_EUSART1_SCLK(0x2, 0x4) +#define EUSART1_SCLK_PC5 SILABS_DBUS_EUSART1_SCLK(0x2, 0x5) +#define EUSART1_SCLK_PC6 SILABS_DBUS_EUSART1_SCLK(0x2, 0x6) +#define EUSART1_SCLK_PC7 SILABS_DBUS_EUSART1_SCLK(0x2, 0x7) +#define EUSART1_SCLK_PC8 SILABS_DBUS_EUSART1_SCLK(0x2, 0x8) +#define EUSART1_SCLK_PC9 SILABS_DBUS_EUSART1_SCLK(0x2, 0x9) +#define EUSART1_SCLK_PD0 SILABS_DBUS_EUSART1_SCLK(0x3, 0x0) +#define EUSART1_SCLK_PD1 SILABS_DBUS_EUSART1_SCLK(0x3, 0x1) +#define EUSART1_SCLK_PD2 SILABS_DBUS_EUSART1_SCLK(0x3, 0x2) +#define EUSART1_SCLK_PD3 SILABS_DBUS_EUSART1_SCLK(0x3, 0x3) +#define EUSART1_SCLK_PD4 SILABS_DBUS_EUSART1_SCLK(0x3, 0x4) +#define EUSART1_SCLK_PD5 SILABS_DBUS_EUSART1_SCLK(0x3, 0x5) +#define EUSART1_TX_PA0 SILABS_DBUS_EUSART1_TX(0x0, 0x0) +#define EUSART1_TX_PA1 SILABS_DBUS_EUSART1_TX(0x0, 0x1) +#define EUSART1_TX_PA2 SILABS_DBUS_EUSART1_TX(0x0, 0x2) +#define EUSART1_TX_PA3 SILABS_DBUS_EUSART1_TX(0x0, 0x3) +#define EUSART1_TX_PA4 SILABS_DBUS_EUSART1_TX(0x0, 0x4) +#define EUSART1_TX_PA5 SILABS_DBUS_EUSART1_TX(0x0, 0x5) +#define EUSART1_TX_PA6 SILABS_DBUS_EUSART1_TX(0x0, 0x6) +#define EUSART1_TX_PA7 SILABS_DBUS_EUSART1_TX(0x0, 0x7) +#define EUSART1_TX_PA8 SILABS_DBUS_EUSART1_TX(0x0, 0x8) +#define EUSART1_TX_PA9 SILABS_DBUS_EUSART1_TX(0x0, 0x9) +#define EUSART1_TX_PB0 SILABS_DBUS_EUSART1_TX(0x1, 0x0) +#define EUSART1_TX_PB1 SILABS_DBUS_EUSART1_TX(0x1, 0x1) +#define EUSART1_TX_PB2 SILABS_DBUS_EUSART1_TX(0x1, 0x2) +#define EUSART1_TX_PB3 SILABS_DBUS_EUSART1_TX(0x1, 0x3) +#define EUSART1_TX_PB4 SILABS_DBUS_EUSART1_TX(0x1, 0x4) +#define EUSART1_TX_PB5 SILABS_DBUS_EUSART1_TX(0x1, 0x5) +#define EUSART1_TX_PC0 SILABS_DBUS_EUSART1_TX(0x2, 0x0) +#define EUSART1_TX_PC1 SILABS_DBUS_EUSART1_TX(0x2, 0x1) +#define EUSART1_TX_PC2 SILABS_DBUS_EUSART1_TX(0x2, 0x2) +#define EUSART1_TX_PC3 SILABS_DBUS_EUSART1_TX(0x2, 0x3) +#define EUSART1_TX_PC4 SILABS_DBUS_EUSART1_TX(0x2, 0x4) +#define EUSART1_TX_PC5 SILABS_DBUS_EUSART1_TX(0x2, 0x5) +#define EUSART1_TX_PC6 SILABS_DBUS_EUSART1_TX(0x2, 0x6) +#define EUSART1_TX_PC7 SILABS_DBUS_EUSART1_TX(0x2, 0x7) +#define EUSART1_TX_PC8 SILABS_DBUS_EUSART1_TX(0x2, 0x8) +#define EUSART1_TX_PC9 SILABS_DBUS_EUSART1_TX(0x2, 0x9) +#define EUSART1_TX_PD0 SILABS_DBUS_EUSART1_TX(0x3, 0x0) +#define EUSART1_TX_PD1 SILABS_DBUS_EUSART1_TX(0x3, 0x1) +#define EUSART1_TX_PD2 SILABS_DBUS_EUSART1_TX(0x3, 0x2) +#define EUSART1_TX_PD3 SILABS_DBUS_EUSART1_TX(0x3, 0x3) +#define EUSART1_TX_PD4 SILABS_DBUS_EUSART1_TX(0x3, 0x4) +#define EUSART1_TX_PD5 SILABS_DBUS_EUSART1_TX(0x3, 0x5) +#define EUSART1_CTS_PA0 SILABS_DBUS_EUSART1_CTS(0x0, 0x0) +#define EUSART1_CTS_PA1 SILABS_DBUS_EUSART1_CTS(0x0, 0x1) +#define EUSART1_CTS_PA2 SILABS_DBUS_EUSART1_CTS(0x0, 0x2) +#define EUSART1_CTS_PA3 SILABS_DBUS_EUSART1_CTS(0x0, 0x3) +#define EUSART1_CTS_PA4 SILABS_DBUS_EUSART1_CTS(0x0, 0x4) +#define EUSART1_CTS_PA5 SILABS_DBUS_EUSART1_CTS(0x0, 0x5) +#define EUSART1_CTS_PA6 SILABS_DBUS_EUSART1_CTS(0x0, 0x6) +#define EUSART1_CTS_PA7 SILABS_DBUS_EUSART1_CTS(0x0, 0x7) +#define EUSART1_CTS_PA8 SILABS_DBUS_EUSART1_CTS(0x0, 0x8) +#define EUSART1_CTS_PA9 SILABS_DBUS_EUSART1_CTS(0x0, 0x9) +#define EUSART1_CTS_PB0 SILABS_DBUS_EUSART1_CTS(0x1, 0x0) +#define EUSART1_CTS_PB1 SILABS_DBUS_EUSART1_CTS(0x1, 0x1) +#define EUSART1_CTS_PB2 SILABS_DBUS_EUSART1_CTS(0x1, 0x2) +#define EUSART1_CTS_PB3 SILABS_DBUS_EUSART1_CTS(0x1, 0x3) +#define EUSART1_CTS_PB4 SILABS_DBUS_EUSART1_CTS(0x1, 0x4) +#define EUSART1_CTS_PB5 SILABS_DBUS_EUSART1_CTS(0x1, 0x5) +#define EUSART1_CTS_PC0 SILABS_DBUS_EUSART1_CTS(0x2, 0x0) +#define EUSART1_CTS_PC1 SILABS_DBUS_EUSART1_CTS(0x2, 0x1) +#define EUSART1_CTS_PC2 SILABS_DBUS_EUSART1_CTS(0x2, 0x2) +#define EUSART1_CTS_PC3 SILABS_DBUS_EUSART1_CTS(0x2, 0x3) +#define EUSART1_CTS_PC4 SILABS_DBUS_EUSART1_CTS(0x2, 0x4) +#define EUSART1_CTS_PC5 SILABS_DBUS_EUSART1_CTS(0x2, 0x5) +#define EUSART1_CTS_PC6 SILABS_DBUS_EUSART1_CTS(0x2, 0x6) +#define EUSART1_CTS_PC7 SILABS_DBUS_EUSART1_CTS(0x2, 0x7) +#define EUSART1_CTS_PC8 SILABS_DBUS_EUSART1_CTS(0x2, 0x8) +#define EUSART1_CTS_PC9 SILABS_DBUS_EUSART1_CTS(0x2, 0x9) +#define EUSART1_CTS_PD0 SILABS_DBUS_EUSART1_CTS(0x3, 0x0) +#define EUSART1_CTS_PD1 SILABS_DBUS_EUSART1_CTS(0x3, 0x1) +#define EUSART1_CTS_PD2 SILABS_DBUS_EUSART1_CTS(0x3, 0x2) +#define EUSART1_CTS_PD3 SILABS_DBUS_EUSART1_CTS(0x3, 0x3) +#define EUSART1_CTS_PD4 SILABS_DBUS_EUSART1_CTS(0x3, 0x4) +#define EUSART1_CTS_PD5 SILABS_DBUS_EUSART1_CTS(0x3, 0x5) + +#define PTI_DCLK_PC0 SILABS_DBUS_PTI_DCLK(0x2, 0x0) +#define PTI_DCLK_PC1 SILABS_DBUS_PTI_DCLK(0x2, 0x1) +#define PTI_DCLK_PC2 SILABS_DBUS_PTI_DCLK(0x2, 0x2) +#define PTI_DCLK_PC3 SILABS_DBUS_PTI_DCLK(0x2, 0x3) +#define PTI_DCLK_PC4 SILABS_DBUS_PTI_DCLK(0x2, 0x4) +#define PTI_DCLK_PC5 SILABS_DBUS_PTI_DCLK(0x2, 0x5) +#define PTI_DCLK_PC6 SILABS_DBUS_PTI_DCLK(0x2, 0x6) +#define PTI_DCLK_PC7 SILABS_DBUS_PTI_DCLK(0x2, 0x7) +#define PTI_DCLK_PC8 SILABS_DBUS_PTI_DCLK(0x2, 0x8) +#define PTI_DCLK_PC9 SILABS_DBUS_PTI_DCLK(0x2, 0x9) +#define PTI_DCLK_PD0 SILABS_DBUS_PTI_DCLK(0x3, 0x0) +#define PTI_DCLK_PD1 SILABS_DBUS_PTI_DCLK(0x3, 0x1) +#define PTI_DCLK_PD2 SILABS_DBUS_PTI_DCLK(0x3, 0x2) +#define PTI_DCLK_PD3 SILABS_DBUS_PTI_DCLK(0x3, 0x3) +#define PTI_DCLK_PD4 SILABS_DBUS_PTI_DCLK(0x3, 0x4) +#define PTI_DCLK_PD5 SILABS_DBUS_PTI_DCLK(0x3, 0x5) +#define PTI_DFRAME_PC0 SILABS_DBUS_PTI_DFRAME(0x2, 0x0) +#define PTI_DFRAME_PC1 SILABS_DBUS_PTI_DFRAME(0x2, 0x1) +#define PTI_DFRAME_PC2 SILABS_DBUS_PTI_DFRAME(0x2, 0x2) +#define PTI_DFRAME_PC3 SILABS_DBUS_PTI_DFRAME(0x2, 0x3) +#define PTI_DFRAME_PC4 SILABS_DBUS_PTI_DFRAME(0x2, 0x4) +#define PTI_DFRAME_PC5 SILABS_DBUS_PTI_DFRAME(0x2, 0x5) +#define PTI_DFRAME_PC6 SILABS_DBUS_PTI_DFRAME(0x2, 0x6) +#define PTI_DFRAME_PC7 SILABS_DBUS_PTI_DFRAME(0x2, 0x7) +#define PTI_DFRAME_PC8 SILABS_DBUS_PTI_DFRAME(0x2, 0x8) +#define PTI_DFRAME_PC9 SILABS_DBUS_PTI_DFRAME(0x2, 0x9) +#define PTI_DFRAME_PD0 SILABS_DBUS_PTI_DFRAME(0x3, 0x0) +#define PTI_DFRAME_PD1 SILABS_DBUS_PTI_DFRAME(0x3, 0x1) +#define PTI_DFRAME_PD2 SILABS_DBUS_PTI_DFRAME(0x3, 0x2) +#define PTI_DFRAME_PD3 SILABS_DBUS_PTI_DFRAME(0x3, 0x3) +#define PTI_DFRAME_PD4 SILABS_DBUS_PTI_DFRAME(0x3, 0x4) +#define PTI_DFRAME_PD5 SILABS_DBUS_PTI_DFRAME(0x3, 0x5) +#define PTI_DOUT_PC0 SILABS_DBUS_PTI_DOUT(0x2, 0x0) +#define PTI_DOUT_PC1 SILABS_DBUS_PTI_DOUT(0x2, 0x1) +#define PTI_DOUT_PC2 SILABS_DBUS_PTI_DOUT(0x2, 0x2) +#define PTI_DOUT_PC3 SILABS_DBUS_PTI_DOUT(0x2, 0x3) +#define PTI_DOUT_PC4 SILABS_DBUS_PTI_DOUT(0x2, 0x4) +#define PTI_DOUT_PC5 SILABS_DBUS_PTI_DOUT(0x2, 0x5) +#define PTI_DOUT_PC6 SILABS_DBUS_PTI_DOUT(0x2, 0x6) +#define PTI_DOUT_PC7 SILABS_DBUS_PTI_DOUT(0x2, 0x7) +#define PTI_DOUT_PC8 SILABS_DBUS_PTI_DOUT(0x2, 0x8) +#define PTI_DOUT_PC9 SILABS_DBUS_PTI_DOUT(0x2, 0x9) +#define PTI_DOUT_PD0 SILABS_DBUS_PTI_DOUT(0x3, 0x0) +#define PTI_DOUT_PD1 SILABS_DBUS_PTI_DOUT(0x3, 0x1) +#define PTI_DOUT_PD2 SILABS_DBUS_PTI_DOUT(0x3, 0x2) +#define PTI_DOUT_PD3 SILABS_DBUS_PTI_DOUT(0x3, 0x3) +#define PTI_DOUT_PD4 SILABS_DBUS_PTI_DOUT(0x3, 0x4) +#define PTI_DOUT_PD5 SILABS_DBUS_PTI_DOUT(0x3, 0x5) + +#define I2C0_SCL_PA0 SILABS_DBUS_I2C0_SCL(0x0, 0x0) +#define I2C0_SCL_PA1 SILABS_DBUS_I2C0_SCL(0x0, 0x1) +#define I2C0_SCL_PA2 SILABS_DBUS_I2C0_SCL(0x0, 0x2) +#define I2C0_SCL_PA3 SILABS_DBUS_I2C0_SCL(0x0, 0x3) +#define I2C0_SCL_PA4 SILABS_DBUS_I2C0_SCL(0x0, 0x4) +#define I2C0_SCL_PA5 SILABS_DBUS_I2C0_SCL(0x0, 0x5) +#define I2C0_SCL_PA6 SILABS_DBUS_I2C0_SCL(0x0, 0x6) +#define I2C0_SCL_PA7 SILABS_DBUS_I2C0_SCL(0x0, 0x7) +#define I2C0_SCL_PA8 SILABS_DBUS_I2C0_SCL(0x0, 0x8) +#define I2C0_SCL_PA9 SILABS_DBUS_I2C0_SCL(0x0, 0x9) +#define I2C0_SCL_PB0 SILABS_DBUS_I2C0_SCL(0x1, 0x0) +#define I2C0_SCL_PB1 SILABS_DBUS_I2C0_SCL(0x1, 0x1) +#define I2C0_SCL_PB2 SILABS_DBUS_I2C0_SCL(0x1, 0x2) +#define I2C0_SCL_PB3 SILABS_DBUS_I2C0_SCL(0x1, 0x3) +#define I2C0_SCL_PB4 SILABS_DBUS_I2C0_SCL(0x1, 0x4) +#define I2C0_SCL_PB5 SILABS_DBUS_I2C0_SCL(0x1, 0x5) +#define I2C0_SCL_PC0 SILABS_DBUS_I2C0_SCL(0x2, 0x0) +#define I2C0_SCL_PC1 SILABS_DBUS_I2C0_SCL(0x2, 0x1) +#define I2C0_SCL_PC2 SILABS_DBUS_I2C0_SCL(0x2, 0x2) +#define I2C0_SCL_PC3 SILABS_DBUS_I2C0_SCL(0x2, 0x3) +#define I2C0_SCL_PC4 SILABS_DBUS_I2C0_SCL(0x2, 0x4) +#define I2C0_SCL_PC5 SILABS_DBUS_I2C0_SCL(0x2, 0x5) +#define I2C0_SCL_PC6 SILABS_DBUS_I2C0_SCL(0x2, 0x6) +#define I2C0_SCL_PC7 SILABS_DBUS_I2C0_SCL(0x2, 0x7) +#define I2C0_SCL_PC8 SILABS_DBUS_I2C0_SCL(0x2, 0x8) +#define I2C0_SCL_PC9 SILABS_DBUS_I2C0_SCL(0x2, 0x9) +#define I2C0_SCL_PD0 SILABS_DBUS_I2C0_SCL(0x3, 0x0) +#define I2C0_SCL_PD1 SILABS_DBUS_I2C0_SCL(0x3, 0x1) +#define I2C0_SCL_PD2 SILABS_DBUS_I2C0_SCL(0x3, 0x2) +#define I2C0_SCL_PD3 SILABS_DBUS_I2C0_SCL(0x3, 0x3) +#define I2C0_SCL_PD4 SILABS_DBUS_I2C0_SCL(0x3, 0x4) +#define I2C0_SCL_PD5 SILABS_DBUS_I2C0_SCL(0x3, 0x5) +#define I2C0_SDA_PA0 SILABS_DBUS_I2C0_SDA(0x0, 0x0) +#define I2C0_SDA_PA1 SILABS_DBUS_I2C0_SDA(0x0, 0x1) +#define I2C0_SDA_PA2 SILABS_DBUS_I2C0_SDA(0x0, 0x2) +#define I2C0_SDA_PA3 SILABS_DBUS_I2C0_SDA(0x0, 0x3) +#define I2C0_SDA_PA4 SILABS_DBUS_I2C0_SDA(0x0, 0x4) +#define I2C0_SDA_PA5 SILABS_DBUS_I2C0_SDA(0x0, 0x5) +#define I2C0_SDA_PA6 SILABS_DBUS_I2C0_SDA(0x0, 0x6) +#define I2C0_SDA_PA7 SILABS_DBUS_I2C0_SDA(0x0, 0x7) +#define I2C0_SDA_PA8 SILABS_DBUS_I2C0_SDA(0x0, 0x8) +#define I2C0_SDA_PA9 SILABS_DBUS_I2C0_SDA(0x0, 0x9) +#define I2C0_SDA_PB0 SILABS_DBUS_I2C0_SDA(0x1, 0x0) +#define I2C0_SDA_PB1 SILABS_DBUS_I2C0_SDA(0x1, 0x1) +#define I2C0_SDA_PB2 SILABS_DBUS_I2C0_SDA(0x1, 0x2) +#define I2C0_SDA_PB3 SILABS_DBUS_I2C0_SDA(0x1, 0x3) +#define I2C0_SDA_PB4 SILABS_DBUS_I2C0_SDA(0x1, 0x4) +#define I2C0_SDA_PB5 SILABS_DBUS_I2C0_SDA(0x1, 0x5) +#define I2C0_SDA_PC0 SILABS_DBUS_I2C0_SDA(0x2, 0x0) +#define I2C0_SDA_PC1 SILABS_DBUS_I2C0_SDA(0x2, 0x1) +#define I2C0_SDA_PC2 SILABS_DBUS_I2C0_SDA(0x2, 0x2) +#define I2C0_SDA_PC3 SILABS_DBUS_I2C0_SDA(0x2, 0x3) +#define I2C0_SDA_PC4 SILABS_DBUS_I2C0_SDA(0x2, 0x4) +#define I2C0_SDA_PC5 SILABS_DBUS_I2C0_SDA(0x2, 0x5) +#define I2C0_SDA_PC6 SILABS_DBUS_I2C0_SDA(0x2, 0x6) +#define I2C0_SDA_PC7 SILABS_DBUS_I2C0_SDA(0x2, 0x7) +#define I2C0_SDA_PC8 SILABS_DBUS_I2C0_SDA(0x2, 0x8) +#define I2C0_SDA_PC9 SILABS_DBUS_I2C0_SDA(0x2, 0x9) +#define I2C0_SDA_PD0 SILABS_DBUS_I2C0_SDA(0x3, 0x0) +#define I2C0_SDA_PD1 SILABS_DBUS_I2C0_SDA(0x3, 0x1) +#define I2C0_SDA_PD2 SILABS_DBUS_I2C0_SDA(0x3, 0x2) +#define I2C0_SDA_PD3 SILABS_DBUS_I2C0_SDA(0x3, 0x3) +#define I2C0_SDA_PD4 SILABS_DBUS_I2C0_SDA(0x3, 0x4) +#define I2C0_SDA_PD5 SILABS_DBUS_I2C0_SDA(0x3, 0x5) + +#define I2C1_SCL_PC0 SILABS_DBUS_I2C1_SCL(0x2, 0x0) +#define I2C1_SCL_PC1 SILABS_DBUS_I2C1_SCL(0x2, 0x1) +#define I2C1_SCL_PC2 SILABS_DBUS_I2C1_SCL(0x2, 0x2) +#define I2C1_SCL_PC3 SILABS_DBUS_I2C1_SCL(0x2, 0x3) +#define I2C1_SCL_PC4 SILABS_DBUS_I2C1_SCL(0x2, 0x4) +#define I2C1_SCL_PC5 SILABS_DBUS_I2C1_SCL(0x2, 0x5) +#define I2C1_SCL_PC6 SILABS_DBUS_I2C1_SCL(0x2, 0x6) +#define I2C1_SCL_PC7 SILABS_DBUS_I2C1_SCL(0x2, 0x7) +#define I2C1_SCL_PC8 SILABS_DBUS_I2C1_SCL(0x2, 0x8) +#define I2C1_SCL_PC9 SILABS_DBUS_I2C1_SCL(0x2, 0x9) +#define I2C1_SCL_PD0 SILABS_DBUS_I2C1_SCL(0x3, 0x0) +#define I2C1_SCL_PD1 SILABS_DBUS_I2C1_SCL(0x3, 0x1) +#define I2C1_SCL_PD2 SILABS_DBUS_I2C1_SCL(0x3, 0x2) +#define I2C1_SCL_PD3 SILABS_DBUS_I2C1_SCL(0x3, 0x3) +#define I2C1_SCL_PD4 SILABS_DBUS_I2C1_SCL(0x3, 0x4) +#define I2C1_SCL_PD5 SILABS_DBUS_I2C1_SCL(0x3, 0x5) +#define I2C1_SDA_PC0 SILABS_DBUS_I2C1_SDA(0x2, 0x0) +#define I2C1_SDA_PC1 SILABS_DBUS_I2C1_SDA(0x2, 0x1) +#define I2C1_SDA_PC2 SILABS_DBUS_I2C1_SDA(0x2, 0x2) +#define I2C1_SDA_PC3 SILABS_DBUS_I2C1_SDA(0x2, 0x3) +#define I2C1_SDA_PC4 SILABS_DBUS_I2C1_SDA(0x2, 0x4) +#define I2C1_SDA_PC5 SILABS_DBUS_I2C1_SDA(0x2, 0x5) +#define I2C1_SDA_PC6 SILABS_DBUS_I2C1_SDA(0x2, 0x6) +#define I2C1_SDA_PC7 SILABS_DBUS_I2C1_SDA(0x2, 0x7) +#define I2C1_SDA_PC8 SILABS_DBUS_I2C1_SDA(0x2, 0x8) +#define I2C1_SDA_PC9 SILABS_DBUS_I2C1_SDA(0x2, 0x9) +#define I2C1_SDA_PD0 SILABS_DBUS_I2C1_SDA(0x3, 0x0) +#define I2C1_SDA_PD1 SILABS_DBUS_I2C1_SDA(0x3, 0x1) +#define I2C1_SDA_PD2 SILABS_DBUS_I2C1_SDA(0x3, 0x2) +#define I2C1_SDA_PD3 SILABS_DBUS_I2C1_SDA(0x3, 0x3) +#define I2C1_SDA_PD4 SILABS_DBUS_I2C1_SDA(0x3, 0x4) +#define I2C1_SDA_PD5 SILABS_DBUS_I2C1_SDA(0x3, 0x5) + +#define KEYSCAN_COLOUT0_PA0 SILABS_DBUS_KEYSCAN_COLOUT0(0x0, 0x0) +#define KEYSCAN_COLOUT0_PA1 SILABS_DBUS_KEYSCAN_COLOUT0(0x0, 0x1) +#define KEYSCAN_COLOUT0_PA2 SILABS_DBUS_KEYSCAN_COLOUT0(0x0, 0x2) +#define KEYSCAN_COLOUT0_PA3 SILABS_DBUS_KEYSCAN_COLOUT0(0x0, 0x3) +#define KEYSCAN_COLOUT0_PA4 SILABS_DBUS_KEYSCAN_COLOUT0(0x0, 0x4) +#define KEYSCAN_COLOUT0_PA5 SILABS_DBUS_KEYSCAN_COLOUT0(0x0, 0x5) +#define KEYSCAN_COLOUT0_PA6 SILABS_DBUS_KEYSCAN_COLOUT0(0x0, 0x6) +#define KEYSCAN_COLOUT0_PA7 SILABS_DBUS_KEYSCAN_COLOUT0(0x0, 0x7) +#define KEYSCAN_COLOUT0_PA8 SILABS_DBUS_KEYSCAN_COLOUT0(0x0, 0x8) +#define KEYSCAN_COLOUT0_PA9 SILABS_DBUS_KEYSCAN_COLOUT0(0x0, 0x9) +#define KEYSCAN_COLOUT0_PB0 SILABS_DBUS_KEYSCAN_COLOUT0(0x1, 0x0) +#define KEYSCAN_COLOUT0_PB1 SILABS_DBUS_KEYSCAN_COLOUT0(0x1, 0x1) +#define KEYSCAN_COLOUT0_PB2 SILABS_DBUS_KEYSCAN_COLOUT0(0x1, 0x2) +#define KEYSCAN_COLOUT0_PB3 SILABS_DBUS_KEYSCAN_COLOUT0(0x1, 0x3) +#define KEYSCAN_COLOUT0_PB4 SILABS_DBUS_KEYSCAN_COLOUT0(0x1, 0x4) +#define KEYSCAN_COLOUT0_PB5 SILABS_DBUS_KEYSCAN_COLOUT0(0x1, 0x5) +#define KEYSCAN_COLOUT0_PC0 SILABS_DBUS_KEYSCAN_COLOUT0(0x2, 0x0) +#define KEYSCAN_COLOUT0_PC1 SILABS_DBUS_KEYSCAN_COLOUT0(0x2, 0x1) +#define KEYSCAN_COLOUT0_PC2 SILABS_DBUS_KEYSCAN_COLOUT0(0x2, 0x2) +#define KEYSCAN_COLOUT0_PC3 SILABS_DBUS_KEYSCAN_COLOUT0(0x2, 0x3) +#define KEYSCAN_COLOUT0_PC4 SILABS_DBUS_KEYSCAN_COLOUT0(0x2, 0x4) +#define KEYSCAN_COLOUT0_PC5 SILABS_DBUS_KEYSCAN_COLOUT0(0x2, 0x5) +#define KEYSCAN_COLOUT0_PC6 SILABS_DBUS_KEYSCAN_COLOUT0(0x2, 0x6) +#define KEYSCAN_COLOUT0_PC7 SILABS_DBUS_KEYSCAN_COLOUT0(0x2, 0x7) +#define KEYSCAN_COLOUT0_PC8 SILABS_DBUS_KEYSCAN_COLOUT0(0x2, 0x8) +#define KEYSCAN_COLOUT0_PC9 SILABS_DBUS_KEYSCAN_COLOUT0(0x2, 0x9) +#define KEYSCAN_COLOUT0_PD0 SILABS_DBUS_KEYSCAN_COLOUT0(0x3, 0x0) +#define KEYSCAN_COLOUT0_PD1 SILABS_DBUS_KEYSCAN_COLOUT0(0x3, 0x1) +#define KEYSCAN_COLOUT0_PD2 SILABS_DBUS_KEYSCAN_COLOUT0(0x3, 0x2) +#define KEYSCAN_COLOUT0_PD3 SILABS_DBUS_KEYSCAN_COLOUT0(0x3, 0x3) +#define KEYSCAN_COLOUT0_PD4 SILABS_DBUS_KEYSCAN_COLOUT0(0x3, 0x4) +#define KEYSCAN_COLOUT0_PD5 SILABS_DBUS_KEYSCAN_COLOUT0(0x3, 0x5) +#define KEYSCAN_COLOUT1_PA0 SILABS_DBUS_KEYSCAN_COLOUT1(0x0, 0x0) +#define KEYSCAN_COLOUT1_PA1 SILABS_DBUS_KEYSCAN_COLOUT1(0x0, 0x1) +#define KEYSCAN_COLOUT1_PA2 SILABS_DBUS_KEYSCAN_COLOUT1(0x0, 0x2) +#define KEYSCAN_COLOUT1_PA3 SILABS_DBUS_KEYSCAN_COLOUT1(0x0, 0x3) +#define KEYSCAN_COLOUT1_PA4 SILABS_DBUS_KEYSCAN_COLOUT1(0x0, 0x4) +#define KEYSCAN_COLOUT1_PA5 SILABS_DBUS_KEYSCAN_COLOUT1(0x0, 0x5) +#define KEYSCAN_COLOUT1_PA6 SILABS_DBUS_KEYSCAN_COLOUT1(0x0, 0x6) +#define KEYSCAN_COLOUT1_PA7 SILABS_DBUS_KEYSCAN_COLOUT1(0x0, 0x7) +#define KEYSCAN_COLOUT1_PA8 SILABS_DBUS_KEYSCAN_COLOUT1(0x0, 0x8) +#define KEYSCAN_COLOUT1_PA9 SILABS_DBUS_KEYSCAN_COLOUT1(0x0, 0x9) +#define KEYSCAN_COLOUT1_PB0 SILABS_DBUS_KEYSCAN_COLOUT1(0x1, 0x0) +#define KEYSCAN_COLOUT1_PB1 SILABS_DBUS_KEYSCAN_COLOUT1(0x1, 0x1) +#define KEYSCAN_COLOUT1_PB2 SILABS_DBUS_KEYSCAN_COLOUT1(0x1, 0x2) +#define KEYSCAN_COLOUT1_PB3 SILABS_DBUS_KEYSCAN_COLOUT1(0x1, 0x3) +#define KEYSCAN_COLOUT1_PB4 SILABS_DBUS_KEYSCAN_COLOUT1(0x1, 0x4) +#define KEYSCAN_COLOUT1_PB5 SILABS_DBUS_KEYSCAN_COLOUT1(0x1, 0x5) +#define KEYSCAN_COLOUT1_PC0 SILABS_DBUS_KEYSCAN_COLOUT1(0x2, 0x0) +#define KEYSCAN_COLOUT1_PC1 SILABS_DBUS_KEYSCAN_COLOUT1(0x2, 0x1) +#define KEYSCAN_COLOUT1_PC2 SILABS_DBUS_KEYSCAN_COLOUT1(0x2, 0x2) +#define KEYSCAN_COLOUT1_PC3 SILABS_DBUS_KEYSCAN_COLOUT1(0x2, 0x3) +#define KEYSCAN_COLOUT1_PC4 SILABS_DBUS_KEYSCAN_COLOUT1(0x2, 0x4) +#define KEYSCAN_COLOUT1_PC5 SILABS_DBUS_KEYSCAN_COLOUT1(0x2, 0x5) +#define KEYSCAN_COLOUT1_PC6 SILABS_DBUS_KEYSCAN_COLOUT1(0x2, 0x6) +#define KEYSCAN_COLOUT1_PC7 SILABS_DBUS_KEYSCAN_COLOUT1(0x2, 0x7) +#define KEYSCAN_COLOUT1_PC8 SILABS_DBUS_KEYSCAN_COLOUT1(0x2, 0x8) +#define KEYSCAN_COLOUT1_PC9 SILABS_DBUS_KEYSCAN_COLOUT1(0x2, 0x9) +#define KEYSCAN_COLOUT1_PD0 SILABS_DBUS_KEYSCAN_COLOUT1(0x3, 0x0) +#define KEYSCAN_COLOUT1_PD1 SILABS_DBUS_KEYSCAN_COLOUT1(0x3, 0x1) +#define KEYSCAN_COLOUT1_PD2 SILABS_DBUS_KEYSCAN_COLOUT1(0x3, 0x2) +#define KEYSCAN_COLOUT1_PD3 SILABS_DBUS_KEYSCAN_COLOUT1(0x3, 0x3) +#define KEYSCAN_COLOUT1_PD4 SILABS_DBUS_KEYSCAN_COLOUT1(0x3, 0x4) +#define KEYSCAN_COLOUT1_PD5 SILABS_DBUS_KEYSCAN_COLOUT1(0x3, 0x5) +#define KEYSCAN_COLOUT2_PA0 SILABS_DBUS_KEYSCAN_COLOUT2(0x0, 0x0) +#define KEYSCAN_COLOUT2_PA1 SILABS_DBUS_KEYSCAN_COLOUT2(0x0, 0x1) +#define KEYSCAN_COLOUT2_PA2 SILABS_DBUS_KEYSCAN_COLOUT2(0x0, 0x2) +#define KEYSCAN_COLOUT2_PA3 SILABS_DBUS_KEYSCAN_COLOUT2(0x0, 0x3) +#define KEYSCAN_COLOUT2_PA4 SILABS_DBUS_KEYSCAN_COLOUT2(0x0, 0x4) +#define KEYSCAN_COLOUT2_PA5 SILABS_DBUS_KEYSCAN_COLOUT2(0x0, 0x5) +#define KEYSCAN_COLOUT2_PA6 SILABS_DBUS_KEYSCAN_COLOUT2(0x0, 0x6) +#define KEYSCAN_COLOUT2_PA7 SILABS_DBUS_KEYSCAN_COLOUT2(0x0, 0x7) +#define KEYSCAN_COLOUT2_PA8 SILABS_DBUS_KEYSCAN_COLOUT2(0x0, 0x8) +#define KEYSCAN_COLOUT2_PA9 SILABS_DBUS_KEYSCAN_COLOUT2(0x0, 0x9) +#define KEYSCAN_COLOUT2_PB0 SILABS_DBUS_KEYSCAN_COLOUT2(0x1, 0x0) +#define KEYSCAN_COLOUT2_PB1 SILABS_DBUS_KEYSCAN_COLOUT2(0x1, 0x1) +#define KEYSCAN_COLOUT2_PB2 SILABS_DBUS_KEYSCAN_COLOUT2(0x1, 0x2) +#define KEYSCAN_COLOUT2_PB3 SILABS_DBUS_KEYSCAN_COLOUT2(0x1, 0x3) +#define KEYSCAN_COLOUT2_PB4 SILABS_DBUS_KEYSCAN_COLOUT2(0x1, 0x4) +#define KEYSCAN_COLOUT2_PB5 SILABS_DBUS_KEYSCAN_COLOUT2(0x1, 0x5) +#define KEYSCAN_COLOUT2_PC0 SILABS_DBUS_KEYSCAN_COLOUT2(0x2, 0x0) +#define KEYSCAN_COLOUT2_PC1 SILABS_DBUS_KEYSCAN_COLOUT2(0x2, 0x1) +#define KEYSCAN_COLOUT2_PC2 SILABS_DBUS_KEYSCAN_COLOUT2(0x2, 0x2) +#define KEYSCAN_COLOUT2_PC3 SILABS_DBUS_KEYSCAN_COLOUT2(0x2, 0x3) +#define KEYSCAN_COLOUT2_PC4 SILABS_DBUS_KEYSCAN_COLOUT2(0x2, 0x4) +#define KEYSCAN_COLOUT2_PC5 SILABS_DBUS_KEYSCAN_COLOUT2(0x2, 0x5) +#define KEYSCAN_COLOUT2_PC6 SILABS_DBUS_KEYSCAN_COLOUT2(0x2, 0x6) +#define KEYSCAN_COLOUT2_PC7 SILABS_DBUS_KEYSCAN_COLOUT2(0x2, 0x7) +#define KEYSCAN_COLOUT2_PC8 SILABS_DBUS_KEYSCAN_COLOUT2(0x2, 0x8) +#define KEYSCAN_COLOUT2_PC9 SILABS_DBUS_KEYSCAN_COLOUT2(0x2, 0x9) +#define KEYSCAN_COLOUT2_PD0 SILABS_DBUS_KEYSCAN_COLOUT2(0x3, 0x0) +#define KEYSCAN_COLOUT2_PD1 SILABS_DBUS_KEYSCAN_COLOUT2(0x3, 0x1) +#define KEYSCAN_COLOUT2_PD2 SILABS_DBUS_KEYSCAN_COLOUT2(0x3, 0x2) +#define KEYSCAN_COLOUT2_PD3 SILABS_DBUS_KEYSCAN_COLOUT2(0x3, 0x3) +#define KEYSCAN_COLOUT2_PD4 SILABS_DBUS_KEYSCAN_COLOUT2(0x3, 0x4) +#define KEYSCAN_COLOUT2_PD5 SILABS_DBUS_KEYSCAN_COLOUT2(0x3, 0x5) +#define KEYSCAN_COLOUT3_PA0 SILABS_DBUS_KEYSCAN_COLOUT3(0x0, 0x0) +#define KEYSCAN_COLOUT3_PA1 SILABS_DBUS_KEYSCAN_COLOUT3(0x0, 0x1) +#define KEYSCAN_COLOUT3_PA2 SILABS_DBUS_KEYSCAN_COLOUT3(0x0, 0x2) +#define KEYSCAN_COLOUT3_PA3 SILABS_DBUS_KEYSCAN_COLOUT3(0x0, 0x3) +#define KEYSCAN_COLOUT3_PA4 SILABS_DBUS_KEYSCAN_COLOUT3(0x0, 0x4) +#define KEYSCAN_COLOUT3_PA5 SILABS_DBUS_KEYSCAN_COLOUT3(0x0, 0x5) +#define KEYSCAN_COLOUT3_PA6 SILABS_DBUS_KEYSCAN_COLOUT3(0x0, 0x6) +#define KEYSCAN_COLOUT3_PA7 SILABS_DBUS_KEYSCAN_COLOUT3(0x0, 0x7) +#define KEYSCAN_COLOUT3_PA8 SILABS_DBUS_KEYSCAN_COLOUT3(0x0, 0x8) +#define KEYSCAN_COLOUT3_PA9 SILABS_DBUS_KEYSCAN_COLOUT3(0x0, 0x9) +#define KEYSCAN_COLOUT3_PB0 SILABS_DBUS_KEYSCAN_COLOUT3(0x1, 0x0) +#define KEYSCAN_COLOUT3_PB1 SILABS_DBUS_KEYSCAN_COLOUT3(0x1, 0x1) +#define KEYSCAN_COLOUT3_PB2 SILABS_DBUS_KEYSCAN_COLOUT3(0x1, 0x2) +#define KEYSCAN_COLOUT3_PB3 SILABS_DBUS_KEYSCAN_COLOUT3(0x1, 0x3) +#define KEYSCAN_COLOUT3_PB4 SILABS_DBUS_KEYSCAN_COLOUT3(0x1, 0x4) +#define KEYSCAN_COLOUT3_PB5 SILABS_DBUS_KEYSCAN_COLOUT3(0x1, 0x5) +#define KEYSCAN_COLOUT3_PC0 SILABS_DBUS_KEYSCAN_COLOUT3(0x2, 0x0) +#define KEYSCAN_COLOUT3_PC1 SILABS_DBUS_KEYSCAN_COLOUT3(0x2, 0x1) +#define KEYSCAN_COLOUT3_PC2 SILABS_DBUS_KEYSCAN_COLOUT3(0x2, 0x2) +#define KEYSCAN_COLOUT3_PC3 SILABS_DBUS_KEYSCAN_COLOUT3(0x2, 0x3) +#define KEYSCAN_COLOUT3_PC4 SILABS_DBUS_KEYSCAN_COLOUT3(0x2, 0x4) +#define KEYSCAN_COLOUT3_PC5 SILABS_DBUS_KEYSCAN_COLOUT3(0x2, 0x5) +#define KEYSCAN_COLOUT3_PC6 SILABS_DBUS_KEYSCAN_COLOUT3(0x2, 0x6) +#define KEYSCAN_COLOUT3_PC7 SILABS_DBUS_KEYSCAN_COLOUT3(0x2, 0x7) +#define KEYSCAN_COLOUT3_PC8 SILABS_DBUS_KEYSCAN_COLOUT3(0x2, 0x8) +#define KEYSCAN_COLOUT3_PC9 SILABS_DBUS_KEYSCAN_COLOUT3(0x2, 0x9) +#define KEYSCAN_COLOUT3_PD0 SILABS_DBUS_KEYSCAN_COLOUT3(0x3, 0x0) +#define KEYSCAN_COLOUT3_PD1 SILABS_DBUS_KEYSCAN_COLOUT3(0x3, 0x1) +#define KEYSCAN_COLOUT3_PD2 SILABS_DBUS_KEYSCAN_COLOUT3(0x3, 0x2) +#define KEYSCAN_COLOUT3_PD3 SILABS_DBUS_KEYSCAN_COLOUT3(0x3, 0x3) +#define KEYSCAN_COLOUT3_PD4 SILABS_DBUS_KEYSCAN_COLOUT3(0x3, 0x4) +#define KEYSCAN_COLOUT3_PD5 SILABS_DBUS_KEYSCAN_COLOUT3(0x3, 0x5) +#define KEYSCAN_COLOUT4_PA0 SILABS_DBUS_KEYSCAN_COLOUT4(0x0, 0x0) +#define KEYSCAN_COLOUT4_PA1 SILABS_DBUS_KEYSCAN_COLOUT4(0x0, 0x1) +#define KEYSCAN_COLOUT4_PA2 SILABS_DBUS_KEYSCAN_COLOUT4(0x0, 0x2) +#define KEYSCAN_COLOUT4_PA3 SILABS_DBUS_KEYSCAN_COLOUT4(0x0, 0x3) +#define KEYSCAN_COLOUT4_PA4 SILABS_DBUS_KEYSCAN_COLOUT4(0x0, 0x4) +#define KEYSCAN_COLOUT4_PA5 SILABS_DBUS_KEYSCAN_COLOUT4(0x0, 0x5) +#define KEYSCAN_COLOUT4_PA6 SILABS_DBUS_KEYSCAN_COLOUT4(0x0, 0x6) +#define KEYSCAN_COLOUT4_PA7 SILABS_DBUS_KEYSCAN_COLOUT4(0x0, 0x7) +#define KEYSCAN_COLOUT4_PA8 SILABS_DBUS_KEYSCAN_COLOUT4(0x0, 0x8) +#define KEYSCAN_COLOUT4_PA9 SILABS_DBUS_KEYSCAN_COLOUT4(0x0, 0x9) +#define KEYSCAN_COLOUT4_PB0 SILABS_DBUS_KEYSCAN_COLOUT4(0x1, 0x0) +#define KEYSCAN_COLOUT4_PB1 SILABS_DBUS_KEYSCAN_COLOUT4(0x1, 0x1) +#define KEYSCAN_COLOUT4_PB2 SILABS_DBUS_KEYSCAN_COLOUT4(0x1, 0x2) +#define KEYSCAN_COLOUT4_PB3 SILABS_DBUS_KEYSCAN_COLOUT4(0x1, 0x3) +#define KEYSCAN_COLOUT4_PB4 SILABS_DBUS_KEYSCAN_COLOUT4(0x1, 0x4) +#define KEYSCAN_COLOUT4_PB5 SILABS_DBUS_KEYSCAN_COLOUT4(0x1, 0x5) +#define KEYSCAN_COLOUT4_PC0 SILABS_DBUS_KEYSCAN_COLOUT4(0x2, 0x0) +#define KEYSCAN_COLOUT4_PC1 SILABS_DBUS_KEYSCAN_COLOUT4(0x2, 0x1) +#define KEYSCAN_COLOUT4_PC2 SILABS_DBUS_KEYSCAN_COLOUT4(0x2, 0x2) +#define KEYSCAN_COLOUT4_PC3 SILABS_DBUS_KEYSCAN_COLOUT4(0x2, 0x3) +#define KEYSCAN_COLOUT4_PC4 SILABS_DBUS_KEYSCAN_COLOUT4(0x2, 0x4) +#define KEYSCAN_COLOUT4_PC5 SILABS_DBUS_KEYSCAN_COLOUT4(0x2, 0x5) +#define KEYSCAN_COLOUT4_PC6 SILABS_DBUS_KEYSCAN_COLOUT4(0x2, 0x6) +#define KEYSCAN_COLOUT4_PC7 SILABS_DBUS_KEYSCAN_COLOUT4(0x2, 0x7) +#define KEYSCAN_COLOUT4_PC8 SILABS_DBUS_KEYSCAN_COLOUT4(0x2, 0x8) +#define KEYSCAN_COLOUT4_PC9 SILABS_DBUS_KEYSCAN_COLOUT4(0x2, 0x9) +#define KEYSCAN_COLOUT4_PD0 SILABS_DBUS_KEYSCAN_COLOUT4(0x3, 0x0) +#define KEYSCAN_COLOUT4_PD1 SILABS_DBUS_KEYSCAN_COLOUT4(0x3, 0x1) +#define KEYSCAN_COLOUT4_PD2 SILABS_DBUS_KEYSCAN_COLOUT4(0x3, 0x2) +#define KEYSCAN_COLOUT4_PD3 SILABS_DBUS_KEYSCAN_COLOUT4(0x3, 0x3) +#define KEYSCAN_COLOUT4_PD4 SILABS_DBUS_KEYSCAN_COLOUT4(0x3, 0x4) +#define KEYSCAN_COLOUT4_PD5 SILABS_DBUS_KEYSCAN_COLOUT4(0x3, 0x5) +#define KEYSCAN_COLOUT5_PA0 SILABS_DBUS_KEYSCAN_COLOUT5(0x0, 0x0) +#define KEYSCAN_COLOUT5_PA1 SILABS_DBUS_KEYSCAN_COLOUT5(0x0, 0x1) +#define KEYSCAN_COLOUT5_PA2 SILABS_DBUS_KEYSCAN_COLOUT5(0x0, 0x2) +#define KEYSCAN_COLOUT5_PA3 SILABS_DBUS_KEYSCAN_COLOUT5(0x0, 0x3) +#define KEYSCAN_COLOUT5_PA4 SILABS_DBUS_KEYSCAN_COLOUT5(0x0, 0x4) +#define KEYSCAN_COLOUT5_PA5 SILABS_DBUS_KEYSCAN_COLOUT5(0x0, 0x5) +#define KEYSCAN_COLOUT5_PA6 SILABS_DBUS_KEYSCAN_COLOUT5(0x0, 0x6) +#define KEYSCAN_COLOUT5_PA7 SILABS_DBUS_KEYSCAN_COLOUT5(0x0, 0x7) +#define KEYSCAN_COLOUT5_PA8 SILABS_DBUS_KEYSCAN_COLOUT5(0x0, 0x8) +#define KEYSCAN_COLOUT5_PA9 SILABS_DBUS_KEYSCAN_COLOUT5(0x0, 0x9) +#define KEYSCAN_COLOUT5_PB0 SILABS_DBUS_KEYSCAN_COLOUT5(0x1, 0x0) +#define KEYSCAN_COLOUT5_PB1 SILABS_DBUS_KEYSCAN_COLOUT5(0x1, 0x1) +#define KEYSCAN_COLOUT5_PB2 SILABS_DBUS_KEYSCAN_COLOUT5(0x1, 0x2) +#define KEYSCAN_COLOUT5_PB3 SILABS_DBUS_KEYSCAN_COLOUT5(0x1, 0x3) +#define KEYSCAN_COLOUT5_PB4 SILABS_DBUS_KEYSCAN_COLOUT5(0x1, 0x4) +#define KEYSCAN_COLOUT5_PB5 SILABS_DBUS_KEYSCAN_COLOUT5(0x1, 0x5) +#define KEYSCAN_COLOUT5_PC0 SILABS_DBUS_KEYSCAN_COLOUT5(0x2, 0x0) +#define KEYSCAN_COLOUT5_PC1 SILABS_DBUS_KEYSCAN_COLOUT5(0x2, 0x1) +#define KEYSCAN_COLOUT5_PC2 SILABS_DBUS_KEYSCAN_COLOUT5(0x2, 0x2) +#define KEYSCAN_COLOUT5_PC3 SILABS_DBUS_KEYSCAN_COLOUT5(0x2, 0x3) +#define KEYSCAN_COLOUT5_PC4 SILABS_DBUS_KEYSCAN_COLOUT5(0x2, 0x4) +#define KEYSCAN_COLOUT5_PC5 SILABS_DBUS_KEYSCAN_COLOUT5(0x2, 0x5) +#define KEYSCAN_COLOUT5_PC6 SILABS_DBUS_KEYSCAN_COLOUT5(0x2, 0x6) +#define KEYSCAN_COLOUT5_PC7 SILABS_DBUS_KEYSCAN_COLOUT5(0x2, 0x7) +#define KEYSCAN_COLOUT5_PC8 SILABS_DBUS_KEYSCAN_COLOUT5(0x2, 0x8) +#define KEYSCAN_COLOUT5_PC9 SILABS_DBUS_KEYSCAN_COLOUT5(0x2, 0x9) +#define KEYSCAN_COLOUT5_PD0 SILABS_DBUS_KEYSCAN_COLOUT5(0x3, 0x0) +#define KEYSCAN_COLOUT5_PD1 SILABS_DBUS_KEYSCAN_COLOUT5(0x3, 0x1) +#define KEYSCAN_COLOUT5_PD2 SILABS_DBUS_KEYSCAN_COLOUT5(0x3, 0x2) +#define KEYSCAN_COLOUT5_PD3 SILABS_DBUS_KEYSCAN_COLOUT5(0x3, 0x3) +#define KEYSCAN_COLOUT5_PD4 SILABS_DBUS_KEYSCAN_COLOUT5(0x3, 0x4) +#define KEYSCAN_COLOUT5_PD5 SILABS_DBUS_KEYSCAN_COLOUT5(0x3, 0x5) +#define KEYSCAN_COLOUT6_PA0 SILABS_DBUS_KEYSCAN_COLOUT6(0x0, 0x0) +#define KEYSCAN_COLOUT6_PA1 SILABS_DBUS_KEYSCAN_COLOUT6(0x0, 0x1) +#define KEYSCAN_COLOUT6_PA2 SILABS_DBUS_KEYSCAN_COLOUT6(0x0, 0x2) +#define KEYSCAN_COLOUT6_PA3 SILABS_DBUS_KEYSCAN_COLOUT6(0x0, 0x3) +#define KEYSCAN_COLOUT6_PA4 SILABS_DBUS_KEYSCAN_COLOUT6(0x0, 0x4) +#define KEYSCAN_COLOUT6_PA5 SILABS_DBUS_KEYSCAN_COLOUT6(0x0, 0x5) +#define KEYSCAN_COLOUT6_PA6 SILABS_DBUS_KEYSCAN_COLOUT6(0x0, 0x6) +#define KEYSCAN_COLOUT6_PA7 SILABS_DBUS_KEYSCAN_COLOUT6(0x0, 0x7) +#define KEYSCAN_COLOUT6_PA8 SILABS_DBUS_KEYSCAN_COLOUT6(0x0, 0x8) +#define KEYSCAN_COLOUT6_PA9 SILABS_DBUS_KEYSCAN_COLOUT6(0x0, 0x9) +#define KEYSCAN_COLOUT6_PB0 SILABS_DBUS_KEYSCAN_COLOUT6(0x1, 0x0) +#define KEYSCAN_COLOUT6_PB1 SILABS_DBUS_KEYSCAN_COLOUT6(0x1, 0x1) +#define KEYSCAN_COLOUT6_PB2 SILABS_DBUS_KEYSCAN_COLOUT6(0x1, 0x2) +#define KEYSCAN_COLOUT6_PB3 SILABS_DBUS_KEYSCAN_COLOUT6(0x1, 0x3) +#define KEYSCAN_COLOUT6_PB4 SILABS_DBUS_KEYSCAN_COLOUT6(0x1, 0x4) +#define KEYSCAN_COLOUT6_PB5 SILABS_DBUS_KEYSCAN_COLOUT6(0x1, 0x5) +#define KEYSCAN_COLOUT6_PC0 SILABS_DBUS_KEYSCAN_COLOUT6(0x2, 0x0) +#define KEYSCAN_COLOUT6_PC1 SILABS_DBUS_KEYSCAN_COLOUT6(0x2, 0x1) +#define KEYSCAN_COLOUT6_PC2 SILABS_DBUS_KEYSCAN_COLOUT6(0x2, 0x2) +#define KEYSCAN_COLOUT6_PC3 SILABS_DBUS_KEYSCAN_COLOUT6(0x2, 0x3) +#define KEYSCAN_COLOUT6_PC4 SILABS_DBUS_KEYSCAN_COLOUT6(0x2, 0x4) +#define KEYSCAN_COLOUT6_PC5 SILABS_DBUS_KEYSCAN_COLOUT6(0x2, 0x5) +#define KEYSCAN_COLOUT6_PC6 SILABS_DBUS_KEYSCAN_COLOUT6(0x2, 0x6) +#define KEYSCAN_COLOUT6_PC7 SILABS_DBUS_KEYSCAN_COLOUT6(0x2, 0x7) +#define KEYSCAN_COLOUT6_PC8 SILABS_DBUS_KEYSCAN_COLOUT6(0x2, 0x8) +#define KEYSCAN_COLOUT6_PC9 SILABS_DBUS_KEYSCAN_COLOUT6(0x2, 0x9) +#define KEYSCAN_COLOUT6_PD0 SILABS_DBUS_KEYSCAN_COLOUT6(0x3, 0x0) +#define KEYSCAN_COLOUT6_PD1 SILABS_DBUS_KEYSCAN_COLOUT6(0x3, 0x1) +#define KEYSCAN_COLOUT6_PD2 SILABS_DBUS_KEYSCAN_COLOUT6(0x3, 0x2) +#define KEYSCAN_COLOUT6_PD3 SILABS_DBUS_KEYSCAN_COLOUT6(0x3, 0x3) +#define KEYSCAN_COLOUT6_PD4 SILABS_DBUS_KEYSCAN_COLOUT6(0x3, 0x4) +#define KEYSCAN_COLOUT6_PD5 SILABS_DBUS_KEYSCAN_COLOUT6(0x3, 0x5) +#define KEYSCAN_COLOUT7_PA0 SILABS_DBUS_KEYSCAN_COLOUT7(0x0, 0x0) +#define KEYSCAN_COLOUT7_PA1 SILABS_DBUS_KEYSCAN_COLOUT7(0x0, 0x1) +#define KEYSCAN_COLOUT7_PA2 SILABS_DBUS_KEYSCAN_COLOUT7(0x0, 0x2) +#define KEYSCAN_COLOUT7_PA3 SILABS_DBUS_KEYSCAN_COLOUT7(0x0, 0x3) +#define KEYSCAN_COLOUT7_PA4 SILABS_DBUS_KEYSCAN_COLOUT7(0x0, 0x4) +#define KEYSCAN_COLOUT7_PA5 SILABS_DBUS_KEYSCAN_COLOUT7(0x0, 0x5) +#define KEYSCAN_COLOUT7_PA6 SILABS_DBUS_KEYSCAN_COLOUT7(0x0, 0x6) +#define KEYSCAN_COLOUT7_PA7 SILABS_DBUS_KEYSCAN_COLOUT7(0x0, 0x7) +#define KEYSCAN_COLOUT7_PA8 SILABS_DBUS_KEYSCAN_COLOUT7(0x0, 0x8) +#define KEYSCAN_COLOUT7_PA9 SILABS_DBUS_KEYSCAN_COLOUT7(0x0, 0x9) +#define KEYSCAN_COLOUT7_PB0 SILABS_DBUS_KEYSCAN_COLOUT7(0x1, 0x0) +#define KEYSCAN_COLOUT7_PB1 SILABS_DBUS_KEYSCAN_COLOUT7(0x1, 0x1) +#define KEYSCAN_COLOUT7_PB2 SILABS_DBUS_KEYSCAN_COLOUT7(0x1, 0x2) +#define KEYSCAN_COLOUT7_PB3 SILABS_DBUS_KEYSCAN_COLOUT7(0x1, 0x3) +#define KEYSCAN_COLOUT7_PB4 SILABS_DBUS_KEYSCAN_COLOUT7(0x1, 0x4) +#define KEYSCAN_COLOUT7_PB5 SILABS_DBUS_KEYSCAN_COLOUT7(0x1, 0x5) +#define KEYSCAN_COLOUT7_PC0 SILABS_DBUS_KEYSCAN_COLOUT7(0x2, 0x0) +#define KEYSCAN_COLOUT7_PC1 SILABS_DBUS_KEYSCAN_COLOUT7(0x2, 0x1) +#define KEYSCAN_COLOUT7_PC2 SILABS_DBUS_KEYSCAN_COLOUT7(0x2, 0x2) +#define KEYSCAN_COLOUT7_PC3 SILABS_DBUS_KEYSCAN_COLOUT7(0x2, 0x3) +#define KEYSCAN_COLOUT7_PC4 SILABS_DBUS_KEYSCAN_COLOUT7(0x2, 0x4) +#define KEYSCAN_COLOUT7_PC5 SILABS_DBUS_KEYSCAN_COLOUT7(0x2, 0x5) +#define KEYSCAN_COLOUT7_PC6 SILABS_DBUS_KEYSCAN_COLOUT7(0x2, 0x6) +#define KEYSCAN_COLOUT7_PC7 SILABS_DBUS_KEYSCAN_COLOUT7(0x2, 0x7) +#define KEYSCAN_COLOUT7_PC8 SILABS_DBUS_KEYSCAN_COLOUT7(0x2, 0x8) +#define KEYSCAN_COLOUT7_PC9 SILABS_DBUS_KEYSCAN_COLOUT7(0x2, 0x9) +#define KEYSCAN_COLOUT7_PD0 SILABS_DBUS_KEYSCAN_COLOUT7(0x3, 0x0) +#define KEYSCAN_COLOUT7_PD1 SILABS_DBUS_KEYSCAN_COLOUT7(0x3, 0x1) +#define KEYSCAN_COLOUT7_PD2 SILABS_DBUS_KEYSCAN_COLOUT7(0x3, 0x2) +#define KEYSCAN_COLOUT7_PD3 SILABS_DBUS_KEYSCAN_COLOUT7(0x3, 0x3) +#define KEYSCAN_COLOUT7_PD4 SILABS_DBUS_KEYSCAN_COLOUT7(0x3, 0x4) +#define KEYSCAN_COLOUT7_PD5 SILABS_DBUS_KEYSCAN_COLOUT7(0x3, 0x5) +#define KEYSCAN_ROWSENSE0_PA0 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x0, 0x0) +#define KEYSCAN_ROWSENSE0_PA1 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x0, 0x1) +#define KEYSCAN_ROWSENSE0_PA2 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x0, 0x2) +#define KEYSCAN_ROWSENSE0_PA3 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x0, 0x3) +#define KEYSCAN_ROWSENSE0_PA4 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x0, 0x4) +#define KEYSCAN_ROWSENSE0_PA5 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x0, 0x5) +#define KEYSCAN_ROWSENSE0_PA6 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x0, 0x6) +#define KEYSCAN_ROWSENSE0_PA7 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x0, 0x7) +#define KEYSCAN_ROWSENSE0_PA8 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x0, 0x8) +#define KEYSCAN_ROWSENSE0_PA9 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x0, 0x9) +#define KEYSCAN_ROWSENSE0_PB0 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x1, 0x0) +#define KEYSCAN_ROWSENSE0_PB1 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x1, 0x1) +#define KEYSCAN_ROWSENSE0_PB2 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x1, 0x2) +#define KEYSCAN_ROWSENSE0_PB3 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x1, 0x3) +#define KEYSCAN_ROWSENSE0_PB4 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x1, 0x4) +#define KEYSCAN_ROWSENSE0_PB5 SILABS_DBUS_KEYSCAN_ROWSENSE0(0x1, 0x5) +#define KEYSCAN_ROWSENSE1_PA0 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x0, 0x0) +#define KEYSCAN_ROWSENSE1_PA1 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x0, 0x1) +#define KEYSCAN_ROWSENSE1_PA2 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x0, 0x2) +#define KEYSCAN_ROWSENSE1_PA3 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x0, 0x3) +#define KEYSCAN_ROWSENSE1_PA4 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x0, 0x4) +#define KEYSCAN_ROWSENSE1_PA5 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x0, 0x5) +#define KEYSCAN_ROWSENSE1_PA6 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x0, 0x6) +#define KEYSCAN_ROWSENSE1_PA7 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x0, 0x7) +#define KEYSCAN_ROWSENSE1_PA8 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x0, 0x8) +#define KEYSCAN_ROWSENSE1_PA9 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x0, 0x9) +#define KEYSCAN_ROWSENSE1_PB0 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x1, 0x0) +#define KEYSCAN_ROWSENSE1_PB1 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x1, 0x1) +#define KEYSCAN_ROWSENSE1_PB2 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x1, 0x2) +#define KEYSCAN_ROWSENSE1_PB3 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x1, 0x3) +#define KEYSCAN_ROWSENSE1_PB4 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x1, 0x4) +#define KEYSCAN_ROWSENSE1_PB5 SILABS_DBUS_KEYSCAN_ROWSENSE1(0x1, 0x5) +#define KEYSCAN_ROWSENSE2_PA0 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x0, 0x0) +#define KEYSCAN_ROWSENSE2_PA1 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x0, 0x1) +#define KEYSCAN_ROWSENSE2_PA2 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x0, 0x2) +#define KEYSCAN_ROWSENSE2_PA3 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x0, 0x3) +#define KEYSCAN_ROWSENSE2_PA4 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x0, 0x4) +#define KEYSCAN_ROWSENSE2_PA5 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x0, 0x5) +#define KEYSCAN_ROWSENSE2_PA6 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x0, 0x6) +#define KEYSCAN_ROWSENSE2_PA7 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x0, 0x7) +#define KEYSCAN_ROWSENSE2_PA8 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x0, 0x8) +#define KEYSCAN_ROWSENSE2_PA9 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x0, 0x9) +#define KEYSCAN_ROWSENSE2_PB0 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x1, 0x0) +#define KEYSCAN_ROWSENSE2_PB1 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x1, 0x1) +#define KEYSCAN_ROWSENSE2_PB2 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x1, 0x2) +#define KEYSCAN_ROWSENSE2_PB3 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x1, 0x3) +#define KEYSCAN_ROWSENSE2_PB4 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x1, 0x4) +#define KEYSCAN_ROWSENSE2_PB5 SILABS_DBUS_KEYSCAN_ROWSENSE2(0x1, 0x5) +#define KEYSCAN_ROWSENSE3_PA0 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x0, 0x0) +#define KEYSCAN_ROWSENSE3_PA1 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x0, 0x1) +#define KEYSCAN_ROWSENSE3_PA2 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x0, 0x2) +#define KEYSCAN_ROWSENSE3_PA3 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x0, 0x3) +#define KEYSCAN_ROWSENSE3_PA4 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x0, 0x4) +#define KEYSCAN_ROWSENSE3_PA5 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x0, 0x5) +#define KEYSCAN_ROWSENSE3_PA6 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x0, 0x6) +#define KEYSCAN_ROWSENSE3_PA7 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x0, 0x7) +#define KEYSCAN_ROWSENSE3_PA8 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x0, 0x8) +#define KEYSCAN_ROWSENSE3_PA9 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x0, 0x9) +#define KEYSCAN_ROWSENSE3_PB0 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x1, 0x0) +#define KEYSCAN_ROWSENSE3_PB1 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x1, 0x1) +#define KEYSCAN_ROWSENSE3_PB2 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x1, 0x2) +#define KEYSCAN_ROWSENSE3_PB3 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x1, 0x3) +#define KEYSCAN_ROWSENSE3_PB4 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x1, 0x4) +#define KEYSCAN_ROWSENSE3_PB5 SILABS_DBUS_KEYSCAN_ROWSENSE3(0x1, 0x5) +#define KEYSCAN_ROWSENSE4_PA0 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x0, 0x0) +#define KEYSCAN_ROWSENSE4_PA1 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x0, 0x1) +#define KEYSCAN_ROWSENSE4_PA2 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x0, 0x2) +#define KEYSCAN_ROWSENSE4_PA3 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x0, 0x3) +#define KEYSCAN_ROWSENSE4_PA4 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x0, 0x4) +#define KEYSCAN_ROWSENSE4_PA5 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x0, 0x5) +#define KEYSCAN_ROWSENSE4_PA6 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x0, 0x6) +#define KEYSCAN_ROWSENSE4_PA7 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x0, 0x7) +#define KEYSCAN_ROWSENSE4_PA8 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x0, 0x8) +#define KEYSCAN_ROWSENSE4_PA9 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x0, 0x9) +#define KEYSCAN_ROWSENSE4_PB0 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x1, 0x0) +#define KEYSCAN_ROWSENSE4_PB1 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x1, 0x1) +#define KEYSCAN_ROWSENSE4_PB2 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x1, 0x2) +#define KEYSCAN_ROWSENSE4_PB3 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x1, 0x3) +#define KEYSCAN_ROWSENSE4_PB4 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x1, 0x4) +#define KEYSCAN_ROWSENSE4_PB5 SILABS_DBUS_KEYSCAN_ROWSENSE4(0x1, 0x5) +#define KEYSCAN_ROWSENSE5_PA0 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x0, 0x0) +#define KEYSCAN_ROWSENSE5_PA1 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x0, 0x1) +#define KEYSCAN_ROWSENSE5_PA2 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x0, 0x2) +#define KEYSCAN_ROWSENSE5_PA3 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x0, 0x3) +#define KEYSCAN_ROWSENSE5_PA4 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x0, 0x4) +#define KEYSCAN_ROWSENSE5_PA5 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x0, 0x5) +#define KEYSCAN_ROWSENSE5_PA6 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x0, 0x6) +#define KEYSCAN_ROWSENSE5_PA7 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x0, 0x7) +#define KEYSCAN_ROWSENSE5_PA8 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x0, 0x8) +#define KEYSCAN_ROWSENSE5_PA9 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x0, 0x9) +#define KEYSCAN_ROWSENSE5_PB0 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x1, 0x0) +#define KEYSCAN_ROWSENSE5_PB1 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x1, 0x1) +#define KEYSCAN_ROWSENSE5_PB2 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x1, 0x2) +#define KEYSCAN_ROWSENSE5_PB3 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x1, 0x3) +#define KEYSCAN_ROWSENSE5_PB4 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x1, 0x4) +#define KEYSCAN_ROWSENSE5_PB5 SILABS_DBUS_KEYSCAN_ROWSENSE5(0x1, 0x5) + +#define LETIMER0_OUT0_PA0 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x0) +#define LETIMER0_OUT0_PA1 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x1) +#define LETIMER0_OUT0_PA2 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x2) +#define LETIMER0_OUT0_PA3 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x3) +#define LETIMER0_OUT0_PA4 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x4) +#define LETIMER0_OUT0_PA5 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x5) +#define LETIMER0_OUT0_PA6 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x6) +#define LETIMER0_OUT0_PA7 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x7) +#define LETIMER0_OUT0_PA8 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x8) +#define LETIMER0_OUT0_PA9 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x9) +#define LETIMER0_OUT0_PB0 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x0) +#define LETIMER0_OUT0_PB1 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x1) +#define LETIMER0_OUT0_PB2 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x2) +#define LETIMER0_OUT0_PB3 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x3) +#define LETIMER0_OUT0_PB4 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x4) +#define LETIMER0_OUT0_PB5 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x5) +#define LETIMER0_OUT1_PA0 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x0) +#define LETIMER0_OUT1_PA1 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x1) +#define LETIMER0_OUT1_PA2 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x2) +#define LETIMER0_OUT1_PA3 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x3) +#define LETIMER0_OUT1_PA4 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x4) +#define LETIMER0_OUT1_PA5 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x5) +#define LETIMER0_OUT1_PA6 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x6) +#define LETIMER0_OUT1_PA7 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x7) +#define LETIMER0_OUT1_PA8 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x8) +#define LETIMER0_OUT1_PA9 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x9) +#define LETIMER0_OUT1_PB0 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x0) +#define LETIMER0_OUT1_PB1 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x1) +#define LETIMER0_OUT1_PB2 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x2) +#define LETIMER0_OUT1_PB3 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x3) +#define LETIMER0_OUT1_PB4 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x4) +#define LETIMER0_OUT1_PB5 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x5) + +#define MODEM_ANT0_PA0 SILABS_DBUS_MODEM_ANT0(0x0, 0x0) +#define MODEM_ANT0_PA1 SILABS_DBUS_MODEM_ANT0(0x0, 0x1) +#define MODEM_ANT0_PA2 SILABS_DBUS_MODEM_ANT0(0x0, 0x2) +#define MODEM_ANT0_PA3 SILABS_DBUS_MODEM_ANT0(0x0, 0x3) +#define MODEM_ANT0_PA4 SILABS_DBUS_MODEM_ANT0(0x0, 0x4) +#define MODEM_ANT0_PA5 SILABS_DBUS_MODEM_ANT0(0x0, 0x5) +#define MODEM_ANT0_PA6 SILABS_DBUS_MODEM_ANT0(0x0, 0x6) +#define MODEM_ANT0_PA7 SILABS_DBUS_MODEM_ANT0(0x0, 0x7) +#define MODEM_ANT0_PA8 SILABS_DBUS_MODEM_ANT0(0x0, 0x8) +#define MODEM_ANT0_PA9 SILABS_DBUS_MODEM_ANT0(0x0, 0x9) +#define MODEM_ANT0_PB0 SILABS_DBUS_MODEM_ANT0(0x1, 0x0) +#define MODEM_ANT0_PB1 SILABS_DBUS_MODEM_ANT0(0x1, 0x1) +#define MODEM_ANT0_PB2 SILABS_DBUS_MODEM_ANT0(0x1, 0x2) +#define MODEM_ANT0_PB3 SILABS_DBUS_MODEM_ANT0(0x1, 0x3) +#define MODEM_ANT0_PB4 SILABS_DBUS_MODEM_ANT0(0x1, 0x4) +#define MODEM_ANT0_PB5 SILABS_DBUS_MODEM_ANT0(0x1, 0x5) +#define MODEM_ANT0_PC0 SILABS_DBUS_MODEM_ANT0(0x2, 0x0) +#define MODEM_ANT0_PC1 SILABS_DBUS_MODEM_ANT0(0x2, 0x1) +#define MODEM_ANT0_PC2 SILABS_DBUS_MODEM_ANT0(0x2, 0x2) +#define MODEM_ANT0_PC3 SILABS_DBUS_MODEM_ANT0(0x2, 0x3) +#define MODEM_ANT0_PC4 SILABS_DBUS_MODEM_ANT0(0x2, 0x4) +#define MODEM_ANT0_PC5 SILABS_DBUS_MODEM_ANT0(0x2, 0x5) +#define MODEM_ANT0_PC6 SILABS_DBUS_MODEM_ANT0(0x2, 0x6) +#define MODEM_ANT0_PC7 SILABS_DBUS_MODEM_ANT0(0x2, 0x7) +#define MODEM_ANT0_PC8 SILABS_DBUS_MODEM_ANT0(0x2, 0x8) +#define MODEM_ANT0_PC9 SILABS_DBUS_MODEM_ANT0(0x2, 0x9) +#define MODEM_ANT0_PD0 SILABS_DBUS_MODEM_ANT0(0x3, 0x0) +#define MODEM_ANT0_PD1 SILABS_DBUS_MODEM_ANT0(0x3, 0x1) +#define MODEM_ANT0_PD2 SILABS_DBUS_MODEM_ANT0(0x3, 0x2) +#define MODEM_ANT0_PD3 SILABS_DBUS_MODEM_ANT0(0x3, 0x3) +#define MODEM_ANT0_PD4 SILABS_DBUS_MODEM_ANT0(0x3, 0x4) +#define MODEM_ANT0_PD5 SILABS_DBUS_MODEM_ANT0(0x3, 0x5) +#define MODEM_ANT1_PA0 SILABS_DBUS_MODEM_ANT1(0x0, 0x0) +#define MODEM_ANT1_PA1 SILABS_DBUS_MODEM_ANT1(0x0, 0x1) +#define MODEM_ANT1_PA2 SILABS_DBUS_MODEM_ANT1(0x0, 0x2) +#define MODEM_ANT1_PA3 SILABS_DBUS_MODEM_ANT1(0x0, 0x3) +#define MODEM_ANT1_PA4 SILABS_DBUS_MODEM_ANT1(0x0, 0x4) +#define MODEM_ANT1_PA5 SILABS_DBUS_MODEM_ANT1(0x0, 0x5) +#define MODEM_ANT1_PA6 SILABS_DBUS_MODEM_ANT1(0x0, 0x6) +#define MODEM_ANT1_PA7 SILABS_DBUS_MODEM_ANT1(0x0, 0x7) +#define MODEM_ANT1_PA8 SILABS_DBUS_MODEM_ANT1(0x0, 0x8) +#define MODEM_ANT1_PA9 SILABS_DBUS_MODEM_ANT1(0x0, 0x9) +#define MODEM_ANT1_PB0 SILABS_DBUS_MODEM_ANT1(0x1, 0x0) +#define MODEM_ANT1_PB1 SILABS_DBUS_MODEM_ANT1(0x1, 0x1) +#define MODEM_ANT1_PB2 SILABS_DBUS_MODEM_ANT1(0x1, 0x2) +#define MODEM_ANT1_PB3 SILABS_DBUS_MODEM_ANT1(0x1, 0x3) +#define MODEM_ANT1_PB4 SILABS_DBUS_MODEM_ANT1(0x1, 0x4) +#define MODEM_ANT1_PB5 SILABS_DBUS_MODEM_ANT1(0x1, 0x5) +#define MODEM_ANT1_PC0 SILABS_DBUS_MODEM_ANT1(0x2, 0x0) +#define MODEM_ANT1_PC1 SILABS_DBUS_MODEM_ANT1(0x2, 0x1) +#define MODEM_ANT1_PC2 SILABS_DBUS_MODEM_ANT1(0x2, 0x2) +#define MODEM_ANT1_PC3 SILABS_DBUS_MODEM_ANT1(0x2, 0x3) +#define MODEM_ANT1_PC4 SILABS_DBUS_MODEM_ANT1(0x2, 0x4) +#define MODEM_ANT1_PC5 SILABS_DBUS_MODEM_ANT1(0x2, 0x5) +#define MODEM_ANT1_PC6 SILABS_DBUS_MODEM_ANT1(0x2, 0x6) +#define MODEM_ANT1_PC7 SILABS_DBUS_MODEM_ANT1(0x2, 0x7) +#define MODEM_ANT1_PC8 SILABS_DBUS_MODEM_ANT1(0x2, 0x8) +#define MODEM_ANT1_PC9 SILABS_DBUS_MODEM_ANT1(0x2, 0x9) +#define MODEM_ANT1_PD0 SILABS_DBUS_MODEM_ANT1(0x3, 0x0) +#define MODEM_ANT1_PD1 SILABS_DBUS_MODEM_ANT1(0x3, 0x1) +#define MODEM_ANT1_PD2 SILABS_DBUS_MODEM_ANT1(0x3, 0x2) +#define MODEM_ANT1_PD3 SILABS_DBUS_MODEM_ANT1(0x3, 0x3) +#define MODEM_ANT1_PD4 SILABS_DBUS_MODEM_ANT1(0x3, 0x4) +#define MODEM_ANT1_PD5 SILABS_DBUS_MODEM_ANT1(0x3, 0x5) +#define MODEM_ANTROLLOVER_PC0 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x0) +#define MODEM_ANTROLLOVER_PC1 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x1) +#define MODEM_ANTROLLOVER_PC2 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x2) +#define MODEM_ANTROLLOVER_PC3 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x3) +#define MODEM_ANTROLLOVER_PC4 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x4) +#define MODEM_ANTROLLOVER_PC5 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x5) +#define MODEM_ANTROLLOVER_PC6 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x6) +#define MODEM_ANTROLLOVER_PC7 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x7) +#define MODEM_ANTROLLOVER_PC8 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x8) +#define MODEM_ANTROLLOVER_PC9 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x9) +#define MODEM_ANTROLLOVER_PD0 SILABS_DBUS_MODEM_ANTROLLOVER(0x3, 0x0) +#define MODEM_ANTROLLOVER_PD1 SILABS_DBUS_MODEM_ANTROLLOVER(0x3, 0x1) +#define MODEM_ANTROLLOVER_PD2 SILABS_DBUS_MODEM_ANTROLLOVER(0x3, 0x2) +#define MODEM_ANTROLLOVER_PD3 SILABS_DBUS_MODEM_ANTROLLOVER(0x3, 0x3) +#define MODEM_ANTROLLOVER_PD4 SILABS_DBUS_MODEM_ANTROLLOVER(0x3, 0x4) +#define MODEM_ANTROLLOVER_PD5 SILABS_DBUS_MODEM_ANTROLLOVER(0x3, 0x5) +#define MODEM_ANTRR0_PC0 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x0) +#define MODEM_ANTRR0_PC1 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x1) +#define MODEM_ANTRR0_PC2 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x2) +#define MODEM_ANTRR0_PC3 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x3) +#define MODEM_ANTRR0_PC4 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x4) +#define MODEM_ANTRR0_PC5 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x5) +#define MODEM_ANTRR0_PC6 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x6) +#define MODEM_ANTRR0_PC7 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x7) +#define MODEM_ANTRR0_PC8 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x8) +#define MODEM_ANTRR0_PC9 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x9) +#define MODEM_ANTRR0_PD0 SILABS_DBUS_MODEM_ANTRR0(0x3, 0x0) +#define MODEM_ANTRR0_PD1 SILABS_DBUS_MODEM_ANTRR0(0x3, 0x1) +#define MODEM_ANTRR0_PD2 SILABS_DBUS_MODEM_ANTRR0(0x3, 0x2) +#define MODEM_ANTRR0_PD3 SILABS_DBUS_MODEM_ANTRR0(0x3, 0x3) +#define MODEM_ANTRR0_PD4 SILABS_DBUS_MODEM_ANTRR0(0x3, 0x4) +#define MODEM_ANTRR0_PD5 SILABS_DBUS_MODEM_ANTRR0(0x3, 0x5) +#define MODEM_ANTRR1_PC0 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x0) +#define MODEM_ANTRR1_PC1 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x1) +#define MODEM_ANTRR1_PC2 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x2) +#define MODEM_ANTRR1_PC3 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x3) +#define MODEM_ANTRR1_PC4 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x4) +#define MODEM_ANTRR1_PC5 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x5) +#define MODEM_ANTRR1_PC6 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x6) +#define MODEM_ANTRR1_PC7 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x7) +#define MODEM_ANTRR1_PC8 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x8) +#define MODEM_ANTRR1_PC9 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x9) +#define MODEM_ANTRR1_PD0 SILABS_DBUS_MODEM_ANTRR1(0x3, 0x0) +#define MODEM_ANTRR1_PD1 SILABS_DBUS_MODEM_ANTRR1(0x3, 0x1) +#define MODEM_ANTRR1_PD2 SILABS_DBUS_MODEM_ANTRR1(0x3, 0x2) +#define MODEM_ANTRR1_PD3 SILABS_DBUS_MODEM_ANTRR1(0x3, 0x3) +#define MODEM_ANTRR1_PD4 SILABS_DBUS_MODEM_ANTRR1(0x3, 0x4) +#define MODEM_ANTRR1_PD5 SILABS_DBUS_MODEM_ANTRR1(0x3, 0x5) +#define MODEM_ANTRR2_PC0 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x0) +#define MODEM_ANTRR2_PC1 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x1) +#define MODEM_ANTRR2_PC2 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x2) +#define MODEM_ANTRR2_PC3 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x3) +#define MODEM_ANTRR2_PC4 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x4) +#define MODEM_ANTRR2_PC5 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x5) +#define MODEM_ANTRR2_PC6 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x6) +#define MODEM_ANTRR2_PC7 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x7) +#define MODEM_ANTRR2_PC8 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x8) +#define MODEM_ANTRR2_PC9 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x9) +#define MODEM_ANTRR2_PD0 SILABS_DBUS_MODEM_ANTRR2(0x3, 0x0) +#define MODEM_ANTRR2_PD1 SILABS_DBUS_MODEM_ANTRR2(0x3, 0x1) +#define MODEM_ANTRR2_PD2 SILABS_DBUS_MODEM_ANTRR2(0x3, 0x2) +#define MODEM_ANTRR2_PD3 SILABS_DBUS_MODEM_ANTRR2(0x3, 0x3) +#define MODEM_ANTRR2_PD4 SILABS_DBUS_MODEM_ANTRR2(0x3, 0x4) +#define MODEM_ANTRR2_PD5 SILABS_DBUS_MODEM_ANTRR2(0x3, 0x5) +#define MODEM_ANTRR3_PC0 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x0) +#define MODEM_ANTRR3_PC1 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x1) +#define MODEM_ANTRR3_PC2 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x2) +#define MODEM_ANTRR3_PC3 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x3) +#define MODEM_ANTRR3_PC4 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x4) +#define MODEM_ANTRR3_PC5 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x5) +#define MODEM_ANTRR3_PC6 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x6) +#define MODEM_ANTRR3_PC7 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x7) +#define MODEM_ANTRR3_PC8 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x8) +#define MODEM_ANTRR3_PC9 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x9) +#define MODEM_ANTRR3_PD0 SILABS_DBUS_MODEM_ANTRR3(0x3, 0x0) +#define MODEM_ANTRR3_PD1 SILABS_DBUS_MODEM_ANTRR3(0x3, 0x1) +#define MODEM_ANTRR3_PD2 SILABS_DBUS_MODEM_ANTRR3(0x3, 0x2) +#define MODEM_ANTRR3_PD3 SILABS_DBUS_MODEM_ANTRR3(0x3, 0x3) +#define MODEM_ANTRR3_PD4 SILABS_DBUS_MODEM_ANTRR3(0x3, 0x4) +#define MODEM_ANTRR3_PD5 SILABS_DBUS_MODEM_ANTRR3(0x3, 0x5) +#define MODEM_ANTRR4_PC0 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x0) +#define MODEM_ANTRR4_PC1 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x1) +#define MODEM_ANTRR4_PC2 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x2) +#define MODEM_ANTRR4_PC3 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x3) +#define MODEM_ANTRR4_PC4 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x4) +#define MODEM_ANTRR4_PC5 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x5) +#define MODEM_ANTRR4_PC6 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x6) +#define MODEM_ANTRR4_PC7 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x7) +#define MODEM_ANTRR4_PC8 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x8) +#define MODEM_ANTRR4_PC9 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x9) +#define MODEM_ANTRR4_PD0 SILABS_DBUS_MODEM_ANTRR4(0x3, 0x0) +#define MODEM_ANTRR4_PD1 SILABS_DBUS_MODEM_ANTRR4(0x3, 0x1) +#define MODEM_ANTRR4_PD2 SILABS_DBUS_MODEM_ANTRR4(0x3, 0x2) +#define MODEM_ANTRR4_PD3 SILABS_DBUS_MODEM_ANTRR4(0x3, 0x3) +#define MODEM_ANTRR4_PD4 SILABS_DBUS_MODEM_ANTRR4(0x3, 0x4) +#define MODEM_ANTRR4_PD5 SILABS_DBUS_MODEM_ANTRR4(0x3, 0x5) +#define MODEM_ANTRR5_PC0 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x0) +#define MODEM_ANTRR5_PC1 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x1) +#define MODEM_ANTRR5_PC2 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x2) +#define MODEM_ANTRR5_PC3 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x3) +#define MODEM_ANTRR5_PC4 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x4) +#define MODEM_ANTRR5_PC5 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x5) +#define MODEM_ANTRR5_PC6 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x6) +#define MODEM_ANTRR5_PC7 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x7) +#define MODEM_ANTRR5_PC8 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x8) +#define MODEM_ANTRR5_PC9 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x9) +#define MODEM_ANTRR5_PD0 SILABS_DBUS_MODEM_ANTRR5(0x3, 0x0) +#define MODEM_ANTRR5_PD1 SILABS_DBUS_MODEM_ANTRR5(0x3, 0x1) +#define MODEM_ANTRR5_PD2 SILABS_DBUS_MODEM_ANTRR5(0x3, 0x2) +#define MODEM_ANTRR5_PD3 SILABS_DBUS_MODEM_ANTRR5(0x3, 0x3) +#define MODEM_ANTRR5_PD4 SILABS_DBUS_MODEM_ANTRR5(0x3, 0x4) +#define MODEM_ANTRR5_PD5 SILABS_DBUS_MODEM_ANTRR5(0x3, 0x5) +#define MODEM_ANTSWEN_PC0 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x0) +#define MODEM_ANTSWEN_PC1 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x1) +#define MODEM_ANTSWEN_PC2 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x2) +#define MODEM_ANTSWEN_PC3 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x3) +#define MODEM_ANTSWEN_PC4 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x4) +#define MODEM_ANTSWEN_PC5 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x5) +#define MODEM_ANTSWEN_PC6 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x6) +#define MODEM_ANTSWEN_PC7 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x7) +#define MODEM_ANTSWEN_PC8 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x8) +#define MODEM_ANTSWEN_PC9 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x9) +#define MODEM_ANTSWEN_PD0 SILABS_DBUS_MODEM_ANTSWEN(0x3, 0x0) +#define MODEM_ANTSWEN_PD1 SILABS_DBUS_MODEM_ANTSWEN(0x3, 0x1) +#define MODEM_ANTSWEN_PD2 SILABS_DBUS_MODEM_ANTSWEN(0x3, 0x2) +#define MODEM_ANTSWEN_PD3 SILABS_DBUS_MODEM_ANTSWEN(0x3, 0x3) +#define MODEM_ANTSWEN_PD4 SILABS_DBUS_MODEM_ANTSWEN(0x3, 0x4) +#define MODEM_ANTSWEN_PD5 SILABS_DBUS_MODEM_ANTSWEN(0x3, 0x5) +#define MODEM_ANTSWUS_PC0 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x0) +#define MODEM_ANTSWUS_PC1 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x1) +#define MODEM_ANTSWUS_PC2 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x2) +#define MODEM_ANTSWUS_PC3 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x3) +#define MODEM_ANTSWUS_PC4 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x4) +#define MODEM_ANTSWUS_PC5 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x5) +#define MODEM_ANTSWUS_PC6 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x6) +#define MODEM_ANTSWUS_PC7 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x7) +#define MODEM_ANTSWUS_PC8 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x8) +#define MODEM_ANTSWUS_PC9 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x9) +#define MODEM_ANTSWUS_PD0 SILABS_DBUS_MODEM_ANTSWUS(0x3, 0x0) +#define MODEM_ANTSWUS_PD1 SILABS_DBUS_MODEM_ANTSWUS(0x3, 0x1) +#define MODEM_ANTSWUS_PD2 SILABS_DBUS_MODEM_ANTSWUS(0x3, 0x2) +#define MODEM_ANTSWUS_PD3 SILABS_DBUS_MODEM_ANTSWUS(0x3, 0x3) +#define MODEM_ANTSWUS_PD4 SILABS_DBUS_MODEM_ANTSWUS(0x3, 0x4) +#define MODEM_ANTSWUS_PD5 SILABS_DBUS_MODEM_ANTSWUS(0x3, 0x5) +#define MODEM_ANTTRIG_PC0 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x0) +#define MODEM_ANTTRIG_PC1 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x1) +#define MODEM_ANTTRIG_PC2 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x2) +#define MODEM_ANTTRIG_PC3 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x3) +#define MODEM_ANTTRIG_PC4 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x4) +#define MODEM_ANTTRIG_PC5 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x5) +#define MODEM_ANTTRIG_PC6 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x6) +#define MODEM_ANTTRIG_PC7 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x7) +#define MODEM_ANTTRIG_PC8 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x8) +#define MODEM_ANTTRIG_PC9 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x9) +#define MODEM_ANTTRIG_PD0 SILABS_DBUS_MODEM_ANTTRIG(0x3, 0x0) +#define MODEM_ANTTRIG_PD1 SILABS_DBUS_MODEM_ANTTRIG(0x3, 0x1) +#define MODEM_ANTTRIG_PD2 SILABS_DBUS_MODEM_ANTTRIG(0x3, 0x2) +#define MODEM_ANTTRIG_PD3 SILABS_DBUS_MODEM_ANTTRIG(0x3, 0x3) +#define MODEM_ANTTRIG_PD4 SILABS_DBUS_MODEM_ANTTRIG(0x3, 0x4) +#define MODEM_ANTTRIG_PD5 SILABS_DBUS_MODEM_ANTTRIG(0x3, 0x5) +#define MODEM_ANTTRIGSTOP_PC0 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x0) +#define MODEM_ANTTRIGSTOP_PC1 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x1) +#define MODEM_ANTTRIGSTOP_PC2 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x2) +#define MODEM_ANTTRIGSTOP_PC3 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x3) +#define MODEM_ANTTRIGSTOP_PC4 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x4) +#define MODEM_ANTTRIGSTOP_PC5 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x5) +#define MODEM_ANTTRIGSTOP_PC6 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x6) +#define MODEM_ANTTRIGSTOP_PC7 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x7) +#define MODEM_ANTTRIGSTOP_PC8 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x8) +#define MODEM_ANTTRIGSTOP_PC9 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x9) +#define MODEM_ANTTRIGSTOP_PD0 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x3, 0x0) +#define MODEM_ANTTRIGSTOP_PD1 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x3, 0x1) +#define MODEM_ANTTRIGSTOP_PD2 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x3, 0x2) +#define MODEM_ANTTRIGSTOP_PD3 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x3, 0x3) +#define MODEM_ANTTRIGSTOP_PD4 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x3, 0x4) +#define MODEM_ANTTRIGSTOP_PD5 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x3, 0x5) +#define MODEM_DCLK_PA0 SILABS_DBUS_MODEM_DCLK(0x0, 0x0) +#define MODEM_DCLK_PA1 SILABS_DBUS_MODEM_DCLK(0x0, 0x1) +#define MODEM_DCLK_PA2 SILABS_DBUS_MODEM_DCLK(0x0, 0x2) +#define MODEM_DCLK_PA3 SILABS_DBUS_MODEM_DCLK(0x0, 0x3) +#define MODEM_DCLK_PA4 SILABS_DBUS_MODEM_DCLK(0x0, 0x4) +#define MODEM_DCLK_PA5 SILABS_DBUS_MODEM_DCLK(0x0, 0x5) +#define MODEM_DCLK_PA6 SILABS_DBUS_MODEM_DCLK(0x0, 0x6) +#define MODEM_DCLK_PA7 SILABS_DBUS_MODEM_DCLK(0x0, 0x7) +#define MODEM_DCLK_PA8 SILABS_DBUS_MODEM_DCLK(0x0, 0x8) +#define MODEM_DCLK_PA9 SILABS_DBUS_MODEM_DCLK(0x0, 0x9) +#define MODEM_DCLK_PB0 SILABS_DBUS_MODEM_DCLK(0x1, 0x0) +#define MODEM_DCLK_PB1 SILABS_DBUS_MODEM_DCLK(0x1, 0x1) +#define MODEM_DCLK_PB2 SILABS_DBUS_MODEM_DCLK(0x1, 0x2) +#define MODEM_DCLK_PB3 SILABS_DBUS_MODEM_DCLK(0x1, 0x3) +#define MODEM_DCLK_PB4 SILABS_DBUS_MODEM_DCLK(0x1, 0x4) +#define MODEM_DCLK_PB5 SILABS_DBUS_MODEM_DCLK(0x1, 0x5) +#define MODEM_DOUT_PA0 SILABS_DBUS_MODEM_DOUT(0x0, 0x0) +#define MODEM_DOUT_PA1 SILABS_DBUS_MODEM_DOUT(0x0, 0x1) +#define MODEM_DOUT_PA2 SILABS_DBUS_MODEM_DOUT(0x0, 0x2) +#define MODEM_DOUT_PA3 SILABS_DBUS_MODEM_DOUT(0x0, 0x3) +#define MODEM_DOUT_PA4 SILABS_DBUS_MODEM_DOUT(0x0, 0x4) +#define MODEM_DOUT_PA5 SILABS_DBUS_MODEM_DOUT(0x0, 0x5) +#define MODEM_DOUT_PA6 SILABS_DBUS_MODEM_DOUT(0x0, 0x6) +#define MODEM_DOUT_PA7 SILABS_DBUS_MODEM_DOUT(0x0, 0x7) +#define MODEM_DOUT_PA8 SILABS_DBUS_MODEM_DOUT(0x0, 0x8) +#define MODEM_DOUT_PA9 SILABS_DBUS_MODEM_DOUT(0x0, 0x9) +#define MODEM_DOUT_PB0 SILABS_DBUS_MODEM_DOUT(0x1, 0x0) +#define MODEM_DOUT_PB1 SILABS_DBUS_MODEM_DOUT(0x1, 0x1) +#define MODEM_DOUT_PB2 SILABS_DBUS_MODEM_DOUT(0x1, 0x2) +#define MODEM_DOUT_PB3 SILABS_DBUS_MODEM_DOUT(0x1, 0x3) +#define MODEM_DOUT_PB4 SILABS_DBUS_MODEM_DOUT(0x1, 0x4) +#define MODEM_DOUT_PB5 SILABS_DBUS_MODEM_DOUT(0x1, 0x5) +#define MODEM_DIN_PA0 SILABS_DBUS_MODEM_DIN(0x0, 0x0) +#define MODEM_DIN_PA1 SILABS_DBUS_MODEM_DIN(0x0, 0x1) +#define MODEM_DIN_PA2 SILABS_DBUS_MODEM_DIN(0x0, 0x2) +#define MODEM_DIN_PA3 SILABS_DBUS_MODEM_DIN(0x0, 0x3) +#define MODEM_DIN_PA4 SILABS_DBUS_MODEM_DIN(0x0, 0x4) +#define MODEM_DIN_PA5 SILABS_DBUS_MODEM_DIN(0x0, 0x5) +#define MODEM_DIN_PA6 SILABS_DBUS_MODEM_DIN(0x0, 0x6) +#define MODEM_DIN_PA7 SILABS_DBUS_MODEM_DIN(0x0, 0x7) +#define MODEM_DIN_PA8 SILABS_DBUS_MODEM_DIN(0x0, 0x8) +#define MODEM_DIN_PA9 SILABS_DBUS_MODEM_DIN(0x0, 0x9) +#define MODEM_DIN_PB0 SILABS_DBUS_MODEM_DIN(0x1, 0x0) +#define MODEM_DIN_PB1 SILABS_DBUS_MODEM_DIN(0x1, 0x1) +#define MODEM_DIN_PB2 SILABS_DBUS_MODEM_DIN(0x1, 0x2) +#define MODEM_DIN_PB3 SILABS_DBUS_MODEM_DIN(0x1, 0x3) +#define MODEM_DIN_PB4 SILABS_DBUS_MODEM_DIN(0x1, 0x4) +#define MODEM_DIN_PB5 SILABS_DBUS_MODEM_DIN(0x1, 0x5) + +#define PCNT0_S0IN_PA0 SILABS_DBUS_PCNT0_S0IN(0x0, 0x0) +#define PCNT0_S0IN_PA1 SILABS_DBUS_PCNT0_S0IN(0x0, 0x1) +#define PCNT0_S0IN_PA2 SILABS_DBUS_PCNT0_S0IN(0x0, 0x2) +#define PCNT0_S0IN_PA3 SILABS_DBUS_PCNT0_S0IN(0x0, 0x3) +#define PCNT0_S0IN_PA4 SILABS_DBUS_PCNT0_S0IN(0x0, 0x4) +#define PCNT0_S0IN_PA5 SILABS_DBUS_PCNT0_S0IN(0x0, 0x5) +#define PCNT0_S0IN_PA6 SILABS_DBUS_PCNT0_S0IN(0x0, 0x6) +#define PCNT0_S0IN_PA7 SILABS_DBUS_PCNT0_S0IN(0x0, 0x7) +#define PCNT0_S0IN_PA8 SILABS_DBUS_PCNT0_S0IN(0x0, 0x8) +#define PCNT0_S0IN_PA9 SILABS_DBUS_PCNT0_S0IN(0x0, 0x9) +#define PCNT0_S0IN_PB0 SILABS_DBUS_PCNT0_S0IN(0x1, 0x0) +#define PCNT0_S0IN_PB1 SILABS_DBUS_PCNT0_S0IN(0x1, 0x1) +#define PCNT0_S0IN_PB2 SILABS_DBUS_PCNT0_S0IN(0x1, 0x2) +#define PCNT0_S0IN_PB3 SILABS_DBUS_PCNT0_S0IN(0x1, 0x3) +#define PCNT0_S0IN_PB4 SILABS_DBUS_PCNT0_S0IN(0x1, 0x4) +#define PCNT0_S0IN_PB5 SILABS_DBUS_PCNT0_S0IN(0x1, 0x5) +#define PCNT0_S1IN_PA0 SILABS_DBUS_PCNT0_S1IN(0x0, 0x0) +#define PCNT0_S1IN_PA1 SILABS_DBUS_PCNT0_S1IN(0x0, 0x1) +#define PCNT0_S1IN_PA2 SILABS_DBUS_PCNT0_S1IN(0x0, 0x2) +#define PCNT0_S1IN_PA3 SILABS_DBUS_PCNT0_S1IN(0x0, 0x3) +#define PCNT0_S1IN_PA4 SILABS_DBUS_PCNT0_S1IN(0x0, 0x4) +#define PCNT0_S1IN_PA5 SILABS_DBUS_PCNT0_S1IN(0x0, 0x5) +#define PCNT0_S1IN_PA6 SILABS_DBUS_PCNT0_S1IN(0x0, 0x6) +#define PCNT0_S1IN_PA7 SILABS_DBUS_PCNT0_S1IN(0x0, 0x7) +#define PCNT0_S1IN_PA8 SILABS_DBUS_PCNT0_S1IN(0x0, 0x8) +#define PCNT0_S1IN_PA9 SILABS_DBUS_PCNT0_S1IN(0x0, 0x9) +#define PCNT0_S1IN_PB0 SILABS_DBUS_PCNT0_S1IN(0x1, 0x0) +#define PCNT0_S1IN_PB1 SILABS_DBUS_PCNT0_S1IN(0x1, 0x1) +#define PCNT0_S1IN_PB2 SILABS_DBUS_PCNT0_S1IN(0x1, 0x2) +#define PCNT0_S1IN_PB3 SILABS_DBUS_PCNT0_S1IN(0x1, 0x3) +#define PCNT0_S1IN_PB4 SILABS_DBUS_PCNT0_S1IN(0x1, 0x4) +#define PCNT0_S1IN_PB5 SILABS_DBUS_PCNT0_S1IN(0x1, 0x5) + +#define PRS0_ASYNCH0_PA0 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x0) +#define PRS0_ASYNCH0_PA1 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x1) +#define PRS0_ASYNCH0_PA2 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x2) +#define PRS0_ASYNCH0_PA3 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x3) +#define PRS0_ASYNCH0_PA4 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x4) +#define PRS0_ASYNCH0_PA5 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x5) +#define PRS0_ASYNCH0_PA6 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x6) +#define PRS0_ASYNCH0_PA7 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x7) +#define PRS0_ASYNCH0_PA8 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x8) +#define PRS0_ASYNCH0_PA9 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x9) +#define PRS0_ASYNCH0_PB0 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x0) +#define PRS0_ASYNCH0_PB1 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x1) +#define PRS0_ASYNCH0_PB2 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x2) +#define PRS0_ASYNCH0_PB3 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x3) +#define PRS0_ASYNCH0_PB4 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x4) +#define PRS0_ASYNCH0_PB5 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x5) +#define PRS0_ASYNCH1_PA0 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x0) +#define PRS0_ASYNCH1_PA1 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x1) +#define PRS0_ASYNCH1_PA2 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x2) +#define PRS0_ASYNCH1_PA3 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x3) +#define PRS0_ASYNCH1_PA4 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x4) +#define PRS0_ASYNCH1_PA5 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x5) +#define PRS0_ASYNCH1_PA6 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x6) +#define PRS0_ASYNCH1_PA7 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x7) +#define PRS0_ASYNCH1_PA8 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x8) +#define PRS0_ASYNCH1_PA9 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x9) +#define PRS0_ASYNCH1_PB0 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x0) +#define PRS0_ASYNCH1_PB1 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x1) +#define PRS0_ASYNCH1_PB2 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x2) +#define PRS0_ASYNCH1_PB3 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x3) +#define PRS0_ASYNCH1_PB4 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x4) +#define PRS0_ASYNCH1_PB5 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x5) +#define PRS0_ASYNCH2_PA0 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x0) +#define PRS0_ASYNCH2_PA1 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x1) +#define PRS0_ASYNCH2_PA2 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x2) +#define PRS0_ASYNCH2_PA3 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x3) +#define PRS0_ASYNCH2_PA4 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x4) +#define PRS0_ASYNCH2_PA5 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x5) +#define PRS0_ASYNCH2_PA6 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x6) +#define PRS0_ASYNCH2_PA7 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x7) +#define PRS0_ASYNCH2_PA8 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x8) +#define PRS0_ASYNCH2_PA9 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x9) +#define PRS0_ASYNCH2_PB0 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x0) +#define PRS0_ASYNCH2_PB1 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x1) +#define PRS0_ASYNCH2_PB2 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x2) +#define PRS0_ASYNCH2_PB3 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x3) +#define PRS0_ASYNCH2_PB4 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x4) +#define PRS0_ASYNCH2_PB5 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x5) +#define PRS0_ASYNCH3_PA0 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x0) +#define PRS0_ASYNCH3_PA1 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x1) +#define PRS0_ASYNCH3_PA2 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x2) +#define PRS0_ASYNCH3_PA3 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x3) +#define PRS0_ASYNCH3_PA4 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x4) +#define PRS0_ASYNCH3_PA5 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x5) +#define PRS0_ASYNCH3_PA6 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x6) +#define PRS0_ASYNCH3_PA7 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x7) +#define PRS0_ASYNCH3_PA8 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x8) +#define PRS0_ASYNCH3_PA9 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x9) +#define PRS0_ASYNCH3_PB0 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x0) +#define PRS0_ASYNCH3_PB1 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x1) +#define PRS0_ASYNCH3_PB2 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x2) +#define PRS0_ASYNCH3_PB3 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x3) +#define PRS0_ASYNCH3_PB4 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x4) +#define PRS0_ASYNCH3_PB5 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x5) +#define PRS0_ASYNCH4_PA0 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x0) +#define PRS0_ASYNCH4_PA1 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x1) +#define PRS0_ASYNCH4_PA2 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x2) +#define PRS0_ASYNCH4_PA3 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x3) +#define PRS0_ASYNCH4_PA4 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x4) +#define PRS0_ASYNCH4_PA5 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x5) +#define PRS0_ASYNCH4_PA6 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x6) +#define PRS0_ASYNCH4_PA7 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x7) +#define PRS0_ASYNCH4_PA8 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x8) +#define PRS0_ASYNCH4_PA9 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x9) +#define PRS0_ASYNCH4_PB0 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x0) +#define PRS0_ASYNCH4_PB1 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x1) +#define PRS0_ASYNCH4_PB2 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x2) +#define PRS0_ASYNCH4_PB3 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x3) +#define PRS0_ASYNCH4_PB4 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x4) +#define PRS0_ASYNCH4_PB5 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x5) +#define PRS0_ASYNCH5_PA0 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x0) +#define PRS0_ASYNCH5_PA1 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x1) +#define PRS0_ASYNCH5_PA2 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x2) +#define PRS0_ASYNCH5_PA3 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x3) +#define PRS0_ASYNCH5_PA4 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x4) +#define PRS0_ASYNCH5_PA5 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x5) +#define PRS0_ASYNCH5_PA6 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x6) +#define PRS0_ASYNCH5_PA7 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x7) +#define PRS0_ASYNCH5_PA8 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x8) +#define PRS0_ASYNCH5_PA9 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x9) +#define PRS0_ASYNCH5_PB0 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x0) +#define PRS0_ASYNCH5_PB1 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x1) +#define PRS0_ASYNCH5_PB2 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x2) +#define PRS0_ASYNCH5_PB3 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x3) +#define PRS0_ASYNCH5_PB4 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x4) +#define PRS0_ASYNCH5_PB5 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x5) +#define PRS0_ASYNCH6_PC0 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x0) +#define PRS0_ASYNCH6_PC1 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x1) +#define PRS0_ASYNCH6_PC2 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x2) +#define PRS0_ASYNCH6_PC3 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x3) +#define PRS0_ASYNCH6_PC4 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x4) +#define PRS0_ASYNCH6_PC5 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x5) +#define PRS0_ASYNCH6_PC6 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x6) +#define PRS0_ASYNCH6_PC7 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x7) +#define PRS0_ASYNCH6_PC8 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x8) +#define PRS0_ASYNCH6_PC9 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x9) +#define PRS0_ASYNCH6_PD0 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x0) +#define PRS0_ASYNCH6_PD1 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x1) +#define PRS0_ASYNCH6_PD2 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x2) +#define PRS0_ASYNCH6_PD3 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x3) +#define PRS0_ASYNCH6_PD4 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x4) +#define PRS0_ASYNCH6_PD5 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x5) +#define PRS0_ASYNCH7_PC0 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x0) +#define PRS0_ASYNCH7_PC1 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x1) +#define PRS0_ASYNCH7_PC2 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x2) +#define PRS0_ASYNCH7_PC3 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x3) +#define PRS0_ASYNCH7_PC4 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x4) +#define PRS0_ASYNCH7_PC5 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x5) +#define PRS0_ASYNCH7_PC6 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x6) +#define PRS0_ASYNCH7_PC7 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x7) +#define PRS0_ASYNCH7_PC8 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x8) +#define PRS0_ASYNCH7_PC9 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x9) +#define PRS0_ASYNCH7_PD0 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x0) +#define PRS0_ASYNCH7_PD1 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x1) +#define PRS0_ASYNCH7_PD2 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x2) +#define PRS0_ASYNCH7_PD3 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x3) +#define PRS0_ASYNCH7_PD4 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x4) +#define PRS0_ASYNCH7_PD5 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x5) +#define PRS0_ASYNCH8_PC0 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x0) +#define PRS0_ASYNCH8_PC1 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x1) +#define PRS0_ASYNCH8_PC2 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x2) +#define PRS0_ASYNCH8_PC3 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x3) +#define PRS0_ASYNCH8_PC4 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x4) +#define PRS0_ASYNCH8_PC5 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x5) +#define PRS0_ASYNCH8_PC6 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x6) +#define PRS0_ASYNCH8_PC7 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x7) +#define PRS0_ASYNCH8_PC8 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x8) +#define PRS0_ASYNCH8_PC9 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x9) +#define PRS0_ASYNCH8_PD0 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x0) +#define PRS0_ASYNCH8_PD1 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x1) +#define PRS0_ASYNCH8_PD2 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x2) +#define PRS0_ASYNCH8_PD3 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x3) +#define PRS0_ASYNCH8_PD4 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x4) +#define PRS0_ASYNCH8_PD5 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x5) +#define PRS0_ASYNCH9_PC0 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x0) +#define PRS0_ASYNCH9_PC1 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x1) +#define PRS0_ASYNCH9_PC2 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x2) +#define PRS0_ASYNCH9_PC3 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x3) +#define PRS0_ASYNCH9_PC4 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x4) +#define PRS0_ASYNCH9_PC5 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x5) +#define PRS0_ASYNCH9_PC6 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x6) +#define PRS0_ASYNCH9_PC7 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x7) +#define PRS0_ASYNCH9_PC8 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x8) +#define PRS0_ASYNCH9_PC9 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x9) +#define PRS0_ASYNCH9_PD0 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x0) +#define PRS0_ASYNCH9_PD1 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x1) +#define PRS0_ASYNCH9_PD2 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x2) +#define PRS0_ASYNCH9_PD3 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x3) +#define PRS0_ASYNCH9_PD4 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x4) +#define PRS0_ASYNCH9_PD5 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x5) +#define PRS0_ASYNCH10_PC0 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x0) +#define PRS0_ASYNCH10_PC1 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x1) +#define PRS0_ASYNCH10_PC2 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x2) +#define PRS0_ASYNCH10_PC3 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x3) +#define PRS0_ASYNCH10_PC4 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x4) +#define PRS0_ASYNCH10_PC5 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x5) +#define PRS0_ASYNCH10_PC6 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x6) +#define PRS0_ASYNCH10_PC7 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x7) +#define PRS0_ASYNCH10_PC8 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x8) +#define PRS0_ASYNCH10_PC9 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x9) +#define PRS0_ASYNCH10_PD0 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x0) +#define PRS0_ASYNCH10_PD1 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x1) +#define PRS0_ASYNCH10_PD2 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x2) +#define PRS0_ASYNCH10_PD3 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x3) +#define PRS0_ASYNCH10_PD4 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x4) +#define PRS0_ASYNCH10_PD5 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x5) +#define PRS0_ASYNCH11_PC0 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x0) +#define PRS0_ASYNCH11_PC1 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x1) +#define PRS0_ASYNCH11_PC2 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x2) +#define PRS0_ASYNCH11_PC3 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x3) +#define PRS0_ASYNCH11_PC4 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x4) +#define PRS0_ASYNCH11_PC5 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x5) +#define PRS0_ASYNCH11_PC6 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x6) +#define PRS0_ASYNCH11_PC7 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x7) +#define PRS0_ASYNCH11_PC8 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x8) +#define PRS0_ASYNCH11_PC9 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x9) +#define PRS0_ASYNCH11_PD0 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x0) +#define PRS0_ASYNCH11_PD1 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x1) +#define PRS0_ASYNCH11_PD2 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x2) +#define PRS0_ASYNCH11_PD3 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x3) +#define PRS0_ASYNCH11_PD4 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x4) +#define PRS0_ASYNCH11_PD5 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x5) +#define PRS0_ASYNCH12_PA0 SILABS_DBUS_PRS0_ASYNCH12(0x0, 0x0) +#define PRS0_ASYNCH12_PA1 SILABS_DBUS_PRS0_ASYNCH12(0x0, 0x1) +#define PRS0_ASYNCH12_PA2 SILABS_DBUS_PRS0_ASYNCH12(0x0, 0x2) +#define PRS0_ASYNCH12_PA3 SILABS_DBUS_PRS0_ASYNCH12(0x0, 0x3) +#define PRS0_ASYNCH12_PA4 SILABS_DBUS_PRS0_ASYNCH12(0x0, 0x4) +#define PRS0_ASYNCH12_PA5 SILABS_DBUS_PRS0_ASYNCH12(0x0, 0x5) +#define PRS0_ASYNCH12_PA6 SILABS_DBUS_PRS0_ASYNCH12(0x0, 0x6) +#define PRS0_ASYNCH12_PA7 SILABS_DBUS_PRS0_ASYNCH12(0x0, 0x7) +#define PRS0_ASYNCH12_PA8 SILABS_DBUS_PRS0_ASYNCH12(0x0, 0x8) +#define PRS0_ASYNCH12_PA9 SILABS_DBUS_PRS0_ASYNCH12(0x0, 0x9) +#define PRS0_ASYNCH12_PB0 SILABS_DBUS_PRS0_ASYNCH12(0x1, 0x0) +#define PRS0_ASYNCH12_PB1 SILABS_DBUS_PRS0_ASYNCH12(0x1, 0x1) +#define PRS0_ASYNCH12_PB2 SILABS_DBUS_PRS0_ASYNCH12(0x1, 0x2) +#define PRS0_ASYNCH12_PB3 SILABS_DBUS_PRS0_ASYNCH12(0x1, 0x3) +#define PRS0_ASYNCH12_PB4 SILABS_DBUS_PRS0_ASYNCH12(0x1, 0x4) +#define PRS0_ASYNCH12_PB5 SILABS_DBUS_PRS0_ASYNCH12(0x1, 0x5) +#define PRS0_ASYNCH13_PA0 SILABS_DBUS_PRS0_ASYNCH13(0x0, 0x0) +#define PRS0_ASYNCH13_PA1 SILABS_DBUS_PRS0_ASYNCH13(0x0, 0x1) +#define PRS0_ASYNCH13_PA2 SILABS_DBUS_PRS0_ASYNCH13(0x0, 0x2) +#define PRS0_ASYNCH13_PA3 SILABS_DBUS_PRS0_ASYNCH13(0x0, 0x3) +#define PRS0_ASYNCH13_PA4 SILABS_DBUS_PRS0_ASYNCH13(0x0, 0x4) +#define PRS0_ASYNCH13_PA5 SILABS_DBUS_PRS0_ASYNCH13(0x0, 0x5) +#define PRS0_ASYNCH13_PA6 SILABS_DBUS_PRS0_ASYNCH13(0x0, 0x6) +#define PRS0_ASYNCH13_PA7 SILABS_DBUS_PRS0_ASYNCH13(0x0, 0x7) +#define PRS0_ASYNCH13_PA8 SILABS_DBUS_PRS0_ASYNCH13(0x0, 0x8) +#define PRS0_ASYNCH13_PA9 SILABS_DBUS_PRS0_ASYNCH13(0x0, 0x9) +#define PRS0_ASYNCH13_PB0 SILABS_DBUS_PRS0_ASYNCH13(0x1, 0x0) +#define PRS0_ASYNCH13_PB1 SILABS_DBUS_PRS0_ASYNCH13(0x1, 0x1) +#define PRS0_ASYNCH13_PB2 SILABS_DBUS_PRS0_ASYNCH13(0x1, 0x2) +#define PRS0_ASYNCH13_PB3 SILABS_DBUS_PRS0_ASYNCH13(0x1, 0x3) +#define PRS0_ASYNCH13_PB4 SILABS_DBUS_PRS0_ASYNCH13(0x1, 0x4) +#define PRS0_ASYNCH13_PB5 SILABS_DBUS_PRS0_ASYNCH13(0x1, 0x5) +#define PRS0_ASYNCH14_PA0 SILABS_DBUS_PRS0_ASYNCH14(0x0, 0x0) +#define PRS0_ASYNCH14_PA1 SILABS_DBUS_PRS0_ASYNCH14(0x0, 0x1) +#define PRS0_ASYNCH14_PA2 SILABS_DBUS_PRS0_ASYNCH14(0x0, 0x2) +#define PRS0_ASYNCH14_PA3 SILABS_DBUS_PRS0_ASYNCH14(0x0, 0x3) +#define PRS0_ASYNCH14_PA4 SILABS_DBUS_PRS0_ASYNCH14(0x0, 0x4) +#define PRS0_ASYNCH14_PA5 SILABS_DBUS_PRS0_ASYNCH14(0x0, 0x5) +#define PRS0_ASYNCH14_PA6 SILABS_DBUS_PRS0_ASYNCH14(0x0, 0x6) +#define PRS0_ASYNCH14_PA7 SILABS_DBUS_PRS0_ASYNCH14(0x0, 0x7) +#define PRS0_ASYNCH14_PA8 SILABS_DBUS_PRS0_ASYNCH14(0x0, 0x8) +#define PRS0_ASYNCH14_PA9 SILABS_DBUS_PRS0_ASYNCH14(0x0, 0x9) +#define PRS0_ASYNCH14_PB0 SILABS_DBUS_PRS0_ASYNCH14(0x1, 0x0) +#define PRS0_ASYNCH14_PB1 SILABS_DBUS_PRS0_ASYNCH14(0x1, 0x1) +#define PRS0_ASYNCH14_PB2 SILABS_DBUS_PRS0_ASYNCH14(0x1, 0x2) +#define PRS0_ASYNCH14_PB3 SILABS_DBUS_PRS0_ASYNCH14(0x1, 0x3) +#define PRS0_ASYNCH14_PB4 SILABS_DBUS_PRS0_ASYNCH14(0x1, 0x4) +#define PRS0_ASYNCH14_PB5 SILABS_DBUS_PRS0_ASYNCH14(0x1, 0x5) +#define PRS0_ASYNCH15_PA0 SILABS_DBUS_PRS0_ASYNCH15(0x0, 0x0) +#define PRS0_ASYNCH15_PA1 SILABS_DBUS_PRS0_ASYNCH15(0x0, 0x1) +#define PRS0_ASYNCH15_PA2 SILABS_DBUS_PRS0_ASYNCH15(0x0, 0x2) +#define PRS0_ASYNCH15_PA3 SILABS_DBUS_PRS0_ASYNCH15(0x0, 0x3) +#define PRS0_ASYNCH15_PA4 SILABS_DBUS_PRS0_ASYNCH15(0x0, 0x4) +#define PRS0_ASYNCH15_PA5 SILABS_DBUS_PRS0_ASYNCH15(0x0, 0x5) +#define PRS0_ASYNCH15_PA6 SILABS_DBUS_PRS0_ASYNCH15(0x0, 0x6) +#define PRS0_ASYNCH15_PA7 SILABS_DBUS_PRS0_ASYNCH15(0x0, 0x7) +#define PRS0_ASYNCH15_PA8 SILABS_DBUS_PRS0_ASYNCH15(0x0, 0x8) +#define PRS0_ASYNCH15_PA9 SILABS_DBUS_PRS0_ASYNCH15(0x0, 0x9) +#define PRS0_ASYNCH15_PB0 SILABS_DBUS_PRS0_ASYNCH15(0x1, 0x0) +#define PRS0_ASYNCH15_PB1 SILABS_DBUS_PRS0_ASYNCH15(0x1, 0x1) +#define PRS0_ASYNCH15_PB2 SILABS_DBUS_PRS0_ASYNCH15(0x1, 0x2) +#define PRS0_ASYNCH15_PB3 SILABS_DBUS_PRS0_ASYNCH15(0x1, 0x3) +#define PRS0_ASYNCH15_PB4 SILABS_DBUS_PRS0_ASYNCH15(0x1, 0x4) +#define PRS0_ASYNCH15_PB5 SILABS_DBUS_PRS0_ASYNCH15(0x1, 0x5) +#define PRS0_SYNCH0_PA0 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x0) +#define PRS0_SYNCH0_PA1 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x1) +#define PRS0_SYNCH0_PA2 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x2) +#define PRS0_SYNCH0_PA3 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x3) +#define PRS0_SYNCH0_PA4 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x4) +#define PRS0_SYNCH0_PA5 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x5) +#define PRS0_SYNCH0_PA6 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x6) +#define PRS0_SYNCH0_PA7 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x7) +#define PRS0_SYNCH0_PA8 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x8) +#define PRS0_SYNCH0_PA9 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x9) +#define PRS0_SYNCH0_PB0 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x0) +#define PRS0_SYNCH0_PB1 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x1) +#define PRS0_SYNCH0_PB2 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x2) +#define PRS0_SYNCH0_PB3 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x3) +#define PRS0_SYNCH0_PB4 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x4) +#define PRS0_SYNCH0_PB5 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x5) +#define PRS0_SYNCH0_PC0 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x0) +#define PRS0_SYNCH0_PC1 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x1) +#define PRS0_SYNCH0_PC2 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x2) +#define PRS0_SYNCH0_PC3 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x3) +#define PRS0_SYNCH0_PC4 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x4) +#define PRS0_SYNCH0_PC5 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x5) +#define PRS0_SYNCH0_PC6 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x6) +#define PRS0_SYNCH0_PC7 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x7) +#define PRS0_SYNCH0_PC8 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x8) +#define PRS0_SYNCH0_PC9 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x9) +#define PRS0_SYNCH0_PD0 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x0) +#define PRS0_SYNCH0_PD1 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x1) +#define PRS0_SYNCH0_PD2 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x2) +#define PRS0_SYNCH0_PD3 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x3) +#define PRS0_SYNCH0_PD4 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x4) +#define PRS0_SYNCH0_PD5 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x5) +#define PRS0_SYNCH1_PA0 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x0) +#define PRS0_SYNCH1_PA1 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x1) +#define PRS0_SYNCH1_PA2 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x2) +#define PRS0_SYNCH1_PA3 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x3) +#define PRS0_SYNCH1_PA4 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x4) +#define PRS0_SYNCH1_PA5 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x5) +#define PRS0_SYNCH1_PA6 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x6) +#define PRS0_SYNCH1_PA7 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x7) +#define PRS0_SYNCH1_PA8 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x8) +#define PRS0_SYNCH1_PA9 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x9) +#define PRS0_SYNCH1_PB0 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x0) +#define PRS0_SYNCH1_PB1 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x1) +#define PRS0_SYNCH1_PB2 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x2) +#define PRS0_SYNCH1_PB3 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x3) +#define PRS0_SYNCH1_PB4 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x4) +#define PRS0_SYNCH1_PB5 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x5) +#define PRS0_SYNCH1_PC0 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x0) +#define PRS0_SYNCH1_PC1 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x1) +#define PRS0_SYNCH1_PC2 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x2) +#define PRS0_SYNCH1_PC3 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x3) +#define PRS0_SYNCH1_PC4 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x4) +#define PRS0_SYNCH1_PC5 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x5) +#define PRS0_SYNCH1_PC6 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x6) +#define PRS0_SYNCH1_PC7 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x7) +#define PRS0_SYNCH1_PC8 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x8) +#define PRS0_SYNCH1_PC9 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x9) +#define PRS0_SYNCH1_PD0 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x0) +#define PRS0_SYNCH1_PD1 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x1) +#define PRS0_SYNCH1_PD2 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x2) +#define PRS0_SYNCH1_PD3 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x3) +#define PRS0_SYNCH1_PD4 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x4) +#define PRS0_SYNCH1_PD5 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x5) +#define PRS0_SYNCH2_PA0 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x0) +#define PRS0_SYNCH2_PA1 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x1) +#define PRS0_SYNCH2_PA2 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x2) +#define PRS0_SYNCH2_PA3 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x3) +#define PRS0_SYNCH2_PA4 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x4) +#define PRS0_SYNCH2_PA5 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x5) +#define PRS0_SYNCH2_PA6 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x6) +#define PRS0_SYNCH2_PA7 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x7) +#define PRS0_SYNCH2_PA8 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x8) +#define PRS0_SYNCH2_PA9 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x9) +#define PRS0_SYNCH2_PB0 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x0) +#define PRS0_SYNCH2_PB1 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x1) +#define PRS0_SYNCH2_PB2 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x2) +#define PRS0_SYNCH2_PB3 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x3) +#define PRS0_SYNCH2_PB4 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x4) +#define PRS0_SYNCH2_PB5 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x5) +#define PRS0_SYNCH2_PC0 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x0) +#define PRS0_SYNCH2_PC1 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x1) +#define PRS0_SYNCH2_PC2 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x2) +#define PRS0_SYNCH2_PC3 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x3) +#define PRS0_SYNCH2_PC4 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x4) +#define PRS0_SYNCH2_PC5 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x5) +#define PRS0_SYNCH2_PC6 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x6) +#define PRS0_SYNCH2_PC7 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x7) +#define PRS0_SYNCH2_PC8 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x8) +#define PRS0_SYNCH2_PC9 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x9) +#define PRS0_SYNCH2_PD0 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x0) +#define PRS0_SYNCH2_PD1 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x1) +#define PRS0_SYNCH2_PD2 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x2) +#define PRS0_SYNCH2_PD3 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x3) +#define PRS0_SYNCH2_PD4 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x4) +#define PRS0_SYNCH2_PD5 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x5) +#define PRS0_SYNCH3_PA0 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x0) +#define PRS0_SYNCH3_PA1 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x1) +#define PRS0_SYNCH3_PA2 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x2) +#define PRS0_SYNCH3_PA3 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x3) +#define PRS0_SYNCH3_PA4 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x4) +#define PRS0_SYNCH3_PA5 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x5) +#define PRS0_SYNCH3_PA6 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x6) +#define PRS0_SYNCH3_PA7 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x7) +#define PRS0_SYNCH3_PA8 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x8) +#define PRS0_SYNCH3_PA9 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x9) +#define PRS0_SYNCH3_PB0 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x0) +#define PRS0_SYNCH3_PB1 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x1) +#define PRS0_SYNCH3_PB2 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x2) +#define PRS0_SYNCH3_PB3 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x3) +#define PRS0_SYNCH3_PB4 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x4) +#define PRS0_SYNCH3_PB5 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x5) +#define PRS0_SYNCH3_PC0 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x0) +#define PRS0_SYNCH3_PC1 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x1) +#define PRS0_SYNCH3_PC2 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x2) +#define PRS0_SYNCH3_PC3 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x3) +#define PRS0_SYNCH3_PC4 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x4) +#define PRS0_SYNCH3_PC5 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x5) +#define PRS0_SYNCH3_PC6 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x6) +#define PRS0_SYNCH3_PC7 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x7) +#define PRS0_SYNCH3_PC8 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x8) +#define PRS0_SYNCH3_PC9 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x9) +#define PRS0_SYNCH3_PD0 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x0) +#define PRS0_SYNCH3_PD1 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x1) +#define PRS0_SYNCH3_PD2 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x2) +#define PRS0_SYNCH3_PD3 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x3) +#define PRS0_SYNCH3_PD4 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x4) +#define PRS0_SYNCH3_PD5 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x5) + +#define HFXO0_BUFOUTREQINASYNC_PA0 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x0, 0x0) +#define HFXO0_BUFOUTREQINASYNC_PA1 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x0, 0x1) +#define HFXO0_BUFOUTREQINASYNC_PA2 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x0, 0x2) +#define HFXO0_BUFOUTREQINASYNC_PA3 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x0, 0x3) +#define HFXO0_BUFOUTREQINASYNC_PA4 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x0, 0x4) +#define HFXO0_BUFOUTREQINASYNC_PA5 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x0, 0x5) +#define HFXO0_BUFOUTREQINASYNC_PA6 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x0, 0x6) +#define HFXO0_BUFOUTREQINASYNC_PA7 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x0, 0x7) +#define HFXO0_BUFOUTREQINASYNC_PA8 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x0, 0x8) +#define HFXO0_BUFOUTREQINASYNC_PA9 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x0, 0x9) +#define HFXO0_BUFOUTREQINASYNC_PB0 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x1, 0x0) +#define HFXO0_BUFOUTREQINASYNC_PB1 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x1, 0x1) +#define HFXO0_BUFOUTREQINASYNC_PB2 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x1, 0x2) +#define HFXO0_BUFOUTREQINASYNC_PB3 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x1, 0x3) +#define HFXO0_BUFOUTREQINASYNC_PB4 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x1, 0x4) +#define HFXO0_BUFOUTREQINASYNC_PB5 SILABS_DBUS_HFXO0_BUFOUTREQINASYNC(0x1, 0x5) + +#define TIMER0_CC0_PA0 SILABS_DBUS_TIMER0_CC0(0x0, 0x0) +#define TIMER0_CC0_PA1 SILABS_DBUS_TIMER0_CC0(0x0, 0x1) +#define TIMER0_CC0_PA2 SILABS_DBUS_TIMER0_CC0(0x0, 0x2) +#define TIMER0_CC0_PA3 SILABS_DBUS_TIMER0_CC0(0x0, 0x3) +#define TIMER0_CC0_PA4 SILABS_DBUS_TIMER0_CC0(0x0, 0x4) +#define TIMER0_CC0_PA5 SILABS_DBUS_TIMER0_CC0(0x0, 0x5) +#define TIMER0_CC0_PA6 SILABS_DBUS_TIMER0_CC0(0x0, 0x6) +#define TIMER0_CC0_PA7 SILABS_DBUS_TIMER0_CC0(0x0, 0x7) +#define TIMER0_CC0_PA8 SILABS_DBUS_TIMER0_CC0(0x0, 0x8) +#define TIMER0_CC0_PA9 SILABS_DBUS_TIMER0_CC0(0x0, 0x9) +#define TIMER0_CC0_PB0 SILABS_DBUS_TIMER0_CC0(0x1, 0x0) +#define TIMER0_CC0_PB1 SILABS_DBUS_TIMER0_CC0(0x1, 0x1) +#define TIMER0_CC0_PB2 SILABS_DBUS_TIMER0_CC0(0x1, 0x2) +#define TIMER0_CC0_PB3 SILABS_DBUS_TIMER0_CC0(0x1, 0x3) +#define TIMER0_CC0_PB4 SILABS_DBUS_TIMER0_CC0(0x1, 0x4) +#define TIMER0_CC0_PB5 SILABS_DBUS_TIMER0_CC0(0x1, 0x5) +#define TIMER0_CC0_PC0 SILABS_DBUS_TIMER0_CC0(0x2, 0x0) +#define TIMER0_CC0_PC1 SILABS_DBUS_TIMER0_CC0(0x2, 0x1) +#define TIMER0_CC0_PC2 SILABS_DBUS_TIMER0_CC0(0x2, 0x2) +#define TIMER0_CC0_PC3 SILABS_DBUS_TIMER0_CC0(0x2, 0x3) +#define TIMER0_CC0_PC4 SILABS_DBUS_TIMER0_CC0(0x2, 0x4) +#define TIMER0_CC0_PC5 SILABS_DBUS_TIMER0_CC0(0x2, 0x5) +#define TIMER0_CC0_PC6 SILABS_DBUS_TIMER0_CC0(0x2, 0x6) +#define TIMER0_CC0_PC7 SILABS_DBUS_TIMER0_CC0(0x2, 0x7) +#define TIMER0_CC0_PC8 SILABS_DBUS_TIMER0_CC0(0x2, 0x8) +#define TIMER0_CC0_PC9 SILABS_DBUS_TIMER0_CC0(0x2, 0x9) +#define TIMER0_CC0_PD0 SILABS_DBUS_TIMER0_CC0(0x3, 0x0) +#define TIMER0_CC0_PD1 SILABS_DBUS_TIMER0_CC0(0x3, 0x1) +#define TIMER0_CC0_PD2 SILABS_DBUS_TIMER0_CC0(0x3, 0x2) +#define TIMER0_CC0_PD3 SILABS_DBUS_TIMER0_CC0(0x3, 0x3) +#define TIMER0_CC0_PD4 SILABS_DBUS_TIMER0_CC0(0x3, 0x4) +#define TIMER0_CC0_PD5 SILABS_DBUS_TIMER0_CC0(0x3, 0x5) +#define TIMER0_CC1_PA0 SILABS_DBUS_TIMER0_CC1(0x0, 0x0) +#define TIMER0_CC1_PA1 SILABS_DBUS_TIMER0_CC1(0x0, 0x1) +#define TIMER0_CC1_PA2 SILABS_DBUS_TIMER0_CC1(0x0, 0x2) +#define TIMER0_CC1_PA3 SILABS_DBUS_TIMER0_CC1(0x0, 0x3) +#define TIMER0_CC1_PA4 SILABS_DBUS_TIMER0_CC1(0x0, 0x4) +#define TIMER0_CC1_PA5 SILABS_DBUS_TIMER0_CC1(0x0, 0x5) +#define TIMER0_CC1_PA6 SILABS_DBUS_TIMER0_CC1(0x0, 0x6) +#define TIMER0_CC1_PA7 SILABS_DBUS_TIMER0_CC1(0x0, 0x7) +#define TIMER0_CC1_PA8 SILABS_DBUS_TIMER0_CC1(0x0, 0x8) +#define TIMER0_CC1_PA9 SILABS_DBUS_TIMER0_CC1(0x0, 0x9) +#define TIMER0_CC1_PB0 SILABS_DBUS_TIMER0_CC1(0x1, 0x0) +#define TIMER0_CC1_PB1 SILABS_DBUS_TIMER0_CC1(0x1, 0x1) +#define TIMER0_CC1_PB2 SILABS_DBUS_TIMER0_CC1(0x1, 0x2) +#define TIMER0_CC1_PB3 SILABS_DBUS_TIMER0_CC1(0x1, 0x3) +#define TIMER0_CC1_PB4 SILABS_DBUS_TIMER0_CC1(0x1, 0x4) +#define TIMER0_CC1_PB5 SILABS_DBUS_TIMER0_CC1(0x1, 0x5) +#define TIMER0_CC1_PC0 SILABS_DBUS_TIMER0_CC1(0x2, 0x0) +#define TIMER0_CC1_PC1 SILABS_DBUS_TIMER0_CC1(0x2, 0x1) +#define TIMER0_CC1_PC2 SILABS_DBUS_TIMER0_CC1(0x2, 0x2) +#define TIMER0_CC1_PC3 SILABS_DBUS_TIMER0_CC1(0x2, 0x3) +#define TIMER0_CC1_PC4 SILABS_DBUS_TIMER0_CC1(0x2, 0x4) +#define TIMER0_CC1_PC5 SILABS_DBUS_TIMER0_CC1(0x2, 0x5) +#define TIMER0_CC1_PC6 SILABS_DBUS_TIMER0_CC1(0x2, 0x6) +#define TIMER0_CC1_PC7 SILABS_DBUS_TIMER0_CC1(0x2, 0x7) +#define TIMER0_CC1_PC8 SILABS_DBUS_TIMER0_CC1(0x2, 0x8) +#define TIMER0_CC1_PC9 SILABS_DBUS_TIMER0_CC1(0x2, 0x9) +#define TIMER0_CC1_PD0 SILABS_DBUS_TIMER0_CC1(0x3, 0x0) +#define TIMER0_CC1_PD1 SILABS_DBUS_TIMER0_CC1(0x3, 0x1) +#define TIMER0_CC1_PD2 SILABS_DBUS_TIMER0_CC1(0x3, 0x2) +#define TIMER0_CC1_PD3 SILABS_DBUS_TIMER0_CC1(0x3, 0x3) +#define TIMER0_CC1_PD4 SILABS_DBUS_TIMER0_CC1(0x3, 0x4) +#define TIMER0_CC1_PD5 SILABS_DBUS_TIMER0_CC1(0x3, 0x5) +#define TIMER0_CC2_PA0 SILABS_DBUS_TIMER0_CC2(0x0, 0x0) +#define TIMER0_CC2_PA1 SILABS_DBUS_TIMER0_CC2(0x0, 0x1) +#define TIMER0_CC2_PA2 SILABS_DBUS_TIMER0_CC2(0x0, 0x2) +#define TIMER0_CC2_PA3 SILABS_DBUS_TIMER0_CC2(0x0, 0x3) +#define TIMER0_CC2_PA4 SILABS_DBUS_TIMER0_CC2(0x0, 0x4) +#define TIMER0_CC2_PA5 SILABS_DBUS_TIMER0_CC2(0x0, 0x5) +#define TIMER0_CC2_PA6 SILABS_DBUS_TIMER0_CC2(0x0, 0x6) +#define TIMER0_CC2_PA7 SILABS_DBUS_TIMER0_CC2(0x0, 0x7) +#define TIMER0_CC2_PA8 SILABS_DBUS_TIMER0_CC2(0x0, 0x8) +#define TIMER0_CC2_PA9 SILABS_DBUS_TIMER0_CC2(0x0, 0x9) +#define TIMER0_CC2_PB0 SILABS_DBUS_TIMER0_CC2(0x1, 0x0) +#define TIMER0_CC2_PB1 SILABS_DBUS_TIMER0_CC2(0x1, 0x1) +#define TIMER0_CC2_PB2 SILABS_DBUS_TIMER0_CC2(0x1, 0x2) +#define TIMER0_CC2_PB3 SILABS_DBUS_TIMER0_CC2(0x1, 0x3) +#define TIMER0_CC2_PB4 SILABS_DBUS_TIMER0_CC2(0x1, 0x4) +#define TIMER0_CC2_PB5 SILABS_DBUS_TIMER0_CC2(0x1, 0x5) +#define TIMER0_CC2_PC0 SILABS_DBUS_TIMER0_CC2(0x2, 0x0) +#define TIMER0_CC2_PC1 SILABS_DBUS_TIMER0_CC2(0x2, 0x1) +#define TIMER0_CC2_PC2 SILABS_DBUS_TIMER0_CC2(0x2, 0x2) +#define TIMER0_CC2_PC3 SILABS_DBUS_TIMER0_CC2(0x2, 0x3) +#define TIMER0_CC2_PC4 SILABS_DBUS_TIMER0_CC2(0x2, 0x4) +#define TIMER0_CC2_PC5 SILABS_DBUS_TIMER0_CC2(0x2, 0x5) +#define TIMER0_CC2_PC6 SILABS_DBUS_TIMER0_CC2(0x2, 0x6) +#define TIMER0_CC2_PC7 SILABS_DBUS_TIMER0_CC2(0x2, 0x7) +#define TIMER0_CC2_PC8 SILABS_DBUS_TIMER0_CC2(0x2, 0x8) +#define TIMER0_CC2_PC9 SILABS_DBUS_TIMER0_CC2(0x2, 0x9) +#define TIMER0_CC2_PD0 SILABS_DBUS_TIMER0_CC2(0x3, 0x0) +#define TIMER0_CC2_PD1 SILABS_DBUS_TIMER0_CC2(0x3, 0x1) +#define TIMER0_CC2_PD2 SILABS_DBUS_TIMER0_CC2(0x3, 0x2) +#define TIMER0_CC2_PD3 SILABS_DBUS_TIMER0_CC2(0x3, 0x3) +#define TIMER0_CC2_PD4 SILABS_DBUS_TIMER0_CC2(0x3, 0x4) +#define TIMER0_CC2_PD5 SILABS_DBUS_TIMER0_CC2(0x3, 0x5) +#define TIMER0_CDTI0_PA0 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x0) +#define TIMER0_CDTI0_PA1 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x1) +#define TIMER0_CDTI0_PA2 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x2) +#define TIMER0_CDTI0_PA3 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x3) +#define TIMER0_CDTI0_PA4 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x4) +#define TIMER0_CDTI0_PA5 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x5) +#define TIMER0_CDTI0_PA6 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x6) +#define TIMER0_CDTI0_PA7 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x7) +#define TIMER0_CDTI0_PA8 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x8) +#define TIMER0_CDTI0_PA9 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x9) +#define TIMER0_CDTI0_PB0 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x0) +#define TIMER0_CDTI0_PB1 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x1) +#define TIMER0_CDTI0_PB2 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x2) +#define TIMER0_CDTI0_PB3 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x3) +#define TIMER0_CDTI0_PB4 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x4) +#define TIMER0_CDTI0_PB5 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x5) +#define TIMER0_CDTI0_PC0 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x0) +#define TIMER0_CDTI0_PC1 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x1) +#define TIMER0_CDTI0_PC2 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x2) +#define TIMER0_CDTI0_PC3 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x3) +#define TIMER0_CDTI0_PC4 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x4) +#define TIMER0_CDTI0_PC5 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x5) +#define TIMER0_CDTI0_PC6 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x6) +#define TIMER0_CDTI0_PC7 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x7) +#define TIMER0_CDTI0_PC8 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x8) +#define TIMER0_CDTI0_PC9 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x9) +#define TIMER0_CDTI0_PD0 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x0) +#define TIMER0_CDTI0_PD1 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x1) +#define TIMER0_CDTI0_PD2 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x2) +#define TIMER0_CDTI0_PD3 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x3) +#define TIMER0_CDTI0_PD4 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x4) +#define TIMER0_CDTI0_PD5 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x5) +#define TIMER0_CDTI1_PA0 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x0) +#define TIMER0_CDTI1_PA1 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x1) +#define TIMER0_CDTI1_PA2 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x2) +#define TIMER0_CDTI1_PA3 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x3) +#define TIMER0_CDTI1_PA4 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x4) +#define TIMER0_CDTI1_PA5 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x5) +#define TIMER0_CDTI1_PA6 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x6) +#define TIMER0_CDTI1_PA7 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x7) +#define TIMER0_CDTI1_PA8 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x8) +#define TIMER0_CDTI1_PA9 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x9) +#define TIMER0_CDTI1_PB0 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x0) +#define TIMER0_CDTI1_PB1 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x1) +#define TIMER0_CDTI1_PB2 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x2) +#define TIMER0_CDTI1_PB3 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x3) +#define TIMER0_CDTI1_PB4 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x4) +#define TIMER0_CDTI1_PB5 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x5) +#define TIMER0_CDTI1_PC0 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x0) +#define TIMER0_CDTI1_PC1 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x1) +#define TIMER0_CDTI1_PC2 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x2) +#define TIMER0_CDTI1_PC3 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x3) +#define TIMER0_CDTI1_PC4 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x4) +#define TIMER0_CDTI1_PC5 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x5) +#define TIMER0_CDTI1_PC6 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x6) +#define TIMER0_CDTI1_PC7 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x7) +#define TIMER0_CDTI1_PC8 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x8) +#define TIMER0_CDTI1_PC9 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x9) +#define TIMER0_CDTI1_PD0 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x0) +#define TIMER0_CDTI1_PD1 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x1) +#define TIMER0_CDTI1_PD2 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x2) +#define TIMER0_CDTI1_PD3 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x3) +#define TIMER0_CDTI1_PD4 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x4) +#define TIMER0_CDTI1_PD5 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x5) +#define TIMER0_CDTI2_PA0 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x0) +#define TIMER0_CDTI2_PA1 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x1) +#define TIMER0_CDTI2_PA2 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x2) +#define TIMER0_CDTI2_PA3 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x3) +#define TIMER0_CDTI2_PA4 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x4) +#define TIMER0_CDTI2_PA5 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x5) +#define TIMER0_CDTI2_PA6 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x6) +#define TIMER0_CDTI2_PA7 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x7) +#define TIMER0_CDTI2_PA8 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x8) +#define TIMER0_CDTI2_PA9 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x9) +#define TIMER0_CDTI2_PB0 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x0) +#define TIMER0_CDTI2_PB1 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x1) +#define TIMER0_CDTI2_PB2 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x2) +#define TIMER0_CDTI2_PB3 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x3) +#define TIMER0_CDTI2_PB4 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x4) +#define TIMER0_CDTI2_PB5 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x5) +#define TIMER0_CDTI2_PC0 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x0) +#define TIMER0_CDTI2_PC1 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x1) +#define TIMER0_CDTI2_PC2 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x2) +#define TIMER0_CDTI2_PC3 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x3) +#define TIMER0_CDTI2_PC4 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x4) +#define TIMER0_CDTI2_PC5 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x5) +#define TIMER0_CDTI2_PC6 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x6) +#define TIMER0_CDTI2_PC7 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x7) +#define TIMER0_CDTI2_PC8 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x8) +#define TIMER0_CDTI2_PC9 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x9) +#define TIMER0_CDTI2_PD0 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x0) +#define TIMER0_CDTI2_PD1 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x1) +#define TIMER0_CDTI2_PD2 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x2) +#define TIMER0_CDTI2_PD3 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x3) +#define TIMER0_CDTI2_PD4 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x4) +#define TIMER0_CDTI2_PD5 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x5) + +#define TIMER1_CC0_PA0 SILABS_DBUS_TIMER1_CC0(0x0, 0x0) +#define TIMER1_CC0_PA1 SILABS_DBUS_TIMER1_CC0(0x0, 0x1) +#define TIMER1_CC0_PA2 SILABS_DBUS_TIMER1_CC0(0x0, 0x2) +#define TIMER1_CC0_PA3 SILABS_DBUS_TIMER1_CC0(0x0, 0x3) +#define TIMER1_CC0_PA4 SILABS_DBUS_TIMER1_CC0(0x0, 0x4) +#define TIMER1_CC0_PA5 SILABS_DBUS_TIMER1_CC0(0x0, 0x5) +#define TIMER1_CC0_PA6 SILABS_DBUS_TIMER1_CC0(0x0, 0x6) +#define TIMER1_CC0_PA7 SILABS_DBUS_TIMER1_CC0(0x0, 0x7) +#define TIMER1_CC0_PA8 SILABS_DBUS_TIMER1_CC0(0x0, 0x8) +#define TIMER1_CC0_PA9 SILABS_DBUS_TIMER1_CC0(0x0, 0x9) +#define TIMER1_CC0_PB0 SILABS_DBUS_TIMER1_CC0(0x1, 0x0) +#define TIMER1_CC0_PB1 SILABS_DBUS_TIMER1_CC0(0x1, 0x1) +#define TIMER1_CC0_PB2 SILABS_DBUS_TIMER1_CC0(0x1, 0x2) +#define TIMER1_CC0_PB3 SILABS_DBUS_TIMER1_CC0(0x1, 0x3) +#define TIMER1_CC0_PB4 SILABS_DBUS_TIMER1_CC0(0x1, 0x4) +#define TIMER1_CC0_PB5 SILABS_DBUS_TIMER1_CC0(0x1, 0x5) +#define TIMER1_CC0_PC0 SILABS_DBUS_TIMER1_CC0(0x2, 0x0) +#define TIMER1_CC0_PC1 SILABS_DBUS_TIMER1_CC0(0x2, 0x1) +#define TIMER1_CC0_PC2 SILABS_DBUS_TIMER1_CC0(0x2, 0x2) +#define TIMER1_CC0_PC3 SILABS_DBUS_TIMER1_CC0(0x2, 0x3) +#define TIMER1_CC0_PC4 SILABS_DBUS_TIMER1_CC0(0x2, 0x4) +#define TIMER1_CC0_PC5 SILABS_DBUS_TIMER1_CC0(0x2, 0x5) +#define TIMER1_CC0_PC6 SILABS_DBUS_TIMER1_CC0(0x2, 0x6) +#define TIMER1_CC0_PC7 SILABS_DBUS_TIMER1_CC0(0x2, 0x7) +#define TIMER1_CC0_PC8 SILABS_DBUS_TIMER1_CC0(0x2, 0x8) +#define TIMER1_CC0_PC9 SILABS_DBUS_TIMER1_CC0(0x2, 0x9) +#define TIMER1_CC0_PD0 SILABS_DBUS_TIMER1_CC0(0x3, 0x0) +#define TIMER1_CC0_PD1 SILABS_DBUS_TIMER1_CC0(0x3, 0x1) +#define TIMER1_CC0_PD2 SILABS_DBUS_TIMER1_CC0(0x3, 0x2) +#define TIMER1_CC0_PD3 SILABS_DBUS_TIMER1_CC0(0x3, 0x3) +#define TIMER1_CC0_PD4 SILABS_DBUS_TIMER1_CC0(0x3, 0x4) +#define TIMER1_CC0_PD5 SILABS_DBUS_TIMER1_CC0(0x3, 0x5) +#define TIMER1_CC1_PA0 SILABS_DBUS_TIMER1_CC1(0x0, 0x0) +#define TIMER1_CC1_PA1 SILABS_DBUS_TIMER1_CC1(0x0, 0x1) +#define TIMER1_CC1_PA2 SILABS_DBUS_TIMER1_CC1(0x0, 0x2) +#define TIMER1_CC1_PA3 SILABS_DBUS_TIMER1_CC1(0x0, 0x3) +#define TIMER1_CC1_PA4 SILABS_DBUS_TIMER1_CC1(0x0, 0x4) +#define TIMER1_CC1_PA5 SILABS_DBUS_TIMER1_CC1(0x0, 0x5) +#define TIMER1_CC1_PA6 SILABS_DBUS_TIMER1_CC1(0x0, 0x6) +#define TIMER1_CC1_PA7 SILABS_DBUS_TIMER1_CC1(0x0, 0x7) +#define TIMER1_CC1_PA8 SILABS_DBUS_TIMER1_CC1(0x0, 0x8) +#define TIMER1_CC1_PA9 SILABS_DBUS_TIMER1_CC1(0x0, 0x9) +#define TIMER1_CC1_PB0 SILABS_DBUS_TIMER1_CC1(0x1, 0x0) +#define TIMER1_CC1_PB1 SILABS_DBUS_TIMER1_CC1(0x1, 0x1) +#define TIMER1_CC1_PB2 SILABS_DBUS_TIMER1_CC1(0x1, 0x2) +#define TIMER1_CC1_PB3 SILABS_DBUS_TIMER1_CC1(0x1, 0x3) +#define TIMER1_CC1_PB4 SILABS_DBUS_TIMER1_CC1(0x1, 0x4) +#define TIMER1_CC1_PB5 SILABS_DBUS_TIMER1_CC1(0x1, 0x5) +#define TIMER1_CC1_PC0 SILABS_DBUS_TIMER1_CC1(0x2, 0x0) +#define TIMER1_CC1_PC1 SILABS_DBUS_TIMER1_CC1(0x2, 0x1) +#define TIMER1_CC1_PC2 SILABS_DBUS_TIMER1_CC1(0x2, 0x2) +#define TIMER1_CC1_PC3 SILABS_DBUS_TIMER1_CC1(0x2, 0x3) +#define TIMER1_CC1_PC4 SILABS_DBUS_TIMER1_CC1(0x2, 0x4) +#define TIMER1_CC1_PC5 SILABS_DBUS_TIMER1_CC1(0x2, 0x5) +#define TIMER1_CC1_PC6 SILABS_DBUS_TIMER1_CC1(0x2, 0x6) +#define TIMER1_CC1_PC7 SILABS_DBUS_TIMER1_CC1(0x2, 0x7) +#define TIMER1_CC1_PC8 SILABS_DBUS_TIMER1_CC1(0x2, 0x8) +#define TIMER1_CC1_PC9 SILABS_DBUS_TIMER1_CC1(0x2, 0x9) +#define TIMER1_CC1_PD0 SILABS_DBUS_TIMER1_CC1(0x3, 0x0) +#define TIMER1_CC1_PD1 SILABS_DBUS_TIMER1_CC1(0x3, 0x1) +#define TIMER1_CC1_PD2 SILABS_DBUS_TIMER1_CC1(0x3, 0x2) +#define TIMER1_CC1_PD3 SILABS_DBUS_TIMER1_CC1(0x3, 0x3) +#define TIMER1_CC1_PD4 SILABS_DBUS_TIMER1_CC1(0x3, 0x4) +#define TIMER1_CC1_PD5 SILABS_DBUS_TIMER1_CC1(0x3, 0x5) +#define TIMER1_CC2_PA0 SILABS_DBUS_TIMER1_CC2(0x0, 0x0) +#define TIMER1_CC2_PA1 SILABS_DBUS_TIMER1_CC2(0x0, 0x1) +#define TIMER1_CC2_PA2 SILABS_DBUS_TIMER1_CC2(0x0, 0x2) +#define TIMER1_CC2_PA3 SILABS_DBUS_TIMER1_CC2(0x0, 0x3) +#define TIMER1_CC2_PA4 SILABS_DBUS_TIMER1_CC2(0x0, 0x4) +#define TIMER1_CC2_PA5 SILABS_DBUS_TIMER1_CC2(0x0, 0x5) +#define TIMER1_CC2_PA6 SILABS_DBUS_TIMER1_CC2(0x0, 0x6) +#define TIMER1_CC2_PA7 SILABS_DBUS_TIMER1_CC2(0x0, 0x7) +#define TIMER1_CC2_PA8 SILABS_DBUS_TIMER1_CC2(0x0, 0x8) +#define TIMER1_CC2_PA9 SILABS_DBUS_TIMER1_CC2(0x0, 0x9) +#define TIMER1_CC2_PB0 SILABS_DBUS_TIMER1_CC2(0x1, 0x0) +#define TIMER1_CC2_PB1 SILABS_DBUS_TIMER1_CC2(0x1, 0x1) +#define TIMER1_CC2_PB2 SILABS_DBUS_TIMER1_CC2(0x1, 0x2) +#define TIMER1_CC2_PB3 SILABS_DBUS_TIMER1_CC2(0x1, 0x3) +#define TIMER1_CC2_PB4 SILABS_DBUS_TIMER1_CC2(0x1, 0x4) +#define TIMER1_CC2_PB5 SILABS_DBUS_TIMER1_CC2(0x1, 0x5) +#define TIMER1_CC2_PC0 SILABS_DBUS_TIMER1_CC2(0x2, 0x0) +#define TIMER1_CC2_PC1 SILABS_DBUS_TIMER1_CC2(0x2, 0x1) +#define TIMER1_CC2_PC2 SILABS_DBUS_TIMER1_CC2(0x2, 0x2) +#define TIMER1_CC2_PC3 SILABS_DBUS_TIMER1_CC2(0x2, 0x3) +#define TIMER1_CC2_PC4 SILABS_DBUS_TIMER1_CC2(0x2, 0x4) +#define TIMER1_CC2_PC5 SILABS_DBUS_TIMER1_CC2(0x2, 0x5) +#define TIMER1_CC2_PC6 SILABS_DBUS_TIMER1_CC2(0x2, 0x6) +#define TIMER1_CC2_PC7 SILABS_DBUS_TIMER1_CC2(0x2, 0x7) +#define TIMER1_CC2_PC8 SILABS_DBUS_TIMER1_CC2(0x2, 0x8) +#define TIMER1_CC2_PC9 SILABS_DBUS_TIMER1_CC2(0x2, 0x9) +#define TIMER1_CC2_PD0 SILABS_DBUS_TIMER1_CC2(0x3, 0x0) +#define TIMER1_CC2_PD1 SILABS_DBUS_TIMER1_CC2(0x3, 0x1) +#define TIMER1_CC2_PD2 SILABS_DBUS_TIMER1_CC2(0x3, 0x2) +#define TIMER1_CC2_PD3 SILABS_DBUS_TIMER1_CC2(0x3, 0x3) +#define TIMER1_CC2_PD4 SILABS_DBUS_TIMER1_CC2(0x3, 0x4) +#define TIMER1_CC2_PD5 SILABS_DBUS_TIMER1_CC2(0x3, 0x5) +#define TIMER1_CDTI0_PA0 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x0) +#define TIMER1_CDTI0_PA1 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x1) +#define TIMER1_CDTI0_PA2 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x2) +#define TIMER1_CDTI0_PA3 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x3) +#define TIMER1_CDTI0_PA4 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x4) +#define TIMER1_CDTI0_PA5 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x5) +#define TIMER1_CDTI0_PA6 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x6) +#define TIMER1_CDTI0_PA7 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x7) +#define TIMER1_CDTI0_PA8 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x8) +#define TIMER1_CDTI0_PA9 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x9) +#define TIMER1_CDTI0_PB0 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x0) +#define TIMER1_CDTI0_PB1 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x1) +#define TIMER1_CDTI0_PB2 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x2) +#define TIMER1_CDTI0_PB3 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x3) +#define TIMER1_CDTI0_PB4 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x4) +#define TIMER1_CDTI0_PB5 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x5) +#define TIMER1_CDTI0_PC0 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x0) +#define TIMER1_CDTI0_PC1 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x1) +#define TIMER1_CDTI0_PC2 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x2) +#define TIMER1_CDTI0_PC3 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x3) +#define TIMER1_CDTI0_PC4 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x4) +#define TIMER1_CDTI0_PC5 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x5) +#define TIMER1_CDTI0_PC6 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x6) +#define TIMER1_CDTI0_PC7 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x7) +#define TIMER1_CDTI0_PC8 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x8) +#define TIMER1_CDTI0_PC9 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x9) +#define TIMER1_CDTI0_PD0 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x0) +#define TIMER1_CDTI0_PD1 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x1) +#define TIMER1_CDTI0_PD2 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x2) +#define TIMER1_CDTI0_PD3 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x3) +#define TIMER1_CDTI0_PD4 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x4) +#define TIMER1_CDTI0_PD5 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x5) +#define TIMER1_CDTI1_PA0 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x0) +#define TIMER1_CDTI1_PA1 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x1) +#define TIMER1_CDTI1_PA2 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x2) +#define TIMER1_CDTI1_PA3 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x3) +#define TIMER1_CDTI1_PA4 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x4) +#define TIMER1_CDTI1_PA5 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x5) +#define TIMER1_CDTI1_PA6 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x6) +#define TIMER1_CDTI1_PA7 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x7) +#define TIMER1_CDTI1_PA8 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x8) +#define TIMER1_CDTI1_PA9 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x9) +#define TIMER1_CDTI1_PB0 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x0) +#define TIMER1_CDTI1_PB1 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x1) +#define TIMER1_CDTI1_PB2 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x2) +#define TIMER1_CDTI1_PB3 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x3) +#define TIMER1_CDTI1_PB4 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x4) +#define TIMER1_CDTI1_PB5 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x5) +#define TIMER1_CDTI1_PC0 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x0) +#define TIMER1_CDTI1_PC1 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x1) +#define TIMER1_CDTI1_PC2 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x2) +#define TIMER1_CDTI1_PC3 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x3) +#define TIMER1_CDTI1_PC4 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x4) +#define TIMER1_CDTI1_PC5 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x5) +#define TIMER1_CDTI1_PC6 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x6) +#define TIMER1_CDTI1_PC7 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x7) +#define TIMER1_CDTI1_PC8 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x8) +#define TIMER1_CDTI1_PC9 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x9) +#define TIMER1_CDTI1_PD0 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x0) +#define TIMER1_CDTI1_PD1 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x1) +#define TIMER1_CDTI1_PD2 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x2) +#define TIMER1_CDTI1_PD3 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x3) +#define TIMER1_CDTI1_PD4 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x4) +#define TIMER1_CDTI1_PD5 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x5) +#define TIMER1_CDTI2_PA0 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x0) +#define TIMER1_CDTI2_PA1 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x1) +#define TIMER1_CDTI2_PA2 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x2) +#define TIMER1_CDTI2_PA3 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x3) +#define TIMER1_CDTI2_PA4 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x4) +#define TIMER1_CDTI2_PA5 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x5) +#define TIMER1_CDTI2_PA6 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x6) +#define TIMER1_CDTI2_PA7 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x7) +#define TIMER1_CDTI2_PA8 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x8) +#define TIMER1_CDTI2_PA9 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x9) +#define TIMER1_CDTI2_PB0 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x0) +#define TIMER1_CDTI2_PB1 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x1) +#define TIMER1_CDTI2_PB2 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x2) +#define TIMER1_CDTI2_PB3 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x3) +#define TIMER1_CDTI2_PB4 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x4) +#define TIMER1_CDTI2_PB5 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x5) +#define TIMER1_CDTI2_PC0 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x0) +#define TIMER1_CDTI2_PC1 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x1) +#define TIMER1_CDTI2_PC2 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x2) +#define TIMER1_CDTI2_PC3 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x3) +#define TIMER1_CDTI2_PC4 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x4) +#define TIMER1_CDTI2_PC5 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x5) +#define TIMER1_CDTI2_PC6 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x6) +#define TIMER1_CDTI2_PC7 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x7) +#define TIMER1_CDTI2_PC8 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x8) +#define TIMER1_CDTI2_PC9 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x9) +#define TIMER1_CDTI2_PD0 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x0) +#define TIMER1_CDTI2_PD1 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x1) +#define TIMER1_CDTI2_PD2 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x2) +#define TIMER1_CDTI2_PD3 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x3) +#define TIMER1_CDTI2_PD4 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x4) +#define TIMER1_CDTI2_PD5 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x5) + +#define TIMER2_CC0_PA0 SILABS_DBUS_TIMER2_CC0(0x0, 0x0) +#define TIMER2_CC0_PA1 SILABS_DBUS_TIMER2_CC0(0x0, 0x1) +#define TIMER2_CC0_PA2 SILABS_DBUS_TIMER2_CC0(0x0, 0x2) +#define TIMER2_CC0_PA3 SILABS_DBUS_TIMER2_CC0(0x0, 0x3) +#define TIMER2_CC0_PA4 SILABS_DBUS_TIMER2_CC0(0x0, 0x4) +#define TIMER2_CC0_PA5 SILABS_DBUS_TIMER2_CC0(0x0, 0x5) +#define TIMER2_CC0_PA6 SILABS_DBUS_TIMER2_CC0(0x0, 0x6) +#define TIMER2_CC0_PA7 SILABS_DBUS_TIMER2_CC0(0x0, 0x7) +#define TIMER2_CC0_PA8 SILABS_DBUS_TIMER2_CC0(0x0, 0x8) +#define TIMER2_CC0_PA9 SILABS_DBUS_TIMER2_CC0(0x0, 0x9) +#define TIMER2_CC0_PB0 SILABS_DBUS_TIMER2_CC0(0x1, 0x0) +#define TIMER2_CC0_PB1 SILABS_DBUS_TIMER2_CC0(0x1, 0x1) +#define TIMER2_CC0_PB2 SILABS_DBUS_TIMER2_CC0(0x1, 0x2) +#define TIMER2_CC0_PB3 SILABS_DBUS_TIMER2_CC0(0x1, 0x3) +#define TIMER2_CC0_PB4 SILABS_DBUS_TIMER2_CC0(0x1, 0x4) +#define TIMER2_CC0_PB5 SILABS_DBUS_TIMER2_CC0(0x1, 0x5) +#define TIMER2_CC1_PA0 SILABS_DBUS_TIMER2_CC1(0x0, 0x0) +#define TIMER2_CC1_PA1 SILABS_DBUS_TIMER2_CC1(0x0, 0x1) +#define TIMER2_CC1_PA2 SILABS_DBUS_TIMER2_CC1(0x0, 0x2) +#define TIMER2_CC1_PA3 SILABS_DBUS_TIMER2_CC1(0x0, 0x3) +#define TIMER2_CC1_PA4 SILABS_DBUS_TIMER2_CC1(0x0, 0x4) +#define TIMER2_CC1_PA5 SILABS_DBUS_TIMER2_CC1(0x0, 0x5) +#define TIMER2_CC1_PA6 SILABS_DBUS_TIMER2_CC1(0x0, 0x6) +#define TIMER2_CC1_PA7 SILABS_DBUS_TIMER2_CC1(0x0, 0x7) +#define TIMER2_CC1_PA8 SILABS_DBUS_TIMER2_CC1(0x0, 0x8) +#define TIMER2_CC1_PA9 SILABS_DBUS_TIMER2_CC1(0x0, 0x9) +#define TIMER2_CC1_PB0 SILABS_DBUS_TIMER2_CC1(0x1, 0x0) +#define TIMER2_CC1_PB1 SILABS_DBUS_TIMER2_CC1(0x1, 0x1) +#define TIMER2_CC1_PB2 SILABS_DBUS_TIMER2_CC1(0x1, 0x2) +#define TIMER2_CC1_PB3 SILABS_DBUS_TIMER2_CC1(0x1, 0x3) +#define TIMER2_CC1_PB4 SILABS_DBUS_TIMER2_CC1(0x1, 0x4) +#define TIMER2_CC1_PB5 SILABS_DBUS_TIMER2_CC1(0x1, 0x5) +#define TIMER2_CC2_PA0 SILABS_DBUS_TIMER2_CC2(0x0, 0x0) +#define TIMER2_CC2_PA1 SILABS_DBUS_TIMER2_CC2(0x0, 0x1) +#define TIMER2_CC2_PA2 SILABS_DBUS_TIMER2_CC2(0x0, 0x2) +#define TIMER2_CC2_PA3 SILABS_DBUS_TIMER2_CC2(0x0, 0x3) +#define TIMER2_CC2_PA4 SILABS_DBUS_TIMER2_CC2(0x0, 0x4) +#define TIMER2_CC2_PA5 SILABS_DBUS_TIMER2_CC2(0x0, 0x5) +#define TIMER2_CC2_PA6 SILABS_DBUS_TIMER2_CC2(0x0, 0x6) +#define TIMER2_CC2_PA7 SILABS_DBUS_TIMER2_CC2(0x0, 0x7) +#define TIMER2_CC2_PA8 SILABS_DBUS_TIMER2_CC2(0x0, 0x8) +#define TIMER2_CC2_PA9 SILABS_DBUS_TIMER2_CC2(0x0, 0x9) +#define TIMER2_CC2_PB0 SILABS_DBUS_TIMER2_CC2(0x1, 0x0) +#define TIMER2_CC2_PB1 SILABS_DBUS_TIMER2_CC2(0x1, 0x1) +#define TIMER2_CC2_PB2 SILABS_DBUS_TIMER2_CC2(0x1, 0x2) +#define TIMER2_CC2_PB3 SILABS_DBUS_TIMER2_CC2(0x1, 0x3) +#define TIMER2_CC2_PB4 SILABS_DBUS_TIMER2_CC2(0x1, 0x4) +#define TIMER2_CC2_PB5 SILABS_DBUS_TIMER2_CC2(0x1, 0x5) +#define TIMER2_CDTI0_PA0 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x0) +#define TIMER2_CDTI0_PA1 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x1) +#define TIMER2_CDTI0_PA2 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x2) +#define TIMER2_CDTI0_PA3 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x3) +#define TIMER2_CDTI0_PA4 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x4) +#define TIMER2_CDTI0_PA5 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x5) +#define TIMER2_CDTI0_PA6 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x6) +#define TIMER2_CDTI0_PA7 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x7) +#define TIMER2_CDTI0_PA8 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x8) +#define TIMER2_CDTI0_PA9 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x9) +#define TIMER2_CDTI0_PB0 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x0) +#define TIMER2_CDTI0_PB1 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x1) +#define TIMER2_CDTI0_PB2 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x2) +#define TIMER2_CDTI0_PB3 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x3) +#define TIMER2_CDTI0_PB4 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x4) +#define TIMER2_CDTI0_PB5 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x5) +#define TIMER2_CDTI1_PA0 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x0) +#define TIMER2_CDTI1_PA1 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x1) +#define TIMER2_CDTI1_PA2 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x2) +#define TIMER2_CDTI1_PA3 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x3) +#define TIMER2_CDTI1_PA4 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x4) +#define TIMER2_CDTI1_PA5 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x5) +#define TIMER2_CDTI1_PA6 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x6) +#define TIMER2_CDTI1_PA7 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x7) +#define TIMER2_CDTI1_PA8 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x8) +#define TIMER2_CDTI1_PA9 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x9) +#define TIMER2_CDTI1_PB0 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x0) +#define TIMER2_CDTI1_PB1 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x1) +#define TIMER2_CDTI1_PB2 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x2) +#define TIMER2_CDTI1_PB3 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x3) +#define TIMER2_CDTI1_PB4 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x4) +#define TIMER2_CDTI1_PB5 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x5) +#define TIMER2_CDTI2_PA0 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x0) +#define TIMER2_CDTI2_PA1 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x1) +#define TIMER2_CDTI2_PA2 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x2) +#define TIMER2_CDTI2_PA3 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x3) +#define TIMER2_CDTI2_PA4 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x4) +#define TIMER2_CDTI2_PA5 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x5) +#define TIMER2_CDTI2_PA6 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x6) +#define TIMER2_CDTI2_PA7 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x7) +#define TIMER2_CDTI2_PA8 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x8) +#define TIMER2_CDTI2_PA9 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x9) +#define TIMER2_CDTI2_PB0 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x0) +#define TIMER2_CDTI2_PB1 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x1) +#define TIMER2_CDTI2_PB2 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x2) +#define TIMER2_CDTI2_PB3 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x3) +#define TIMER2_CDTI2_PB4 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x4) +#define TIMER2_CDTI2_PB5 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x5) + +#define TIMER3_CC0_PC0 SILABS_DBUS_TIMER3_CC0(0x2, 0x0) +#define TIMER3_CC0_PC1 SILABS_DBUS_TIMER3_CC0(0x2, 0x1) +#define TIMER3_CC0_PC2 SILABS_DBUS_TIMER3_CC0(0x2, 0x2) +#define TIMER3_CC0_PC3 SILABS_DBUS_TIMER3_CC0(0x2, 0x3) +#define TIMER3_CC0_PC4 SILABS_DBUS_TIMER3_CC0(0x2, 0x4) +#define TIMER3_CC0_PC5 SILABS_DBUS_TIMER3_CC0(0x2, 0x5) +#define TIMER3_CC0_PC6 SILABS_DBUS_TIMER3_CC0(0x2, 0x6) +#define TIMER3_CC0_PC7 SILABS_DBUS_TIMER3_CC0(0x2, 0x7) +#define TIMER3_CC0_PC8 SILABS_DBUS_TIMER3_CC0(0x2, 0x8) +#define TIMER3_CC0_PC9 SILABS_DBUS_TIMER3_CC0(0x2, 0x9) +#define TIMER3_CC0_PD0 SILABS_DBUS_TIMER3_CC0(0x3, 0x0) +#define TIMER3_CC0_PD1 SILABS_DBUS_TIMER3_CC0(0x3, 0x1) +#define TIMER3_CC0_PD2 SILABS_DBUS_TIMER3_CC0(0x3, 0x2) +#define TIMER3_CC0_PD3 SILABS_DBUS_TIMER3_CC0(0x3, 0x3) +#define TIMER3_CC0_PD4 SILABS_DBUS_TIMER3_CC0(0x3, 0x4) +#define TIMER3_CC0_PD5 SILABS_DBUS_TIMER3_CC0(0x3, 0x5) +#define TIMER3_CC1_PC0 SILABS_DBUS_TIMER3_CC1(0x2, 0x0) +#define TIMER3_CC1_PC1 SILABS_DBUS_TIMER3_CC1(0x2, 0x1) +#define TIMER3_CC1_PC2 SILABS_DBUS_TIMER3_CC1(0x2, 0x2) +#define TIMER3_CC1_PC3 SILABS_DBUS_TIMER3_CC1(0x2, 0x3) +#define TIMER3_CC1_PC4 SILABS_DBUS_TIMER3_CC1(0x2, 0x4) +#define TIMER3_CC1_PC5 SILABS_DBUS_TIMER3_CC1(0x2, 0x5) +#define TIMER3_CC1_PC6 SILABS_DBUS_TIMER3_CC1(0x2, 0x6) +#define TIMER3_CC1_PC7 SILABS_DBUS_TIMER3_CC1(0x2, 0x7) +#define TIMER3_CC1_PC8 SILABS_DBUS_TIMER3_CC1(0x2, 0x8) +#define TIMER3_CC1_PC9 SILABS_DBUS_TIMER3_CC1(0x2, 0x9) +#define TIMER3_CC1_PD0 SILABS_DBUS_TIMER3_CC1(0x3, 0x0) +#define TIMER3_CC1_PD1 SILABS_DBUS_TIMER3_CC1(0x3, 0x1) +#define TIMER3_CC1_PD2 SILABS_DBUS_TIMER3_CC1(0x3, 0x2) +#define TIMER3_CC1_PD3 SILABS_DBUS_TIMER3_CC1(0x3, 0x3) +#define TIMER3_CC1_PD4 SILABS_DBUS_TIMER3_CC1(0x3, 0x4) +#define TIMER3_CC1_PD5 SILABS_DBUS_TIMER3_CC1(0x3, 0x5) +#define TIMER3_CC2_PC0 SILABS_DBUS_TIMER3_CC2(0x2, 0x0) +#define TIMER3_CC2_PC1 SILABS_DBUS_TIMER3_CC2(0x2, 0x1) +#define TIMER3_CC2_PC2 SILABS_DBUS_TIMER3_CC2(0x2, 0x2) +#define TIMER3_CC2_PC3 SILABS_DBUS_TIMER3_CC2(0x2, 0x3) +#define TIMER3_CC2_PC4 SILABS_DBUS_TIMER3_CC2(0x2, 0x4) +#define TIMER3_CC2_PC5 SILABS_DBUS_TIMER3_CC2(0x2, 0x5) +#define TIMER3_CC2_PC6 SILABS_DBUS_TIMER3_CC2(0x2, 0x6) +#define TIMER3_CC2_PC7 SILABS_DBUS_TIMER3_CC2(0x2, 0x7) +#define TIMER3_CC2_PC8 SILABS_DBUS_TIMER3_CC2(0x2, 0x8) +#define TIMER3_CC2_PC9 SILABS_DBUS_TIMER3_CC2(0x2, 0x9) +#define TIMER3_CC2_PD0 SILABS_DBUS_TIMER3_CC2(0x3, 0x0) +#define TIMER3_CC2_PD1 SILABS_DBUS_TIMER3_CC2(0x3, 0x1) +#define TIMER3_CC2_PD2 SILABS_DBUS_TIMER3_CC2(0x3, 0x2) +#define TIMER3_CC2_PD3 SILABS_DBUS_TIMER3_CC2(0x3, 0x3) +#define TIMER3_CC2_PD4 SILABS_DBUS_TIMER3_CC2(0x3, 0x4) +#define TIMER3_CC2_PD5 SILABS_DBUS_TIMER3_CC2(0x3, 0x5) +#define TIMER3_CDTI0_PC0 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x0) +#define TIMER3_CDTI0_PC1 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x1) +#define TIMER3_CDTI0_PC2 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x2) +#define TIMER3_CDTI0_PC3 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x3) +#define TIMER3_CDTI0_PC4 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x4) +#define TIMER3_CDTI0_PC5 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x5) +#define TIMER3_CDTI0_PC6 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x6) +#define TIMER3_CDTI0_PC7 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x7) +#define TIMER3_CDTI0_PC8 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x8) +#define TIMER3_CDTI0_PC9 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x9) +#define TIMER3_CDTI0_PD0 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x0) +#define TIMER3_CDTI0_PD1 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x1) +#define TIMER3_CDTI0_PD2 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x2) +#define TIMER3_CDTI0_PD3 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x3) +#define TIMER3_CDTI0_PD4 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x4) +#define TIMER3_CDTI0_PD5 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x5) +#define TIMER3_CDTI1_PC0 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x0) +#define TIMER3_CDTI1_PC1 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x1) +#define TIMER3_CDTI1_PC2 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x2) +#define TIMER3_CDTI1_PC3 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x3) +#define TIMER3_CDTI1_PC4 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x4) +#define TIMER3_CDTI1_PC5 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x5) +#define TIMER3_CDTI1_PC6 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x6) +#define TIMER3_CDTI1_PC7 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x7) +#define TIMER3_CDTI1_PC8 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x8) +#define TIMER3_CDTI1_PC9 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x9) +#define TIMER3_CDTI1_PD0 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x0) +#define TIMER3_CDTI1_PD1 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x1) +#define TIMER3_CDTI1_PD2 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x2) +#define TIMER3_CDTI1_PD3 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x3) +#define TIMER3_CDTI1_PD4 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x4) +#define TIMER3_CDTI1_PD5 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x5) +#define TIMER3_CDTI2_PC0 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x0) +#define TIMER3_CDTI2_PC1 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x1) +#define TIMER3_CDTI2_PC2 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x2) +#define TIMER3_CDTI2_PC3 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x3) +#define TIMER3_CDTI2_PC4 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x4) +#define TIMER3_CDTI2_PC5 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x5) +#define TIMER3_CDTI2_PC6 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x6) +#define TIMER3_CDTI2_PC7 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x7) +#define TIMER3_CDTI2_PC8 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x8) +#define TIMER3_CDTI2_PC9 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x9) +#define TIMER3_CDTI2_PD0 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x0) +#define TIMER3_CDTI2_PD1 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x1) +#define TIMER3_CDTI2_PD2 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x2) +#define TIMER3_CDTI2_PD3 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x3) +#define TIMER3_CDTI2_PD4 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x4) +#define TIMER3_CDTI2_PD5 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x5) + +#define TIMER4_CC0_PA0 SILABS_DBUS_TIMER4_CC0(0x0, 0x0) +#define TIMER4_CC0_PA1 SILABS_DBUS_TIMER4_CC0(0x0, 0x1) +#define TIMER4_CC0_PA2 SILABS_DBUS_TIMER4_CC0(0x0, 0x2) +#define TIMER4_CC0_PA3 SILABS_DBUS_TIMER4_CC0(0x0, 0x3) +#define TIMER4_CC0_PA4 SILABS_DBUS_TIMER4_CC0(0x0, 0x4) +#define TIMER4_CC0_PA5 SILABS_DBUS_TIMER4_CC0(0x0, 0x5) +#define TIMER4_CC0_PA6 SILABS_DBUS_TIMER4_CC0(0x0, 0x6) +#define TIMER4_CC0_PA7 SILABS_DBUS_TIMER4_CC0(0x0, 0x7) +#define TIMER4_CC0_PA8 SILABS_DBUS_TIMER4_CC0(0x0, 0x8) +#define TIMER4_CC0_PA9 SILABS_DBUS_TIMER4_CC0(0x0, 0x9) +#define TIMER4_CC0_PB0 SILABS_DBUS_TIMER4_CC0(0x1, 0x0) +#define TIMER4_CC0_PB1 SILABS_DBUS_TIMER4_CC0(0x1, 0x1) +#define TIMER4_CC0_PB2 SILABS_DBUS_TIMER4_CC0(0x1, 0x2) +#define TIMER4_CC0_PB3 SILABS_DBUS_TIMER4_CC0(0x1, 0x3) +#define TIMER4_CC0_PB4 SILABS_DBUS_TIMER4_CC0(0x1, 0x4) +#define TIMER4_CC0_PB5 SILABS_DBUS_TIMER4_CC0(0x1, 0x5) +#define TIMER4_CC1_PA0 SILABS_DBUS_TIMER4_CC1(0x0, 0x0) +#define TIMER4_CC1_PA1 SILABS_DBUS_TIMER4_CC1(0x0, 0x1) +#define TIMER4_CC1_PA2 SILABS_DBUS_TIMER4_CC1(0x0, 0x2) +#define TIMER4_CC1_PA3 SILABS_DBUS_TIMER4_CC1(0x0, 0x3) +#define TIMER4_CC1_PA4 SILABS_DBUS_TIMER4_CC1(0x0, 0x4) +#define TIMER4_CC1_PA5 SILABS_DBUS_TIMER4_CC1(0x0, 0x5) +#define TIMER4_CC1_PA6 SILABS_DBUS_TIMER4_CC1(0x0, 0x6) +#define TIMER4_CC1_PA7 SILABS_DBUS_TIMER4_CC1(0x0, 0x7) +#define TIMER4_CC1_PA8 SILABS_DBUS_TIMER4_CC1(0x0, 0x8) +#define TIMER4_CC1_PA9 SILABS_DBUS_TIMER4_CC1(0x0, 0x9) +#define TIMER4_CC1_PB0 SILABS_DBUS_TIMER4_CC1(0x1, 0x0) +#define TIMER4_CC1_PB1 SILABS_DBUS_TIMER4_CC1(0x1, 0x1) +#define TIMER4_CC1_PB2 SILABS_DBUS_TIMER4_CC1(0x1, 0x2) +#define TIMER4_CC1_PB3 SILABS_DBUS_TIMER4_CC1(0x1, 0x3) +#define TIMER4_CC1_PB4 SILABS_DBUS_TIMER4_CC1(0x1, 0x4) +#define TIMER4_CC1_PB5 SILABS_DBUS_TIMER4_CC1(0x1, 0x5) +#define TIMER4_CC2_PA0 SILABS_DBUS_TIMER4_CC2(0x0, 0x0) +#define TIMER4_CC2_PA1 SILABS_DBUS_TIMER4_CC2(0x0, 0x1) +#define TIMER4_CC2_PA2 SILABS_DBUS_TIMER4_CC2(0x0, 0x2) +#define TIMER4_CC2_PA3 SILABS_DBUS_TIMER4_CC2(0x0, 0x3) +#define TIMER4_CC2_PA4 SILABS_DBUS_TIMER4_CC2(0x0, 0x4) +#define TIMER4_CC2_PA5 SILABS_DBUS_TIMER4_CC2(0x0, 0x5) +#define TIMER4_CC2_PA6 SILABS_DBUS_TIMER4_CC2(0x0, 0x6) +#define TIMER4_CC2_PA7 SILABS_DBUS_TIMER4_CC2(0x0, 0x7) +#define TIMER4_CC2_PA8 SILABS_DBUS_TIMER4_CC2(0x0, 0x8) +#define TIMER4_CC2_PA9 SILABS_DBUS_TIMER4_CC2(0x0, 0x9) +#define TIMER4_CC2_PB0 SILABS_DBUS_TIMER4_CC2(0x1, 0x0) +#define TIMER4_CC2_PB1 SILABS_DBUS_TIMER4_CC2(0x1, 0x1) +#define TIMER4_CC2_PB2 SILABS_DBUS_TIMER4_CC2(0x1, 0x2) +#define TIMER4_CC2_PB3 SILABS_DBUS_TIMER4_CC2(0x1, 0x3) +#define TIMER4_CC2_PB4 SILABS_DBUS_TIMER4_CC2(0x1, 0x4) +#define TIMER4_CC2_PB5 SILABS_DBUS_TIMER4_CC2(0x1, 0x5) +#define TIMER4_CDTI0_PA0 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x0) +#define TIMER4_CDTI0_PA1 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x1) +#define TIMER4_CDTI0_PA2 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x2) +#define TIMER4_CDTI0_PA3 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x3) +#define TIMER4_CDTI0_PA4 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x4) +#define TIMER4_CDTI0_PA5 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x5) +#define TIMER4_CDTI0_PA6 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x6) +#define TIMER4_CDTI0_PA7 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x7) +#define TIMER4_CDTI0_PA8 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x8) +#define TIMER4_CDTI0_PA9 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x9) +#define TIMER4_CDTI0_PB0 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x0) +#define TIMER4_CDTI0_PB1 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x1) +#define TIMER4_CDTI0_PB2 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x2) +#define TIMER4_CDTI0_PB3 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x3) +#define TIMER4_CDTI0_PB4 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x4) +#define TIMER4_CDTI0_PB5 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x5) +#define TIMER4_CDTI1_PA0 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x0) +#define TIMER4_CDTI1_PA1 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x1) +#define TIMER4_CDTI1_PA2 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x2) +#define TIMER4_CDTI1_PA3 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x3) +#define TIMER4_CDTI1_PA4 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x4) +#define TIMER4_CDTI1_PA5 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x5) +#define TIMER4_CDTI1_PA6 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x6) +#define TIMER4_CDTI1_PA7 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x7) +#define TIMER4_CDTI1_PA8 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x8) +#define TIMER4_CDTI1_PA9 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x9) +#define TIMER4_CDTI1_PB0 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x0) +#define TIMER4_CDTI1_PB1 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x1) +#define TIMER4_CDTI1_PB2 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x2) +#define TIMER4_CDTI1_PB3 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x3) +#define TIMER4_CDTI1_PB4 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x4) +#define TIMER4_CDTI1_PB5 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x5) +#define TIMER4_CDTI2_PA0 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x0) +#define TIMER4_CDTI2_PA1 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x1) +#define TIMER4_CDTI2_PA2 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x2) +#define TIMER4_CDTI2_PA3 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x3) +#define TIMER4_CDTI2_PA4 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x4) +#define TIMER4_CDTI2_PA5 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x5) +#define TIMER4_CDTI2_PA6 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x6) +#define TIMER4_CDTI2_PA7 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x7) +#define TIMER4_CDTI2_PA8 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x8) +#define TIMER4_CDTI2_PA9 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x9) +#define TIMER4_CDTI2_PB0 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x0) +#define TIMER4_CDTI2_PB1 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x1) +#define TIMER4_CDTI2_PB2 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x2) +#define TIMER4_CDTI2_PB3 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x3) +#define TIMER4_CDTI2_PB4 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x4) +#define TIMER4_CDTI2_PB5 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x5) + +#define USART0_CS_PA0 SILABS_DBUS_USART0_CS(0x0, 0x0) +#define USART0_CS_PA1 SILABS_DBUS_USART0_CS(0x0, 0x1) +#define USART0_CS_PA2 SILABS_DBUS_USART0_CS(0x0, 0x2) +#define USART0_CS_PA3 SILABS_DBUS_USART0_CS(0x0, 0x3) +#define USART0_CS_PA4 SILABS_DBUS_USART0_CS(0x0, 0x4) +#define USART0_CS_PA5 SILABS_DBUS_USART0_CS(0x0, 0x5) +#define USART0_CS_PA6 SILABS_DBUS_USART0_CS(0x0, 0x6) +#define USART0_CS_PA7 SILABS_DBUS_USART0_CS(0x0, 0x7) +#define USART0_CS_PA8 SILABS_DBUS_USART0_CS(0x0, 0x8) +#define USART0_CS_PA9 SILABS_DBUS_USART0_CS(0x0, 0x9) +#define USART0_CS_PB0 SILABS_DBUS_USART0_CS(0x1, 0x0) +#define USART0_CS_PB1 SILABS_DBUS_USART0_CS(0x1, 0x1) +#define USART0_CS_PB2 SILABS_DBUS_USART0_CS(0x1, 0x2) +#define USART0_CS_PB3 SILABS_DBUS_USART0_CS(0x1, 0x3) +#define USART0_CS_PB4 SILABS_DBUS_USART0_CS(0x1, 0x4) +#define USART0_CS_PB5 SILABS_DBUS_USART0_CS(0x1, 0x5) +#define USART0_CS_PC0 SILABS_DBUS_USART0_CS(0x2, 0x0) +#define USART0_CS_PC1 SILABS_DBUS_USART0_CS(0x2, 0x1) +#define USART0_CS_PC2 SILABS_DBUS_USART0_CS(0x2, 0x2) +#define USART0_CS_PC3 SILABS_DBUS_USART0_CS(0x2, 0x3) +#define USART0_CS_PC4 SILABS_DBUS_USART0_CS(0x2, 0x4) +#define USART0_CS_PC5 SILABS_DBUS_USART0_CS(0x2, 0x5) +#define USART0_CS_PC6 SILABS_DBUS_USART0_CS(0x2, 0x6) +#define USART0_CS_PC7 SILABS_DBUS_USART0_CS(0x2, 0x7) +#define USART0_CS_PC8 SILABS_DBUS_USART0_CS(0x2, 0x8) +#define USART0_CS_PC9 SILABS_DBUS_USART0_CS(0x2, 0x9) +#define USART0_CS_PD0 SILABS_DBUS_USART0_CS(0x3, 0x0) +#define USART0_CS_PD1 SILABS_DBUS_USART0_CS(0x3, 0x1) +#define USART0_CS_PD2 SILABS_DBUS_USART0_CS(0x3, 0x2) +#define USART0_CS_PD3 SILABS_DBUS_USART0_CS(0x3, 0x3) +#define USART0_CS_PD4 SILABS_DBUS_USART0_CS(0x3, 0x4) +#define USART0_CS_PD5 SILABS_DBUS_USART0_CS(0x3, 0x5) +#define USART0_RTS_PA0 SILABS_DBUS_USART0_RTS(0x0, 0x0) +#define USART0_RTS_PA1 SILABS_DBUS_USART0_RTS(0x0, 0x1) +#define USART0_RTS_PA2 SILABS_DBUS_USART0_RTS(0x0, 0x2) +#define USART0_RTS_PA3 SILABS_DBUS_USART0_RTS(0x0, 0x3) +#define USART0_RTS_PA4 SILABS_DBUS_USART0_RTS(0x0, 0x4) +#define USART0_RTS_PA5 SILABS_DBUS_USART0_RTS(0x0, 0x5) +#define USART0_RTS_PA6 SILABS_DBUS_USART0_RTS(0x0, 0x6) +#define USART0_RTS_PA7 SILABS_DBUS_USART0_RTS(0x0, 0x7) +#define USART0_RTS_PA8 SILABS_DBUS_USART0_RTS(0x0, 0x8) +#define USART0_RTS_PA9 SILABS_DBUS_USART0_RTS(0x0, 0x9) +#define USART0_RTS_PB0 SILABS_DBUS_USART0_RTS(0x1, 0x0) +#define USART0_RTS_PB1 SILABS_DBUS_USART0_RTS(0x1, 0x1) +#define USART0_RTS_PB2 SILABS_DBUS_USART0_RTS(0x1, 0x2) +#define USART0_RTS_PB3 SILABS_DBUS_USART0_RTS(0x1, 0x3) +#define USART0_RTS_PB4 SILABS_DBUS_USART0_RTS(0x1, 0x4) +#define USART0_RTS_PB5 SILABS_DBUS_USART0_RTS(0x1, 0x5) +#define USART0_RTS_PC0 SILABS_DBUS_USART0_RTS(0x2, 0x0) +#define USART0_RTS_PC1 SILABS_DBUS_USART0_RTS(0x2, 0x1) +#define USART0_RTS_PC2 SILABS_DBUS_USART0_RTS(0x2, 0x2) +#define USART0_RTS_PC3 SILABS_DBUS_USART0_RTS(0x2, 0x3) +#define USART0_RTS_PC4 SILABS_DBUS_USART0_RTS(0x2, 0x4) +#define USART0_RTS_PC5 SILABS_DBUS_USART0_RTS(0x2, 0x5) +#define USART0_RTS_PC6 SILABS_DBUS_USART0_RTS(0x2, 0x6) +#define USART0_RTS_PC7 SILABS_DBUS_USART0_RTS(0x2, 0x7) +#define USART0_RTS_PC8 SILABS_DBUS_USART0_RTS(0x2, 0x8) +#define USART0_RTS_PC9 SILABS_DBUS_USART0_RTS(0x2, 0x9) +#define USART0_RTS_PD0 SILABS_DBUS_USART0_RTS(0x3, 0x0) +#define USART0_RTS_PD1 SILABS_DBUS_USART0_RTS(0x3, 0x1) +#define USART0_RTS_PD2 SILABS_DBUS_USART0_RTS(0x3, 0x2) +#define USART0_RTS_PD3 SILABS_DBUS_USART0_RTS(0x3, 0x3) +#define USART0_RTS_PD4 SILABS_DBUS_USART0_RTS(0x3, 0x4) +#define USART0_RTS_PD5 SILABS_DBUS_USART0_RTS(0x3, 0x5) +#define USART0_RX_PA0 SILABS_DBUS_USART0_RX(0x0, 0x0) +#define USART0_RX_PA1 SILABS_DBUS_USART0_RX(0x0, 0x1) +#define USART0_RX_PA2 SILABS_DBUS_USART0_RX(0x0, 0x2) +#define USART0_RX_PA3 SILABS_DBUS_USART0_RX(0x0, 0x3) +#define USART0_RX_PA4 SILABS_DBUS_USART0_RX(0x0, 0x4) +#define USART0_RX_PA5 SILABS_DBUS_USART0_RX(0x0, 0x5) +#define USART0_RX_PA6 SILABS_DBUS_USART0_RX(0x0, 0x6) +#define USART0_RX_PA7 SILABS_DBUS_USART0_RX(0x0, 0x7) +#define USART0_RX_PA8 SILABS_DBUS_USART0_RX(0x0, 0x8) +#define USART0_RX_PA9 SILABS_DBUS_USART0_RX(0x0, 0x9) +#define USART0_RX_PB0 SILABS_DBUS_USART0_RX(0x1, 0x0) +#define USART0_RX_PB1 SILABS_DBUS_USART0_RX(0x1, 0x1) +#define USART0_RX_PB2 SILABS_DBUS_USART0_RX(0x1, 0x2) +#define USART0_RX_PB3 SILABS_DBUS_USART0_RX(0x1, 0x3) +#define USART0_RX_PB4 SILABS_DBUS_USART0_RX(0x1, 0x4) +#define USART0_RX_PB5 SILABS_DBUS_USART0_RX(0x1, 0x5) +#define USART0_RX_PC0 SILABS_DBUS_USART0_RX(0x2, 0x0) +#define USART0_RX_PC1 SILABS_DBUS_USART0_RX(0x2, 0x1) +#define USART0_RX_PC2 SILABS_DBUS_USART0_RX(0x2, 0x2) +#define USART0_RX_PC3 SILABS_DBUS_USART0_RX(0x2, 0x3) +#define USART0_RX_PC4 SILABS_DBUS_USART0_RX(0x2, 0x4) +#define USART0_RX_PC5 SILABS_DBUS_USART0_RX(0x2, 0x5) +#define USART0_RX_PC6 SILABS_DBUS_USART0_RX(0x2, 0x6) +#define USART0_RX_PC7 SILABS_DBUS_USART0_RX(0x2, 0x7) +#define USART0_RX_PC8 SILABS_DBUS_USART0_RX(0x2, 0x8) +#define USART0_RX_PC9 SILABS_DBUS_USART0_RX(0x2, 0x9) +#define USART0_RX_PD0 SILABS_DBUS_USART0_RX(0x3, 0x0) +#define USART0_RX_PD1 SILABS_DBUS_USART0_RX(0x3, 0x1) +#define USART0_RX_PD2 SILABS_DBUS_USART0_RX(0x3, 0x2) +#define USART0_RX_PD3 SILABS_DBUS_USART0_RX(0x3, 0x3) +#define USART0_RX_PD4 SILABS_DBUS_USART0_RX(0x3, 0x4) +#define USART0_RX_PD5 SILABS_DBUS_USART0_RX(0x3, 0x5) +#define USART0_CLK_PA0 SILABS_DBUS_USART0_CLK(0x0, 0x0) +#define USART0_CLK_PA1 SILABS_DBUS_USART0_CLK(0x0, 0x1) +#define USART0_CLK_PA2 SILABS_DBUS_USART0_CLK(0x0, 0x2) +#define USART0_CLK_PA3 SILABS_DBUS_USART0_CLK(0x0, 0x3) +#define USART0_CLK_PA4 SILABS_DBUS_USART0_CLK(0x0, 0x4) +#define USART0_CLK_PA5 SILABS_DBUS_USART0_CLK(0x0, 0x5) +#define USART0_CLK_PA6 SILABS_DBUS_USART0_CLK(0x0, 0x6) +#define USART0_CLK_PA7 SILABS_DBUS_USART0_CLK(0x0, 0x7) +#define USART0_CLK_PA8 SILABS_DBUS_USART0_CLK(0x0, 0x8) +#define USART0_CLK_PA9 SILABS_DBUS_USART0_CLK(0x0, 0x9) +#define USART0_CLK_PB0 SILABS_DBUS_USART0_CLK(0x1, 0x0) +#define USART0_CLK_PB1 SILABS_DBUS_USART0_CLK(0x1, 0x1) +#define USART0_CLK_PB2 SILABS_DBUS_USART0_CLK(0x1, 0x2) +#define USART0_CLK_PB3 SILABS_DBUS_USART0_CLK(0x1, 0x3) +#define USART0_CLK_PB4 SILABS_DBUS_USART0_CLK(0x1, 0x4) +#define USART0_CLK_PB5 SILABS_DBUS_USART0_CLK(0x1, 0x5) +#define USART0_CLK_PC0 SILABS_DBUS_USART0_CLK(0x2, 0x0) +#define USART0_CLK_PC1 SILABS_DBUS_USART0_CLK(0x2, 0x1) +#define USART0_CLK_PC2 SILABS_DBUS_USART0_CLK(0x2, 0x2) +#define USART0_CLK_PC3 SILABS_DBUS_USART0_CLK(0x2, 0x3) +#define USART0_CLK_PC4 SILABS_DBUS_USART0_CLK(0x2, 0x4) +#define USART0_CLK_PC5 SILABS_DBUS_USART0_CLK(0x2, 0x5) +#define USART0_CLK_PC6 SILABS_DBUS_USART0_CLK(0x2, 0x6) +#define USART0_CLK_PC7 SILABS_DBUS_USART0_CLK(0x2, 0x7) +#define USART0_CLK_PC8 SILABS_DBUS_USART0_CLK(0x2, 0x8) +#define USART0_CLK_PC9 SILABS_DBUS_USART0_CLK(0x2, 0x9) +#define USART0_CLK_PD0 SILABS_DBUS_USART0_CLK(0x3, 0x0) +#define USART0_CLK_PD1 SILABS_DBUS_USART0_CLK(0x3, 0x1) +#define USART0_CLK_PD2 SILABS_DBUS_USART0_CLK(0x3, 0x2) +#define USART0_CLK_PD3 SILABS_DBUS_USART0_CLK(0x3, 0x3) +#define USART0_CLK_PD4 SILABS_DBUS_USART0_CLK(0x3, 0x4) +#define USART0_CLK_PD5 SILABS_DBUS_USART0_CLK(0x3, 0x5) +#define USART0_TX_PA0 SILABS_DBUS_USART0_TX(0x0, 0x0) +#define USART0_TX_PA1 SILABS_DBUS_USART0_TX(0x0, 0x1) +#define USART0_TX_PA2 SILABS_DBUS_USART0_TX(0x0, 0x2) +#define USART0_TX_PA3 SILABS_DBUS_USART0_TX(0x0, 0x3) +#define USART0_TX_PA4 SILABS_DBUS_USART0_TX(0x0, 0x4) +#define USART0_TX_PA5 SILABS_DBUS_USART0_TX(0x0, 0x5) +#define USART0_TX_PA6 SILABS_DBUS_USART0_TX(0x0, 0x6) +#define USART0_TX_PA7 SILABS_DBUS_USART0_TX(0x0, 0x7) +#define USART0_TX_PA8 SILABS_DBUS_USART0_TX(0x0, 0x8) +#define USART0_TX_PA9 SILABS_DBUS_USART0_TX(0x0, 0x9) +#define USART0_TX_PB0 SILABS_DBUS_USART0_TX(0x1, 0x0) +#define USART0_TX_PB1 SILABS_DBUS_USART0_TX(0x1, 0x1) +#define USART0_TX_PB2 SILABS_DBUS_USART0_TX(0x1, 0x2) +#define USART0_TX_PB3 SILABS_DBUS_USART0_TX(0x1, 0x3) +#define USART0_TX_PB4 SILABS_DBUS_USART0_TX(0x1, 0x4) +#define USART0_TX_PB5 SILABS_DBUS_USART0_TX(0x1, 0x5) +#define USART0_TX_PC0 SILABS_DBUS_USART0_TX(0x2, 0x0) +#define USART0_TX_PC1 SILABS_DBUS_USART0_TX(0x2, 0x1) +#define USART0_TX_PC2 SILABS_DBUS_USART0_TX(0x2, 0x2) +#define USART0_TX_PC3 SILABS_DBUS_USART0_TX(0x2, 0x3) +#define USART0_TX_PC4 SILABS_DBUS_USART0_TX(0x2, 0x4) +#define USART0_TX_PC5 SILABS_DBUS_USART0_TX(0x2, 0x5) +#define USART0_TX_PC6 SILABS_DBUS_USART0_TX(0x2, 0x6) +#define USART0_TX_PC7 SILABS_DBUS_USART0_TX(0x2, 0x7) +#define USART0_TX_PC8 SILABS_DBUS_USART0_TX(0x2, 0x8) +#define USART0_TX_PC9 SILABS_DBUS_USART0_TX(0x2, 0x9) +#define USART0_TX_PD0 SILABS_DBUS_USART0_TX(0x3, 0x0) +#define USART0_TX_PD1 SILABS_DBUS_USART0_TX(0x3, 0x1) +#define USART0_TX_PD2 SILABS_DBUS_USART0_TX(0x3, 0x2) +#define USART0_TX_PD3 SILABS_DBUS_USART0_TX(0x3, 0x3) +#define USART0_TX_PD4 SILABS_DBUS_USART0_TX(0x3, 0x4) +#define USART0_TX_PD5 SILABS_DBUS_USART0_TX(0x3, 0x5) +#define USART0_CTS_PA0 SILABS_DBUS_USART0_CTS(0x0, 0x0) +#define USART0_CTS_PA1 SILABS_DBUS_USART0_CTS(0x0, 0x1) +#define USART0_CTS_PA2 SILABS_DBUS_USART0_CTS(0x0, 0x2) +#define USART0_CTS_PA3 SILABS_DBUS_USART0_CTS(0x0, 0x3) +#define USART0_CTS_PA4 SILABS_DBUS_USART0_CTS(0x0, 0x4) +#define USART0_CTS_PA5 SILABS_DBUS_USART0_CTS(0x0, 0x5) +#define USART0_CTS_PA6 SILABS_DBUS_USART0_CTS(0x0, 0x6) +#define USART0_CTS_PA7 SILABS_DBUS_USART0_CTS(0x0, 0x7) +#define USART0_CTS_PA8 SILABS_DBUS_USART0_CTS(0x0, 0x8) +#define USART0_CTS_PA9 SILABS_DBUS_USART0_CTS(0x0, 0x9) +#define USART0_CTS_PB0 SILABS_DBUS_USART0_CTS(0x1, 0x0) +#define USART0_CTS_PB1 SILABS_DBUS_USART0_CTS(0x1, 0x1) +#define USART0_CTS_PB2 SILABS_DBUS_USART0_CTS(0x1, 0x2) +#define USART0_CTS_PB3 SILABS_DBUS_USART0_CTS(0x1, 0x3) +#define USART0_CTS_PB4 SILABS_DBUS_USART0_CTS(0x1, 0x4) +#define USART0_CTS_PB5 SILABS_DBUS_USART0_CTS(0x1, 0x5) +#define USART0_CTS_PC0 SILABS_DBUS_USART0_CTS(0x2, 0x0) +#define USART0_CTS_PC1 SILABS_DBUS_USART0_CTS(0x2, 0x1) +#define USART0_CTS_PC2 SILABS_DBUS_USART0_CTS(0x2, 0x2) +#define USART0_CTS_PC3 SILABS_DBUS_USART0_CTS(0x2, 0x3) +#define USART0_CTS_PC4 SILABS_DBUS_USART0_CTS(0x2, 0x4) +#define USART0_CTS_PC5 SILABS_DBUS_USART0_CTS(0x2, 0x5) +#define USART0_CTS_PC6 SILABS_DBUS_USART0_CTS(0x2, 0x6) +#define USART0_CTS_PC7 SILABS_DBUS_USART0_CTS(0x2, 0x7) +#define USART0_CTS_PC8 SILABS_DBUS_USART0_CTS(0x2, 0x8) +#define USART0_CTS_PC9 SILABS_DBUS_USART0_CTS(0x2, 0x9) +#define USART0_CTS_PD0 SILABS_DBUS_USART0_CTS(0x3, 0x0) +#define USART0_CTS_PD1 SILABS_DBUS_USART0_CTS(0x3, 0x1) +#define USART0_CTS_PD2 SILABS_DBUS_USART0_CTS(0x3, 0x2) +#define USART0_CTS_PD3 SILABS_DBUS_USART0_CTS(0x3, 0x3) +#define USART0_CTS_PD4 SILABS_DBUS_USART0_CTS(0x3, 0x4) +#define USART0_CTS_PD5 SILABS_DBUS_USART0_CTS(0x3, 0x5) + +#endif /* ZEPHYR_DT_BINDINGS_PINCTRL_SILABS_XG24_PINCTRL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg27-pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg27-pinctrl.h new file mode 100644 index 00000000..a111ce6c --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/silabs/xg27-pinctrl.h @@ -0,0 +1,1875 @@ +/* + * Copyright (c) 2024 Silicon Laboratories Inc. + * SPDX-License-Identifier: Apache-2.0 + * + * Pin Control for Silicon Labs XG27 devices + * + * This file was generated by the script gen_pinctrl.py in the hal_silabs module. + * Do not manually edit. + */ + +#ifndef ZEPHYR_DT_BINDINGS_PINCTRL_SILABS_XG27_PINCTRL_H_ +#define ZEPHYR_DT_BINDINGS_PINCTRL_SILABS_XG27_PINCTRL_H_ + +#include + +#define SILABS_DBUS_ACMP0_ACMPOUT(port, pin) SILABS_DBUS(port, pin, 4, 1, 0, 1) + +#define SILABS_DBUS_CMU_CLKOUT0(port, pin) SILABS_DBUS(port, pin, 7, 1, 0, 2) +#define SILABS_DBUS_CMU_CLKOUT1(port, pin) SILABS_DBUS(port, pin, 7, 1, 1, 3) +#define SILABS_DBUS_CMU_CLKOUT2(port, pin) SILABS_DBUS(port, pin, 7, 1, 2, 4) +#define SILABS_DBUS_CMU_CLKIN0(port, pin) SILABS_DBUS(port, pin, 7, 0, 0, 1) + +#define SILABS_DBUS_EUSART0_CS(port, pin) SILABS_DBUS(port, pin, 19, 1, 0, 1) +#define SILABS_DBUS_EUSART0_RTS(port, pin) SILABS_DBUS(port, pin, 19, 1, 1, 3) +#define SILABS_DBUS_EUSART0_RX(port, pin) SILABS_DBUS(port, pin, 19, 1, 2, 4) +#define SILABS_DBUS_EUSART0_SCLK(port, pin) SILABS_DBUS(port, pin, 19, 1, 3, 5) +#define SILABS_DBUS_EUSART0_TX(port, pin) SILABS_DBUS(port, pin, 19, 1, 4, 6) +#define SILABS_DBUS_EUSART0_CTS(port, pin) SILABS_DBUS(port, pin, 19, 0, 0, 2) + +#define SILABS_DBUS_PTI_DCLK(port, pin) SILABS_DBUS(port, pin, 27, 1, 0, 1) +#define SILABS_DBUS_PTI_DFRAME(port, pin) SILABS_DBUS(port, pin, 27, 1, 1, 2) +#define SILABS_DBUS_PTI_DOUT(port, pin) SILABS_DBUS(port, pin, 27, 1, 2, 3) + +#define SILABS_DBUS_I2C0_SCL(port, pin) SILABS_DBUS(port, pin, 32, 1, 0, 1) +#define SILABS_DBUS_I2C0_SDA(port, pin) SILABS_DBUS(port, pin, 32, 1, 1, 2) + +#define SILABS_DBUS_I2C1_SCL(port, pin) SILABS_DBUS(port, pin, 36, 1, 0, 1) +#define SILABS_DBUS_I2C1_SDA(port, pin) SILABS_DBUS(port, pin, 36, 1, 1, 2) + +#define SILABS_DBUS_LETIMER0_OUT0(port, pin) SILABS_DBUS(port, pin, 40, 1, 0, 1) +#define SILABS_DBUS_LETIMER0_OUT1(port, pin) SILABS_DBUS(port, pin, 40, 1, 1, 2) + +#define SILABS_DBUS_MODEM_ANT0(port, pin) SILABS_DBUS(port, pin, 44, 1, 0, 1) +#define SILABS_DBUS_MODEM_ANT1(port, pin) SILABS_DBUS(port, pin, 44, 1, 1, 2) +#define SILABS_DBUS_MODEM_ANTROLLOVER(port, pin) SILABS_DBUS(port, pin, 44, 1, 2, 3) +#define SILABS_DBUS_MODEM_ANTRR0(port, pin) SILABS_DBUS(port, pin, 44, 1, 3, 4) +#define SILABS_DBUS_MODEM_ANTRR1(port, pin) SILABS_DBUS(port, pin, 44, 1, 4, 5) +#define SILABS_DBUS_MODEM_ANTRR2(port, pin) SILABS_DBUS(port, pin, 44, 1, 5, 6) +#define SILABS_DBUS_MODEM_ANTRR3(port, pin) SILABS_DBUS(port, pin, 44, 1, 6, 7) +#define SILABS_DBUS_MODEM_ANTRR4(port, pin) SILABS_DBUS(port, pin, 44, 1, 7, 8) +#define SILABS_DBUS_MODEM_ANTRR5(port, pin) SILABS_DBUS(port, pin, 44, 1, 8, 9) +#define SILABS_DBUS_MODEM_ANTSWEN(port, pin) SILABS_DBUS(port, pin, 44, 1, 9, 10) +#define SILABS_DBUS_MODEM_ANTSWUS(port, pin) SILABS_DBUS(port, pin, 44, 1, 10, 11) +#define SILABS_DBUS_MODEM_ANTTRIG(port, pin) SILABS_DBUS(port, pin, 44, 1, 11, 12) +#define SILABS_DBUS_MODEM_ANTTRIGSTOP(port, pin) SILABS_DBUS(port, pin, 44, 1, 12, 13) +#define SILABS_DBUS_MODEM_DCLK(port, pin) SILABS_DBUS(port, pin, 44, 1, 13, 14) +#define SILABS_DBUS_MODEM_DOUT(port, pin) SILABS_DBUS(port, pin, 44, 1, 14, 16) +#define SILABS_DBUS_MODEM_DIN(port, pin) SILABS_DBUS(port, pin, 44, 0, 0, 15) + +#define SILABS_DBUS_PDM_CLK(port, pin) SILABS_DBUS(port, pin, 62, 1, 0, 1) +#define SILABS_DBUS_PDM_DAT0(port, pin) SILABS_DBUS(port, pin, 62, 0, 0, 2) +#define SILABS_DBUS_PDM_DAT1(port, pin) SILABS_DBUS(port, pin, 62, 0, 0, 3) + +#define SILABS_DBUS_PRS0_ASYNCH0(port, pin) SILABS_DBUS(port, pin, 67, 1, 0, 1) +#define SILABS_DBUS_PRS0_ASYNCH1(port, pin) SILABS_DBUS(port, pin, 67, 1, 1, 2) +#define SILABS_DBUS_PRS0_ASYNCH2(port, pin) SILABS_DBUS(port, pin, 67, 1, 2, 3) +#define SILABS_DBUS_PRS0_ASYNCH3(port, pin) SILABS_DBUS(port, pin, 67, 1, 3, 4) +#define SILABS_DBUS_PRS0_ASYNCH4(port, pin) SILABS_DBUS(port, pin, 67, 1, 4, 5) +#define SILABS_DBUS_PRS0_ASYNCH5(port, pin) SILABS_DBUS(port, pin, 67, 1, 5, 6) +#define SILABS_DBUS_PRS0_ASYNCH6(port, pin) SILABS_DBUS(port, pin, 67, 1, 6, 7) +#define SILABS_DBUS_PRS0_ASYNCH7(port, pin) SILABS_DBUS(port, pin, 67, 1, 7, 8) +#define SILABS_DBUS_PRS0_ASYNCH8(port, pin) SILABS_DBUS(port, pin, 67, 1, 8, 9) +#define SILABS_DBUS_PRS0_ASYNCH9(port, pin) SILABS_DBUS(port, pin, 67, 1, 9, 10) +#define SILABS_DBUS_PRS0_ASYNCH10(port, pin) SILABS_DBUS(port, pin, 67, 1, 10, 11) +#define SILABS_DBUS_PRS0_ASYNCH11(port, pin) SILABS_DBUS(port, pin, 67, 1, 11, 12) +#define SILABS_DBUS_PRS0_SYNCH0(port, pin) SILABS_DBUS(port, pin, 67, 1, 12, 13) +#define SILABS_DBUS_PRS0_SYNCH1(port, pin) SILABS_DBUS(port, pin, 67, 1, 13, 14) +#define SILABS_DBUS_PRS0_SYNCH2(port, pin) SILABS_DBUS(port, pin, 67, 1, 14, 15) +#define SILABS_DBUS_PRS0_SYNCH3(port, pin) SILABS_DBUS(port, pin, 67, 1, 15, 16) + +#define SILABS_DBUS_TIMER0_CC0(port, pin) SILABS_DBUS(port, pin, 85, 1, 0, 1) +#define SILABS_DBUS_TIMER0_CC1(port, pin) SILABS_DBUS(port, pin, 85, 1, 1, 2) +#define SILABS_DBUS_TIMER0_CC2(port, pin) SILABS_DBUS(port, pin, 85, 1, 2, 3) +#define SILABS_DBUS_TIMER0_CDTI0(port, pin) SILABS_DBUS(port, pin, 85, 1, 3, 4) +#define SILABS_DBUS_TIMER0_CDTI1(port, pin) SILABS_DBUS(port, pin, 85, 1, 4, 5) +#define SILABS_DBUS_TIMER0_CDTI2(port, pin) SILABS_DBUS(port, pin, 85, 1, 5, 6) + +#define SILABS_DBUS_TIMER1_CC0(port, pin) SILABS_DBUS(port, pin, 93, 1, 0, 1) +#define SILABS_DBUS_TIMER1_CC1(port, pin) SILABS_DBUS(port, pin, 93, 1, 1, 2) +#define SILABS_DBUS_TIMER1_CC2(port, pin) SILABS_DBUS(port, pin, 93, 1, 2, 3) +#define SILABS_DBUS_TIMER1_CDTI0(port, pin) SILABS_DBUS(port, pin, 93, 1, 3, 4) +#define SILABS_DBUS_TIMER1_CDTI1(port, pin) SILABS_DBUS(port, pin, 93, 1, 4, 5) +#define SILABS_DBUS_TIMER1_CDTI2(port, pin) SILABS_DBUS(port, pin, 93, 1, 5, 6) + +#define SILABS_DBUS_TIMER2_CC0(port, pin) SILABS_DBUS(port, pin, 101, 1, 0, 1) +#define SILABS_DBUS_TIMER2_CC1(port, pin) SILABS_DBUS(port, pin, 101, 1, 1, 2) +#define SILABS_DBUS_TIMER2_CC2(port, pin) SILABS_DBUS(port, pin, 101, 1, 2, 3) +#define SILABS_DBUS_TIMER2_CDTI0(port, pin) SILABS_DBUS(port, pin, 101, 1, 3, 4) +#define SILABS_DBUS_TIMER2_CDTI1(port, pin) SILABS_DBUS(port, pin, 101, 1, 4, 5) +#define SILABS_DBUS_TIMER2_CDTI2(port, pin) SILABS_DBUS(port, pin, 101, 1, 5, 6) + +#define SILABS_DBUS_TIMER3_CC0(port, pin) SILABS_DBUS(port, pin, 109, 1, 0, 1) +#define SILABS_DBUS_TIMER3_CC1(port, pin) SILABS_DBUS(port, pin, 109, 1, 1, 2) +#define SILABS_DBUS_TIMER3_CC2(port, pin) SILABS_DBUS(port, pin, 109, 1, 2, 3) +#define SILABS_DBUS_TIMER3_CDTI0(port, pin) SILABS_DBUS(port, pin, 109, 1, 3, 4) +#define SILABS_DBUS_TIMER3_CDTI1(port, pin) SILABS_DBUS(port, pin, 109, 1, 4, 5) +#define SILABS_DBUS_TIMER3_CDTI2(port, pin) SILABS_DBUS(port, pin, 109, 1, 5, 6) + +#define SILABS_DBUS_TIMER4_CC0(port, pin) SILABS_DBUS(port, pin, 117, 1, 0, 1) +#define SILABS_DBUS_TIMER4_CC1(port, pin) SILABS_DBUS(port, pin, 117, 1, 1, 2) +#define SILABS_DBUS_TIMER4_CC2(port, pin) SILABS_DBUS(port, pin, 117, 1, 2, 3) +#define SILABS_DBUS_TIMER4_CDTI0(port, pin) SILABS_DBUS(port, pin, 117, 1, 3, 4) +#define SILABS_DBUS_TIMER4_CDTI1(port, pin) SILABS_DBUS(port, pin, 117, 1, 4, 5) +#define SILABS_DBUS_TIMER4_CDTI2(port, pin) SILABS_DBUS(port, pin, 117, 1, 5, 6) + +#define SILABS_DBUS_USART0_CS(port, pin) SILABS_DBUS(port, pin, 125, 1, 0, 1) +#define SILABS_DBUS_USART0_RTS(port, pin) SILABS_DBUS(port, pin, 125, 1, 1, 3) +#define SILABS_DBUS_USART0_RX(port, pin) SILABS_DBUS(port, pin, 125, 1, 2, 4) +#define SILABS_DBUS_USART0_CLK(port, pin) SILABS_DBUS(port, pin, 125, 1, 3, 5) +#define SILABS_DBUS_USART0_TX(port, pin) SILABS_DBUS(port, pin, 125, 1, 4, 6) +#define SILABS_DBUS_USART0_CTS(port, pin) SILABS_DBUS(port, pin, 125, 0, 0, 2) + +#define SILABS_DBUS_USART1_CS(port, pin) SILABS_DBUS(port, pin, 133, 1, 0, 1) +#define SILABS_DBUS_USART1_RTS(port, pin) SILABS_DBUS(port, pin, 133, 1, 1, 3) +#define SILABS_DBUS_USART1_RX(port, pin) SILABS_DBUS(port, pin, 133, 1, 2, 4) +#define SILABS_DBUS_USART1_CLK(port, pin) SILABS_DBUS(port, pin, 133, 1, 3, 5) +#define SILABS_DBUS_USART1_TX(port, pin) SILABS_DBUS(port, pin, 133, 1, 4, 6) +#define SILABS_DBUS_USART1_CTS(port, pin) SILABS_DBUS(port, pin, 133, 0, 0, 2) + +#define ACMP0_ACMPOUT_PA0 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x0) +#define ACMP0_ACMPOUT_PA1 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x1) +#define ACMP0_ACMPOUT_PA2 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x2) +#define ACMP0_ACMPOUT_PA3 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x3) +#define ACMP0_ACMPOUT_PA4 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x4) +#define ACMP0_ACMPOUT_PA5 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x5) +#define ACMP0_ACMPOUT_PA6 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x6) +#define ACMP0_ACMPOUT_PA7 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x7) +#define ACMP0_ACMPOUT_PA8 SILABS_DBUS_ACMP0_ACMPOUT(0x0, 0x8) +#define ACMP0_ACMPOUT_PB0 SILABS_DBUS_ACMP0_ACMPOUT(0x1, 0x0) +#define ACMP0_ACMPOUT_PB1 SILABS_DBUS_ACMP0_ACMPOUT(0x1, 0x1) +#define ACMP0_ACMPOUT_PB2 SILABS_DBUS_ACMP0_ACMPOUT(0x1, 0x2) +#define ACMP0_ACMPOUT_PB3 SILABS_DBUS_ACMP0_ACMPOUT(0x1, 0x3) +#define ACMP0_ACMPOUT_PB4 SILABS_DBUS_ACMP0_ACMPOUT(0x1, 0x4) +#define ACMP0_ACMPOUT_PC0 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x0) +#define ACMP0_ACMPOUT_PC1 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x1) +#define ACMP0_ACMPOUT_PC2 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x2) +#define ACMP0_ACMPOUT_PC3 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x3) +#define ACMP0_ACMPOUT_PC4 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x4) +#define ACMP0_ACMPOUT_PC5 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x5) +#define ACMP0_ACMPOUT_PC6 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x6) +#define ACMP0_ACMPOUT_PC7 SILABS_DBUS_ACMP0_ACMPOUT(0x2, 0x7) +#define ACMP0_ACMPOUT_PD0 SILABS_DBUS_ACMP0_ACMPOUT(0x3, 0x0) +#define ACMP0_ACMPOUT_PD1 SILABS_DBUS_ACMP0_ACMPOUT(0x3, 0x1) +#define ACMP0_ACMPOUT_PD2 SILABS_DBUS_ACMP0_ACMPOUT(0x3, 0x2) +#define ACMP0_ACMPOUT_PD3 SILABS_DBUS_ACMP0_ACMPOUT(0x3, 0x3) + +#define CMU_CLKOUT0_PC0 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x0) +#define CMU_CLKOUT0_PC1 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x1) +#define CMU_CLKOUT0_PC2 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x2) +#define CMU_CLKOUT0_PC3 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x3) +#define CMU_CLKOUT0_PC4 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x4) +#define CMU_CLKOUT0_PC5 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x5) +#define CMU_CLKOUT0_PC6 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x6) +#define CMU_CLKOUT0_PC7 SILABS_DBUS_CMU_CLKOUT0(0x2, 0x7) +#define CMU_CLKOUT0_PD0 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x0) +#define CMU_CLKOUT0_PD1 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x1) +#define CMU_CLKOUT0_PD2 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x2) +#define CMU_CLKOUT0_PD3 SILABS_DBUS_CMU_CLKOUT0(0x3, 0x3) +#define CMU_CLKOUT1_PC0 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x0) +#define CMU_CLKOUT1_PC1 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x1) +#define CMU_CLKOUT1_PC2 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x2) +#define CMU_CLKOUT1_PC3 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x3) +#define CMU_CLKOUT1_PC4 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x4) +#define CMU_CLKOUT1_PC5 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x5) +#define CMU_CLKOUT1_PC6 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x6) +#define CMU_CLKOUT1_PC7 SILABS_DBUS_CMU_CLKOUT1(0x2, 0x7) +#define CMU_CLKOUT1_PD0 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x0) +#define CMU_CLKOUT1_PD1 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x1) +#define CMU_CLKOUT1_PD2 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x2) +#define CMU_CLKOUT1_PD3 SILABS_DBUS_CMU_CLKOUT1(0x3, 0x3) +#define CMU_CLKOUT2_PA0 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x0) +#define CMU_CLKOUT2_PA1 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x1) +#define CMU_CLKOUT2_PA2 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x2) +#define CMU_CLKOUT2_PA3 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x3) +#define CMU_CLKOUT2_PA4 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x4) +#define CMU_CLKOUT2_PA5 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x5) +#define CMU_CLKOUT2_PA6 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x6) +#define CMU_CLKOUT2_PA7 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x7) +#define CMU_CLKOUT2_PA8 SILABS_DBUS_CMU_CLKOUT2(0x0, 0x8) +#define CMU_CLKOUT2_PB0 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x0) +#define CMU_CLKOUT2_PB1 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x1) +#define CMU_CLKOUT2_PB2 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x2) +#define CMU_CLKOUT2_PB3 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x3) +#define CMU_CLKOUT2_PB4 SILABS_DBUS_CMU_CLKOUT2(0x1, 0x4) +#define CMU_CLKIN0_PC0 SILABS_DBUS_CMU_CLKIN0(0x2, 0x0) +#define CMU_CLKIN0_PC1 SILABS_DBUS_CMU_CLKIN0(0x2, 0x1) +#define CMU_CLKIN0_PC2 SILABS_DBUS_CMU_CLKIN0(0x2, 0x2) +#define CMU_CLKIN0_PC3 SILABS_DBUS_CMU_CLKIN0(0x2, 0x3) +#define CMU_CLKIN0_PC4 SILABS_DBUS_CMU_CLKIN0(0x2, 0x4) +#define CMU_CLKIN0_PC5 SILABS_DBUS_CMU_CLKIN0(0x2, 0x5) +#define CMU_CLKIN0_PC6 SILABS_DBUS_CMU_CLKIN0(0x2, 0x6) +#define CMU_CLKIN0_PC7 SILABS_DBUS_CMU_CLKIN0(0x2, 0x7) +#define CMU_CLKIN0_PD0 SILABS_DBUS_CMU_CLKIN0(0x3, 0x0) +#define CMU_CLKIN0_PD1 SILABS_DBUS_CMU_CLKIN0(0x3, 0x1) +#define CMU_CLKIN0_PD2 SILABS_DBUS_CMU_CLKIN0(0x3, 0x2) +#define CMU_CLKIN0_PD3 SILABS_DBUS_CMU_CLKIN0(0x3, 0x3) + +#define EUSART0_CS_PA0 SILABS_DBUS_EUSART0_CS(0x0, 0x0) +#define EUSART0_CS_PA1 SILABS_DBUS_EUSART0_CS(0x0, 0x1) +#define EUSART0_CS_PA2 SILABS_DBUS_EUSART0_CS(0x0, 0x2) +#define EUSART0_CS_PA3 SILABS_DBUS_EUSART0_CS(0x0, 0x3) +#define EUSART0_CS_PA4 SILABS_DBUS_EUSART0_CS(0x0, 0x4) +#define EUSART0_CS_PA5 SILABS_DBUS_EUSART0_CS(0x0, 0x5) +#define EUSART0_CS_PA6 SILABS_DBUS_EUSART0_CS(0x0, 0x6) +#define EUSART0_CS_PA7 SILABS_DBUS_EUSART0_CS(0x0, 0x7) +#define EUSART0_CS_PA8 SILABS_DBUS_EUSART0_CS(0x0, 0x8) +#define EUSART0_CS_PB0 SILABS_DBUS_EUSART0_CS(0x1, 0x0) +#define EUSART0_CS_PB1 SILABS_DBUS_EUSART0_CS(0x1, 0x1) +#define EUSART0_CS_PB2 SILABS_DBUS_EUSART0_CS(0x1, 0x2) +#define EUSART0_CS_PB3 SILABS_DBUS_EUSART0_CS(0x1, 0x3) +#define EUSART0_CS_PB4 SILABS_DBUS_EUSART0_CS(0x1, 0x4) +#define EUSART0_CS_PC0 SILABS_DBUS_EUSART0_CS(0x2, 0x0) +#define EUSART0_CS_PC1 SILABS_DBUS_EUSART0_CS(0x2, 0x1) +#define EUSART0_CS_PC2 SILABS_DBUS_EUSART0_CS(0x2, 0x2) +#define EUSART0_CS_PC3 SILABS_DBUS_EUSART0_CS(0x2, 0x3) +#define EUSART0_CS_PC4 SILABS_DBUS_EUSART0_CS(0x2, 0x4) +#define EUSART0_CS_PC5 SILABS_DBUS_EUSART0_CS(0x2, 0x5) +#define EUSART0_CS_PC6 SILABS_DBUS_EUSART0_CS(0x2, 0x6) +#define EUSART0_CS_PC7 SILABS_DBUS_EUSART0_CS(0x2, 0x7) +#define EUSART0_CS_PD0 SILABS_DBUS_EUSART0_CS(0x3, 0x0) +#define EUSART0_CS_PD1 SILABS_DBUS_EUSART0_CS(0x3, 0x1) +#define EUSART0_CS_PD2 SILABS_DBUS_EUSART0_CS(0x3, 0x2) +#define EUSART0_CS_PD3 SILABS_DBUS_EUSART0_CS(0x3, 0x3) +#define EUSART0_RTS_PA0 SILABS_DBUS_EUSART0_RTS(0x0, 0x0) +#define EUSART0_RTS_PA1 SILABS_DBUS_EUSART0_RTS(0x0, 0x1) +#define EUSART0_RTS_PA2 SILABS_DBUS_EUSART0_RTS(0x0, 0x2) +#define EUSART0_RTS_PA3 SILABS_DBUS_EUSART0_RTS(0x0, 0x3) +#define EUSART0_RTS_PA4 SILABS_DBUS_EUSART0_RTS(0x0, 0x4) +#define EUSART0_RTS_PA5 SILABS_DBUS_EUSART0_RTS(0x0, 0x5) +#define EUSART0_RTS_PA6 SILABS_DBUS_EUSART0_RTS(0x0, 0x6) +#define EUSART0_RTS_PA7 SILABS_DBUS_EUSART0_RTS(0x0, 0x7) +#define EUSART0_RTS_PA8 SILABS_DBUS_EUSART0_RTS(0x0, 0x8) +#define EUSART0_RTS_PB0 SILABS_DBUS_EUSART0_RTS(0x1, 0x0) +#define EUSART0_RTS_PB1 SILABS_DBUS_EUSART0_RTS(0x1, 0x1) +#define EUSART0_RTS_PB2 SILABS_DBUS_EUSART0_RTS(0x1, 0x2) +#define EUSART0_RTS_PB3 SILABS_DBUS_EUSART0_RTS(0x1, 0x3) +#define EUSART0_RTS_PB4 SILABS_DBUS_EUSART0_RTS(0x1, 0x4) +#define EUSART0_RTS_PC0 SILABS_DBUS_EUSART0_RTS(0x2, 0x0) +#define EUSART0_RTS_PC1 SILABS_DBUS_EUSART0_RTS(0x2, 0x1) +#define EUSART0_RTS_PC2 SILABS_DBUS_EUSART0_RTS(0x2, 0x2) +#define EUSART0_RTS_PC3 SILABS_DBUS_EUSART0_RTS(0x2, 0x3) +#define EUSART0_RTS_PC4 SILABS_DBUS_EUSART0_RTS(0x2, 0x4) +#define EUSART0_RTS_PC5 SILABS_DBUS_EUSART0_RTS(0x2, 0x5) +#define EUSART0_RTS_PC6 SILABS_DBUS_EUSART0_RTS(0x2, 0x6) +#define EUSART0_RTS_PC7 SILABS_DBUS_EUSART0_RTS(0x2, 0x7) +#define EUSART0_RTS_PD0 SILABS_DBUS_EUSART0_RTS(0x3, 0x0) +#define EUSART0_RTS_PD1 SILABS_DBUS_EUSART0_RTS(0x3, 0x1) +#define EUSART0_RTS_PD2 SILABS_DBUS_EUSART0_RTS(0x3, 0x2) +#define EUSART0_RTS_PD3 SILABS_DBUS_EUSART0_RTS(0x3, 0x3) +#define EUSART0_RX_PA0 SILABS_DBUS_EUSART0_RX(0x0, 0x0) +#define EUSART0_RX_PA1 SILABS_DBUS_EUSART0_RX(0x0, 0x1) +#define EUSART0_RX_PA2 SILABS_DBUS_EUSART0_RX(0x0, 0x2) +#define EUSART0_RX_PA3 SILABS_DBUS_EUSART0_RX(0x0, 0x3) +#define EUSART0_RX_PA4 SILABS_DBUS_EUSART0_RX(0x0, 0x4) +#define EUSART0_RX_PA5 SILABS_DBUS_EUSART0_RX(0x0, 0x5) +#define EUSART0_RX_PA6 SILABS_DBUS_EUSART0_RX(0x0, 0x6) +#define EUSART0_RX_PA7 SILABS_DBUS_EUSART0_RX(0x0, 0x7) +#define EUSART0_RX_PA8 SILABS_DBUS_EUSART0_RX(0x0, 0x8) +#define EUSART0_RX_PB0 SILABS_DBUS_EUSART0_RX(0x1, 0x0) +#define EUSART0_RX_PB1 SILABS_DBUS_EUSART0_RX(0x1, 0x1) +#define EUSART0_RX_PB2 SILABS_DBUS_EUSART0_RX(0x1, 0x2) +#define EUSART0_RX_PB3 SILABS_DBUS_EUSART0_RX(0x1, 0x3) +#define EUSART0_RX_PB4 SILABS_DBUS_EUSART0_RX(0x1, 0x4) +#define EUSART0_RX_PC0 SILABS_DBUS_EUSART0_RX(0x2, 0x0) +#define EUSART0_RX_PC1 SILABS_DBUS_EUSART0_RX(0x2, 0x1) +#define EUSART0_RX_PC2 SILABS_DBUS_EUSART0_RX(0x2, 0x2) +#define EUSART0_RX_PC3 SILABS_DBUS_EUSART0_RX(0x2, 0x3) +#define EUSART0_RX_PC4 SILABS_DBUS_EUSART0_RX(0x2, 0x4) +#define EUSART0_RX_PC5 SILABS_DBUS_EUSART0_RX(0x2, 0x5) +#define EUSART0_RX_PC6 SILABS_DBUS_EUSART0_RX(0x2, 0x6) +#define EUSART0_RX_PC7 SILABS_DBUS_EUSART0_RX(0x2, 0x7) +#define EUSART0_RX_PD0 SILABS_DBUS_EUSART0_RX(0x3, 0x0) +#define EUSART0_RX_PD1 SILABS_DBUS_EUSART0_RX(0x3, 0x1) +#define EUSART0_RX_PD2 SILABS_DBUS_EUSART0_RX(0x3, 0x2) +#define EUSART0_RX_PD3 SILABS_DBUS_EUSART0_RX(0x3, 0x3) +#define EUSART0_SCLK_PA0 SILABS_DBUS_EUSART0_SCLK(0x0, 0x0) +#define EUSART0_SCLK_PA1 SILABS_DBUS_EUSART0_SCLK(0x0, 0x1) +#define EUSART0_SCLK_PA2 SILABS_DBUS_EUSART0_SCLK(0x0, 0x2) +#define EUSART0_SCLK_PA3 SILABS_DBUS_EUSART0_SCLK(0x0, 0x3) +#define EUSART0_SCLK_PA4 SILABS_DBUS_EUSART0_SCLK(0x0, 0x4) +#define EUSART0_SCLK_PA5 SILABS_DBUS_EUSART0_SCLK(0x0, 0x5) +#define EUSART0_SCLK_PA6 SILABS_DBUS_EUSART0_SCLK(0x0, 0x6) +#define EUSART0_SCLK_PA7 SILABS_DBUS_EUSART0_SCLK(0x0, 0x7) +#define EUSART0_SCLK_PA8 SILABS_DBUS_EUSART0_SCLK(0x0, 0x8) +#define EUSART0_SCLK_PB0 SILABS_DBUS_EUSART0_SCLK(0x1, 0x0) +#define EUSART0_SCLK_PB1 SILABS_DBUS_EUSART0_SCLK(0x1, 0x1) +#define EUSART0_SCLK_PB2 SILABS_DBUS_EUSART0_SCLK(0x1, 0x2) +#define EUSART0_SCLK_PB3 SILABS_DBUS_EUSART0_SCLK(0x1, 0x3) +#define EUSART0_SCLK_PB4 SILABS_DBUS_EUSART0_SCLK(0x1, 0x4) +#define EUSART0_SCLK_PC0 SILABS_DBUS_EUSART0_SCLK(0x2, 0x0) +#define EUSART0_SCLK_PC1 SILABS_DBUS_EUSART0_SCLK(0x2, 0x1) +#define EUSART0_SCLK_PC2 SILABS_DBUS_EUSART0_SCLK(0x2, 0x2) +#define EUSART0_SCLK_PC3 SILABS_DBUS_EUSART0_SCLK(0x2, 0x3) +#define EUSART0_SCLK_PC4 SILABS_DBUS_EUSART0_SCLK(0x2, 0x4) +#define EUSART0_SCLK_PC5 SILABS_DBUS_EUSART0_SCLK(0x2, 0x5) +#define EUSART0_SCLK_PC6 SILABS_DBUS_EUSART0_SCLK(0x2, 0x6) +#define EUSART0_SCLK_PC7 SILABS_DBUS_EUSART0_SCLK(0x2, 0x7) +#define EUSART0_SCLK_PD0 SILABS_DBUS_EUSART0_SCLK(0x3, 0x0) +#define EUSART0_SCLK_PD1 SILABS_DBUS_EUSART0_SCLK(0x3, 0x1) +#define EUSART0_SCLK_PD2 SILABS_DBUS_EUSART0_SCLK(0x3, 0x2) +#define EUSART0_SCLK_PD3 SILABS_DBUS_EUSART0_SCLK(0x3, 0x3) +#define EUSART0_TX_PA0 SILABS_DBUS_EUSART0_TX(0x0, 0x0) +#define EUSART0_TX_PA1 SILABS_DBUS_EUSART0_TX(0x0, 0x1) +#define EUSART0_TX_PA2 SILABS_DBUS_EUSART0_TX(0x0, 0x2) +#define EUSART0_TX_PA3 SILABS_DBUS_EUSART0_TX(0x0, 0x3) +#define EUSART0_TX_PA4 SILABS_DBUS_EUSART0_TX(0x0, 0x4) +#define EUSART0_TX_PA5 SILABS_DBUS_EUSART0_TX(0x0, 0x5) +#define EUSART0_TX_PA6 SILABS_DBUS_EUSART0_TX(0x0, 0x6) +#define EUSART0_TX_PA7 SILABS_DBUS_EUSART0_TX(0x0, 0x7) +#define EUSART0_TX_PA8 SILABS_DBUS_EUSART0_TX(0x0, 0x8) +#define EUSART0_TX_PB0 SILABS_DBUS_EUSART0_TX(0x1, 0x0) +#define EUSART0_TX_PB1 SILABS_DBUS_EUSART0_TX(0x1, 0x1) +#define EUSART0_TX_PB2 SILABS_DBUS_EUSART0_TX(0x1, 0x2) +#define EUSART0_TX_PB3 SILABS_DBUS_EUSART0_TX(0x1, 0x3) +#define EUSART0_TX_PB4 SILABS_DBUS_EUSART0_TX(0x1, 0x4) +#define EUSART0_TX_PC0 SILABS_DBUS_EUSART0_TX(0x2, 0x0) +#define EUSART0_TX_PC1 SILABS_DBUS_EUSART0_TX(0x2, 0x1) +#define EUSART0_TX_PC2 SILABS_DBUS_EUSART0_TX(0x2, 0x2) +#define EUSART0_TX_PC3 SILABS_DBUS_EUSART0_TX(0x2, 0x3) +#define EUSART0_TX_PC4 SILABS_DBUS_EUSART0_TX(0x2, 0x4) +#define EUSART0_TX_PC5 SILABS_DBUS_EUSART0_TX(0x2, 0x5) +#define EUSART0_TX_PC6 SILABS_DBUS_EUSART0_TX(0x2, 0x6) +#define EUSART0_TX_PC7 SILABS_DBUS_EUSART0_TX(0x2, 0x7) +#define EUSART0_TX_PD0 SILABS_DBUS_EUSART0_TX(0x3, 0x0) +#define EUSART0_TX_PD1 SILABS_DBUS_EUSART0_TX(0x3, 0x1) +#define EUSART0_TX_PD2 SILABS_DBUS_EUSART0_TX(0x3, 0x2) +#define EUSART0_TX_PD3 SILABS_DBUS_EUSART0_TX(0x3, 0x3) +#define EUSART0_CTS_PA0 SILABS_DBUS_EUSART0_CTS(0x0, 0x0) +#define EUSART0_CTS_PA1 SILABS_DBUS_EUSART0_CTS(0x0, 0x1) +#define EUSART0_CTS_PA2 SILABS_DBUS_EUSART0_CTS(0x0, 0x2) +#define EUSART0_CTS_PA3 SILABS_DBUS_EUSART0_CTS(0x0, 0x3) +#define EUSART0_CTS_PA4 SILABS_DBUS_EUSART0_CTS(0x0, 0x4) +#define EUSART0_CTS_PA5 SILABS_DBUS_EUSART0_CTS(0x0, 0x5) +#define EUSART0_CTS_PA6 SILABS_DBUS_EUSART0_CTS(0x0, 0x6) +#define EUSART0_CTS_PA7 SILABS_DBUS_EUSART0_CTS(0x0, 0x7) +#define EUSART0_CTS_PA8 SILABS_DBUS_EUSART0_CTS(0x0, 0x8) +#define EUSART0_CTS_PB0 SILABS_DBUS_EUSART0_CTS(0x1, 0x0) +#define EUSART0_CTS_PB1 SILABS_DBUS_EUSART0_CTS(0x1, 0x1) +#define EUSART0_CTS_PB2 SILABS_DBUS_EUSART0_CTS(0x1, 0x2) +#define EUSART0_CTS_PB3 SILABS_DBUS_EUSART0_CTS(0x1, 0x3) +#define EUSART0_CTS_PB4 SILABS_DBUS_EUSART0_CTS(0x1, 0x4) +#define EUSART0_CTS_PC0 SILABS_DBUS_EUSART0_CTS(0x2, 0x0) +#define EUSART0_CTS_PC1 SILABS_DBUS_EUSART0_CTS(0x2, 0x1) +#define EUSART0_CTS_PC2 SILABS_DBUS_EUSART0_CTS(0x2, 0x2) +#define EUSART0_CTS_PC3 SILABS_DBUS_EUSART0_CTS(0x2, 0x3) +#define EUSART0_CTS_PC4 SILABS_DBUS_EUSART0_CTS(0x2, 0x4) +#define EUSART0_CTS_PC5 SILABS_DBUS_EUSART0_CTS(0x2, 0x5) +#define EUSART0_CTS_PC6 SILABS_DBUS_EUSART0_CTS(0x2, 0x6) +#define EUSART0_CTS_PC7 SILABS_DBUS_EUSART0_CTS(0x2, 0x7) +#define EUSART0_CTS_PD0 SILABS_DBUS_EUSART0_CTS(0x3, 0x0) +#define EUSART0_CTS_PD1 SILABS_DBUS_EUSART0_CTS(0x3, 0x1) +#define EUSART0_CTS_PD2 SILABS_DBUS_EUSART0_CTS(0x3, 0x2) +#define EUSART0_CTS_PD3 SILABS_DBUS_EUSART0_CTS(0x3, 0x3) + +#define PTI_DCLK_PC0 SILABS_DBUS_PTI_DCLK(0x2, 0x0) +#define PTI_DCLK_PC1 SILABS_DBUS_PTI_DCLK(0x2, 0x1) +#define PTI_DCLK_PC2 SILABS_DBUS_PTI_DCLK(0x2, 0x2) +#define PTI_DCLK_PC3 SILABS_DBUS_PTI_DCLK(0x2, 0x3) +#define PTI_DCLK_PC4 SILABS_DBUS_PTI_DCLK(0x2, 0x4) +#define PTI_DCLK_PC5 SILABS_DBUS_PTI_DCLK(0x2, 0x5) +#define PTI_DCLK_PC6 SILABS_DBUS_PTI_DCLK(0x2, 0x6) +#define PTI_DCLK_PC7 SILABS_DBUS_PTI_DCLK(0x2, 0x7) +#define PTI_DCLK_PD0 SILABS_DBUS_PTI_DCLK(0x3, 0x0) +#define PTI_DCLK_PD1 SILABS_DBUS_PTI_DCLK(0x3, 0x1) +#define PTI_DCLK_PD2 SILABS_DBUS_PTI_DCLK(0x3, 0x2) +#define PTI_DCLK_PD3 SILABS_DBUS_PTI_DCLK(0x3, 0x3) +#define PTI_DFRAME_PC0 SILABS_DBUS_PTI_DFRAME(0x2, 0x0) +#define PTI_DFRAME_PC1 SILABS_DBUS_PTI_DFRAME(0x2, 0x1) +#define PTI_DFRAME_PC2 SILABS_DBUS_PTI_DFRAME(0x2, 0x2) +#define PTI_DFRAME_PC3 SILABS_DBUS_PTI_DFRAME(0x2, 0x3) +#define PTI_DFRAME_PC4 SILABS_DBUS_PTI_DFRAME(0x2, 0x4) +#define PTI_DFRAME_PC5 SILABS_DBUS_PTI_DFRAME(0x2, 0x5) +#define PTI_DFRAME_PC6 SILABS_DBUS_PTI_DFRAME(0x2, 0x6) +#define PTI_DFRAME_PC7 SILABS_DBUS_PTI_DFRAME(0x2, 0x7) +#define PTI_DFRAME_PD0 SILABS_DBUS_PTI_DFRAME(0x3, 0x0) +#define PTI_DFRAME_PD1 SILABS_DBUS_PTI_DFRAME(0x3, 0x1) +#define PTI_DFRAME_PD2 SILABS_DBUS_PTI_DFRAME(0x3, 0x2) +#define PTI_DFRAME_PD3 SILABS_DBUS_PTI_DFRAME(0x3, 0x3) +#define PTI_DOUT_PC0 SILABS_DBUS_PTI_DOUT(0x2, 0x0) +#define PTI_DOUT_PC1 SILABS_DBUS_PTI_DOUT(0x2, 0x1) +#define PTI_DOUT_PC2 SILABS_DBUS_PTI_DOUT(0x2, 0x2) +#define PTI_DOUT_PC3 SILABS_DBUS_PTI_DOUT(0x2, 0x3) +#define PTI_DOUT_PC4 SILABS_DBUS_PTI_DOUT(0x2, 0x4) +#define PTI_DOUT_PC5 SILABS_DBUS_PTI_DOUT(0x2, 0x5) +#define PTI_DOUT_PC6 SILABS_DBUS_PTI_DOUT(0x2, 0x6) +#define PTI_DOUT_PC7 SILABS_DBUS_PTI_DOUT(0x2, 0x7) +#define PTI_DOUT_PD0 SILABS_DBUS_PTI_DOUT(0x3, 0x0) +#define PTI_DOUT_PD1 SILABS_DBUS_PTI_DOUT(0x3, 0x1) +#define PTI_DOUT_PD2 SILABS_DBUS_PTI_DOUT(0x3, 0x2) +#define PTI_DOUT_PD3 SILABS_DBUS_PTI_DOUT(0x3, 0x3) + +#define I2C0_SCL_PA0 SILABS_DBUS_I2C0_SCL(0x0, 0x0) +#define I2C0_SCL_PA1 SILABS_DBUS_I2C0_SCL(0x0, 0x1) +#define I2C0_SCL_PA2 SILABS_DBUS_I2C0_SCL(0x0, 0x2) +#define I2C0_SCL_PA3 SILABS_DBUS_I2C0_SCL(0x0, 0x3) +#define I2C0_SCL_PA4 SILABS_DBUS_I2C0_SCL(0x0, 0x4) +#define I2C0_SCL_PA5 SILABS_DBUS_I2C0_SCL(0x0, 0x5) +#define I2C0_SCL_PA6 SILABS_DBUS_I2C0_SCL(0x0, 0x6) +#define I2C0_SCL_PA7 SILABS_DBUS_I2C0_SCL(0x0, 0x7) +#define I2C0_SCL_PA8 SILABS_DBUS_I2C0_SCL(0x0, 0x8) +#define I2C0_SCL_PB0 SILABS_DBUS_I2C0_SCL(0x1, 0x0) +#define I2C0_SCL_PB1 SILABS_DBUS_I2C0_SCL(0x1, 0x1) +#define I2C0_SCL_PB2 SILABS_DBUS_I2C0_SCL(0x1, 0x2) +#define I2C0_SCL_PB3 SILABS_DBUS_I2C0_SCL(0x1, 0x3) +#define I2C0_SCL_PB4 SILABS_DBUS_I2C0_SCL(0x1, 0x4) +#define I2C0_SCL_PC0 SILABS_DBUS_I2C0_SCL(0x2, 0x0) +#define I2C0_SCL_PC1 SILABS_DBUS_I2C0_SCL(0x2, 0x1) +#define I2C0_SCL_PC2 SILABS_DBUS_I2C0_SCL(0x2, 0x2) +#define I2C0_SCL_PC3 SILABS_DBUS_I2C0_SCL(0x2, 0x3) +#define I2C0_SCL_PC4 SILABS_DBUS_I2C0_SCL(0x2, 0x4) +#define I2C0_SCL_PC5 SILABS_DBUS_I2C0_SCL(0x2, 0x5) +#define I2C0_SCL_PC6 SILABS_DBUS_I2C0_SCL(0x2, 0x6) +#define I2C0_SCL_PC7 SILABS_DBUS_I2C0_SCL(0x2, 0x7) +#define I2C0_SCL_PD0 SILABS_DBUS_I2C0_SCL(0x3, 0x0) +#define I2C0_SCL_PD1 SILABS_DBUS_I2C0_SCL(0x3, 0x1) +#define I2C0_SCL_PD2 SILABS_DBUS_I2C0_SCL(0x3, 0x2) +#define I2C0_SCL_PD3 SILABS_DBUS_I2C0_SCL(0x3, 0x3) +#define I2C0_SDA_PA0 SILABS_DBUS_I2C0_SDA(0x0, 0x0) +#define I2C0_SDA_PA1 SILABS_DBUS_I2C0_SDA(0x0, 0x1) +#define I2C0_SDA_PA2 SILABS_DBUS_I2C0_SDA(0x0, 0x2) +#define I2C0_SDA_PA3 SILABS_DBUS_I2C0_SDA(0x0, 0x3) +#define I2C0_SDA_PA4 SILABS_DBUS_I2C0_SDA(0x0, 0x4) +#define I2C0_SDA_PA5 SILABS_DBUS_I2C0_SDA(0x0, 0x5) +#define I2C0_SDA_PA6 SILABS_DBUS_I2C0_SDA(0x0, 0x6) +#define I2C0_SDA_PA7 SILABS_DBUS_I2C0_SDA(0x0, 0x7) +#define I2C0_SDA_PA8 SILABS_DBUS_I2C0_SDA(0x0, 0x8) +#define I2C0_SDA_PB0 SILABS_DBUS_I2C0_SDA(0x1, 0x0) +#define I2C0_SDA_PB1 SILABS_DBUS_I2C0_SDA(0x1, 0x1) +#define I2C0_SDA_PB2 SILABS_DBUS_I2C0_SDA(0x1, 0x2) +#define I2C0_SDA_PB3 SILABS_DBUS_I2C0_SDA(0x1, 0x3) +#define I2C0_SDA_PB4 SILABS_DBUS_I2C0_SDA(0x1, 0x4) +#define I2C0_SDA_PC0 SILABS_DBUS_I2C0_SDA(0x2, 0x0) +#define I2C0_SDA_PC1 SILABS_DBUS_I2C0_SDA(0x2, 0x1) +#define I2C0_SDA_PC2 SILABS_DBUS_I2C0_SDA(0x2, 0x2) +#define I2C0_SDA_PC3 SILABS_DBUS_I2C0_SDA(0x2, 0x3) +#define I2C0_SDA_PC4 SILABS_DBUS_I2C0_SDA(0x2, 0x4) +#define I2C0_SDA_PC5 SILABS_DBUS_I2C0_SDA(0x2, 0x5) +#define I2C0_SDA_PC6 SILABS_DBUS_I2C0_SDA(0x2, 0x6) +#define I2C0_SDA_PC7 SILABS_DBUS_I2C0_SDA(0x2, 0x7) +#define I2C0_SDA_PD0 SILABS_DBUS_I2C0_SDA(0x3, 0x0) +#define I2C0_SDA_PD1 SILABS_DBUS_I2C0_SDA(0x3, 0x1) +#define I2C0_SDA_PD2 SILABS_DBUS_I2C0_SDA(0x3, 0x2) +#define I2C0_SDA_PD3 SILABS_DBUS_I2C0_SDA(0x3, 0x3) + +#define I2C1_SCL_PC0 SILABS_DBUS_I2C1_SCL(0x2, 0x0) +#define I2C1_SCL_PC1 SILABS_DBUS_I2C1_SCL(0x2, 0x1) +#define I2C1_SCL_PC2 SILABS_DBUS_I2C1_SCL(0x2, 0x2) +#define I2C1_SCL_PC3 SILABS_DBUS_I2C1_SCL(0x2, 0x3) +#define I2C1_SCL_PC4 SILABS_DBUS_I2C1_SCL(0x2, 0x4) +#define I2C1_SCL_PC5 SILABS_DBUS_I2C1_SCL(0x2, 0x5) +#define I2C1_SCL_PC6 SILABS_DBUS_I2C1_SCL(0x2, 0x6) +#define I2C1_SCL_PC7 SILABS_DBUS_I2C1_SCL(0x2, 0x7) +#define I2C1_SCL_PD0 SILABS_DBUS_I2C1_SCL(0x3, 0x0) +#define I2C1_SCL_PD1 SILABS_DBUS_I2C1_SCL(0x3, 0x1) +#define I2C1_SCL_PD2 SILABS_DBUS_I2C1_SCL(0x3, 0x2) +#define I2C1_SCL_PD3 SILABS_DBUS_I2C1_SCL(0x3, 0x3) +#define I2C1_SDA_PC0 SILABS_DBUS_I2C1_SDA(0x2, 0x0) +#define I2C1_SDA_PC1 SILABS_DBUS_I2C1_SDA(0x2, 0x1) +#define I2C1_SDA_PC2 SILABS_DBUS_I2C1_SDA(0x2, 0x2) +#define I2C1_SDA_PC3 SILABS_DBUS_I2C1_SDA(0x2, 0x3) +#define I2C1_SDA_PC4 SILABS_DBUS_I2C1_SDA(0x2, 0x4) +#define I2C1_SDA_PC5 SILABS_DBUS_I2C1_SDA(0x2, 0x5) +#define I2C1_SDA_PC6 SILABS_DBUS_I2C1_SDA(0x2, 0x6) +#define I2C1_SDA_PC7 SILABS_DBUS_I2C1_SDA(0x2, 0x7) +#define I2C1_SDA_PD0 SILABS_DBUS_I2C1_SDA(0x3, 0x0) +#define I2C1_SDA_PD1 SILABS_DBUS_I2C1_SDA(0x3, 0x1) +#define I2C1_SDA_PD2 SILABS_DBUS_I2C1_SDA(0x3, 0x2) +#define I2C1_SDA_PD3 SILABS_DBUS_I2C1_SDA(0x3, 0x3) + +#define LETIMER0_OUT0_PA0 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x0) +#define LETIMER0_OUT0_PA1 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x1) +#define LETIMER0_OUT0_PA2 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x2) +#define LETIMER0_OUT0_PA3 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x3) +#define LETIMER0_OUT0_PA4 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x4) +#define LETIMER0_OUT0_PA5 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x5) +#define LETIMER0_OUT0_PA6 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x6) +#define LETIMER0_OUT0_PA7 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x7) +#define LETIMER0_OUT0_PA8 SILABS_DBUS_LETIMER0_OUT0(0x0, 0x8) +#define LETIMER0_OUT0_PB0 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x0) +#define LETIMER0_OUT0_PB1 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x1) +#define LETIMER0_OUT0_PB2 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x2) +#define LETIMER0_OUT0_PB3 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x3) +#define LETIMER0_OUT0_PB4 SILABS_DBUS_LETIMER0_OUT0(0x1, 0x4) +#define LETIMER0_OUT1_PA0 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x0) +#define LETIMER0_OUT1_PA1 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x1) +#define LETIMER0_OUT1_PA2 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x2) +#define LETIMER0_OUT1_PA3 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x3) +#define LETIMER0_OUT1_PA4 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x4) +#define LETIMER0_OUT1_PA5 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x5) +#define LETIMER0_OUT1_PA6 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x6) +#define LETIMER0_OUT1_PA7 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x7) +#define LETIMER0_OUT1_PA8 SILABS_DBUS_LETIMER0_OUT1(0x0, 0x8) +#define LETIMER0_OUT1_PB0 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x0) +#define LETIMER0_OUT1_PB1 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x1) +#define LETIMER0_OUT1_PB2 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x2) +#define LETIMER0_OUT1_PB3 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x3) +#define LETIMER0_OUT1_PB4 SILABS_DBUS_LETIMER0_OUT1(0x1, 0x4) + +#define MODEM_ANT0_PA0 SILABS_DBUS_MODEM_ANT0(0x0, 0x0) +#define MODEM_ANT0_PA1 SILABS_DBUS_MODEM_ANT0(0x0, 0x1) +#define MODEM_ANT0_PA2 SILABS_DBUS_MODEM_ANT0(0x0, 0x2) +#define MODEM_ANT0_PA3 SILABS_DBUS_MODEM_ANT0(0x0, 0x3) +#define MODEM_ANT0_PA4 SILABS_DBUS_MODEM_ANT0(0x0, 0x4) +#define MODEM_ANT0_PA5 SILABS_DBUS_MODEM_ANT0(0x0, 0x5) +#define MODEM_ANT0_PA6 SILABS_DBUS_MODEM_ANT0(0x0, 0x6) +#define MODEM_ANT0_PA7 SILABS_DBUS_MODEM_ANT0(0x0, 0x7) +#define MODEM_ANT0_PA8 SILABS_DBUS_MODEM_ANT0(0x0, 0x8) +#define MODEM_ANT0_PB0 SILABS_DBUS_MODEM_ANT0(0x1, 0x0) +#define MODEM_ANT0_PB1 SILABS_DBUS_MODEM_ANT0(0x1, 0x1) +#define MODEM_ANT0_PB2 SILABS_DBUS_MODEM_ANT0(0x1, 0x2) +#define MODEM_ANT0_PB3 SILABS_DBUS_MODEM_ANT0(0x1, 0x3) +#define MODEM_ANT0_PB4 SILABS_DBUS_MODEM_ANT0(0x1, 0x4) +#define MODEM_ANT0_PC0 SILABS_DBUS_MODEM_ANT0(0x2, 0x0) +#define MODEM_ANT0_PC1 SILABS_DBUS_MODEM_ANT0(0x2, 0x1) +#define MODEM_ANT0_PC2 SILABS_DBUS_MODEM_ANT0(0x2, 0x2) +#define MODEM_ANT0_PC3 SILABS_DBUS_MODEM_ANT0(0x2, 0x3) +#define MODEM_ANT0_PC4 SILABS_DBUS_MODEM_ANT0(0x2, 0x4) +#define MODEM_ANT0_PC5 SILABS_DBUS_MODEM_ANT0(0x2, 0x5) +#define MODEM_ANT0_PC6 SILABS_DBUS_MODEM_ANT0(0x2, 0x6) +#define MODEM_ANT0_PC7 SILABS_DBUS_MODEM_ANT0(0x2, 0x7) +#define MODEM_ANT0_PD0 SILABS_DBUS_MODEM_ANT0(0x3, 0x0) +#define MODEM_ANT0_PD1 SILABS_DBUS_MODEM_ANT0(0x3, 0x1) +#define MODEM_ANT0_PD2 SILABS_DBUS_MODEM_ANT0(0x3, 0x2) +#define MODEM_ANT0_PD3 SILABS_DBUS_MODEM_ANT0(0x3, 0x3) +#define MODEM_ANT1_PA0 SILABS_DBUS_MODEM_ANT1(0x0, 0x0) +#define MODEM_ANT1_PA1 SILABS_DBUS_MODEM_ANT1(0x0, 0x1) +#define MODEM_ANT1_PA2 SILABS_DBUS_MODEM_ANT1(0x0, 0x2) +#define MODEM_ANT1_PA3 SILABS_DBUS_MODEM_ANT1(0x0, 0x3) +#define MODEM_ANT1_PA4 SILABS_DBUS_MODEM_ANT1(0x0, 0x4) +#define MODEM_ANT1_PA5 SILABS_DBUS_MODEM_ANT1(0x0, 0x5) +#define MODEM_ANT1_PA6 SILABS_DBUS_MODEM_ANT1(0x0, 0x6) +#define MODEM_ANT1_PA7 SILABS_DBUS_MODEM_ANT1(0x0, 0x7) +#define MODEM_ANT1_PA8 SILABS_DBUS_MODEM_ANT1(0x0, 0x8) +#define MODEM_ANT1_PB0 SILABS_DBUS_MODEM_ANT1(0x1, 0x0) +#define MODEM_ANT1_PB1 SILABS_DBUS_MODEM_ANT1(0x1, 0x1) +#define MODEM_ANT1_PB2 SILABS_DBUS_MODEM_ANT1(0x1, 0x2) +#define MODEM_ANT1_PB3 SILABS_DBUS_MODEM_ANT1(0x1, 0x3) +#define MODEM_ANT1_PB4 SILABS_DBUS_MODEM_ANT1(0x1, 0x4) +#define MODEM_ANT1_PC0 SILABS_DBUS_MODEM_ANT1(0x2, 0x0) +#define MODEM_ANT1_PC1 SILABS_DBUS_MODEM_ANT1(0x2, 0x1) +#define MODEM_ANT1_PC2 SILABS_DBUS_MODEM_ANT1(0x2, 0x2) +#define MODEM_ANT1_PC3 SILABS_DBUS_MODEM_ANT1(0x2, 0x3) +#define MODEM_ANT1_PC4 SILABS_DBUS_MODEM_ANT1(0x2, 0x4) +#define MODEM_ANT1_PC5 SILABS_DBUS_MODEM_ANT1(0x2, 0x5) +#define MODEM_ANT1_PC6 SILABS_DBUS_MODEM_ANT1(0x2, 0x6) +#define MODEM_ANT1_PC7 SILABS_DBUS_MODEM_ANT1(0x2, 0x7) +#define MODEM_ANT1_PD0 SILABS_DBUS_MODEM_ANT1(0x3, 0x0) +#define MODEM_ANT1_PD1 SILABS_DBUS_MODEM_ANT1(0x3, 0x1) +#define MODEM_ANT1_PD2 SILABS_DBUS_MODEM_ANT1(0x3, 0x2) +#define MODEM_ANT1_PD3 SILABS_DBUS_MODEM_ANT1(0x3, 0x3) +#define MODEM_ANTROLLOVER_PC0 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x0) +#define MODEM_ANTROLLOVER_PC1 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x1) +#define MODEM_ANTROLLOVER_PC2 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x2) +#define MODEM_ANTROLLOVER_PC3 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x3) +#define MODEM_ANTROLLOVER_PC4 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x4) +#define MODEM_ANTROLLOVER_PC5 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x5) +#define MODEM_ANTROLLOVER_PC6 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x6) +#define MODEM_ANTROLLOVER_PC7 SILABS_DBUS_MODEM_ANTROLLOVER(0x2, 0x7) +#define MODEM_ANTROLLOVER_PD0 SILABS_DBUS_MODEM_ANTROLLOVER(0x3, 0x0) +#define MODEM_ANTROLLOVER_PD1 SILABS_DBUS_MODEM_ANTROLLOVER(0x3, 0x1) +#define MODEM_ANTROLLOVER_PD2 SILABS_DBUS_MODEM_ANTROLLOVER(0x3, 0x2) +#define MODEM_ANTROLLOVER_PD3 SILABS_DBUS_MODEM_ANTROLLOVER(0x3, 0x3) +#define MODEM_ANTRR0_PC0 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x0) +#define MODEM_ANTRR0_PC1 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x1) +#define MODEM_ANTRR0_PC2 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x2) +#define MODEM_ANTRR0_PC3 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x3) +#define MODEM_ANTRR0_PC4 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x4) +#define MODEM_ANTRR0_PC5 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x5) +#define MODEM_ANTRR0_PC6 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x6) +#define MODEM_ANTRR0_PC7 SILABS_DBUS_MODEM_ANTRR0(0x2, 0x7) +#define MODEM_ANTRR0_PD0 SILABS_DBUS_MODEM_ANTRR0(0x3, 0x0) +#define MODEM_ANTRR0_PD1 SILABS_DBUS_MODEM_ANTRR0(0x3, 0x1) +#define MODEM_ANTRR0_PD2 SILABS_DBUS_MODEM_ANTRR0(0x3, 0x2) +#define MODEM_ANTRR0_PD3 SILABS_DBUS_MODEM_ANTRR0(0x3, 0x3) +#define MODEM_ANTRR1_PC0 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x0) +#define MODEM_ANTRR1_PC1 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x1) +#define MODEM_ANTRR1_PC2 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x2) +#define MODEM_ANTRR1_PC3 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x3) +#define MODEM_ANTRR1_PC4 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x4) +#define MODEM_ANTRR1_PC5 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x5) +#define MODEM_ANTRR1_PC6 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x6) +#define MODEM_ANTRR1_PC7 SILABS_DBUS_MODEM_ANTRR1(0x2, 0x7) +#define MODEM_ANTRR1_PD0 SILABS_DBUS_MODEM_ANTRR1(0x3, 0x0) +#define MODEM_ANTRR1_PD1 SILABS_DBUS_MODEM_ANTRR1(0x3, 0x1) +#define MODEM_ANTRR1_PD2 SILABS_DBUS_MODEM_ANTRR1(0x3, 0x2) +#define MODEM_ANTRR1_PD3 SILABS_DBUS_MODEM_ANTRR1(0x3, 0x3) +#define MODEM_ANTRR2_PC0 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x0) +#define MODEM_ANTRR2_PC1 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x1) +#define MODEM_ANTRR2_PC2 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x2) +#define MODEM_ANTRR2_PC3 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x3) +#define MODEM_ANTRR2_PC4 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x4) +#define MODEM_ANTRR2_PC5 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x5) +#define MODEM_ANTRR2_PC6 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x6) +#define MODEM_ANTRR2_PC7 SILABS_DBUS_MODEM_ANTRR2(0x2, 0x7) +#define MODEM_ANTRR2_PD0 SILABS_DBUS_MODEM_ANTRR2(0x3, 0x0) +#define MODEM_ANTRR2_PD1 SILABS_DBUS_MODEM_ANTRR2(0x3, 0x1) +#define MODEM_ANTRR2_PD2 SILABS_DBUS_MODEM_ANTRR2(0x3, 0x2) +#define MODEM_ANTRR2_PD3 SILABS_DBUS_MODEM_ANTRR2(0x3, 0x3) +#define MODEM_ANTRR3_PC0 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x0) +#define MODEM_ANTRR3_PC1 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x1) +#define MODEM_ANTRR3_PC2 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x2) +#define MODEM_ANTRR3_PC3 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x3) +#define MODEM_ANTRR3_PC4 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x4) +#define MODEM_ANTRR3_PC5 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x5) +#define MODEM_ANTRR3_PC6 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x6) +#define MODEM_ANTRR3_PC7 SILABS_DBUS_MODEM_ANTRR3(0x2, 0x7) +#define MODEM_ANTRR3_PD0 SILABS_DBUS_MODEM_ANTRR3(0x3, 0x0) +#define MODEM_ANTRR3_PD1 SILABS_DBUS_MODEM_ANTRR3(0x3, 0x1) +#define MODEM_ANTRR3_PD2 SILABS_DBUS_MODEM_ANTRR3(0x3, 0x2) +#define MODEM_ANTRR3_PD3 SILABS_DBUS_MODEM_ANTRR3(0x3, 0x3) +#define MODEM_ANTRR4_PC0 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x0) +#define MODEM_ANTRR4_PC1 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x1) +#define MODEM_ANTRR4_PC2 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x2) +#define MODEM_ANTRR4_PC3 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x3) +#define MODEM_ANTRR4_PC4 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x4) +#define MODEM_ANTRR4_PC5 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x5) +#define MODEM_ANTRR4_PC6 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x6) +#define MODEM_ANTRR4_PC7 SILABS_DBUS_MODEM_ANTRR4(0x2, 0x7) +#define MODEM_ANTRR4_PD0 SILABS_DBUS_MODEM_ANTRR4(0x3, 0x0) +#define MODEM_ANTRR4_PD1 SILABS_DBUS_MODEM_ANTRR4(0x3, 0x1) +#define MODEM_ANTRR4_PD2 SILABS_DBUS_MODEM_ANTRR4(0x3, 0x2) +#define MODEM_ANTRR4_PD3 SILABS_DBUS_MODEM_ANTRR4(0x3, 0x3) +#define MODEM_ANTRR5_PC0 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x0) +#define MODEM_ANTRR5_PC1 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x1) +#define MODEM_ANTRR5_PC2 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x2) +#define MODEM_ANTRR5_PC3 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x3) +#define MODEM_ANTRR5_PC4 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x4) +#define MODEM_ANTRR5_PC5 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x5) +#define MODEM_ANTRR5_PC6 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x6) +#define MODEM_ANTRR5_PC7 SILABS_DBUS_MODEM_ANTRR5(0x2, 0x7) +#define MODEM_ANTRR5_PD0 SILABS_DBUS_MODEM_ANTRR5(0x3, 0x0) +#define MODEM_ANTRR5_PD1 SILABS_DBUS_MODEM_ANTRR5(0x3, 0x1) +#define MODEM_ANTRR5_PD2 SILABS_DBUS_MODEM_ANTRR5(0x3, 0x2) +#define MODEM_ANTRR5_PD3 SILABS_DBUS_MODEM_ANTRR5(0x3, 0x3) +#define MODEM_ANTSWEN_PC0 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x0) +#define MODEM_ANTSWEN_PC1 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x1) +#define MODEM_ANTSWEN_PC2 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x2) +#define MODEM_ANTSWEN_PC3 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x3) +#define MODEM_ANTSWEN_PC4 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x4) +#define MODEM_ANTSWEN_PC5 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x5) +#define MODEM_ANTSWEN_PC6 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x6) +#define MODEM_ANTSWEN_PC7 SILABS_DBUS_MODEM_ANTSWEN(0x2, 0x7) +#define MODEM_ANTSWEN_PD0 SILABS_DBUS_MODEM_ANTSWEN(0x3, 0x0) +#define MODEM_ANTSWEN_PD1 SILABS_DBUS_MODEM_ANTSWEN(0x3, 0x1) +#define MODEM_ANTSWEN_PD2 SILABS_DBUS_MODEM_ANTSWEN(0x3, 0x2) +#define MODEM_ANTSWEN_PD3 SILABS_DBUS_MODEM_ANTSWEN(0x3, 0x3) +#define MODEM_ANTSWUS_PC0 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x0) +#define MODEM_ANTSWUS_PC1 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x1) +#define MODEM_ANTSWUS_PC2 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x2) +#define MODEM_ANTSWUS_PC3 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x3) +#define MODEM_ANTSWUS_PC4 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x4) +#define MODEM_ANTSWUS_PC5 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x5) +#define MODEM_ANTSWUS_PC6 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x6) +#define MODEM_ANTSWUS_PC7 SILABS_DBUS_MODEM_ANTSWUS(0x2, 0x7) +#define MODEM_ANTSWUS_PD0 SILABS_DBUS_MODEM_ANTSWUS(0x3, 0x0) +#define MODEM_ANTSWUS_PD1 SILABS_DBUS_MODEM_ANTSWUS(0x3, 0x1) +#define MODEM_ANTSWUS_PD2 SILABS_DBUS_MODEM_ANTSWUS(0x3, 0x2) +#define MODEM_ANTSWUS_PD3 SILABS_DBUS_MODEM_ANTSWUS(0x3, 0x3) +#define MODEM_ANTTRIG_PC0 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x0) +#define MODEM_ANTTRIG_PC1 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x1) +#define MODEM_ANTTRIG_PC2 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x2) +#define MODEM_ANTTRIG_PC3 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x3) +#define MODEM_ANTTRIG_PC4 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x4) +#define MODEM_ANTTRIG_PC5 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x5) +#define MODEM_ANTTRIG_PC6 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x6) +#define MODEM_ANTTRIG_PC7 SILABS_DBUS_MODEM_ANTTRIG(0x2, 0x7) +#define MODEM_ANTTRIG_PD0 SILABS_DBUS_MODEM_ANTTRIG(0x3, 0x0) +#define MODEM_ANTTRIG_PD1 SILABS_DBUS_MODEM_ANTTRIG(0x3, 0x1) +#define MODEM_ANTTRIG_PD2 SILABS_DBUS_MODEM_ANTTRIG(0x3, 0x2) +#define MODEM_ANTTRIG_PD3 SILABS_DBUS_MODEM_ANTTRIG(0x3, 0x3) +#define MODEM_ANTTRIGSTOP_PC0 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x0) +#define MODEM_ANTTRIGSTOP_PC1 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x1) +#define MODEM_ANTTRIGSTOP_PC2 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x2) +#define MODEM_ANTTRIGSTOP_PC3 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x3) +#define MODEM_ANTTRIGSTOP_PC4 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x4) +#define MODEM_ANTTRIGSTOP_PC5 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x5) +#define MODEM_ANTTRIGSTOP_PC6 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x6) +#define MODEM_ANTTRIGSTOP_PC7 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x2, 0x7) +#define MODEM_ANTTRIGSTOP_PD0 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x3, 0x0) +#define MODEM_ANTTRIGSTOP_PD1 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x3, 0x1) +#define MODEM_ANTTRIGSTOP_PD2 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x3, 0x2) +#define MODEM_ANTTRIGSTOP_PD3 SILABS_DBUS_MODEM_ANTTRIGSTOP(0x3, 0x3) +#define MODEM_DCLK_PA0 SILABS_DBUS_MODEM_DCLK(0x0, 0x0) +#define MODEM_DCLK_PA1 SILABS_DBUS_MODEM_DCLK(0x0, 0x1) +#define MODEM_DCLK_PA2 SILABS_DBUS_MODEM_DCLK(0x0, 0x2) +#define MODEM_DCLK_PA3 SILABS_DBUS_MODEM_DCLK(0x0, 0x3) +#define MODEM_DCLK_PA4 SILABS_DBUS_MODEM_DCLK(0x0, 0x4) +#define MODEM_DCLK_PA5 SILABS_DBUS_MODEM_DCLK(0x0, 0x5) +#define MODEM_DCLK_PA6 SILABS_DBUS_MODEM_DCLK(0x0, 0x6) +#define MODEM_DCLK_PA7 SILABS_DBUS_MODEM_DCLK(0x0, 0x7) +#define MODEM_DCLK_PA8 SILABS_DBUS_MODEM_DCLK(0x0, 0x8) +#define MODEM_DCLK_PB0 SILABS_DBUS_MODEM_DCLK(0x1, 0x0) +#define MODEM_DCLK_PB1 SILABS_DBUS_MODEM_DCLK(0x1, 0x1) +#define MODEM_DCLK_PB2 SILABS_DBUS_MODEM_DCLK(0x1, 0x2) +#define MODEM_DCLK_PB3 SILABS_DBUS_MODEM_DCLK(0x1, 0x3) +#define MODEM_DCLK_PB4 SILABS_DBUS_MODEM_DCLK(0x1, 0x4) +#define MODEM_DOUT_PA0 SILABS_DBUS_MODEM_DOUT(0x0, 0x0) +#define MODEM_DOUT_PA1 SILABS_DBUS_MODEM_DOUT(0x0, 0x1) +#define MODEM_DOUT_PA2 SILABS_DBUS_MODEM_DOUT(0x0, 0x2) +#define MODEM_DOUT_PA3 SILABS_DBUS_MODEM_DOUT(0x0, 0x3) +#define MODEM_DOUT_PA4 SILABS_DBUS_MODEM_DOUT(0x0, 0x4) +#define MODEM_DOUT_PA5 SILABS_DBUS_MODEM_DOUT(0x0, 0x5) +#define MODEM_DOUT_PA6 SILABS_DBUS_MODEM_DOUT(0x0, 0x6) +#define MODEM_DOUT_PA7 SILABS_DBUS_MODEM_DOUT(0x0, 0x7) +#define MODEM_DOUT_PA8 SILABS_DBUS_MODEM_DOUT(0x0, 0x8) +#define MODEM_DOUT_PB0 SILABS_DBUS_MODEM_DOUT(0x1, 0x0) +#define MODEM_DOUT_PB1 SILABS_DBUS_MODEM_DOUT(0x1, 0x1) +#define MODEM_DOUT_PB2 SILABS_DBUS_MODEM_DOUT(0x1, 0x2) +#define MODEM_DOUT_PB3 SILABS_DBUS_MODEM_DOUT(0x1, 0x3) +#define MODEM_DOUT_PB4 SILABS_DBUS_MODEM_DOUT(0x1, 0x4) +#define MODEM_DIN_PA0 SILABS_DBUS_MODEM_DIN(0x0, 0x0) +#define MODEM_DIN_PA1 SILABS_DBUS_MODEM_DIN(0x0, 0x1) +#define MODEM_DIN_PA2 SILABS_DBUS_MODEM_DIN(0x0, 0x2) +#define MODEM_DIN_PA3 SILABS_DBUS_MODEM_DIN(0x0, 0x3) +#define MODEM_DIN_PA4 SILABS_DBUS_MODEM_DIN(0x0, 0x4) +#define MODEM_DIN_PA5 SILABS_DBUS_MODEM_DIN(0x0, 0x5) +#define MODEM_DIN_PA6 SILABS_DBUS_MODEM_DIN(0x0, 0x6) +#define MODEM_DIN_PA7 SILABS_DBUS_MODEM_DIN(0x0, 0x7) +#define MODEM_DIN_PA8 SILABS_DBUS_MODEM_DIN(0x0, 0x8) +#define MODEM_DIN_PB0 SILABS_DBUS_MODEM_DIN(0x1, 0x0) +#define MODEM_DIN_PB1 SILABS_DBUS_MODEM_DIN(0x1, 0x1) +#define MODEM_DIN_PB2 SILABS_DBUS_MODEM_DIN(0x1, 0x2) +#define MODEM_DIN_PB3 SILABS_DBUS_MODEM_DIN(0x1, 0x3) +#define MODEM_DIN_PB4 SILABS_DBUS_MODEM_DIN(0x1, 0x4) + +#define PDM_CLK_PA0 SILABS_DBUS_PDM_CLK(0x0, 0x0) +#define PDM_CLK_PA1 SILABS_DBUS_PDM_CLK(0x0, 0x1) +#define PDM_CLK_PA2 SILABS_DBUS_PDM_CLK(0x0, 0x2) +#define PDM_CLK_PA3 SILABS_DBUS_PDM_CLK(0x0, 0x3) +#define PDM_CLK_PA4 SILABS_DBUS_PDM_CLK(0x0, 0x4) +#define PDM_CLK_PA5 SILABS_DBUS_PDM_CLK(0x0, 0x5) +#define PDM_CLK_PA6 SILABS_DBUS_PDM_CLK(0x0, 0x6) +#define PDM_CLK_PA7 SILABS_DBUS_PDM_CLK(0x0, 0x7) +#define PDM_CLK_PA8 SILABS_DBUS_PDM_CLK(0x0, 0x8) +#define PDM_CLK_PB0 SILABS_DBUS_PDM_CLK(0x1, 0x0) +#define PDM_CLK_PB1 SILABS_DBUS_PDM_CLK(0x1, 0x1) +#define PDM_CLK_PB2 SILABS_DBUS_PDM_CLK(0x1, 0x2) +#define PDM_CLK_PB3 SILABS_DBUS_PDM_CLK(0x1, 0x3) +#define PDM_CLK_PB4 SILABS_DBUS_PDM_CLK(0x1, 0x4) +#define PDM_CLK_PC0 SILABS_DBUS_PDM_CLK(0x2, 0x0) +#define PDM_CLK_PC1 SILABS_DBUS_PDM_CLK(0x2, 0x1) +#define PDM_CLK_PC2 SILABS_DBUS_PDM_CLK(0x2, 0x2) +#define PDM_CLK_PC3 SILABS_DBUS_PDM_CLK(0x2, 0x3) +#define PDM_CLK_PC4 SILABS_DBUS_PDM_CLK(0x2, 0x4) +#define PDM_CLK_PC5 SILABS_DBUS_PDM_CLK(0x2, 0x5) +#define PDM_CLK_PC6 SILABS_DBUS_PDM_CLK(0x2, 0x6) +#define PDM_CLK_PC7 SILABS_DBUS_PDM_CLK(0x2, 0x7) +#define PDM_CLK_PD0 SILABS_DBUS_PDM_CLK(0x3, 0x0) +#define PDM_CLK_PD1 SILABS_DBUS_PDM_CLK(0x3, 0x1) +#define PDM_CLK_PD2 SILABS_DBUS_PDM_CLK(0x3, 0x2) +#define PDM_CLK_PD3 SILABS_DBUS_PDM_CLK(0x3, 0x3) +#define PDM_DAT0_PA0 SILABS_DBUS_PDM_DAT0(0x0, 0x0) +#define PDM_DAT0_PA1 SILABS_DBUS_PDM_DAT0(0x0, 0x1) +#define PDM_DAT0_PA2 SILABS_DBUS_PDM_DAT0(0x0, 0x2) +#define PDM_DAT0_PA3 SILABS_DBUS_PDM_DAT0(0x0, 0x3) +#define PDM_DAT0_PA4 SILABS_DBUS_PDM_DAT0(0x0, 0x4) +#define PDM_DAT0_PA5 SILABS_DBUS_PDM_DAT0(0x0, 0x5) +#define PDM_DAT0_PA6 SILABS_DBUS_PDM_DAT0(0x0, 0x6) +#define PDM_DAT0_PA7 SILABS_DBUS_PDM_DAT0(0x0, 0x7) +#define PDM_DAT0_PA8 SILABS_DBUS_PDM_DAT0(0x0, 0x8) +#define PDM_DAT0_PB0 SILABS_DBUS_PDM_DAT0(0x1, 0x0) +#define PDM_DAT0_PB1 SILABS_DBUS_PDM_DAT0(0x1, 0x1) +#define PDM_DAT0_PB2 SILABS_DBUS_PDM_DAT0(0x1, 0x2) +#define PDM_DAT0_PB3 SILABS_DBUS_PDM_DAT0(0x1, 0x3) +#define PDM_DAT0_PB4 SILABS_DBUS_PDM_DAT0(0x1, 0x4) +#define PDM_DAT0_PC0 SILABS_DBUS_PDM_DAT0(0x2, 0x0) +#define PDM_DAT0_PC1 SILABS_DBUS_PDM_DAT0(0x2, 0x1) +#define PDM_DAT0_PC2 SILABS_DBUS_PDM_DAT0(0x2, 0x2) +#define PDM_DAT0_PC3 SILABS_DBUS_PDM_DAT0(0x2, 0x3) +#define PDM_DAT0_PC4 SILABS_DBUS_PDM_DAT0(0x2, 0x4) +#define PDM_DAT0_PC5 SILABS_DBUS_PDM_DAT0(0x2, 0x5) +#define PDM_DAT0_PC6 SILABS_DBUS_PDM_DAT0(0x2, 0x6) +#define PDM_DAT0_PC7 SILABS_DBUS_PDM_DAT0(0x2, 0x7) +#define PDM_DAT0_PD0 SILABS_DBUS_PDM_DAT0(0x3, 0x0) +#define PDM_DAT0_PD1 SILABS_DBUS_PDM_DAT0(0x3, 0x1) +#define PDM_DAT0_PD2 SILABS_DBUS_PDM_DAT0(0x3, 0x2) +#define PDM_DAT0_PD3 SILABS_DBUS_PDM_DAT0(0x3, 0x3) +#define PDM_DAT1_PA0 SILABS_DBUS_PDM_DAT1(0x0, 0x0) +#define PDM_DAT1_PA1 SILABS_DBUS_PDM_DAT1(0x0, 0x1) +#define PDM_DAT1_PA2 SILABS_DBUS_PDM_DAT1(0x0, 0x2) +#define PDM_DAT1_PA3 SILABS_DBUS_PDM_DAT1(0x0, 0x3) +#define PDM_DAT1_PA4 SILABS_DBUS_PDM_DAT1(0x0, 0x4) +#define PDM_DAT1_PA5 SILABS_DBUS_PDM_DAT1(0x0, 0x5) +#define PDM_DAT1_PA6 SILABS_DBUS_PDM_DAT1(0x0, 0x6) +#define PDM_DAT1_PA7 SILABS_DBUS_PDM_DAT1(0x0, 0x7) +#define PDM_DAT1_PA8 SILABS_DBUS_PDM_DAT1(0x0, 0x8) +#define PDM_DAT1_PB0 SILABS_DBUS_PDM_DAT1(0x1, 0x0) +#define PDM_DAT1_PB1 SILABS_DBUS_PDM_DAT1(0x1, 0x1) +#define PDM_DAT1_PB2 SILABS_DBUS_PDM_DAT1(0x1, 0x2) +#define PDM_DAT1_PB3 SILABS_DBUS_PDM_DAT1(0x1, 0x3) +#define PDM_DAT1_PB4 SILABS_DBUS_PDM_DAT1(0x1, 0x4) +#define PDM_DAT1_PC0 SILABS_DBUS_PDM_DAT1(0x2, 0x0) +#define PDM_DAT1_PC1 SILABS_DBUS_PDM_DAT1(0x2, 0x1) +#define PDM_DAT1_PC2 SILABS_DBUS_PDM_DAT1(0x2, 0x2) +#define PDM_DAT1_PC3 SILABS_DBUS_PDM_DAT1(0x2, 0x3) +#define PDM_DAT1_PC4 SILABS_DBUS_PDM_DAT1(0x2, 0x4) +#define PDM_DAT1_PC5 SILABS_DBUS_PDM_DAT1(0x2, 0x5) +#define PDM_DAT1_PC6 SILABS_DBUS_PDM_DAT1(0x2, 0x6) +#define PDM_DAT1_PC7 SILABS_DBUS_PDM_DAT1(0x2, 0x7) +#define PDM_DAT1_PD0 SILABS_DBUS_PDM_DAT1(0x3, 0x0) +#define PDM_DAT1_PD1 SILABS_DBUS_PDM_DAT1(0x3, 0x1) +#define PDM_DAT1_PD2 SILABS_DBUS_PDM_DAT1(0x3, 0x2) +#define PDM_DAT1_PD3 SILABS_DBUS_PDM_DAT1(0x3, 0x3) + +#define PRS0_ASYNCH0_PA0 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x0) +#define PRS0_ASYNCH0_PA1 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x1) +#define PRS0_ASYNCH0_PA2 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x2) +#define PRS0_ASYNCH0_PA3 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x3) +#define PRS0_ASYNCH0_PA4 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x4) +#define PRS0_ASYNCH0_PA5 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x5) +#define PRS0_ASYNCH0_PA6 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x6) +#define PRS0_ASYNCH0_PA7 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x7) +#define PRS0_ASYNCH0_PA8 SILABS_DBUS_PRS0_ASYNCH0(0x0, 0x8) +#define PRS0_ASYNCH0_PB0 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x0) +#define PRS0_ASYNCH0_PB1 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x1) +#define PRS0_ASYNCH0_PB2 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x2) +#define PRS0_ASYNCH0_PB3 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x3) +#define PRS0_ASYNCH0_PB4 SILABS_DBUS_PRS0_ASYNCH0(0x1, 0x4) +#define PRS0_ASYNCH1_PA0 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x0) +#define PRS0_ASYNCH1_PA1 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x1) +#define PRS0_ASYNCH1_PA2 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x2) +#define PRS0_ASYNCH1_PA3 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x3) +#define PRS0_ASYNCH1_PA4 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x4) +#define PRS0_ASYNCH1_PA5 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x5) +#define PRS0_ASYNCH1_PA6 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x6) +#define PRS0_ASYNCH1_PA7 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x7) +#define PRS0_ASYNCH1_PA8 SILABS_DBUS_PRS0_ASYNCH1(0x0, 0x8) +#define PRS0_ASYNCH1_PB0 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x0) +#define PRS0_ASYNCH1_PB1 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x1) +#define PRS0_ASYNCH1_PB2 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x2) +#define PRS0_ASYNCH1_PB3 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x3) +#define PRS0_ASYNCH1_PB4 SILABS_DBUS_PRS0_ASYNCH1(0x1, 0x4) +#define PRS0_ASYNCH2_PA0 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x0) +#define PRS0_ASYNCH2_PA1 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x1) +#define PRS0_ASYNCH2_PA2 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x2) +#define PRS0_ASYNCH2_PA3 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x3) +#define PRS0_ASYNCH2_PA4 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x4) +#define PRS0_ASYNCH2_PA5 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x5) +#define PRS0_ASYNCH2_PA6 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x6) +#define PRS0_ASYNCH2_PA7 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x7) +#define PRS0_ASYNCH2_PA8 SILABS_DBUS_PRS0_ASYNCH2(0x0, 0x8) +#define PRS0_ASYNCH2_PB0 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x0) +#define PRS0_ASYNCH2_PB1 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x1) +#define PRS0_ASYNCH2_PB2 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x2) +#define PRS0_ASYNCH2_PB3 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x3) +#define PRS0_ASYNCH2_PB4 SILABS_DBUS_PRS0_ASYNCH2(0x1, 0x4) +#define PRS0_ASYNCH3_PA0 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x0) +#define PRS0_ASYNCH3_PA1 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x1) +#define PRS0_ASYNCH3_PA2 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x2) +#define PRS0_ASYNCH3_PA3 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x3) +#define PRS0_ASYNCH3_PA4 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x4) +#define PRS0_ASYNCH3_PA5 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x5) +#define PRS0_ASYNCH3_PA6 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x6) +#define PRS0_ASYNCH3_PA7 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x7) +#define PRS0_ASYNCH3_PA8 SILABS_DBUS_PRS0_ASYNCH3(0x0, 0x8) +#define PRS0_ASYNCH3_PB0 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x0) +#define PRS0_ASYNCH3_PB1 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x1) +#define PRS0_ASYNCH3_PB2 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x2) +#define PRS0_ASYNCH3_PB3 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x3) +#define PRS0_ASYNCH3_PB4 SILABS_DBUS_PRS0_ASYNCH3(0x1, 0x4) +#define PRS0_ASYNCH4_PA0 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x0) +#define PRS0_ASYNCH4_PA1 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x1) +#define PRS0_ASYNCH4_PA2 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x2) +#define PRS0_ASYNCH4_PA3 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x3) +#define PRS0_ASYNCH4_PA4 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x4) +#define PRS0_ASYNCH4_PA5 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x5) +#define PRS0_ASYNCH4_PA6 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x6) +#define PRS0_ASYNCH4_PA7 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x7) +#define PRS0_ASYNCH4_PA8 SILABS_DBUS_PRS0_ASYNCH4(0x0, 0x8) +#define PRS0_ASYNCH4_PB0 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x0) +#define PRS0_ASYNCH4_PB1 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x1) +#define PRS0_ASYNCH4_PB2 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x2) +#define PRS0_ASYNCH4_PB3 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x3) +#define PRS0_ASYNCH4_PB4 SILABS_DBUS_PRS0_ASYNCH4(0x1, 0x4) +#define PRS0_ASYNCH5_PA0 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x0) +#define PRS0_ASYNCH5_PA1 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x1) +#define PRS0_ASYNCH5_PA2 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x2) +#define PRS0_ASYNCH5_PA3 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x3) +#define PRS0_ASYNCH5_PA4 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x4) +#define PRS0_ASYNCH5_PA5 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x5) +#define PRS0_ASYNCH5_PA6 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x6) +#define PRS0_ASYNCH5_PA7 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x7) +#define PRS0_ASYNCH5_PA8 SILABS_DBUS_PRS0_ASYNCH5(0x0, 0x8) +#define PRS0_ASYNCH5_PB0 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x0) +#define PRS0_ASYNCH5_PB1 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x1) +#define PRS0_ASYNCH5_PB2 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x2) +#define PRS0_ASYNCH5_PB3 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x3) +#define PRS0_ASYNCH5_PB4 SILABS_DBUS_PRS0_ASYNCH5(0x1, 0x4) +#define PRS0_ASYNCH6_PC0 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x0) +#define PRS0_ASYNCH6_PC1 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x1) +#define PRS0_ASYNCH6_PC2 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x2) +#define PRS0_ASYNCH6_PC3 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x3) +#define PRS0_ASYNCH6_PC4 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x4) +#define PRS0_ASYNCH6_PC5 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x5) +#define PRS0_ASYNCH6_PC6 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x6) +#define PRS0_ASYNCH6_PC7 SILABS_DBUS_PRS0_ASYNCH6(0x2, 0x7) +#define PRS0_ASYNCH6_PD0 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x0) +#define PRS0_ASYNCH6_PD1 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x1) +#define PRS0_ASYNCH6_PD2 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x2) +#define PRS0_ASYNCH6_PD3 SILABS_DBUS_PRS0_ASYNCH6(0x3, 0x3) +#define PRS0_ASYNCH7_PC0 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x0) +#define PRS0_ASYNCH7_PC1 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x1) +#define PRS0_ASYNCH7_PC2 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x2) +#define PRS0_ASYNCH7_PC3 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x3) +#define PRS0_ASYNCH7_PC4 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x4) +#define PRS0_ASYNCH7_PC5 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x5) +#define PRS0_ASYNCH7_PC6 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x6) +#define PRS0_ASYNCH7_PC7 SILABS_DBUS_PRS0_ASYNCH7(0x2, 0x7) +#define PRS0_ASYNCH7_PD0 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x0) +#define PRS0_ASYNCH7_PD1 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x1) +#define PRS0_ASYNCH7_PD2 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x2) +#define PRS0_ASYNCH7_PD3 SILABS_DBUS_PRS0_ASYNCH7(0x3, 0x3) +#define PRS0_ASYNCH8_PC0 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x0) +#define PRS0_ASYNCH8_PC1 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x1) +#define PRS0_ASYNCH8_PC2 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x2) +#define PRS0_ASYNCH8_PC3 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x3) +#define PRS0_ASYNCH8_PC4 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x4) +#define PRS0_ASYNCH8_PC5 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x5) +#define PRS0_ASYNCH8_PC6 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x6) +#define PRS0_ASYNCH8_PC7 SILABS_DBUS_PRS0_ASYNCH8(0x2, 0x7) +#define PRS0_ASYNCH8_PD0 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x0) +#define PRS0_ASYNCH8_PD1 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x1) +#define PRS0_ASYNCH8_PD2 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x2) +#define PRS0_ASYNCH8_PD3 SILABS_DBUS_PRS0_ASYNCH8(0x3, 0x3) +#define PRS0_ASYNCH9_PC0 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x0) +#define PRS0_ASYNCH9_PC1 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x1) +#define PRS0_ASYNCH9_PC2 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x2) +#define PRS0_ASYNCH9_PC3 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x3) +#define PRS0_ASYNCH9_PC4 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x4) +#define PRS0_ASYNCH9_PC5 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x5) +#define PRS0_ASYNCH9_PC6 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x6) +#define PRS0_ASYNCH9_PC7 SILABS_DBUS_PRS0_ASYNCH9(0x2, 0x7) +#define PRS0_ASYNCH9_PD0 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x0) +#define PRS0_ASYNCH9_PD1 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x1) +#define PRS0_ASYNCH9_PD2 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x2) +#define PRS0_ASYNCH9_PD3 SILABS_DBUS_PRS0_ASYNCH9(0x3, 0x3) +#define PRS0_ASYNCH10_PC0 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x0) +#define PRS0_ASYNCH10_PC1 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x1) +#define PRS0_ASYNCH10_PC2 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x2) +#define PRS0_ASYNCH10_PC3 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x3) +#define PRS0_ASYNCH10_PC4 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x4) +#define PRS0_ASYNCH10_PC5 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x5) +#define PRS0_ASYNCH10_PC6 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x6) +#define PRS0_ASYNCH10_PC7 SILABS_DBUS_PRS0_ASYNCH10(0x2, 0x7) +#define PRS0_ASYNCH10_PD0 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x0) +#define PRS0_ASYNCH10_PD1 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x1) +#define PRS0_ASYNCH10_PD2 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x2) +#define PRS0_ASYNCH10_PD3 SILABS_DBUS_PRS0_ASYNCH10(0x3, 0x3) +#define PRS0_ASYNCH11_PC0 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x0) +#define PRS0_ASYNCH11_PC1 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x1) +#define PRS0_ASYNCH11_PC2 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x2) +#define PRS0_ASYNCH11_PC3 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x3) +#define PRS0_ASYNCH11_PC4 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x4) +#define PRS0_ASYNCH11_PC5 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x5) +#define PRS0_ASYNCH11_PC6 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x6) +#define PRS0_ASYNCH11_PC7 SILABS_DBUS_PRS0_ASYNCH11(0x2, 0x7) +#define PRS0_ASYNCH11_PD0 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x0) +#define PRS0_ASYNCH11_PD1 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x1) +#define PRS0_ASYNCH11_PD2 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x2) +#define PRS0_ASYNCH11_PD3 SILABS_DBUS_PRS0_ASYNCH11(0x3, 0x3) +#define PRS0_SYNCH0_PA0 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x0) +#define PRS0_SYNCH0_PA1 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x1) +#define PRS0_SYNCH0_PA2 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x2) +#define PRS0_SYNCH0_PA3 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x3) +#define PRS0_SYNCH0_PA4 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x4) +#define PRS0_SYNCH0_PA5 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x5) +#define PRS0_SYNCH0_PA6 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x6) +#define PRS0_SYNCH0_PA7 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x7) +#define PRS0_SYNCH0_PA8 SILABS_DBUS_PRS0_SYNCH0(0x0, 0x8) +#define PRS0_SYNCH0_PB0 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x0) +#define PRS0_SYNCH0_PB1 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x1) +#define PRS0_SYNCH0_PB2 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x2) +#define PRS0_SYNCH0_PB3 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x3) +#define PRS0_SYNCH0_PB4 SILABS_DBUS_PRS0_SYNCH0(0x1, 0x4) +#define PRS0_SYNCH0_PC0 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x0) +#define PRS0_SYNCH0_PC1 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x1) +#define PRS0_SYNCH0_PC2 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x2) +#define PRS0_SYNCH0_PC3 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x3) +#define PRS0_SYNCH0_PC4 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x4) +#define PRS0_SYNCH0_PC5 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x5) +#define PRS0_SYNCH0_PC6 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x6) +#define PRS0_SYNCH0_PC7 SILABS_DBUS_PRS0_SYNCH0(0x2, 0x7) +#define PRS0_SYNCH0_PD0 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x0) +#define PRS0_SYNCH0_PD1 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x1) +#define PRS0_SYNCH0_PD2 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x2) +#define PRS0_SYNCH0_PD3 SILABS_DBUS_PRS0_SYNCH0(0x3, 0x3) +#define PRS0_SYNCH1_PA0 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x0) +#define PRS0_SYNCH1_PA1 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x1) +#define PRS0_SYNCH1_PA2 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x2) +#define PRS0_SYNCH1_PA3 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x3) +#define PRS0_SYNCH1_PA4 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x4) +#define PRS0_SYNCH1_PA5 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x5) +#define PRS0_SYNCH1_PA6 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x6) +#define PRS0_SYNCH1_PA7 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x7) +#define PRS0_SYNCH1_PA8 SILABS_DBUS_PRS0_SYNCH1(0x0, 0x8) +#define PRS0_SYNCH1_PB0 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x0) +#define PRS0_SYNCH1_PB1 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x1) +#define PRS0_SYNCH1_PB2 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x2) +#define PRS0_SYNCH1_PB3 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x3) +#define PRS0_SYNCH1_PB4 SILABS_DBUS_PRS0_SYNCH1(0x1, 0x4) +#define PRS0_SYNCH1_PC0 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x0) +#define PRS0_SYNCH1_PC1 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x1) +#define PRS0_SYNCH1_PC2 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x2) +#define PRS0_SYNCH1_PC3 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x3) +#define PRS0_SYNCH1_PC4 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x4) +#define PRS0_SYNCH1_PC5 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x5) +#define PRS0_SYNCH1_PC6 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x6) +#define PRS0_SYNCH1_PC7 SILABS_DBUS_PRS0_SYNCH1(0x2, 0x7) +#define PRS0_SYNCH1_PD0 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x0) +#define PRS0_SYNCH1_PD1 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x1) +#define PRS0_SYNCH1_PD2 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x2) +#define PRS0_SYNCH1_PD3 SILABS_DBUS_PRS0_SYNCH1(0x3, 0x3) +#define PRS0_SYNCH2_PA0 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x0) +#define PRS0_SYNCH2_PA1 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x1) +#define PRS0_SYNCH2_PA2 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x2) +#define PRS0_SYNCH2_PA3 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x3) +#define PRS0_SYNCH2_PA4 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x4) +#define PRS0_SYNCH2_PA5 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x5) +#define PRS0_SYNCH2_PA6 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x6) +#define PRS0_SYNCH2_PA7 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x7) +#define PRS0_SYNCH2_PA8 SILABS_DBUS_PRS0_SYNCH2(0x0, 0x8) +#define PRS0_SYNCH2_PB0 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x0) +#define PRS0_SYNCH2_PB1 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x1) +#define PRS0_SYNCH2_PB2 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x2) +#define PRS0_SYNCH2_PB3 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x3) +#define PRS0_SYNCH2_PB4 SILABS_DBUS_PRS0_SYNCH2(0x1, 0x4) +#define PRS0_SYNCH2_PC0 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x0) +#define PRS0_SYNCH2_PC1 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x1) +#define PRS0_SYNCH2_PC2 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x2) +#define PRS0_SYNCH2_PC3 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x3) +#define PRS0_SYNCH2_PC4 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x4) +#define PRS0_SYNCH2_PC5 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x5) +#define PRS0_SYNCH2_PC6 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x6) +#define PRS0_SYNCH2_PC7 SILABS_DBUS_PRS0_SYNCH2(0x2, 0x7) +#define PRS0_SYNCH2_PD0 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x0) +#define PRS0_SYNCH2_PD1 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x1) +#define PRS0_SYNCH2_PD2 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x2) +#define PRS0_SYNCH2_PD3 SILABS_DBUS_PRS0_SYNCH2(0x3, 0x3) +#define PRS0_SYNCH3_PA0 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x0) +#define PRS0_SYNCH3_PA1 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x1) +#define PRS0_SYNCH3_PA2 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x2) +#define PRS0_SYNCH3_PA3 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x3) +#define PRS0_SYNCH3_PA4 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x4) +#define PRS0_SYNCH3_PA5 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x5) +#define PRS0_SYNCH3_PA6 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x6) +#define PRS0_SYNCH3_PA7 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x7) +#define PRS0_SYNCH3_PA8 SILABS_DBUS_PRS0_SYNCH3(0x0, 0x8) +#define PRS0_SYNCH3_PB0 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x0) +#define PRS0_SYNCH3_PB1 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x1) +#define PRS0_SYNCH3_PB2 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x2) +#define PRS0_SYNCH3_PB3 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x3) +#define PRS0_SYNCH3_PB4 SILABS_DBUS_PRS0_SYNCH3(0x1, 0x4) +#define PRS0_SYNCH3_PC0 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x0) +#define PRS0_SYNCH3_PC1 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x1) +#define PRS0_SYNCH3_PC2 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x2) +#define PRS0_SYNCH3_PC3 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x3) +#define PRS0_SYNCH3_PC4 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x4) +#define PRS0_SYNCH3_PC5 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x5) +#define PRS0_SYNCH3_PC6 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x6) +#define PRS0_SYNCH3_PC7 SILABS_DBUS_PRS0_SYNCH3(0x2, 0x7) +#define PRS0_SYNCH3_PD0 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x0) +#define PRS0_SYNCH3_PD1 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x1) +#define PRS0_SYNCH3_PD2 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x2) +#define PRS0_SYNCH3_PD3 SILABS_DBUS_PRS0_SYNCH3(0x3, 0x3) + +#define TIMER0_CC0_PA0 SILABS_DBUS_TIMER0_CC0(0x0, 0x0) +#define TIMER0_CC0_PA1 SILABS_DBUS_TIMER0_CC0(0x0, 0x1) +#define TIMER0_CC0_PA2 SILABS_DBUS_TIMER0_CC0(0x0, 0x2) +#define TIMER0_CC0_PA3 SILABS_DBUS_TIMER0_CC0(0x0, 0x3) +#define TIMER0_CC0_PA4 SILABS_DBUS_TIMER0_CC0(0x0, 0x4) +#define TIMER0_CC0_PA5 SILABS_DBUS_TIMER0_CC0(0x0, 0x5) +#define TIMER0_CC0_PA6 SILABS_DBUS_TIMER0_CC0(0x0, 0x6) +#define TIMER0_CC0_PA7 SILABS_DBUS_TIMER0_CC0(0x0, 0x7) +#define TIMER0_CC0_PA8 SILABS_DBUS_TIMER0_CC0(0x0, 0x8) +#define TIMER0_CC0_PB0 SILABS_DBUS_TIMER0_CC0(0x1, 0x0) +#define TIMER0_CC0_PB1 SILABS_DBUS_TIMER0_CC0(0x1, 0x1) +#define TIMER0_CC0_PB2 SILABS_DBUS_TIMER0_CC0(0x1, 0x2) +#define TIMER0_CC0_PB3 SILABS_DBUS_TIMER0_CC0(0x1, 0x3) +#define TIMER0_CC0_PB4 SILABS_DBUS_TIMER0_CC0(0x1, 0x4) +#define TIMER0_CC0_PC0 SILABS_DBUS_TIMER0_CC0(0x2, 0x0) +#define TIMER0_CC0_PC1 SILABS_DBUS_TIMER0_CC0(0x2, 0x1) +#define TIMER0_CC0_PC2 SILABS_DBUS_TIMER0_CC0(0x2, 0x2) +#define TIMER0_CC0_PC3 SILABS_DBUS_TIMER0_CC0(0x2, 0x3) +#define TIMER0_CC0_PC4 SILABS_DBUS_TIMER0_CC0(0x2, 0x4) +#define TIMER0_CC0_PC5 SILABS_DBUS_TIMER0_CC0(0x2, 0x5) +#define TIMER0_CC0_PC6 SILABS_DBUS_TIMER0_CC0(0x2, 0x6) +#define TIMER0_CC0_PC7 SILABS_DBUS_TIMER0_CC0(0x2, 0x7) +#define TIMER0_CC0_PD0 SILABS_DBUS_TIMER0_CC0(0x3, 0x0) +#define TIMER0_CC0_PD1 SILABS_DBUS_TIMER0_CC0(0x3, 0x1) +#define TIMER0_CC0_PD2 SILABS_DBUS_TIMER0_CC0(0x3, 0x2) +#define TIMER0_CC0_PD3 SILABS_DBUS_TIMER0_CC0(0x3, 0x3) +#define TIMER0_CC1_PA0 SILABS_DBUS_TIMER0_CC1(0x0, 0x0) +#define TIMER0_CC1_PA1 SILABS_DBUS_TIMER0_CC1(0x0, 0x1) +#define TIMER0_CC1_PA2 SILABS_DBUS_TIMER0_CC1(0x0, 0x2) +#define TIMER0_CC1_PA3 SILABS_DBUS_TIMER0_CC1(0x0, 0x3) +#define TIMER0_CC1_PA4 SILABS_DBUS_TIMER0_CC1(0x0, 0x4) +#define TIMER0_CC1_PA5 SILABS_DBUS_TIMER0_CC1(0x0, 0x5) +#define TIMER0_CC1_PA6 SILABS_DBUS_TIMER0_CC1(0x0, 0x6) +#define TIMER0_CC1_PA7 SILABS_DBUS_TIMER0_CC1(0x0, 0x7) +#define TIMER0_CC1_PA8 SILABS_DBUS_TIMER0_CC1(0x0, 0x8) +#define TIMER0_CC1_PB0 SILABS_DBUS_TIMER0_CC1(0x1, 0x0) +#define TIMER0_CC1_PB1 SILABS_DBUS_TIMER0_CC1(0x1, 0x1) +#define TIMER0_CC1_PB2 SILABS_DBUS_TIMER0_CC1(0x1, 0x2) +#define TIMER0_CC1_PB3 SILABS_DBUS_TIMER0_CC1(0x1, 0x3) +#define TIMER0_CC1_PB4 SILABS_DBUS_TIMER0_CC1(0x1, 0x4) +#define TIMER0_CC1_PC0 SILABS_DBUS_TIMER0_CC1(0x2, 0x0) +#define TIMER0_CC1_PC1 SILABS_DBUS_TIMER0_CC1(0x2, 0x1) +#define TIMER0_CC1_PC2 SILABS_DBUS_TIMER0_CC1(0x2, 0x2) +#define TIMER0_CC1_PC3 SILABS_DBUS_TIMER0_CC1(0x2, 0x3) +#define TIMER0_CC1_PC4 SILABS_DBUS_TIMER0_CC1(0x2, 0x4) +#define TIMER0_CC1_PC5 SILABS_DBUS_TIMER0_CC1(0x2, 0x5) +#define TIMER0_CC1_PC6 SILABS_DBUS_TIMER0_CC1(0x2, 0x6) +#define TIMER0_CC1_PC7 SILABS_DBUS_TIMER0_CC1(0x2, 0x7) +#define TIMER0_CC1_PD0 SILABS_DBUS_TIMER0_CC1(0x3, 0x0) +#define TIMER0_CC1_PD1 SILABS_DBUS_TIMER0_CC1(0x3, 0x1) +#define TIMER0_CC1_PD2 SILABS_DBUS_TIMER0_CC1(0x3, 0x2) +#define TIMER0_CC1_PD3 SILABS_DBUS_TIMER0_CC1(0x3, 0x3) +#define TIMER0_CC2_PA0 SILABS_DBUS_TIMER0_CC2(0x0, 0x0) +#define TIMER0_CC2_PA1 SILABS_DBUS_TIMER0_CC2(0x0, 0x1) +#define TIMER0_CC2_PA2 SILABS_DBUS_TIMER0_CC2(0x0, 0x2) +#define TIMER0_CC2_PA3 SILABS_DBUS_TIMER0_CC2(0x0, 0x3) +#define TIMER0_CC2_PA4 SILABS_DBUS_TIMER0_CC2(0x0, 0x4) +#define TIMER0_CC2_PA5 SILABS_DBUS_TIMER0_CC2(0x0, 0x5) +#define TIMER0_CC2_PA6 SILABS_DBUS_TIMER0_CC2(0x0, 0x6) +#define TIMER0_CC2_PA7 SILABS_DBUS_TIMER0_CC2(0x0, 0x7) +#define TIMER0_CC2_PA8 SILABS_DBUS_TIMER0_CC2(0x0, 0x8) +#define TIMER0_CC2_PB0 SILABS_DBUS_TIMER0_CC2(0x1, 0x0) +#define TIMER0_CC2_PB1 SILABS_DBUS_TIMER0_CC2(0x1, 0x1) +#define TIMER0_CC2_PB2 SILABS_DBUS_TIMER0_CC2(0x1, 0x2) +#define TIMER0_CC2_PB3 SILABS_DBUS_TIMER0_CC2(0x1, 0x3) +#define TIMER0_CC2_PB4 SILABS_DBUS_TIMER0_CC2(0x1, 0x4) +#define TIMER0_CC2_PC0 SILABS_DBUS_TIMER0_CC2(0x2, 0x0) +#define TIMER0_CC2_PC1 SILABS_DBUS_TIMER0_CC2(0x2, 0x1) +#define TIMER0_CC2_PC2 SILABS_DBUS_TIMER0_CC2(0x2, 0x2) +#define TIMER0_CC2_PC3 SILABS_DBUS_TIMER0_CC2(0x2, 0x3) +#define TIMER0_CC2_PC4 SILABS_DBUS_TIMER0_CC2(0x2, 0x4) +#define TIMER0_CC2_PC5 SILABS_DBUS_TIMER0_CC2(0x2, 0x5) +#define TIMER0_CC2_PC6 SILABS_DBUS_TIMER0_CC2(0x2, 0x6) +#define TIMER0_CC2_PC7 SILABS_DBUS_TIMER0_CC2(0x2, 0x7) +#define TIMER0_CC2_PD0 SILABS_DBUS_TIMER0_CC2(0x3, 0x0) +#define TIMER0_CC2_PD1 SILABS_DBUS_TIMER0_CC2(0x3, 0x1) +#define TIMER0_CC2_PD2 SILABS_DBUS_TIMER0_CC2(0x3, 0x2) +#define TIMER0_CC2_PD3 SILABS_DBUS_TIMER0_CC2(0x3, 0x3) +#define TIMER0_CDTI0_PA0 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x0) +#define TIMER0_CDTI0_PA1 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x1) +#define TIMER0_CDTI0_PA2 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x2) +#define TIMER0_CDTI0_PA3 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x3) +#define TIMER0_CDTI0_PA4 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x4) +#define TIMER0_CDTI0_PA5 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x5) +#define TIMER0_CDTI0_PA6 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x6) +#define TIMER0_CDTI0_PA7 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x7) +#define TIMER0_CDTI0_PA8 SILABS_DBUS_TIMER0_CDTI0(0x0, 0x8) +#define TIMER0_CDTI0_PB0 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x0) +#define TIMER0_CDTI0_PB1 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x1) +#define TIMER0_CDTI0_PB2 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x2) +#define TIMER0_CDTI0_PB3 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x3) +#define TIMER0_CDTI0_PB4 SILABS_DBUS_TIMER0_CDTI0(0x1, 0x4) +#define TIMER0_CDTI0_PC0 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x0) +#define TIMER0_CDTI0_PC1 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x1) +#define TIMER0_CDTI0_PC2 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x2) +#define TIMER0_CDTI0_PC3 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x3) +#define TIMER0_CDTI0_PC4 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x4) +#define TIMER0_CDTI0_PC5 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x5) +#define TIMER0_CDTI0_PC6 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x6) +#define TIMER0_CDTI0_PC7 SILABS_DBUS_TIMER0_CDTI0(0x2, 0x7) +#define TIMER0_CDTI0_PD0 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x0) +#define TIMER0_CDTI0_PD1 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x1) +#define TIMER0_CDTI0_PD2 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x2) +#define TIMER0_CDTI0_PD3 SILABS_DBUS_TIMER0_CDTI0(0x3, 0x3) +#define TIMER0_CDTI1_PA0 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x0) +#define TIMER0_CDTI1_PA1 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x1) +#define TIMER0_CDTI1_PA2 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x2) +#define TIMER0_CDTI1_PA3 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x3) +#define TIMER0_CDTI1_PA4 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x4) +#define TIMER0_CDTI1_PA5 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x5) +#define TIMER0_CDTI1_PA6 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x6) +#define TIMER0_CDTI1_PA7 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x7) +#define TIMER0_CDTI1_PA8 SILABS_DBUS_TIMER0_CDTI1(0x0, 0x8) +#define TIMER0_CDTI1_PB0 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x0) +#define TIMER0_CDTI1_PB1 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x1) +#define TIMER0_CDTI1_PB2 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x2) +#define TIMER0_CDTI1_PB3 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x3) +#define TIMER0_CDTI1_PB4 SILABS_DBUS_TIMER0_CDTI1(0x1, 0x4) +#define TIMER0_CDTI1_PC0 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x0) +#define TIMER0_CDTI1_PC1 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x1) +#define TIMER0_CDTI1_PC2 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x2) +#define TIMER0_CDTI1_PC3 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x3) +#define TIMER0_CDTI1_PC4 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x4) +#define TIMER0_CDTI1_PC5 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x5) +#define TIMER0_CDTI1_PC6 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x6) +#define TIMER0_CDTI1_PC7 SILABS_DBUS_TIMER0_CDTI1(0x2, 0x7) +#define TIMER0_CDTI1_PD0 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x0) +#define TIMER0_CDTI1_PD1 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x1) +#define TIMER0_CDTI1_PD2 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x2) +#define TIMER0_CDTI1_PD3 SILABS_DBUS_TIMER0_CDTI1(0x3, 0x3) +#define TIMER0_CDTI2_PA0 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x0) +#define TIMER0_CDTI2_PA1 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x1) +#define TIMER0_CDTI2_PA2 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x2) +#define TIMER0_CDTI2_PA3 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x3) +#define TIMER0_CDTI2_PA4 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x4) +#define TIMER0_CDTI2_PA5 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x5) +#define TIMER0_CDTI2_PA6 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x6) +#define TIMER0_CDTI2_PA7 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x7) +#define TIMER0_CDTI2_PA8 SILABS_DBUS_TIMER0_CDTI2(0x0, 0x8) +#define TIMER0_CDTI2_PB0 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x0) +#define TIMER0_CDTI2_PB1 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x1) +#define TIMER0_CDTI2_PB2 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x2) +#define TIMER0_CDTI2_PB3 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x3) +#define TIMER0_CDTI2_PB4 SILABS_DBUS_TIMER0_CDTI2(0x1, 0x4) +#define TIMER0_CDTI2_PC0 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x0) +#define TIMER0_CDTI2_PC1 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x1) +#define TIMER0_CDTI2_PC2 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x2) +#define TIMER0_CDTI2_PC3 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x3) +#define TIMER0_CDTI2_PC4 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x4) +#define TIMER0_CDTI2_PC5 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x5) +#define TIMER0_CDTI2_PC6 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x6) +#define TIMER0_CDTI2_PC7 SILABS_DBUS_TIMER0_CDTI2(0x2, 0x7) +#define TIMER0_CDTI2_PD0 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x0) +#define TIMER0_CDTI2_PD1 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x1) +#define TIMER0_CDTI2_PD2 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x2) +#define TIMER0_CDTI2_PD3 SILABS_DBUS_TIMER0_CDTI2(0x3, 0x3) + +#define TIMER1_CC0_PA0 SILABS_DBUS_TIMER1_CC0(0x0, 0x0) +#define TIMER1_CC0_PA1 SILABS_DBUS_TIMER1_CC0(0x0, 0x1) +#define TIMER1_CC0_PA2 SILABS_DBUS_TIMER1_CC0(0x0, 0x2) +#define TIMER1_CC0_PA3 SILABS_DBUS_TIMER1_CC0(0x0, 0x3) +#define TIMER1_CC0_PA4 SILABS_DBUS_TIMER1_CC0(0x0, 0x4) +#define TIMER1_CC0_PA5 SILABS_DBUS_TIMER1_CC0(0x0, 0x5) +#define TIMER1_CC0_PA6 SILABS_DBUS_TIMER1_CC0(0x0, 0x6) +#define TIMER1_CC0_PA7 SILABS_DBUS_TIMER1_CC0(0x0, 0x7) +#define TIMER1_CC0_PA8 SILABS_DBUS_TIMER1_CC0(0x0, 0x8) +#define TIMER1_CC0_PB0 SILABS_DBUS_TIMER1_CC0(0x1, 0x0) +#define TIMER1_CC0_PB1 SILABS_DBUS_TIMER1_CC0(0x1, 0x1) +#define TIMER1_CC0_PB2 SILABS_DBUS_TIMER1_CC0(0x1, 0x2) +#define TIMER1_CC0_PB3 SILABS_DBUS_TIMER1_CC0(0x1, 0x3) +#define TIMER1_CC0_PB4 SILABS_DBUS_TIMER1_CC0(0x1, 0x4) +#define TIMER1_CC0_PC0 SILABS_DBUS_TIMER1_CC0(0x2, 0x0) +#define TIMER1_CC0_PC1 SILABS_DBUS_TIMER1_CC0(0x2, 0x1) +#define TIMER1_CC0_PC2 SILABS_DBUS_TIMER1_CC0(0x2, 0x2) +#define TIMER1_CC0_PC3 SILABS_DBUS_TIMER1_CC0(0x2, 0x3) +#define TIMER1_CC0_PC4 SILABS_DBUS_TIMER1_CC0(0x2, 0x4) +#define TIMER1_CC0_PC5 SILABS_DBUS_TIMER1_CC0(0x2, 0x5) +#define TIMER1_CC0_PC6 SILABS_DBUS_TIMER1_CC0(0x2, 0x6) +#define TIMER1_CC0_PC7 SILABS_DBUS_TIMER1_CC0(0x2, 0x7) +#define TIMER1_CC0_PD0 SILABS_DBUS_TIMER1_CC0(0x3, 0x0) +#define TIMER1_CC0_PD1 SILABS_DBUS_TIMER1_CC0(0x3, 0x1) +#define TIMER1_CC0_PD2 SILABS_DBUS_TIMER1_CC0(0x3, 0x2) +#define TIMER1_CC0_PD3 SILABS_DBUS_TIMER1_CC0(0x3, 0x3) +#define TIMER1_CC1_PA0 SILABS_DBUS_TIMER1_CC1(0x0, 0x0) +#define TIMER1_CC1_PA1 SILABS_DBUS_TIMER1_CC1(0x0, 0x1) +#define TIMER1_CC1_PA2 SILABS_DBUS_TIMER1_CC1(0x0, 0x2) +#define TIMER1_CC1_PA3 SILABS_DBUS_TIMER1_CC1(0x0, 0x3) +#define TIMER1_CC1_PA4 SILABS_DBUS_TIMER1_CC1(0x0, 0x4) +#define TIMER1_CC1_PA5 SILABS_DBUS_TIMER1_CC1(0x0, 0x5) +#define TIMER1_CC1_PA6 SILABS_DBUS_TIMER1_CC1(0x0, 0x6) +#define TIMER1_CC1_PA7 SILABS_DBUS_TIMER1_CC1(0x0, 0x7) +#define TIMER1_CC1_PA8 SILABS_DBUS_TIMER1_CC1(0x0, 0x8) +#define TIMER1_CC1_PB0 SILABS_DBUS_TIMER1_CC1(0x1, 0x0) +#define TIMER1_CC1_PB1 SILABS_DBUS_TIMER1_CC1(0x1, 0x1) +#define TIMER1_CC1_PB2 SILABS_DBUS_TIMER1_CC1(0x1, 0x2) +#define TIMER1_CC1_PB3 SILABS_DBUS_TIMER1_CC1(0x1, 0x3) +#define TIMER1_CC1_PB4 SILABS_DBUS_TIMER1_CC1(0x1, 0x4) +#define TIMER1_CC1_PC0 SILABS_DBUS_TIMER1_CC1(0x2, 0x0) +#define TIMER1_CC1_PC1 SILABS_DBUS_TIMER1_CC1(0x2, 0x1) +#define TIMER1_CC1_PC2 SILABS_DBUS_TIMER1_CC1(0x2, 0x2) +#define TIMER1_CC1_PC3 SILABS_DBUS_TIMER1_CC1(0x2, 0x3) +#define TIMER1_CC1_PC4 SILABS_DBUS_TIMER1_CC1(0x2, 0x4) +#define TIMER1_CC1_PC5 SILABS_DBUS_TIMER1_CC1(0x2, 0x5) +#define TIMER1_CC1_PC6 SILABS_DBUS_TIMER1_CC1(0x2, 0x6) +#define TIMER1_CC1_PC7 SILABS_DBUS_TIMER1_CC1(0x2, 0x7) +#define TIMER1_CC1_PD0 SILABS_DBUS_TIMER1_CC1(0x3, 0x0) +#define TIMER1_CC1_PD1 SILABS_DBUS_TIMER1_CC1(0x3, 0x1) +#define TIMER1_CC1_PD2 SILABS_DBUS_TIMER1_CC1(0x3, 0x2) +#define TIMER1_CC1_PD3 SILABS_DBUS_TIMER1_CC1(0x3, 0x3) +#define TIMER1_CC2_PA0 SILABS_DBUS_TIMER1_CC2(0x0, 0x0) +#define TIMER1_CC2_PA1 SILABS_DBUS_TIMER1_CC2(0x0, 0x1) +#define TIMER1_CC2_PA2 SILABS_DBUS_TIMER1_CC2(0x0, 0x2) +#define TIMER1_CC2_PA3 SILABS_DBUS_TIMER1_CC2(0x0, 0x3) +#define TIMER1_CC2_PA4 SILABS_DBUS_TIMER1_CC2(0x0, 0x4) +#define TIMER1_CC2_PA5 SILABS_DBUS_TIMER1_CC2(0x0, 0x5) +#define TIMER1_CC2_PA6 SILABS_DBUS_TIMER1_CC2(0x0, 0x6) +#define TIMER1_CC2_PA7 SILABS_DBUS_TIMER1_CC2(0x0, 0x7) +#define TIMER1_CC2_PA8 SILABS_DBUS_TIMER1_CC2(0x0, 0x8) +#define TIMER1_CC2_PB0 SILABS_DBUS_TIMER1_CC2(0x1, 0x0) +#define TIMER1_CC2_PB1 SILABS_DBUS_TIMER1_CC2(0x1, 0x1) +#define TIMER1_CC2_PB2 SILABS_DBUS_TIMER1_CC2(0x1, 0x2) +#define TIMER1_CC2_PB3 SILABS_DBUS_TIMER1_CC2(0x1, 0x3) +#define TIMER1_CC2_PB4 SILABS_DBUS_TIMER1_CC2(0x1, 0x4) +#define TIMER1_CC2_PC0 SILABS_DBUS_TIMER1_CC2(0x2, 0x0) +#define TIMER1_CC2_PC1 SILABS_DBUS_TIMER1_CC2(0x2, 0x1) +#define TIMER1_CC2_PC2 SILABS_DBUS_TIMER1_CC2(0x2, 0x2) +#define TIMER1_CC2_PC3 SILABS_DBUS_TIMER1_CC2(0x2, 0x3) +#define TIMER1_CC2_PC4 SILABS_DBUS_TIMER1_CC2(0x2, 0x4) +#define TIMER1_CC2_PC5 SILABS_DBUS_TIMER1_CC2(0x2, 0x5) +#define TIMER1_CC2_PC6 SILABS_DBUS_TIMER1_CC2(0x2, 0x6) +#define TIMER1_CC2_PC7 SILABS_DBUS_TIMER1_CC2(0x2, 0x7) +#define TIMER1_CC2_PD0 SILABS_DBUS_TIMER1_CC2(0x3, 0x0) +#define TIMER1_CC2_PD1 SILABS_DBUS_TIMER1_CC2(0x3, 0x1) +#define TIMER1_CC2_PD2 SILABS_DBUS_TIMER1_CC2(0x3, 0x2) +#define TIMER1_CC2_PD3 SILABS_DBUS_TIMER1_CC2(0x3, 0x3) +#define TIMER1_CDTI0_PA0 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x0) +#define TIMER1_CDTI0_PA1 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x1) +#define TIMER1_CDTI0_PA2 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x2) +#define TIMER1_CDTI0_PA3 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x3) +#define TIMER1_CDTI0_PA4 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x4) +#define TIMER1_CDTI0_PA5 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x5) +#define TIMER1_CDTI0_PA6 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x6) +#define TIMER1_CDTI0_PA7 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x7) +#define TIMER1_CDTI0_PA8 SILABS_DBUS_TIMER1_CDTI0(0x0, 0x8) +#define TIMER1_CDTI0_PB0 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x0) +#define TIMER1_CDTI0_PB1 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x1) +#define TIMER1_CDTI0_PB2 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x2) +#define TIMER1_CDTI0_PB3 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x3) +#define TIMER1_CDTI0_PB4 SILABS_DBUS_TIMER1_CDTI0(0x1, 0x4) +#define TIMER1_CDTI0_PC0 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x0) +#define TIMER1_CDTI0_PC1 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x1) +#define TIMER1_CDTI0_PC2 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x2) +#define TIMER1_CDTI0_PC3 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x3) +#define TIMER1_CDTI0_PC4 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x4) +#define TIMER1_CDTI0_PC5 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x5) +#define TIMER1_CDTI0_PC6 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x6) +#define TIMER1_CDTI0_PC7 SILABS_DBUS_TIMER1_CDTI0(0x2, 0x7) +#define TIMER1_CDTI0_PD0 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x0) +#define TIMER1_CDTI0_PD1 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x1) +#define TIMER1_CDTI0_PD2 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x2) +#define TIMER1_CDTI0_PD3 SILABS_DBUS_TIMER1_CDTI0(0x3, 0x3) +#define TIMER1_CDTI1_PA0 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x0) +#define TIMER1_CDTI1_PA1 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x1) +#define TIMER1_CDTI1_PA2 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x2) +#define TIMER1_CDTI1_PA3 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x3) +#define TIMER1_CDTI1_PA4 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x4) +#define TIMER1_CDTI1_PA5 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x5) +#define TIMER1_CDTI1_PA6 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x6) +#define TIMER1_CDTI1_PA7 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x7) +#define TIMER1_CDTI1_PA8 SILABS_DBUS_TIMER1_CDTI1(0x0, 0x8) +#define TIMER1_CDTI1_PB0 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x0) +#define TIMER1_CDTI1_PB1 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x1) +#define TIMER1_CDTI1_PB2 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x2) +#define TIMER1_CDTI1_PB3 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x3) +#define TIMER1_CDTI1_PB4 SILABS_DBUS_TIMER1_CDTI1(0x1, 0x4) +#define TIMER1_CDTI1_PC0 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x0) +#define TIMER1_CDTI1_PC1 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x1) +#define TIMER1_CDTI1_PC2 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x2) +#define TIMER1_CDTI1_PC3 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x3) +#define TIMER1_CDTI1_PC4 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x4) +#define TIMER1_CDTI1_PC5 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x5) +#define TIMER1_CDTI1_PC6 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x6) +#define TIMER1_CDTI1_PC7 SILABS_DBUS_TIMER1_CDTI1(0x2, 0x7) +#define TIMER1_CDTI1_PD0 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x0) +#define TIMER1_CDTI1_PD1 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x1) +#define TIMER1_CDTI1_PD2 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x2) +#define TIMER1_CDTI1_PD3 SILABS_DBUS_TIMER1_CDTI1(0x3, 0x3) +#define TIMER1_CDTI2_PA0 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x0) +#define TIMER1_CDTI2_PA1 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x1) +#define TIMER1_CDTI2_PA2 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x2) +#define TIMER1_CDTI2_PA3 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x3) +#define TIMER1_CDTI2_PA4 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x4) +#define TIMER1_CDTI2_PA5 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x5) +#define TIMER1_CDTI2_PA6 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x6) +#define TIMER1_CDTI2_PA7 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x7) +#define TIMER1_CDTI2_PA8 SILABS_DBUS_TIMER1_CDTI2(0x0, 0x8) +#define TIMER1_CDTI2_PB0 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x0) +#define TIMER1_CDTI2_PB1 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x1) +#define TIMER1_CDTI2_PB2 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x2) +#define TIMER1_CDTI2_PB3 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x3) +#define TIMER1_CDTI2_PB4 SILABS_DBUS_TIMER1_CDTI2(0x1, 0x4) +#define TIMER1_CDTI2_PC0 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x0) +#define TIMER1_CDTI2_PC1 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x1) +#define TIMER1_CDTI2_PC2 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x2) +#define TIMER1_CDTI2_PC3 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x3) +#define TIMER1_CDTI2_PC4 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x4) +#define TIMER1_CDTI2_PC5 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x5) +#define TIMER1_CDTI2_PC6 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x6) +#define TIMER1_CDTI2_PC7 SILABS_DBUS_TIMER1_CDTI2(0x2, 0x7) +#define TIMER1_CDTI2_PD0 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x0) +#define TIMER1_CDTI2_PD1 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x1) +#define TIMER1_CDTI2_PD2 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x2) +#define TIMER1_CDTI2_PD3 SILABS_DBUS_TIMER1_CDTI2(0x3, 0x3) + +#define TIMER2_CC0_PA0 SILABS_DBUS_TIMER2_CC0(0x0, 0x0) +#define TIMER2_CC0_PA1 SILABS_DBUS_TIMER2_CC0(0x0, 0x1) +#define TIMER2_CC0_PA2 SILABS_DBUS_TIMER2_CC0(0x0, 0x2) +#define TIMER2_CC0_PA3 SILABS_DBUS_TIMER2_CC0(0x0, 0x3) +#define TIMER2_CC0_PA4 SILABS_DBUS_TIMER2_CC0(0x0, 0x4) +#define TIMER2_CC0_PA5 SILABS_DBUS_TIMER2_CC0(0x0, 0x5) +#define TIMER2_CC0_PA6 SILABS_DBUS_TIMER2_CC0(0x0, 0x6) +#define TIMER2_CC0_PA7 SILABS_DBUS_TIMER2_CC0(0x0, 0x7) +#define TIMER2_CC0_PA8 SILABS_DBUS_TIMER2_CC0(0x0, 0x8) +#define TIMER2_CC0_PB0 SILABS_DBUS_TIMER2_CC0(0x1, 0x0) +#define TIMER2_CC0_PB1 SILABS_DBUS_TIMER2_CC0(0x1, 0x1) +#define TIMER2_CC0_PB2 SILABS_DBUS_TIMER2_CC0(0x1, 0x2) +#define TIMER2_CC0_PB3 SILABS_DBUS_TIMER2_CC0(0x1, 0x3) +#define TIMER2_CC0_PB4 SILABS_DBUS_TIMER2_CC0(0x1, 0x4) +#define TIMER2_CC1_PA0 SILABS_DBUS_TIMER2_CC1(0x0, 0x0) +#define TIMER2_CC1_PA1 SILABS_DBUS_TIMER2_CC1(0x0, 0x1) +#define TIMER2_CC1_PA2 SILABS_DBUS_TIMER2_CC1(0x0, 0x2) +#define TIMER2_CC1_PA3 SILABS_DBUS_TIMER2_CC1(0x0, 0x3) +#define TIMER2_CC1_PA4 SILABS_DBUS_TIMER2_CC1(0x0, 0x4) +#define TIMER2_CC1_PA5 SILABS_DBUS_TIMER2_CC1(0x0, 0x5) +#define TIMER2_CC1_PA6 SILABS_DBUS_TIMER2_CC1(0x0, 0x6) +#define TIMER2_CC1_PA7 SILABS_DBUS_TIMER2_CC1(0x0, 0x7) +#define TIMER2_CC1_PA8 SILABS_DBUS_TIMER2_CC1(0x0, 0x8) +#define TIMER2_CC1_PB0 SILABS_DBUS_TIMER2_CC1(0x1, 0x0) +#define TIMER2_CC1_PB1 SILABS_DBUS_TIMER2_CC1(0x1, 0x1) +#define TIMER2_CC1_PB2 SILABS_DBUS_TIMER2_CC1(0x1, 0x2) +#define TIMER2_CC1_PB3 SILABS_DBUS_TIMER2_CC1(0x1, 0x3) +#define TIMER2_CC1_PB4 SILABS_DBUS_TIMER2_CC1(0x1, 0x4) +#define TIMER2_CC2_PA0 SILABS_DBUS_TIMER2_CC2(0x0, 0x0) +#define TIMER2_CC2_PA1 SILABS_DBUS_TIMER2_CC2(0x0, 0x1) +#define TIMER2_CC2_PA2 SILABS_DBUS_TIMER2_CC2(0x0, 0x2) +#define TIMER2_CC2_PA3 SILABS_DBUS_TIMER2_CC2(0x0, 0x3) +#define TIMER2_CC2_PA4 SILABS_DBUS_TIMER2_CC2(0x0, 0x4) +#define TIMER2_CC2_PA5 SILABS_DBUS_TIMER2_CC2(0x0, 0x5) +#define TIMER2_CC2_PA6 SILABS_DBUS_TIMER2_CC2(0x0, 0x6) +#define TIMER2_CC2_PA7 SILABS_DBUS_TIMER2_CC2(0x0, 0x7) +#define TIMER2_CC2_PA8 SILABS_DBUS_TIMER2_CC2(0x0, 0x8) +#define TIMER2_CC2_PB0 SILABS_DBUS_TIMER2_CC2(0x1, 0x0) +#define TIMER2_CC2_PB1 SILABS_DBUS_TIMER2_CC2(0x1, 0x1) +#define TIMER2_CC2_PB2 SILABS_DBUS_TIMER2_CC2(0x1, 0x2) +#define TIMER2_CC2_PB3 SILABS_DBUS_TIMER2_CC2(0x1, 0x3) +#define TIMER2_CC2_PB4 SILABS_DBUS_TIMER2_CC2(0x1, 0x4) +#define TIMER2_CDTI0_PA0 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x0) +#define TIMER2_CDTI0_PA1 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x1) +#define TIMER2_CDTI0_PA2 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x2) +#define TIMER2_CDTI0_PA3 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x3) +#define TIMER2_CDTI0_PA4 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x4) +#define TIMER2_CDTI0_PA5 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x5) +#define TIMER2_CDTI0_PA6 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x6) +#define TIMER2_CDTI0_PA7 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x7) +#define TIMER2_CDTI0_PA8 SILABS_DBUS_TIMER2_CDTI0(0x0, 0x8) +#define TIMER2_CDTI0_PB0 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x0) +#define TIMER2_CDTI0_PB1 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x1) +#define TIMER2_CDTI0_PB2 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x2) +#define TIMER2_CDTI0_PB3 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x3) +#define TIMER2_CDTI0_PB4 SILABS_DBUS_TIMER2_CDTI0(0x1, 0x4) +#define TIMER2_CDTI1_PA0 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x0) +#define TIMER2_CDTI1_PA1 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x1) +#define TIMER2_CDTI1_PA2 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x2) +#define TIMER2_CDTI1_PA3 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x3) +#define TIMER2_CDTI1_PA4 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x4) +#define TIMER2_CDTI1_PA5 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x5) +#define TIMER2_CDTI1_PA6 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x6) +#define TIMER2_CDTI1_PA7 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x7) +#define TIMER2_CDTI1_PA8 SILABS_DBUS_TIMER2_CDTI1(0x0, 0x8) +#define TIMER2_CDTI1_PB0 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x0) +#define TIMER2_CDTI1_PB1 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x1) +#define TIMER2_CDTI1_PB2 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x2) +#define TIMER2_CDTI1_PB3 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x3) +#define TIMER2_CDTI1_PB4 SILABS_DBUS_TIMER2_CDTI1(0x1, 0x4) +#define TIMER2_CDTI2_PA0 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x0) +#define TIMER2_CDTI2_PA1 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x1) +#define TIMER2_CDTI2_PA2 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x2) +#define TIMER2_CDTI2_PA3 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x3) +#define TIMER2_CDTI2_PA4 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x4) +#define TIMER2_CDTI2_PA5 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x5) +#define TIMER2_CDTI2_PA6 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x6) +#define TIMER2_CDTI2_PA7 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x7) +#define TIMER2_CDTI2_PA8 SILABS_DBUS_TIMER2_CDTI2(0x0, 0x8) +#define TIMER2_CDTI2_PB0 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x0) +#define TIMER2_CDTI2_PB1 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x1) +#define TIMER2_CDTI2_PB2 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x2) +#define TIMER2_CDTI2_PB3 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x3) +#define TIMER2_CDTI2_PB4 SILABS_DBUS_TIMER2_CDTI2(0x1, 0x4) + +#define TIMER3_CC0_PC0 SILABS_DBUS_TIMER3_CC0(0x2, 0x0) +#define TIMER3_CC0_PC1 SILABS_DBUS_TIMER3_CC0(0x2, 0x1) +#define TIMER3_CC0_PC2 SILABS_DBUS_TIMER3_CC0(0x2, 0x2) +#define TIMER3_CC0_PC3 SILABS_DBUS_TIMER3_CC0(0x2, 0x3) +#define TIMER3_CC0_PC4 SILABS_DBUS_TIMER3_CC0(0x2, 0x4) +#define TIMER3_CC0_PC5 SILABS_DBUS_TIMER3_CC0(0x2, 0x5) +#define TIMER3_CC0_PC6 SILABS_DBUS_TIMER3_CC0(0x2, 0x6) +#define TIMER3_CC0_PC7 SILABS_DBUS_TIMER3_CC0(0x2, 0x7) +#define TIMER3_CC0_PD0 SILABS_DBUS_TIMER3_CC0(0x3, 0x0) +#define TIMER3_CC0_PD1 SILABS_DBUS_TIMER3_CC0(0x3, 0x1) +#define TIMER3_CC0_PD2 SILABS_DBUS_TIMER3_CC0(0x3, 0x2) +#define TIMER3_CC0_PD3 SILABS_DBUS_TIMER3_CC0(0x3, 0x3) +#define TIMER3_CC1_PC0 SILABS_DBUS_TIMER3_CC1(0x2, 0x0) +#define TIMER3_CC1_PC1 SILABS_DBUS_TIMER3_CC1(0x2, 0x1) +#define TIMER3_CC1_PC2 SILABS_DBUS_TIMER3_CC1(0x2, 0x2) +#define TIMER3_CC1_PC3 SILABS_DBUS_TIMER3_CC1(0x2, 0x3) +#define TIMER3_CC1_PC4 SILABS_DBUS_TIMER3_CC1(0x2, 0x4) +#define TIMER3_CC1_PC5 SILABS_DBUS_TIMER3_CC1(0x2, 0x5) +#define TIMER3_CC1_PC6 SILABS_DBUS_TIMER3_CC1(0x2, 0x6) +#define TIMER3_CC1_PC7 SILABS_DBUS_TIMER3_CC1(0x2, 0x7) +#define TIMER3_CC1_PD0 SILABS_DBUS_TIMER3_CC1(0x3, 0x0) +#define TIMER3_CC1_PD1 SILABS_DBUS_TIMER3_CC1(0x3, 0x1) +#define TIMER3_CC1_PD2 SILABS_DBUS_TIMER3_CC1(0x3, 0x2) +#define TIMER3_CC1_PD3 SILABS_DBUS_TIMER3_CC1(0x3, 0x3) +#define TIMER3_CC2_PC0 SILABS_DBUS_TIMER3_CC2(0x2, 0x0) +#define TIMER3_CC2_PC1 SILABS_DBUS_TIMER3_CC2(0x2, 0x1) +#define TIMER3_CC2_PC2 SILABS_DBUS_TIMER3_CC2(0x2, 0x2) +#define TIMER3_CC2_PC3 SILABS_DBUS_TIMER3_CC2(0x2, 0x3) +#define TIMER3_CC2_PC4 SILABS_DBUS_TIMER3_CC2(0x2, 0x4) +#define TIMER3_CC2_PC5 SILABS_DBUS_TIMER3_CC2(0x2, 0x5) +#define TIMER3_CC2_PC6 SILABS_DBUS_TIMER3_CC2(0x2, 0x6) +#define TIMER3_CC2_PC7 SILABS_DBUS_TIMER3_CC2(0x2, 0x7) +#define TIMER3_CC2_PD0 SILABS_DBUS_TIMER3_CC2(0x3, 0x0) +#define TIMER3_CC2_PD1 SILABS_DBUS_TIMER3_CC2(0x3, 0x1) +#define TIMER3_CC2_PD2 SILABS_DBUS_TIMER3_CC2(0x3, 0x2) +#define TIMER3_CC2_PD3 SILABS_DBUS_TIMER3_CC2(0x3, 0x3) +#define TIMER3_CDTI0_PC0 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x0) +#define TIMER3_CDTI0_PC1 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x1) +#define TIMER3_CDTI0_PC2 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x2) +#define TIMER3_CDTI0_PC3 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x3) +#define TIMER3_CDTI0_PC4 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x4) +#define TIMER3_CDTI0_PC5 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x5) +#define TIMER3_CDTI0_PC6 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x6) +#define TIMER3_CDTI0_PC7 SILABS_DBUS_TIMER3_CDTI0(0x2, 0x7) +#define TIMER3_CDTI0_PD0 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x0) +#define TIMER3_CDTI0_PD1 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x1) +#define TIMER3_CDTI0_PD2 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x2) +#define TIMER3_CDTI0_PD3 SILABS_DBUS_TIMER3_CDTI0(0x3, 0x3) +#define TIMER3_CDTI1_PC0 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x0) +#define TIMER3_CDTI1_PC1 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x1) +#define TIMER3_CDTI1_PC2 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x2) +#define TIMER3_CDTI1_PC3 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x3) +#define TIMER3_CDTI1_PC4 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x4) +#define TIMER3_CDTI1_PC5 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x5) +#define TIMER3_CDTI1_PC6 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x6) +#define TIMER3_CDTI1_PC7 SILABS_DBUS_TIMER3_CDTI1(0x2, 0x7) +#define TIMER3_CDTI1_PD0 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x0) +#define TIMER3_CDTI1_PD1 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x1) +#define TIMER3_CDTI1_PD2 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x2) +#define TIMER3_CDTI1_PD3 SILABS_DBUS_TIMER3_CDTI1(0x3, 0x3) +#define TIMER3_CDTI2_PC0 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x0) +#define TIMER3_CDTI2_PC1 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x1) +#define TIMER3_CDTI2_PC2 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x2) +#define TIMER3_CDTI2_PC3 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x3) +#define TIMER3_CDTI2_PC4 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x4) +#define TIMER3_CDTI2_PC5 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x5) +#define TIMER3_CDTI2_PC6 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x6) +#define TIMER3_CDTI2_PC7 SILABS_DBUS_TIMER3_CDTI2(0x2, 0x7) +#define TIMER3_CDTI2_PD0 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x0) +#define TIMER3_CDTI2_PD1 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x1) +#define TIMER3_CDTI2_PD2 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x2) +#define TIMER3_CDTI2_PD3 SILABS_DBUS_TIMER3_CDTI2(0x3, 0x3) + +#define TIMER4_CC0_PA0 SILABS_DBUS_TIMER4_CC0(0x0, 0x0) +#define TIMER4_CC0_PA1 SILABS_DBUS_TIMER4_CC0(0x0, 0x1) +#define TIMER4_CC0_PA2 SILABS_DBUS_TIMER4_CC0(0x0, 0x2) +#define TIMER4_CC0_PA3 SILABS_DBUS_TIMER4_CC0(0x0, 0x3) +#define TIMER4_CC0_PA4 SILABS_DBUS_TIMER4_CC0(0x0, 0x4) +#define TIMER4_CC0_PA5 SILABS_DBUS_TIMER4_CC0(0x0, 0x5) +#define TIMER4_CC0_PA6 SILABS_DBUS_TIMER4_CC0(0x0, 0x6) +#define TIMER4_CC0_PA7 SILABS_DBUS_TIMER4_CC0(0x0, 0x7) +#define TIMER4_CC0_PA8 SILABS_DBUS_TIMER4_CC0(0x0, 0x8) +#define TIMER4_CC0_PB0 SILABS_DBUS_TIMER4_CC0(0x1, 0x0) +#define TIMER4_CC0_PB1 SILABS_DBUS_TIMER4_CC0(0x1, 0x1) +#define TIMER4_CC0_PB2 SILABS_DBUS_TIMER4_CC0(0x1, 0x2) +#define TIMER4_CC0_PB3 SILABS_DBUS_TIMER4_CC0(0x1, 0x3) +#define TIMER4_CC0_PB4 SILABS_DBUS_TIMER4_CC0(0x1, 0x4) +#define TIMER4_CC1_PA0 SILABS_DBUS_TIMER4_CC1(0x0, 0x0) +#define TIMER4_CC1_PA1 SILABS_DBUS_TIMER4_CC1(0x0, 0x1) +#define TIMER4_CC1_PA2 SILABS_DBUS_TIMER4_CC1(0x0, 0x2) +#define TIMER4_CC1_PA3 SILABS_DBUS_TIMER4_CC1(0x0, 0x3) +#define TIMER4_CC1_PA4 SILABS_DBUS_TIMER4_CC1(0x0, 0x4) +#define TIMER4_CC1_PA5 SILABS_DBUS_TIMER4_CC1(0x0, 0x5) +#define TIMER4_CC1_PA6 SILABS_DBUS_TIMER4_CC1(0x0, 0x6) +#define TIMER4_CC1_PA7 SILABS_DBUS_TIMER4_CC1(0x0, 0x7) +#define TIMER4_CC1_PA8 SILABS_DBUS_TIMER4_CC1(0x0, 0x8) +#define TIMER4_CC1_PB0 SILABS_DBUS_TIMER4_CC1(0x1, 0x0) +#define TIMER4_CC1_PB1 SILABS_DBUS_TIMER4_CC1(0x1, 0x1) +#define TIMER4_CC1_PB2 SILABS_DBUS_TIMER4_CC1(0x1, 0x2) +#define TIMER4_CC1_PB3 SILABS_DBUS_TIMER4_CC1(0x1, 0x3) +#define TIMER4_CC1_PB4 SILABS_DBUS_TIMER4_CC1(0x1, 0x4) +#define TIMER4_CC2_PA0 SILABS_DBUS_TIMER4_CC2(0x0, 0x0) +#define TIMER4_CC2_PA1 SILABS_DBUS_TIMER4_CC2(0x0, 0x1) +#define TIMER4_CC2_PA2 SILABS_DBUS_TIMER4_CC2(0x0, 0x2) +#define TIMER4_CC2_PA3 SILABS_DBUS_TIMER4_CC2(0x0, 0x3) +#define TIMER4_CC2_PA4 SILABS_DBUS_TIMER4_CC2(0x0, 0x4) +#define TIMER4_CC2_PA5 SILABS_DBUS_TIMER4_CC2(0x0, 0x5) +#define TIMER4_CC2_PA6 SILABS_DBUS_TIMER4_CC2(0x0, 0x6) +#define TIMER4_CC2_PA7 SILABS_DBUS_TIMER4_CC2(0x0, 0x7) +#define TIMER4_CC2_PA8 SILABS_DBUS_TIMER4_CC2(0x0, 0x8) +#define TIMER4_CC2_PB0 SILABS_DBUS_TIMER4_CC2(0x1, 0x0) +#define TIMER4_CC2_PB1 SILABS_DBUS_TIMER4_CC2(0x1, 0x1) +#define TIMER4_CC2_PB2 SILABS_DBUS_TIMER4_CC2(0x1, 0x2) +#define TIMER4_CC2_PB3 SILABS_DBUS_TIMER4_CC2(0x1, 0x3) +#define TIMER4_CC2_PB4 SILABS_DBUS_TIMER4_CC2(0x1, 0x4) +#define TIMER4_CDTI0_PA0 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x0) +#define TIMER4_CDTI0_PA1 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x1) +#define TIMER4_CDTI0_PA2 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x2) +#define TIMER4_CDTI0_PA3 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x3) +#define TIMER4_CDTI0_PA4 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x4) +#define TIMER4_CDTI0_PA5 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x5) +#define TIMER4_CDTI0_PA6 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x6) +#define TIMER4_CDTI0_PA7 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x7) +#define TIMER4_CDTI0_PA8 SILABS_DBUS_TIMER4_CDTI0(0x0, 0x8) +#define TIMER4_CDTI0_PB0 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x0) +#define TIMER4_CDTI0_PB1 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x1) +#define TIMER4_CDTI0_PB2 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x2) +#define TIMER4_CDTI0_PB3 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x3) +#define TIMER4_CDTI0_PB4 SILABS_DBUS_TIMER4_CDTI0(0x1, 0x4) +#define TIMER4_CDTI1_PA0 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x0) +#define TIMER4_CDTI1_PA1 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x1) +#define TIMER4_CDTI1_PA2 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x2) +#define TIMER4_CDTI1_PA3 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x3) +#define TIMER4_CDTI1_PA4 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x4) +#define TIMER4_CDTI1_PA5 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x5) +#define TIMER4_CDTI1_PA6 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x6) +#define TIMER4_CDTI1_PA7 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x7) +#define TIMER4_CDTI1_PA8 SILABS_DBUS_TIMER4_CDTI1(0x0, 0x8) +#define TIMER4_CDTI1_PB0 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x0) +#define TIMER4_CDTI1_PB1 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x1) +#define TIMER4_CDTI1_PB2 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x2) +#define TIMER4_CDTI1_PB3 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x3) +#define TIMER4_CDTI1_PB4 SILABS_DBUS_TIMER4_CDTI1(0x1, 0x4) +#define TIMER4_CDTI2_PA0 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x0) +#define TIMER4_CDTI2_PA1 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x1) +#define TIMER4_CDTI2_PA2 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x2) +#define TIMER4_CDTI2_PA3 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x3) +#define TIMER4_CDTI2_PA4 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x4) +#define TIMER4_CDTI2_PA5 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x5) +#define TIMER4_CDTI2_PA6 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x6) +#define TIMER4_CDTI2_PA7 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x7) +#define TIMER4_CDTI2_PA8 SILABS_DBUS_TIMER4_CDTI2(0x0, 0x8) +#define TIMER4_CDTI2_PB0 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x0) +#define TIMER4_CDTI2_PB1 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x1) +#define TIMER4_CDTI2_PB2 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x2) +#define TIMER4_CDTI2_PB3 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x3) +#define TIMER4_CDTI2_PB4 SILABS_DBUS_TIMER4_CDTI2(0x1, 0x4) + +#define USART0_CS_PA0 SILABS_DBUS_USART0_CS(0x0, 0x0) +#define USART0_CS_PA1 SILABS_DBUS_USART0_CS(0x0, 0x1) +#define USART0_CS_PA2 SILABS_DBUS_USART0_CS(0x0, 0x2) +#define USART0_CS_PA3 SILABS_DBUS_USART0_CS(0x0, 0x3) +#define USART0_CS_PA4 SILABS_DBUS_USART0_CS(0x0, 0x4) +#define USART0_CS_PA5 SILABS_DBUS_USART0_CS(0x0, 0x5) +#define USART0_CS_PA6 SILABS_DBUS_USART0_CS(0x0, 0x6) +#define USART0_CS_PA7 SILABS_DBUS_USART0_CS(0x0, 0x7) +#define USART0_CS_PA8 SILABS_DBUS_USART0_CS(0x0, 0x8) +#define USART0_CS_PB0 SILABS_DBUS_USART0_CS(0x1, 0x0) +#define USART0_CS_PB1 SILABS_DBUS_USART0_CS(0x1, 0x1) +#define USART0_CS_PB2 SILABS_DBUS_USART0_CS(0x1, 0x2) +#define USART0_CS_PB3 SILABS_DBUS_USART0_CS(0x1, 0x3) +#define USART0_CS_PB4 SILABS_DBUS_USART0_CS(0x1, 0x4) +#define USART0_CS_PC0 SILABS_DBUS_USART0_CS(0x2, 0x0) +#define USART0_CS_PC1 SILABS_DBUS_USART0_CS(0x2, 0x1) +#define USART0_CS_PC2 SILABS_DBUS_USART0_CS(0x2, 0x2) +#define USART0_CS_PC3 SILABS_DBUS_USART0_CS(0x2, 0x3) +#define USART0_CS_PC4 SILABS_DBUS_USART0_CS(0x2, 0x4) +#define USART0_CS_PC5 SILABS_DBUS_USART0_CS(0x2, 0x5) +#define USART0_CS_PC6 SILABS_DBUS_USART0_CS(0x2, 0x6) +#define USART0_CS_PC7 SILABS_DBUS_USART0_CS(0x2, 0x7) +#define USART0_CS_PD0 SILABS_DBUS_USART0_CS(0x3, 0x0) +#define USART0_CS_PD1 SILABS_DBUS_USART0_CS(0x3, 0x1) +#define USART0_CS_PD2 SILABS_DBUS_USART0_CS(0x3, 0x2) +#define USART0_CS_PD3 SILABS_DBUS_USART0_CS(0x3, 0x3) +#define USART0_RTS_PA0 SILABS_DBUS_USART0_RTS(0x0, 0x0) +#define USART0_RTS_PA1 SILABS_DBUS_USART0_RTS(0x0, 0x1) +#define USART0_RTS_PA2 SILABS_DBUS_USART0_RTS(0x0, 0x2) +#define USART0_RTS_PA3 SILABS_DBUS_USART0_RTS(0x0, 0x3) +#define USART0_RTS_PA4 SILABS_DBUS_USART0_RTS(0x0, 0x4) +#define USART0_RTS_PA5 SILABS_DBUS_USART0_RTS(0x0, 0x5) +#define USART0_RTS_PA6 SILABS_DBUS_USART0_RTS(0x0, 0x6) +#define USART0_RTS_PA7 SILABS_DBUS_USART0_RTS(0x0, 0x7) +#define USART0_RTS_PA8 SILABS_DBUS_USART0_RTS(0x0, 0x8) +#define USART0_RTS_PB0 SILABS_DBUS_USART0_RTS(0x1, 0x0) +#define USART0_RTS_PB1 SILABS_DBUS_USART0_RTS(0x1, 0x1) +#define USART0_RTS_PB2 SILABS_DBUS_USART0_RTS(0x1, 0x2) +#define USART0_RTS_PB3 SILABS_DBUS_USART0_RTS(0x1, 0x3) +#define USART0_RTS_PB4 SILABS_DBUS_USART0_RTS(0x1, 0x4) +#define USART0_RTS_PC0 SILABS_DBUS_USART0_RTS(0x2, 0x0) +#define USART0_RTS_PC1 SILABS_DBUS_USART0_RTS(0x2, 0x1) +#define USART0_RTS_PC2 SILABS_DBUS_USART0_RTS(0x2, 0x2) +#define USART0_RTS_PC3 SILABS_DBUS_USART0_RTS(0x2, 0x3) +#define USART0_RTS_PC4 SILABS_DBUS_USART0_RTS(0x2, 0x4) +#define USART0_RTS_PC5 SILABS_DBUS_USART0_RTS(0x2, 0x5) +#define USART0_RTS_PC6 SILABS_DBUS_USART0_RTS(0x2, 0x6) +#define USART0_RTS_PC7 SILABS_DBUS_USART0_RTS(0x2, 0x7) +#define USART0_RTS_PD0 SILABS_DBUS_USART0_RTS(0x3, 0x0) +#define USART0_RTS_PD1 SILABS_DBUS_USART0_RTS(0x3, 0x1) +#define USART0_RTS_PD2 SILABS_DBUS_USART0_RTS(0x3, 0x2) +#define USART0_RTS_PD3 SILABS_DBUS_USART0_RTS(0x3, 0x3) +#define USART0_RX_PA0 SILABS_DBUS_USART0_RX(0x0, 0x0) +#define USART0_RX_PA1 SILABS_DBUS_USART0_RX(0x0, 0x1) +#define USART0_RX_PA2 SILABS_DBUS_USART0_RX(0x0, 0x2) +#define USART0_RX_PA3 SILABS_DBUS_USART0_RX(0x0, 0x3) +#define USART0_RX_PA4 SILABS_DBUS_USART0_RX(0x0, 0x4) +#define USART0_RX_PA5 SILABS_DBUS_USART0_RX(0x0, 0x5) +#define USART0_RX_PA6 SILABS_DBUS_USART0_RX(0x0, 0x6) +#define USART0_RX_PA7 SILABS_DBUS_USART0_RX(0x0, 0x7) +#define USART0_RX_PA8 SILABS_DBUS_USART0_RX(0x0, 0x8) +#define USART0_RX_PB0 SILABS_DBUS_USART0_RX(0x1, 0x0) +#define USART0_RX_PB1 SILABS_DBUS_USART0_RX(0x1, 0x1) +#define USART0_RX_PB2 SILABS_DBUS_USART0_RX(0x1, 0x2) +#define USART0_RX_PB3 SILABS_DBUS_USART0_RX(0x1, 0x3) +#define USART0_RX_PB4 SILABS_DBUS_USART0_RX(0x1, 0x4) +#define USART0_RX_PC0 SILABS_DBUS_USART0_RX(0x2, 0x0) +#define USART0_RX_PC1 SILABS_DBUS_USART0_RX(0x2, 0x1) +#define USART0_RX_PC2 SILABS_DBUS_USART0_RX(0x2, 0x2) +#define USART0_RX_PC3 SILABS_DBUS_USART0_RX(0x2, 0x3) +#define USART0_RX_PC4 SILABS_DBUS_USART0_RX(0x2, 0x4) +#define USART0_RX_PC5 SILABS_DBUS_USART0_RX(0x2, 0x5) +#define USART0_RX_PC6 SILABS_DBUS_USART0_RX(0x2, 0x6) +#define USART0_RX_PC7 SILABS_DBUS_USART0_RX(0x2, 0x7) +#define USART0_RX_PD0 SILABS_DBUS_USART0_RX(0x3, 0x0) +#define USART0_RX_PD1 SILABS_DBUS_USART0_RX(0x3, 0x1) +#define USART0_RX_PD2 SILABS_DBUS_USART0_RX(0x3, 0x2) +#define USART0_RX_PD3 SILABS_DBUS_USART0_RX(0x3, 0x3) +#define USART0_CLK_PA0 SILABS_DBUS_USART0_CLK(0x0, 0x0) +#define USART0_CLK_PA1 SILABS_DBUS_USART0_CLK(0x0, 0x1) +#define USART0_CLK_PA2 SILABS_DBUS_USART0_CLK(0x0, 0x2) +#define USART0_CLK_PA3 SILABS_DBUS_USART0_CLK(0x0, 0x3) +#define USART0_CLK_PA4 SILABS_DBUS_USART0_CLK(0x0, 0x4) +#define USART0_CLK_PA5 SILABS_DBUS_USART0_CLK(0x0, 0x5) +#define USART0_CLK_PA6 SILABS_DBUS_USART0_CLK(0x0, 0x6) +#define USART0_CLK_PA7 SILABS_DBUS_USART0_CLK(0x0, 0x7) +#define USART0_CLK_PA8 SILABS_DBUS_USART0_CLK(0x0, 0x8) +#define USART0_CLK_PB0 SILABS_DBUS_USART0_CLK(0x1, 0x0) +#define USART0_CLK_PB1 SILABS_DBUS_USART0_CLK(0x1, 0x1) +#define USART0_CLK_PB2 SILABS_DBUS_USART0_CLK(0x1, 0x2) +#define USART0_CLK_PB3 SILABS_DBUS_USART0_CLK(0x1, 0x3) +#define USART0_CLK_PB4 SILABS_DBUS_USART0_CLK(0x1, 0x4) +#define USART0_CLK_PC0 SILABS_DBUS_USART0_CLK(0x2, 0x0) +#define USART0_CLK_PC1 SILABS_DBUS_USART0_CLK(0x2, 0x1) +#define USART0_CLK_PC2 SILABS_DBUS_USART0_CLK(0x2, 0x2) +#define USART0_CLK_PC3 SILABS_DBUS_USART0_CLK(0x2, 0x3) +#define USART0_CLK_PC4 SILABS_DBUS_USART0_CLK(0x2, 0x4) +#define USART0_CLK_PC5 SILABS_DBUS_USART0_CLK(0x2, 0x5) +#define USART0_CLK_PC6 SILABS_DBUS_USART0_CLK(0x2, 0x6) +#define USART0_CLK_PC7 SILABS_DBUS_USART0_CLK(0x2, 0x7) +#define USART0_CLK_PD0 SILABS_DBUS_USART0_CLK(0x3, 0x0) +#define USART0_CLK_PD1 SILABS_DBUS_USART0_CLK(0x3, 0x1) +#define USART0_CLK_PD2 SILABS_DBUS_USART0_CLK(0x3, 0x2) +#define USART0_CLK_PD3 SILABS_DBUS_USART0_CLK(0x3, 0x3) +#define USART0_TX_PA0 SILABS_DBUS_USART0_TX(0x0, 0x0) +#define USART0_TX_PA1 SILABS_DBUS_USART0_TX(0x0, 0x1) +#define USART0_TX_PA2 SILABS_DBUS_USART0_TX(0x0, 0x2) +#define USART0_TX_PA3 SILABS_DBUS_USART0_TX(0x0, 0x3) +#define USART0_TX_PA4 SILABS_DBUS_USART0_TX(0x0, 0x4) +#define USART0_TX_PA5 SILABS_DBUS_USART0_TX(0x0, 0x5) +#define USART0_TX_PA6 SILABS_DBUS_USART0_TX(0x0, 0x6) +#define USART0_TX_PA7 SILABS_DBUS_USART0_TX(0x0, 0x7) +#define USART0_TX_PA8 SILABS_DBUS_USART0_TX(0x0, 0x8) +#define USART0_TX_PB0 SILABS_DBUS_USART0_TX(0x1, 0x0) +#define USART0_TX_PB1 SILABS_DBUS_USART0_TX(0x1, 0x1) +#define USART0_TX_PB2 SILABS_DBUS_USART0_TX(0x1, 0x2) +#define USART0_TX_PB3 SILABS_DBUS_USART0_TX(0x1, 0x3) +#define USART0_TX_PB4 SILABS_DBUS_USART0_TX(0x1, 0x4) +#define USART0_TX_PC0 SILABS_DBUS_USART0_TX(0x2, 0x0) +#define USART0_TX_PC1 SILABS_DBUS_USART0_TX(0x2, 0x1) +#define USART0_TX_PC2 SILABS_DBUS_USART0_TX(0x2, 0x2) +#define USART0_TX_PC3 SILABS_DBUS_USART0_TX(0x2, 0x3) +#define USART0_TX_PC4 SILABS_DBUS_USART0_TX(0x2, 0x4) +#define USART0_TX_PC5 SILABS_DBUS_USART0_TX(0x2, 0x5) +#define USART0_TX_PC6 SILABS_DBUS_USART0_TX(0x2, 0x6) +#define USART0_TX_PC7 SILABS_DBUS_USART0_TX(0x2, 0x7) +#define USART0_TX_PD0 SILABS_DBUS_USART0_TX(0x3, 0x0) +#define USART0_TX_PD1 SILABS_DBUS_USART0_TX(0x3, 0x1) +#define USART0_TX_PD2 SILABS_DBUS_USART0_TX(0x3, 0x2) +#define USART0_TX_PD3 SILABS_DBUS_USART0_TX(0x3, 0x3) +#define USART0_CTS_PA0 SILABS_DBUS_USART0_CTS(0x0, 0x0) +#define USART0_CTS_PA1 SILABS_DBUS_USART0_CTS(0x0, 0x1) +#define USART0_CTS_PA2 SILABS_DBUS_USART0_CTS(0x0, 0x2) +#define USART0_CTS_PA3 SILABS_DBUS_USART0_CTS(0x0, 0x3) +#define USART0_CTS_PA4 SILABS_DBUS_USART0_CTS(0x0, 0x4) +#define USART0_CTS_PA5 SILABS_DBUS_USART0_CTS(0x0, 0x5) +#define USART0_CTS_PA6 SILABS_DBUS_USART0_CTS(0x0, 0x6) +#define USART0_CTS_PA7 SILABS_DBUS_USART0_CTS(0x0, 0x7) +#define USART0_CTS_PA8 SILABS_DBUS_USART0_CTS(0x0, 0x8) +#define USART0_CTS_PB0 SILABS_DBUS_USART0_CTS(0x1, 0x0) +#define USART0_CTS_PB1 SILABS_DBUS_USART0_CTS(0x1, 0x1) +#define USART0_CTS_PB2 SILABS_DBUS_USART0_CTS(0x1, 0x2) +#define USART0_CTS_PB3 SILABS_DBUS_USART0_CTS(0x1, 0x3) +#define USART0_CTS_PB4 SILABS_DBUS_USART0_CTS(0x1, 0x4) +#define USART0_CTS_PC0 SILABS_DBUS_USART0_CTS(0x2, 0x0) +#define USART0_CTS_PC1 SILABS_DBUS_USART0_CTS(0x2, 0x1) +#define USART0_CTS_PC2 SILABS_DBUS_USART0_CTS(0x2, 0x2) +#define USART0_CTS_PC3 SILABS_DBUS_USART0_CTS(0x2, 0x3) +#define USART0_CTS_PC4 SILABS_DBUS_USART0_CTS(0x2, 0x4) +#define USART0_CTS_PC5 SILABS_DBUS_USART0_CTS(0x2, 0x5) +#define USART0_CTS_PC6 SILABS_DBUS_USART0_CTS(0x2, 0x6) +#define USART0_CTS_PC7 SILABS_DBUS_USART0_CTS(0x2, 0x7) +#define USART0_CTS_PD0 SILABS_DBUS_USART0_CTS(0x3, 0x0) +#define USART0_CTS_PD1 SILABS_DBUS_USART0_CTS(0x3, 0x1) +#define USART0_CTS_PD2 SILABS_DBUS_USART0_CTS(0x3, 0x2) +#define USART0_CTS_PD3 SILABS_DBUS_USART0_CTS(0x3, 0x3) + +#define USART1_CS_PA0 SILABS_DBUS_USART1_CS(0x0, 0x0) +#define USART1_CS_PA1 SILABS_DBUS_USART1_CS(0x0, 0x1) +#define USART1_CS_PA2 SILABS_DBUS_USART1_CS(0x0, 0x2) +#define USART1_CS_PA3 SILABS_DBUS_USART1_CS(0x0, 0x3) +#define USART1_CS_PA4 SILABS_DBUS_USART1_CS(0x0, 0x4) +#define USART1_CS_PA5 SILABS_DBUS_USART1_CS(0x0, 0x5) +#define USART1_CS_PA6 SILABS_DBUS_USART1_CS(0x0, 0x6) +#define USART1_CS_PA7 SILABS_DBUS_USART1_CS(0x0, 0x7) +#define USART1_CS_PA8 SILABS_DBUS_USART1_CS(0x0, 0x8) +#define USART1_CS_PB0 SILABS_DBUS_USART1_CS(0x1, 0x0) +#define USART1_CS_PB1 SILABS_DBUS_USART1_CS(0x1, 0x1) +#define USART1_CS_PB2 SILABS_DBUS_USART1_CS(0x1, 0x2) +#define USART1_CS_PB3 SILABS_DBUS_USART1_CS(0x1, 0x3) +#define USART1_CS_PB4 SILABS_DBUS_USART1_CS(0x1, 0x4) +#define USART1_RTS_PA0 SILABS_DBUS_USART1_RTS(0x0, 0x0) +#define USART1_RTS_PA1 SILABS_DBUS_USART1_RTS(0x0, 0x1) +#define USART1_RTS_PA2 SILABS_DBUS_USART1_RTS(0x0, 0x2) +#define USART1_RTS_PA3 SILABS_DBUS_USART1_RTS(0x0, 0x3) +#define USART1_RTS_PA4 SILABS_DBUS_USART1_RTS(0x0, 0x4) +#define USART1_RTS_PA5 SILABS_DBUS_USART1_RTS(0x0, 0x5) +#define USART1_RTS_PA6 SILABS_DBUS_USART1_RTS(0x0, 0x6) +#define USART1_RTS_PA7 SILABS_DBUS_USART1_RTS(0x0, 0x7) +#define USART1_RTS_PA8 SILABS_DBUS_USART1_RTS(0x0, 0x8) +#define USART1_RTS_PB0 SILABS_DBUS_USART1_RTS(0x1, 0x0) +#define USART1_RTS_PB1 SILABS_DBUS_USART1_RTS(0x1, 0x1) +#define USART1_RTS_PB2 SILABS_DBUS_USART1_RTS(0x1, 0x2) +#define USART1_RTS_PB3 SILABS_DBUS_USART1_RTS(0x1, 0x3) +#define USART1_RTS_PB4 SILABS_DBUS_USART1_RTS(0x1, 0x4) +#define USART1_RX_PA0 SILABS_DBUS_USART1_RX(0x0, 0x0) +#define USART1_RX_PA1 SILABS_DBUS_USART1_RX(0x0, 0x1) +#define USART1_RX_PA2 SILABS_DBUS_USART1_RX(0x0, 0x2) +#define USART1_RX_PA3 SILABS_DBUS_USART1_RX(0x0, 0x3) +#define USART1_RX_PA4 SILABS_DBUS_USART1_RX(0x0, 0x4) +#define USART1_RX_PA5 SILABS_DBUS_USART1_RX(0x0, 0x5) +#define USART1_RX_PA6 SILABS_DBUS_USART1_RX(0x0, 0x6) +#define USART1_RX_PA7 SILABS_DBUS_USART1_RX(0x0, 0x7) +#define USART1_RX_PA8 SILABS_DBUS_USART1_RX(0x0, 0x8) +#define USART1_RX_PB0 SILABS_DBUS_USART1_RX(0x1, 0x0) +#define USART1_RX_PB1 SILABS_DBUS_USART1_RX(0x1, 0x1) +#define USART1_RX_PB2 SILABS_DBUS_USART1_RX(0x1, 0x2) +#define USART1_RX_PB3 SILABS_DBUS_USART1_RX(0x1, 0x3) +#define USART1_RX_PB4 SILABS_DBUS_USART1_RX(0x1, 0x4) +#define USART1_CLK_PA0 SILABS_DBUS_USART1_CLK(0x0, 0x0) +#define USART1_CLK_PA1 SILABS_DBUS_USART1_CLK(0x0, 0x1) +#define USART1_CLK_PA2 SILABS_DBUS_USART1_CLK(0x0, 0x2) +#define USART1_CLK_PA3 SILABS_DBUS_USART1_CLK(0x0, 0x3) +#define USART1_CLK_PA4 SILABS_DBUS_USART1_CLK(0x0, 0x4) +#define USART1_CLK_PA5 SILABS_DBUS_USART1_CLK(0x0, 0x5) +#define USART1_CLK_PA6 SILABS_DBUS_USART1_CLK(0x0, 0x6) +#define USART1_CLK_PA7 SILABS_DBUS_USART1_CLK(0x0, 0x7) +#define USART1_CLK_PA8 SILABS_DBUS_USART1_CLK(0x0, 0x8) +#define USART1_CLK_PB0 SILABS_DBUS_USART1_CLK(0x1, 0x0) +#define USART1_CLK_PB1 SILABS_DBUS_USART1_CLK(0x1, 0x1) +#define USART1_CLK_PB2 SILABS_DBUS_USART1_CLK(0x1, 0x2) +#define USART1_CLK_PB3 SILABS_DBUS_USART1_CLK(0x1, 0x3) +#define USART1_CLK_PB4 SILABS_DBUS_USART1_CLK(0x1, 0x4) +#define USART1_TX_PA0 SILABS_DBUS_USART1_TX(0x0, 0x0) +#define USART1_TX_PA1 SILABS_DBUS_USART1_TX(0x0, 0x1) +#define USART1_TX_PA2 SILABS_DBUS_USART1_TX(0x0, 0x2) +#define USART1_TX_PA3 SILABS_DBUS_USART1_TX(0x0, 0x3) +#define USART1_TX_PA4 SILABS_DBUS_USART1_TX(0x0, 0x4) +#define USART1_TX_PA5 SILABS_DBUS_USART1_TX(0x0, 0x5) +#define USART1_TX_PA6 SILABS_DBUS_USART1_TX(0x0, 0x6) +#define USART1_TX_PA7 SILABS_DBUS_USART1_TX(0x0, 0x7) +#define USART1_TX_PA8 SILABS_DBUS_USART1_TX(0x0, 0x8) +#define USART1_TX_PB0 SILABS_DBUS_USART1_TX(0x1, 0x0) +#define USART1_TX_PB1 SILABS_DBUS_USART1_TX(0x1, 0x1) +#define USART1_TX_PB2 SILABS_DBUS_USART1_TX(0x1, 0x2) +#define USART1_TX_PB3 SILABS_DBUS_USART1_TX(0x1, 0x3) +#define USART1_TX_PB4 SILABS_DBUS_USART1_TX(0x1, 0x4) +#define USART1_CTS_PA0 SILABS_DBUS_USART1_CTS(0x0, 0x0) +#define USART1_CTS_PA1 SILABS_DBUS_USART1_CTS(0x0, 0x1) +#define USART1_CTS_PA2 SILABS_DBUS_USART1_CTS(0x0, 0x2) +#define USART1_CTS_PA3 SILABS_DBUS_USART1_CTS(0x0, 0x3) +#define USART1_CTS_PA4 SILABS_DBUS_USART1_CTS(0x0, 0x4) +#define USART1_CTS_PA5 SILABS_DBUS_USART1_CTS(0x0, 0x5) +#define USART1_CTS_PA6 SILABS_DBUS_USART1_CTS(0x0, 0x6) +#define USART1_CTS_PA7 SILABS_DBUS_USART1_CTS(0x0, 0x7) +#define USART1_CTS_PA8 SILABS_DBUS_USART1_CTS(0x0, 0x8) +#define USART1_CTS_PB0 SILABS_DBUS_USART1_CTS(0x1, 0x0) +#define USART1_CTS_PB1 SILABS_DBUS_USART1_CTS(0x1, 0x1) +#define USART1_CTS_PB2 SILABS_DBUS_USART1_CTS(0x1, 0x2) +#define USART1_CTS_PB3 SILABS_DBUS_USART1_CTS(0x1, 0x3) +#define USART1_CTS_PB4 SILABS_DBUS_USART1_CTS(0x1, 0x4) + +#endif /* ZEPHYR_DT_BINDINGS_PINCTRL_SILABS_XG27_PINCTRL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/ti-k3-pinctrl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/ti-k3-pinctrl.h index b50e7846..a830187b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/ti-k3-pinctrl.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pinctrl/ti-k3-pinctrl.h @@ -39,6 +39,11 @@ #define MUX_MODE_7 7 #define MUX_MODE_8 8 #define MUX_MODE_9 9 +#define MUX_MODE_10 10 +#define MUX_MODE_11 11 +#define MUX_MODE_12 12 +#define MUX_MODE_13 13 +#define MUX_MODE_14 14 #define K3_PINMUX(offset, value, mux_mode) (((offset) & 0x1fff)) ((value) | (mux_mode)) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/power/imx_scu_rsrc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/power/imx_scu_rsrc.h new file mode 100644 index 00000000..dc9952ee --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/power/imx_scu_rsrc.h @@ -0,0 +1,558 @@ +/* + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_POWER_IMX_SCU_RSRC_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_POWER_IMX_SCU_RSRC_H_ + +#define IMX_SC_R_A53 0U +#define IMX_SC_R_A53_0 1U +#define IMX_SC_R_A53_1 2U +#define IMX_SC_R_A53_2 3U +#define IMX_SC_R_A53_3 4U +#define IMX_SC_R_A72 5U +#define IMX_SC_R_A72_0 6U +#define IMX_SC_R_A72_1 7U +#define IMX_SC_R_A72_2 8U +#define IMX_SC_R_A72_3 9U +#define IMX_SC_R_CCI 10U +#define IMX_SC_R_DB 11U +#define IMX_SC_R_DRC_0 12U +#define IMX_SC_R_DRC_1 13U +#define IMX_SC_R_GIC_SMMU 14U +#define IMX_SC_R_IRQSTR_M4_0 15U +#define IMX_SC_R_IRQSTR_M4_1 16U +#define IMX_SC_R_SMMU 17U +#define IMX_SC_R_GIC 18U +#define IMX_SC_R_DC_0_BLIT0 19U +#define IMX_SC_R_DC_0_BLIT1 20U +#define IMX_SC_R_DC_0_BLIT2 21U +#define IMX_SC_R_DC_0_BLIT_OUT 22U +#define IMX_SC_R_PERF 23U +#define IMX_SC_R_USB_1_PHY 24U +#define IMX_SC_R_DC_0_WARP 25U +#define IMX_SC_R_V2X_MU_0 26U +#define IMX_SC_R_V2X_MU_1 27U +#define IMX_SC_R_DC_0_VIDEO0 28U +#define IMX_SC_R_DC_0_VIDEO1 29U +#define IMX_SC_R_DC_0_FRAC0 30U +#define IMX_SC_R_V2X_MU_2 31U +#define IMX_SC_R_DC_0 32U +#define IMX_SC_R_GPU_2_PID0 33U +#define IMX_SC_R_DC_0_PLL_0 34U +#define IMX_SC_R_DC_0_PLL_1 35U +#define IMX_SC_R_DC_1_BLIT0 36U +#define IMX_SC_R_DC_1_BLIT1 37U +#define IMX_SC_R_DC_1_BLIT2 38U +#define IMX_SC_R_DC_1_BLIT_OUT 39U +#define IMX_SC_R_V2X_MU_3 40U +#define IMX_SC_R_V2X_MU_4 41U +#define IMX_SC_R_DC_1_WARP 42U +#define IMX_SC_R_UNUSED1 43U +#define IMX_SC_R_SECVIO 44U +#define IMX_SC_R_DC_1_VIDEO0 45U +#define IMX_SC_R_DC_1_VIDEO1 46U +#define IMX_SC_R_DC_1_FRAC0 47U +#define IMX_SC_R_UNUSED13 48U +#define IMX_SC_R_DC_1 49U +#define IMX_SC_R_UNUSED14 50U +#define IMX_SC_R_DC_1_PLL_0 51U +#define IMX_SC_R_DC_1_PLL_1 52U +#define IMX_SC_R_SPI_0 53U +#define IMX_SC_R_SPI_1 54U +#define IMX_SC_R_SPI_2 55U +#define IMX_SC_R_SPI_3 56U +#define IMX_SC_R_UART_0 57U +#define IMX_SC_R_UART_1 58U +#define IMX_SC_R_UART_2 59U +#define IMX_SC_R_UART_3 60U +#define IMX_SC_R_UART_4 61U +#define IMX_SC_R_EMVSIM_0 62U +#define IMX_SC_R_EMVSIM_1 63U +#define IMX_SC_R_DMA_0_CH0 64U +#define IMX_SC_R_DMA_0_CH1 65U +#define IMX_SC_R_DMA_0_CH2 66U +#define IMX_SC_R_DMA_0_CH3 67U +#define IMX_SC_R_DMA_0_CH4 68U +#define IMX_SC_R_DMA_0_CH5 69U +#define IMX_SC_R_DMA_0_CH6 70U +#define IMX_SC_R_DMA_0_CH7 71U +#define IMX_SC_R_DMA_0_CH8 72U +#define IMX_SC_R_DMA_0_CH9 73U +#define IMX_SC_R_DMA_0_CH10 74U +#define IMX_SC_R_DMA_0_CH11 75U +#define IMX_SC_R_DMA_0_CH12 76U +#define IMX_SC_R_DMA_0_CH13 77U +#define IMX_SC_R_DMA_0_CH14 78U +#define IMX_SC_R_DMA_0_CH15 79U +#define IMX_SC_R_DMA_0_CH16 80U +#define IMX_SC_R_DMA_0_CH17 81U +#define IMX_SC_R_DMA_0_CH18 82U +#define IMX_SC_R_DMA_0_CH19 83U +#define IMX_SC_R_DMA_0_CH20 84U +#define IMX_SC_R_DMA_0_CH21 85U +#define IMX_SC_R_DMA_0_CH22 86U +#define IMX_SC_R_DMA_0_CH23 87U +#define IMX_SC_R_DMA_0_CH24 88U +#define IMX_SC_R_DMA_0_CH25 89U +#define IMX_SC_R_DMA_0_CH26 90U +#define IMX_SC_R_DMA_0_CH27 91U +#define IMX_SC_R_DMA_0_CH28 92U +#define IMX_SC_R_DMA_0_CH29 93U +#define IMX_SC_R_DMA_0_CH30 94U +#define IMX_SC_R_DMA_0_CH31 95U +#define IMX_SC_R_I2C_0 96U +#define IMX_SC_R_I2C_1 97U +#define IMX_SC_R_I2C_2 98U +#define IMX_SC_R_I2C_3 99U +#define IMX_SC_R_I2C_4 100U +#define IMX_SC_R_ADC_0 101U +#define IMX_SC_R_ADC_1 102U +#define IMX_SC_R_FTM_0 103U +#define IMX_SC_R_FTM_1 104U +#define IMX_SC_R_CAN_0 105U +#define IMX_SC_R_CAN_1 106U +#define IMX_SC_R_CAN_2 107U +#define IMX_SC_R_DMA_1_CH0 108U +#define IMX_SC_R_DMA_1_CH1 109U +#define IMX_SC_R_DMA_1_CH2 110U +#define IMX_SC_R_DMA_1_CH3 111U +#define IMX_SC_R_DMA_1_CH4 112U +#define IMX_SC_R_DMA_1_CH5 113U +#define IMX_SC_R_DMA_1_CH6 114U +#define IMX_SC_R_DMA_1_CH7 115U +#define IMX_SC_R_DMA_1_CH8 116U +#define IMX_SC_R_DMA_1_CH9 117U +#define IMX_SC_R_DMA_1_CH10 118U +#define IMX_SC_R_DMA_1_CH11 119U +#define IMX_SC_R_DMA_1_CH12 120U +#define IMX_SC_R_DMA_1_CH13 121U +#define IMX_SC_R_DMA_1_CH14 122U +#define IMX_SC_R_DMA_1_CH15 123U +#define IMX_SC_R_DMA_1_CH16 124U +#define IMX_SC_R_DMA_1_CH17 125U +#define IMX_SC_R_DMA_1_CH18 126U +#define IMX_SC_R_DMA_1_CH19 127U +#define IMX_SC_R_DMA_1_CH20 128U +#define IMX_SC_R_DMA_1_CH21 129U +#define IMX_SC_R_DMA_1_CH22 130U +#define IMX_SC_R_DMA_1_CH23 131U +#define IMX_SC_R_DMA_1_CH24 132U +#define IMX_SC_R_DMA_1_CH25 133U +#define IMX_SC_R_DMA_1_CH26 134U +#define IMX_SC_R_DMA_1_CH27 135U +#define IMX_SC_R_DMA_1_CH28 136U +#define IMX_SC_R_DMA_1_CH29 137U +#define IMX_SC_R_DMA_1_CH30 138U +#define IMX_SC_R_DMA_1_CH31 139U +#define IMX_SC_R_V2X_PID0 140U +#define IMX_SC_R_V2X_PID1 141U +#define IMX_SC_R_V2X_PID2 142U +#define IMX_SC_R_V2X_PID3 143U +#define IMX_SC_R_GPU_0_PID0 144U +#define IMX_SC_R_GPU_0_PID1 145U +#define IMX_SC_R_GPU_0_PID2 146U +#define IMX_SC_R_GPU_0_PID3 147U +#define IMX_SC_R_GPU_1_PID0 148U +#define IMX_SC_R_GPU_1_PID1 149U +#define IMX_SC_R_GPU_1_PID2 150U +#define IMX_SC_R_GPU_1_PID3 151U +#define IMX_SC_R_PCIE_A 152U +#define IMX_SC_R_SERDES_0 153U +#define IMX_SC_R_MATCH_0 154U +#define IMX_SC_R_MATCH_1 155U +#define IMX_SC_R_MATCH_2 156U +#define IMX_SC_R_MATCH_3 157U +#define IMX_SC_R_MATCH_4 158U +#define IMX_SC_R_MATCH_5 159U +#define IMX_SC_R_MATCH_6 160U +#define IMX_SC_R_MATCH_7 161U +#define IMX_SC_R_MATCH_8 162U +#define IMX_SC_R_MATCH_9 163U +#define IMX_SC_R_MATCH_10 164U +#define IMX_SC_R_MATCH_11 165U +#define IMX_SC_R_MATCH_12 166U +#define IMX_SC_R_MATCH_13 167U +#define IMX_SC_R_MATCH_14 168U +#define IMX_SC_R_PCIE_B 169U +#define IMX_SC_R_SATA_0 170U +#define IMX_SC_R_SERDES_1 171U +#define IMX_SC_R_HSIO_GPIO 172U +#define IMX_SC_R_MATCH_15 173U +#define IMX_SC_R_MATCH_16 174U +#define IMX_SC_R_MATCH_17 175U +#define IMX_SC_R_MATCH_18 176U +#define IMX_SC_R_MATCH_19 177U +#define IMX_SC_R_MATCH_20 178U +#define IMX_SC_R_MATCH_21 179U +#define IMX_SC_R_MATCH_22 180U +#define IMX_SC_R_MATCH_23 181U +#define IMX_SC_R_MATCH_24 182U +#define IMX_SC_R_MATCH_25 183U +#define IMX_SC_R_MATCH_26 184U +#define IMX_SC_R_MATCH_27 185U +#define IMX_SC_R_MATCH_28 186U +#define IMX_SC_R_LCD_0 187U +#define IMX_SC_R_LCD_0_PWM_0 188U +#define IMX_SC_R_LCD_0_I2C_0 189U +#define IMX_SC_R_LCD_0_I2C_1 190U +#define IMX_SC_R_PWM_0 191U +#define IMX_SC_R_PWM_1 192U +#define IMX_SC_R_PWM_2 193U +#define IMX_SC_R_PWM_3 194U +#define IMX_SC_R_PWM_4 195U +#define IMX_SC_R_PWM_5 196U +#define IMX_SC_R_PWM_6 197U +#define IMX_SC_R_PWM_7 198U +#define IMX_SC_R_GPIO_0 199U +#define IMX_SC_R_GPIO_1 200U +#define IMX_SC_R_GPIO_2 201U +#define IMX_SC_R_GPIO_3 202U +#define IMX_SC_R_GPIO_4 203U +#define IMX_SC_R_GPIO_5 204U +#define IMX_SC_R_GPIO_6 205U +#define IMX_SC_R_GPIO_7 206U +#define IMX_SC_R_GPT_0 207U +#define IMX_SC_R_GPT_1 208U +#define IMX_SC_R_GPT_2 209U +#define IMX_SC_R_GPT_3 210U +#define IMX_SC_R_GPT_4 211U +#define IMX_SC_R_KPP 212U +#define IMX_SC_R_MU_0A 213U +#define IMX_SC_R_MU_1A 214U +#define IMX_SC_R_MU_2A 215U +#define IMX_SC_R_MU_3A 216U +#define IMX_SC_R_MU_4A 217U +#define IMX_SC_R_MU_5A 218U +#define IMX_SC_R_MU_6A 219U +#define IMX_SC_R_MU_7A 220U +#define IMX_SC_R_MU_8A 221U +#define IMX_SC_R_MU_9A 222U +#define IMX_SC_R_MU_10A 223U +#define IMX_SC_R_MU_11A 224U +#define IMX_SC_R_MU_12A 225U +#define IMX_SC_R_MU_13A 226U +#define IMX_SC_R_MU_5B 227U +#define IMX_SC_R_MU_6B 228U +#define IMX_SC_R_MU_7B 229U +#define IMX_SC_R_MU_8B 230U +#define IMX_SC_R_MU_9B 231U +#define IMX_SC_R_MU_10B 232U +#define IMX_SC_R_MU_11B 233U +#define IMX_SC_R_MU_12B 234U +#define IMX_SC_R_MU_13B 235U +#define IMX_SC_R_ROM_0 236U +#define IMX_SC_R_FSPI_0 237U +#define IMX_SC_R_FSPI_1 238U +#define IMX_SC_R_IEE 239U +#define IMX_SC_R_IEE_R0 240U +#define IMX_SC_R_IEE_R1 241U +#define IMX_SC_R_IEE_R2 242U +#define IMX_SC_R_IEE_R3 243U +#define IMX_SC_R_IEE_R4 244U +#define IMX_SC_R_IEE_R5 245U +#define IMX_SC_R_IEE_R6 246U +#define IMX_SC_R_IEE_R7 247U +#define IMX_SC_R_SDHC_0 248U +#define IMX_SC_R_SDHC_1 249U +#define IMX_SC_R_SDHC_2 250U +#define IMX_SC_R_ENET_0 251U +#define IMX_SC_R_ENET_1 252U +#define IMX_SC_R_MLB_0 253U +#define IMX_SC_R_DMA_2_CH0 254U +#define IMX_SC_R_DMA_2_CH1 255U +#define IMX_SC_R_DMA_2_CH2 256U +#define IMX_SC_R_DMA_2_CH3 257U +#define IMX_SC_R_DMA_2_CH4 258U +#define IMX_SC_R_USB_0 259U +#define IMX_SC_R_USB_1 260U +#define IMX_SC_R_USB_0_PHY 261U +#define IMX_SC_R_USB_2 262U +#define IMX_SC_R_USB_2_PHY 263U +#define IMX_SC_R_DTCP 264U +#define IMX_SC_R_NAND 265U +#define IMX_SC_R_LVDS_0 266U +#define IMX_SC_R_LVDS_0_PWM_0 267U +#define IMX_SC_R_LVDS_0_I2C_0 268U +#define IMX_SC_R_LVDS_0_I2C_1 269U +#define IMX_SC_R_LVDS_1 270U +#define IMX_SC_R_LVDS_1_PWM_0 271U +#define IMX_SC_R_LVDS_1_I2C_0 272U +#define IMX_SC_R_LVDS_1_I2C_1 273U +#define IMX_SC_R_LVDS_2 274U +#define IMX_SC_R_LVDS_2_PWM_0 275U +#define IMX_SC_R_LVDS_2_I2C_0 276U +#define IMX_SC_R_LVDS_2_I2C_1 277U +#define IMX_SC_R_M4_0_PID0 278U +#define IMX_SC_R_M4_0_PID1 279U +#define IMX_SC_R_M4_0_PID2 280U +#define IMX_SC_R_M4_0_PID3 281U +#define IMX_SC_R_M4_0_PID4 282U +#define IMX_SC_R_M4_0_RGPIO 283U +#define IMX_SC_R_M4_0_SEMA42 284U +#define IMX_SC_R_M4_0_TPM 285U +#define IMX_SC_R_M4_0_PIT 286U +#define IMX_SC_R_M4_0_UART 287U +#define IMX_SC_R_M4_0_I2C 288U +#define IMX_SC_R_M4_0_INTMUX 289U +#define IMX_SC_R_ENET_0_A0 290U +#define IMX_SC_R_ENET_0_A1 291U +#define IMX_SC_R_M4_0_MU_0B 292U +#define IMX_SC_R_M4_0_MU_0A0 293U +#define IMX_SC_R_M4_0_MU_0A1 294U +#define IMX_SC_R_M4_0_MU_0A2 295U +#define IMX_SC_R_M4_0_MU_0A3 296U +#define IMX_SC_R_M4_0_MU_1A 297U +#define IMX_SC_R_M4_1_PID0 298U +#define IMX_SC_R_M4_1_PID1 299U +#define IMX_SC_R_M4_1_PID2 300U +#define IMX_SC_R_M4_1_PID3 301U +#define IMX_SC_R_M4_1_PID4 302U +#define IMX_SC_R_M4_1_RGPIO 303U +#define IMX_SC_R_M4_1_SEMA42 304U +#define IMX_SC_R_M4_1_TPM 305U +#define IMX_SC_R_M4_1_PIT 306U +#define IMX_SC_R_M4_1_UART 307U +#define IMX_SC_R_M4_1_I2C 308U +#define IMX_SC_R_M4_1_INTMUX 309U +#define IMX_SC_R_UNUSED17 310U +#define IMX_SC_R_UNUSED18 311U +#define IMX_SC_R_M4_1_MU_0B 312U +#define IMX_SC_R_M4_1_MU_0A0 313U +#define IMX_SC_R_M4_1_MU_0A1 314U +#define IMX_SC_R_M4_1_MU_0A2 315U +#define IMX_SC_R_M4_1_MU_0A3 316U +#define IMX_SC_R_M4_1_MU_1A 317U +#define IMX_SC_R_SAI_0 318U +#define IMX_SC_R_SAI_1 319U +#define IMX_SC_R_SAI_2 320U +#define IMX_SC_R_IRQSTR_SCU2 321U +#define IMX_SC_R_IRQSTR_DSP 322U +#define IMX_SC_R_ELCDIF_PLL 323U +#define IMX_SC_R_OCRAM 324U +#define IMX_SC_R_AUDIO_PLL_0 325U +#define IMX_SC_R_PI_0 326U +#define IMX_SC_R_PI_0_PWM_0 327U +#define IMX_SC_R_PI_0_PWM_1 328U +#define IMX_SC_R_PI_0_I2C_0 329U +#define IMX_SC_R_PI_0_PLL 330U +#define IMX_SC_R_PI_1 331U +#define IMX_SC_R_PI_1_PWM_0 332U +#define IMX_SC_R_PI_1_PWM_1 333U +#define IMX_SC_R_PI_1_I2C_0 334U +#define IMX_SC_R_PI_1_PLL 335U +#define IMX_SC_R_SC_PID0 336U +#define IMX_SC_R_SC_PID1 337U +#define IMX_SC_R_SC_PID2 338U +#define IMX_SC_R_SC_PID3 339U +#define IMX_SC_R_SC_PID4 340U +#define IMX_SC_R_SC_SEMA42 341U +#define IMX_SC_R_SC_TPM 342U +#define IMX_SC_R_SC_PIT 343U +#define IMX_SC_R_SC_UART 344U +#define IMX_SC_R_SC_I2C 345U +#define IMX_SC_R_SC_MU_0B 346U +#define IMX_SC_R_SC_MU_0A0 347U +#define IMX_SC_R_SC_MU_0A1 348U +#define IMX_SC_R_SC_MU_0A2 349U +#define IMX_SC_R_SC_MU_0A3 350U +#define IMX_SC_R_SC_MU_1A 351U +#define IMX_SC_R_SYSCNT_RD 352U +#define IMX_SC_R_SYSCNT_CMP 353U +#define IMX_SC_R_DEBUG 354U +#define IMX_SC_R_SYSTEM 355U +#define IMX_SC_R_SNVS 356U +#define IMX_SC_R_OTP 357U +#define IMX_SC_R_VPU_PID0 358U +#define IMX_SC_R_VPU_PID1 359U +#define IMX_SC_R_VPU_PID2 360U +#define IMX_SC_R_VPU_PID3 361U +#define IMX_SC_R_VPU_PID4 362U +#define IMX_SC_R_VPU_PID5 363U +#define IMX_SC_R_VPU_PID6 364U +#define IMX_SC_R_VPU_PID7 365U +#define IMX_SC_R_ENET_0_A2 366U +#define IMX_SC_R_ENET_1_A0 367U +#define IMX_SC_R_ENET_1_A1 368U +#define IMX_SC_R_ENET_1_A2 369U +#define IMX_SC_R_ENET_1_A3 370U +#define IMX_SC_R_ENET_1_A4 371U +#define IMX_SC_R_DMA_4_CH0 372U +#define IMX_SC_R_DMA_4_CH1 373U +#define IMX_SC_R_DMA_4_CH2 374U +#define IMX_SC_R_DMA_4_CH3 375U +#define IMX_SC_R_DMA_4_CH4 376U +#define IMX_SC_R_ISI_CH0 377U +#define IMX_SC_R_ISI_CH1 378U +#define IMX_SC_R_ISI_CH2 379U +#define IMX_SC_R_ISI_CH3 380U +#define IMX_SC_R_ISI_CH4 381U +#define IMX_SC_R_ISI_CH5 382U +#define IMX_SC_R_ISI_CH6 383U +#define IMX_SC_R_ISI_CH7 384U +#define IMX_SC_R_MJPEG_DEC_S0 385U +#define IMX_SC_R_MJPEG_DEC_S1 386U +#define IMX_SC_R_MJPEG_DEC_S2 387U +#define IMX_SC_R_MJPEG_DEC_S3 388U +#define IMX_SC_R_MJPEG_ENC_S0 389U +#define IMX_SC_R_MJPEG_ENC_S1 390U +#define IMX_SC_R_MJPEG_ENC_S2 391U +#define IMX_SC_R_MJPEG_ENC_S3 392U +#define IMX_SC_R_MIPI_0 393U +#define IMX_SC_R_MIPI_0_PWM_0 394U +#define IMX_SC_R_MIPI_0_I2C_0 395U +#define IMX_SC_R_MIPI_0_I2C_1 396U +#define IMX_SC_R_MIPI_1 397U +#define IMX_SC_R_MIPI_1_PWM_0 398U +#define IMX_SC_R_MIPI_1_I2C_0 399U +#define IMX_SC_R_MIPI_1_I2C_1 400U +#define IMX_SC_R_CSI_0 401U +#define IMX_SC_R_CSI_0_PWM_0 402U +#define IMX_SC_R_CSI_0_I2C_0 403U +#define IMX_SC_R_CSI_1 404U +#define IMX_SC_R_CSI_1_PWM_0 405U +#define IMX_SC_R_CSI_1_I2C_0 406U +#define IMX_SC_R_HDMI 407U +#define IMX_SC_R_HDMI_I2S 408U +#define IMX_SC_R_HDMI_I2C_0 409U +#define IMX_SC_R_HDMI_PLL_0 410U +#define IMX_SC_R_HDMI_RX 411U +#define IMX_SC_R_HDMI_RX_BYPASS 412U +#define IMX_SC_R_HDMI_RX_I2C_0 413U +#define IMX_SC_R_ASRC_0 414U +#define IMX_SC_R_ESAI_0 415U +#define IMX_SC_R_SPDIF_0 416U +#define IMX_SC_R_SPDIF_1 417U +#define IMX_SC_R_SAI_3 418U +#define IMX_SC_R_SAI_4 419U +#define IMX_SC_R_SAI_5 420U +#define IMX_SC_R_GPT_5 421U +#define IMX_SC_R_GPT_6 422U +#define IMX_SC_R_GPT_7 423U +#define IMX_SC_R_GPT_8 424U +#define IMX_SC_R_GPT_9 425U +#define IMX_SC_R_GPT_10 426U +#define IMX_SC_R_DMA_2_CH5 427U +#define IMX_SC_R_DMA_2_CH6 428U +#define IMX_SC_R_DMA_2_CH7 429U +#define IMX_SC_R_DMA_2_CH8 430U +#define IMX_SC_R_DMA_2_CH9 431U +#define IMX_SC_R_DMA_2_CH10 432U +#define IMX_SC_R_DMA_2_CH11 433U +#define IMX_SC_R_DMA_2_CH12 434U +#define IMX_SC_R_DMA_2_CH13 435U +#define IMX_SC_R_DMA_2_CH14 436U +#define IMX_SC_R_DMA_2_CH15 437U +#define IMX_SC_R_DMA_2_CH16 438U +#define IMX_SC_R_DMA_2_CH17 439U +#define IMX_SC_R_DMA_2_CH18 440U +#define IMX_SC_R_DMA_2_CH19 441U +#define IMX_SC_R_DMA_2_CH20 442U +#define IMX_SC_R_DMA_2_CH21 443U +#define IMX_SC_R_DMA_2_CH22 444U +#define IMX_SC_R_DMA_2_CH23 445U +#define IMX_SC_R_DMA_2_CH24 446U +#define IMX_SC_R_DMA_2_CH25 447U +#define IMX_SC_R_DMA_2_CH26 448U +#define IMX_SC_R_DMA_2_CH27 449U +#define IMX_SC_R_DMA_2_CH28 450U +#define IMX_SC_R_DMA_2_CH29 451U +#define IMX_SC_R_DMA_2_CH30 452U +#define IMX_SC_R_DMA_2_CH31 453U +#define IMX_SC_R_ASRC_1 454U +#define IMX_SC_R_ESAI_1 455U +#define IMX_SC_R_SAI_6 456U +#define IMX_SC_R_SAI_7 457U +#define IMX_SC_R_AMIX 458U +#define IMX_SC_R_MQS_0 459U +#define IMX_SC_R_DMA_3_CH0 460U +#define IMX_SC_R_DMA_3_CH1 461U +#define IMX_SC_R_DMA_3_CH2 462U +#define IMX_SC_R_DMA_3_CH3 463U +#define IMX_SC_R_DMA_3_CH4 464U +#define IMX_SC_R_DMA_3_CH5 465U +#define IMX_SC_R_DMA_3_CH6 466U +#define IMX_SC_R_DMA_3_CH7 467U +#define IMX_SC_R_DMA_3_CH8 468U +#define IMX_SC_R_DMA_3_CH9 469U +#define IMX_SC_R_DMA_3_CH10 470U +#define IMX_SC_R_DMA_3_CH11 471U +#define IMX_SC_R_DMA_3_CH12 472U +#define IMX_SC_R_DMA_3_CH13 473U +#define IMX_SC_R_DMA_3_CH14 474U +#define IMX_SC_R_DMA_3_CH15 475U +#define IMX_SC_R_DMA_3_CH16 476U +#define IMX_SC_R_DMA_3_CH17 477U +#define IMX_SC_R_DMA_3_CH18 478U +#define IMX_SC_R_DMA_3_CH19 479U +#define IMX_SC_R_DMA_3_CH20 480U +#define IMX_SC_R_DMA_3_CH21 481U +#define IMX_SC_R_DMA_3_CH22 482U +#define IMX_SC_R_DMA_3_CH23 483U +#define IMX_SC_R_DMA_3_CH24 484U +#define IMX_SC_R_DMA_3_CH25 485U +#define IMX_SC_R_DMA_3_CH26 486U +#define IMX_SC_R_DMA_3_CH27 487U +#define IMX_SC_R_DMA_3_CH28 488U +#define IMX_SC_R_DMA_3_CH29 489U +#define IMX_SC_R_DMA_3_CH30 490U +#define IMX_SC_R_DMA_3_CH31 491U +#define IMX_SC_R_AUDIO_PLL_1 492U +#define IMX_SC_R_AUDIO_CLK_0 493U +#define IMX_SC_R_AUDIO_CLK_1 494U +#define IMX_SC_R_MCLK_OUT_0 495U +#define IMX_SC_R_MCLK_OUT_1 496U +#define IMX_SC_R_PMIC_0 497U +#define IMX_SC_R_PMIC_1 498U +#define IMX_SC_R_SECO 499U +#define IMX_SC_R_CAAM_JR1 500U +#define IMX_SC_R_CAAM_JR2 501U +#define IMX_SC_R_CAAM_JR3 502U +#define IMX_SC_R_SECO_MU_2 503U +#define IMX_SC_R_SECO_MU_3 504U +#define IMX_SC_R_SECO_MU_4 505U +#define IMX_SC_R_HDMI_RX_PWM_0 506U +#define IMX_SC_R_A35 507U +#define IMX_SC_R_A35_0 508U +#define IMX_SC_R_A35_1 509U +#define IMX_SC_R_A35_2 510U +#define IMX_SC_R_A35_3 511U +#define IMX_SC_R_DSP 512U +#define IMX_SC_R_DSP_RAM 513U +#define IMX_SC_R_CAAM_JR1_OUT 514U +#define IMX_SC_R_CAAM_JR2_OUT 515U +#define IMX_SC_R_CAAM_JR3_OUT 516U +#define IMX_SC_R_VPU_DEC_0 517U +#define IMX_SC_R_VPU_ENC_0 518U +#define IMX_SC_R_CAAM_JR0 519U +#define IMX_SC_R_CAAM_JR0_OUT 520U +#define IMX_SC_R_PMIC_2 521U +#define IMX_SC_R_DBLOGIC 522U +#define IMX_SC_R_HDMI_PLL_1 523U +#define IMX_SC_R_BOARD_R0 524U +#define IMX_SC_R_BOARD_R1 525U +#define IMX_SC_R_BOARD_R2 526U +#define IMX_SC_R_BOARD_R3 527U +#define IMX_SC_R_BOARD_R4 528U +#define IMX_SC_R_BOARD_R5 529U +#define IMX_SC_R_BOARD_R6 530U +#define IMX_SC_R_BOARD_R7 531U +#define IMX_SC_R_MJPEG_DEC_MP 532U +#define IMX_SC_R_MJPEG_ENC_MP 533U +#define IMX_SC_R_VPU_TS_0 534U +#define IMX_SC_R_VPU_MU_0 535U +#define IMX_SC_R_VPU_MU_1 536U +#define IMX_SC_R_VPU_MU_2 537U +#define IMX_SC_R_VPU_MU_3 538U +#define IMX_SC_R_VPU_ENC_1 539U +#define IMX_SC_R_VPU 540U +#define IMX_SC_R_DMA_5_CH0 541U +#define IMX_SC_R_DMA_5_CH1 542U +#define IMX_SC_R_DMA_5_CH2 543U +#define IMX_SC_R_DMA_5_CH3 544U +#define IMX_SC_R_ATTESTATION 545U +#define IMX_SC_R_LAST 546U + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_POWER_IMX_SCU_RSRC_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/power/imx_spc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/power/imx_spc.h new file mode 100644 index 00000000..68f45e9d --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/power/imx_spc.h @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2021, NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + + +/* + * Setpoint definitions for IMX Set point controller. The SPC uses a series + * of set points to determine the clock speeds and states of cores, as well + * as which peripherals to gate clocks to. Higher values correspond to more + * power saving. See your SOC's datasheet for specifics of what peripherals + * have their clocks gated at each set point. + * + * Set point control is implemented at the soc level (see pm_state_set()) + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PM_IMX_SPC_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_PM_IMX_SPC_H_ + +#define IMX_GPC_RUN 0x0 +#define IMX_GPC_WAIT 0x1 +#define IMX_GPC_STOP 0x2 +#define IMX_GPC_SUSPEND 0x3 + + +#define IMX_SPC_MASK 0xF0 +#define IMX_SPC_SHIFT 4 +#define IMX_GPC_MODE_MASK 0xF + +#define IMX_SPC(x) ((x & IMX_SPC_MASK) >> IMX_SPC_SHIFT) +#define IMX_GPC_MODE(x) (x & IMX_GPC_MODE_MASK) + +#define IMX_SPC_0 0x00 +#define IMX_SPC_1 0x10 +#define IMX_SPC_2 0x20 +#define IMX_SPC_3 0x30 +#define IMX_SPC_4 0x40 +#define IMX_SPC_5 0x50 +#define IMX_SPC_6 0x60 +#define IMX_SPC_7 0x70 +#define IMX_SPC_8 0x80 +#define IMX_SPC_9 0x90 +#define IMX_SPC_10 0xA0 +#define IMX_SPC_11 0xB0 +#define IMX_SPC_12 0xC0 +#define IMX_SPC_13 0xD0 +#define IMX_SPC_14 0xE0 +#define IMX_SPC_15 0xF0 + + +#define IMX_SPC_SET_POINT_0_RUN (IMX_SPC_0 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_0_WAIT (IMX_SPC_0 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_0_STOP (IMX_SPC_0 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_0_SUSPEND (IMX_SPC_0 | IMX_GPC_SUSPEND) +#define IMX_SPC_SET_POINT_1_RUN (IMX_SPC_1 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_1_WAIT (IMX_SPC_1 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_1_STOP (IMX_SPC_1 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_1_SUSPEND (IMX_SPC_1 | IMX_GPC_SUSPEND) +#define IMX_SPC_SET_POINT_2_RUN (IMX_SPC_2 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_2_WAIT (IMX_SPC_2 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_2_STOP (IMX_SPC_2 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_2_SUSPEND (IMX_SPC_2 | IMX_GPC_SUSPEND) +#define IMX_SPC_SET_POINT_3_RUN (IMX_SPC_3 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_3_WAIT (IMX_SPC_3 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_3_STOP (IMX_SPC_3 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_3_SUSPEND (IMX_SPC_3 | IMX_GPC_SUSPEND) +#define IMX_SPC_SET_POINT_4_RUN (IMX_SPC_4 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_4_WAIT (IMX_SPC_4 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_4_STOP (IMX_SPC_4 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_4_SUSPEND (IMX_SPC_4 | IMX_GPC_SUSPEND) +#define IMX_SPC_SET_POINT_5_RUN (IMX_SPC_5 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_5_WAIT (IMX_SPC_5 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_5_STOP (IMX_SPC_5 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_5_SUSPEND (IMX_SPC_5 | IMX_GPC_SUSPEND) +#define IMX_SPC_SET_POINT_6_RUN (IMX_SPC_6 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_6_WAIT (IMX_SPC_6 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_6_STOP (IMX_SPC_6 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_6_SUSPEND (IMX_SPC_6 | IMX_GPC_SUSPEND) +#define IMX_SPC_SET_POINT_7_RUN (IMX_SPC_7 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_7_WAIT (IMX_SPC_7 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_7_STOP (IMX_SPC_7 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_7_SUSPEND (IMX_SPC_7 | IMX_GPC_SUSPEND) +#define IMX_SPC_SET_POINT_8_RUN (IMX_SPC_8 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_8_WAIT (IMX_SPC_8 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_8_STOP (IMX_SPC_8 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_8_SUSPEND (IMX_SPC_8 | IMX_GPC_SUSPEND) +#define IMX_SPC_SET_POINT_9_RUN (IMX_SPC_9 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_9_WAIT (IMX_SPC_9 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_9_STOP (IMX_SPC_9 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_9_SUSPEND (IMX_SPC_9 | IMX_GPC_SUSPEND) +#define IMX_SPC_SET_POINT_10_RUN (IMX_SPC_10 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_10_WAIT (IMX_SPC_10 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_10_STOP (IMX_SPC_10 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_10_SUSPEND (IMX_SPC_10 | IMX_GPC_SUSPEND) +#define IMX_SPC_SET_POINT_11_RUN (IMX_SPC_11 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_11_WAIT (IMX_SPC_11 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_11_STOP (IMX_SPC_11 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_11_SUSPEND (IMX_SPC_11 | IMX_GPC_SUSPEND) +#define IMX_SPC_SET_POINT_12_RUN (IMX_SPC_12 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_12_WAIT (IMX_SPC_12 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_12_STOP (IMX_SPC_12 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_12_SUSPEND (IMX_SPC_12 | IMX_GPC_SUSPEND) +#define IMX_SPC_SET_POINT_13_RUN (IMX_SPC_13 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_13_WAIT (IMX_SPC_13 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_13_STOP (IMX_SPC_13 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_13_SUSPEND (IMX_SPC_13 | IMX_GPC_SUSPEND) +#define IMX_SPC_SET_POINT_14_RUN (IMX_SPC_14 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_14_WAIT (IMX_SPC_14 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_14_STOP (IMX_SPC_14 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_14_SUSPEND (IMX_SPC_14 | IMX_GPC_SUSPEND) +#define IMX_SPC_SET_POINT_15_RUN (IMX_SPC_15 | IMX_GPC_RUN) +#define IMX_SPC_SET_POINT_15_WAIT (IMX_SPC_15 | IMX_GPC_WAIT) +#define IMX_SPC_SET_POINT_15_STOP (IMX_SPC_15 | IMX_GPC_STOP) +#define IMX_SPC_SET_POINT_15_SUSPEND (IMX_SPC_15 | IMX_GPC_SUSPEND) + + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PM_IMX_SPC_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/power/nordic-nrf-gpd.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/power/nordic-nrf-gpd.h new file mode 100644 index 00000000..7f6952f6 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/power/nordic-nrf-gpd.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_POWER_NORDIC_NRF_GLOBAL_PD +#define ZEPHYR_INCLUDE_DT_BINDINGS_POWER_NORDIC_NRF_GLOBAL_PD + +/* numbers aligned to nrfs service identifiers */ +#define NRF_GPD_SLOW_MAIN 2U +#define NRF_GPD_SLOW_ACTIVE 1U +#define NRF_GPD_FAST_MAIN 3U +#define NRF_GPD_FAST_ACTIVE1 0U +#define NRF_GPD_FAST_ACTIVE0 4U + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_POWER_NORDIC_NRF_GLOBAL_PD */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pwm/pwm_ifx_cat1.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pwm/pwm_ifx_cat1.h new file mode 100644 index 00000000..82256c70 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pwm/pwm_ifx_cat1.h @@ -0,0 +1,11 @@ +/* Copyright 2024 Cypress Semiconductor Corporation (an Infineon company) or + * an affiliate of Cypress Semiconductor Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * Divider Type + */ +#define CY_SYSCLK_DIV_8_BIT 0 +#define CY_SYSCLK_DIV_16_BIT 1 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pwm/ra_pwm.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pwm/ra_pwm.h new file mode 100644 index 00000000..e2f8a45e --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/pwm/ra_pwm.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2024 Renesas Electronics Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_PWM_RA_PWM_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_PWM_RA_PWM_H_ + +/* PWM SOURCE DIVIDER */ +#define RA_PWM_SOURCE_DIV_1 0 +#define RA_PWM_SOURCE_DIV_2 1 +#define RA_PWM_SOURCE_DIV_4 2 +#define RA_PWM_SOURCE_DIV_8 3 +#define RA_PWM_SOURCE_DIV_16 4 +#define RA_PWM_SOURCE_DIV_32 5 +#define RA_PWM_SOURCE_DIV_64 6 +#define RA_PWM_SOURCE_DIV_128 7 +#define RA_PWM_SOURCE_DIV_256 8 +#define RA_PWM_SOURCE_DIV_512 9 +#define RA_PWM_SOURCE_DIV_1024 10 + +/* PWM SOURCE DIVIDER */ +#define RA_PWM_CHANNEL_0 0 +#define RA_PWM_CHANNEL_1 1 +#define RA_PWM_CHANNEL_2 2 +#define RA_PWM_CHANNEL_3 3 +#define RA_PWM_CHANNEL_4 4 +#define RA_PWM_CHANNEL_5 5 +#define RA_PWM_CHANNEL_6 6 +#define RA_PWM_CHANNEL_7 7 +#define RA_PWM_CHANNEL_8 8 +#define RA_PWM_CHANNEL_9 9 +#define RA_PWM_CHANNEL_10 10 +#define RA_PWM_CHANNEL_11 11 +#define RA_PWM_CHANNEL_12 12 +#define RA_PWM_CHANNEL_13 13 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_PWM_RA_PWM_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/regulator/npm2100.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/regulator/npm2100.h new file mode 100644 index 00000000..2ec703bb --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/regulator/npm2100.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2023 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_REGULATOR_NPM2100_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_REGULATOR_NPM2100_H_ + +/** + * @defgroup regulator_npm2100 NPM2100 Devicetree helpers. + * @ingroup regulator_interface + * @{ + */ + +/** + * @name NPM2100 Regulator modes + * @{ + */ +/* Load switch selection, applies to LDOSW only */ +#define NPM2100_REG_LDSW_EN 0x01U + +/* DPS modes applies to BOOST only */ +#define NPM2100_REG_DPS_MASK 0x03U +#define NPM2100_REG_DPS_ALLOW 0x01U +#define NPM2100_REG_DPS_ALLOWLP 0x02U + +/* Operating mode */ +#define NPM2100_REG_OPER_MASK 0x1CU +#define NPM2100_REG_OPER_AUTO 0x00U +#define NPM2100_REG_OPER_HP 0x04U +#define NPM2100_REG_OPER_LP 0x08U +#define NPM2100_REG_OPER_ULP 0x0CU +#define NPM2100_REG_OPER_PASS 0x10U +#define NPM2100_REG_OPER_NOHP 0x14U +#define NPM2100_REG_OPER_OFF 0x18U + +/* Forced mode when GPIO active */ +#define NPM2100_REG_FORCE_MASK 0xE0U +#define NPM2100_REG_FORCE_HP 0x20U +#define NPM2100_REG_FORCE_LP 0x40U +#define NPM2100_REG_FORCE_ULP 0x60U +#define NPM2100_REG_FORCE_PASS 0x80U +#define NPM2100_REG_FORCE_NOHP 0xA0U + +/** @} */ + +/** @} */ + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_REGULATOR_NPM2100_H_*/ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/regulator/nrf5x.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/regulator/nrf5x.h new file mode 100644 index 00000000..1f4e048e --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/regulator/nrf5x.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_REGULATOR_NRF5X_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_REGULATOR_NRF5X_H_ + +/** + * @defgroup regulator_nrf5x nRF5X regulator devicetree helpers. + * @ingroup regulator_interface + * @{ + */ + +/** + * @name nRF5X regulator modes + * @{ + */ +/** LDO mode */ +#define NRF5X_REG_MODE_LDO 0 +/** DC/DC mode */ +#define NRF5X_REG_MODE_DCDC 1 +/** @} */ + +/** @} */ + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_REGULATOR_NRF5X_H_*/ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/regulator/silabs_dcdc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/regulator/silabs_dcdc.h new file mode 100644 index 00000000..f2547346 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/regulator/silabs_dcdc.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2024 Silicon Laboratories Inc. + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_REGULATOR_SILABS_DCDC_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_REGULATOR_SILABS_DCDC_H_ + +/** + * @defgroup regulator_silabs_dcdc Silabs DCDC devicetree helpers. + * @ingroup regulator_interface + * @{ + */ + +/** + * @name Silabs DCDC modes + * @{ + */ +/** Buck mode */ +#define SILABS_DCDC_MODE_BUCK 0 +/** Boost mode */ +#define SILABS_DCDC_MODE_BOOST 1 +/** @} */ + +/** @} */ + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_REGULATOR_SILABS_DCDC_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reserved-memory/nordic-owned-memory.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reserved-memory/nordic-owned-memory.h new file mode 100644 index 00000000..90f43379 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reserved-memory/nordic-owned-memory.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_RESERVED_MEMORY_NORDIC_OWNED_MEMORY_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_RESERVED_MEMORY_NORDIC_OWNED_MEMORY_H_ + +#include + +/** + * @name Basic memory permission flags. + * @{ + */ + +/** Readable. */ +#define NRF_PERM_R BIT(0) +/** Writable. */ +#define NRF_PERM_W BIT(1) +/** Executable. */ +#define NRF_PERM_X BIT(2) +/** Secure-only. */ +#define NRF_PERM_S BIT(3) +/** Non-secure-callable. */ +#define NRF_PERM_NSC BIT(4) + +/** + * @} + */ + +/** + * @name Memory permission flag combinations. + * @note NRF_PERM_NSC overrides all other flags, so it is not included here. + * @{ + */ + +#define NRF_PERM_RW (NRF_PERM_R | NRF_PERM_W) +#define NRF_PERM_RX (NRF_PERM_R | NRF_PERM_X) +#define NRF_PERM_RS (NRF_PERM_R | NRF_PERM_S) +#define NRF_PERM_WX (NRF_PERM_W | NRF_PERM_X) +#define NRF_PERM_WS (NRF_PERM_W | NRF_PERM_S) +#define NRF_PERM_XS (NRF_PERM_X | NRF_PERM_S) +#define NRF_PERM_RWX (NRF_PERM_R | NRF_PERM_W | NRF_PERM_X) +#define NRF_PERM_RWS (NRF_PERM_R | NRF_PERM_W | NRF_PERM_S) +#define NRF_PERM_RXS (NRF_PERM_R | NRF_PERM_X | NRF_PERM_S) +#define NRF_PERM_WXS (NRF_PERM_W | NRF_PERM_X | NRF_PERM_S) +#define NRF_PERM_RWXS (NRF_PERM_R | NRF_PERM_W | NRF_PERM_X | NRF_PERM_S) + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_RESERVED_MEMORY_NORDIC_OWNED_MEMORY_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reset/rp2040_reset.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reset/rp2040_reset.h new file mode 100644 index 00000000..eeb253c3 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reset/rp2040_reset.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2021 Yonatan Schachter + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_RESET_RP2040_RESET_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_RESET_RP2040_RESET_H_ + +#define RPI_PICO_RESETS_RESET_ADC 0 +#define RPI_PICO_RESETS_RESET_BUSCTRL 1 +#define RPI_PICO_RESETS_RESET_DMA 2 +#define RPI_PICO_RESETS_RESET_I2C0 3 +#define RPI_PICO_RESETS_RESET_I2C1 4 +#define RPI_PICO_RESETS_RESET_IO_BANK0 5 +#define RPI_PICO_RESETS_RESET_IO_QSPI 6 +#define RPI_PICO_RESETS_RESET_JTAG 7 +#define RPI_PICO_RESETS_RESET_PADS_BANK0 8 +#define RPI_PICO_RESETS_RESET_PADS_QSPI 9 +#define RPI_PICO_RESETS_RESET_PIO0 10 +#define RPI_PICO_RESETS_RESET_PIO1 11 +#define RPI_PICO_RESETS_RESET_PLL_SYS 12 +#define RPI_PICO_RESETS_RESET_PLL_USB 13 +#define RPI_PICO_RESETS_RESET_PWM 14 +#define RPI_PICO_RESETS_RESET_RTC 15 +#define RPI_PICO_RESETS_RESET_SPI0 16 +#define RPI_PICO_RESETS_RESET_SPI1 17 +#define RPI_PICO_RESETS_RESET_SYSCFG 18 +#define RPI_PICO_RESETS_RESET_SYSINFO 19 +#define RPI_PICO_RESETS_RESET_TBMAN 20 +#define RPI_PICO_RESETS_RESET_TIMER 21 +#define RPI_PICO_RESETS_RESET_UART0 22 +#define RPI_PICO_RESETS_RESET_UART1 23 +#define RPI_PICO_RESETS_RESET_USBCTRL 24 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_RESET_RP2040_RESET_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reset/stm32u0_reset.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reset/stm32u0_reset.h new file mode 100644 index 00000000..424f836a --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reset/stm32u0_reset.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_RESET_STM32U0_RESET_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_RESET_STM32U0_RESET_H_ + +#include "stm32-common.h" + +/* RCC bus reset register offset */ +#define STM32_RESET_BUS_IOP 0x2C +#define STM32_RESET_BUS_AHB1 0x28 +#define STM32_RESET_BUS_APB1L 0x38 +#define STM32_RESET_BUS_APB1H 0x40 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_RESET_STM32U0_RESET_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reset/stm32wb0_reset.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reset/stm32wb0_reset.h new file mode 100644 index 00000000..8fe2a84a --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/reset/stm32wb0_reset.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_RESET_STM32WB0_RESET_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_RESET_STM32WB0_RESET_H_ + +#include "stm32-common.h" + +/* RCC bus reset register offset */ +#define STM32_RESET_BUS_AHB0 0x30 +#define STM32_RESET_BUS_APB0 0x34 +#define STM32_RESET_BUS_APB1 0x38 +#define STM32_RESET_BUS_APB2 0x3C + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_RESET_STM32WB0_RESET_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/apds9253.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/apds9253.h new file mode 100644 index 00000000..0768ec4f --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/apds9253.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2017 Intel Corporation + * Copyright (c) 2018 PHYTEC Messtechnik GmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_SENSOR_APDS9253_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_SENSOR_APDS9253_H_ + +#include + +/** + * @name apds9253 resolution channel references + * @{ + */ + +#define APDS9253_RESOLUTION_20BIT_400MS 0 +#define APDS9253_RESOLUTION_19BIT_200MS BIT(4) +#define APDS9253_RESOLUTION_18BIT_100MS BIT(5) /* default */ +#define APDS9253_RESOLUTION_17BIT_50MS (BIT(5) | BIT(4)) +#define APDS9253_RESOLUTION_16BIT_25MS BIT(6) +#define APDS9253_RESOLUTION_13BIT_3MS (BIT(6) | BIT(4)) + +/** @} */ + +/** + * @name apds9253 measurement rate + * @{ + */ + +#define APDS9253_MEASUREMENT_RATE_2000MS (BIT(2) | BIT(1) | BIT(0)) +#define APDS9253_MEASUREMENT_RATE_1000MS (BIT(2) | BIT(0)) +#define APDS9253_MEASUREMENT_RATE_500MS BIT(2) +#define APDS9253_MEASUREMENT_RATE_200MS (BIT(1) | BIT(0)) +#define APDS9253_MEASUREMENT_RATE_100MS BIT(1) /* default */ +#define APDS9253_MEASUREMENT_RATE_50MS BIT(0) +#define APDS9253_MEASUREMENT_RATE_25MS 0 + +/** @} */ + +/** + * @name apds9253 gain range + * @{ + */ + +#define APDS9253_GAIN_RANGE_18 BIT(2) +#define APDS9253_GAIN_RANGE_9 (BIT(1) | BIT(0)) +#define APDS9253_GAIN_RANGE_6 BIT(1) +#define APDS9253_GAIN_RANGE_3 BIT(0) /* default */ +#define APDS9253_GAIN_RANGE_1 0 + +/** @} */ + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_SENSOR_APDS9253_H_*/ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lis2dw12.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lis2dw12.h index 9e5892ec..e5d2e048 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lis2dw12.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lis2dw12.h @@ -39,4 +39,22 @@ #define LIS2DW12_DT_WAKEUP_3_ODR 2 #define LIS2DW12_DT_WAKEUP_4_ODR 3 +/* sleep duration */ +#define LIS2DW12_DT_SLEEP_0_ODR 0 +#define LIS2DW12_DT_SLEEP_1_ODR 1 +#define LIS2DW12_DT_SLEEP_2_ODR 2 +#define LIS2DW12_DT_SLEEP_3_ODR 3 +#define LIS2DW12_DT_SLEEP_4_ODR 4 +#define LIS2DW12_DT_SLEEP_5_ODR 5 +#define LIS2DW12_DT_SLEEP_6_ODR 6 +#define LIS2DW12_DT_SLEEP_7_ODR 7 +#define LIS2DW12_DT_SLEEP_8_ODR 8 +#define LIS2DW12_DT_SLEEP_9_ODR 9 +#define LIS2DW12_DT_SLEEP_10_ODR 10 +#define LIS2DW12_DT_SLEEP_11_ODR 11 +#define LIS2DW12_DT_SLEEP_12_ODR 12 +#define LIS2DW12_DT_SLEEP_13_ODR 13 +#define LIS2DW12_DT_SLEEP_14_ODR 14 +#define LIS2DW12_DT_SLEEP_15_ODR 15 + #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_ST_LIS2DW12_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lps2xdf.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lps2xdf.h index bcbb831b..b1dffa81 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lps2xdf.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lps2xdf.h @@ -37,4 +37,8 @@ #define LPS28DFW_DT_FS_MODE_1_1260 0 #define LPS28DFW_DT_FS_MODE_2_4060 1 +/* Full Scale Pressure Mode */ +#define ILPS22QS_DT_FS_MODE_1_1260 0 +#define ILPS22QS_DT_FS_MODE_2_4060 1 + #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_ST_LPS22DF_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lsm6dsv16x.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lsm6dsv16x.h index 533dd5e3..76caabbd 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lsm6dsv16x.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lsm6dsv16x.h @@ -55,4 +55,40 @@ #define LSM6DSV16X_DT_ODR_HA02_AT_3200Hz 0x2B #define LSM6DSV16X_DT_ODR_HA02_AT_6400Hz 0x2C +/* Accelerometer batching rates */ +#define LSM6DSV16X_DT_XL_NOT_BATCHED 0x0 +#define LSM6DSV16X_DT_XL_BATCHED_AT_1Hz875 0x1 +#define LSM6DSV16X_DT_XL_BATCHED_AT_7Hz5 0x2 +#define LSM6DSV16X_DT_XL_BATCHED_AT_15Hz 0x3 +#define LSM6DSV16X_DT_XL_BATCHED_AT_30Hz 0x4 +#define LSM6DSV16X_DT_XL_BATCHED_AT_60Hz 0x5 +#define LSM6DSV16X_DT_XL_BATCHED_AT_120Hz 0x6 +#define LSM6DSV16X_DT_XL_BATCHED_AT_240Hz 0x7 +#define LSM6DSV16X_DT_XL_BATCHED_AT_480Hz 0x8 +#define LSM6DSV16X_DT_XL_BATCHED_AT_960Hz 0x9 +#define LSM6DSV16X_DT_XL_BATCHED_AT_1920Hz 0xa +#define LSM6DSV16X_DT_XL_BATCHED_AT_3840Hz 0xb +#define LSM6DSV16X_DT_XL_BATCHED_AT_7680Hz 0xc + +/* Gyroscope batching rates */ +#define LSM6DSV16X_DT_GY_NOT_BATCHED 0x0 +#define LSM6DSV16X_DT_GY_BATCHED_AT_1Hz875 0x1 +#define LSM6DSV16X_DT_GY_BATCHED_AT_7Hz5 0x2 +#define LSM6DSV16X_DT_GY_BATCHED_AT_15Hz 0x3 +#define LSM6DSV16X_DT_GY_BATCHED_AT_30Hz 0x4 +#define LSM6DSV16X_DT_GY_BATCHED_AT_60Hz 0x5 +#define LSM6DSV16X_DT_GY_BATCHED_AT_120Hz 0x6 +#define LSM6DSV16X_DT_GY_BATCHED_AT_240Hz 0x7 +#define LSM6DSV16X_DT_GY_BATCHED_AT_480Hz 0x8 +#define LSM6DSV16X_DT_GY_BATCHED_AT_960Hz 0x9 +#define LSM6DSV16X_DT_GY_BATCHED_AT_1920Hz 0xa +#define LSM6DSV16X_DT_GY_BATCHED_AT_3840Hz 0xb +#define LSM6DSV16X_DT_GY_BATCHED_AT_7680Hz 0xc + +/* Temperature sensor batching rates */ +#define LSM6DSV16X_DT_TEMP_NOT_BATCHED 0x0 +#define LSM6DSV16X_DT_TEMP_BATCHED_AT_1Hz875 0x1 +#define LSM6DSV16X_DT_TEMP_BATCHED_AT_15Hz 0x2 +#define LSM6DSV16X_DT_TEMP_BATCHED_AT_60Hz 0x3 + #endif /* ZEPHYR_INCLUDE_DT_BINDINGS_ST_LSM6DSV16X_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lsm9ds1.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lsm9ds1.h new file mode 100644 index 00000000..747d145e --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/lsm9ds1.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2024 Bootlin + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_ST_LSM9DS1_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_ST_LSM9DS1_H_ + +/* Accel range */ +#define LSM9DS1_DT_FS_2G 0 +#define LSM9DS1_DT_FS_16G 1 +#define LSM9DS1_DT_FS_4G 2 +#define LSM9DS1_DT_FS_8G 3 + +#define LSM9DS1_DT_FS_245DPS 0 +#define LSM9DS1_DT_FS_500DPS 1 +#define LSM9DS1_DT_FS_2000DPS 3 + +#define LSM9DS1_IMU_OFF 0x00 +#define LSM9DS1_GY_OFF_XL_10Hz 0x10 +#define LSM9DS1_GY_OFF_XL_50Hz 0x20 +#define LSM9DS1_GY_OFF_XL_119Hz 0x30 +#define LSM9DS1_GY_OFF_XL_238Hz 0x40 +#define LSM9DS1_GY_OFF_XL_476Hz 0x50 +#define LSM9DS1_GY_OFF_XL_952Hz 0x60 +#define LSM9DS1_XL_OFF_GY_14Hz9 0x01 +#define LSM9DS1_XL_OFF_GY_59Hz5 0x02 +#define LSM9DS1_XL_OFF_GY_119Hz 0x03 +#define LSM9DS1_XL_OFF_GY_238Hz 0x04 +#define LSM9DS1_XL_OFF_GY_476Hz 0x05 +#define LSM9DS1_XL_OFF_GY_952Hz 0x06 +#define LSM9DS1_IMU_14Hz9 0x11 +#define LSM9DS1_IMU_59Hz5 0x22 +#define LSM9DS1_IMU_119Hz 0x33 +#define LSM9DS1_IMU_238Hz 0x44 +#define LSM9DS1_IMU_476Hz 0x55 +#define LSM9DS1_IMU_952Hz 0x66 +#define LSM9DS1_XL_OFF_GY_14Hz9_LP 0x81 +#define LSM9DS1_XL_OFF_GY_59Hz5_LP 0x82 +#define LSM9DS1_XL_OFF_GY_119Hz_LP 0x83 +#define LSM9DS1_IMU_14Hz9_LP 0x91 +#define LSM9DS1_IMU_59Hz5_LP 0xA2 +#define LSM9DS1_IMU_119Hz_LP 0xB3 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_ST_LSM9DS1_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/mc3419.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/mc3419.h new file mode 100644 index 00000000..9219f5c9 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/mc3419.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2024 Croxel Inc + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_MEMSIC_MC3419_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_MEMSIC_MC3419_H_ + +/** + * @defgroup MC3419 Memsic DT Options + * @ingroup sensor_interface + * @{ + */ + +/** + * @defgroup MC3419_LPF_CONFIGS Lowe pass filter configurations + * @{ + */ +#define MC3419_LPF_DISABLE 0 +#define MC3419_LPF_EN_WITH_IDR_BY_4p255_FC 9 +#define MC3419_LPF_EN_WITH_IDR_BY_6_FC 10 +#define MC3419_LPF_EN_WITH_IDR_BY_12_FC 11 +#define MC3419_LPF_EN_WITH_IDR_BY_16_FC 13 +/** @} */ + +/** + * @defgroup MC3419_DECIMATION_RATES decimate sampling rate by provided rate + * @{ + */ +#define MC3419_DECIMATE_IDR_BY_1 0 +#define MC3419_DECIMATE_IDR_BY_2 1 +#define MC3419_DECIMATE_IDR_BY_4 2 +#define MC3419_DECIMATE_IDR_BY_5 3 +#define MC3419_DECIMATE_IDR_BY_8 4 +#define MC3419_DECIMATE_IDR_BY_10 5 +#define MC3419_DECIMATE_IDR_BY_16 6 +#define MC3419_DECIMATE_IDR_BY_20 7 +#define MC3419_DECIMATE_IDR_BY_40 8 +#define MC3419_DECIMATE_IDR_BY_67 9 +#define MC3419_DECIMATE_IDR_BY_80 10 +#define MC3419_DECIMATE_IDR_BY_100 11 +#define MC3419_DECIMATE_IDR_BY_200 12 +#define MC3419_DECIMATE_IDR_BY_250 13 +#define MC3419_DECIMATE_IDR_BY_500 14 +#define MC3419_DECIMATE_IDR_BY_1000 15 +/** @} */ + +/** @} */ + +#endif /*ZEPHYR_INCLUDE_DT_BINDINGS_MEMSIC_MC3419_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/tmp116.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/tmp116.h new file mode 100644 index 00000000..fa7c1363 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/sensor/tmp116.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2024 Vitrolife A/S + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_TI_TMP116_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_TI_TMP116_H_ + +/** + * @defgroup TMP116 Texas Instruments (TI) TMP116 DT Options + * @ingroup sensor_interface + * @{ + */ + +/** + * @defgroup TMP116_ODR Temperature output data rate + * @{ + */ +#define TMP116_DT_ODR_15_5_MS 0 +#define TMP116_DT_ODR_125_MS 0x80 +#define TMP116_DT_ODR_250_MS 0x100 +#define TMP116_DT_ODR_500_MS 0x180 +#define TMP116_DT_ODR_1000_MS 0x200 +#define TMP116_DT_ODR_4000_MS 0x280 +#define TMP116_DT_ODR_8000_MS 0x300 +#define TMP116_DT_ODR_16000_MS 0x380 +/** @} */ + +/** @} */ + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_TI_TMP116_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/video/video-interfaces.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/video/video-interfaces.h new file mode 100644 index 00000000..062c1b5b --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/dt-bindings/video/video-interfaces.h @@ -0,0 +1,17 @@ +/* + * Copyright 2024 NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_VIDEO_INTERFACES_H_ +#define ZEPHYR_INCLUDE_DT_BINDINGS_VIDEO_INTERFACES_H_ + +#define VIDEO_BUS_TYPE_CSI2_CPHY 1 +#define VIDEO_BUS_TYPE_CSI1 2 +#define VIDEO_BUS_TYPE_CCP2 3 +#define VIDEO_BUS_TYPE_CSI2_DPHY 4 +#define VIDEO_BUS_TYPE_PARALLEL 5 +#define VIDEO_BUS_TYPE_BT656 6 + +#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_VIDEO_INTERFACES_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/fs/nvs.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/fs/nvs.h index 313e9016..df70b64f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/fs/nvs.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/fs/nvs.h @@ -164,6 +164,30 @@ ssize_t nvs_read_hist(struct nvs_fs *fs, uint16_t id, void *data, size_t len, ui */ ssize_t nvs_calc_free_space(struct nvs_fs *fs); +/** + * @brief Tell how many contiguous free space remains in the currently active NVS sector. + * + * @param fs Pointer to the file system. + * + * @return Number of free bytes. + */ +size_t nvs_sector_max_data_size(struct nvs_fs *fs); + +/** + * @brief Close the currently active sector and switch to the next one. + * + * @note The garbage collector is called on the new sector. + * + * @warning This routine is made available for specific use cases. + * It breaks the aim of the NVS to avoid any unnecessary flash erases. + * Using this routine extensively can result in premature failure of the flash device. + * + * @param fs Pointer to the file system. + * + * @return 0 on success. On error, returns negative value of errno.h defined error codes. + */ +int nvs_sector_use_next(struct nvs_fs *fs); + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/fs/zms.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/fs/zms.h new file mode 100644 index 00000000..0f0fbb82 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/fs/zms.h @@ -0,0 +1,211 @@ +/* Copyright (c) 2024 BayLibre SAS + * + * SPDX-License-Identifier: Apache-2.0 + * + * ZMS: Zephyr Memory Storage + */ +#ifndef ZEPHYR_INCLUDE_FS_ZMS_H_ +#define ZEPHYR_INCLUDE_FS_ZMS_H_ + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup zms Zephyr Memory Storage (ZMS) + * @ingroup file_system_storage + * @{ + * @} + */ + +/** + * @defgroup zms_data_structures ZMS data structures + * @ingroup zms + * @{ + */ + +/** Zephyr Memory Storage file system structure */ +struct zms_fs { + /** File system offset in flash */ + off_t offset; + /** Allocation Table Entry (ATE) write address. + * Addresses are stored as `uint64_t`: + * - high 4 bytes correspond to the sector + * - low 4 bytes are the offset in the sector + */ + uint64_t ate_wra; + /** Data write address */ + uint64_t data_wra; + /** Storage system is split into sectors. The sector size must be a multiple of + * `erase-block-size` if the device has erase capabilities + */ + uint32_t sector_size; + /** Number of sectors in the file system */ + uint32_t sector_count; + /** Current cycle counter of the active sector (pointed to by `ate_wra`) */ + uint8_t sector_cycle; + /** Flag indicating if the file system is initialized */ + bool ready; + /** Mutex used to lock flash writes */ + struct k_mutex zms_lock; + /** Flash device runtime structure */ + const struct device *flash_device; + /** Flash memory parameters structure */ + const struct flash_parameters *flash_parameters; + /** Size of an Allocation Table Entry */ + size_t ate_size; +#if CONFIG_ZMS_LOOKUP_CACHE + /** Lookup table used to cache ATE addresses of written IDs */ + uint64_t lookup_cache[CONFIG_ZMS_LOOKUP_CACHE_SIZE]; +#endif +}; + +/** + * @} + */ + +/** + * @defgroup zms_high_level_api ZMS API + * @ingroup zms + * @{ + */ + +/** + * @brief Mount a ZMS file system onto the device specified in `fs`. + * + * @param fs Pointer to the file system. + * @retval 0 Success + * @retval -ERRNO Negative errno code on error + */ +int zms_mount(struct zms_fs *fs); + +/** + * @brief Clear the ZMS file system from device. + * + * @param fs Pointer to the file system. + * @retval 0 Success + * @retval -ERRNO Negative errno code on error + */ +int zms_clear(struct zms_fs *fs); + +/** + * @brief Write an entry to the file system. + * + * @note When the `len` parameter is equal to `0` the entry is effectively removed (it is + * equivalent to calling @ref zms_delete()). It is not possible to distinguish between a deleted + * entry and an entry with data of length 0. + * + * @param fs Pointer to the file system. + * @param id ID of the entry to be written + * @param data Pointer to the data to be written + * @param len Number of bytes to be written (maximum 64 KiB) + * + * @return Number of bytes written. On success, it will be equal to the number of bytes requested + * to be written or 0. + * When a rewrite of the same data already stored is attempted, nothing is written to flash, + * thus 0 is returned. On error, returns negative value of error codes defined in `errno.h`. + */ +ssize_t zms_write(struct zms_fs *fs, uint32_t id, const void *data, size_t len); + +/** + * @brief Delete an entry from the file system + * + * @param fs Pointer to the file system. + * @param id ID of the entry to be deleted + * @retval 0 Success + * @retval -ERRNO Negative errno code on error + */ +int zms_delete(struct zms_fs *fs, uint32_t id); + +/** + * @brief Read an entry from the file system. + * + * @param fs Pointer to the file system. + * @param id ID of the entry to be read + * @param data Pointer to data buffer + * @param len Number of bytes to read at most + * + * @return Number of bytes read. On success, it will be equal to the number of bytes requested + * to be read or less than that if the stored data has a smaller size than the requested one. + * On error, returns negative value of error codes defined in `errno.h`. + */ +ssize_t zms_read(struct zms_fs *fs, uint32_t id, void *data, size_t len); + +/** + * @brief Read a history entry from the file system. + * + * @param fs Pointer to the file system. + * @param id ID of the entry to be read + * @param data Pointer to data buffer + * @param len Number of bytes to be read + * @param cnt History counter: 0: latest entry, 1: one before latest ... + * + * @return Number of bytes read. On success, it will be equal to the number of bytes requested + * to be read. When the return value is larger than the number of bytes requested to read this + * indicates not all bytes were read, and more data is available. On error, returns negative + * value of error codes defined in `errno.h`. + */ +ssize_t zms_read_hist(struct zms_fs *fs, uint32_t id, void *data, size_t len, uint32_t cnt); + +/** + * @brief Gets the length of the data that is stored in an entry with a given ID + * + * @param fs Pointer to the file system. + * @param id ID of the entry whose data length to retrieve. + * + * @return Data length contained in the ATE. On success, it will be equal to the number of bytes + * in the ATE. On error, returns negative value of error codes defined in `errno.h`. + */ +ssize_t zms_get_data_length(struct zms_fs *fs, uint32_t id); + +/** + * @brief Calculate the available free space in the file system. + * + * @param fs Pointer to the file system. + * + * @return Number of free bytes. On success, it will be equal to the number of bytes that can + * still be written to the file system. + * Calculating the free space is a time-consuming operation, especially on SPI flash. + * On error, returns negative value of error codes defined in `errno.h`. + */ +ssize_t zms_calc_free_space(struct zms_fs *fs); + +/** + * @brief Tell how much contiguous free space remains in the currently active ZMS sector. + * + * @param fs Pointer to the file system. + * + * @return Number of free bytes. + */ +size_t zms_active_sector_free_space(struct zms_fs *fs); + +/** + * @brief Close the currently active sector and switch to the next one. + * + * @note The garbage collector is called on the new sector. + * + * @warning This routine is made available for specific use cases. + * It collides with ZMS's goal of avoiding any unnecessary flash erase operations. + * Using this routine extensively can result in premature failure of the flash device. + * + * @param fs Pointer to the file system. + * + * @return 0 on success. On error, returns negative value of error codes defined in `errno.h`. + */ +int zms_sector_use_next(struct zms_fs *fs); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_FS_ZMS_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/input/input.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/input/input.h index 32e9bf9f..e43f14c6 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/input/input.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/input/input.h @@ -124,9 +124,26 @@ struct input_callback { /** @ref device pointer or NULL. */ const struct device *dev; /** The callback function. */ - void (*callback)(struct input_event *evt); + void (*callback)(struct input_event *evt, void *user_data); + /** User data pointer. */ + void *user_data; }; +/** + * @brief Register a callback structure for input events with a custom name. + * + * Same as @ref INPUT_CALLBACK_DEFINE but allows specifying a custom name + * for the callback structure. Useful if multiple callbacks are used for the + * same callback function. + */ +#define INPUT_CALLBACK_DEFINE_NAMED(_dev, _callback, _user_data, name) \ + static const STRUCT_SECTION_ITERABLE(input_callback, \ + _input_callback__##name) = { \ + .dev = _dev, \ + .callback = _callback, \ + .user_data = _user_data, \ + } + /** * @brief Register a callback structure for input events. * @@ -136,13 +153,10 @@ struct input_callback { * * @param _dev @ref device pointer or NULL. * @param _callback The callback function. + * @param _user_data Pointer to user specified data. */ -#define INPUT_CALLBACK_DEFINE(_dev, _callback) \ - static const STRUCT_SECTION_ITERABLE(input_callback, \ - _input_callback__##_callback) = { \ - .dev = _dev, \ - .callback = _callback, \ - } +#define INPUT_CALLBACK_DEFINE(_dev, _callback, _user_data) \ + INPUT_CALLBACK_DEFINE_NAMED(_dev, _callback, _user_data, _callback) #ifdef __cplusplus } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/input/input_kbd_matrix.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/input/input_kbd_matrix.h index bb164e6f..16391d8f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/input/input_kbd_matrix.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/input/input_kbd_matrix.h @@ -16,6 +16,8 @@ #include #include +#include +#include #include #include #include @@ -111,6 +113,7 @@ struct input_kbd_matrix_common_config { uint8_t row_size; uint8_t col_size; uint32_t poll_period_us; + uint32_t stable_poll_period_us; uint32_t poll_timeout_ms; uint32_t debounce_down_us; uint32_t debounce_up_us; @@ -190,6 +193,9 @@ struct input_kbd_matrix_common_config { .row_size = _row_size, \ .col_size = _col_size, \ .poll_period_us = DT_PROP(node_id, poll_period_ms) * USEC_PER_MSEC, \ + .stable_poll_period_us = DT_PROP_OR(node_id, stable_poll_period_ms, \ + DT_PROP(node_id, poll_period_ms)) * \ + USEC_PER_MSEC, \ .poll_timeout_ms = DT_PROP(node_id, poll_timeout_ms), \ .debounce_down_us = DT_PROP(node_id, debounce_down_ms) * USEC_PER_MSEC, \ .debounce_up_us = DT_PROP(node_id, debounce_up_ms) * USEC_PER_MSEC, \ @@ -248,6 +254,9 @@ struct input_kbd_matrix_common_data { uint8_t scan_cycles_idx; struct k_sem poll_lock; +#ifdef CONFIG_PM_DEVICE + atomic_t suspended; +#endif struct k_thread thread; @@ -305,6 +314,20 @@ void input_kbd_matrix_drive_column_hook(const struct device *dev, int col); */ int input_kbd_matrix_common_init(const struct device *dev); +#ifdef CONFIG_PM_DEVICE +/** + * @brief Common power management action handler. + * + * This handles PM actions for a keyboard matrix device, meant to be used as + * argument of @ref PM_DEVICE_DT_INST_DEFINE. + * + * @param dev Keyboard matrix device instance. + * @param action The power management action to handle. + */ +int input_kbd_matrix_pm_action(const struct device *dev, + enum pm_device_action action); +#endif + /** @} */ #endif /* ZEPHYR_INCLUDE_INPUT_KBD_MATRIX_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/input/input_touch.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/input/input_touch.h new file mode 100644 index 00000000..45010741 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/input/input_touch.h @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2024 Antmicro + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_INPUT_TOUCH_H_ +#define ZEPHYR_INCLUDE_INPUT_TOUCH_H_ + +/** + * @brief Touch Events API + * @defgroup touch_events Touchscreen Event Report API + * @since 3.7 + * @version 0.1.0 + * @ingroup io_interfaces + * @{ + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Common touchscreen config. + * + * This structure **must** be placed first in the driver's config structure. + * + * @param screen_width Horizontal resolution of touchscreen + * @param screen_height Vertical resolution of touchscreen + * @param inverted_x X axis is inverted + * @param inverted_y Y axis is inverted + * @param swapped_x_y X and Y axes are swapped + * + * see touchscreem-common.yaml for more details + */ +struct input_touchscreen_common_config { + uint32_t screen_width; + uint32_t screen_height; + bool inverted_x; + bool inverted_y; + bool swapped_x_y; +}; + +/** + * @brief Initialize common touchscreen config from devicetree + * + * @param node_id The devicetree node identifier. + */ +#define INPUT_TOUCH_DT_COMMON_CONFIG_INIT(node_id) \ + { \ + .screen_width = DT_PROP(node_id, screen_width), \ + .screen_height = DT_PROP(node_id, screen_height), \ + .inverted_x = DT_PROP(node_id, inverted_x), \ + .inverted_y = DT_PROP(node_id, inverted_y), \ + .swapped_x_y = DT_PROP(node_id, swapped_x_y) \ + } + +/** + * @brief Initialize common touchscreen config from devicetree instance. + * + * @param inst Instance. + */ +#define INPUT_TOUCH_DT_INST_COMMON_CONFIG_INIT(inst) \ + INPUT_TOUCH_DT_COMMON_CONFIG_INIT(DT_DRV_INST(inst)) + +/** + * @brief Validate the offset of the common config structure. + * + * @param config Name of the config structure. + */ +#define INPUT_TOUCH_STRUCT_CHECK(config) \ + BUILD_ASSERT(offsetof(config, common) == 0, \ + "struct input_touchscreen_common_config must be placed first"); + +/** + * @brief Common utility for reporting touchscreen position events. + * + * @param dev Touchscreen controller + * @param x X coordinate as reported by the controller + * @param y Y coordinate as reported by the controller + * @param timeout Timeout for reporting the event + */ +void input_touchscreen_report_pos(const struct device *dev, + uint32_t x, uint32_t y, + k_timeout_t timeout); + +#ifdef __cplusplus +} +#endif + +/** @} */ + +#endif /* ZEPHYR_INCLUDE_INPUT_TOUCH_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/internal/syscall_handler.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/internal/syscall_handler.h index b48070fa..a1264d6c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/internal/syscall_handler.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/internal/syscall_handler.h @@ -62,7 +62,7 @@ static inline bool k_is_in_user_syscall(void) * calls from supervisor mode bypass everything directly to * the implementation function. */ - return !k_is_in_isr() && (_current->syscall_frame != NULL); + return !k_is_in_isr() && (arch_current_thread()->syscall_frame != NULL); } /** @@ -350,7 +350,7 @@ int k_usermode_string_copy(char *dst, const char *src, size_t maxlen); #define K_OOPS(expr) \ do { \ if (expr) { \ - arch_syscall_oops(_current->syscall_frame); \ + arch_syscall_oops(arch_current_thread()->syscall_frame); \ } \ } while (false) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/ipc/icmsg.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/ipc/icmsg.h index 80e34120..6e4cbaea 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/ipc/icmsg.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/ipc/icmsg.h @@ -51,8 +51,10 @@ struct icmsg_data_t { /* General */ const struct icmsg_config_t *cfg; +#ifdef CONFIG_MULTITHREADING struct k_work_delayable notify_work; struct k_work mbox_work; +#endif atomic_t state; }; @@ -64,7 +66,7 @@ struct icmsg_data_t { * completed. * This function is intended to be called late in the initialization process, * possibly from a thread which can be safely blocked while handshake with the - * remote instance is being pefromed. + * remote instance is being performed. * * @param[in] conf Structure containing configuration parameters for the icmsg * instance. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/ipc/ipc_static_vrings.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/ipc/ipc_static_vrings.h index d82144f4..2450e85d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/ipc/ipc_static_vrings.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/ipc/ipc_static_vrings.h @@ -9,7 +9,6 @@ #include #include -#include #ifdef __cplusplus extern "C" { @@ -55,9 +54,6 @@ struct ipc_static_vrings { /** SHM physmap. */ metal_phys_addr_t shm_physmap[1]; - /** SHM device. */ - struct metal_device shm_device; - /** SHM and addresses. */ uintptr_t status_reg_addr; @@ -77,7 +73,7 @@ struct ipc_static_vrings { size_t shm_size; /** SHM IO region. */ - struct metal_io_region *shm_io; + struct metal_io_region shm_io; /** VRINGs */ struct virtio_vring_info rvrings[VRING_COUNT]; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/ipc/pbuf.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/ipc/pbuf.h index 0be5bd51..8783cdbb 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/ipc/pbuf.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/ipc/pbuf.h @@ -35,6 +35,13 @@ extern "C" { */ #define _PBUF_MIN_DATA_LEN ROUND_UP(PBUF_PACKET_LEN_SZ + 1 + _PBUF_IDX_SIZE, _PBUF_IDX_SIZE) +#if defined(CONFIG_ARCH_POSIX) +/* For the native simulated boards we need to modify some pointers at init */ +#define PBUF_MAYBE_CONST +#else +#define PBUF_MAYBE_CONST const +#endif + /** @brief Control block of packet buffer. * * The structure contains configuration data. @@ -87,9 +94,9 @@ struct pbuf_data { * written in a way to protect the data from being corrupted. */ struct pbuf { - const struct pbuf_cfg *const cfg; /* Configuration of the - * buffer. - */ + PBUF_MAYBE_CONST struct pbuf_cfg *const cfg; /* Configuration of the + * buffer. + */ struct pbuf_data data; /* Data used to read and write * to the buffer */ @@ -144,17 +151,32 @@ struct pbuf { "Misaligned memory."); \ BUILD_ASSERT(size >= (MAX(dcache_align, _PBUF_IDX_SIZE) + _PBUF_IDX_SIZE + \ _PBUF_MIN_DATA_LEN), "Insufficient size."); \ - \ - static const struct pbuf_cfg cfg_##name = \ + static PBUF_MAYBE_CONST struct pbuf_cfg cfg_##name = \ PBUF_CFG_INIT(mem_addr, size, dcache_align); \ static struct pbuf name = { \ .cfg = &cfg_##name, \ } /** - * @brief Initialize the packet buffer. + * @brief Initialize the Tx packet buffer. + * + * This function initializes the Tx packet buffer based on provided configuration. + * If the configuration is incorrect, the function will return error. + * + * It is recommended to use PBUF_DEFINE macro for build time initialization. + * + * @param pb Pointer to the packed buffer containing + * configuration and data. Configuration has to be + * fixed before the initialization. + * @retval 0 on success. + * @retval -EINVAL when the input parameter is incorrect. + */ +int pbuf_tx_init(struct pbuf *pb); + +/** + * @brief Initialize the Rx packet buffer. * - * This function initializes the packet buffer based on provided configuration. + * This function initializes the Rx packet buffer. * If the configuration is incorrect, the function will return error. * * It is recommended to use PBUF_DEFINE macro for build time initialization. @@ -165,7 +187,7 @@ struct pbuf { * @retval 0 on success. * @retval -EINVAL when the input parameter is incorrect. */ -int pbuf_init(struct pbuf *pb); +int pbuf_rx_init(struct pbuf *pb); /** * @brief Write specified amount of data to the packet buffer. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/irq_multilevel.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/irq_multilevel.h index 3dbb58f3..dc18c304 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/irq_multilevel.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/irq_multilevel.h @@ -21,6 +21,64 @@ extern "C" { #endif #if defined(CONFIG_MULTI_LEVEL_INTERRUPTS) || defined(__DOXYGEN__) + +typedef union _z_irq { + /* Zephyr multilevel-encoded IRQ */ + uint32_t irq; + + /* Interrupt bits */ + struct { + /* First level interrupt bits */ + uint32_t l1: CONFIG_1ST_LEVEL_INTERRUPT_BITS; + /* Second level interrupt bits */ + uint32_t l2: CONFIG_2ND_LEVEL_INTERRUPT_BITS; + /* Third level interrupt bits */ + uint32_t l3: CONFIG_3RD_LEVEL_INTERRUPT_BITS; + } bits; + + /* Third level IRQ's interrupt controller */ + struct { + /* IRQ of the third level interrupt aggregator */ + uint32_t irq: CONFIG_1ST_LEVEL_INTERRUPT_BITS + CONFIG_2ND_LEVEL_INTERRUPT_BITS; + } l3_intc; + + /* Second level IRQ's interrupt controller */ + struct { + /* IRQ of the second level interrupt aggregator */ + uint32_t irq: CONFIG_1ST_LEVEL_INTERRUPT_BITS; + } l2_intc; +} _z_irq_t; + +BUILD_ASSERT(sizeof(_z_irq_t) == sizeof(uint32_t), "Size of `_z_irq_t` must equal to `uint32_t`"); + +static inline uint32_t _z_l1_irq(_z_irq_t irq) +{ + return irq.bits.l1; +} + +static inline uint32_t _z_l2_irq(_z_irq_t irq) +{ + return irq.bits.l2 - 1; +} + +static inline uint32_t _z_l3_irq(_z_irq_t irq) +{ + return irq.bits.l3 - 1; +} + +static inline unsigned int _z_irq_get_level(_z_irq_t z_irq) +{ + if (z_irq.bits.l3 != 0) { + return 3; + } + + if (z_irq.bits.l2 != 0) { + return 2; + } + + return 1; +} + /** * @brief Return IRQ level * This routine returns the interrupt level number of the provided interrupt. @@ -31,20 +89,11 @@ extern "C" { */ static inline unsigned int irq_get_level(unsigned int irq) { - const uint32_t mask2 = BIT_MASK(CONFIG_2ND_LEVEL_INTERRUPT_BITS) << - CONFIG_1ST_LEVEL_INTERRUPT_BITS; - const uint32_t mask3 = BIT_MASK(CONFIG_3RD_LEVEL_INTERRUPT_BITS) << - (CONFIG_1ST_LEVEL_INTERRUPT_BITS + CONFIG_2ND_LEVEL_INTERRUPT_BITS); - - if (IS_ENABLED(CONFIG_3RD_LEVEL_INTERRUPTS) && (irq & mask3) != 0) { - return 3; - } + _z_irq_t z_irq = { + .irq = irq, + }; - if (IS_ENABLED(CONFIG_2ND_LEVEL_INTERRUPTS) && (irq & mask2) != 0) { - return 2; - } - - return 1; + return _z_irq_get_level(z_irq); } /** @@ -59,12 +108,11 @@ static inline unsigned int irq_get_level(unsigned int irq) */ static inline unsigned int irq_from_level_2(unsigned int irq) { - if (IS_ENABLED(CONFIG_3RD_LEVEL_INTERRUPTS)) { - return ((irq >> CONFIG_1ST_LEVEL_INTERRUPT_BITS) & - BIT_MASK(CONFIG_2ND_LEVEL_INTERRUPT_BITS)) - 1; - } else { - return (irq >> CONFIG_1ST_LEVEL_INTERRUPT_BITS) - 1; - } + _z_irq_t z_irq = { + .irq = irq, + }; + + return _z_l2_irq(z_irq); } /** @@ -90,7 +138,15 @@ static inline unsigned int irq_from_level_2(unsigned int irq) */ static inline unsigned int irq_to_level_2(unsigned int irq) { - return IRQ_TO_L2(irq); + _z_irq_t z_irq = { + .bits = { + .l1 = 0, + .l2 = irq + 1, + .l3 = 0, + }, + }; + + return z_irq.irq; } /** @@ -105,7 +161,11 @@ static inline unsigned int irq_to_level_2(unsigned int irq) */ static inline unsigned int irq_parent_level_2(unsigned int irq) { - return irq & BIT_MASK(CONFIG_1ST_LEVEL_INTERRUPT_BITS); + _z_irq_t z_irq = { + .irq = irq, + }; + + return _z_l1_irq(z_irq); } /** @@ -121,7 +181,11 @@ static inline unsigned int irq_parent_level_2(unsigned int irq) */ static inline unsigned int irq_from_level_3(unsigned int irq) { - return (irq >> (CONFIG_1ST_LEVEL_INTERRUPT_BITS + CONFIG_2ND_LEVEL_INTERRUPT_BITS)) - 1; + _z_irq_t z_irq = { + .irq = irq, + }; + + return _z_l3_irq(z_irq); } /** @@ -148,7 +212,15 @@ static inline unsigned int irq_from_level_3(unsigned int irq) */ static inline unsigned int irq_to_level_3(unsigned int irq) { - return IRQ_TO_L3(irq); + _z_irq_t z_irq = { + .bits = { + .l1 = 0, + .l2 = 0, + .l3 = irq + 1, + }, + }; + + return z_irq.irq; } /** @@ -163,8 +235,11 @@ static inline unsigned int irq_to_level_3(unsigned int irq) */ static inline unsigned int irq_parent_level_3(unsigned int irq) { - return (irq >> CONFIG_1ST_LEVEL_INTERRUPT_BITS) & - BIT_MASK(CONFIG_2ND_LEVEL_INTERRUPT_BITS); + _z_irq_t z_irq = { + .irq = irq, + }; + + return _z_l2_irq(z_irq); } /** @@ -248,10 +323,43 @@ static inline unsigned int irq_get_intc_irq(unsigned int irq) { const unsigned int level = irq_get_level(irq); - __ASSERT_NO_MSG(level > 1 && level <= 3); + __ASSERT_NO_MSG(level <= 3); + _z_irq_t z_irq = { + .irq = irq, + }; + + if (level == 3) { + return z_irq.l3_intc.irq; + } else if (level == 2) { + return z_irq.l2_intc.irq; + } else { + return irq; + } +} + +/** + * @brief Increments the multilevel-encoded @a irq by @a val + * + * @param irq IRQ number in its zephyr format + * @param val Amount to increment + * + * @return @a irq incremented by @a val + */ +static inline unsigned int irq_increment(unsigned int irq, unsigned int val) +{ + _z_irq_t z_irq = { + .irq = irq, + }; + + if (z_irq.bits.l3 != 0) { + z_irq.bits.l3 += val; + } else if (z_irq.bits.l2 != 0) { + z_irq.bits.l2 += val; + } else { + z_irq.bits.l1 += val; + } - return irq & BIT_MASK(CONFIG_1ST_LEVEL_INTERRUPT_BITS + - (level == 3 ? CONFIG_2ND_LEVEL_INTERRUPT_BITS : 0)); + return z_irq.irq; } #endif /* CONFIG_MULTI_LEVEL_INTERRUPTS */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel.h index 5f4ee3ae..82d4b3a6 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel.h @@ -122,6 +122,38 @@ typedef void (*k_thread_user_cb_t)(const struct k_thread *thread, */ void k_thread_foreach(k_thread_user_cb_t user_cb, void *user_data); +/** + * @brief Iterate over all the threads in running on specified cpu. + * + * This function is does otherwise the same thing as k_thread_foreach(), + * but it only loops through the threads running on specified cpu only. + * If CONFIG_SMP is not defined the implementation this is the same as + * k_thread_foreach(), with an assert cpu == 0. + * + * @param cpu The filtered cpu number + * @param user_cb Pointer to the user callback function. + * @param user_data Pointer to user data. + * + * @note @kconfig{CONFIG_THREAD_MONITOR} must be set for this function + * to be effective. + * @note This API uses @ref k_spin_lock to protect the _kernel.threads + * list which means creation of new threads and terminations of existing + * threads are blocked until this API returns. + */ +#ifdef CONFIG_SMP +void k_thread_foreach_filter_by_cpu(unsigned int cpu, + k_thread_user_cb_t user_cb, void *user_data); +#else +static inline +void k_thread_foreach_filter_by_cpu(unsigned int cpu, + k_thread_user_cb_t user_cb, void *user_data) +{ + __ASSERT(cpu == 0, "cpu filter out of bounds"); + ARG_UNUSED(cpu); + k_thread_foreach(user_cb, user_data); +} +#endif + /** * @brief Iterate over all the threads in the system without locking. * @@ -152,6 +184,51 @@ void k_thread_foreach(k_thread_user_cb_t user_cb, void *user_data); void k_thread_foreach_unlocked( k_thread_user_cb_t user_cb, void *user_data); +/** + * @brief Iterate over the threads in running on current cpu without locking. + * + * This function does otherwise the same thing as + * k_thread_foreach_unlocked(), but it only loops through the threads + * running on specified cpu. If CONFIG_SMP is not defined the + * implementation this is the same as k_thread_foreach_unlocked(), with an + * assert requiring cpu == 0. + * + * @param cpu The filtered cpu number + * @param user_cb Pointer to the user callback function. + * @param user_data Pointer to user data. + * + * @note @kconfig{CONFIG_THREAD_MONITOR} must be set for this function + * to be effective. + * @note This API uses @ref k_spin_lock only when accessing the _kernel.threads + * queue elements. It unlocks it during user callback function processing. + * If a new task is created when this @c foreach function is in progress, + * the added new task would not be included in the enumeration. + * If a task is aborted during this enumeration, there would be a race here + * and there is a possibility that this aborted task would be included in the + * enumeration. + * @note If the task is aborted and the memory occupied by its @c k_thread + * structure is reused when this @c k_thread_foreach_unlocked is in progress + * it might even lead to the system behave unstable. + * This function may never return, as it would follow some @c next task + * pointers treating given pointer as a pointer to the k_thread structure + * while it is something different right now. + * Do not reuse the memory that was occupied by k_thread structure of aborted + * task if it was aborted after this function was called in any context. + */ +#ifdef CONFIG_SMP +void k_thread_foreach_unlocked_filter_by_cpu(unsigned int cpu, + k_thread_user_cb_t user_cb, void *user_data); +#else +static inline +void k_thread_foreach_unlocked_filter_by_cpu(unsigned int cpu, + k_thread_user_cb_t user_cb, void *user_data) +{ + __ASSERT(cpu == 0, "cpu filter out of bounds"); + ARG_UNUSED(cpu); + k_thread_foreach_unlocked(user_cb, user_data); +} +#endif + /** @} */ /** @@ -173,6 +250,7 @@ void k_thread_foreach_unlocked( * */ #define K_ESSENTIAL (BIT(0)) +#define K_FP_IDX 1 /** * @brief FPU registers are managed by context switch * @@ -182,7 +260,6 @@ void k_thread_foreach_unlocked( * and restore the contents of these registers when scheduling the thread. * No effect if @kconfig{CONFIG_FPU_SHARING} is not enabled. */ -#define K_FP_IDX 1 #define K_FP_REGS (BIT(K_FP_IDX)) /** @@ -588,7 +665,7 @@ static inline k_tid_t k_current_get(void) #ifdef CONFIG_CURRENT_THREAD_USE_TLS /* Thread-local cache of current thread ID, set in z_thread_entry() */ - extern __thread k_tid_t z_tls_current; + extern Z_THREAD_LOCAL k_tid_t z_tls_current; return z_tls_current; #else @@ -617,18 +694,6 @@ static inline k_tid_t k_current_get(void) */ __syscall void k_thread_abort(k_tid_t thread); - -/** - * @brief Start an inactive thread - * - * If a thread was created with K_FOREVER in the delay parameter, it will - * not be added to the scheduling queue until this function is called - * on it. - * - * @param thread thread to start - */ -__syscall void k_thread_start(k_tid_t thread); - k_ticks_t z_timeout_expires(const struct _timeout *timeout); k_ticks_t z_timeout_remaining(const struct _timeout *timeout); @@ -827,12 +892,12 @@ __syscall int k_thread_priority_get(k_tid_t thread); * Rescheduling can occur immediately depending on the priority @a thread is * set to: * - * - If its priority is raised above the priority of the caller of this - * function, and the caller is preemptible, @a thread will be scheduled in. + * - If its priority is raised above the priority of a currently scheduled + * preemptible thread, @a thread will be scheduled in. * - * - If the caller operates on itself, it lowers its priority below that of - * other threads in the system, and the caller is preemptible, the thread of - * highest priority will be scheduled in. + * - If the caller lowers the priority of a currently scheduled preemptible + * thread below that of other threads in the system, the thread of the highest + * priority will be scheduled in. * * Priority can be assigned in the range of -CONFIG_NUM_COOP_PRIORITIES to * CONFIG_NUM_PREEMPT_PRIORITIES-1, where -CONFIG_NUM_COOP_PRIORITIES is the @@ -987,6 +1052,24 @@ __syscall void k_thread_suspend(k_tid_t thread); */ __syscall void k_thread_resume(k_tid_t thread); +/** + * @brief Start an inactive thread + * + * If a thread was created with K_FOREVER in the delay parameter, it will + * not be added to the scheduling queue until this function is called + * on it. + * + * @note This is a legacy API for compatibility. Modern Zephyr + * threads are initialized in the "suspended" state and no not need + * special handling for "start". + * + * @param thread thread to start + */ +static inline void k_thread_start(k_tid_t thread) +{ + k_thread_resume(thread); +} + /** * @brief Set time-slicing period and scope. * @@ -3244,12 +3327,12 @@ static inline unsigned int z_impl_k_sem_count_get(struct k_sem *sem) * @param initial_count Initial semaphore count. * @param count_limit Maximum permitted semaphore count. */ -#define K_SEM_DEFINE(name, initial_count, count_limit) \ - STRUCT_SECTION_ITERABLE(k_sem, name) = \ - Z_SEM_INITIALIZER(name, initial_count, count_limit); \ - BUILD_ASSERT(((count_limit) != 0) && \ - ((initial_count) <= (count_limit)) && \ - ((count_limit) <= K_SEM_MAX_LIMIT)); +#define K_SEM_DEFINE(name, initial_count, count_limit) \ + STRUCT_SECTION_ITERABLE(k_sem, name) = \ + Z_SEM_INITIALIZER(name, initial_count, count_limit); \ + BUILD_ASSERT(((count_limit) != 0) && \ + (((initial_count) < (count_limit)) || ((initial_count) == (count_limit))) && \ + ((count_limit) <= K_SEM_MAX_LIMIT)); /** @} */ @@ -3523,6 +3606,22 @@ int k_work_queue_drain(struct k_work_q *queue, bool plug); */ int k_work_queue_unplug(struct k_work_q *queue); +/** @brief Stop a work queue. + * + * Stops the work queue thread and ensures that no further work will be processed. + * This call is blocking and guarantees that the work queue thread has terminated + * cleanly if successful, no work will be processed past this point. + * + * @param queue Pointer to the queue structure. + * @param timeout Maximum time to wait for the work queue to stop. + * + * @retval 0 if the work queue was stopped + * @retval -EALREADY if the work queue was not started (or already stopped) + * @retval -EBUSY if the work queue is actively processing work items + * @retval -ETIMEDOUT if the work queue did not stop within the stipulated timeout + */ +int k_work_queue_stop(struct k_work_q *queue, k_timeout_t timeout); + /** @brief Initialize a delayable work structure. * * This must be invoked before scheduling a delayable work structure for the @@ -3832,6 +3931,8 @@ enum { K_WORK_QUEUE_DRAIN = BIT(K_WORK_QUEUE_DRAIN_BIT), K_WORK_QUEUE_PLUGGED_BIT = 3, K_WORK_QUEUE_PLUGGED = BIT(K_WORK_QUEUE_PLUGGED_BIT), + K_WORK_QUEUE_STOP_BIT = 4, + K_WORK_QUEUE_STOP = BIT(K_WORK_QUEUE_STOP_BIT), /* Static work queue flags */ K_WORK_QUEUE_NO_YIELD_BIT = 8, @@ -4607,7 +4708,7 @@ __syscall int k_msgq_put(struct k_msgq *msgq, const void *data, k_timeout_t time * K_FOREVER. * * @retval 0 Message received. - * @retval -ENOMSG Returned without waiting. + * @retval -ENOMSG Returned without waiting or queue purged. * @retval -EAGAIN Waiting period timed out. */ __syscall int k_msgq_get(struct k_msgq *msgq, void *data, k_timeout_t timeout); @@ -6116,6 +6217,15 @@ int k_thread_runtime_stats_get(k_tid_t thread, */ int k_thread_runtime_stats_all_get(k_thread_runtime_stats_t *stats); +/** + * @brief Get the runtime statistics of all threads on specified cpu + * + * @param cpu The cpu number + * @param stats Pointer to struct to copy statistics into. + * @return -EINVAL if null pointers, otherwise 0 + */ +int k_thread_runtime_stats_cpu_get(int cpu, k_thread_runtime_stats_t *stats); + /** * @brief Enable gathering of runtime statistics for specified thread * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel/mm.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel/mm.h index 88ad40af..79c3dc48 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel/mm.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel/mm.h @@ -114,6 +114,25 @@ extern "C" { */ #define K_MEM_MAP_LOCK BIT(17) +/** + * Region will be unpaged i.e. not mapped into memory + * + * This is meant to be used by kernel code and not by application code. + * + * Corresponding memory address range will be set so no actual memory will + * be allocated initially. Allocation will happen through demand paging when + * addresses in that range are accessed. This is incompatible with + * K_MEM_MAP_LOCK. + * + * When this flag is specified, the phys argument to arch_mem_map() + * is interpreted as a backing store location value not a physical address. + * This is very similar to arch_mem_page_out() in that regard. + * Two special location values are defined: ARCH_UNPAGED_ANON_ZERO and + * ARCH_UNPAGED_ANON_UNINIT. Those are to be used with anonymous memory + * mappings for zeroed and uninitialized pages respectively. + */ +#define K_MEM_MAP_UNPAGED BIT(18) + /** @} */ /** @@ -173,6 +192,54 @@ static inline void *k_mem_map(size_t size, uint32_t flags) return k_mem_map_phys_guard((uintptr_t)NULL, size, flags, true); } +#ifdef CONFIG_DEMAND_MAPPING +/** + * Create an unpaged mapping + * + * This maps backing-store "location" tokens into Zephyr's address space. + * Corresponding memory address range will be set so no actual memory will + * be allocated initially. Allocation will happen through demand paging when + * addresses in the mapped range are accessed. + * + * The kernel will choose a base virtual address and return it to the caller. + * The memory access permissions for all contexts will be set per the + * provided flags argument. + * + * If user thread access control needs to be managed in any way, do not enable + * K_MEM_PERM_USER flags here; instead manage the region's permissions + * with memory domain APIs after the mapping has been established. Setting + * K_MEM_PERM_USER here will allow all user threads to access this memory + * which is usually undesirable. + * + * This is incompatible with K_MEM_MAP_LOCK. + * + * The provided backing-store "location" token must be linearly incrementable + * by a page size across the entire mapping. + * + * Allocated pages will have write-back cache settings. + * + * The returned virtual memory pointer will be page-aligned. The size + * parameter, and any base address for re-mapping purposes must be page- + * aligned. + * + * Note that the allocation includes two guard pages immediately before + * and after the requested region. The total size of the allocation will be + * the requested size plus the size of these two guard pages. + * + * @param location Backing store initial location token + * @param size Size of the memory mapping. This must be page-aligned. + * @param flags K_MEM_PERM_*, K_MEM_MAP_* control flags. + * @return The mapping location, or NULL if insufficient virtual address + * space to establish the mapping, or insufficient memory for paging + * structures. + */ +static inline void *k_mem_map_unpaged(uintptr_t location, size_t size, uint32_t flags) +{ + flags |= K_MEM_MAP_UNPAGED; + return k_mem_map_phys_guard(location, size, flags, false); +} +#endif + /** * Un-map mapped memory * @@ -191,6 +258,23 @@ static inline void k_mem_unmap(void *addr, size_t size) k_mem_unmap_phys_guard(addr, size, true); } +/** + * Modify memory mapping attribute flags + * + * This updates caching, access and control flags for the provided + * page-aligned memory region. + * + * Calling this function on a region which was not mapped to begin with is + * undefined behavior. However system memory implicitly mapped at boot time + * is supported. + * + * @param addr Page-aligned memory region base virtual address + * @param size Page-aligned memory region size + * @param flags K_MEM_PERM_*, K_MEM_MAP_* control flags. + * @return 0 for success, negative error code otherwise. + */ +int k_mem_update_flags(void *addr, size_t size, uint32_t flags); + /** * Given an arbitrary region, provide a aligned region that covers it * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel/mm/demand_paging.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel/mm/demand_paging.h index ab2ca7d0..10a2e791 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel/mm/demand_paging.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel/mm/demand_paging.h @@ -217,6 +217,8 @@ __syscall void k_mem_paging_histogram_backing_store_page_out_get( * @{ */ +#if defined(CONFIG_EVICTION_TRACKING) || defined(__DOXYGEN__) + /** * Submit a page frame for eviction candidate tracking * @@ -261,6 +263,25 @@ void k_mem_paging_eviction_remove(struct k_mem_page_frame *pf); */ void k_mem_paging_eviction_accessed(uintptr_t phys); +#else /* CONFIG_EVICTION_TRACKING || __DOXYGEN__ */ + +static inline void k_mem_paging_eviction_add(struct k_mem_page_frame *pf) +{ + ARG_UNUSED(pf); +} + +static inline void k_mem_paging_eviction_remove(struct k_mem_page_frame *pf) +{ + ARG_UNUSED(pf); +} + +static inline void k_mem_paging_eviction_accessed(uintptr_t phys) +{ + ARG_UNUSED(phys); +} + +#endif /* CONFIG_EVICTION_TRACKING || __DOXYGEN__ */ + /** * Select a page frame for eviction * @@ -349,6 +370,22 @@ int k_mem_paging_backing_store_location_get(struct k_mem_page_frame *pf, */ void k_mem_paging_backing_store_location_free(uintptr_t location); +/** + * Obtain persistent location token for on-demand content + * + * Unlike k_mem_paging_backing_store_location_get() this does not allocate + * any backing store space. Instead, it returns a location token corresponding + * to some fixed storage content to be paged in on demand. This is expected + * to be used in conjonction with CONFIG_LINKER_USE_ONDEMAND_SECTION and the + * K_MEM_MAP_UNPAGED flag to create demand mappings at boot time. This may + * also be used e.g. to implement file-based mmap(). + * + * @param addr Virtual address to obtain a location token for + * @param [out] location storage location token + * @return 0 for success or negative error code + */ +int k_mem_paging_backing_store_location_query(void *addr, uintptr_t *location); + /** * Copy a data page from K_MEM_SCRATCH_PAGE to the specified location * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel/thread_stack.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel/thread_stack.h index a8151cce..2989624e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel/thread_stack.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel/thread_stack.h @@ -293,7 +293,6 @@ static inline char *K_KERNEL_STACK_BUFFER(k_thread_stack_t *sym) #define K_THREAD_STACK_LEN K_KERNEL_STACK_LEN #define K_THREAD_STACK_DEFINE K_KERNEL_STACK_DEFINE #define K_THREAD_STACK_ARRAY_DEFINE K_KERNEL_STACK_ARRAY_DEFINE -#define K_THREAD_STACK_MEMBER K_KERNEL_STACK_MEMBER #define K_THREAD_STACK_BUFFER K_KERNEL_STACK_BUFFER #define K_THREAD_STACK_DECLARE K_KERNEL_STACK_DECLARE #define K_THREAD_STACK_ARRAY_DECLARE K_KERNEL_STACK_ARRAY_DECLARE @@ -613,27 +612,6 @@ static inline char *K_KERNEL_STACK_BUFFER(k_thread_stack_t *sym) K_THREAD_STACK_ARRAY_DEFINE(sym, nmemb, size) #endif /* CONFIG_LINKER_USE_PINNED_SECTION */ -/** - * @brief Define an embedded stack memory region - * - * Used for stacks embedded within other data structures. Use is highly - * discouraged but in some cases necessary. For memory protection scenarios, - * it is very important that any RAM preceding this member not be writable - * by threads else a stack overflow will lead to silent corruption. In other - * words, the containing data structure should live in RAM owned by the kernel. - * - * A user thread can only be started with a stack defined in this way if - * the thread starting it is in supervisor mode. - * - * @deprecated This is now deprecated, as stacks defined in this way are not - * usable from user mode. Use K_KERNEL_STACK_MEMBER. - * - * @param sym Thread stack symbol name - * @param size Size of the stack memory region - */ -#define K_THREAD_STACK_MEMBER(sym, size) __DEPRECATED_MACRO \ - Z_THREAD_STACK_DEFINE_IN(sym, size,) - /** @} */ /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel_structs.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel_structs.h index cf7daff9..3c1df990 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel_structs.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/kernel_structs.h @@ -54,9 +54,6 @@ extern "C" { /* Thread is waiting on an object */ #define _THREAD_PENDING (BIT(1)) -/* Thread has not yet started */ -#define _THREAD_PRESTART (BIT(2)) - /* Thread has terminated */ #define _THREAD_DEAD (BIT(3)) @@ -171,7 +168,7 @@ struct _cpu { #endif #ifdef CONFIG_SMP - /* True when _current is allowed to context switch */ + /* True when arch_current_thread() is allowed to context switch */ uint8_t swap_ok; #endif @@ -260,12 +257,12 @@ bool z_smp_cpu_mobile(void); #define _current_cpu ({ __ASSERT_NO_MSG(!z_smp_cpu_mobile()); \ arch_curr_cpu(); }) -#define _current k_sched_current_thread_query() #else #define _current_cpu (&_kernel.cpus[0]) -#define _current _kernel.cpus[0].current -#endif +#endif /* CONFIG_SMP */ + +#define _current arch_current_thread() __DEPRECATED_MACRO /* kernel wait queue record */ #ifdef CONFIG_WAITQ_SCALABLE diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/devicetree_regions.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/devicetree_regions.h index e1d91627..9a0139df 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/devicetree_regions.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/devicetree_regions.h @@ -82,6 +82,66 @@ #define LINKER_DT_NODE_REGION_NAME(node_id) \ STRINGIFY(LINKER_DT_NODE_REGION_NAME_TOKEN(node_id)) +#define _DT_MEMORY_REGION_FLAGS_TOKEN(n) DT_STRING_TOKEN(n, zephyr_memory_region_flags) +#define _DT_MEMORY_REGION_FLAGS_UNQUOTED(n) DT_STRING_UNQUOTED(n, zephyr_memory_region_flags) + +#define _LINKER_L_PAREN ( +#define _LINKER_R_PAREN ) +#define _LINKER_ENCLOSE_PAREN(x) _LINKER_L_PAREN x _LINKER_R_PAREN + +#define _LINKER_IS_EMPTY_TOKEN_ 1 +#define _LINKER_IS_EMPTY_TOKEN_EXPAND(x) _LINKER_IS_EMPTY_TOKEN_##x +#define _LINKER_IS_EMPTY_TOKEN(x) _LINKER_IS_EMPTY_TOKEN_EXPAND(x) + +/** + * @brief Get the linker memory-region flags with parentheses. + * + * This attempts to return the zephyr,memory-region-flags property + * with parentheses. + * Return empty string if not set the property. + * + * Example devicetree fragment: + * + * @code{.dts} + * / { + * soc { + * rx: memory@2000000 { + * zephyr,memory-region = "READ_EXEC"; + * zephyr,memory-region-flags = "rx"; + * }; + * rx_not_w: memory@2001000 { + * zephyr,memory-region = "READ_EXEC_NOT_WRITE"; + * zephyr,memory-region-flags = "rx!w"; + * }; + * no_flags: memory@2001000 { + * zephyr,memory-region = "NO_FLAGS"; + * }; + * }; + * }; + * @endcode + * + * Example usage: + * + * @code{.c} + * LINKER_DT_NODE_REGION_FLAGS(DT_NODELABEL(rx)) // (rx) + * LINKER_DT_NODE_REGION_FLAGS(DT_NODELABEL(rx_not_w)) // (rx!w) + * LINKER_DT_NODE_REGION_FLAGS(DT_NODELABEL(no_flags)) // [flags will not be specified] + * @endcode + * + * @param node_id node identifier + * @return the value of the memory region flag specified in the device tree + * enclosed in parentheses. + */ + +#define LINKER_DT_NODE_REGION_FLAGS(node_id) \ + COND_CODE_1(DT_NODE_HAS_PROP(node_id, zephyr_memory_region_flags), \ + (COND_CODE_1(_LINKER_IS_EMPTY_TOKEN(_DT_MEMORY_REGION_FLAGS_TOKEN(node_id)), \ + (), \ + (_LINKER_ENCLOSE_PAREN( \ + _DT_MEMORY_REGION_FLAGS_UNQUOTED(node_id)) \ + ))), \ + (_LINKER_ENCLOSE_PAREN(rw))) + /** @cond INTERNAL_HIDDEN */ #define _DT_COMPATIBLE zephyr_memory_region @@ -102,6 +162,7 @@ * compatible = "zephyr,memory-region", "mmio-sram"; * reg = < 0x20010000 0x1000 >; * zephyr,memory-region = "FOOBAR"; + * zephyr,memory-region-flags = "rw"; * }; * @endcode * @@ -114,10 +175,11 @@ * @param node_id devicetree node identifier * @param attr region attributes */ -#define _REGION_DECLARE(node_id) \ - LINKER_DT_NODE_REGION_NAME_TOKEN(node_id) : \ - ORIGIN = DT_REG_ADDR(node_id), \ - LENGTH = DT_REG_SIZE(node_id) +#define _REGION_DECLARE(node_id) \ + LINKER_DT_NODE_REGION_NAME_TOKEN(node_id) \ + LINKER_DT_NODE_REGION_FLAGS(node_id) \ + : ORIGIN = DT_REG_ADDR(node_id), \ + LENGTH = DT_REG_SIZE(node_id) /** * @brief Declare a memory section from the device tree nodes with diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/linker-defs.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/linker-defs.h index d860222f..9c795ae7 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/linker-defs.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/linker-defs.h @@ -32,6 +32,7 @@ */ #ifdef ZTEST_UNITTEST #define DT_NODE_HAS_STATUS(node, status) 0 +#define DT_NODE_HAS_STATUS_OKAY(node) 0 #else #include #endif @@ -159,7 +160,7 @@ extern char __gcov_bss_size[]; /* end address of image, used by newlib for the heap */ extern char _end[]; -#if (DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_ccm), okay)) +#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_ccm))) extern char __ccm_data_rom_start[]; extern char __ccm_start[]; extern char __ccm_data_start[]; @@ -171,14 +172,14 @@ extern char __ccm_noinit_end[]; extern char __ccm_end[]; #endif -#if (DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_itcm), okay)) +#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_itcm))) extern char __itcm_start[]; extern char __itcm_end[]; extern char __itcm_size[]; extern char __itcm_load_start[]; #endif -#if (DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_dtcm), okay)) +#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_dtcm))) extern char __dtcm_data_start[]; extern char __dtcm_data_end[]; extern char __dtcm_bss_start[]; @@ -190,7 +191,7 @@ extern char __dtcm_start[]; extern char __dtcm_end[]; #endif -#if (DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_ocm), okay)) +#if (DT_NODE_HAS_STATUS_OKAY(DT_CHOSEN(zephyr_ocm))) extern char __ocm_data_start[]; extern char __ocm_data_end[]; extern char __ocm_bss_start[]; @@ -230,6 +231,7 @@ extern char _nocache_ram_size[]; * section, stored in RAM instead of FLASH. */ #ifdef CONFIG_ARCH_HAS_RAMFUNC_SUPPORT +extern char __ramfunc_region_start[]; extern char __ramfunc_start[]; extern char __ramfunc_end[]; extern char __ramfunc_size[]; @@ -337,6 +339,24 @@ static inline bool lnkr_is_region_pinned(uint8_t *addr, size_t sz) #endif /* CONFIG_LINKER_USE_PINNED_SECTION */ +#ifdef CONFIG_LINKER_USE_ONDEMAND_SECTION +/* lnkr_ondemand_start[] and lnkr_ondemand_end[] must encapsulate + * all the on-demand sections as these are used by + * the MMU code to mark the virtual pages with the appropriate backing store + * location token to have them be paged in on demand. + */ +extern char lnkr_ondemand_start[]; +extern char lnkr_ondemand_end[]; +extern char lnkr_ondemand_load_start[]; + +extern char lnkr_ondemand_text_start[]; +extern char lnkr_ondemand_text_end[]; +extern char lnkr_ondemand_text_size[]; +extern char lnkr_ondemand_rodata_start[]; +extern char lnkr_ondemand_rodata_end[]; +extern char lnkr_ondemand_rodata_size[]; + +#endif /* CONFIG_LINKER_USE_ONDEMAND_SECTION */ #endif /* ! _ASMLANGUAGE */ #endif /* ZEPHYR_INCLUDE_LINKER_LINKER_DEFS_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/linker-devnull.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/linker-devnull.h index d5455dd6..12dd7b7b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/linker-devnull.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/linker-devnull.h @@ -11,6 +11,7 @@ */ #ifndef ZEPHYR_INCLUDE_LINKER_LINKER_DEVNULL_H_ +#define ZEPHYR_INCLUDE_LINKER_LINKER_DEVNULL_H_ #if defined(CONFIG_LINKER_DEVNULL_MEMORY) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/section_tags.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/section_tags.h index 6c7c1bdd..560d7611 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/section_tags.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/section_tags.h @@ -13,6 +13,8 @@ #if !defined(_ASMLANGUAGE) +#include + #define __noinit __in_section_unique(_NOINIT_SECTION_NAME) #define __noinit_named(name) __in_section_unique_named(_NOINIT_SECTION_NAME, name) #define __irq_vector_table Z_GENERIC_SECTION(_IRQ_VECTOR_TABLE_SECTION_NAME) @@ -42,6 +44,7 @@ #define __imx_boot_data_section Z_GENERIC_SECTION(_IMX_BOOT_DATA_SECTION_NAME) #define __imx_boot_ivt_section Z_GENERIC_SECTION(_IMX_BOOT_IVT_SECTION_NAME) #define __imx_boot_dcd_section Z_GENERIC_SECTION(_IMX_BOOT_DCD_SECTION_NAME) +#define __imx_boot_container_section Z_GENERIC_SECTION(_IMX_BOOT_CONTAINER_SECTION_NAME) #define __stm32_sdram1_section Z_GENERIC_SECTION(_STM32_SDRAM1_SECTION_NAME) #define __stm32_sdram2_section Z_GENERIC_SECTION(_STM32_SDRAM2_SECTION_NAME) #define __stm32_backup_sram_section Z_GENERIC_SECTION(_STM32_BACKUP_SRAM_SECTION_NAME) @@ -97,6 +100,14 @@ #define __pinned_noinit __noinit #endif /* CONFIG_LINKER_USE_PINNED_SECTION */ +#if defined(CONFIG_LINKER_USE_ONDEMAND_SECTION) +#define __ondemand_func Z_GENERIC_DOT_SECTION(ONDEMAND_TEXT_SECTION_NAME) +#define __ondemand_rodata Z_GENERIC_DOT_SECTION(ONDEMAND_RODATA_SECTION_NAME) +#else +#define __ondemand_func +#define __ondemand_rodata +#endif /* CONFIG_LINKER_USE_ONDEMAND_SECTION */ + #if defined(CONFIG_LINKER_USE_PINNED_SECTION) #define __isr __pinned_func #else diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/sections.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/sections.h index 14aa4c29..36159427 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/sections.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/linker/sections.h @@ -67,6 +67,7 @@ #define _IMX_BOOT_DATA_SECTION_NAME .boot_hdr.data #define _IMX_BOOT_IVT_SECTION_NAME .boot_hdr.ivt #define _IMX_BOOT_DCD_SECTION_NAME .boot_hdr.dcd_data +#define _IMX_BOOT_CONTAINER_SECTION_NAME .boot_hdr.container #define _STM32_SDRAM1_SECTION_NAME .stm32_sdram1 #define _STM32_SDRAM2_SECTION_NAME .stm32_sdram2 @@ -100,6 +101,11 @@ #define PINNED_NOINIT_SECTION_NAME pinned_noinit #endif +#if defined(CONFIG_LINKER_USE_ONDEMAND_SECTION) +#define ONDEMAND_TEXT_SECTION_NAME ondemand_text +#define ONDEMAND_RODATA_SECTION_NAME ondemand_rodata +#endif + /* Short section references for use in ASM files */ #if defined(_ASMLANGUAGE) /* Various text section names */ @@ -139,6 +145,14 @@ #define PINNED_NOINIT NOINIT #endif /* CONFIG_LINKER_USE_PINNED_SECTION */ +#if defined(CONFIG_LINKER_USE_ONDEMAND_SECTION) +#define ONDEMAND_TEXT ONDEMAND_TEXT_SECTION_NAME +#define ONDEMAND_RODATA ONDEMAND_RODATA_SECTION_NAME +#else +#define ONDEMAND_TEXT TEXT +#define ONDEMAND_RODATA RODATA +#endif /* CONFIG_LINKER_USE_ONDEMAND_SECTION */ + #endif /* _ASMLANGUAGE */ #include diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/buf_loader.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/buf_loader.h index 5079c011..9d5dd1c9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/buf_loader.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/buf_loader.h @@ -47,16 +47,19 @@ void *llext_buf_peek(struct llext_loader *ldr, size_t pos); * @param _buf Buffer containing the ELF binary * @param _buf_len Buffer length in bytes */ -#define LLEXT_BUF_LOADER(_buf, _buf_len) \ - { \ - .loader = { \ - .read = llext_buf_read, \ - .seek = llext_buf_seek, \ - .peek = llext_buf_peek, \ - }, \ - .buf = (_buf), \ - .len = (_buf_len), \ - .pos = 0 \ +#define LLEXT_BUF_LOADER(_buf, _buf_len) \ + { \ + .loader = \ + { \ + .prepare = NULL, \ + .read = llext_buf_read, \ + .seek = llext_buf_seek, \ + .peek = llext_buf_peek, \ + .finalize = NULL, \ + }, \ + .buf = (_buf), \ + .len = (_buf_len), \ + .pos = 0, \ } /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/elf.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/elf.h index 7230d131..48a611a3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/elf.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/elf.h @@ -393,54 +393,6 @@ struct elf64_rela { */ #define ELF64_R_TYPE(i) ((i) & 0xffffffff) -/** - * Relocation names (should be moved to arch-specific files) - * @cond ignore - */ -#define R_386_NONE 0 -#define R_386_32 1 -#define R_386_PC32 2 -#define R_386_GOT32 3 -#define R_386_PLT32 4 -#define R_386_COPY 5 -#define R_386_GLOB_DAT 6 -#define R_386_JMP_SLOT 7 -#define R_386_RELATIVE 8 -#define R_386_GOTOFF 9 - -#define R_ARM_NONE 0 -#define R_ARM_PC24 1 -#define R_ARM_ABS32 2 -#define R_ARM_REL32 3 -#define R_ARM_COPY 20 -#define R_ARM_GLOB_DAT 21 -#define R_ARM_JUMP_SLOT 22 -#define R_ARM_RELATIVE 23 -#define R_ARM_CALL 28 -#define R_ARM_JUMP24 29 -#define R_ARM_TARGET1 38 -#define R_ARM_V4BX 40 -#define R_ARM_PREL31 42 -#define R_ARM_MOVW_ABS_NC 43 -#define R_ARM_MOVT_ABS 44 -#define R_ARM_MOVW_PREL_NC 45 -#define R_ARM_MOVT_PREL 46 -#define R_ARM_ALU_PC_G0_NC 57 -#define R_ARM_ALU_PC_G1_NC 59 -#define R_ARM_LDR_PC_G2 63 - -#define R_ARM_THM_CALL 10 -#define R_ARM_THM_JUMP24 30 -#define R_ARM_THM_MOVW_ABS_NC 47 -#define R_ARM_THM_MOVT_ABS 48 -#define R_ARM_THM_MOVW_PREL_NC 49 -#define R_ARM_THM_MOVT_PREL 50 - -#define R_XTENSA_NONE 0 -#define R_XTENSA_32 1 -#define R_XTENSA_SLOT0_OP 20 -/** @endcond */ - /** * Dynamic features currently not used by LLEXT * @cond ignore diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/fs_loader.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/fs_loader.h new file mode 100644 index 00000000..9cb41851 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/fs_loader.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2024 BayLibre SAS + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_LLEXT_FS_LOADER_H +#define ZEPHYR_LLEXT_FS_LOADER_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file + * @brief LLEXT filesystem loader implementation. + * + * @addtogroup llext_loader_apis + * @{ + */ + +/** + * @brief Implementation of @ref llext_loader that reads from a filesystem. + */ +struct llext_fs_loader { + /** Extension loader */ + struct llext_loader loader; + + /** @cond ignore */ + bool is_open; + const char *name; + struct fs_file_t file; + /** @endcond */ +}; + +/** @cond ignore */ +int llext_fs_prepare(struct llext_loader *ldr); +int llext_fs_read(struct llext_loader *ldr, void *buf, size_t len); +int llext_fs_seek(struct llext_loader *ldr, size_t pos); +void llext_fs_finalize(struct llext_loader *ldr); +/** @endcond */ + +/** + * @brief Initializer for an llext_fs_loader structure + * + * @param _filename Absolute path to the extension file. + */ +#define LLEXT_FS_LOADER(_filename) \ + { \ + .loader = \ + { \ + .prepare = llext_fs_prepare, \ + .read = llext_fs_read, \ + .seek = llext_fs_seek, \ + .peek = NULL, \ + .finalize = llext_fs_finalize, \ + }, \ + .is_open = false, \ + .name = (_filename), \ + } + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_LLEXT_FS_LOADER_H */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/llext.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/llext.h index 441aab0e..5bd16ea3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/llext.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/llext.h @@ -65,6 +65,9 @@ enum llext_mem { struct llext_loader; /** @endcond */ +/* Maximim number of dependency LLEXTs */ +#define LLEXT_MAX_DEPENDENCIES 8 + /** * @brief Structure describing a linkable loadable extension * @@ -114,8 +117,27 @@ struct llext { /** Extension use counter, prevents unloading while in use */ unsigned int use_count; + + /** Array of extensions, whose symbols this extension accesses */ + struct llext *dependency[LLEXT_MAX_DEPENDENCIES]; + + /** @cond ignore */ + unsigned int sect_cnt; + elf_shdr_t *sect_hdrs; + bool sect_hdrs_on_heap; + /** @endcond */ }; +static inline const elf_shdr_t *llext_section_headers(const struct llext *ext) +{ + return ext->sect_hdrs; +} + +static inline unsigned int llext_section_count(const struct llext *ext) +{ + return ext->sect_cnt; +} + /** * @brief Advanced llext_load parameters * @@ -126,9 +148,18 @@ struct llext_load_param { bool relocate_local; /** * Use the virtual symbol addresses from the ELF, not addresses within - * the memory buffer, when calculating relocation targets. + * the memory buffer, when calculating relocation targets. It also + * means, that the application will take care to place the extension at + * those pre-defined addresses, so the LLEXT core doesn't have to do any + * allocation and copying internally. */ bool pre_located; + /** + * Extensions can implement custom ELF sections to be loaded in specific + * memory regions, detached from other sections of compatible types. + * This optional callback checks whether a section should be detached. + */ + bool (*section_detached)(const elf_shdr_t *shdr); }; /** Default initializer for @ref llext_load_param */ @@ -171,7 +202,7 @@ int llext_iterate(int (*fn)(struct llext *ext, void *arg), void *arg); * @retval -ENOTSUP Unsupported ELF features */ int llext_load(struct llext_loader *loader, const char *name, struct llext **ext, - struct llext_load_param *ldr_parm); + const struct llext_load_param *ldr_parm); /** * @brief Unload an extension @@ -287,7 +318,7 @@ int llext_call_fn(struct llext *ext, const char *sym_name); * @param[in] domain Memory domain to add partitions to * * @returns 0 on success, or a negative error code. - * @retval -ENOSYS @kconfig{CONFIG_USERSPACE} is not enabled or supported + * @retval -ENOSYS Option @kconfig{CONFIG_USERSPACE} is not enabled or supported */ int llext_add_domain(struct llext *ext, struct k_mem_domain *domain); @@ -324,16 +355,47 @@ int arch_elf_relocate(elf_rela_t *rel, uintptr_t loc, ssize_t llext_find_section(struct llext_loader *loader, const char *search_name); /** - * @brief Architecture specific function for updating addresses via relocation table + * @brief Extract ELF section header by name. + * + * Searches for a section by name in the ELF file and retrieves its full header. + * + * @param[in] loader Extension loader data and context + * @param[in] ext Extension to be searched + * @param[in] search_name Section name to search for + * @param[out] shdr Buffer for the section header + * @retval 0 Success + * @retval -ENOTSUP "peek" method not supported + * @retval -ENOENT section not found + */ +int llext_get_section_header(struct llext_loader *loader, struct llext *ext, + const char *search_name, elf_shdr_t *shdr); + +/** + * @brief Architecture specific function for local binding relocations + * + * @param[in] loader Extension loader data and context + * @param[in] ext Extension to call function in + * @param[in] rel Relocation data provided by elf + * @param[in] sym Corresponding symbol table entry + * @param[in] got_offset Offset within a relocation table or in the code + * @param[in] ldr_parm Loader parameters + */ +void arch_elf_relocate_local(struct llext_loader *loader, struct llext *ext, const elf_rela_t *rel, + const elf_sym_t *sym, size_t got_offset, + const struct llext_load_param *ldr_parm); + +/** + * @brief Architecture specific function for global binding relocations * * @param[in] loader Extension loader data and context * @param[in] ext Extension to call function in * @param[in] rel Relocation data provided by elf * @param[in] sym Corresponding symbol table entry - * @param[in] got_offset Offset within a relocation table + * @param[in] got_offset Offset within a relocation table or in the code + * @param[in] link_addr target address for table-based relocations */ -void arch_elf_relocate_local(struct llext_loader *loader, struct llext *ext, - const elf_rela_t *rel, const elf_sym_t *sym, size_t got_offset); +void arch_elf_relocate_global(struct llext_loader *loader, struct llext *ext, const elf_rela_t *rel, + const elf_sym_t *sym, size_t got_offset, const void *link_addr); /** * @} diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/llext_internal.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/llext_internal.h new file mode 100644 index 00000000..f07dd5ef --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/llext_internal.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2024 Intel Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_LLEXT_INTERNAL_H +#define ZEPHYR_LLEXT_INTERNAL_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file + * @brief Private header for linkable loadable extensions + */ + +/** @cond ignore */ + +struct llext_loader; +struct llext; + +const void *llext_loaded_sect_ptr(struct llext_loader *ldr, struct llext *ext, unsigned int sh_ndx); + +/** @endcond */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_LLEXT_INTERNAL_H */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/loader.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/loader.h index ffc0d504..3d043806 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/loader.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/loader.h @@ -40,6 +40,15 @@ struct llext_elf_sect_map; /* defined in llext_priv.h */ * extension is loaded, this object is no longer needed. */ struct llext_loader { + /** + * @brief Optional function to prepare the loader for loading extension. + * + * @param[in] ldr Loader + * + * @returns 0 on success, or a negative error. + */ + int (*prepare)(struct llext_loader *ldr); + /** * @brief Function to read (copy) from the loader * @@ -79,17 +88,30 @@ struct llext_loader { */ void *(*peek)(struct llext_loader *ldr, size_t pos); + /** + * @brief Optional function to clean after the extension has been loaded or error occurred. + * + * @param[in] ldr Loader + */ + void (*finalize)(struct llext_loader *ldr); + /** @cond ignore */ elf_ehdr_t hdr; elf_shdr_t sects[LLEXT_MEM_COUNT]; - elf_shdr_t *sect_hdrs; - bool sect_hdrs_on_heap; struct llext_elf_sect_map *sect_map; - uint32_t sect_cnt; /** @endcond */ }; /** @cond ignore */ +static inline int llext_prepare(struct llext_loader *l) +{ + if (l->prepare) { + return l->prepare(l); + } + + return 0; +} + static inline int llext_read(struct llext_loader *l, void *buf, size_t len) { return l->read(l, buf, len); @@ -108,6 +130,13 @@ static inline void *llext_peek(struct llext_loader *l, size_t pos) return NULL; } + +static inline void llext_finalize(struct llext_loader *l) +{ + if (l->finalize) { + l->finalize(l); + } +} /* @endcond */ /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/symbol.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/symbol.h index 880cb4f8..9eb847b9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/symbol.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/llext/symbol.h @@ -93,7 +93,7 @@ struct llext_symtable { #define Z_LL_EXTENSION_SYMBOL(x) \ static const struct llext_const_symbol \ Z_GENERIC_SECTION(".exported_sym") __used \ - x ## _sym = { \ + __llext_sym_ ## x = { \ .name = STRINGIFY(x), .addr = (const void *)&x, \ } #else @@ -123,14 +123,16 @@ struct llext_symtable { /* SLID-enabled LLEXT application: export symbols, names in separate section */ #define Z_EXPORT_SYMBOL(x) \ static const char Z_GENERIC_SECTION("llext_exports_strtab") __used \ - x ## _sym_name[] = STRINGIFY(x); \ - static const STRUCT_SECTION_ITERABLE(llext_const_symbol, x ## _sym) = { \ - .name = x ## _sym_name, .addr = (const void *)&x, \ + __llext_sym_name_ ## x[] = STRINGIFY(x); \ + static const STRUCT_SECTION_ITERABLE(llext_const_symbol, \ + __llext_sym_ ## x) = { \ + .name = __llext_sym_name_ ## x, .addr = (const void *)&x, \ } #elif defined(CONFIG_LLEXT) /* LLEXT application: export symbols */ #define Z_EXPORT_SYMBOL(x) \ - static const STRUCT_SECTION_ITERABLE(llext_const_symbol, x ## _sym) = { \ + static const STRUCT_SECTION_ITERABLE(llext_const_symbol, \ + __llext_sym_ ## x) = { \ .name = STRINGIFY(x), .addr = (const void *)&x, \ } #else diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log.h index f92be9bc..7edfca9a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log.h @@ -328,8 +328,7 @@ void z_log_vprintk(const char *fmt, va_list ap); log_source_const_data, \ Z_LOG_ITEM_CONST_DATA(_name)) = \ { \ - .name = IS_ENABLED(CONFIG_LOG_FMT_SECTION_STRIP) ? NULL : \ - COND_CODE_1(CONFIG_LOG_FMT_SECTION, \ + .name = COND_CODE_1(CONFIG_LOG_FMT_SECTION, \ (UTIL_CAT(_name, _str)), (STRINGIFY(_name))), \ .level = (_level) \ } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_backend_ws.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_backend_ws.h new file mode 100644 index 00000000..0894d2ca --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_backend_ws.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_LOG_BACKEND_WS_H_ +#define ZEPHYR_LOG_BACKEND_WS_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Register websocket socket where the logging output is sent. + * + * @param fd Websocket socket value. + * + * @return 0 if ok, <0 if error + */ +int log_backend_ws_register(int fd); + +/** + * @brief Unregister websocket socket where the logging output was sent. + * + * @details After this the websocket output is disabled. + * + * @param fd Websocket socket value. + * + * @return 0 if ok, <0 if error + */ +int log_backend_ws_unregister(int fd); + +/** + * @brief Get the websocket logger backend + * + * @details This function returns the websocket logger backend. + * + * @return Pointer to the websocket logger backend. + */ +const struct log_backend *log_backend_ws_get(void); + +/** + * @brief Start the websocket logger backend + * + * @details This function starts the websocket logger backend. + */ +void log_backend_ws_start(void); + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_LOG_BACKEND_WS_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_core.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_core.h index 42ef6e99..64cd2a6c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_core.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_core.h @@ -16,19 +16,19 @@ /* This header file keeps all macros and functions needed for creating logging * messages (macros like @ref LOG_ERR). */ -#define LOG_LEVEL_NONE 0U -#define LOG_LEVEL_ERR 1U -#define LOG_LEVEL_WRN 2U -#define LOG_LEVEL_INF 3U -#define LOG_LEVEL_DBG 4U +#define LOG_LEVEL_NONE 0 +#define LOG_LEVEL_ERR 1 +#define LOG_LEVEL_WRN 2 +#define LOG_LEVEL_INF 3 +#define LOG_LEVEL_DBG 4 #ifdef __cplusplus extern "C" { #endif #ifndef CONFIG_LOG -#define CONFIG_LOG_DEFAULT_LEVEL 0U -#define CONFIG_LOG_MAX_LEVEL 0U +#define CONFIG_LOG_DEFAULT_LEVEL 0 +#define CONFIG_LOG_MAX_LEVEL 0 #endif /* Id of local domain. */ @@ -54,15 +54,10 @@ extern "C" { __COND_CODE(_LOG_XXXX##_level, (_level), (_default)) #define _LOG_XXXX0 _LOG_YYYY, -#define _LOG_XXXX0U _LOG_YYYY, #define _LOG_XXXX1 _LOG_YYYY, -#define _LOG_XXXX1U _LOG_YYYY, #define _LOG_XXXX2 _LOG_YYYY, -#define _LOG_XXXX2U _LOG_YYYY, #define _LOG_XXXX3 _LOG_YYYY, -#define _LOG_XXXX3U _LOG_YYYY, #define _LOG_XXXX4 _LOG_YYYY, -#define _LOG_XXXX4U _LOG_YYYY, /** * @brief Macro for conditional code generation if provided log level allows. @@ -85,13 +80,9 @@ extern "C" { __COND_CODE(_LOG_ZZZZ##_eval_level, _iftrue, _iffalse) #define _LOG_ZZZZ1 _LOG_YYYY, -#define _LOG_ZZZZ1U _LOG_YYYY, #define _LOG_ZZZZ2 _LOG_YYYY, -#define _LOG_ZZZZ2U _LOG_YYYY, #define _LOG_ZZZZ3 _LOG_YYYY, -#define _LOG_ZZZZ3U _LOG_YYYY, #define _LOG_ZZZZ4 _LOG_YYYY, -#define _LOG_ZZZZ4U _LOG_YYYY, /** * @@ -101,11 +92,11 @@ extern "C" { log_const_source_id(__log_current_const_data) : 0U) /* Set of defines that are set to 1 if function name prefix is enabled for given level. */ -#define Z_LOG_FUNC_PREFIX_0U 0 -#define Z_LOG_FUNC_PREFIX_1U COND_CODE_1(CONFIG_LOG_FUNC_NAME_PREFIX_ERR, (1), (0)) -#define Z_LOG_FUNC_PREFIX_2U COND_CODE_1(CONFIG_LOG_FUNC_NAME_PREFIX_WRN, (1), (0)) -#define Z_LOG_FUNC_PREFIX_3U COND_CODE_1(CONFIG_LOG_FUNC_NAME_PREFIX_INF, (1), (0)) -#define Z_LOG_FUNC_PREFIX_4U COND_CODE_1(CONFIG_LOG_FUNC_NAME_PREFIX_DBG, (1), (0)) +#define Z_LOG_FUNC_PREFIX_0 0 +#define Z_LOG_FUNC_PREFIX_1 COND_CODE_1(CONFIG_LOG_FUNC_NAME_PREFIX_ERR, (1), (0)) +#define Z_LOG_FUNC_PREFIX_2 COND_CODE_1(CONFIG_LOG_FUNC_NAME_PREFIX_WRN, (1), (0)) +#define Z_LOG_FUNC_PREFIX_3 COND_CODE_1(CONFIG_LOG_FUNC_NAME_PREFIX_INF, (1), (0)) +#define Z_LOG_FUNC_PREFIX_4 COND_CODE_1(CONFIG_LOG_FUNC_NAME_PREFIX_DBG, (1), (0)) /** * @brief Macro for optional injection of function name as first argument of @@ -143,6 +134,15 @@ extern "C" { #define Z_LOG_LEVEL_CHECK(_level, _check_level, _default_level) \ ((_level) <= Z_LOG_RESOLVED_LEVEL(_check_level, _default_level)) +/** @brief Compile time level checking. + * + * This check is resolved at compile time and logging message is removed if check fails. + * + * @param _level Log level. + * + * @retval true Message shall be compiled in. + * @retval false Message shall removed during the compilation. + */ #define Z_LOG_CONST_LEVEL_CHECK(_level) \ (IS_ENABLED(CONFIG_LOG) && \ (Z_LOG_LEVEL_CHECK(_level, CONFIG_LOG_OVERRIDE_LEVEL, LOG_LEVEL_NONE) \ @@ -153,6 +153,63 @@ extern "C" { ) \ )) +/** @brief Static level checking for instance logging. + * + * This check applies only to instance logging and only if runtime filtering + * is disabled. It is performed in runtime but because level comes from the + * structure which is constant it is not exact runtime filtering because it + * cannot be changed in runtime. + * + * @param _level Log level. + * @param _inst 1 is source is the instance of a module. + * @param _source Data associated with the instance. + * + * @retval true Continue with log message creation. + * @retval false Drop that message. + */ +#define Z_LOG_STATIC_INST_LEVEL_CHECK(_level, _inst, _source) \ + (IS_ENABLED(CONFIG_LOG_RUNTIME_FILTERING) || !_inst || \ + (_level <= ((const struct log_source_const_data *)_source)->level)) + +/** @brief Dynamic level checking. + * + * It uses the level from the dynamic structure. + * + * @param _level Log level. + * @param _source Data associated with the source. + * + * @retval true Continue with log message creation. + * @retval false Drop that message. + */ +#define Z_LOG_DYNAMIC_LEVEL_CHECK(_level, _source) \ + (!IS_ENABLED(CONFIG_LOG_RUNTIME_FILTERING) || k_is_user_context() || \ + ((_level) <= Z_LOG_RUNTIME_FILTER(((struct log_source_dynamic_data *)_source)->filters))) + +/** @brief Check if message shall be created. + * + * Aggregate all checks into a single one. + * + * @param _level Log level. + * @param _inst 1 is source is the instance of a module. + * @param _source Data associated with the source. + * + * @retval true Continue with log message creation. + * @retval false Drop that message. + */ +#define Z_LOG_LEVEL_ALL_CHECK(_level, _inst, _source) \ + (Z_LOG_CONST_LEVEL_CHECK(_level) && \ + Z_LOG_STATIC_INST_LEVEL_CHECK(_level, _inst, _source) && \ + Z_LOG_DYNAMIC_LEVEL_CHECK(_level, _source)) + +/** @brief Get current module data that is used for source id retrieving. + * + * If runtime filtering is used then pointer to dynamic data is returned and else constant + * data is used. + */ +#define Z_LOG_CURRENT_DATA() \ + COND_CODE_1(CONFIG_LOG_RUNTIME_FILTERING, \ + (__log_current_dynamic_data), (__log_current_const_data)) + /*****************************************************************************/ /****************** Definitions used by minimal logging *********************/ /*****************************************************************************/ @@ -226,68 +283,41 @@ static inline char z_log_minimal_level_to_char(int level) * @param _level Log message severity level. * * @param _inst Set to 1 for instance specific log message. 0 otherwise. - * - * @param _source Pointer to static source descriptor object. NULL when runtime filtering - * is enabled. - * - * @param _dsource Pointer to dynamic source descriptor. NULL when runtime filtering - * is disabled. + * @param _source Pointer to a structure associated with the module or instance. + * If it is a module then it is used only when runtime filtering is + * enabled. If it is instance then it is used in both cases. * * @param ... String with arguments. */ -#define Z_LOG2(_level, _inst, _source, _dsource, ...) do { \ - if (!Z_LOG_CONST_LEVEL_CHECK(_level)) { \ - break; \ - } \ - if (IS_ENABLED(CONFIG_LOG_MODE_MINIMAL)) { \ - Z_LOG_TO_PRINTK(_level, __VA_ARGS__); \ - break; \ - } \ - /* For instance logging check instance specific static level */ \ - if (_inst != 0 && !IS_ENABLED(CONFIG_LOG_RUNTIME_FILTERING)) { \ - if (_level > ((struct log_source_const_data *)_source)->level) { \ - break; \ - } \ - } \ - \ - bool is_user_context = k_is_user_context(); \ - if (IS_ENABLED(CONFIG_LOG_RUNTIME_FILTERING) && \ - !is_user_context && _level > Z_LOG_RUNTIME_FILTER((_dsource)->filters)) { \ - break; \ - } \ - int _mode; \ - void *_src = IS_ENABLED(CONFIG_LOG_RUNTIME_FILTERING) ? \ - (void *)(_dsource) : (void *)(_source); \ - bool string_ok; \ - LOG_POINTERS_VALIDATE(string_ok, __VA_ARGS__); \ - if (!string_ok) { \ - LOG_STRING_WARNING(_mode, _src, __VA_ARGS__); \ - break; \ - } \ - Z_LOG_MSG_CREATE(UTIL_NOT(IS_ENABLED(CONFIG_USERSPACE)), _mode, \ - Z_LOG_LOCAL_DOMAIN_ID, _src, _level, NULL,\ - 0, __VA_ARGS__); \ - (void)_mode; \ - if (false) { \ - /* Arguments checker present but never evaluated.*/ \ - /* Placed here to ensure that __VA_ARGS__ are*/ \ - /* evaluated once when log is enabled.*/ \ - z_log_printf_arg_checker(__VA_ARGS__); \ - } \ -} while (false) +#define Z_LOG2(_level, _inst, _source, ...) \ + do { \ + if (!Z_LOG_LEVEL_ALL_CHECK(_level, _inst, _source)) { \ + break; \ + } \ + if (IS_ENABLED(CONFIG_LOG_MODE_MINIMAL)) { \ + Z_LOG_TO_PRINTK(_level, __VA_ARGS__); \ + break; \ + } \ + int _mode; \ + bool string_ok; \ + LOG_POINTERS_VALIDATE(string_ok, __VA_ARGS__); \ + if (!string_ok) { \ + LOG_STRING_WARNING(_mode, _source, __VA_ARGS__); \ + break; \ + } \ + Z_LOG_MSG_CREATE(UTIL_NOT(IS_ENABLED(CONFIG_USERSPACE)), _mode, \ + Z_LOG_LOCAL_DOMAIN_ID, _source, _level, NULL, 0, __VA_ARGS__); \ + (void)_mode; \ + if (false) { \ + /* Arguments checker present but never evaluated.*/ \ + /* Placed here to ensure that __VA_ARGS__ are*/ \ + /* evaluated once when log is enabled.*/ \ + z_log_printf_arg_checker(__VA_ARGS__); \ + } \ + } while (false) -#define Z_LOG(_level, ...) \ - Z_LOG2(_level, 0, __log_current_const_data, __log_current_dynamic_data, __VA_ARGS__) - -#define Z_LOG_INSTANCE(_level, _inst, ...) do { \ - (void)_inst; \ - Z_LOG2(_level, 1, \ - COND_CODE_1(CONFIG_LOG_RUNTIME_FILTERING, (NULL), (Z_LOG_INST(_inst))), \ - (struct log_source_dynamic_data *)COND_CODE_1( \ - CONFIG_LOG_RUNTIME_FILTERING, \ - (Z_LOG_INST(_inst)), (NULL)), \ - __VA_ARGS__); \ -} while (0) +#define Z_LOG(_level, ...) Z_LOG2(_level, 0, Z_LOG_CURRENT_DATA(), __VA_ARGS__) +#define Z_LOG_INSTANCE(_level, _inst, ...) Z_LOG2(_level, 1, Z_LOG_INST(_inst), __VA_ARGS__) /*****************************************************************************/ /****************** Macros for hexdump logging *******************************/ @@ -302,11 +332,9 @@ static inline char z_log_minimal_level_to_char(int level) * * @param _inst Set to 1 for instance specific log message. 0 otherwise. * - * @param _source Pointer to static source descriptor object. NULL when runtime filtering - * is enabled. - * - * @param _dsource Pointer to dynamic source descriptor. NULL when runtime filtering - * is disabled. + * @param _source Pointer to a structure associated with the module or instance. + * If it is a module then it is used only when runtime filtering is + * enabled. If it is instance then it is used in both cases. * * @param _data Hexdump data; * @@ -314,56 +342,31 @@ static inline char z_log_minimal_level_to_char(int level) * * @param ... String. */ -#define Z_LOG_HEXDUMP2(_level, _inst, _source, _dsource, _data, _len, ...) do { \ - const char *_str = GET_ARG_N(1, __VA_ARGS__); \ - if (!Z_LOG_CONST_LEVEL_CHECK(_level)) { \ - break; \ - } \ - /* For instance logging check instance specific static level */ \ - if (_inst && !IS_ENABLED(CONFIG_LOG_RUNTIME_FILTERING)) { \ - if (_level > ((struct log_source_const_data *)_source)->level) { \ - break; \ - } \ - } \ - bool is_user_context = k_is_user_context(); \ - uint32_t filters = IS_ENABLED(CONFIG_LOG_RUNTIME_FILTERING) ? \ - (_dsource)->filters : 0;\ - \ - if (IS_ENABLED(CONFIG_LOG_MODE_MINIMAL)) { \ - Z_LOG_TO_PRINTK(_level, "%s", _str); \ - z_log_minimal_hexdump_print((_level), \ - (const char *)(_data), (_len));\ - break; \ - } \ - if (IS_ENABLED(CONFIG_LOG_RUNTIME_FILTERING) && \ - !is_user_context && (_level) > Z_LOG_RUNTIME_FILTER(filters)) { \ - break; \ - } \ - int mode; \ - void *_src = IS_ENABLED(CONFIG_LOG_RUNTIME_FILTERING) ? \ - (void *)(_dsource) : (void *)(_source); \ - Z_LOG_MSG_CREATE(UTIL_NOT(IS_ENABLED(CONFIG_USERSPACE)), mode, \ - Z_LOG_LOCAL_DOMAIN_ID, _src, _level, \ - _data, _len, \ - COND_CODE_0(NUM_VA_ARGS_LESS_1(_, ##__VA_ARGS__), \ +#define Z_LOG_HEXDUMP2(_level, _inst, _source, _data, _len, ...) \ + do { \ + if (!Z_LOG_LEVEL_ALL_CHECK(_level, _inst, _source)) { \ + break; \ + } \ + const char *_str = GET_ARG_N(1, __VA_ARGS__); \ + if (IS_ENABLED(CONFIG_LOG_MODE_MINIMAL)) { \ + Z_LOG_TO_PRINTK(_level, "%s", _str); \ + z_log_minimal_hexdump_print((_level), (const char *)(_data), (_len)); \ + break; \ + } \ + int mode; \ + Z_LOG_MSG_CREATE(UTIL_NOT(IS_ENABLED(CONFIG_USERSPACE)), mode, \ + Z_LOG_LOCAL_DOMAIN_ID, _source, _level, _data, _len, \ + COND_CODE_0(NUM_VA_ARGS_LESS_1(_, ##__VA_ARGS__), \ (), \ (COND_CODE_0(NUM_VA_ARGS_LESS_1(__VA_ARGS__), \ - ("%s", __VA_ARGS__), (__VA_ARGS__)))));\ -} while (false) + ("%s", __VA_ARGS__), (__VA_ARGS__))))); \ + } while (false) -#define Z_LOG_HEXDUMP(_level, _data, _length, ...) \ - Z_LOG_HEXDUMP2(_level, 0, \ - __log_current_const_data, \ - __log_current_dynamic_data, \ - _data, _length, __VA_ARGS__) +#define Z_LOG_HEXDUMP(_level, _data, _length, ...) \ + Z_LOG_HEXDUMP2(_level, 0, Z_LOG_CURRENT_DATA(), _data, _length, __VA_ARGS__) -#define Z_LOG_HEXDUMP_INSTANCE(_level, _inst, _data, _length, _str) \ - Z_LOG_HEXDUMP2(_level, 1, \ - COND_CODE_1(CONFIG_LOG_RUNTIME_FILTERING, (NULL), (Z_LOG_INST(_inst))), \ - (struct log_source_dynamic_data *)COND_CODE_1( \ - CONFIG_LOG_RUNTIME_FILTERING, \ - (Z_LOG_INST(_inst)), (NULL)), \ - _data, _length, _str) +#define Z_LOG_HEXDUMP_INSTANCE(_level, _inst, _data, _length, ...) \ + Z_LOG_HEXDUMP2(_level, 1, Z_LOG_INST(_inst), _data, _length, __VA_ARGS__) /*****************************************************************************/ /****************** Filtering macros *****************************************/ @@ -493,6 +496,20 @@ static inline uint32_t log_dynamic_source_id(struct log_source_dynamic_data *dat sizeof(struct log_source_dynamic_data); } +/** @brief Get index of the log source based on the address of the associated data. + * + * @param source Address of the data structure (dynamic if runtime filtering is + * enabled and static otherwise). + * + * @return Source ID. + */ +static inline uint32_t log_source_id(const void *source) +{ + return IS_ENABLED(CONFIG_LOG_RUNTIME_FILTERING) ? + log_dynamic_source_id((struct log_source_dynamic_data *)source) : + log_const_source_id((const struct log_source_const_data *)source); +} + /** @brief Dummy function to trigger log messages arguments type checking. */ static inline __printf_like(1, 2) void z_log_printf_arg_checker(const char *fmt, ...) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_frontend_stmesp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_frontend_stmesp.h new file mode 100644 index 00000000..e2b7a215 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_frontend_stmesp.h @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_LOGGING_LOG_FRONTEND_STMESP_H_ +#define ZEPHYR_INCLUDE_LOGGING_LOG_FRONTEND_STMESP_H_ + +#include +#include +#ifdef CONFIG_LOG_FRONTEND_STMESP +#include +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** @brief Notify frontend that ETR/STM is ready. + * + * Log frontend optionally dumps buffered data and start to write to the STM + * stimulus port. + * + * @note Function is applicable only for the domain that performs initial ETR/STM setup. + * + * @retval 0 on success. + * @retval -EIO if there was an internal failure. + */ +int log_frontend_stmesp_etr_ready(void); + +/** @brief Hook to be called before going to sleep. + * + * Hook writes dummy data to the STM Stimulus Port to ensure that all logging + * data is flushed. + */ +void log_frontend_stmesp_pre_sleep(void); + +/** @brief Perform a dummy write to STMESP. + * + * It can be used to force flushing STM data. + */ +void log_frontend_stmesp_dummy_write(void); + +/** @brief Trace point + * + * Write a trace point information using STM. Number of unique trace points is limited + * to 32768 - CONFIG_LOG_FRONTEND_STMESP_TP_CHAN_BASE per core. + * + * @param x Trace point ID. + */ +static inline void log_frontend_stmesp_tp(uint16_t x) +{ +#ifdef CONFIG_LOG_FRONTEND_STMESP + STMESP_Type *port; + int err = stmesp_get_port((uint32_t)x + CONFIG_LOG_FRONTEND_STMESP_TP_CHAN_BASE, &port); + + __ASSERT_NO_MSG(err == 0); + if (err == 0) { + stmesp_flag(port, 1, true, + IS_ENABLED(CONFIG_LOG_FRONTEND_STMESP_GUARANTEED_ACCESS)); + } +#endif +} + +/** @brief Trace point with 32 bit data. + * + * Write a trace point information using STM. Number of unique trace points is limited + * to 32768 - CONFIG_LOG_FRONTEND_STMESP_TP_CHAN_BASE per core. + * + * @param x Trace point ID. + * @param d Data. 32 bit word. + */ +static inline void log_frontend_stmesp_tp_d32(uint16_t x, uint32_t d) +{ +#ifdef CONFIG_LOG_FRONTEND_STMESP + STMESP_Type *port; + int err = stmesp_get_port((uint32_t)x + CONFIG_LOG_FRONTEND_STMESP_TP_CHAN_BASE, &port); + + __ASSERT_NO_MSG(err == 0); + if (err == 0) { + stmesp_data32(port, d, true, true, + IS_ENABLED(CONFIG_LOG_FRONTEND_STMESP_GUARANTEED_ACCESS)); + } +#endif +} + +/** @brief Function called for log message with no arguments when turbo logging is enabled. + * + * @param source Pointer to the source structure. + * @param x Index of the string used for the log message. + */ +void log_frontend_stmesp_log0(const void *source, uint32_t x); + +/** @brief Function called for log message with one argument when turbo logging is enabled. + * + * @param source Pointer to the source structure. + * @param x Index of the string used for the log message. + * @param arg Argument. + */ +void log_frontend_stmesp_log1(const void *source, uint32_t x, uint32_t arg); + +TYPE_SECTION_START_EXTERN(const char *, log_stmesp_ptr); + +/** @brief Macro for handling a turbo log message with no arguments. + * + * @param _source Pointer to the source structure. + * @param ... String. + */ +#define LOG_FRONTEND_STMESP_LOG0(_source, ...) \ + do { \ + static const char _str[] __in_section(_log_stmesp_str, static, _) \ + __used __noasan __aligned(sizeof(uint32_t)) = GET_ARG_N(1, __VA_ARGS__); \ + static const char *_str_ptr __in_section(_log_stmesp_ptr, static, _) \ + __used __noasan = _str; \ + uint32_t idx = \ + ((uintptr_t)&_str_ptr - (uintptr_t)TYPE_SECTION_START(log_stmesp_ptr)) / \ + sizeof(void *); \ + log_frontend_stmesp_log0(_source, idx); \ + } while (0) + +/** @brief Macro for handling a turbo log message with one argument. + * + * @param _source Pointer to the source structure. + * @param ... String with one numeric argument. + */ +#define LOG_FRONTEND_STMESP_LOG1(_source, ...) \ + do { \ + static const char _str[] __in_section(_log_stmesp_str, static, _) \ + __used __noasan __aligned(sizeof(uint32_t)) = GET_ARG_N(1, __VA_ARGS__); \ + static const char *_str_ptr __in_section(_log_stmesp_ptr, static, _) \ + __used __noasan = _str; \ + uint32_t idx = \ + ((uintptr_t)&_str_ptr - (uintptr_t)TYPE_SECTION_START(log_stmesp_ptr)) / \ + sizeof(void *); \ + log_frontend_stmesp_log1(_source, idx, (uintptr_t)(GET_ARG_N(2, __VA_ARGS__))); \ + } while (0) + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_LOGGING_LOG_FRONTEND_STMESP_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_frontend_stmesp_demux.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_frontend_stmesp_demux.h new file mode 100644 index 00000000..728ce401 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_frontend_stmesp_demux.h @@ -0,0 +1,319 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_LOGGING_LOG_FRONTEND_STMESP_DEMUX_H_ +#define ZEPHYR_INCLUDE_LOGGING_LOG_FRONTEND_STMESP_DEMUX_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup log_frontend_stmesp_apis Trace and Debug Domain APIs + * @{ + * @} + * @defgroup log_frontend_stpesp_demux_apis Logging frontend STMESP Demultiplexer API + * @ingroup log_frontend_stmesp_apis + * @{ + */ + +/** @brief Bits used to store major index. */ +#define LOG_FRONTEND_STMESP_DEMUX_MAJOR_BITS 3 + +/** @brief Bits used to store severity level. */ +#define LOG_FRONTEND_STMESP_DEMUX_LEVEL_BITS 3 + +/** @brief Bits used to store total length. */ +#define LOG_FRONTEND_STMESP_DEMUX_TLENGTH_BITS 16 + +/** @brief Bits used to store package length. */ +#define LOG_FRONTEND_STMESP_DEMUX_PLENGTH_BITS 10 + +/** @brief Maximum number of supported majors. */ +#define LOG_FRONTEND_STMESP_DEMUX_MAJOR_MAX BIT(LOG_FRONTEND_STMESP_DEMUX_MAJOR_BITS) + +/** @brief Log message type. */ +#define LOG_FRONTEND_STMESP_DEMUX_TYPE_LOG 0 + +/** @brief Trace point message type. */ +#define LOG_FRONTEND_STMESP_DEMUX_TYPE_TRACE_POINT 1 + +/** @brief HW event message type. */ +#define LOG_FRONTEND_STMESP_DEMUX_TYPE_HW_EVENT 2 + +/** @brief Logging message header. */ +struct log_frontend_stmesp_demux_log_header { + /** Major index. */ + uint32_t major : LOG_FRONTEND_STMESP_DEMUX_MAJOR_BITS; + + /** Severity level. */ + uint32_t level : LOG_FRONTEND_STMESP_DEMUX_LEVEL_BITS; + + /** Total length excluding this header. */ + uint32_t total_len : LOG_FRONTEND_STMESP_DEMUX_TLENGTH_BITS; + + /** Hexdump data length. */ + uint32_t package_len : LOG_FRONTEND_STMESP_DEMUX_PLENGTH_BITS; +}; + +/** @brief Union for writing raw data to the logging message header. */ +union log_frontend_stmesp_demux_header { + /** Log header structure. */ + struct log_frontend_stmesp_demux_log_header log; + + /** Raw word. */ + uint32_t raw; +}; + +/** @brief Generic STP demux packet. */ +struct log_frontend_stmesp_demux_packet_generic { + /** Data for MPSC packet handling. */ + MPSC_PBUF_HDR; + + /** Type. */ + uint64_t type: 2; + + /** Flag indicating if packet is valid. */ + uint64_t content_invalid: 1; +}; + +/** @brief Packet with logging message. */ +struct log_frontend_stmesp_demux_log { + /** Data for MPSC packet handling. */ + MPSC_PBUF_HDR; + + /** Type. */ + uint64_t type: 2; + + /** Flag indicating if packet is valid. */ + uint64_t content_invalid: 1; + + /** Timestamp. */ + uint64_t timestamp: 59; + + /** Logging header. */ + struct log_frontend_stmesp_demux_log_header hdr; + + /** Padding so that data is 8 bytes aligned. */ + uint32_t padding; + + /** Content. */ + uint8_t data[]; +}; + +/** @brief Packet with trace point. */ +struct log_frontend_stmesp_demux_trace_point { + /** Data for MPSC packet handling. */ + MPSC_PBUF_HDR; + + /** Type. */ + uint64_t type: 2; + + /** Flag indicating if packet is valid. */ + uint64_t content_invalid: 1; + + /** Flag indicating if trace point includes data. */ + uint64_t has_data: 1; + + /** Timestamp. 54 bits at 40MHz is >14 years. */ + uint64_t timestamp: 54; + + /** Major ID. */ + uint64_t major: 4; + + /** Source ID - used for compressed logging. */ + uint16_t source_id; + + /** ID */ + uint16_t id; + + /** Content. */ + uint32_t data; +}; + +/** @brief Packet with HW event. */ +struct log_frontend_stmesp_demux_hw_event { + /** Data for MPSC packet handling. */ + MPSC_PBUF_HDR; + + /** Type. */ + uint64_t type: 2; + + /** Flag indicating if packet is valid. */ + uint64_t content_invalid: 1; + + /** Timestamp. */ + uint64_t timestamp: 59; + + /** HW event ID. */ + uint8_t evt; +}; + +/** @brief Union of all packet types. */ +union log_frontend_stmesp_demux_packet { + /** Pointer to generic mpsc_pbuf const packet. */ + const union mpsc_pbuf_generic *rgeneric; + + /** Pointer to generic mpsc_pbuf packet. */ + union mpsc_pbuf_generic *generic; + + /** Pointer to the log message. */ + struct log_frontend_stmesp_demux_log *log; + + /** Pointer to the trace point message. */ + struct log_frontend_stmesp_demux_trace_point *trace_point; + + /** Pointer to the HW event message. */ + struct log_frontend_stmesp_demux_hw_event *hw_event; + + /** Pointer to the generic log_frontend_stmesp_demux packet. */ + struct log_frontend_stmesp_demux_packet_generic *generic_packet; +}; + +/** @brief Demultiplexer configuration. */ +struct log_frontend_stmesp_demux_config { + /** Array with expected major ID's. */ + const uint16_t *m_ids; + + /** Array length. Must be not bigger than @ref LOG_FRONTEND_STMESP_DEMUX_MAJOR_MAX. */ + uint32_t m_ids_cnt; + + /** Buffer for storing source ID's. Used for turbo logging. */ + uint32_t *source_id_buf; + + /** It must be multiple of number of major ID's count. */ + size_t source_id_buf_len; +}; + +/** @brief Initialize the demultiplexer. + * + * @param config Configuration. + * + * @retval 0 on success. + * @retval -EINVAL on invalid configuration. + */ +int log_frontend_stmesp_demux_init(const struct log_frontend_stmesp_demux_config *config); + +/** @brief Indicate major opcode in the STPv2 stream. + * + * @param id Master ID. + */ +void log_frontend_stmesp_demux_major(uint16_t id); + +/** @brief Indicate channel opcode in the STPv2 stream. + * + * @param id Channel ID. + */ +void log_frontend_stmesp_demux_channel(uint16_t id); + +/** @brief Indicate detected packet start (DMTS). + * + * @param data Data. Can be NULL which indicates trace point without data. + * @param ts Timestamp. Can be NULL. + */ +int log_frontend_stmesp_demux_packet_start(uint32_t *data, uint64_t *ts); + +/** @brief Indicate optimized log message with no arguments. + * + * @param source_id Source ID. + * @param ts Timestamp. Can be NULL. + */ +int log_frontend_stmesp_demux_log0(uint16_t source_id, uint64_t *ts); + +/** @brief Indicate source ID. + * + * @param source_id Source ID. + */ +void log_frontend_stmesp_demux_source_id(uint16_t source_id); + +/** @brief Indicate timestamp. + * + * Timestamp is separated from packet start because according to STM spec (3.2.2) + * it is possible that timestamp is assigned to a later packet. + * + * @param ts Timestamp. + */ +void log_frontend_stmesp_demux_timestamp(uint64_t ts); + +/** @brief Indicate data. + * + * @param data Data buffer. + * @param len Length. + */ +void log_frontend_stmesp_demux_data(uint8_t *data, size_t len); + +/** @brief Indicate packet end (Flag). */ +void log_frontend_stmesp_demux_packet_end(void); + +/** @brief Get number of dropped messages and reset the counter. + * + * Message can be dropped if there is no room in the packet buffer. + * + * @return Number of dropped messages. + */ +uint32_t log_frontend_stmesp_demux_get_dropped(void); + +/** @brief Claim packet. + * + * Get pointer to the pending packet with logging message. Packet must be freed + * using @ref log_frontend_stmesp_demux_free. + * + * @return Pointer to the packet or NULL. + */ +union log_frontend_stmesp_demux_packet log_frontend_stmesp_demux_claim(void); + +/** @brief Free previously claimed packet. + * + * See @ref log_frontend_stmesp_demux_claim. + * + * @param packet Packet. + */ +void log_frontend_stmesp_demux_free(union log_frontend_stmesp_demux_packet packet); + +/** @brief Get source name for a turbo log message. + * + * During a boot cooprocessors (FLPR and PPR) are sending location in memory where + * their source data is stored. If application core is an owner of those cores + * it has access to that memory and based on chip ID and source ID it can retrieve + * the source name. + * + * @param m_id Major ID. + * @param s_id Source ID. + * + * @return Pointer to a string which is a source name or unknown name if source name + * cannot be retrieved. + */ +const char *log_frontend_stmesp_demux_sname_get(uint32_t m_id, uint16_t s_id); + +/** @brief Check if there are any started but not completed log messages. + * + * @retval True There is no pending started log message. + * @retval False There is pending message. + */ +bool log_frontend_stmesp_demux_is_idle(void); + +/** @brief Close any opened messages and mark them as invalid. */ +void log_frontend_stmesp_demux_reset(void); + +/** @brief Get maximum buffer utilization. + * + * @retval Non-negative Maximum buffer utilization. + * @retval -ENOTSUP Feature not enabled. + */ +int log_frontend_stmesp_demux_max_utilization(void); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_LOGGING_LOG_FRONTEND_STMESP_DEMUX_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_output.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_output.h index 0ef3fe9a..46b59520 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_output.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/logging/log_output.h @@ -190,11 +190,34 @@ void log_output_msg_syst_process(const struct log_output *log_output, */ void log_output_dropped_process(const struct log_output *output, uint32_t cnt); +/** @brief Write to the output buffer. + * + * @param outf Output function. + * @param buf Buffer. + * @param len Buffer length. + * @param ctx Context passed to the %p outf. + */ +static inline void log_output_write(log_output_func_t outf, uint8_t *buf, size_t len, void *ctx) +{ + int processed; + + while (len != 0) { + processed = outf(buf, len, ctx); + len -= processed; + buf += processed; + } +} + /** @brief Flush output buffer. * * @param output Pointer to the log output instance. */ -void log_output_flush(const struct log_output *output); +static inline void log_output_flush(const struct log_output *output) +{ + log_output_write(output->func, output->buf, output->control_block->offset, + output->control_block->ctx); + output->control_block->offset = 0; +} /** @brief Function for setting user context passed to the output function. * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/lorawan/lorawan.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/lorawan/lorawan.h index 058c4cba..91499724 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/lorawan/lorawan.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/lorawan/lorawan.h @@ -103,6 +103,14 @@ enum lorawan_message_type { LORAWAN_MSG_CONFIRMED, /**< Confirmed message */ }; +/** + * @brief LoRaWAN downlink flags. + */ +enum lorawan_dl_flags { + LORAWAN_DATA_PENDING = BIT(0), + LORAWAN_TIME_UPDATED = BIT(1), +}; + /** * @brief LoRaWAN join parameters for over-the-Air activation (OTAA) * @@ -181,15 +189,14 @@ struct lorawan_downlink_cb { * and should therefore be as short as possible. * * @param port Port message was sent on - * @param data_pending Network server has more downlink packets pending + * @param flags Downlink data flags (see @ref lorawan_dl_flags) * @param rssi Received signal strength in dBm * @param snr Signal to Noise ratio in dBm * @param len Length of data received, will be 0 for ACKs * @param data Data received, will be NULL for ACKs */ - void (*cb)(uint8_t port, bool data_pending, - int16_t rssi, int8_t snr, - uint8_t len, const uint8_t *data); + void (*cb)(uint8_t port, uint8_t flags, int16_t rssi, int8_t snr, uint8_t len, + const uint8_t *data); /** Node for callback list */ sys_snode_t node; }; @@ -372,6 +379,32 @@ void lorawan_get_payload_sizes(uint8_t *max_next_payload_size, */ int lorawan_set_region(enum lorawan_region region); +/** + * @brief Request for time according to DeviceTimeReq MAC cmd + * + * Append MAC DevTimeReq command. It will be processed on next send + * message or force sending empty message to request time immediately. + * + * @param force_request Immediately send an empty message to execute the request + * @return 0 if successful, negative errno otherwise + */ +int lorawan_request_device_time(bool force_request); + +/** + * @brief Retrieve the current time from LoRaWAN stack updated by + * DeviceTimeAns on MAC layer. + * + * This function uses the GPS epoch format, as used in all LoRaWAN services. + * + * The GPS epoch started on 1980-01-06T00:00:00Z, but has since diverged + * from UTC, as it does not consider corrections like leap seconds. + * + * @param gps_time Synchronized time in GPS epoch format truncated to 32-bit. + * + * @return 0 if successful, -EAGAIN if the clock is not yet synchronized. + */ +int lorawan_device_time_get(uint32_t *gps_time); + #ifdef CONFIG_LORAWAN_APP_CLOCK_SYNC /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/math/interpolation.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/math/interpolation.h new file mode 100644 index 00000000..044c8506 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/math/interpolation.h @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2024 Embeint Inc + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_ZEPHYR_MATH_INTERPOLATION_H_ +#define ZEPHYR_INCLUDE_ZEPHYR_MATH_INTERPOLATION_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @file + * @brief Provide linear interpolation functions + */ + +/** + * @brief Perform a linear interpolation across an arbitrary curve + * + * @note Result rounding occurs away from 0, e.g: + * 1.5 -> 2, -5.5 -> -6 + * + * @param x_axis Ascending list of X co-ordinates for @a y_axis data points + * @param y_axis Y co-ordinates for each X data point + * @param len Length of the @a x_axis and @a y_axis arrays + * @param x X co-ordinate to lookup + * + * @retval y_axis[0] if x < x_axis[0] + * @retval y_axis[len - 1] if x > x_axis[len - 1] + * @retval int32_t Linear interpolation between the two nearest @a y_axis values. + */ +static inline int32_t linear_interpolate(const int32_t *x_axis, const int32_t *y_axis, uint8_t len, + int32_t x) +{ + float rise, run, slope; + int32_t x_shifted; + uint8_t idx_low = 0; + + /* Handle out of bounds values */ + if (x <= x_axis[0]) { + return y_axis[0]; + } else if (x >= x_axis[len - 1]) { + return y_axis[len - 1]; + } + + /* Find the lower x axis bucket */ + while (x >= x_axis[idx_low + 1]) { + idx_low++; + } + + /* Shift input to origin */ + x_shifted = x - x_axis[idx_low]; + if (x_shifted == 0) { + return y_axis[idx_low]; + } + + /* Local slope */ + rise = y_axis[idx_low + 1] - y_axis[idx_low]; + run = x_axis[idx_low + 1] - x_axis[idx_low]; + slope = rise / run; + + /* Apply slope, undo origin shift and round */ + return roundf(y_axis[idx_low] + (slope * x_shifted)); +} + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_ZEPHYR_MATH_INTERPOLATION_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit.h index 08da3df1..0d1e05f5 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit.h @@ -1,280 +1,22 @@ /* - * Copyright (c) 2020 Linumiz + * Copyright (c) 2024 Vogl Electronic GmbH * * SPDX-License-Identifier: Apache-2.0 */ /** - * @brief hawkBit Firmware Over-the-Air for Zephyr Project. - * @defgroup hawkbit hawkBit Firmware Over-the-Air - * @ingroup third_party - * @{ + * @file + * @brief hawkBit legacy header file */ + #ifndef ZEPHYR_INCLUDE_MGMT_HAWKBIT_H_ #define ZEPHYR_INCLUDE_MGMT_HAWKBIT_H_ -#include - -#define HAWKBIT_JSON_URL "/default/controller/v1" - -/** - * @brief Response message from hawkBit. - * - * @details These messages are used to inform the server and the - * user about the process status of the hawkBit and also - * used to standardize the errors that may occur. - * - */ -enum hawkbit_response { - HAWKBIT_NETWORKING_ERROR, - HAWKBIT_UNCONFIRMED_IMAGE, - HAWKBIT_PERMISSION_ERROR, - HAWKBIT_METADATA_ERROR, - HAWKBIT_DOWNLOAD_ERROR, - HAWKBIT_OK, - HAWKBIT_UPDATE_INSTALLED, - HAWKBIT_NO_UPDATE, - HAWKBIT_CANCEL_UPDATE, - HAWKBIT_NOT_INITIALIZED, - HAWKBIT_PROBE_IN_PROGRESS, -}; - -/** - * @brief hawkBit configuration structure. - * - * @details This structure is used to store the hawkBit configuration - * settings. - */ -struct hawkbit_runtime_config { - char *server_addr; - uint16_t server_port; - char *auth_token; - sec_tag_t tls_tag; -}; - -/** - * @brief Callback to provide the custom data to the hawkBit server. - * - * @details This callback is used to provide the custom data to the hawkBit server. - * The custom data is used to provide the hawkBit server with the device specific - * data. - * - * @param device_id The device ID. - * @param buffer The buffer to store the json. - * @param buffer_size The size of the buffer. - */ -typedef int (*hawkbit_config_device_data_cb_handler_t)(const char *device_id, uint8_t *buffer, - const size_t buffer_size); - -/** - * @brief Set the custom data callback. - * - * @details This function is used to set the custom data callback. - * The callback is used to provide the custom data to the hawkBit server. - * - * @param cb The callback function. - * - * @retval 0 on success. - * @retval -EINVAL if the callback is NULL. - */ -int hawkbit_set_custom_data_cb(hawkbit_config_device_data_cb_handler_t cb); - -/** - * @brief Init the flash partition - * - * @retval 0 on success. - * @retval -errno if init fails. - */ -int hawkbit_init(void); - -/** - * @brief Runs hawkBit probe and hawkBit update automatically - * - * @details The hawkbit_autohandler handles the whole process - * in pre-determined time intervals. - */ -void hawkbit_autohandler(void); - -/** - * @brief The hawkBit probe verify if there is some update to be performed. - * - * @retval HAWKBIT_NETWORKING_ERROR fail to connect to the hawkBit server. - * @retval HAWKBIT_UNCONFIRMED_IMAGE image is unconfirmed. - * @retval HAWKBIT_PERMISSION_ERROR fail to get the permission to access the hawkBit server. - * @retval HAWKBIT_METADATA_ERROR fail to parse or to encode the metadata. - * @retval HAWKBIT_DOWNLOAD_ERROR fail while downloading the update package. - * @retval HAWKBIT_OK if the image was already updated. - * @retval HAWKBIT_UPDATE_INSTALLED if an update was installed. Reboot is required to apply it. - * @retval HAWKBIT_NO_UPDATE if no update was available. - * @retval HAWKBIT_CANCEL_UPDATE if the update was cancelled by the server. - * @retval HAWKBIT_NOT_INITIALIZED if hawkBit is not initialized. - * @retval HAWKBIT_PROBE_IN_PROGRESS if probe is currently running. - */ -enum hawkbit_response hawkbit_probe(void); - -/** - * @brief Request system to reboot. - */ -void hawkbit_reboot(void); - -/** - * @brief Callback to get the device identity. - * - * @param id Pointer to the buffer to store the device identity - * @param id_max_len The maximum length of the buffer - */ -typedef bool (*hawkbit_get_device_identity_cb_handler_t)(char *id, int id_max_len); - -/** - * @brief Set the device identity callback. - * - * @details This function is used to set a custom device identity callback. - * - * @param cb The callback function. - * - * @retval 0 on success. - * @retval -EINVAL if the callback is NULL. - */ -int hawkbit_set_device_identity_cb(hawkbit_get_device_identity_cb_handler_t cb); - -/** - * @brief Set the hawkBit server configuration settings. - * - * @param config Configuration settings to set. - * @retval 0 on success. - * @retval -EAGAIN if probe is currently running. - */ -int hawkbit_set_config(struct hawkbit_runtime_config *config); +#warning " is deprecated, include , \ + and instead." -/** - * @brief Get the hawkBit server configuration settings. - * - * @return Configuration settings. - */ -struct hawkbit_runtime_config hawkbit_get_config(void); - -/** - * @brief Set the hawkBit server address. - * - * @param addr_str Server address to set. - * @retval 0 on success. - * @retval -EAGAIN if probe is currently running. - */ -static inline int hawkbit_set_server_addr(char *addr_str) -{ - struct hawkbit_runtime_config set_config = { - .server_addr = addr_str, .server_port = 0, .auth_token = NULL, .tls_tag = 0}; - - return hawkbit_set_config(&set_config); -} - -/** - * @brief Set the hawkBit server port. - * - * @param port Server port to set. - * @retval 0 on success. - * @retval -EAGAIN if probe is currently running. - */ -static inline int hawkbit_set_server_port(uint16_t port) -{ - struct hawkbit_runtime_config set_config = { - .server_addr = NULL, .server_port = port, .auth_token = NULL, .tls_tag = 0}; - - return hawkbit_set_config(&set_config); -} - -/** - * @brief Set the hawkBit security token. - * - * @param token Security token to set. - * @retval 0 on success. - * @retval -EAGAIN if probe is currently running. - */ -static inline int hawkbit_set_ddi_security_token(char *token) -{ - struct hawkbit_runtime_config set_config = { - .server_addr = NULL, .server_port = 0, .auth_token = token, .tls_tag = 0}; - - return hawkbit_set_config(&set_config); -} - -/** - * @brief Set the hawkBit TLS tag - * - * @param tag TLS tag to set. - * @retval 0 on success. - * @retval -EAGAIN if probe is currently running. - */ -static inline int hawkbit_set_tls_tag(sec_tag_t tag) -{ - struct hawkbit_runtime_config set_config = { - .server_addr = NULL, .server_port = 0, .auth_token = NULL, .tls_tag = tag}; - - return hawkbit_set_config(&set_config); -} - -/** - * @brief Get the hawkBit server address. - * - * @return Server address. - */ -static inline char *hawkbit_get_server_addr(void) -{ - return hawkbit_get_config().server_addr; -} - -/** - * @brief Get the hawkBit server port. - * - * @return Server port. - */ -static inline uint16_t hawkbit_get_server_port(void) -{ - return hawkbit_get_config().server_port; -} - -/** - * @brief Get the hawkBit security token. - * - * @return Security token. - */ -static inline char *hawkbit_get_ddi_security_token(void) -{ - return hawkbit_get_config().auth_token; -} - -/** - * @brief Get the hawkBit TLS tag. - * - * @return TLS tag. - */ -static inline sec_tag_t hawkbit_get_tls_tag(void) -{ - return hawkbit_get_config().tls_tag; -} - -/** - * @brief Get the hawkBit action id. - * - * @return Action id. - -*/ -int32_t hawkbit_get_action_id(void); - -/** - * @brief Resets the hawkBit action id, that is saved in settings. - * - * @details This should be done after changing the hawkBit server. - * - * @retval 0 on success. - * @retval -EAGAIN if probe is currently running. - * @retval -EIO if the action id could not be reset. - * - */ -int hawkbit_reset_action_id(void); - -/** - * @} - */ +#include +#include +#include -#endif /* _HAWKBIT_H_ */ +#endif /* ZEPHYR_INCLUDE_MGMT_HAWKBIT_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit/autohandler.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit/autohandler.h new file mode 100644 index 00000000..3fbe7f15 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit/autohandler.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2024 Vogl Electronic GmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief hawkBit autohandler header file + */ + +/** + * @brief hawkBit autohandler API. + * @defgroup hawkbit_autohandler hawkBit autohandler API + * @ingroup hawkbit + * @{ + */ + +#ifndef ZEPHYR_INCLUDE_MGMT_HAWKBIT_AUTOHANDLER_H_ +#define ZEPHYR_INCLUDE_MGMT_HAWKBIT_AUTOHANDLER_H_ + +#include + +/** + * @brief Runs hawkBit probe and hawkBit update automatically + * + * @details The hawkbit_autohandler handles the whole process + * in pre-determined time intervals. + * + * @param auto_reschedule If true, the handler will reschedule itself + */ +void hawkbit_autohandler(bool auto_reschedule); + +/** + * @brief Wait for the autohandler to finish. + * + * @param events Set of desired events on which to wait. Set to ::UINT32_MAX to wait for the + * autohandler to finish one run, or BIT() together with a value from + * ::hawkbit_response to wait for a specific event. + * @param timeout Waiting period for the desired set of events or one of the + * special values ::K_NO_WAIT and ::K_FOREVER. + * + * @return A value from ::hawkbit_response. + */ +enum hawkbit_response hawkbit_autohandler_wait(uint32_t events, k_timeout_t timeout); + +/** + * @brief Cancel the run of the hawkBit autohandler. + * + * @return a value from k_work_cancel_delayable(). + */ +int hawkbit_autohandler_cancel(void); + +/** + * @brief Set the delay for the next run of the autohandler. + * + * @details This function will only delay the next run of the autohandler. The delay will not + * persist after the autohandler runs. + * + * @param timeout The delay to set. + * @param if_bigger If true, the delay will be set only if the new delay is bigger than the current + * one. + * + * @retval 0 if @a if_bigger was true and the current delay was bigger than the new one. + * @retval otherwise, a value from k_work_reschedule(). + */ +int hawkbit_autohandler_set_delay(k_timeout_t timeout, bool if_bigger); + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_MGMT_HAWKBIT_AUTOHANDLER_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit/config.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit/config.h new file mode 100644 index 00000000..c02212bf --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit/config.h @@ -0,0 +1,192 @@ +/* + * Copyright (c) 2024 Vogl Electronic GmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief hawkBit configuration header file + */ + +/** + * @brief hawkBit configuration API. + * @defgroup hawkbit_config hawkBit configuration API + * @ingroup hawkbit + * @{ + */ + +#ifndef ZEPHYR_INCLUDE_MGMT_HAWKBIT_CONFIG_H_ +#define ZEPHYR_INCLUDE_MGMT_HAWKBIT_CONFIG_H_ + +#include +#include + +/** + * @brief hawkBit configuration structure. + * + * @details This structure is used to store the hawkBit configuration + * settings. + */ +struct hawkbit_runtime_config { + /** Server address */ + char *server_addr; + /** Server port */ + uint16_t server_port; + /** Security token */ + char *auth_token; + /** TLS tag */ + sec_tag_t tls_tag; +}; + +/** + * @brief Set the hawkBit server configuration settings. + * + * @param config Configuration settings to set. + * @retval 0 on success. + * @retval -EAGAIN if probe is currently running. + */ +int hawkbit_set_config(struct hawkbit_runtime_config *config); + +/** + * @brief Get the hawkBit server configuration settings. + * + * @return Configuration settings. + */ +struct hawkbit_runtime_config hawkbit_get_config(void); + +/** + * @brief Set the hawkBit server address. + * + * @param addr_str Server address to set. + * @retval 0 on success. + * @retval -EAGAIN if probe is currently running. + */ +static inline int hawkbit_set_server_addr(char *addr_str) +{ + struct hawkbit_runtime_config set_config = { + .server_addr = addr_str, + .server_port = 0, + .auth_token = NULL, + .tls_tag = 0, + }; + + return hawkbit_set_config(&set_config); +} + +/** + * @brief Set the hawkBit server port. + * + * @param port Server port to set. + * @retval 0 on success. + * @retval -EAGAIN if probe is currently running. + */ +static inline int hawkbit_set_server_port(uint16_t port) +{ + struct hawkbit_runtime_config set_config = { + .server_addr = NULL, + .server_port = port, + .auth_token = NULL, + .tls_tag = 0, + }; + + return hawkbit_set_config(&set_config); +} + +/** + * @brief Set the hawkBit security token. + * + * @param token Security token to set. + * @retval 0 on success. + * @retval -EAGAIN if probe is currently running. + */ +static inline int hawkbit_set_ddi_security_token(char *token) +{ + struct hawkbit_runtime_config set_config = { + .server_addr = NULL, + .server_port = 0, + .auth_token = token, + .tls_tag = 0, + }; + + return hawkbit_set_config(&set_config); +} + +/** + * @brief Set the hawkBit TLS tag + * + * @param tag TLS tag to set. + * @retval 0 on success. + * @retval -EAGAIN if probe is currently running. + */ +static inline int hawkbit_set_tls_tag(sec_tag_t tag) +{ + struct hawkbit_runtime_config set_config = { + .server_addr = NULL, + .server_port = 0, + .auth_token = NULL, + .tls_tag = tag, + }; + + return hawkbit_set_config(&set_config); +} + +/** + * @brief Get the hawkBit server address. + * + * @return Server address. + */ +static inline char *hawkbit_get_server_addr(void) +{ + return hawkbit_get_config().server_addr; +} + +/** + * @brief Get the hawkBit server port. + * + * @return Server port. + */ +static inline uint16_t hawkbit_get_server_port(void) +{ + return hawkbit_get_config().server_port; +} + +/** + * @brief Get the hawkBit security token. + * + * @return Security token. + */ +static inline char *hawkbit_get_ddi_security_token(void) +{ + return hawkbit_get_config().auth_token; +} + +/** + * @brief Get the hawkBit TLS tag. + * + * @return TLS tag. + */ +static inline sec_tag_t hawkbit_get_tls_tag(void) +{ + return hawkbit_get_config().tls_tag; +} + +/** + * @brief Get the hawkBit action id. + * + * @return Action id. + */ +int32_t hawkbit_get_action_id(void); + +/** + * @brief Get the hawkBit poll interval. + * + * @return Poll interval. + */ +uint32_t hawkbit_get_poll_interval(void); + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_MGMT_HAWKBIT_CONFIG_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit/hawkbit.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit/hawkbit.h new file mode 100644 index 00000000..6ef59521 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/hawkbit/hawkbit.h @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2020 Linumiz + * Copyright (c) 2024 Vogl Electronic GmbH + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief hawkBit main header file + */ + +/** + * @brief hawkBit Firmware Over-the-Air for Zephyr Project. + * @defgroup hawkbit hawkBit Firmware Over-the-Air + * @ingroup third_party + * @{ + */ + +#ifndef ZEPHYR_INCLUDE_MGMT_HAWKBIT_HAWKBIT_H_ +#define ZEPHYR_INCLUDE_MGMT_HAWKBIT_HAWKBIT_H_ + +#include + +/** + * @brief Response message from hawkBit. + * + * @details These messages are used to inform the server and the + * user about the process status of the hawkBit and also + * used to standardize the errors that may occur. + * + */ +enum hawkbit_response { + /** matching events were not received within the specified time */ + HAWKBIT_NO_RESPONSE, + /** fail to connect to the hawkBit server */ + HAWKBIT_NETWORKING_ERROR, + /** image is unconfirmed */ + HAWKBIT_UNCONFIRMED_IMAGE, + /** fail to get the permission to access the hawkBit server */ + HAWKBIT_PERMISSION_ERROR, + /** fail to parse or to encode the metadata */ + HAWKBIT_METADATA_ERROR, + /** fail while downloading the update package */ + HAWKBIT_DOWNLOAD_ERROR, + /** image was already updated */ + HAWKBIT_OK, + /** an update was installed. Reboot is required to apply it */ + HAWKBIT_UPDATE_INSTALLED, + /** no update was available */ + HAWKBIT_NO_UPDATE, + /** update was cancelled by the server */ + HAWKBIT_CANCEL_UPDATE, + /** hawkBit is not initialized */ + HAWKBIT_NOT_INITIALIZED, + /** probe is currently running */ + HAWKBIT_PROBE_IN_PROGRESS, +}; + +/** + * @brief Callback to provide the custom data to the hawkBit server. + * + * @details This callback is used to provide the custom data to the hawkBit server. + * The custom data is used to provide the hawkBit server with the device specific + * data. + * + * @param device_id The device ID. + * @param buffer The buffer to store the json. + * @param buffer_size The size of the buffer. + */ +typedef int (*hawkbit_config_device_data_cb_handler_t)(const char *device_id, uint8_t *buffer, + const size_t buffer_size); + +/** + * @brief Set the custom data callback. + * + * @details This function is used to set the custom data callback. + * The callback is used to provide the custom data to the hawkBit server. + * + * @param cb The callback function. + * + * @retval 0 on success. + * @retval -EINVAL if the callback is NULL. + */ +int hawkbit_set_custom_data_cb(hawkbit_config_device_data_cb_handler_t cb); + +/** + * @brief Init the flash partition + * + * @retval 0 on success. + * @retval -errno if init fails. + */ +int hawkbit_init(void); + +/** + * @brief The hawkBit probe verify if there is some update to be performed. + * + * @return A value from ::hawkbit_response. + */ +enum hawkbit_response hawkbit_probe(void); + +/** + * @brief Request system to reboot. + */ +void hawkbit_reboot(void); + +/** + * @brief Callback to get the device identity. + * + * @param id Pointer to the buffer to store the device identity + * @param id_max_len The maximum length of the buffer + */ +typedef bool (*hawkbit_get_device_identity_cb_handler_t)(char *id, int id_max_len); + +/** + * @brief Set the device identity callback. + * + * @details This function is used to set a custom device identity callback. + * + * @param cb The callback function. + * + * @retval 0 on success. + * @retval -EINVAL if the callback is NULL. + */ +int hawkbit_set_device_identity_cb(hawkbit_get_device_identity_cb_handler_t cb); + +/** + * @brief Resets the hawkBit action id, that is saved in settings. + * + * @details This should be done after changing the hawkBit server. + * + * @retval 0 on success. + * @retval -EAGAIN if probe is currently running. + * @retval -EIO if the action id could not be reset. + * + */ +int hawkbit_reset_action_id(void); + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_MGMT_HAWKBIT_HAWKBIT_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/enum_mgmt/enum_mgmt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/enum_mgmt/enum_mgmt.h new file mode 100644 index 00000000..2eea2ee2 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/enum_mgmt/enum_mgmt.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef H_ENUM_MGMT_ +#define H_ENUM_MGMT_ + +/** + * @brief MCUmgr enum_mgmt API + * @defgroup mcumgr_enum_mgmt MCUmgr enum_mgmt API + * @ingroup mcumgr + * @{ + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Command IDs for enumeration management group. + */ +#define ENUM_MGMT_ID_COUNT 0 +#define ENUM_MGMT_ID_LIST 1 +#define ENUM_MGMT_ID_SINGLE 2 +#define ENUM_MGMT_ID_DETAILS 3 + +/** + * Command result codes for enumeration management group. + */ +enum enum_mgmt_err_code_t { + /** No error, this is implied if there is no ret value in the response */ + ENUM_MGMT_ERR_OK = 0, + + /** Unknown error occurred. */ + ENUM_MGMT_ERR_UNKNOWN, + + /** Too many entries were provided. */ + ENUM_MGMT_ERR_TOO_MANY_GROUP_ENTRIES, + + /** Insufficient heap memory to store entry data. */ + ENUM_MGMT_ERR_INSUFFICIENT_HEAP_FOR_ENTRIES, + + /** Provided index is larger than the number of supported grouped. */ + ENUM_MGMT_ERR_INDEX_TOO_LARGE, +}; + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* H_ENUM_MGMT_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/enum_mgmt/enum_mgmt_callbacks.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/enum_mgmt/enum_mgmt_callbacks.h new file mode 100644 index 00000000..638a69e9 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/enum_mgmt/enum_mgmt_callbacks.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef H_MCUMGR_ENUM_MGMT_CALLBACKS_ +#define H_MCUMGR_ENUM_MGMT_CALLBACKS_ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief MCUmgr enum_mgmt callback API + * @defgroup mcumgr_callback_api_enum_mgmt MCUmgr enum_mgmt callback API + * @ingroup mcumgr_callback_api + * @{ + */ + +/** + * Structure provided in the #MGMT_EVT_OP_ENUM_MGMT_DETAILS notification callback: This callback + * function is called once per command group when the detail command is used, it can be used to + * return additional information/fields in the response. + */ +struct enum_mgmt_detail_output { + /** The group that is currently being enumerated. */ + const struct mgmt_group *group; + + /** + * The zcbor encoder which is currently being used to output group information, additional + * fields to the group can be added using this. + */ + zcbor_state_t *zse; +}; + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/img_mgmt/img_mgmt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/img_mgmt/img_mgmt.h index 82e642c7..49dffc6b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/img_mgmt/img_mgmt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/img_mgmt/img_mgmt.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2018-2021 mcumgr authors - * Copyright (c) 2022-2023 Nordic Semiconductor ASA + * Copyright (c) 2022-2024 Nordic Semiconductor ASA * * SPDX-License-Identifier: Apache-2.0 */ @@ -56,6 +56,7 @@ extern "C" { #define IMG_MGMT_ID_CORELIST 3 #define IMG_MGMT_ID_CORELOAD 4 #define IMG_MGMT_ID_ERASE 5 +#define IMG_MGMT_ID_SLOT_INFO 6 /** * Command result codes for image management group. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/img_mgmt/img_mgmt_callbacks.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/img_mgmt/img_mgmt_callbacks.h index a9e05b5d..5c479fd9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/img_mgmt/img_mgmt_callbacks.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/img_mgmt/img_mgmt_callbacks.h @@ -8,6 +8,10 @@ #ifndef H_MCUMGR_IMG_MGMT_CALLBACKS_ #define H_MCUMGR_IMG_MGMT_CALLBACKS_ +#include +#include +#include + #ifdef __cplusplus extern "C" { #endif @@ -37,6 +41,58 @@ struct img_mgmt_upload_check { struct img_mgmt_upload_req *req; }; +/** + * Structure provided in the #MGMT_EVT_OP_IMG_MGMT_IMAGE_SLOT_STATE notification callback: This + * callback function is used to allow applications or modules append custom fields to the image + * slot state response. + */ +struct img_mgmt_state_slot_encode { + bool *ok; + zcbor_state_t *zse; + const uint32_t slot; + const char *version; + const uint8_t *hash; + const int flags; +}; + +/** + * Structure provided in the #MGMT_EVT_OP_IMG_MGMT_SLOT_INFO_IMAGE notification callback: This + * callback function is called once per image when the slot info command is used, it can be used + * to return additional information/fields in the response. + */ +struct img_mgmt_slot_info_image { + /** The image that is currently being enumerated. */ + const uint8_t image; + + /** + * The zcbor encoder which is currently being used to output information, additional fields + * can be added using this. + */ + zcbor_state_t *zse; +}; + +/** + * Structure provided in the #MGMT_EVT_OP_IMG_MGMT_SLOT_INFO_SLOT notification callback: This + * callback function is called once per slot per image when the slot info command is used, it can + * be used to return additional information/fields in the response. + */ +struct img_mgmt_slot_info_slot { + /** The image that is currently being enumerated. */ + const uint8_t image; + + /** The slot that is currently being enumerated. */ + const uint8_t slot; + + /** Flash area of the slot that is current being enumerated. */ + const struct flash_area *fa; + + /** + * The zcbor encoder which is currently being used to output information, additional fields + * can be added using this. + */ + zcbor_state_t *zse; +}; + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/os_mgmt/os_mgmt_callbacks.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/os_mgmt/os_mgmt_callbacks.h index 07ff7039..c9f7259f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/os_mgmt/os_mgmt_callbacks.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/grp/os_mgmt/os_mgmt_callbacks.h @@ -28,6 +28,30 @@ struct os_mgmt_reset_data { bool force; }; +/** + * Structure provided in the #MGMT_EVT_OP_OS_MGMT_BOOTLOADER_INFO notification callback: This + * callback function is used to add new fields to the bootloader info response. + */ +struct os_mgmt_bootloader_info_data { + /** + * The zcbor encoder which is currently being used to output group information, additional + * fields to the group can be added using this. + */ + zcbor_state_t *zse; + + /** Contains the number of decoded parameters. */ + const size_t *decoded; + + /** Contains the value of the query parameter. */ + struct zcbor_string *query; + + /** + * Must be set to true to indicate a response has been added, otherwise will return the + * #OS_MGMT_ERR_QUERY_YIELDS_NO_ANSWER error. + */ + bool *has_output; +}; + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/mgmt/callbacks.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/mgmt/callbacks.h index 194c3846..e3cd408e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/mgmt/callbacks.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/mgmt/callbacks.h @@ -27,6 +27,10 @@ #include #endif +#ifdef CONFIG_MCUMGR_GRP_ENUM +#include +#endif + #ifdef __cplusplus extern "C" { #endif @@ -118,6 +122,7 @@ enum mgmt_cb_groups { MGMT_EVT_GRP_IMG, MGMT_EVT_GRP_FS, MGMT_EVT_GRP_SETTINGS, + MGMT_EVT_GRP_ENUM, MGMT_EVT_GRP_USER_CUSTOM_START = MGMT_GROUP_ID_PERUSER, }; @@ -180,6 +185,15 @@ enum img_mgmt_group_events { /** Callback when an image write command has finished writing to flash. */ MGMT_EVT_OP_IMG_MGMT_DFU_CHUNK_WRITE_COMPLETE = MGMT_DEF_EVT_OP_ID(MGMT_EVT_GRP_IMG, 5), + /** Callback when an image slot's state is encoded for a response. */ + MGMT_EVT_OP_IMG_MGMT_IMAGE_SLOT_STATE = MGMT_DEF_EVT_OP_ID(MGMT_EVT_GRP_IMG, 6), + + /** Callback when an slot list command outputs fields for an image. */ + MGMT_EVT_OP_IMG_MGMT_SLOT_INFO_IMAGE = MGMT_DEF_EVT_OP_ID(MGMT_EVT_GRP_IMG, 7), + + /** Callback when an slot list command outputs fields for a slot of an image. */ + MGMT_EVT_OP_IMG_MGMT_SLOT_INFO_SLOT = MGMT_DEF_EVT_OP_ID(MGMT_EVT_GRP_IMG, 8), + /** Used to enable all img_mgmt_group events. */ MGMT_EVT_OP_IMG_MGMT_ALL = MGMT_DEF_EVT_OP_ALL(MGMT_EVT_GRP_IMG), }; @@ -198,10 +212,16 @@ enum os_mgmt_group_events { MGMT_EVT_OP_OS_MGMT_INFO_APPEND = MGMT_DEF_EVT_OP_ID(MGMT_EVT_GRP_OS, 2), /** Callback when a datetime get command has been received. */ - MGMT_EVT_OP_OS_MGMT_DATETIME_GET = MGMT_DEF_EVT_OP_ID(MGMT_EVT_GRP_OS, 3), + MGMT_EVT_OP_OS_MGMT_DATETIME_GET = MGMT_DEF_EVT_OP_ID(MGMT_EVT_GRP_OS, 3), /** Callback when a datetime set command has been received, data is struct rtc_time(). */ - MGMT_EVT_OP_OS_MGMT_DATETIME_SET = MGMT_DEF_EVT_OP_ID(MGMT_EVT_GRP_OS, 4), + MGMT_EVT_OP_OS_MGMT_DATETIME_SET = MGMT_DEF_EVT_OP_ID(MGMT_EVT_GRP_OS, 4), + + /** + * Callback when a bootloader info command has been received, data is + * os_mgmt_bootloader_info_data. + */ + MGMT_EVT_OP_OS_MGMT_BOOTLOADER_INFO = MGMT_DEF_EVT_OP_ID(MGMT_EVT_GRP_OS, 5), /** Used to enable all os_mgmt_group events. */ MGMT_EVT_OP_OS_MGMT_ALL = MGMT_DEF_EVT_OP_ALL(MGMT_EVT_GRP_OS), @@ -218,6 +238,17 @@ enum settings_mgmt_group_events { MGMT_EVT_OP_SETTINGS_MGMT_ALL = MGMT_DEF_EVT_OP_ALL(MGMT_EVT_GRP_SETTINGS), }; +/** + * MGMT event opcodes for enumeration management group. + */ +enum enum_mgmt_group_events { + /** Callback when fetching details on supported command groups. */ + MGMT_EVT_OP_ENUM_MGMT_DETAILS = MGMT_DEF_EVT_OP_ID(MGMT_EVT_GRP_ENUM, 0), + + /** Used to enable all enum_mgmt_group events. */ + MGMT_EVT_OP_ENUM_MGMT_ALL = MGMT_DEF_EVT_OP_ALL(MGMT_EVT_GRP_ENUM), +}; + /** * MGMT callback struct */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/mgmt/mgmt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/mgmt/mgmt.h index a247a1c2..23960154 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/mgmt/mgmt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/mgmt/mgmt.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2018-2021 mcumgr authors - * Copyright (c) 2022-2023 Nordic Semiconductor ASA + * Copyright (c) 2022-2024 Nordic Semiconductor ASA * * SPDX-License-Identifier: Apache-2.0 */ @@ -104,6 +104,11 @@ struct mgmt_group { /** Should be true when using user defined payload */ bool custom_payload; #endif + +#if IS_ENABLED(CONFIG_MCUMGR_GRP_ENUM_DETAILS_NAME) + /** NULL-terminated name of group */ + const char *mg_group_name; +#endif }; /** @@ -120,6 +125,24 @@ void mgmt_register_group(struct mgmt_group *group); */ void mgmt_unregister_group(struct mgmt_group *group); +/** + * @brief Group iteration callback + * + * @param group Group + * @param user_data User-supplied data + * + * @return true to continue with the foreach callback, false to abort + */ +typedef bool (*mgmt_groups_cb_t)(const struct mgmt_group *group, void *user_data); + +/** + * @brief Iterate over groups + * + * @param user_cb User callback + * @param user_data User-supplied data + */ +void mgmt_groups_foreach(mgmt_groups_cb_t user_cb, void *user_data); + /** * @brief Finds a registered command handler. * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/mgmt/mgmt_defines.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/mgmt/mgmt_defines.h index 5dafc8f8..f1bb7178 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/mgmt/mgmt_defines.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/mgmt/mgmt_defines.h @@ -77,6 +77,9 @@ enum mcumgr_group_t { /** Shell management group, used for executing shell commands */ MGMT_GROUP_ID_SHELL, + /** Enumeration management group, used for listing supported command groups */ + MGMT_GROUP_ID_ENUM, + /** User groups defined from 64 onwards */ MGMT_GROUP_ID_PERUSER = 64, diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/smp/smp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/smp/smp.h index c72461a9..16d7ada8 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/smp/smp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/smp/smp.h @@ -26,7 +26,7 @@ #ifndef H_SMP_ #define H_SMP_ -#include +#include #include #include @@ -121,12 +121,6 @@ int smp_process_request_packet(struct smp_streamer *streamer, void *req); */ bool smp_add_cmd_err(zcbor_state_t *zse, uint16_t group, uint16_t ret); -/** @deprecated Deprecated after Zephyr 3.4, use smp_add_cmd_err() instead */ -__deprecated inline bool smp_add_cmd_ret(zcbor_state_t *zse, uint16_t group, uint16_t ret) -{ - return smp_add_cmd_err(zse, group, ret); -} - #if defined(CONFIG_MCUMGR_SMP_SUPPORT_ORIGINAL_PROTOCOL) /** @typedef smp_translate_error_fn * @brief Translates a SMP version 2 error response to a legacy SMP version 1 error code. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/smp/smp_client.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/smp/smp_client.h index 2e0eee2c..35685fd9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/smp/smp_client.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/smp/smp_client.h @@ -8,7 +8,7 @@ #define H_SMP_CLIENT_ #include -#include +#include #include #include #include diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/transport/smp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/transport/smp.h index d8cec687..38aa1b0e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/transport/smp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/transport/smp.h @@ -148,6 +148,8 @@ enum smp_transport_type { SMP_UDP_IPV4_TRANSPORT, /** SMP UDP IPv6 */ SMP_UDP_IPV6_TRANSPORT, + /** SMP LoRaWAN */ + SMP_LORAWAN_TRANSPORT, /** SMP user defined type */ SMP_USER_DEFINED_TRANSPORT }; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/transport/smp_bt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/transport/smp_bt.h index 0aff0510..501cd658 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/transport/smp_bt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/transport/smp_bt.h @@ -11,6 +11,7 @@ #ifndef ZEPHYR_INCLUDE_MGMT_SMP_BT_H_ #define ZEPHYR_INCLUDE_MGMT_SMP_BT_H_ +#include #include struct bt_conn; @@ -18,6 +19,24 @@ struct bt_conn; extern "C" { #endif +/** SMP service UUID value. */ +#define SMP_BT_SVC_UUID_VAL \ + BT_UUID_128_ENCODE(0x8d53dc1d, 0x1db7, 0x4cd3, 0x868b, 0x8a527460aa84) + +/** SMP service UUID. */ +#define SMP_BT_SVC_UUID \ + BT_UUID_DECLARE_128(SMP_BT_SVC_UUID_VAL) + +/** SMP characteristic UUID value. */ +#define SMP_BT_CHR_UUID_VAL \ + BT_UUID_128_ENCODE(0xda2e7828, 0xfbce, 0x4e01, 0xae9e, 0x261174997c48) + +/** SMP characteristic UUID + * Used for both requests and responses. + */ +#define SMP_BT_CHR_UUID \ + BT_UUID_DECLARE_128(SMP_BT_CHR_UUID_VAL) + /** * @brief Registers the SMP Bluetooth service. Should only be called if the Bluetooth * transport has been unregistered by calling smp_bt_unregister(). diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/transport/smp_dummy.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/transport/smp_dummy.h index 02e974ea..5247b8e7 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/transport/smp_dummy.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/mcumgr/transport/smp_dummy.h @@ -12,7 +12,7 @@ #define ZEPHYR_INCLUDE_MGMT_MCUMGR_TRANSPORT_DUMMY_H_ #include -#include +#include #include #include diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/osdp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/osdp.h index b73314ae..29940ff0 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/osdp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/mgmt/osdp.h @@ -9,8 +9,8 @@ * @brief Open Supervised Device Protocol (OSDP) public API header file. */ -#ifndef _OSDP_H_ -#define _OSDP_H_ +#ifndef ZEPHYR_INCLUDE_MGMT_OSDP_H_ +#define ZEPHYR_INCLUDE_MGMT_OSDP_H_ #include #include @@ -480,4 +480,4 @@ uint32_t osdp_get_sc_status_mask(void); } #endif -#endif /* _OSDP_H_ */ +#endif /* ZEPHYR_INCLUDE_MGMT_OSDP_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/misc/lorem_ipsum.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/misc/lorem_ipsum.h new file mode 100644 index 00000000..b85e0527 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/misc/lorem_ipsum.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2015 Intel Corporation. + * Copyright (c) 2024 Tenstorrent AI ULC + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_MISC_LOREM_IPSUM_H_ +#define ZEPHYR_MISC_LOREM_IPSUM_H_ + +#include + +/* + * N.B. These strings are generally only used for tests and samples. They are not part of any + * official Zephyr API, but were moved to reduce duplication. + */ + +/* Generated by http://www.lipsum.com/ + * 1 paragraph, 69 words, 445 bytes of Lorem Ipsum + */ +#define LOREM_IPSUM_SHORT \ + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, " \ + "sed do eiusmod tempor incididunt ut labore et dolore magna " \ + "aliqua. Ut enim ad minim veniam, quis nostrud exercitation " \ + "ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis " \ + "aute irure dolor in reprehenderit in voluptate velit esse " \ + "cillum dolore eu fugiat nulla pariatur. Excepteur sint " \ + "occaecat cupidatat non proident, sunt in culpa qui officia " \ + "deserunt mollit anim id est laborum." + +#define LOREM_IPSUM_SHORT_STRLEN 445 +BUILD_ASSERT(sizeof(LOREM_IPSUM_SHORT) == LOREM_IPSUM_SHORT_STRLEN + 1); + +/* Generated by http://www.lipsum.com/ + * 2 paragraphs, 173 words, 1160 bytes of Lorem Ipsum + */ +#define LOREM_IPSUM \ + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus a varius sapien. " \ + "Suspendisse interdum nulla et enim elementum faucibus. Vestibulum nec est libero. Duis " \ + "leo orci, tincidunt a interdum ut, porttitor ac arcu. Etiam porttitor pretium nibh, non " \ + "laoreet nisl vulputate vitae. Vestibulum sit amet odio sit amet nibh faucibus mattis " \ + "eget at ex. Nam non arcu vitae nisi congue eleifend. Suspendisse sagittis, leo at " \ + "blandit semper, arcu neque tristique dolor, eu consequat urna quam non tortor. " \ + "Suspendisse ut ullamcorper lectus. Nullam ut accumsan lacus, sed iaculis leo. " \ + "Suspendisse potenti. Duis ullamcorper velit tellus, ac dictum tellus ultricies quis." \ + "\n" \ + "Curabitur tellus eros, congue a sem et, mattis fermentum velit. Donec sollicitudin " \ + "faucibus enim eu vehicula. Aliquam pulvinar lectus et finibus laoreet. Praesent at " \ + "tempor ex. Aenean blandit nunc viverra enim vulputate, et dictum turpis elementum. " \ + "Donec porttitor in dolor a ultricies. Cras neque ipsum, blandit sed varius at, semper " \ + "quis justo. Meanness ac metus ex. Pellentesque eu tortor eget nisl tempor pretium. " \ + "Donec elit enim, ultrices sit amet est vitae, sollicitudin bibendum egestas." + +#define LOREM_IPSUM_STRLEN 1160 +BUILD_ASSERT(sizeof(LOREM_IPSUM) == LOREM_IPSUM_STRLEN + 1); + +#endif /* ZEPHYR_MISC_LOREM_IPSUM_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/modem/cmux.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/modem/cmux.h index 3d655db0..f1fa0bee 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/modem/cmux.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/modem/cmux.h @@ -111,7 +111,7 @@ struct modem_cmux_dlci { }; struct modem_cmux_frame { - uint16_t dlci_address; + uint8_t dlci_address; bool cr; bool pf; uint8_t type; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/modem/pipe.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/modem/pipe.h index 9b195692..b91dfb50 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/modem/pipe.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/modem/pipe.h @@ -63,7 +63,7 @@ struct modem_pipe_api { struct modem_pipe { void *data; - struct modem_pipe_api *api; + const struct modem_pipe_api *api; modem_pipe_api_callback callback; void *user_data; struct k_spinlock spinlock; @@ -77,7 +77,7 @@ struct modem_pipe { * @param data Pipe data to bind to pipe instance * @param api Pipe API implementation to bind to pipe instance */ -void modem_pipe_init(struct modem_pipe *pipe, void *data, struct modem_pipe_api *api); +void modem_pipe_init(struct modem_pipe *pipe, void *data, const struct modem_pipe_api *api); /** * @endcond @@ -87,6 +87,7 @@ void modem_pipe_init(struct modem_pipe *pipe, void *data, struct modem_pipe_api * @brief Open pipe * * @param pipe Pipe instance + * @param timeout Timeout waiting for pipe to open * * @retval 0 if pipe was successfully opened or was already open * @retval -errno code otherwise @@ -95,7 +96,7 @@ void modem_pipe_init(struct modem_pipe *pipe, void *data, struct modem_pipe_api * It may block the calling thread, which in the case of the system workqueue * can result in a deadlock until this call times out waiting for the pipe to be open. */ -int modem_pipe_open(struct modem_pipe *pipe); +int modem_pipe_open(struct modem_pipe *pipe, k_timeout_t timeout); /** * @brief Open pipe asynchronously @@ -163,6 +164,7 @@ void modem_pipe_release(struct modem_pipe *pipe); * @brief Close pipe * * @param pipe Pipe instance + * @param timeout Timeout waiting for pipe to close * * @retval 0 if pipe open was called closed or pipe was already closed * @retval -errno code otherwise @@ -171,7 +173,7 @@ void modem_pipe_release(struct modem_pipe *pipe); * It may block the calling thread, which in the case of the system workqueue * can result in a deadlock until this call times out waiting for the pipe to be closed. */ -int modem_pipe_close(struct modem_pipe *pipe); +int modem_pipe_close(struct modem_pipe *pipe, k_timeout_t timeout); /** * @brief Close pipe asynchronously diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/multi_heap/shared_multi_heap.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/multi_heap/shared_multi_heap.h index a9cdf120..652ecb5e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/multi_heap/shared_multi_heap.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/multi_heap/shared_multi_heap.h @@ -73,6 +73,9 @@ enum shared_multi_heap_attr { /** non-cacheable */ SMH_REG_ATTR_NON_CACHEABLE, + /** external Memory */ + SMH_REG_ATTR_EXTERNAL, + /** must be the last item */ SMH_REG_ATTR_NUM, }; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/buf.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/buf.h index 3a472d32..c537c030 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/buf.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/buf.h @@ -1,2737 +1,14 @@ -/** @file - * @brief Buffer management. - */ - /* * Copyright (c) 2015 Intel Corporation * * SPDX-License-Identifier: Apache-2.0 */ -#ifndef ZEPHYR_INCLUDE_NET_BUF_H_ -#define ZEPHYR_INCLUDE_NET_BUF_H_ - -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @brief Network buffer library - * @defgroup net_buf Network Buffer Library - * @ingroup networking - * @{ - */ - -/* Alignment needed for various parts of the buffer definition */ -#if CONFIG_NET_BUF_ALIGNMENT == 0 -#define __net_buf_align __aligned(sizeof(void *)) -#else -#define __net_buf_align __aligned(CONFIG_NET_BUF_ALIGNMENT) -#endif - -/** - * @brief Define a net_buf_simple stack variable. - * - * This is a helper macro which is used to define a net_buf_simple object - * on the stack. - * - * @param _name Name of the net_buf_simple object. - * @param _size Maximum data storage for the buffer. - */ -#define NET_BUF_SIMPLE_DEFINE(_name, _size) \ - uint8_t net_buf_data_##_name[_size]; \ - struct net_buf_simple _name = { \ - .data = net_buf_data_##_name, \ - .len = 0, \ - .size = _size, \ - .__buf = net_buf_data_##_name, \ - } - -/** - * - * @brief Define a static net_buf_simple variable. - * - * This is a helper macro which is used to define a static net_buf_simple - * object. - * - * @param _name Name of the net_buf_simple object. - * @param _size Maximum data storage for the buffer. - */ -#define NET_BUF_SIMPLE_DEFINE_STATIC(_name, _size) \ - static __noinit uint8_t net_buf_data_##_name[_size]; \ - static struct net_buf_simple _name = { \ - .data = net_buf_data_##_name, \ - .len = 0, \ - .size = _size, \ - .__buf = net_buf_data_##_name, \ - } - -/** - * @brief Simple network buffer representation. - * - * This is a simpler variant of the net_buf object (in fact net_buf uses - * net_buf_simple internally). It doesn't provide any kind of reference - * counting, user data, dynamic allocation, or in general the ability to - * pass through kernel objects such as FIFOs. - * - * The main use of this is for scenarios where the meta-data of the normal - * net_buf isn't needed and causes too much overhead. This could be e.g. - * when the buffer only needs to be allocated on the stack or when the - * access to and lifetime of the buffer is well controlled and constrained. - */ -struct net_buf_simple { - /** Pointer to the start of data in the buffer. */ - uint8_t *data; - - /** - * Length of the data behind the data pointer. - * - * To determine the max length, use net_buf_simple_max_len(), not #size! - */ - uint16_t len; - - /** Amount of data that net_buf_simple#__buf can store. */ - uint16_t size; - - /** Start of the data storage. Not to be accessed directly - * (the data pointer should be used instead). - */ - uint8_t *__buf; -}; - -/** - * - * @brief Define a net_buf_simple stack variable and get a pointer to it. - * - * This is a helper macro which is used to define a net_buf_simple object on - * the stack and the get a pointer to it as follows: - * - * struct net_buf_simple *my_buf = NET_BUF_SIMPLE(10); - * - * After creating the object it needs to be initialized by calling - * net_buf_simple_init(). - * - * @param _size Maximum data storage for the buffer. - * - * @return Pointer to stack-allocated net_buf_simple object. - */ -#define NET_BUF_SIMPLE(_size) \ - ((struct net_buf_simple *)(&(struct { \ - struct net_buf_simple buf; \ - uint8_t data[_size]; \ - }) { \ - .buf.size = _size, \ - })) - -/** - * @brief Initialize a net_buf_simple object. - * - * This needs to be called after creating a net_buf_simple object using - * the NET_BUF_SIMPLE macro. - * - * @param buf Buffer to initialize. - * @param reserve_head Headroom to reserve. - */ -static inline void net_buf_simple_init(struct net_buf_simple *buf, - size_t reserve_head) -{ - if (!buf->__buf) { - buf->__buf = (uint8_t *)buf + sizeof(*buf); - } - - buf->data = buf->__buf + reserve_head; - buf->len = 0U; -} - -/** - * @brief Initialize a net_buf_simple object with data. - * - * Initialized buffer object with external data. - * - * @param buf Buffer to initialize. - * @param data External data pointer - * @param size Amount of data the pointed data buffer if able to fit. - */ -void net_buf_simple_init_with_data(struct net_buf_simple *buf, - void *data, size_t size); - -/** - * @brief Reset buffer - * - * Reset buffer data so it can be reused for other purposes. - * - * @param buf Buffer to reset. - */ -static inline void net_buf_simple_reset(struct net_buf_simple *buf) -{ - buf->len = 0U; - buf->data = buf->__buf; -} - -/** - * Clone buffer state, using the same data buffer. - * - * Initializes a buffer to point to the same data as an existing buffer. - * Allows operations on the same data without altering the length and - * offset of the original. - * - * @param original Buffer to clone. - * @param clone The new clone. - */ -void net_buf_simple_clone(const struct net_buf_simple *original, - struct net_buf_simple *clone); - -/** - * @brief Prepare data to be added at the end of the buffer - * - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param len Number of bytes to increment the length with. - * - * @return The original tail of the buffer. - */ -void *net_buf_simple_add(struct net_buf_simple *buf, size_t len); - -/** - * @brief Copy given number of bytes from memory to the end of the buffer - * - * Increments the data length of the buffer to account for more data at the - * end. - * - * @param buf Buffer to update. - * @param mem Location of data to be added. - * @param len Length of data to be added - * - * @return The original tail of the buffer. - */ -void *net_buf_simple_add_mem(struct net_buf_simple *buf, const void *mem, - size_t len); - -/** - * @brief Add (8-bit) byte at the end of the buffer - * - * Increments the data length of the buffer to account for more data at the - * end. - * - * @param buf Buffer to update. - * @param val byte value to be added. - * - * @return Pointer to the value added - */ -uint8_t *net_buf_simple_add_u8(struct net_buf_simple *buf, uint8_t val); - -/** - * @brief Add 16-bit value at the end of the buffer - * - * Adds 16-bit value in little endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 16-bit value to be added. - */ -void net_buf_simple_add_le16(struct net_buf_simple *buf, uint16_t val); - -/** - * @brief Add 16-bit value at the end of the buffer - * - * Adds 16-bit value in big endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 16-bit value to be added. - */ -void net_buf_simple_add_be16(struct net_buf_simple *buf, uint16_t val); - -/** - * @brief Add 24-bit value at the end of the buffer - * - * Adds 24-bit value in little endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 24-bit value to be added. - */ -void net_buf_simple_add_le24(struct net_buf_simple *buf, uint32_t val); - -/** - * @brief Add 24-bit value at the end of the buffer - * - * Adds 24-bit value in big endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 24-bit value to be added. - */ -void net_buf_simple_add_be24(struct net_buf_simple *buf, uint32_t val); - -/** - * @brief Add 32-bit value at the end of the buffer - * - * Adds 32-bit value in little endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 32-bit value to be added. - */ -void net_buf_simple_add_le32(struct net_buf_simple *buf, uint32_t val); - -/** - * @brief Add 32-bit value at the end of the buffer - * - * Adds 32-bit value in big endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 32-bit value to be added. - */ -void net_buf_simple_add_be32(struct net_buf_simple *buf, uint32_t val); - -/** - * @brief Add 40-bit value at the end of the buffer - * - * Adds 40-bit value in little endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 40-bit value to be added. - */ -void net_buf_simple_add_le40(struct net_buf_simple *buf, uint64_t val); - -/** - * @brief Add 40-bit value at the end of the buffer - * - * Adds 40-bit value in big endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 40-bit value to be added. - */ -void net_buf_simple_add_be40(struct net_buf_simple *buf, uint64_t val); - -/** - * @brief Add 48-bit value at the end of the buffer - * - * Adds 48-bit value in little endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 48-bit value to be added. - */ -void net_buf_simple_add_le48(struct net_buf_simple *buf, uint64_t val); - -/** - * @brief Add 48-bit value at the end of the buffer - * - * Adds 48-bit value in big endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 48-bit value to be added. - */ -void net_buf_simple_add_be48(struct net_buf_simple *buf, uint64_t val); - -/** - * @brief Add 64-bit value at the end of the buffer - * - * Adds 64-bit value in little endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 64-bit value to be added. - */ -void net_buf_simple_add_le64(struct net_buf_simple *buf, uint64_t val); - -/** - * @brief Add 64-bit value at the end of the buffer - * - * Adds 64-bit value in big endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 64-bit value to be added. - */ -void net_buf_simple_add_be64(struct net_buf_simple *buf, uint64_t val); - -/** - * @brief Remove data from the end of the buffer. - * - * Removes data from the end of the buffer by modifying the buffer length. - * - * @param buf Buffer to update. - * @param len Number of bytes to remove. - * - * @return New end of the buffer data. - */ -void *net_buf_simple_remove_mem(struct net_buf_simple *buf, size_t len); - -/** - * @brief Remove a 8-bit value from the end of the buffer - * - * Same idea as with net_buf_simple_remove_mem(), but a helper for operating - * on 8-bit values. - * - * @param buf A valid pointer on a buffer. - * - * @return The 8-bit removed value - */ -uint8_t net_buf_simple_remove_u8(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 16 bits from the end of the buffer. - * - * Same idea as with net_buf_simple_remove_mem(), but a helper for operating - * on 16-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 16-bit value converted from little endian to host endian. - */ -uint16_t net_buf_simple_remove_le16(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 16 bits from the end of the buffer. - * - * Same idea as with net_buf_simple_remove_mem(), but a helper for operating - * on 16-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 16-bit value converted from big endian to host endian. - */ -uint16_t net_buf_simple_remove_be16(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 24 bits from the end of the buffer. - * - * Same idea as with net_buf_simple_remove_mem(), but a helper for operating - * on 24-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 24-bit value converted from little endian to host endian. - */ -uint32_t net_buf_simple_remove_le24(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 24 bits from the end of the buffer. - * - * Same idea as with net_buf_simple_remove_mem(), but a helper for operating - * on 24-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 24-bit value converted from big endian to host endian. - */ -uint32_t net_buf_simple_remove_be24(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 32 bits from the end of the buffer. - * - * Same idea as with net_buf_simple_remove_mem(), but a helper for operating - * on 32-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 32-bit value converted from little endian to host endian. - */ -uint32_t net_buf_simple_remove_le32(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 32 bits from the end of the buffer. - * - * Same idea as with net_buf_simple_remove_mem(), but a helper for operating - * on 32-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 32-bit value converted from big endian to host endian. - */ -uint32_t net_buf_simple_remove_be32(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 40 bits from the end of the buffer. - * - * Same idea as with net_buf_simple_remove_mem(), but a helper for operating - * on 40-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 40-bit value converted from little endian to host endian. - */ -uint64_t net_buf_simple_remove_le40(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 40 bits from the end of the buffer. - * - * Same idea as with net_buf_simple_remove_mem(), but a helper for operating - * on 40-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 40-bit value converted from big endian to host endian. - */ -uint64_t net_buf_simple_remove_be40(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 48 bits from the end of the buffer. - * - * Same idea as with net_buf_simple_remove_mem(), but a helper for operating - * on 48-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 48-bit value converted from little endian to host endian. - */ -uint64_t net_buf_simple_remove_le48(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 48 bits from the end of the buffer. - * - * Same idea as with net_buf_simple_remove_mem(), but a helper for operating - * on 48-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 48-bit value converted from big endian to host endian. - */ -uint64_t net_buf_simple_remove_be48(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 64 bits from the end of the buffer. - * - * Same idea as with net_buf_simple_remove_mem(), but a helper for operating - * on 64-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 64-bit value converted from little endian to host endian. - */ -uint64_t net_buf_simple_remove_le64(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 64 bits from the end of the buffer. - * - * Same idea as with net_buf_simple_remove_mem(), but a helper for operating - * on 64-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 64-bit value converted from big endian to host endian. - */ -uint64_t net_buf_simple_remove_be64(struct net_buf_simple *buf); - -/** - * @brief Prepare data to be added to the start of the buffer - * - * Modifies the data pointer and buffer length to account for more data - * in the beginning of the buffer. - * - * @param buf Buffer to update. - * @param len Number of bytes to add to the beginning. - * - * @return The new beginning of the buffer data. - */ -void *net_buf_simple_push(struct net_buf_simple *buf, size_t len); - -/** - * @brief Copy given number of bytes from memory to the start of the buffer. - * - * Modifies the data pointer and buffer length to account for more data - * in the beginning of the buffer. - * - * @param buf Buffer to update. - * @param mem Location of data to be added. - * @param len Length of data to be added. - * - * @return The new beginning of the buffer data. - */ -void *net_buf_simple_push_mem(struct net_buf_simple *buf, const void *mem, - size_t len); - -/** - * @brief Push 16-bit value to the beginning of the buffer - * - * Adds 16-bit value in little endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 16-bit value to be pushed to the buffer. - */ -void net_buf_simple_push_le16(struct net_buf_simple *buf, uint16_t val); - -/** - * @brief Push 16-bit value to the beginning of the buffer - * - * Adds 16-bit value in big endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 16-bit value to be pushed to the buffer. - */ -void net_buf_simple_push_be16(struct net_buf_simple *buf, uint16_t val); - -/** - * @brief Push 8-bit value to the beginning of the buffer - * - * Adds 8-bit value the beginning of the buffer. - * - * @param buf Buffer to update. - * @param val 8-bit value to be pushed to the buffer. - */ -void net_buf_simple_push_u8(struct net_buf_simple *buf, uint8_t val); - -/** - * @brief Push 24-bit value to the beginning of the buffer - * - * Adds 24-bit value in little endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 24-bit value to be pushed to the buffer. - */ -void net_buf_simple_push_le24(struct net_buf_simple *buf, uint32_t val); - -/** - * @brief Push 24-bit value to the beginning of the buffer - * - * Adds 24-bit value in big endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 24-bit value to be pushed to the buffer. - */ -void net_buf_simple_push_be24(struct net_buf_simple *buf, uint32_t val); - -/** - * @brief Push 32-bit value to the beginning of the buffer - * - * Adds 32-bit value in little endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 32-bit value to be pushed to the buffer. - */ -void net_buf_simple_push_le32(struct net_buf_simple *buf, uint32_t val); - -/** - * @brief Push 32-bit value to the beginning of the buffer - * - * Adds 32-bit value in big endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 32-bit value to be pushed to the buffer. - */ -void net_buf_simple_push_be32(struct net_buf_simple *buf, uint32_t val); - -/** - * @brief Push 40-bit value to the beginning of the buffer - * - * Adds 40-bit value in little endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 40-bit value to be pushed to the buffer. - */ -void net_buf_simple_push_le40(struct net_buf_simple *buf, uint64_t val); - -/** - * @brief Push 40-bit value to the beginning of the buffer - * - * Adds 40-bit value in big endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 40-bit value to be pushed to the buffer. - */ -void net_buf_simple_push_be40(struct net_buf_simple *buf, uint64_t val); - -/** - * @brief Push 48-bit value to the beginning of the buffer - * - * Adds 48-bit value in little endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 48-bit value to be pushed to the buffer. - */ -void net_buf_simple_push_le48(struct net_buf_simple *buf, uint64_t val); - -/** - * @brief Push 48-bit value to the beginning of the buffer - * - * Adds 48-bit value in big endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 48-bit value to be pushed to the buffer. - */ -void net_buf_simple_push_be48(struct net_buf_simple *buf, uint64_t val); - -/** - * @brief Push 64-bit value to the beginning of the buffer - * - * Adds 64-bit value in little endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 64-bit value to be pushed to the buffer. - */ -void net_buf_simple_push_le64(struct net_buf_simple *buf, uint64_t val); - -/** - * @brief Push 64-bit value to the beginning of the buffer - * - * Adds 64-bit value in big endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 64-bit value to be pushed to the buffer. - */ -void net_buf_simple_push_be64(struct net_buf_simple *buf, uint64_t val); - -/** - * @brief Remove data from the beginning of the buffer. - * - * Removes data from the beginning of the buffer by modifying the data - * pointer and buffer length. - * - * @param buf Buffer to update. - * @param len Number of bytes to remove. - * - * @return New beginning of the buffer data. - */ -void *net_buf_simple_pull(struct net_buf_simple *buf, size_t len); -/** - * @brief Remove data from the beginning of the buffer. - * - * Removes data from the beginning of the buffer by modifying the data - * pointer and buffer length. - * - * @param buf Buffer to update. - * @param len Number of bytes to remove. - * - * @return Pointer to the old location of the buffer data. - */ -void *net_buf_simple_pull_mem(struct net_buf_simple *buf, size_t len); +#ifndef ZEPHYR_INCLUDE_NET_BUF_DEPRECATED_H_ +#define ZEPHYR_INCLUDE_NET_BUF_DEPRECATED_H_ -/** - * @brief Remove a 8-bit value from the beginning of the buffer - * - * Same idea as with net_buf_simple_pull(), but a helper for operating - * on 8-bit values. - * - * @param buf A valid pointer on a buffer. - * - * @return The 8-bit removed value - */ -uint8_t net_buf_simple_pull_u8(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 16 bits from the beginning of the buffer. - * - * Same idea as with net_buf_simple_pull(), but a helper for operating - * on 16-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 16-bit value converted from little endian to host endian. - */ -uint16_t net_buf_simple_pull_le16(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 16 bits from the beginning of the buffer. - * - * Same idea as with net_buf_simple_pull(), but a helper for operating - * on 16-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 16-bit value converted from big endian to host endian. - */ -uint16_t net_buf_simple_pull_be16(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 24 bits from the beginning of the buffer. - * - * Same idea as with net_buf_simple_pull(), but a helper for operating - * on 24-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 24-bit value converted from little endian to host endian. - */ -uint32_t net_buf_simple_pull_le24(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 24 bits from the beginning of the buffer. - * - * Same idea as with net_buf_simple_pull(), but a helper for operating - * on 24-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 24-bit value converted from big endian to host endian. - */ -uint32_t net_buf_simple_pull_be24(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 32 bits from the beginning of the buffer. - * - * Same idea as with net_buf_simple_pull(), but a helper for operating - * on 32-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 32-bit value converted from little endian to host endian. - */ -uint32_t net_buf_simple_pull_le32(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 32 bits from the beginning of the buffer. - * - * Same idea as with net_buf_simple_pull(), but a helper for operating - * on 32-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 32-bit value converted from big endian to host endian. - */ -uint32_t net_buf_simple_pull_be32(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 40 bits from the beginning of the buffer. - * - * Same idea as with net_buf_simple_pull(), but a helper for operating - * on 40-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 40-bit value converted from little endian to host endian. - */ -uint64_t net_buf_simple_pull_le40(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 40 bits from the beginning of the buffer. - * - * Same idea as with net_buf_simple_pull(), but a helper for operating - * on 40-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 40-bit value converted from big endian to host endian. - */ -uint64_t net_buf_simple_pull_be40(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 48 bits from the beginning of the buffer. - * - * Same idea as with net_buf_simple_pull(), but a helper for operating - * on 48-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 48-bit value converted from little endian to host endian. - */ -uint64_t net_buf_simple_pull_le48(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 48 bits from the beginning of the buffer. - * - * Same idea as with net_buf_simple_pull(), but a helper for operating - * on 48-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 48-bit value converted from big endian to host endian. - */ -uint64_t net_buf_simple_pull_be48(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 64 bits from the beginning of the buffer. - * - * Same idea as with net_buf_simple_pull(), but a helper for operating - * on 64-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 64-bit value converted from little endian to host endian. - */ -uint64_t net_buf_simple_pull_le64(struct net_buf_simple *buf); - -/** - * @brief Remove and convert 64 bits from the beginning of the buffer. - * - * Same idea as with net_buf_simple_pull(), but a helper for operating - * on 64-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 64-bit value converted from big endian to host endian. - */ -uint64_t net_buf_simple_pull_be64(struct net_buf_simple *buf); - -/** - * @brief Get the tail pointer for a buffer. - * - * Get a pointer to the end of the data in a buffer. - * - * @param buf Buffer. - * - * @return Tail pointer for the buffer. - */ -static inline uint8_t *net_buf_simple_tail(const struct net_buf_simple *buf) -{ - return buf->data + buf->len; -} - -/** - * @brief Check buffer headroom. - * - * Check how much free space there is in the beginning of the buffer. - * - * buf A valid pointer on a buffer - * - * @return Number of bytes available in the beginning of the buffer. - */ -size_t net_buf_simple_headroom(const struct net_buf_simple *buf); - -/** - * @brief Check buffer tailroom. - * - * Check how much free space there is at the end of the buffer. - * - * @param buf A valid pointer on a buffer - * - * @return Number of bytes available at the end of the buffer. - */ -size_t net_buf_simple_tailroom(const struct net_buf_simple *buf); - -/** - * @brief Check maximum net_buf_simple::len value. - * - * This value is depending on the number of bytes being reserved as headroom. - * - * @param buf A valid pointer on a buffer - * - * @return Number of bytes usable behind the net_buf_simple::data pointer. - */ -uint16_t net_buf_simple_max_len(const struct net_buf_simple *buf); - -/** - * @brief Parsing state of a buffer. - * - * This is used for temporarily storing the parsing state of a buffer - * while giving control of the parsing to a routine which we don't - * control. - */ -struct net_buf_simple_state { - /** Offset of the data pointer from the beginning of the storage */ - uint16_t offset; - /** Length of data */ - uint16_t len; -}; - -/** - * @brief Save the parsing state of a buffer. - * - * Saves the parsing state of a buffer so it can be restored later. - * - * @param buf Buffer from which the state should be saved. - * @param state Storage for the state. - */ -static inline void net_buf_simple_save(const struct net_buf_simple *buf, - struct net_buf_simple_state *state) -{ - state->offset = (uint16_t)net_buf_simple_headroom(buf); - state->len = buf->len; -} - -/** - * @brief Restore the parsing state of a buffer. - * - * Restores the parsing state of a buffer from a state previously stored - * by net_buf_simple_save(). - * - * @param buf Buffer to which the state should be restored. - * @param state Stored state. - */ -static inline void net_buf_simple_restore(struct net_buf_simple *buf, - struct net_buf_simple_state *state) -{ - buf->data = buf->__buf + state->offset; - buf->len = state->len; -} - -/** - * Flag indicating that the buffer's associated data pointer, points to - * externally allocated memory. Therefore once ref goes down to zero, the - * pointed data will not need to be deallocated. This never needs to be - * explicitly set or unset by the net_buf API user. Such net_buf is - * exclusively instantiated via net_buf_alloc_with_data() function. - * Reference count mechanism however will behave the same way, and ref - * count going to 0 will free the net_buf but no the data pointer in it. - */ -#define NET_BUF_EXTERNAL_DATA BIT(0) - -/** - * @brief Network buffer representation. - * - * This struct is used to represent network buffers. Such buffers are - * normally defined through the NET_BUF_POOL_*_DEFINE() APIs and allocated - * using the net_buf_alloc() API. - */ -struct net_buf { - /** Allow placing the buffer into sys_slist_t */ - sys_snode_t node; - - /** Fragments associated with this buffer. */ - struct net_buf *frags; - - /** Reference count. */ - uint8_t ref; - - /** Bit-field of buffer flags. */ - uint8_t flags; - - /** Where the buffer should go when freed up. */ - uint8_t pool_id; - - /** Size of user data on this buffer */ - uint8_t user_data_size; - - /** Union for convenience access to the net_buf_simple members, also - * preserving the old API. - */ - union { - /* The ABI of this struct must match net_buf_simple */ - struct { - /** Pointer to the start of data in the buffer. */ - uint8_t *data; - - /** Length of the data behind the data pointer. */ - uint16_t len; - - /** Amount of data that this buffer can store. */ - uint16_t size; - - /** Start of the data storage. Not to be accessed - * directly (the data pointer should be used - * instead). - */ - uint8_t *__buf; - }; - - /** @cond INTERNAL_HIDDEN */ - struct net_buf_simple b; - /** @endcond */ - }; - - /** System metadata for this buffer. */ - uint8_t user_data[] __net_buf_align; -}; - -/** @cond INTERNAL_HIDDEN */ - -struct net_buf_data_cb { - uint8_t * __must_check (*alloc)(struct net_buf *buf, size_t *size, - k_timeout_t timeout); - uint8_t * __must_check (*ref)(struct net_buf *buf, uint8_t *data); - void (*unref)(struct net_buf *buf, uint8_t *data); -}; - -struct net_buf_data_alloc { - const struct net_buf_data_cb *cb; - void *alloc_data; - size_t max_alloc_size; -}; - -/** @endcond */ - -/** - * @brief Network buffer pool representation. - * - * This struct is used to represent a pool of network buffers. - */ -struct net_buf_pool { - /** LIFO to place the buffer into when free */ - struct k_lifo free; - - /** To prevent concurrent access/modifications */ - struct k_spinlock lock; - - /** Number of buffers in pool */ - const uint16_t buf_count; - - /** Number of uninitialized buffers */ - uint16_t uninit_count; - - /** Size of user data allocated to this pool */ - uint8_t user_data_size; - -#if defined(CONFIG_NET_BUF_POOL_USAGE) - /** Amount of available buffers in the pool. */ - atomic_t avail_count; - - /** Total size of the pool. */ - const uint16_t pool_size; - - /** Name of the pool. Used when printing pool information. */ - const char *name; -#endif /* CONFIG_NET_BUF_POOL_USAGE */ - - /** Optional destroy callback when buffer is freed. */ - void (*const destroy)(struct net_buf *buf); - - /** Data allocation handlers. */ - const struct net_buf_data_alloc *alloc; - - /** Start of buffer storage array */ - struct net_buf * const __bufs; -}; - -/** @cond INTERNAL_HIDDEN */ -#define NET_BUF_POOL_USAGE_INIT(_pool, _count) \ - IF_ENABLED(CONFIG_NET_BUF_POOL_USAGE, (.avail_count = ATOMIC_INIT(_count),)) \ - IF_ENABLED(CONFIG_NET_BUF_POOL_USAGE, (.name = STRINGIFY(_pool),)) - -#define NET_BUF_POOL_INITIALIZER(_pool, _alloc, _bufs, _count, _ud_size, _destroy) \ - { \ - .free = Z_LIFO_INITIALIZER(_pool.free), \ - .lock = { }, \ - .buf_count = _count, \ - .uninit_count = _count, \ - .user_data_size = _ud_size, \ - NET_BUF_POOL_USAGE_INIT(_pool, _count) \ - .destroy = _destroy, \ - .alloc = _alloc, \ - .__bufs = (struct net_buf *)_bufs, \ - } - -#define _NET_BUF_ARRAY_DEFINE(_name, _count, _ud_size) \ - struct _net_buf_##_name { uint8_t b[sizeof(struct net_buf)]; \ - uint8_t ud[_ud_size]; } __net_buf_align; \ - BUILD_ASSERT(_ud_size <= UINT8_MAX); \ - BUILD_ASSERT(offsetof(struct net_buf, user_data) == \ - offsetof(struct _net_buf_##_name, ud), "Invalid offset"); \ - BUILD_ASSERT(__alignof__(struct net_buf) == \ - __alignof__(struct _net_buf_##_name), "Invalid alignment"); \ - BUILD_ASSERT(sizeof(struct _net_buf_##_name) == \ - ROUND_UP(sizeof(struct net_buf) + _ud_size, __alignof__(struct net_buf)), \ - "Size cannot be determined"); \ - static struct _net_buf_##_name _net_buf_##_name[_count] __noinit - -extern const struct net_buf_data_alloc net_buf_heap_alloc; -/** @endcond */ - -/** - * - * @brief Define a new pool for buffers using the heap for the data. - * - * Defines a net_buf_pool struct and the necessary memory storage (array of - * structs) for the needed amount of buffers. After this, the buffers can be - * accessed from the pool through net_buf_alloc. The pool is defined as a - * static variable, so if it needs to be exported outside the current module - * this needs to happen with the help of a separate pointer rather than an - * extern declaration. - * - * The data payload of the buffers will be allocated from the heap using - * k_malloc, so CONFIG_HEAP_MEM_POOL_SIZE must be set to a positive value. - * This kind of pool does not support blocking on the data allocation, so - * the timeout passed to net_buf_alloc will be always treated as K_NO_WAIT - * when trying to allocate the data. This means that allocation failures, - * i.e. NULL returns, must always be handled cleanly. - * - * If provided with a custom destroy callback, this callback is - * responsible for eventually calling net_buf_destroy() to complete the - * process of returning the buffer to the pool. - * - * @param _name Name of the pool variable. - * @param _count Number of buffers in the pool. - * @param _ud_size User data space to reserve per buffer. - * @param _destroy Optional destroy callback when buffer is freed. - */ -#define NET_BUF_POOL_HEAP_DEFINE(_name, _count, _ud_size, _destroy) \ - _NET_BUF_ARRAY_DEFINE(_name, _count, _ud_size); \ - static STRUCT_SECTION_ITERABLE(net_buf_pool, _name) = \ - NET_BUF_POOL_INITIALIZER(_name, &net_buf_heap_alloc, \ - _net_buf_##_name, _count, _ud_size, \ - _destroy) - -/** @cond INTERNAL_HIDDEN */ - -struct net_buf_pool_fixed { - uint8_t *data_pool; -}; - -extern const struct net_buf_data_cb net_buf_fixed_cb; - -/** @endcond */ - -/** - * - * @brief Define a new pool for buffers based on fixed-size data - * - * Defines a net_buf_pool struct and the necessary memory storage (array of - * structs) for the needed amount of buffers. After this, the buffers can be - * accessed from the pool through net_buf_alloc. The pool is defined as a - * static variable, so if it needs to be exported outside the current module - * this needs to happen with the help of a separate pointer rather than an - * extern declaration. - * - * The data payload of the buffers will be allocated from a byte array - * of fixed sized chunks. This kind of pool does not support blocking on - * the data allocation, so the timeout passed to net_buf_alloc will be - * always treated as K_NO_WAIT when trying to allocate the data. This means - * that allocation failures, i.e. NULL returns, must always be handled - * cleanly. - * - * If provided with a custom destroy callback, this callback is - * responsible for eventually calling net_buf_destroy() to complete the - * process of returning the buffer to the pool. - * - * @param _name Name of the pool variable. - * @param _count Number of buffers in the pool. - * @param _data_size Maximum data payload per buffer. - * @param _ud_size User data space to reserve per buffer. - * @param _destroy Optional destroy callback when buffer is freed. - */ -#define NET_BUF_POOL_FIXED_DEFINE(_name, _count, _data_size, _ud_size, _destroy) \ - _NET_BUF_ARRAY_DEFINE(_name, _count, _ud_size); \ - static uint8_t __noinit net_buf_data_##_name[_count][_data_size] __net_buf_align; \ - static const struct net_buf_pool_fixed net_buf_fixed_##_name = { \ - .data_pool = (uint8_t *)net_buf_data_##_name, \ - }; \ - static const struct net_buf_data_alloc net_buf_fixed_alloc_##_name = { \ - .cb = &net_buf_fixed_cb, \ - .alloc_data = (void *)&net_buf_fixed_##_name, \ - .max_alloc_size = _data_size, \ - }; \ - static STRUCT_SECTION_ITERABLE(net_buf_pool, _name) = \ - NET_BUF_POOL_INITIALIZER(_name, &net_buf_fixed_alloc_##_name, \ - _net_buf_##_name, _count, _ud_size, \ - _destroy) - -/** @cond INTERNAL_HIDDEN */ -extern const struct net_buf_data_cb net_buf_var_cb; -/** @endcond */ - -/** - * - * @brief Define a new pool for buffers with variable size payloads - * - * Defines a net_buf_pool struct and the necessary memory storage (array of - * structs) for the needed amount of buffers. After this, the buffers can be - * accessed from the pool through net_buf_alloc. The pool is defined as a - * static variable, so if it needs to be exported outside the current module - * this needs to happen with the help of a separate pointer rather than an - * extern declaration. - * - * The data payload of the buffers will be based on a memory pool from which - * variable size payloads may be allocated. - * - * If provided with a custom destroy callback, this callback is - * responsible for eventually calling net_buf_destroy() to complete the - * process of returning the buffer to the pool. - * - * @param _name Name of the pool variable. - * @param _count Number of buffers in the pool. - * @param _data_size Total amount of memory available for data payloads. - * @param _ud_size User data space to reserve per buffer. - * @param _destroy Optional destroy callback when buffer is freed. - */ -#define NET_BUF_POOL_VAR_DEFINE(_name, _count, _data_size, _ud_size, _destroy) \ - _NET_BUF_ARRAY_DEFINE(_name, _count, _ud_size); \ - K_HEAP_DEFINE(net_buf_mem_pool_##_name, _data_size); \ - static const struct net_buf_data_alloc net_buf_data_alloc_##_name = { \ - .cb = &net_buf_var_cb, \ - .alloc_data = &net_buf_mem_pool_##_name, \ - .max_alloc_size = 0, \ - }; \ - static STRUCT_SECTION_ITERABLE(net_buf_pool, _name) = \ - NET_BUF_POOL_INITIALIZER(_name, &net_buf_data_alloc_##_name, \ - _net_buf_##_name, _count, _ud_size, \ - _destroy) - -/** - * - * @brief Define a new pool for buffers - * - * Defines a net_buf_pool struct and the necessary memory storage (array of - * structs) for the needed amount of buffers. After this,the buffers can be - * accessed from the pool through net_buf_alloc. The pool is defined as a - * static variable, so if it needs to be exported outside the current module - * this needs to happen with the help of a separate pointer rather than an - * extern declaration. - * - * If provided with a custom destroy callback this callback is - * responsible for eventually calling net_buf_destroy() to complete the - * process of returning the buffer to the pool. - * - * @param _name Name of the pool variable. - * @param _count Number of buffers in the pool. - * @param _size Maximum data size for each buffer. - * @param _ud_size Amount of user data space to reserve. - * @param _destroy Optional destroy callback when buffer is freed. - */ -#define NET_BUF_POOL_DEFINE(_name, _count, _size, _ud_size, _destroy) \ - NET_BUF_POOL_FIXED_DEFINE(_name, _count, _size, _ud_size, _destroy) - -/** - * @brief Looks up a pool based on its ID. - * - * @param id Pool ID (e.g. from buf->pool_id). - * - * @return Pointer to pool. - */ -struct net_buf_pool *net_buf_pool_get(int id); - -/** - * @brief Get a zero-based index for a buffer. - * - * This function will translate a buffer into a zero-based index, - * based on its placement in its buffer pool. This can be useful if you - * want to associate an external array of meta-data contexts with the - * buffers of a pool. - * - * @param buf Network buffer. - * - * @return Zero-based index for the buffer. - */ -int net_buf_id(const struct net_buf *buf); - -/** - * @brief Allocate a new fixed buffer from a pool. - * - * @note Some types of data allocators do not support - * blocking (such as the HEAP type). In this case it's still possible - * for net_buf_alloc() to fail (return NULL) even if it was given - * K_FOREVER. - * - * @note The timeout value will be overridden to K_NO_WAIT if called from the - * system workqueue. - * - * @param pool Which pool to allocate the buffer from. - * @param timeout Affects the action taken should the pool be empty. - * If K_NO_WAIT, then return immediately. If K_FOREVER, then - * wait as long as necessary. Otherwise, wait until the specified - * timeout. - * - * @return New buffer or NULL if out of buffers. - */ -#if defined(CONFIG_NET_BUF_LOG) -struct net_buf * __must_check net_buf_alloc_fixed_debug(struct net_buf_pool *pool, - k_timeout_t timeout, - const char *func, - int line); -#define net_buf_alloc_fixed(_pool, _timeout) \ - net_buf_alloc_fixed_debug(_pool, _timeout, __func__, __LINE__) -#else -struct net_buf * __must_check net_buf_alloc_fixed(struct net_buf_pool *pool, - k_timeout_t timeout); -#endif - -/** - * @copydetails net_buf_alloc_fixed - */ -static inline struct net_buf * __must_check net_buf_alloc(struct net_buf_pool *pool, - k_timeout_t timeout) -{ - return net_buf_alloc_fixed(pool, timeout); -} - -/** - * @brief Allocate a new variable length buffer from a pool. - * - * @note Some types of data allocators do not support - * blocking (such as the HEAP type). In this case it's still possible - * for net_buf_alloc() to fail (return NULL) even if it was given - * K_FOREVER. - * - * @note The timeout value will be overridden to K_NO_WAIT if called from the - * system workqueue. - * - * @param pool Which pool to allocate the buffer from. - * @param size Amount of data the buffer must be able to fit. - * @param timeout Affects the action taken should the pool be empty. - * If K_NO_WAIT, then return immediately. If K_FOREVER, then - * wait as long as necessary. Otherwise, wait until the specified - * timeout. - * - * @return New buffer or NULL if out of buffers. - */ -#if defined(CONFIG_NET_BUF_LOG) -struct net_buf * __must_check net_buf_alloc_len_debug(struct net_buf_pool *pool, - size_t size, - k_timeout_t timeout, - const char *func, - int line); -#define net_buf_alloc_len(_pool, _size, _timeout) \ - net_buf_alloc_len_debug(_pool, _size, _timeout, __func__, __LINE__) -#else -struct net_buf * __must_check net_buf_alloc_len(struct net_buf_pool *pool, - size_t size, - k_timeout_t timeout); -#endif - -/** - * @brief Allocate a new buffer from a pool but with external data pointer. - * - * Allocate a new buffer from a pool, where the data pointer comes from the - * user and not from the pool. - * - * @note Some types of data allocators do not support - * blocking (such as the HEAP type). In this case it's still possible - * for net_buf_alloc() to fail (return NULL) even if it was given - * K_FOREVER. - * - * @note The timeout value will be overridden to K_NO_WAIT if called from the - * system workqueue. - * - * @param pool Which pool to allocate the buffer from. - * @param data External data pointer - * @param size Amount of data the pointed data buffer if able to fit. - * @param timeout Affects the action taken should the pool be empty. - * If K_NO_WAIT, then return immediately. If K_FOREVER, then - * wait as long as necessary. Otherwise, wait until the specified - * timeout. - * - * @return New buffer or NULL if out of buffers. - */ -#if defined(CONFIG_NET_BUF_LOG) -struct net_buf * __must_check net_buf_alloc_with_data_debug(struct net_buf_pool *pool, - void *data, size_t size, - k_timeout_t timeout, - const char *func, int line); -#define net_buf_alloc_with_data(_pool, _data_, _size, _timeout) \ - net_buf_alloc_with_data_debug(_pool, _data_, _size, _timeout, \ - __func__, __LINE__) -#else -struct net_buf * __must_check net_buf_alloc_with_data(struct net_buf_pool *pool, - void *data, size_t size, - k_timeout_t timeout); -#endif - -/** - * @brief Get a buffer from a FIFO. - * - * This function is NOT thread-safe if the buffers in the FIFO contain - * fragments. - * - * @param fifo Which FIFO to take the buffer from. - * @param timeout Affects the action taken should the FIFO be empty. - * If K_NO_WAIT, then return immediately. If K_FOREVER, then wait as - * long as necessary. Otherwise, wait until the specified timeout. - * - * @return New buffer or NULL if the FIFO is empty. - */ -#if defined(CONFIG_NET_BUF_LOG) -struct net_buf * __must_check net_buf_get_debug(struct k_fifo *fifo, - k_timeout_t timeout, - const char *func, int line); -#define net_buf_get(_fifo, _timeout) \ - net_buf_get_debug(_fifo, _timeout, __func__, __LINE__) -#else -struct net_buf * __must_check net_buf_get(struct k_fifo *fifo, - k_timeout_t timeout); -#endif - -/** - * @brief Destroy buffer from custom destroy callback - * - * This helper is only intended to be used from custom destroy callbacks. - * If no custom destroy callback is given to NET_BUF_POOL_*_DEFINE() then - * there is no need to use this API. - * - * @param buf Buffer to destroy. - */ -static inline void net_buf_destroy(struct net_buf *buf) -{ - struct net_buf_pool *pool = net_buf_pool_get(buf->pool_id); - - if (buf->__buf) { - if (!(buf->flags & NET_BUF_EXTERNAL_DATA)) { - pool->alloc->cb->unref(buf, buf->__buf); - } - buf->__buf = NULL; - } - - k_lifo_put(&pool->free, buf); -} - -/** - * @brief Reset buffer - * - * Reset buffer data and flags so it can be reused for other purposes. - * - * @param buf Buffer to reset. - */ -void net_buf_reset(struct net_buf *buf); - -/** - * @brief Initialize buffer with the given headroom. - * - * The buffer is not expected to contain any data when this API is called. - * - * @param buf Buffer to initialize. - * @param reserve How much headroom to reserve. - */ -void net_buf_simple_reserve(struct net_buf_simple *buf, size_t reserve); - -/** - * @brief Put a buffer into a list - * - * If the buffer contains follow-up fragments this function will take care of - * inserting them as well into the list. - * - * @param list Which list to append the buffer to. - * @param buf Buffer. - */ -void net_buf_slist_put(sys_slist_t *list, struct net_buf *buf); - -/** - * @brief Get a buffer from a list. - * - * If the buffer had any fragments, these will automatically be recovered from - * the list as well and be placed to the buffer's fragment list. - * - * @param list Which list to take the buffer from. - * - * @return New buffer or NULL if the FIFO is empty. - */ -struct net_buf * __must_check net_buf_slist_get(sys_slist_t *list); - -/** - * @brief Put a buffer to the end of a FIFO. - * - * If the buffer contains follow-up fragments this function will take care of - * inserting them as well into the FIFO. - * - * @param fifo Which FIFO to put the buffer to. - * @param buf Buffer. - */ -void net_buf_put(struct k_fifo *fifo, struct net_buf *buf); - -/** - * @brief Decrements the reference count of a buffer. - * - * The buffer is put back into the pool if the reference count reaches zero. - * - * @param buf A valid pointer on a buffer - */ -#if defined(CONFIG_NET_BUF_LOG) -void net_buf_unref_debug(struct net_buf *buf, const char *func, int line); -#define net_buf_unref(_buf) \ - net_buf_unref_debug(_buf, __func__, __LINE__) -#else -void net_buf_unref(struct net_buf *buf); -#endif - -/** - * @brief Increment the reference count of a buffer. - * - * @param buf A valid pointer on a buffer - * - * @return the buffer newly referenced - */ -struct net_buf * __must_check net_buf_ref(struct net_buf *buf); - -/** - * @brief Clone buffer - * - * Duplicate given buffer including any (user) data and headers currently stored. - * - * @param buf A valid pointer on a buffer - * @param timeout Affects the action taken should the pool be empty. - * If K_NO_WAIT, then return immediately. If K_FOREVER, then - * wait as long as necessary. Otherwise, wait until the specified - * timeout. - * - * @return Cloned buffer or NULL if out of buffers. - */ -struct net_buf * __must_check net_buf_clone(struct net_buf *buf, - k_timeout_t timeout); - -/** - * @brief Get a pointer to the user data of a buffer. - * - * @param buf A valid pointer on a buffer - * - * @return Pointer to the user data of the buffer. - */ -static inline void * __must_check net_buf_user_data(const struct net_buf *buf) -{ - return (void *)buf->user_data; -} - -/** - * @brief Copy user data from one to another buffer. - * - * @param dst A valid pointer to a buffer gettings its user data overwritten. - * @param src A valid pointer to a buffer gettings its user data copied. User data size must be - * equal to or exceed @a dst. - * - * @return 0 on success or negative error number on failure. - */ -int net_buf_user_data_copy(struct net_buf *dst, const struct net_buf *src); - -/** - * @brief Initialize buffer with the given headroom. - * - * The buffer is not expected to contain any data when this API is called. - * - * @param buf Buffer to initialize. - * @param reserve How much headroom to reserve. - */ -static inline void net_buf_reserve(struct net_buf *buf, size_t reserve) -{ - net_buf_simple_reserve(&buf->b, reserve); -} - -/** - * @brief Prepare data to be added at the end of the buffer - * - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param len Number of bytes to increment the length with. - * - * @return The original tail of the buffer. - */ -static inline void *net_buf_add(struct net_buf *buf, size_t len) -{ - return net_buf_simple_add(&buf->b, len); -} - -/** - * @brief Copies the given number of bytes to the end of the buffer - * - * Increments the data length of the buffer to account for more data at - * the end. - * - * @param buf Buffer to update. - * @param mem Location of data to be added. - * @param len Length of data to be added - * - * @return The original tail of the buffer. - */ -static inline void *net_buf_add_mem(struct net_buf *buf, const void *mem, - size_t len) -{ - return net_buf_simple_add_mem(&buf->b, mem, len); -} - -/** - * @brief Add (8-bit) byte at the end of the buffer - * - * Increments the data length of the buffer to account for more data at - * the end. - * - * @param buf Buffer to update. - * @param val byte value to be added. - * - * @return Pointer to the value added - */ -static inline uint8_t *net_buf_add_u8(struct net_buf *buf, uint8_t val) -{ - return net_buf_simple_add_u8(&buf->b, val); -} - -/** - * @brief Add 16-bit value at the end of the buffer - * - * Adds 16-bit value in little endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 16-bit value to be added. - */ -static inline void net_buf_add_le16(struct net_buf *buf, uint16_t val) -{ - net_buf_simple_add_le16(&buf->b, val); -} - -/** - * @brief Add 16-bit value at the end of the buffer - * - * Adds 16-bit value in big endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 16-bit value to be added. - */ -static inline void net_buf_add_be16(struct net_buf *buf, uint16_t val) -{ - net_buf_simple_add_be16(&buf->b, val); -} - -/** - * @brief Add 24-bit value at the end of the buffer - * - * Adds 24-bit value in little endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 24-bit value to be added. - */ -static inline void net_buf_add_le24(struct net_buf *buf, uint32_t val) -{ - net_buf_simple_add_le24(&buf->b, val); -} - -/** - * @brief Add 24-bit value at the end of the buffer - * - * Adds 24-bit value in big endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 24-bit value to be added. - */ -static inline void net_buf_add_be24(struct net_buf *buf, uint32_t val) -{ - net_buf_simple_add_be24(&buf->b, val); -} - -/** - * @brief Add 32-bit value at the end of the buffer - * - * Adds 32-bit value in little endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 32-bit value to be added. - */ -static inline void net_buf_add_le32(struct net_buf *buf, uint32_t val) -{ - net_buf_simple_add_le32(&buf->b, val); -} - -/** - * @brief Add 32-bit value at the end of the buffer - * - * Adds 32-bit value in big endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 32-bit value to be added. - */ -static inline void net_buf_add_be32(struct net_buf *buf, uint32_t val) -{ - net_buf_simple_add_be32(&buf->b, val); -} - -/** - * @brief Add 40-bit value at the end of the buffer - * - * Adds 40-bit value in little endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 40-bit value to be added. - */ -static inline void net_buf_add_le40(struct net_buf *buf, uint64_t val) -{ - net_buf_simple_add_le40(&buf->b, val); -} - -/** - * @brief Add 40-bit value at the end of the buffer - * - * Adds 40-bit value in big endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 40-bit value to be added. - */ -static inline void net_buf_add_be40(struct net_buf *buf, uint64_t val) -{ - net_buf_simple_add_be40(&buf->b, val); -} - -/** - * @brief Add 48-bit value at the end of the buffer - * - * Adds 48-bit value in little endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 48-bit value to be added. - */ -static inline void net_buf_add_le48(struct net_buf *buf, uint64_t val) -{ - net_buf_simple_add_le48(&buf->b, val); -} - -/** - * @brief Add 48-bit value at the end of the buffer - * - * Adds 48-bit value in big endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 48-bit value to be added. - */ -static inline void net_buf_add_be48(struct net_buf *buf, uint64_t val) -{ - net_buf_simple_add_be48(&buf->b, val); -} - -/** - * @brief Add 64-bit value at the end of the buffer - * - * Adds 64-bit value in little endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 64-bit value to be added. - */ -static inline void net_buf_add_le64(struct net_buf *buf, uint64_t val) -{ - net_buf_simple_add_le64(&buf->b, val); -} - -/** - * @brief Add 64-bit value at the end of the buffer - * - * Adds 64-bit value in big endian format at the end of buffer. - * Increments the data length of a buffer to account for more data - * at the end. - * - * @param buf Buffer to update. - * @param val 64-bit value to be added. - */ -static inline void net_buf_add_be64(struct net_buf *buf, uint64_t val) -{ - net_buf_simple_add_be64(&buf->b, val); -} - -/** - * @brief Remove data from the end of the buffer. - * - * Removes data from the end of the buffer by modifying the buffer length. - * - * @param buf Buffer to update. - * @param len Number of bytes to remove. - * - * @return New end of the buffer data. - */ -static inline void *net_buf_remove_mem(struct net_buf *buf, size_t len) -{ - return net_buf_simple_remove_mem(&buf->b, len); -} - -/** - * @brief Remove a 8-bit value from the end of the buffer - * - * Same idea as with net_buf_remove_mem(), but a helper for operating on - * 8-bit values. - * - * @param buf A valid pointer on a buffer. - * - * @return The 8-bit removed value - */ -static inline uint8_t net_buf_remove_u8(struct net_buf *buf) -{ - return net_buf_simple_remove_u8(&buf->b); -} - -/** - * @brief Remove and convert 16 bits from the end of the buffer. - * - * Same idea as with net_buf_remove_mem(), but a helper for operating on - * 16-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 16-bit value converted from little endian to host endian. - */ -static inline uint16_t net_buf_remove_le16(struct net_buf *buf) -{ - return net_buf_simple_remove_le16(&buf->b); -} - -/** - * @brief Remove and convert 16 bits from the end of the buffer. - * - * Same idea as with net_buf_remove_mem(), but a helper for operating on - * 16-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 16-bit value converted from big endian to host endian. - */ -static inline uint16_t net_buf_remove_be16(struct net_buf *buf) -{ - return net_buf_simple_remove_be16(&buf->b); -} - -/** - * @brief Remove and convert 24 bits from the end of the buffer. - * - * Same idea as with net_buf_remove_mem(), but a helper for operating on - * 24-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 24-bit value converted from big endian to host endian. - */ -static inline uint32_t net_buf_remove_be24(struct net_buf *buf) -{ - return net_buf_simple_remove_be24(&buf->b); -} - -/** - * @brief Remove and convert 24 bits from the end of the buffer. - * - * Same idea as with net_buf_remove_mem(), but a helper for operating on - * 24-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 24-bit value converted from little endian to host endian. - */ -static inline uint32_t net_buf_remove_le24(struct net_buf *buf) -{ - return net_buf_simple_remove_le24(&buf->b); -} - -/** - * @brief Remove and convert 32 bits from the end of the buffer. - * - * Same idea as with net_buf_remove_mem(), but a helper for operating on - * 32-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 32-bit value converted from little endian to host endian. - */ -static inline uint32_t net_buf_remove_le32(struct net_buf *buf) -{ - return net_buf_simple_remove_le32(&buf->b); -} - -/** - * @brief Remove and convert 32 bits from the end of the buffer. - * - * Same idea as with net_buf_remove_mem(), but a helper for operating on - * 32-bit big endian data. - * - * @param buf A valid pointer on a buffer - * - * @return 32-bit value converted from big endian to host endian. - */ -static inline uint32_t net_buf_remove_be32(struct net_buf *buf) -{ - return net_buf_simple_remove_be32(&buf->b); -} - -/** - * @brief Remove and convert 40 bits from the end of the buffer. - * - * Same idea as with net_buf_remove_mem(), but a helper for operating on - * 40-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 40-bit value converted from little endian to host endian. - */ -static inline uint64_t net_buf_remove_le40(struct net_buf *buf) -{ - return net_buf_simple_remove_le40(&buf->b); -} - -/** - * @brief Remove and convert 40 bits from the end of the buffer. - * - * Same idea as with net_buf_remove_mem(), but a helper for operating on - * 40-bit big endian data. - * - * @param buf A valid pointer on a buffer - * - * @return 40-bit value converted from big endian to host endian. - */ -static inline uint64_t net_buf_remove_be40(struct net_buf *buf) -{ - return net_buf_simple_remove_be40(&buf->b); -} - -/** - * @brief Remove and convert 48 bits from the end of the buffer. - * - * Same idea as with net_buf_remove_mem(), but a helper for operating on - * 48-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 48-bit value converted from little endian to host endian. - */ -static inline uint64_t net_buf_remove_le48(struct net_buf *buf) -{ - return net_buf_simple_remove_le48(&buf->b); -} - -/** - * @brief Remove and convert 48 bits from the end of the buffer. - * - * Same idea as with net_buf_remove_mem(), but a helper for operating on - * 48-bit big endian data. - * - * @param buf A valid pointer on a buffer - * - * @return 48-bit value converted from big endian to host endian. - */ -static inline uint64_t net_buf_remove_be48(struct net_buf *buf) -{ - return net_buf_simple_remove_be48(&buf->b); -} - -/** - * @brief Remove and convert 64 bits from the end of the buffer. - * - * Same idea as with net_buf_remove_mem(), but a helper for operating on - * 64-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 64-bit value converted from little endian to host endian. - */ -static inline uint64_t net_buf_remove_le64(struct net_buf *buf) -{ - return net_buf_simple_remove_le64(&buf->b); -} - -/** - * @brief Remove and convert 64 bits from the end of the buffer. - * - * Same idea as with net_buf_remove_mem(), but a helper for operating on - * 64-bit big endian data. - * - * @param buf A valid pointer on a buffer - * - * @return 64-bit value converted from big endian to host endian. - */ -static inline uint64_t net_buf_remove_be64(struct net_buf *buf) -{ - return net_buf_simple_remove_be64(&buf->b); -} - -/** - * @brief Prepare data to be added at the start of the buffer - * - * Modifies the data pointer and buffer length to account for more data - * in the beginning of the buffer. - * - * @param buf Buffer to update. - * @param len Number of bytes to add to the beginning. - * - * @return The new beginning of the buffer data. - */ -static inline void *net_buf_push(struct net_buf *buf, size_t len) -{ - return net_buf_simple_push(&buf->b, len); -} - -/** - * @brief Copies the given number of bytes to the start of the buffer - * - * Modifies the data pointer and buffer length to account for more data - * in the beginning of the buffer. - * - * @param buf Buffer to update. - * @param mem Location of data to be added. - * @param len Length of data to be added. - * - * @return The new beginning of the buffer data. - */ -static inline void *net_buf_push_mem(struct net_buf *buf, const void *mem, - size_t len) -{ - return net_buf_simple_push_mem(&buf->b, mem, len); -} - -/** - * @brief Push 8-bit value to the beginning of the buffer - * - * Adds 8-bit value the beginning of the buffer. - * - * @param buf Buffer to update. - * @param val 8-bit value to be pushed to the buffer. - */ -static inline void net_buf_push_u8(struct net_buf *buf, uint8_t val) -{ - net_buf_simple_push_u8(&buf->b, val); -} - -/** - * @brief Push 16-bit value to the beginning of the buffer - * - * Adds 16-bit value in little endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 16-bit value to be pushed to the buffer. - */ -static inline void net_buf_push_le16(struct net_buf *buf, uint16_t val) -{ - net_buf_simple_push_le16(&buf->b, val); -} - -/** - * @brief Push 16-bit value to the beginning of the buffer - * - * Adds 16-bit value in big endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 16-bit value to be pushed to the buffer. - */ -static inline void net_buf_push_be16(struct net_buf *buf, uint16_t val) -{ - net_buf_simple_push_be16(&buf->b, val); -} - -/** - * @brief Push 24-bit value to the beginning of the buffer - * - * Adds 24-bit value in little endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 24-bit value to be pushed to the buffer. - */ -static inline void net_buf_push_le24(struct net_buf *buf, uint32_t val) -{ - net_buf_simple_push_le24(&buf->b, val); -} - -/** - * @brief Push 24-bit value to the beginning of the buffer - * - * Adds 24-bit value in big endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 24-bit value to be pushed to the buffer. - */ -static inline void net_buf_push_be24(struct net_buf *buf, uint32_t val) -{ - net_buf_simple_push_be24(&buf->b, val); -} - -/** - * @brief Push 32-bit value to the beginning of the buffer - * - * Adds 32-bit value in little endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 32-bit value to be pushed to the buffer. - */ -static inline void net_buf_push_le32(struct net_buf *buf, uint32_t val) -{ - net_buf_simple_push_le32(&buf->b, val); -} - -/** - * @brief Push 32-bit value to the beginning of the buffer - * - * Adds 32-bit value in big endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 32-bit value to be pushed to the buffer. - */ -static inline void net_buf_push_be32(struct net_buf *buf, uint32_t val) -{ - net_buf_simple_push_be32(&buf->b, val); -} - -/** - * @brief Push 40-bit value to the beginning of the buffer - * - * Adds 40-bit value in little endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 40-bit value to be pushed to the buffer. - */ -static inline void net_buf_push_le40(struct net_buf *buf, uint64_t val) -{ - net_buf_simple_push_le40(&buf->b, val); -} - -/** - * @brief Push 40-bit value to the beginning of the buffer - * - * Adds 40-bit value in big endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 40-bit value to be pushed to the buffer. - */ -static inline void net_buf_push_be40(struct net_buf *buf, uint64_t val) -{ - net_buf_simple_push_be40(&buf->b, val); -} - -/** - * @brief Push 48-bit value to the beginning of the buffer - * - * Adds 48-bit value in little endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 48-bit value to be pushed to the buffer. - */ -static inline void net_buf_push_le48(struct net_buf *buf, uint64_t val) -{ - net_buf_simple_push_le48(&buf->b, val); -} - -/** - * @brief Push 48-bit value to the beginning of the buffer - * - * Adds 48-bit value in big endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 48-bit value to be pushed to the buffer. - */ -static inline void net_buf_push_be48(struct net_buf *buf, uint64_t val) -{ - net_buf_simple_push_be48(&buf->b, val); -} - -/** - * @brief Push 64-bit value to the beginning of the buffer - * - * Adds 64-bit value in little endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 64-bit value to be pushed to the buffer. - */ -static inline void net_buf_push_le64(struct net_buf *buf, uint64_t val) -{ - net_buf_simple_push_le64(&buf->b, val); -} - -/** - * @brief Push 64-bit value to the beginning of the buffer - * - * Adds 64-bit value in big endian format to the beginning of the - * buffer. - * - * @param buf Buffer to update. - * @param val 64-bit value to be pushed to the buffer. - */ -static inline void net_buf_push_be64(struct net_buf *buf, uint64_t val) -{ - net_buf_simple_push_be64(&buf->b, val); -} - -/** - * @brief Remove data from the beginning of the buffer. - * - * Removes data from the beginning of the buffer by modifying the data - * pointer and buffer length. - * - * @param buf Buffer to update. - * @param len Number of bytes to remove. - * - * @return New beginning of the buffer data. - */ -static inline void *net_buf_pull(struct net_buf *buf, size_t len) -{ - return net_buf_simple_pull(&buf->b, len); -} - -/** - * @brief Remove data from the beginning of the buffer. - * - * Removes data from the beginning of the buffer by modifying the data - * pointer and buffer length. - * - * @param buf Buffer to update. - * @param len Number of bytes to remove. - * - * @return Pointer to the old beginning of the buffer data. - */ -static inline void *net_buf_pull_mem(struct net_buf *buf, size_t len) -{ - return net_buf_simple_pull_mem(&buf->b, len); -} - -/** - * @brief Remove a 8-bit value from the beginning of the buffer - * - * Same idea as with net_buf_pull(), but a helper for operating on - * 8-bit values. - * - * @param buf A valid pointer on a buffer. - * - * @return The 8-bit removed value - */ -static inline uint8_t net_buf_pull_u8(struct net_buf *buf) -{ - return net_buf_simple_pull_u8(&buf->b); -} - -/** - * @brief Remove and convert 16 bits from the beginning of the buffer. - * - * Same idea as with net_buf_pull(), but a helper for operating on - * 16-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 16-bit value converted from little endian to host endian. - */ -static inline uint16_t net_buf_pull_le16(struct net_buf *buf) -{ - return net_buf_simple_pull_le16(&buf->b); -} - -/** - * @brief Remove and convert 16 bits from the beginning of the buffer. - * - * Same idea as with net_buf_pull(), but a helper for operating on - * 16-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 16-bit value converted from big endian to host endian. - */ -static inline uint16_t net_buf_pull_be16(struct net_buf *buf) -{ - return net_buf_simple_pull_be16(&buf->b); -} - -/** - * @brief Remove and convert 24 bits from the beginning of the buffer. - * - * Same idea as with net_buf_pull(), but a helper for operating on - * 24-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 24-bit value converted from little endian to host endian. - */ -static inline uint32_t net_buf_pull_le24(struct net_buf *buf) -{ - return net_buf_simple_pull_le24(&buf->b); -} - -/** - * @brief Remove and convert 24 bits from the beginning of the buffer. - * - * Same idea as with net_buf_pull(), but a helper for operating on - * 24-bit big endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 24-bit value converted from big endian to host endian. - */ -static inline uint32_t net_buf_pull_be24(struct net_buf *buf) -{ - return net_buf_simple_pull_be24(&buf->b); -} - -/** - * @brief Remove and convert 32 bits from the beginning of the buffer. - * - * Same idea as with net_buf_pull(), but a helper for operating on - * 32-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 32-bit value converted from little endian to host endian. - */ -static inline uint32_t net_buf_pull_le32(struct net_buf *buf) -{ - return net_buf_simple_pull_le32(&buf->b); -} - -/** - * @brief Remove and convert 32 bits from the beginning of the buffer. - * - * Same idea as with net_buf_pull(), but a helper for operating on - * 32-bit big endian data. - * - * @param buf A valid pointer on a buffer - * - * @return 32-bit value converted from big endian to host endian. - */ -static inline uint32_t net_buf_pull_be32(struct net_buf *buf) -{ - return net_buf_simple_pull_be32(&buf->b); -} - -/** - * @brief Remove and convert 40 bits from the beginning of the buffer. - * - * Same idea as with net_buf_pull(), but a helper for operating on - * 40-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 40-bit value converted from little endian to host endian. - */ -static inline uint64_t net_buf_pull_le40(struct net_buf *buf) -{ - return net_buf_simple_pull_le40(&buf->b); -} - -/** - * @brief Remove and convert 40 bits from the beginning of the buffer. - * - * Same idea as with net_buf_pull(), but a helper for operating on - * 40-bit big endian data. - * - * @param buf A valid pointer on a buffer - * - * @return 40-bit value converted from big endian to host endian. - */ -static inline uint64_t net_buf_pull_be40(struct net_buf *buf) -{ - return net_buf_simple_pull_be40(&buf->b); -} - -/** - * @brief Remove and convert 48 bits from the beginning of the buffer. - * - * Same idea as with net_buf_pull(), but a helper for operating on - * 48-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 48-bit value converted from little endian to host endian. - */ -static inline uint64_t net_buf_pull_le48(struct net_buf *buf) -{ - return net_buf_simple_pull_le48(&buf->b); -} - -/** - * @brief Remove and convert 48 bits from the beginning of the buffer. - * - * Same idea as with net_buf_pull(), but a helper for operating on - * 48-bit big endian data. - * - * @param buf A valid pointer on a buffer - * - * @return 48-bit value converted from big endian to host endian. - */ -static inline uint64_t net_buf_pull_be48(struct net_buf *buf) -{ - return net_buf_simple_pull_be48(&buf->b); -} - -/** - * @brief Remove and convert 64 bits from the beginning of the buffer. - * - * Same idea as with net_buf_pull(), but a helper for operating on - * 64-bit little endian data. - * - * @param buf A valid pointer on a buffer. - * - * @return 64-bit value converted from little endian to host endian. - */ -static inline uint64_t net_buf_pull_le64(struct net_buf *buf) -{ - return net_buf_simple_pull_le64(&buf->b); -} - -/** - * @brief Remove and convert 64 bits from the beginning of the buffer. - * - * Same idea as with net_buf_pull(), but a helper for operating on - * 64-bit big endian data. - * - * @param buf A valid pointer on a buffer - * - * @return 64-bit value converted from big endian to host endian. - */ -static inline uint64_t net_buf_pull_be64(struct net_buf *buf) -{ - return net_buf_simple_pull_be64(&buf->b); -} - -/** - * @brief Check buffer tailroom. - * - * Check how much free space there is at the end of the buffer. - * - * @param buf A valid pointer on a buffer - * - * @return Number of bytes available at the end of the buffer. - */ -static inline size_t net_buf_tailroom(const struct net_buf *buf) -{ - return net_buf_simple_tailroom(&buf->b); -} - -/** - * @brief Check buffer headroom. - * - * Check how much free space there is in the beginning of the buffer. - * - * buf A valid pointer on a buffer - * - * @return Number of bytes available in the beginning of the buffer. - */ -static inline size_t net_buf_headroom(const struct net_buf *buf) -{ - return net_buf_simple_headroom(&buf->b); -} - -/** - * @brief Check maximum net_buf::len value. - * - * This value is depending on the number of bytes being reserved as headroom. - * - * @param buf A valid pointer on a buffer - * - * @return Number of bytes usable behind the net_buf::data pointer. - */ -static inline uint16_t net_buf_max_len(const struct net_buf *buf) -{ - return net_buf_simple_max_len(&buf->b); -} - -/** - * @brief Get the tail pointer for a buffer. - * - * Get a pointer to the end of the data in a buffer. - * - * @param buf Buffer. - * - * @return Tail pointer for the buffer. - */ -static inline uint8_t *net_buf_tail(const struct net_buf *buf) -{ - return net_buf_simple_tail(&buf->b); -} - -/** - * @brief Find the last fragment in the fragment list. - * - * @return Pointer to last fragment in the list. - */ -struct net_buf *net_buf_frag_last(struct net_buf *frags); - -/** - * @brief Insert a new fragment to a chain of bufs. - * - * Insert a new fragment into the buffer fragments list after the parent. - * - * Note: This function takes ownership of the fragment reference so the - * caller is not required to unref. - * - * @param parent Parent buffer/fragment. - * @param frag Fragment to insert. - */ -void net_buf_frag_insert(struct net_buf *parent, struct net_buf *frag); - -/** - * @brief Add a new fragment to the end of a chain of bufs. - * - * Append a new fragment into the buffer fragments list. - * - * Note: This function takes ownership of the fragment reference so the - * caller is not required to unref. - * - * @param head Head of the fragment chain. - * @param frag Fragment to add. - * - * @return New head of the fragment chain. Either head (if head - * was non-NULL) or frag (if head was NULL). - */ -struct net_buf *net_buf_frag_add(struct net_buf *head, struct net_buf *frag); - -/** - * @brief Delete existing fragment from a chain of bufs. - * - * @param parent Parent buffer/fragment, or NULL if there is no parent. - * @param frag Fragment to delete. - * - * @return Pointer to the buffer following the fragment, or NULL if it - * had no further fragments. - */ -#if defined(CONFIG_NET_BUF_LOG) -struct net_buf *net_buf_frag_del_debug(struct net_buf *parent, - struct net_buf *frag, - const char *func, int line); -#define net_buf_frag_del(_parent, _frag) \ - net_buf_frag_del_debug(_parent, _frag, __func__, __LINE__) -#else -struct net_buf *net_buf_frag_del(struct net_buf *parent, struct net_buf *frag); -#endif - -/** - * @brief Copy bytes from net_buf chain starting at offset to linear buffer - * - * Copy (extract) @a len bytes from @a src net_buf chain, starting from @a - * offset in it, to a linear buffer @a dst. Return number of bytes actually - * copied, which may be less than requested, if net_buf chain doesn't have - * enough data, or destination buffer is too small. - * - * @param dst Destination buffer - * @param dst_len Destination buffer length - * @param src Source net_buf chain - * @param offset Starting offset to copy from - * @param len Number of bytes to copy - * @return number of bytes actually copied - */ -size_t net_buf_linearize(void *dst, size_t dst_len, - const struct net_buf *src, size_t offset, size_t len); - -/** - * @typedef net_buf_allocator_cb - * @brief Network buffer allocator callback. - * - * @details The allocator callback is called when net_buf_append_bytes - * needs to allocate a new net_buf. - * - * @param timeout Affects the action taken should the net buf pool be empty. - * If K_NO_WAIT, then return immediately. If K_FOREVER, then - * wait as long as necessary. Otherwise, wait until the specified - * timeout. - * @param user_data The user data given in net_buf_append_bytes call. - * @return pointer to allocated net_buf or NULL on error. - */ -typedef struct net_buf * __must_check (*net_buf_allocator_cb)(k_timeout_t timeout, - void *user_data); - -/** - * @brief Append data to a list of net_buf - * - * @details Append data to a net_buf. If there is not enough space in the - * net_buf then more net_buf will be added, unless there are no free net_buf - * and timeout occurs. If not allocator is provided it attempts to allocate from - * the same pool as the original buffer. - * - * @param buf Network buffer. - * @param len Total length of input data - * @param value Data to be added - * @param timeout Timeout is passed to the net_buf allocator callback. - * @param allocate_cb When a new net_buf is required, use this callback. - * @param user_data A user data pointer to be supplied to the allocate_cb. - * This pointer is can be anything from a mem_pool or a net_pkt, the - * logic is left up to the allocate_cb function. - * - * @return Length of data actually added. This may be less than input - * length if other timeout than K_FOREVER was used, and there - * were no free fragments in a pool to accommodate all data. - */ -size_t net_buf_append_bytes(struct net_buf *buf, size_t len, - const void *value, k_timeout_t timeout, - net_buf_allocator_cb allocate_cb, void *user_data); - -/** - * @brief Match data with a net_buf's content - * - * @details Compare data with a content of a net_buf. Provide information about - * the number of bytes matching between both. If needed, traverse - * through multiple buffer fragments. - * - * @param buf Network buffer - * @param offset Starting offset to compare from - * @param data Data buffer for comparison - * @param len Number of bytes to compare - * - * @return The number of bytes compared before the first difference. - */ -size_t net_buf_data_match(const struct net_buf *buf, size_t offset, const void *data, size_t len); - -/** - * @brief Skip N number of bytes in a net_buf - * - * @details Skip N number of bytes starting from fragment's offset. If the total - * length of data is placed in multiple fragments, this function will skip from - * all fragments until it reaches N number of bytes. Any fully skipped buffers - * are removed from the net_buf list. - * - * @param buf Network buffer. - * @param len Total length of data to be skipped. - * - * @return Pointer to the fragment or - * NULL and pos is 0 after successful skip, - * NULL and pos is 0xffff otherwise. - */ -static inline struct net_buf *net_buf_skip(struct net_buf *buf, size_t len) -{ - while (buf && len--) { - net_buf_pull_u8(buf); - if (!buf->len) { - buf = net_buf_frag_del(NULL, buf); - } - } - - return buf; -} - -/** - * @brief Calculate amount of bytes stored in fragments. - * - * Calculates the total amount of data stored in the given buffer and the - * fragments linked to it. - * - * @param buf Buffer to start off with. - * - * @return Number of bytes in the buffer and its fragments. - */ -static inline size_t net_buf_frags_len(const struct net_buf *buf) -{ - size_t bytes = 0; - - while (buf) { - bytes += buf->len; - buf = buf->frags; - } - - return bytes; -} - -/** - * @} - */ +#include -#ifdef __cplusplus -} -#endif +#warning This header is deprecated, include instead -#endif /* ZEPHYR_INCLUDE_NET_BUF_H_ */ +#endif /* ZEPHYR_INCLUDE_NET_BUF_DEPRECATED_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/capture.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/capture.h index 0a90e444..1ebb3da4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/capture.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/capture.h @@ -23,6 +23,8 @@ extern "C" { /** * @brief Network packet capture support functions * @defgroup net_capture Network packet capture + * @since 2.6 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap.h index 44ffed7a..09df1e98 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap.h @@ -64,6 +64,7 @@ enum coap_option_num { COAP_OPTION_PROXY_SCHEME = 39, /**< Proxy-Scheme */ COAP_OPTION_SIZE1 = 60, /**< Size1 */ COAP_OPTION_ECHO = 252, /**< Echo (RFC 9175) */ + COAP_OPTION_NO_RESPONSE = 258, /**< No-Response (RFC 7967) */ COAP_OPTION_REQUEST_TAG = 292 /**< Request-Tag (RFC 9175) */ }; @@ -222,6 +223,22 @@ enum coap_content_format { COAP_CONTENT_FORMAT_APP_CBOR = 60 /**< application/cbor */ }; +/** + * @brief Set of No-Response option values for CoAP. + * + * To be used when encoding or decoding a No-Response option defined + * in RFC 7967. + */ +enum coap_no_response { + COAP_NO_RESPONSE_SUPPRESS_2_XX = 0x02, + COAP_NO_RESPONSE_SUPPRESS_4_XX = 0x08, + COAP_NO_RESPONSE_SUPPRESS_5_XX = 0x10, + + COAP_NO_RESPONSE_SUPPRESS_ALL = COAP_NO_RESPONSE_SUPPRESS_2_XX | + COAP_NO_RESPONSE_SUPPRESS_4_XX | + COAP_NO_RESPONSE_SUPPRESS_5_XX, +}; + /** @cond INTERNAL_HIDDEN */ /* block option helper */ @@ -338,8 +355,15 @@ typedef int (*coap_reply_t)(const struct coap_packet *response, * @brief CoAP transmission parameters. */ struct coap_transmission_parameters { - /** Initial ACK timeout. Value is used as a base value to retry pending CoAP packets. */ + /** Initial ACK timeout. Value is used as a base value to retry pending CoAP packets. */ uint32_t ack_timeout; +#if defined(CONFIG_COAP_RANDOMIZE_ACK_TIMEOUT) || defined(__DOXYGEN__) + /** + * Set CoAP ack random factor. A value of 150 means a factor of 1.5. A value of 0 defaults + * to @kconfig{CONFIG_COAP_ACK_RANDOM_PERCENT}. The value must be >= 100. + */ + uint16_t ack_random_percent; +#endif /* defined(CONFIG_COAP_RANDOMIZE_ACK_TIMEOUT) */ /** Set CoAP retry backoff factor. A value of 200 means a factor of 2.0. */ uint16_t coap_backoff_percent; /** Maximum number of retransmissions. */ @@ -528,6 +552,21 @@ int coap_packet_init(struct coap_packet *cpkt, uint8_t *data, uint16_t max_len, int coap_ack_init(struct coap_packet *cpkt, const struct coap_packet *req, uint8_t *data, uint16_t max_len, uint8_t code); +/** + * @brief Create a new CoAP Reset message for given request. + * + * This function works like @ref coap_packet_init, filling CoAP header type, + * and CoAP header message id fields. + * + * @param cpkt New packet to be initialized using the storage from @a data. + * @param req CoAP request packet that is being acknowledged + * @param data Data that will contain a CoAP packet information + * @param max_len Maximum allowable length of data + * + * @return 0 in case of success or negative in case of error. + */ +int coap_rst_init(struct coap_packet *cpkt, const struct coap_packet *req, + uint8_t *data, uint16_t max_len); /** * @brief Returns a randomly generated array of 8 bytes, that can be * used as a message's token. @@ -887,21 +926,22 @@ int coap_get_option_int(const struct coap_packet *cpkt, uint16_t code); * @return Integer value of the block size in case of success * or negative in case of error. */ -int coap_get_block1_option(const struct coap_packet *cpkt, bool *has_more, uint8_t *block_number); +int coap_get_block1_option(const struct coap_packet *cpkt, bool *has_more, uint32_t *block_number); /** * @brief Get values from CoAP block2 option. * - * Decode block number and block size from option. Ignore the has_more flag - * as it should always be zero on queries. + * Decode block number, more flag and block size from option. * * @param cpkt Packet to be inspected + * @param has_more Is set to the value of the more flag * @param block_number Is set to the number of the block * * @return Integer value of the block size in case of success * or negative in case of error. */ -int coap_get_block2_option(const struct coap_packet *cpkt, uint8_t *block_number); +int coap_get_block2_option(const struct coap_packet *cpkt, bool *has_more, + uint32_t *block_number); /** * @brief Retrieves BLOCK{1,2} and SIZE{1,2} from @a cpkt and updates diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap_client.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap_client.h index a3576a24..ce09c56d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap_client.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap_client.h @@ -15,6 +15,8 @@ /** * @brief CoAP client API * @defgroup coap_client CoAP client API + * @since 3.4 + * @version 0.1.0 * @ingroup networking * @{ */ @@ -51,16 +53,16 @@ typedef void (*coap_client_response_cb_t)(int16_t result_code, * @brief Representation of a CoAP client request. */ struct coap_client_request { - enum coap_method method; /**< Method of the request */ - bool confirmable; /**< CoAP Confirmable/Non-confirmable message */ - const char *path; /**< Path of the requested resource */ - enum coap_content_format fmt; /**< Content format to be used */ - uint8_t *payload; /**< User allocated buffer for send request */ - size_t len; /**< Length of the payload */ - coap_client_response_cb_t cb; /**< Callback when response received */ - struct coap_client_option *options; /**< Extra options to be added to request */ - uint8_t num_options; /**< Number of extra options */ - void *user_data; /**< User provided context */ + enum coap_method method; /**< Method of the request */ + bool confirmable; /**< CoAP Confirmable/Non-confirmable message */ + const char *path; /**< Path of the requested resource */ + enum coap_content_format fmt; /**< Content format to be used */ + const uint8_t *payload; /**< User allocated buffer for send request */ + size_t len; /**< Length of the payload */ + coap_client_response_cb_t cb; /**< Callback when response received */ + const struct coap_client_option *options; /**< Extra options to be added to request */ + uint8_t num_options; /**< Number of extra options */ + void *user_data; /**< User provided context */ }; /** @@ -86,7 +88,7 @@ struct coap_client_option { struct coap_client_internal_request { uint8_t request_token[COAP_TOKEN_MAX_LEN]; uint32_t offset; - uint32_t last_id; + uint16_t last_id; uint8_t request_tkl; bool request_ongoing; atomic_t in_callback; @@ -106,8 +108,7 @@ struct coap_client { int fd; struct sockaddr address; socklen_t socklen; - bool response_ready; - struct k_mutex send_mutex; + struct k_mutex lock; uint8_t send_buf[MAX_COAP_MSG_LEN]; uint8_t recv_buf[MAX_COAP_MSG_LEN]; struct coap_client_internal_request requests[CONFIG_COAP_CLIENT_MAX_REQUESTS]; @@ -157,6 +158,43 @@ int coap_client_req(struct coap_client *client, int sock, const struct sockaddr */ void coap_client_cancel_requests(struct coap_client *client); +/** + * @brief Cancel matching requests. + * + * This function cancels all CoAP client request that matches the given request. + * The request is matched based on the method, path, callback and user_data, if provided. + * Any field set to NULL is considered a wildcard. + * + * (struct coap_client_request){0} cancels all requests. + * (struct coap_client_request){.method = COAP_METHOD_GET} cancels all GET requests. + * + * @param client Pointer to the CoAP client instance. + * @param req Pointer to the CoAP client request to be canceled. + */ +void coap_client_cancel_request(struct coap_client *client, struct coap_client_request *req); + +/** + * @brief Initialise a Block2 option to be added to a request + * + * If the application expects a request to require a blockwise transfer, it may pre-emptively + * suggest a maximum block size to the server - see RFC7959 Figure 3: Block-Wise GET with Early + * Negotiation. + * + * This helper function returns a Block2 option to send with the initial request. + * + * @return CoAP client initial Block2 option structure + */ +static inline struct coap_client_option coap_client_option_initial_block2(void) +{ + struct coap_client_option block2 = { + .code = COAP_OPTION_BLOCK2, + .len = 1, + .value[0] = coap_bytes_to_block_size(CONFIG_COAP_CLIENT_BLOCK_SIZE), + }; + + return block2; +} + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap_mgmt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap_mgmt.h index a52293a9..7997d1e9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap_mgmt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap_mgmt.h @@ -21,6 +21,8 @@ extern "C" { /** * @brief CoAP Manager Events * @defgroup coap_mgmt CoAP Manager Events + * @since 3.6 + * @version 0.1.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap_service.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap_service.h index b894fecf..f5bf3f84 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap_service.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/coap_service.h @@ -23,6 +23,8 @@ extern "C" { /** * @brief CoAP Service API * @defgroup coap_service CoAP service API + * @since 3.6 + * @version 0.1.0 * @ingroup networking * @{ */ @@ -57,7 +59,7 @@ struct coap_service { }; #define __z_coap_service_define(_name, _host, _port, _flags, _res_begin, _res_end) \ - static struct coap_service_data coap_service_data_##_name = { \ + static struct coap_service_data _CONCAT(coap_service_data_, _name) = { \ .sock_fd = -1, \ }; \ const STRUCT_SECTION_ITERABLE(coap_service, _name) = { \ @@ -67,7 +69,7 @@ struct coap_service { .flags = _flags, \ .res_begin = (_res_begin), \ .res_end = (_res_end), \ - .data = &coap_service_data_##_name, \ + .data = &_CONCAT(coap_service_data_, _name), \ } /** @endcond */ @@ -109,8 +111,8 @@ struct coap_service { * @param _service Name of the associated service. */ #define COAP_RESOURCE_DEFINE(_name, _service, ...) \ - STRUCT_SECTION_ITERABLE_ALTERNATE(coap_resource_##_service, coap_resource, _name) \ - = __VA_ARGS__ + STRUCT_SECTION_ITERABLE_ALTERNATE(_CONCAT(coap_resource_, _service), coap_resource, \ + _name) = __VA_ARGS__ /** * @brief Define a CoAP service with static resources. @@ -130,11 +132,11 @@ struct coap_service { * @param _flags Configuration flags @see @ref COAP_SERVICE_FLAGS. */ #define COAP_SERVICE_DEFINE(_name, _host, _port, _flags) \ - extern struct coap_resource _CONCAT(_coap_resource_##_name, _list_start)[]; \ - extern struct coap_resource _CONCAT(_coap_resource_##_name, _list_end)[]; \ + extern struct coap_resource _CONCAT(_CONCAT(_coap_resource_, _name), _list_start)[]; \ + extern struct coap_resource _CONCAT(_CONCAT(_coap_resource_, _name), _list_end)[]; \ __z_coap_service_define(_name, _host, _port, _flags, \ - &_CONCAT(_coap_resource_##_name, _list_start)[0], \ - &_CONCAT(_coap_resource_##_name, _list_end)[0]) + &_CONCAT(_CONCAT(_coap_resource_, _name), _list_start)[0], \ + &_CONCAT(_CONCAT(_coap_resource_, _name), _list_end)[0]) /** * @brief Count the number of CoAP services. @@ -175,7 +177,7 @@ struct coap_service { * @param _it Name of iterator (of type @ref coap_resource) */ #define COAP_RESOURCE_FOREACH(_service, _it) \ - STRUCT_SECTION_FOREACH_ALTERNATE(coap_resource_##_service, coap_resource, _it) + STRUCT_SECTION_FOREACH_ALTERNATE(_CONCAT(coap_resource_, _service), coap_resource, _it) /** * @brief Iterate over all static resources associated with @p _service . diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/conn_mgr_connectivity.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/conn_mgr_connectivity.h index 7e8ab1ea..4f3da6b4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/conn_mgr_connectivity.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/conn_mgr_connectivity.h @@ -255,7 +255,9 @@ int conn_mgr_if_set_timeout(struct net_if *iface, int timeout); /** * @brief Connection Manager Bulk API * @defgroup conn_mgr_connectivity_bulk Connection Manager Connectivity Bulk API - * @ingroup networking + * @since 3.4 + * @version 0.1.0 + * @ingroup conn_mgr_connectivity * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/conn_mgr_connectivity_impl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/conn_mgr_connectivity_impl.h index 49070685..644a0b89 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/conn_mgr_connectivity_impl.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/conn_mgr_connectivity_impl.h @@ -26,7 +26,9 @@ extern "C" { /** * @brief Connection Manager Connectivity Implementation API * @defgroup conn_mgr_connectivity_impl Connection Manager Connectivity Implementation API - * @ingroup networking + * @since 3.4 + * @version 0.1.0 + * @ingroup conn_mgr_connectivity * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/conn_mgr_monitor.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/conn_mgr_monitor.h index 16a873b7..5cf3efa4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/conn_mgr_monitor.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/conn_mgr_monitor.h @@ -21,6 +21,8 @@ extern "C" { /** * @brief Connection Manager API * @defgroup conn_mgr Connection Manager API + * @since 2.0 + * @version 0.1.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dhcpv4.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dhcpv4.h index 925c4e13..fee4a169 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dhcpv4.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dhcpv4.h @@ -21,6 +21,8 @@ extern "C" { /** * @brief DHCPv4 * @defgroup dhcpv4 DHCPv4 + * @since 1.7 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dhcpv4_server.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dhcpv4_server.h index 18c4af11..1cd0bbdb 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dhcpv4_server.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dhcpv4_server.h @@ -21,6 +21,8 @@ extern "C" { /** * @brief DHCPv4 server * @defgroup dhcpv4_server DHCPv4 server + * @since 3.6 + * @version 0.8.0 * @ingroup networking * @{ */ @@ -107,6 +109,34 @@ int net_dhcpv4_server_foreach_lease(struct net_if *iface, net_dhcpv4_lease_cb_t cb, void *user_data); +/** + * @typedef net_dhcpv4_server_provider_cb_t + * @brief Callback used to let application provide an address for a given + * client ID + * @details This function is called before assigning an address to a client, + * and lets the application override the address for a given client. If the + * callback returns 0, addr needs to be a valid address and will be assigned + * to the client. If the callback returns anything non-zero, the client will + * be assigned an address from the pool. + * + * @param iface Pointer to the network interface + * @param client_id Pointer to client requesting an address + * @param addr Address to be assigned to client + * @param user_data A valid pointer to user data or NULL + */ +typedef int (*net_dhcpv4_server_provider_cb_t)(struct net_if *iface, + const struct dhcpv4_client_id *client_id, + struct in_addr *addr, + void *user_data); +/** + * @brief Set the callback used to provide addresses to the DHCP server. + * + * @param cb User-supplied callback function to call + * @param user_data A valid pointer to user data or NULL + */ +void net_dhcpv4_server_set_provider_cb(net_dhcpv4_server_provider_cb_t cb, + void *user_data); + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dhcpv6.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dhcpv6.h index 715b8cae..ad3c586c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dhcpv6.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dhcpv6.h @@ -18,6 +18,8 @@ extern "C" { /** * @brief DHCPv6 * @defgroup dhcpv6 DHCPv6 + * @since 3.5 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dns_resolve.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dns_resolve.h index 36983f0b..33398dab 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dns_resolve.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dns_resolve.h @@ -25,6 +25,8 @@ extern "C" { /** * @brief DNS resolving library * @defgroup dns_resolve DNS Resolve Library + * @since 1.8 + * @version 0.8.0 * @ingroup networking * @{ */ @@ -139,9 +141,9 @@ enum dns_query_type { /** How many sockets the dispatcher is able to poll. */ #define DNS_DISPATCHER_MAX_POLL (DNS_RESOLVER_MAX_POLL + MDNS_MAX_POLL + LLMNR_MAX_POLL) -#if defined(CONFIG_NET_SOCKETS_POLL_MAX) -BUILD_ASSERT(CONFIG_NET_SOCKETS_POLL_MAX >= DNS_DISPATCHER_MAX_POLL, - "CONFIG_NET_SOCKETS_POLL_MAX must be larger than " STRINGIFY(DNS_DISPATCHER_MAX_POLL)); +#if defined(CONFIG_ZVFS_POLL_MAX) +BUILD_ASSERT(CONFIG_ZVFS_POLL_MAX >= DNS_DISPATCHER_MAX_POLL, + "CONFIG_ZVFS_POLL_MAX must be larger than " STRINGIFY(DNS_DISPATCHER_MAX_POLL)); #endif /** @brief What is the type of the socket given to DNS socket dispatcher, @@ -200,6 +202,8 @@ struct dns_socket_dispatcher { int fds_len; /** Local socket to dispatch */ int sock; + /** Interface we are bound to */ + int ifindex; /** There can be two contexts to dispatch. This points to the other * context if sharing the socket between resolver / responder. */ @@ -340,6 +344,11 @@ struct dns_resolve_context { /** Connection to the DNS server */ int sock; + /** Network interface index if the DNS resolving should be done + * via this interface. Value 0 indicates any interface can be used. + */ + int if_index; + /** Is this server mDNS one */ uint8_t is_mdns : 1; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dns_sd.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dns_sd.h index 6e4f9fcb..97548199 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dns_sd.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dns_sd.h @@ -13,6 +13,7 @@ #include #include +#include #ifdef __cplusplus extern "C" { @@ -29,6 +30,8 @@ extern "C" { * @see RFC 6763 * * @defgroup dns_sd DNS Service Discovery + * @since 2.5 + * @version 0.8.0 * @ingroup networking * @{ */ @@ -128,18 +131,15 @@ extern "C" { * Example (with TXT): * @code{.c} * #include - * static const bar_txt[] = { + * static const char bar_txt[] = { * "\x06" "path=/" * "\x0f" "this=is the way" * "\x0e" "foo or=foo not" * "\x17" "this=has\0embedded\0nulls" * "\x04" "true" * }; - * // Possibly use an ephemeral port - * // Possibly only assign bar_port when the service is running - * static uint16_t bar_port; * DNS_SD_REGISTER_TCP_SERVICE(bar, CONFIG_NET_HOSTNAME, - * "_bar", "local", bar_txt, &bar_port); + * "_bar", "local", bar_txt, 4242); * @endcode * * TXT records begin with a single length byte (hex-encoded) @@ -174,10 +174,8 @@ extern "C" { * Example (no TXT): * @code{.c} * #include - * #include - * static const foo_port = sys_cpu_to_be16(4242); * DNS_SD_REGISTER_UDP_SERVICE(foo, CONFIG_NET_HOSTNAME, - * "_foo", DNS_SD_EMPTY_TXT, &foo_port); + * "_foo", "local", DNS_SD_EMPTY_TXT, 4242); * @endcode * * @param id variable name for the DNS-SD service record diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dsa.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dsa.h index 1aed17e1..db81a5e3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dsa.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dsa.h @@ -17,6 +17,8 @@ /** * @brief DSA definitions and helpers * @defgroup DSA Distributed Switch Architecture definitions and helpers + * @since 2.5 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dummy.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dummy.h index 4c5fe031..926f9edc 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dummy.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/dummy.h @@ -23,6 +23,8 @@ extern "C" { /** * @brief Dummy L2/driver support functions * @defgroup dummy Dummy L2/driver Support Functions + * @since 1.14 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet.h index be9ed7ce..c870525c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet.h @@ -41,6 +41,8 @@ extern "C" { /** * @brief Ethernet support functions * @defgroup ethernet Ethernet Support Functions + * @since 1.0 + * @version 0.8.0 * @ingroup networking * @{ */ @@ -202,6 +204,12 @@ enum ethernet_hw_caps { /** TX-Injection supported */ ETHERNET_TXINJECTION_MODE = BIT(20), + + /** 2.5 Gbits link supported */ + ETHERNET_LINK_2500BASE_T = BIT(21), + + /** 5 Gbits link supported */ + ETHERNET_LINK_5000BASE_T = BIT(22), }; /** @cond INTERNAL_HIDDEN */ @@ -572,6 +580,9 @@ struct ethernet_api { const struct device *(*get_ptp_clock)(const struct device *dev); #endif /* CONFIG_PTP_CLOCK */ + /** Return PHY device that is tied to this ethernet device */ + const struct device *(*get_phy)(const struct device *dev); + /** Send a network packet */ int (*send)(const struct device *dev, struct net_pkt *pkt); }; @@ -648,7 +659,7 @@ struct ethernet_context { atomic_t flags; #if defined(CONFIG_NET_ETHERNET_BRIDGE) - struct eth_bridge_iface_context bridge; + struct net_if *bridge; #endif /** Carrier ON/OFF handler worker. This is used to create @@ -928,14 +939,14 @@ void net_eth_ipv6_mcast_to_mac_addr(const struct in6_addr *ipv6_addr, static inline enum ethernet_hw_caps net_eth_get_hw_capabilities(struct net_if *iface) { - const struct ethernet_api *eth = - (struct ethernet_api *)net_if_get_device(iface)->api; + const struct device *dev = net_if_get_device(iface); + const struct ethernet_api *api = (struct ethernet_api *)dev->api; - if (!eth->get_capabilities) { + if (!api || !api->get_capabilities) { return (enum ethernet_hw_caps)0; } - return eth->get_capabilities(net_if_get_device(iface)); + return api->get_capabilities(dev); } /** @@ -1296,6 +1307,16 @@ int net_eth_txinjection_mode(struct net_if *iface, bool enable); */ int net_eth_mac_filter(struct net_if *iface, struct net_eth_addr *mac, enum ethernet_filter_type type, bool enable); + +/** + * @brief Return the PHY device that is tied to this ethernet network interface. + * + * @param iface Network interface + * + * @return Pointer to PHY device if found, NULL if not found. + */ +const struct device *net_eth_get_phy(struct net_if *iface); + /** * @brief Return PTP clock that is tied to this ethernet network interface. * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet_bridge.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet_bridge.h index fa2ca546..329e218d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet_bridge.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet_bridge.h @@ -8,6 +8,7 @@ /* * Copyright (c) 2021 BayLibre SAS + * Copyright (c) 2024 Nordic Semiconductor * * SPDX-License-Identifier: Apache-2.0 */ @@ -25,48 +26,44 @@ extern "C" { /** * @brief Ethernet Bridging API * @defgroup eth_bridge Ethernet Bridging API + * @since 2.7 + * @version 0.8.0 * @ingroup networking * @{ */ /** @cond INTERNAL_HIDDEN */ -struct eth_bridge { +#if defined(CONFIG_NET_ETHERNET_BRIDGE) +#define NET_ETHERNET_BRIDGE_ETH_INTERFACE_COUNT CONFIG_NET_ETHERNET_BRIDGE_ETH_INTERFACE_COUNT +#else +#define NET_ETHERNET_BRIDGE_ETH_INTERFACE_COUNT 1 +#endif + +struct eth_bridge_iface_context { + /* Lock to protect access to interface array below */ struct k_mutex lock; - sys_slist_t interfaces; - sys_slist_t listeners; - bool initialized; -}; -#define ETH_BRIDGE_INITIALIZER(obj) \ - { \ - .lock = { }, \ - .interfaces = SYS_SLIST_STATIC_INIT(&obj.interfaces), \ - .listeners = SYS_SLIST_STATIC_INIT(&obj.listeners), \ - } + /* The actual bridge virtual interface */ + struct net_if *iface; -/** @endcond */ + /* What Ethernet interfaces are bridged together */ + struct net_if *eth_iface[NET_ETHERNET_BRIDGE_ETH_INTERFACE_COUNT]; -/** - * @brief Statically define and initialize a bridge instance. - * - * @param name Name of the bridge object - */ -#define ETH_BRIDGE_INIT(name) \ - STRUCT_SECTION_ITERABLE(eth_bridge, name) = \ - ETH_BRIDGE_INITIALIZER(name) + /* How many interfaces are bridged atm */ + size_t count; -/** @cond INTERNAL_HIDDEN */ + /* Bridge instance id */ + int id; -struct eth_bridge_iface_context { - sys_snode_t node; - struct eth_bridge *instance; - bool allow_tx; -}; + /* Is the bridge interface initialized */ + bool is_init : 1; + + /* Has user configured the bridge */ + bool is_setup : 1; -struct eth_bridge_listener { - sys_snode_t node; - struct k_fifo pkt_queue; + /* Is the interface enabled or not */ + bool status : 1; }; /** @endcond */ @@ -75,77 +72,32 @@ struct eth_bridge_listener { * @brief Add an Ethernet network interface to a bridge * * This adds a network interface to a bridge. The interface is then put - * into promiscuous mode, all packets received by this interface are sent - * to the bridge, and any other packets sent to the bridge (with some - * exceptions) are transmitted via this interface. - * - * For transmission from the bridge to occur via this interface, it is - * necessary to enable TX mode with eth_bridge_iface_tx(). TX mode is - * initially disabled. + * into promiscuous mode. After more than one Ethernet interfaces are + * added to the bridge interface, the bridge interface is setup. + * After the setup is done, the bridge interface can be brought up so + * that it can start bridging L2 traffic. * - * Once an interface is added to a bridge, all its incoming traffic is - * diverted to the bridge. However, packets sent out with net_if_queue_tx() - * via this interface are not subjected to the bridge. - * - * @param br A pointer to an initialized bridge object + * @param br A pointer to a bridge interface * @param iface Interface to add * * @return 0 if OK, negative error code otherwise. */ -int eth_bridge_iface_add(struct eth_bridge *br, struct net_if *iface); +int eth_bridge_iface_add(struct net_if *br, struct net_if *iface); /** - * @brief Remove an Ethernet network interface from a bridge + * @brief Remove an Ethernet network interface from a bridge. * - * @param br A pointer to an initialized bridge object - * @param iface Interface to remove + * If the bridge interface setup has only one Ethernet interface left + * after this function call, the bridge is disabled as it cannot bridge + * the L2 traffic any more. The bridge interface is left in UP state + * if this case. * - * @return 0 if OK, negative error code otherwise. - */ -int eth_bridge_iface_remove(struct eth_bridge *br, struct net_if *iface); - -/** - * @brief Enable/disable transmission mode for a bridged interface - * - * When TX mode is off, the interface may receive packets and send them to - * the bridge but no packets coming from the bridge will be sent through this - * interface. When TX mode is on, both incoming and outgoing packets are - * allowed. - * - * @param iface Interface to configure - * @param allow true to activate TX mode, false otherwise - * - * @return 0 if OK, negative error code otherwise. - */ -int eth_bridge_iface_allow_tx(struct net_if *iface, bool allow); - -/** - * @brief Add (register) a listener to the bridge - * - * This lets a software listener register a pointer to a provided FIFO for - * receiving packets sent to the bridge. The listener is responsible for - * emptying the FIFO with k_fifo_get() which will return a struct net_pkt - * pointer, and releasing the packet with net_pkt_unref() when done with it. - * - * The listener wishing not to receive any more packets should simply - * unregister itself with eth_bridge_listener_remove(). - * - * @param br A pointer to an initialized bridge object - * @param l A pointer to an initialized listener instance. - * - * @return 0 if OK, negative error code otherwise. - */ -int eth_bridge_listener_add(struct eth_bridge *br, struct eth_bridge_listener *l); - -/** - * @brief Remove (unregister) a listener from the bridge - * - * @param br A pointer to an initialized bridge object - * @param l A pointer to the listener instance to be removed. + * @param br A pointer to a bridge interface + * @param iface Interface to remove * * @return 0 if OK, negative error code otherwise. */ -int eth_bridge_listener_remove(struct eth_bridge *br, struct eth_bridge_listener *l); +int eth_bridge_iface_remove(struct net_if *br, struct net_if *iface); /** * @brief Get bridge index according to pointer @@ -154,28 +106,28 @@ int eth_bridge_listener_remove(struct eth_bridge *br, struct eth_bridge_listener * * @return Bridge index */ -int eth_bridge_get_index(struct eth_bridge *br); +int eth_bridge_get_index(struct net_if *br); /** * @brief Get bridge instance according to index * * @param index Bridge instance index * - * @return Pointer to bridge instance or NULL if not found. + * @return Pointer to bridge interface or NULL if not found. */ -struct eth_bridge *eth_bridge_get_by_index(int index); +struct net_if *eth_bridge_get_by_index(int index); /** * @typedef eth_bridge_cb_t * @brief Callback used while iterating over bridge instances * - * @param br Pointer to bridge instance + * @param br Pointer to bridge context instance * @param user_data User supplied data */ -typedef void (*eth_bridge_cb_t)(struct eth_bridge *br, void *user_data); +typedef void (*eth_bridge_cb_t)(struct eth_bridge_iface_context *br, void *user_data); /** - * @brief Go through all the bridge instances in order to get + * @brief Go through all the bridge context instances in order to get * information about them. This is mainly useful in * net-shell to print data about currently active bridges. * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet_mgmt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet_mgmt.h index ae339b68..d92f39bc 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet_mgmt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet_mgmt.h @@ -22,6 +22,8 @@ extern "C" { /** * @brief Ethernet library * @defgroup ethernet_mgmt Ethernet Library + * @since 1.12 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet_vlan.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet_vlan.h index 3a8a2f5c..ba969954 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet_vlan.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ethernet_vlan.h @@ -16,6 +16,8 @@ /** * @brief VLAN definitions and helpers * @defgroup vlan_api Virtual LAN definitions and helpers + * @since 1.12 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/gptp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/gptp.h index 488583e4..87533e8b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/gptp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/gptp.h @@ -16,6 +16,8 @@ /** * @brief generic Precision Time Protocol (gPTP) support * @defgroup gptp gPTP support + * @since 1.13 + * @version 0.1.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/hdlc_rcp_if/hdlc_rcp_if.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/hdlc_rcp_if/hdlc_rcp_if.h new file mode 100644 index 00000000..d26bf12b --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/hdlc_rcp_if/hdlc_rcp_if.h @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2024, NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file + * @brief Public APIs of HDLC RCP communication Interface + * + * This file provide the HDLC APIs to be used by an RCP host + */ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief OT RCP HDLC RX callback function. + * + * @note This function is called in the radio spinel HDLC level + */ +typedef void (*hdlc_rx_callback_t)(uint8_t *data, uint16_t len, void *param); + +/** HDLC interface configuration data. */ +struct hdlc_api { + /** + * @brief HDLC interface API + */ + struct net_if_api iface_api; + + /** + * @brief Register the Spinel HDLC RX callback. + * + * @param hdlc_rx_callback pointer to the spinel HDLC RX callback + * @param param pointer to the spinel HDLC interface + * + * @retval 0 The callback was successfully registered. + * @retval -EIO The callback could not be registered. + */ + int (*register_rx_cb)(hdlc_rx_callback_t hdlc_rx_callback, void *param); + + /** + * @brief Transmit a HDLC frame + * + * + * @param frame pointer to the HDLC frame to be transmitted. + * @param length length of the HDLC frame to be transmitted. + + * @retval 0 The frame was successfully sent. + * @retval -EIO The frame could not be sent due to some unspecified + * interface error (e.g. the interface being busy). + */ + int (*send)(const uint8_t *frame, uint16_t length); + + /** + * @brief Deinitialize the device. + * + * @param none + * + * @retval 0 The interface was successfully stopped. + * @retval -EIO The interface could not be stopped. + */ + int (*deinit)(void); +}; + +/* Make sure that the interface API is properly setup inside + * HDLC interface API struct (it is the first one). + */ +BUILD_ASSERT(offsetof(struct hdlc_api, iface_api) == 0); + +#ifdef __cplusplus +} +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/hostname.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/hostname.h index 4e801ffb..f187427a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/hostname.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/hostname.h @@ -18,6 +18,8 @@ extern "C" { /** * @brief Network hostname configuration library * @defgroup net_hostname Network Hostname Library + * @since 1.10 + * @version 0.8.0 * @ingroup networking * @{ */ @@ -92,11 +94,12 @@ static inline void net_hostname_init(void) /** * @brief Set the device hostname postfix * - * @details Set the device hostname to some value. This is only used if + * @details Convert the hostname postfix to hexadecimal value and set the + * device hostname with the converted value. This is only used if * CONFIG_NET_HOSTNAME_UNIQUE is set. * * @param hostname_postfix Usually link address. The function will convert this - * to a string. + * to a hexadecimal string. * @param postfix_len Length of the hostname_postfix array. * * @return 0 if ok, <0 if error @@ -114,6 +117,33 @@ static inline int net_hostname_set_postfix(const uint8_t *hostname_postfix, } #endif /* CONFIG_NET_HOSTNAME_UNIQUE */ +/** + * @brief Set the postfix string for the network hostname. + * + * @details Set the hostname postfix string for the network hostname as is, without any conversion. + * This is only used if CONFIG_NET_HOSTNAME_UNIQUE is set. The function checks if the combined + * length of the default hostname (defined by CONFIG_NET_HOSTNAME) and the postfix does not exceed + * NET_HOSTNAME_MAX_LEN. If the postfix is too long, the function returns an + * error. + * + * @param hostname_postfix Pointer to the postfix string to be appended to the network hostname. + * @param postfix_len Length of the hostname_postfix array. + * + * @return 0 if ok, <0 if error + */ +#if defined(CONFIG_NET_HOSTNAME_UNIQUE) +int net_hostname_set_postfix_str(const uint8_t *hostname_postfix, + int postfix_len); +#else +static inline int net_hostname_set_postfix_str(const uint8_t *hostname_postfix, + int postfix_len) +{ + ARG_UNUSED(hostname_postfix); + ARG_UNUSED(postfix_len); + return -EMSGSIZE; +} +#endif /* CONFIG_NET_HOSTNAME_UNIQUE */ + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/hpack.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/hpack.h index 0a85cf7c..e9d75ce9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/hpack.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/hpack.h @@ -18,6 +18,8 @@ /** * @brief HTTP HPACK * @defgroup http_hpack HTTP HPACK + * @since 3.7 + * @version 0.1.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/method.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/method.h index 30f4aaee..9bcad986 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/method.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/method.h @@ -14,6 +14,8 @@ /** * @brief HTTP request methods * @defgroup http_methods HTTP request methods + * @since 3.3 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/server.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/server.h index 88ca9d27..4cb40e52 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/server.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/server.h @@ -14,6 +14,8 @@ * @brief HTTP server API * * @defgroup http_server HTTP server API + * @since 3.7 + * @version 0.1.0 * @ingroup networking * @{ */ @@ -23,7 +25,9 @@ #include #include #include +#include #include +#include #ifdef __cplusplus extern "C" { @@ -36,17 +40,22 @@ extern "C" { #define HTTP_SERVER_MAX_STREAMS CONFIG_HTTP_SERVER_MAX_STREAMS #define HTTP_SERVER_MAX_CONTENT_TYPE_LEN CONFIG_HTTP_SERVER_MAX_CONTENT_TYPE_LENGTH #define HTTP_SERVER_MAX_URL_LENGTH CONFIG_HTTP_SERVER_MAX_URL_LENGTH +#define HTTP_SERVER_MAX_HEADER_LEN CONFIG_HTTP_SERVER_MAX_HEADER_LEN #else #define HTTP_SERVER_CLIENT_BUFFER_SIZE 0 #define HTTP_SERVER_MAX_STREAMS 0 #define HTTP_SERVER_MAX_CONTENT_TYPE_LEN 0 #define HTTP_SERVER_MAX_URL_LENGTH 0 +#define HTTP_SERVER_MAX_HEADER_LEN 0 #endif -/* Maximum header field name / value length. This is only used to detect Upgrade and - * websocket header fields and values in the http1 server so the value is quite short. - */ -#define HTTP_SERVER_MAX_HEADER_LEN 32 +#if defined(CONFIG_HTTP_SERVER_CAPTURE_HEADERS) +#define HTTP_SERVER_CAPTURE_HEADER_BUFFER_SIZE CONFIG_HTTP_SERVER_CAPTURE_HEADER_BUFFER_SIZE +#define HTTP_SERVER_CAPTURE_HEADER_COUNT CONFIG_HTTP_SERVER_CAPTURE_HEADER_COUNT +#else +#define HTTP_SERVER_CAPTURE_HEADER_BUFFER_SIZE 0 +#define HTTP_SERVER_CAPTURE_HEADER_COUNT 0 +#endif #define HTTP2_PREFACE "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" @@ -59,6 +68,9 @@ enum http_resource_type { /** Static resource, cannot be modified on runtime. */ HTTP_RESOURCE_TYPE_STATIC, + /** serves static gzipped files from a filesystem */ + HTTP_RESOURCE_TYPE_STATIC_FS, + /** Dynamic resource, server interacts with the application via registered * @ref http_resource_dynamic_cb_t. */ @@ -115,6 +127,37 @@ struct http_resource_detail_static { BUILD_ASSERT(offsetof(struct http_resource_detail_static, common) == 0); /** @endcond */ +/** + * @brief Representation of a static filesystem server resource. + */ +struct http_resource_detail_static_fs { + /** Common resource details. */ + struct http_resource_detail common; + + /** Path in the local filesystem */ + const char *fs_path; +}; + +/** @cond INTERNAL_HIDDEN */ +/* Make sure that the common is the first in the struct. */ +BUILD_ASSERT(offsetof(struct http_resource_detail_static_fs, common) == 0); +/** @endcond */ + +struct http_content_type { + const char *extension; + size_t extension_len; + const char *content_type; +}; + +#define HTTP_SERVER_CONTENT_TYPE(_extension, _content_type) \ + const STRUCT_SECTION_ITERABLE(http_content_type, _extension) = { \ + .extension = STRINGIFY(_extension), \ + .extension_len = sizeof(STRINGIFY(_extension)) - 1, \ + .content_type = _content_type, \ + }; + +#define HTTP_SERVER_CONTENT_TYPE_FOREACH(_it) STRUCT_SECTION_FOREACH(http_content_type, _it) + struct http_client_ctx; /** Indicates the status of the currently processed piece of data. */ @@ -127,6 +170,38 @@ enum http_data_status { HTTP_SERVER_DATA_FINAL = 1, }; +/** @brief Status of captured request headers */ +enum http_header_status { + HTTP_HEADER_STATUS_OK, /**< All available headers were successfully captured. */ + HTTP_HEADER_STATUS_DROPPED, /**< One or more headers were dropped due to lack of space. */ + HTTP_HEADER_STATUS_NONE, /**< No header status is available. */ +}; + +/** @brief HTTP header representation */ +struct http_header { + const char *name; /**< Pointer to header name NULL-terminated string. */ + const char *value; /**< Pointer to header value NULL-terminated string. */ +}; + +/** @brief HTTP request context */ +struct http_request_ctx { + uint8_t *data; /**< HTTP request data */ + size_t data_len; /**< Length of HTTP request data */ + struct http_header *headers; /**< Array of HTTP request headers */ + size_t header_count; /**< Array length of HTTP request headers */ + enum http_header_status headers_status; /**< Status of HTTP request headers */ +}; + +/** @brief HTTP response context */ +struct http_response_ctx { + enum http_status status; /**< HTTP status code to include in response */ + const struct http_header *headers; /**< Array of HTTP headers */ + size_t header_count; /**< Length of headers array */ + const uint8_t *body; /**< Pointer to body data */ + size_t body_len; /**< Length of body data */ + bool final_chunk; /**< Flag set to true when the application has no more data to send */ +}; + /** * @typedef http_resource_dynamic_cb_t * @brief Callback used when data is received. Data to be sent to client @@ -134,19 +209,17 @@ enum http_data_status { * * @param client HTTP context information for this client connection. * @param status HTTP data status, indicate whether more data is expected or not. - * @param data_buffer Data received. - * @param data_len Amount of data received. + * @param request_ctx Request context structure containing HTTP request data that was received. + * @param response_ctx Response context structure for application to populate with response data. * @param user_data User specified data. * - * @return >0 amount of data to be sent to client, let server to call this - * function again when new data is received. - * 0 nothing to sent to client, close the connection + * @return 0 success, server can send any response data provided in the response_ctx. * <0 error, close the connection. */ typedef int (*http_resource_dynamic_cb_t)(struct http_client_ctx *client, enum http_data_status status, - uint8_t *data_buffer, - size_t data_len, + const struct http_request_ctx *request_ctx, + struct http_response_ctx *response_ctx, void *user_data); /** @@ -161,14 +234,6 @@ struct http_resource_detail_dynamic { */ http_resource_dynamic_cb_t cb; - /** Data buffer used to exchanged data between server and the, - * application. - */ - uint8_t *data_buffer; - - /** Length of the data in the data buffer. */ - size_t data_buffer_len; - /** A pointer to the client currently processing resource, used to * prevent concurrent access to the resource from multiple clients. */ @@ -277,6 +342,9 @@ struct http2_stream_ctx { enum http2_stream_state stream_state; /**< Stream state. */ int window_size; /**< Stream-level window size. */ + /** Currently processed resource detail. */ + struct http_resource_detail *current_detail; + /** Flag indicating that headers were sent in the reply. */ bool headers_sent : 1; @@ -293,6 +361,37 @@ struct http2_frame { uint8_t padding_len; /**< Frame padding length. */ }; +/** @cond INTERNAL_HIDDEN */ +/** @brief Context for capturing HTTP headers */ +struct http_header_capture_ctx { + /** Buffer for HTTP headers captured for application use */ + unsigned char buffer[HTTP_SERVER_CAPTURE_HEADER_BUFFER_SIZE]; + + /** Descriptor of each captured HTTP header */ + struct http_header headers[HTTP_SERVER_CAPTURE_HEADER_COUNT]; + + /** Status of captured headers */ + enum http_header_status status; + + /** Number of headers captured */ + size_t count; + + /** Current position in buffer */ + size_t cursor; + + /** The HTTP2 stream associated with the current headers */ + struct http2_stream_ctx *current_stream; + + /** The next HTTP header value should be stored */ + bool store_next_value; +}; +/** @endcond */ + +/** @brief HTTP header name representation */ +struct http_header_name { + const char *name; /**< Pointer to header name NULL-terminated string. */ +}; + /** * @brief Representation of an HTTP client connected to the server. */ @@ -336,6 +435,9 @@ struct http_client_ctx { /** HTTP/1 parser context. */ struct http_parser parser; + /** Header capture context */ + struct http_header_capture_ctx header_capture_ctx; + /** Request URL. */ unsigned char url_buffer[HTTP_SERVER_MAX_URL_LENGTH]; @@ -391,6 +493,21 @@ struct http_client_ctx { bool expect_continuation : 1; }; +/** + * @brief Register an HTTP request header to be captured by the server + * + * @param _id variable name for the header capture instance + * @param _header header to be captured, as literal string + */ +#define HTTP_SERVER_REGISTER_HEADER_CAPTURE(_id, _header) \ + BUILD_ASSERT(sizeof(_header) <= CONFIG_HTTP_SERVER_MAX_HEADER_LEN, \ + "Header is too long to be captured, try increasing " \ + "CONFIG_HTTP_SERVER_MAX_HEADER_LEN"); \ + static const char *const _id##_str = _header; \ + static const STRUCT_SECTION_ITERABLE(http_header_name, _id) = { \ + .name = _id##_str, \ + } + /** @brief Start the HTTP2 server. * * The server runs in a background thread. Once started, the server will create diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/service.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/service.h index e541c768..6a836b73 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/service.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/service.h @@ -13,6 +13,8 @@ * @brief HTTP service API * * @defgroup http_service HTTP service API + * @since 3.4 + * @version 0.1.0 * @ingroup networking * @{ */ @@ -78,7 +80,7 @@ struct http_service_desc { #define __z_http_service_define(_name, _host, _port, _concurrent, _backlog, _detail, _res_begin, \ _res_end, ...) \ - static const STRUCT_SECTION_ITERABLE(http_service_desc, _name) = { \ + const STRUCT_SECTION_ITERABLE(http_service_desc, _name) = { \ .host = _host, \ .port = (uint16_t *)(_port), \ .detail = (void *)(_detail), \ @@ -99,8 +101,9 @@ struct http_service_desc { /** * @brief Define an HTTP service without static resources. * - * @note The @p _host parameter must be non-`NULL`. It is used to specify an IP address either in - * IPv4 or IPv6 format a fully-qualified hostname or a virtual host. + * @note The @p _host parameter is used to specify an IP address either in + * IPv4 or IPv6 format a fully-qualified hostname or a virtual host. If left NULL, the listening + * port will listen on all addresses. * * @note The @p _port parameter must be non-`NULL`. It points to a location that specifies the port * number to use for the service. If the specified port number is zero, then an ephemeral port @@ -120,8 +123,9 @@ struct http_service_desc { /** * @brief Define an HTTPS service without static resources. * - * @note The @p _host parameter must be non-`NULL`. It is used to specify an IP address either in - * IPv4 or IPv6 format a fully-qualified hostname or a virtual host. + * @note The @p _host parameter is used to specify an IP address either in + * IPv4 or IPv6 format a fully-qualified hostname or a virtual host. If left NULL, the listening + * port will listen on all addresses. * * @note The @p _port parameter must be non-`NULL`. It points to a location that specifies the port * number to use for the service. If the specified port number is zero, then an ephemeral port @@ -147,8 +151,9 @@ struct http_service_desc { /** * @brief Define an HTTP service with static resources. * - * @note The @p _host parameter must be non-`NULL`. It is used to specify an IP address either in - * IPv4 or IPv6 format a fully-qualified hostname or a virtual host. + * @note The @p _host parameter is used to specify an IP address either in + * IPv4 or IPv6 format a fully-qualified hostname or a virtual host. If left NULL, the listening + * port will listen on all addresses. * * @note The @p _port parameter must be non-`NULL`. It points to a location that specifies the port * number to use for the service. If the specified port number is zero, then an ephemeral port @@ -172,8 +177,9 @@ struct http_service_desc { /** * @brief Define an HTTPS service with static resources. * - * @note The @p _host parameter must be non-`NULL`. It is used to specify an IP address either in - * IPv4 or IPv6 format a fully-qualified hostname or a virtual host. + * @note The @p _host parameter is used to specify an IP address either in + * IPv4 or IPv6 format a fully-qualified hostname or a virtual host. If left NULL, the listening + * port will listen on all addresses. * * @note The @p _port parameter must be non-`NULL`. It points to a location that specifies the port * number to use for the service. If the specified port number is zero, then an ephemeral port diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/status.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/status.h index 17b3394a..6a136a17 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/status.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/http/status.h @@ -14,6 +14,8 @@ /** * @brief HTTP response status codes * @defgroup http_status_codes HTTP response status codes + * @since 3.3 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/icmp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/icmp.h index 6d6a6b2c..9ada9880 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/icmp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/icmp.h @@ -9,6 +9,8 @@ * @brief ICMP sending and receiving. * * @defgroup icmp Send and receive IPv4 or IPv6 ICMP Echo Request messages. + * @since 3.5 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_ie.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_ie.h index a2378a38..ac520e65 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_ie.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_ie.h @@ -23,7 +23,7 @@ #ifndef ZEPHYR_INCLUDE_NET_IEEE802154_IE_H_ #define ZEPHYR_INCLUDE_NET_IEEE802154_IE_H_ -#include +#include #include /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_mgmt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_mgmt.h index 59372423..8996014d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_mgmt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_mgmt.h @@ -330,6 +330,13 @@ struct ieee802154_req_params { uint8_t len; /** Link quality information, between 0 and 255 */ uint8_t lqi; + /** Flag if association is permitted by the coordinator */ + bool association_permitted; + + /** Additional payload of the beacon if any.*/ + uint8_t *beacon_payload; + /** Length of the additional payload. */ + size_t beacon_payload_len; }; /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_pkt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_pkt.h index 3270f994..b51db139 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_pkt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_pkt.h @@ -59,6 +59,16 @@ struct net_pkt_cb_ieee802154 { */ uint8_t rssi; }; + struct { +#if defined(CONFIG_IEEE802154_SELECTIVE_TXCHANNEL) + /* The channel used for timed transmissions. + * + * Please refer to `ieee802154_radio_api::tx` documentation for + * details. + */ + uint8_t txchannel; +#endif /* CONFIG_IEEE802154_SELECTIVE_TXCHANNEL */ + }; }; /* Flags */ @@ -179,6 +189,18 @@ static inline void net_pkt_set_ieee802154_rssi_dbm(struct net_pkt *pkt, int16_t CODE_UNREACHABLE; } +#if defined(CONFIG_IEEE802154_SELECTIVE_TXCHANNEL) +static inline uint8_t net_pkt_ieee802154_txchannel(struct net_pkt *pkt) +{ + return net_pkt_cb_ieee802154(pkt)->txchannel; +} + +static inline void net_pkt_set_ieee802154_txchannel(struct net_pkt *pkt, uint8_t channel) +{ + net_pkt_cb_ieee802154(pkt)->txchannel = channel; +} +#endif /* CONFIG_IEEE802154_SELECTIVE_TXCHANNEL */ + static inline bool net_pkt_ieee802154_ack_fpb(struct net_pkt *pkt) { return net_pkt_cb_ieee802154(pkt)->ack_fpb; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_radio.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_radio.h index 10a1922f..e2ab96ff 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_radio.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_radio.h @@ -520,13 +520,26 @@ enum ieee802154_hw_caps { /** RxOnWhenIdle handling supported */ IEEE802154_RX_ON_WHEN_IDLE = BIT(12), + /** Support for timed transmissions on selective channel. + * + * This capability informs that transmissions with modes + * @ref IEEE802154_TX_MODE_TXTIME and @ref IEEE802154_TX_MODE_TXTIME_CCA support + * scheduling of timed transmissions on selective tx channel. + * The driver MAY have this capability only if the Kconfig option + * `CONFIG_IEEE802154_SELECTIVE_TXCHANNEL` is set, otherwise the driver MUST + * NOT have this capability. + * + * Please refer to the `ieee802154_radio_api::tx` documentation for details. + */ + IEEE802154_HW_SELECTIVE_TXCHANNEL = BIT(13), + /* Note: Update also IEEE802154_HW_CAPS_BITS_COMMON_COUNT when changing * the ieee802154_hw_caps type. */ }; /** @brief Number of bits used by ieee802154_hw_caps type. */ -#define IEEE802154_HW_CAPS_BITS_COMMON_COUNT (13) +#define IEEE802154_HW_CAPS_BITS_COMMON_COUNT (14) /** @brief This and higher values are specific to the protocol- or driver-specific extensions. */ #define IEEE802154_HW_CAPS_BITS_PRIV_START IEEE802154_HW_CAPS_BITS_COMMON_COUNT @@ -625,6 +638,8 @@ enum ieee802154_tx_mode { * Transmit packet in the future, at the specified time, no CCA. * * @note requires IEEE802154_HW_TXTIME capability. + * + * @note capability IEEE802154_HW_SELECTIVE_TXCHANNEL may apply. */ IEEE802154_TX_MODE_TXTIME, @@ -635,6 +650,8 @@ enum ieee802154_tx_mode { * * @note Required for Thread 1.2 Coordinated Sampled Listening feature * (see Thread specification 1.2.0, ch. 3.2.6.3). + * + * @note capability IEEE802154_HW_SELECTIVE_TXCHANNEL may apply. */ IEEE802154_TX_MODE_TXTIME_CCA, @@ -1657,6 +1674,23 @@ struct ieee802154_radio_api { * considerable idle waiting time. SHALL return `-ENETDOWN` unless the * interface is "UP". * + * @note The transmission occurs on the radio channel set by the call to + * `set_channel()`. However, if the `CONFIG_IEEE802154_SELECTIVE_TXCHANNEL` + * is set and the driver has the capability `IEEE802154_HW_SELECTIVE_TXCHANNEL` + * then the transmissions requested with `mode` IEEE802154_TX_MODE_TXTIME + * or `IEEE802154_TX_MODE_TXTIME_CCA` SHALL use the radio channel + * returned by `net_pkt_ieee802154_txchannel()` to transmit the packet + * and receive an ACK on that channel if the frame requested it. After + * the operation the driver should return to the channel set previously by + * `set_channel()` call. + * It is responsibility of an upper layer to set the required radio channel + * for the packet by a call to `net_pkt_set_ieee802154_txchannel()`. + * This feature allows CSL transmissions as stated in IEEE 802.15.4-2020 + * chapter 6.12.2.7 CSL over multiple channels. This feature allows to perform + * a switch of the radio channel as late as possible before transmission without + * interrupting possible reception that could occur if separate `set_channel()` + * was called. + * * @param dev pointer to IEEE 802.15.4 driver device * @param mode the transmission mode, some of which require specific * offloading capabilities. @@ -1731,6 +1765,7 @@ struct ieee802154_radio_api { */ int (*stop)(const struct device *dev); +#if defined(CONFIG_IEEE802154_CARRIER_FUNCTIONS) /** * @brief Start continuous carrier wave transmission. * @@ -1752,6 +1787,30 @@ struct ieee802154_radio_api { */ int (*continuous_carrier)(const struct device *dev); + /** + * @brief Start modulated carrier wave transmission. + * + * @details When the radio is emitting modulated carrier signals, it + * blocks all transmissions on the selected channel. + * This function is to be called only during radio + * tests. Do not use it during normal device operation. + * + * @note Implementations MAY **sleep** and will usually NOT be + * **isr-ok**. MAY be called in any interface state once the driver is + * fully initialized ("ready"). + * + * @param dev pointer to IEEE 802.15.4 driver device + * @param data Pointer to a buffer to modulate the carrier with. + * The first byte is the data length. + * + * @retval 0 modulated carrier wave transmission started + * @retval -EALREADY The driver was already in "TESTING" state and + * emitting a modulated carrier. + * @retval -EIO not started + */ + int (*modulated_carrier)(const struct device *dev, const uint8_t *data); +#endif /* CONFIG_IEEE802154_CARRIER_FUNCTIONS */ + /** * @brief Set or update driver configuration. * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_radio_openthread.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_radio_openthread.h index e45bbc6b..0890d100 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_radio_openthread.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ieee802154_radio_openthread.h @@ -14,6 +14,9 @@ #include +/** Bit number starting the OpenThread specific capabilities of ieee802154 driver. */ +#define IEEE802154_OPENTHREAD_HW_CAPS_BITS_START IEEE802154_HW_CAPS_BITS_PRIV_START + /** * OpenThread specific capabilities of ieee802154 driver. * This type extends @ref ieee802154_hw_caps. @@ -22,7 +25,26 @@ enum ieee802154_openthread_hw_caps { /** Capability to transmit with @ref IEEE802154_OPENTHREAD_TX_MODE_TXTIME_MULTIPLE_CCA * mode. */ - IEEE802154_OPENTHREAD_HW_MULTIPLE_CCA = BIT(IEEE802154_HW_CAPS_BITS_PRIV_START), + IEEE802154_OPENTHREAD_HW_MULTIPLE_CCA = BIT(IEEE802154_OPENTHREAD_HW_CAPS_BITS_START), + + /** Capability to support CST-related features. + * + * The CST-related features are described by "Specification changes for Thread-in-Mobile" + * Draft version 1, July 11, 2024. The CST allows to transmit a frame with CST Phase and + * CST Period IEs as described by chapter 4.6.6.1 of the Thread-in-Mobile specification + * change. The upper layer implementation (OpenThread) is responsible for preparing + * a frame to be transmitted that contains placeholders where the CST Phase and CST Period + * are to be placed. The implementation of a driver is responsible for injecting + * correct value for CST Phase IE and CST Period IE based on configuration parameters + * @ref IEEE802154_OPENTHREAD_CONFIG_CST_PERIOD and + * @ref IEEE802154_OPENTHREAD_CONFIG_EXPECTED_TX_TIME. + * + * @note The CST transmission in its design is very similar to CSL reception. + * In the CSL reception the receiver side informs its peer about the moment in time + * when it will be able to receive. In the CST transmission the transmitter side informs + * its peer about the moment in time when the next transmission will occur. + */ + IEEE802154_OPENTHREAD_HW_CST = BIT(IEEE802154_OPENTHREAD_HW_CAPS_BITS_START + 1), }; /** @brief TX mode */ @@ -64,6 +86,9 @@ enum ieee802154_openthread_tx_mode { * section 11.3, table 11-2). * * Requires IEEE802154_OPENTHREAD_HW_MULTIPLE_CCA capability. + * + * @note Capability @ref IEEE802154_HW_SELECTIVE_TXCHANNEL applies as for + * @ref IEEE802154_TX_MODE_TXTIME_CCA. */ IEEE802154_OPENTHREAD_TX_MODE_TXTIME_MULTIPLE_CCA = IEEE802154_TX_MODE_PRIV_START }; @@ -77,7 +102,33 @@ enum ieee802154_openthread_config_type { * @ref IEEE802154_OPENTHREAD_TX_MODE_TXTIME_MULTIPLE_CCA. * Requires IEEE802154_OPENTHREAD_HW_MULTIPLE_CCA capability. */ - IEEE802154_OPENTHREAD_CONFIG_MAX_EXTRA_CCA_ATTEMPTS = IEEE802154_CONFIG_PRIV_START + IEEE802154_OPENTHREAD_CONFIG_MAX_EXTRA_CCA_ATTEMPTS = IEEE802154_CONFIG_PRIV_START, + + /** Configures the CST period of a device. + * + * When a frame containing CST Period IE is about to be transmitted by a driver, + * the driver SHALL inject the CST Period value to the CST Period IE based on + * the value of this configuration parameter. + * + * Requires IEEE802154_OPENTHREAD_HW_CST capability. + */ + IEEE802154_OPENTHREAD_CONFIG_CST_PERIOD, + + /** Configure a point in time at which a TX frame is expected to be transmitted. + * + * When a frame containing CST Phase IE is about to be transmitted by a driver, + * the driver SHALL inject the CST Phase IE value to the CST Phase IE based on + * the value of this configuration parameter parameter, the time of transmission + * and the CST Period value. + * + * This parameter configures the nanosecond resolution timepoint relative to + * the network subsystem's local clock at which a TX frame's end of SFD + * (i.e. equivalently its end of SHR, start of PHR) is expected to be transmitted + * at the local antenna. + * + * Requires IEEE802154_OPENTHREAD_HW_CST capability. + */ + IEEE802154_OPENTHREAD_CONFIG_EXPECTED_TX_TIME, }; /** @@ -103,6 +154,18 @@ struct ieee802154_openthread_config { * requested with mode @ref IEEE802154_OPENTHREAD_TX_MODE_TXTIME_MULTIPLE_CCA. */ uint8_t max_extra_cca_attempts; + + /** ``IEEE802154_OPENTHREAD_CONFIG_CST_PERIOD`` + * + * The CST period (in CPU byte order). + */ + uint32_t cst_period; + + /** ``IEEE802154_OPENTHREAD_CONFIG_EXPECTED_TX_TIME`` + * + * A point in time at which a TX frame is expected to be transmitted. + */ + net_time_t expected_tx_time; }; }; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/igmp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/igmp.h index 7dbfd78e..099bbda3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/igmp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/igmp.h @@ -14,6 +14,8 @@ /** * @brief IGMP (Internet Group Management Protocol) * @defgroup igmp IGMP API + * @since 2.6 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/lldp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/lldp.h index 9f91a0c7..0d638f27 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/lldp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/lldp.h @@ -16,6 +16,8 @@ /** * @brief LLDP definitions and helpers * @defgroup lldp Link Layer Discovery Protocol definitions and helpers + * @since 1.13 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/lwm2m.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/lwm2m.h index 9dcdb142..4aa81a8b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/lwm2m.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/lwm2m.h @@ -33,6 +33,10 @@ #include #include +#ifdef __cplusplus +extern "C" { +#endif + /** * @name LwM2M Objects managed by OMA for LwM2M tech specification. * Objects in this range have IDs from 0 to 1023. @@ -126,7 +130,49 @@ typedef void (*lwm2m_observe_cb_t)(enum lwm2m_observe_event event, struct lwm2m_ struct lwm2m_ctx; -enum lwm2m_rd_client_event; + +/** + * @brief LwM2M RD client events + * + * LwM2M client events are passed back to the event_cb function in + * lwm2m_rd_client_start() + */ +enum lwm2m_rd_client_event { + /** Invalid event */ + LWM2M_RD_CLIENT_EVENT_NONE, + /** Bootstrap registration failure */ + LWM2M_RD_CLIENT_EVENT_BOOTSTRAP_REG_FAILURE, + /** Bootstrap registration complete */ + LWM2M_RD_CLIENT_EVENT_BOOTSTRAP_REG_COMPLETE, + /** Bootstrap transfer complete */ + LWM2M_RD_CLIENT_EVENT_BOOTSTRAP_TRANSFER_COMPLETE, + /** Registration failure */ + LWM2M_RD_CLIENT_EVENT_REGISTRATION_FAILURE, + /** Registration complete */ + LWM2M_RD_CLIENT_EVENT_REGISTRATION_COMPLETE, + /** Registration timeout */ + LWM2M_RD_CLIENT_EVENT_REG_TIMEOUT, + /** Registration update complete */ + LWM2M_RD_CLIENT_EVENT_REG_UPDATE_COMPLETE, + /** De-registration failure */ + LWM2M_RD_CLIENT_EVENT_DEREGISTER_FAILURE, + /** Disconnected */ + LWM2M_RD_CLIENT_EVENT_DISCONNECT, + /** Queue mode RX off */ + LWM2M_RD_CLIENT_EVENT_QUEUE_MODE_RX_OFF, + /** Engine suspended */ + LWM2M_RD_CLIENT_EVENT_ENGINE_SUSPENDED, + /** Network error */ + LWM2M_RD_CLIENT_EVENT_NETWORK_ERROR, + /** Registration update */ + LWM2M_RD_CLIENT_EVENT_REG_UPDATE, + /** De-register */ + LWM2M_RD_CLIENT_EVENT_DEREGISTER, + /** Server disabled */ + LWM2M_RD_CLIENT_EVENT_SERVER_DISABLED, +}; + + /** * @brief Asynchronous RD client event callback * @@ -136,6 +182,7 @@ enum lwm2m_rd_client_event; typedef void (*lwm2m_ctx_event_cb_t)(struct lwm2m_ctx *ctx, enum lwm2m_rd_client_event event); +typedef int (*lwm2m_set_sockopt_cb_t)(struct lwm2m_ctx *client_ctx); /** * @brief Different traffic states of the LwM2M socket. @@ -171,6 +218,7 @@ struct lwm2m_ctx { sys_slist_t queued_messages; #endif sys_slist_t observer; + struct k_mutex lock; /** @endcond */ /** A pointer to currently processed request, for internal LwM2M engine @@ -199,8 +247,6 @@ struct lwm2m_ctx { char *desthostname; /** Destination hostname length */ uint16_t desthostnamelen; - /** Flag to indicate if hostname verification is enabled */ - bool hostname_verify; /** Custom load_credentials function. * Client can set load_credentials function as a way of overriding @@ -214,7 +260,7 @@ struct lwm2m_ctx { * a callback that is called after a socket is created and before * connect. */ - int (*set_socketoptions)(struct lwm2m_ctx *client_ctx); + lwm2m_set_sockopt_cb_t set_socketoptions; /** Flag to indicate if context should use DTLS. * Enabled via the use of coaps:// protocol prefix in connection @@ -868,21 +914,6 @@ int lwm2m_set_u16(const struct lwm2m_obj_path *path, uint16_t value); */ int lwm2m_set_u32(const struct lwm2m_obj_path *path, uint32_t value); -/** - * @brief Set resource (instance) value (u64) - * - * @deprecated Unsigned 64bit value type does not exits. - * This is internally handled as a int64_t. - * Use lwm2m_set_s64() instead. - * - * @param[in] path LwM2M path as a struct - * @param[in] value u64 value - * - * @return 0 for success or negative in case of error. - */ -__deprecated -int lwm2m_set_u64(const struct lwm2m_obj_path *path, uint64_t value); - /** * @brief Set resource (instance) value (s8) * @@ -1061,21 +1092,6 @@ int lwm2m_get_u16(const struct lwm2m_obj_path *path, uint16_t *value); */ int lwm2m_get_u32(const struct lwm2m_obj_path *path, uint32_t *value); -/** - * @brief Get resource (instance) value (u64) - * - * @deprecated Unsigned 64bit value type does not exits. - * This is internally handled as a int64_t. - * Use lwm2m_get_s64() instead. - - * @param[in] path LwM2M path as a struct - * @param[out] value u64 buffer to copy data into - * - * @return 0 for success or negative in case of error. - */ -__deprecated -int lwm2m_get_u64(const struct lwm2m_obj_path *path, uint64_t *value); - /** * @brief Get resource (instance) value (s8) * @@ -1423,47 +1439,6 @@ int lwm2m_engine_start(struct lwm2m_ctx *client_ctx); */ void lwm2m_acknowledge(struct lwm2m_ctx *client_ctx); -/** - * @brief LwM2M RD client events - * - * LwM2M client events are passed back to the event_cb function in - * lwm2m_rd_client_start() - */ -enum lwm2m_rd_client_event { - /** Invalid event */ - LWM2M_RD_CLIENT_EVENT_NONE, - /** Bootstrap registration failure */ - LWM2M_RD_CLIENT_EVENT_BOOTSTRAP_REG_FAILURE, - /** Bootstrap registration complete */ - LWM2M_RD_CLIENT_EVENT_BOOTSTRAP_REG_COMPLETE, - /** Bootstrap transfer complete */ - LWM2M_RD_CLIENT_EVENT_BOOTSTRAP_TRANSFER_COMPLETE, - /** Registration failure */ - LWM2M_RD_CLIENT_EVENT_REGISTRATION_FAILURE, - /** Registration complete */ - LWM2M_RD_CLIENT_EVENT_REGISTRATION_COMPLETE, - /** Registration timeout */ - LWM2M_RD_CLIENT_EVENT_REG_TIMEOUT, - /** Registration update complete */ - LWM2M_RD_CLIENT_EVENT_REG_UPDATE_COMPLETE, - /** De-registration failure */ - LWM2M_RD_CLIENT_EVENT_DEREGISTER_FAILURE, - /** Disconnected */ - LWM2M_RD_CLIENT_EVENT_DISCONNECT, - /** Queue mode RX off */ - LWM2M_RD_CLIENT_EVENT_QUEUE_MODE_RX_OFF, - /** Engine suspended */ - LWM2M_RD_CLIENT_EVENT_ENGINE_SUSPENDED, - /** Network error */ - LWM2M_RD_CLIENT_EVENT_NETWORK_ERROR, - /** Registration update */ - LWM2M_RD_CLIENT_EVENT_REG_UPDATE, - /** De-register */ - LWM2M_RD_CLIENT_EVENT_DEREGISTER, - /** Server disabled */ - LWM2M_RD_CLIENT_EVENT_SERVER_DISABLED, -}; - /* * LwM2M RD client flags, used to configure LwM2M session. */ @@ -1648,5 +1623,20 @@ int lwm2m_security_mode(struct lwm2m_ctx *ctx); */ int lwm2m_set_default_sockopt(struct lwm2m_ctx *ctx); +/** + * @brief Set the @ref lwm2m_ctx::set_socketoptions callback for the pull context's client. + * + * This allows setting specific socket options on the socket that is used to pull + * firmware updates. The callback will be called after the pull context socket has been + * created and before it will connect. + * + * @param[in] set_sockopt_cb A callback function to set sockopts for the pull context client. + */ +void lwm2m_pull_context_set_sockopt_callback(lwm2m_set_sockopt_cb_t set_sockopt_cb); + +#ifdef __cplusplus +} +#endif + #endif /* ZEPHYR_INCLUDE_NET_LWM2M_H_ */ /**@} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/lwm2m_path.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/lwm2m_path.h index ad012c8a..568c2af0 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/lwm2m_path.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/lwm2m_path.h @@ -13,6 +13,8 @@ * @brief LwM2M path helper macros * * @defgroup lwm2m_path_helpers LwM2M path helper macros + * @since 2.5 + * @version 0.8.0 * @ingroup lwm2m_api * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mdio.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mdio.h index 6ed13c1a..07c4c6b9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mdio.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mdio.h @@ -15,6 +15,8 @@ /** * @brief Definitions for IEEE 802.3 management interface * @defgroup ethernet_mdio IEEE 802.3 management interface + * @since 3.5 + * @version 0.8.0 * @ingroup ethernet * @{ */ @@ -97,6 +99,10 @@ enum mdio_opcode { #define MDIO_PKGID1 0x000EU /** Package identifier (2) */ #define MDIO_PKGID2 0x000FU +/* PCS Register: EEE capability Register */ +#define MDIO_PCS_EEE_CAP 0x0014U +/* Auto-negotiation Register: EEE advertisement Register */ +#define MDIO_AN_EEE_ADV 0x003CU /* BASE-T1 registers */ @@ -228,6 +234,12 @@ enum mdio_opcode { /** 10BASE-T1L PCS Descrambler Status */ #define MDIO_PCS_B10L_STAT_DSCR_STAT_OK_LL BIT(2) +/* Auto-negotiation Register: EEE advertisement Register */ +/** Advertise 1000T capability */ +#define MDIO_AN_EEE_ADV_1000T BIT(2) +/** Advertise 100TX capability */ +#define MDIO_AN_EEE_ADV_100TX BIT(1) + #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mii.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mii.h index 371f1966..b57ef862 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mii.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mii.h @@ -15,6 +15,8 @@ /** * @brief Ethernet MII (media independent interface) functions * @defgroup ethernet_mii Ethernet MII Support Functions + * @since 1.7 + * @version 0.8.0 * @ingroup ethernet * @{ */ @@ -157,6 +159,15 @@ /** 1000BASE-T half-duplex capable */ #define MII_ESTAT_1000BASE_T_HALF (1 << 12) +/* MMD Access Control Register (MII_MMD_ACR) Register bit definitions */ +/** DEVAD Mask */ +#define MII_MMD_ACR_DEVAD_MASK (0x1F << 0) +/** Address Data bits */ +#define MII_MMD_ACR_ADDR (0x00 << 14) +#define MII_MMD_ACR_DATA_NO_POS_INC (0x01 << 14) +#define MII_MMD_ACR_DATA_RW_POS_INC (0x10 << 14) +#define MII_MMD_ACR_DATA_W_POS_INC (0x11 << 14) + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mld.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mld.h new file mode 100644 index 00000000..031eb03c --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mld.h @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2016 Intel Corporation + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** @file + * @brief Multicast Listener Discovery API + */ + +#ifndef ZEPHYR_INCLUDE_NET_MLD_H_ +#define ZEPHYR_INCLUDE_NET_MLD_H_ + +/** + * @brief MLD (Multicast Listener Discovery) + * @defgroup mld Multicast Listener Discovery API + * @since 1.8 + * @version 0.8.0 + * @ingroup networking + * @{ + */ + +#include + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Join a given multicast group. + * + * @param iface Network interface where join message is sent + * @param addr Multicast group to join + * + * @return 0 if joining was done, <0 otherwise. + */ +#if defined(CONFIG_NET_IPV6_MLD) +int net_ipv6_mld_join(struct net_if *iface, const struct in6_addr *addr); +#else +static inline int +net_ipv6_mld_join(struct net_if *iface, const struct in6_addr *addr) +{ + ARG_UNUSED(addr); + ARG_UNUSED(iface); + + return -ENOTSUP; +} +#endif /* CONFIG_NET_IPV6_MLD */ + +/** + * @brief Leave a given multicast group. + * + * @param iface Network interface where leave message is sent + * @param addr Multicast group to leave + * + * @return 0 if leaving is done, <0 otherwise. + */ +#if defined(CONFIG_NET_IPV6_MLD) +int net_ipv6_mld_leave(struct net_if *iface, const struct in6_addr *addr); +#else +static inline int +net_ipv6_mld_leave(struct net_if *iface, const struct in6_addr *addr) +{ + ARG_UNUSED(iface); + ARG_UNUSED(addr); + + return -ENOTSUP; +} +#endif /* CONFIG_NET_IPV6_MLD */ + +#ifdef __cplusplus +} +#endif + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_NET_MLD_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mqtt_sn.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mqtt_sn.h index 102cb5e6..cc4b042a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mqtt_sn.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/mqtt_sn.h @@ -13,6 +13,8 @@ * Targets protocol version 1.2. * * @defgroup mqtt_sn_socket MQTT-SN Client library + * @since 3.3 + * @version 0.1.0 * @ingroup networking * @{ */ @@ -22,7 +24,7 @@ #include -#include +#include #include #include @@ -73,16 +75,16 @@ enum mqtt_sn_topic_type { * MQTT-SN return codes. */ enum mqtt_sn_return_code { - MQTT_SN_CODE_ACCEPTED = 0x00, /**< Accepted */ + MQTT_SN_CODE_ACCEPTED = 0x00, /**< Accepted */ MQTT_SN_CODE_REJECTED_CONGESTION = 0x01, /**< Rejected: congestion */ - MQTT_SN_CODE_REJECTED_TOPIC_ID = 0x02, /**< Rejected: Invalid Topic ID */ - MQTT_SN_CODE_REJECTED_NOTSUP = 0x03, /**< Rejected: Not Supported */ + MQTT_SN_CODE_REJECTED_TOPIC_ID = 0x02, /**< Rejected: Invalid Topic ID */ + MQTT_SN_CODE_REJECTED_NOTSUP = 0x03, /**< Rejected: Not Supported */ }; /** @brief Abstracts memory buffers. */ struct mqtt_sn_data { const uint8_t *data; /**< Pointer to data. */ - uint16_t size; /**< Size of data, in bytes. */ + size_t size; /**< Size of data, in bytes. */ }; /** @@ -103,19 +105,22 @@ struct mqtt_sn_data { * * struct mqtt_sn_data data = MQTT_SN_DATA_BYTES(0x13, 0x37); */ -#define MQTT_SN_DATA_BYTES(...) \ - ((struct mqtt_sn_data) { (uint8_t[]){ __VA_ARGS__ }, sizeof((uint8_t[]){ __VA_ARGS__ })}) +#define MQTT_SN_DATA_BYTES(...) \ + ((struct mqtt_sn_data){(uint8_t[]){__VA_ARGS__}, sizeof((uint8_t[]){__VA_ARGS__})}) /** * Event types that can be emitted by the library. */ enum mqtt_sn_evt_type { - MQTT_SN_EVT_CONNECTED, /**< Connected to a gateway */ + MQTT_SN_EVT_CONNECTED, /**< Connected to a gateway */ MQTT_SN_EVT_DISCONNECTED, /**< Disconnected */ - MQTT_SN_EVT_ASLEEP, /**< Entered ASLEEP state */ - MQTT_SN_EVT_AWAKE, /**< Entered AWAKE state */ - MQTT_SN_EVT_PUBLISH, /**< Received a PUBLISH message */ - MQTT_SN_EVT_PINGRESP /**< Received a PINGRESP */ + MQTT_SN_EVT_ASLEEP, /**< Entered ASLEEP state */ + MQTT_SN_EVT_AWAKE, /**< Entered AWAKE state */ + MQTT_SN_EVT_PUBLISH, /**< Received a PUBLISH message */ + MQTT_SN_EVT_PINGRESP, /**< Received a PINGRESP */ + MQTT_SN_EVT_ADVERTISE, /**< Received a ADVERTISE */ + MQTT_SN_EVT_GWINFO, /**< Received a GWINFO */ + MQTT_SN_EVT_SEARCHGW /**< Received a SEARCHGW */ }; /** @@ -178,16 +183,27 @@ struct mqtt_sn_transport { void (*deinit)(struct mqtt_sn_transport *transport); /** - * Will be called by the library when it wants to send a message. + * @brief Will be called by the library when it wants to send a message. + * + * Implementations should follow sendto conventions with exceptions. + * When dest_addr == NULL, message should be broadcast with addrlen being + * the broadcast radius. This should also handle setting up/destroying + * connections as required when the address changes. + * + * @return ENOERR on connection+transmission success, Negative values + * signal errors. */ - int (*msg_send)(struct mqtt_sn_client *client, void *buf, size_t sz); + int (*sendto)(struct mqtt_sn_client *client, void *buf, size_t sz, const void *dest_addr, + size_t addrlen); /** * @brief Will be called by the library when it wants to receive a message. * - * Implementations should follow recv conventions. + * Implementations should follow recvfrom conventions with the exception + * of a NULL src_addr being a broadcast message. */ - ssize_t (*recv)(struct mqtt_sn_client *client, void *buffer, size_t length); + ssize_t (*recvfrom)(struct mqtt_sn_client *client, void *rx_buf, size_t rx_len, + void *src_addr, size_t *addrlen); /** * @brief Check if incoming data is available. @@ -213,9 +229,9 @@ struct mqtt_sn_transport_udp { /** Socket FD */ int sock; - /** Address of the gateway */ - struct sockaddr gwaddr; - socklen_t gwaddrlen; + /** Address of broadcasts */ + struct sockaddr bcaddr; + socklen_t bcaddrlen; }; #define UDP_TRANSPORT(transport) CONTAINER_OF(transport, struct mqtt_sn_transport_udp, tp) @@ -263,6 +279,9 @@ struct mqtt_sn_client { /** Buffer for incoming data */ struct net_buf_simple rx; + /** Buffer for incoming data sender address */ + struct net_buf_simple rx_addr; + /** Event callback */ mqtt_sn_evt_cb_t evt_cb; @@ -275,6 +294,9 @@ struct mqtt_sn_client { /** List of registered topics */ sys_slist_t topic; + /** List of found gateways */ + sys_slist_t gateway; + /** Current state of the MQTT-SN client */ int state; @@ -284,6 +306,15 @@ struct mqtt_sn_client { /** Number of retries for failed ping attempts */ uint8_t ping_retries; + /** Timestamp of the next SEARCHGW transmission */ + int64_t ts_searchgw; + + /** Timestamp of the next GWINFO transmission */ + int64_t ts_gwinfo; + + /** Radius of the next GWINFO transmission */ + int64_t radius_gwinfo; + /** Delayable work structure for processing MQTT-SN events */ struct k_work_delayable process_work; }; @@ -315,6 +346,29 @@ int mqtt_sn_client_init(struct mqtt_sn_client *client, const struct mqtt_sn_data */ void mqtt_sn_client_deinit(struct mqtt_sn_client *client); +/** + * @brief Manually add a Gateway, bypasing the normal search process. + * + * This function manually creates a gateway that is stored internal to the library. + * + * @param client The MQTT-SN client to connect. + * @param gw_id Single byte Gateway Identifier + * @param gw_addr Address data structure to be used by the transport layer. + * + * @return 0 or a negative error code (errno.h) indicating reason of failure. + */ +int mqtt_sn_add_gw(struct mqtt_sn_client *client, uint8_t gw_id, struct mqtt_sn_data gw_addr); + +/** + * @brief Initiate the MQTT-SN GW Search process. + * + * @param client The MQTT-SN client to connect. + * @param radius Broadcast radius for the search message. + * + * @return 0 or a negative error code (errno.h) indicating reason of failure. + */ +int mqtt_sn_search(struct mqtt_sn_client *client, uint8_t radius); + /** * @brief Connect the client. * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_config.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_config.h index 3a04bedb..088ae5b5 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_config.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_config.h @@ -22,6 +22,8 @@ extern "C" { /** * @brief Network configuration library * @defgroup net_config Network Configuration Library + * @since 1.8 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_context.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_context.h index 86d48fa1..80d84426 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_context.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_context.h @@ -17,6 +17,8 @@ /** * @brief Application network context * @defgroup net_context Application network context + * @since 1.0 + * @version 0.8.0 * @ingroup networking * @{ */ @@ -198,7 +200,7 @@ struct net_conn_handle; /** * Note that we do not store the actual source IP address in the context - * because the address is already be set in the network interface struct. + * because the address is already set in the network interface struct. * If there is no such source address there, the packet cannot be sent * anyway. This saves 12 bytes / context in IPv6. */ @@ -314,6 +316,20 @@ __net_socket struct net_context { socklen_t addrlen; } proxy; #endif +#if defined(CONFIG_NET_CONTEXT_CLAMP_PORT_RANGE) + /** Restrict local port range between these values. + * The option takes an uint32_t value with the high 16 bits + * set to the upper range bound, and the low 16 bits set to + * the lower range bound. Range bounds are inclusive. The + * 16-bit values should be in host byte order. + * The lower bound has to be less than the upper bound when + * both bounds are not zero. Otherwise, setting the option + * fails with EINVAL. + * If either bound is outside of the global local port range, + * or is zero, then that bound has no effect. + */ + uint32_t port_range; +#endif #if defined(CONFIG_NET_CONTEXT_RCVTIMEO) /** Receive timeout */ k_timeout_t rcvtimeo; @@ -360,6 +376,22 @@ __net_socket struct net_context { */ uint16_t addr_preferences; #endif +#if defined(CONFIG_NET_IPV6) || defined(CONFIG_NET_IPV4) + union { + /** + * IPv6 multicast output network interface for this context/socket. + * Only allowed for SOCK_DGRAM or SOCK_RAW type sockets. + */ + uint8_t ipv6_mcast_ifindex; + + /** + * IPv4 multicast output network interface for this context/socket. + * Only allowed for SOCK_DGRAM type sockets. + */ + uint8_t ipv4_mcast_ifindex; + }; +#endif /* CONFIG_NET_IPV6 || CONFIG_NET_IPV4 */ + #if defined(CONFIG_NET_CONTEXT_TIMESTAMPING) /** Enable RX, TX or both timestamps of packets send through sockets. */ uint8_t timestamping; @@ -1290,6 +1322,9 @@ enum net_context_option { NET_OPT_TTL = 16, /**< IPv4 unicast TTL */ NET_OPT_ADDR_PREFERENCES = 17, /**< IPv6 address preference */ NET_OPT_TIMESTAMPING = 18, /**< Packet timestamping */ + NET_OPT_MCAST_IFINDEX = 19, /**< IPv6 multicast output network interface index */ + NET_OPT_MTU = 20, /**< IPv4 socket path MTU */ + NET_OPT_LOCAL_PORT_RANGE = 21, /**< Clamp local port range */ }; /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_core.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_core.h index 0ec70fd6..4b07aaa3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_core.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_core.h @@ -39,6 +39,8 @@ extern "C" { /** * @brief Network core library * @defgroup net_core Network Core Library + * @since 1.0 + * @version 1.0.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_event.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_event.h index 9bcba06b..f0f8545a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_event.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_event.h @@ -74,6 +74,7 @@ enum net_event_ipv6_cmd { NET_EVENT_IPV6_CMD_PE_DISABLED, NET_EVENT_IPV6_CMD_PE_FILTER_ADD, NET_EVENT_IPV6_CMD_PE_FILTER_DEL, + NET_EVENT_IPV6_CMD_PMTU_CHANGED, }; /* IPv4 Events*/ @@ -99,6 +100,7 @@ enum net_event_ipv4_cmd { NET_EVENT_IPV4_CMD_ACD_SUCCEED, NET_EVENT_IPV4_CMD_ACD_FAILED, NET_EVENT_IPV4_CMD_ACD_CONFLICT, + NET_EVENT_IPV4_CMD_PMTU_CHANGED, }; /* L4 network events */ @@ -237,6 +239,10 @@ enum net_event_l4_cmd { #define NET_EVENT_IPV6_PE_FILTER_DEL \ (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_PE_FILTER_DEL) +/** IPv6 Path MTU is changed. */ +#define NET_EVENT_IPV6_PMTU_CHANGED \ + (_NET_EVENT_IPV6_BASE | NET_EVENT_IPV6_CMD_PMTU_CHANGED) + /** Event emitted when an IPv4 address is added to the system. */ #define NET_EVENT_IPV4_ADDR_ADD \ (_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ADDR_ADD) @@ -296,6 +302,10 @@ enum net_event_l4_cmd { #define NET_EVENT_IPV4_ACD_CONFLICT \ (_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_ACD_CONFLICT) +/** IPv4 Path MTU is changed. */ +#define NET_EVENT_IPV4_PMTU_CHANGED \ + (_NET_EVENT_IPV4_BASE | NET_EVENT_IPV4_CMD_PMTU_CHANGED) + /** Event emitted when the system is considered to be connected. * The connected in this context means that the network interface is up, * and the interface has either IPv4 or IPv6 address assigned to it. @@ -441,6 +451,34 @@ struct net_event_ipv6_pe_filter { bool is_deny_list; }; +/** + * @brief Network Management event information structure + * Used to pass information on network event + * NET_EVENT_IPV4_PMTU_CHANGED + * when CONFIG_NET_MGMT_EVENT_INFO enabled and event generator pass the + * information. + */ +struct net_event_ipv4_pmtu_info { + /** IPv4 address */ + struct in_addr dst; + /** New MTU */ + uint16_t mtu; +}; + +/** + * @brief Network Management event information structure + * Used to pass information on network event + * NET_EVENT_IPV6_PMTU_CHANGED + * when CONFIG_NET_MGMT_EVENT_INFO enabled and event generator pass the + * information. + */ +struct net_event_ipv6_pmtu_info { + /** IPv6 address */ + struct in6_addr dst; + /** New MTU */ + uint32_t mtu; +}; + #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_if.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_if.h index 67501f43..14981e92 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_if.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_if.h @@ -15,6 +15,8 @@ /** * @brief Network Interface abstraction layer * @defgroup net_if Network Interface abstraction layer + * @since 1.5 + * @version 1.0.0 * @ingroup networking * @{ */ @@ -40,6 +42,8 @@ #include #endif +#include + #ifdef __cplusplus extern "C" { #endif @@ -298,7 +302,7 @@ struct net_offload; #endif /* CONFIG_NET_OFFLOAD */ /** @cond INTERNAL_HIDDEN */ -#if defined(CONFIG_NET_NATIVE_IPV6) +#if defined(CONFIG_NET_IPV6) #define NET_IF_MAX_IPV6_ADDR CONFIG_NET_IF_UNICAST_IPV6_ADDR_COUNT #define NET_IF_MAX_IPV6_MADDR CONFIG_NET_IF_MCAST_IPV6_ADDR_COUNT #define NET_IF_MAX_IPV6_PREFIX CONFIG_NET_IF_IPV6_PREFIX_COUNT @@ -329,6 +333,16 @@ struct net_if_ipv6 { /** Retransmit timer (RFC 4861, page 52) */ uint32_t retrans_timer; +#if defined(CONFIG_NET_IPV6_IID_STABLE) + /** IID (Interface Identifier) pointer used for link local address */ + struct net_if_addr *iid; + + /** Incremented when network interface goes down so that we can + * generate new stable addresses when interface comes back up. + */ + uint32_t network_counter; +#endif /* CONFIG_NET_IPV6_IID_STABLE */ + #if defined(CONFIG_NET_IPV6_PE) /** Privacy extension DESYNC_FACTOR value from RFC 8981 ch 3.4. * "DESYNC_FACTOR is a random value within the range 0 - MAX_DESYNC_FACTOR. @@ -420,7 +434,7 @@ struct net_if_dhcpv6 { #endif /* defined(CONFIG_NET_DHCPV6) && defined(CONFIG_NET_NATIVE_IPV6) */ /** @cond INTERNAL_HIDDEN */ -#if defined(CONFIG_NET_NATIVE_IPV4) +#if defined(CONFIG_NET_IPV4) #define NET_IF_MAX_IPV4_ADDR CONFIG_NET_IF_UNICAST_IPV4_ADDR_COUNT #define NET_IF_MAX_IPV4_MADDR CONFIG_NET_IF_MCAST_IPV4_ADDR_COUNT #else @@ -540,11 +554,11 @@ struct net_if_ipv4_autoconf { * @brief Network interface IP address configuration. */ struct net_if_ip { -#if defined(CONFIG_NET_NATIVE_IPV6) +#if defined(CONFIG_NET_IPV6) struct net_if_ipv6 *ipv6; #endif /* CONFIG_NET_IPV6 */ -#if defined(CONFIG_NET_NATIVE_IPV4) +#if defined(CONFIG_NET_IPV4) struct net_if_ipv4 *ipv4; #endif /* CONFIG_NET_IPV4 */ }; @@ -682,6 +696,10 @@ struct net_if { #if defined(CONFIG_NET_STATISTICS_PER_INTERFACE) /** Network statistics related to this network interface */ struct net_stats stats; + + /** Promethus collector for this network interface */ + IF_ENABLED(CONFIG_NET_STATISTICS_VIA_PROMETHEUS, + (struct prometheus_collector *collector);) #endif /* CONFIG_NET_STATISTICS_PER_INTERFACE */ /** Network interface instance configuration */ @@ -768,8 +786,9 @@ static inline void net_if_tx_unlock(struct net_if *iface) static inline void net_if_flag_set(struct net_if *iface, enum net_if_flag value) { - NET_ASSERT(iface); - NET_ASSERT(iface->if_dev); + if (iface == NULL || iface->if_dev == NULL) { + return; + } atomic_set_bit(iface->if_dev->flags, value); } @@ -785,8 +804,9 @@ static inline void net_if_flag_set(struct net_if *iface, static inline bool net_if_flag_test_and_set(struct net_if *iface, enum net_if_flag value) { - NET_ASSERT(iface); - NET_ASSERT(iface->if_dev); + if (iface == NULL || iface->if_dev == NULL) { + return false; + } return atomic_test_and_set_bit(iface->if_dev->flags, value); } @@ -800,8 +820,9 @@ static inline bool net_if_flag_test_and_set(struct net_if *iface, static inline void net_if_flag_clear(struct net_if *iface, enum net_if_flag value) { - NET_ASSERT(iface); - NET_ASSERT(iface->if_dev); + if (iface == NULL || iface->if_dev == NULL) { + return; + } atomic_clear_bit(iface->if_dev->flags, value); } @@ -817,8 +838,9 @@ static inline void net_if_flag_clear(struct net_if *iface, static inline bool net_if_flag_test_and_clear(struct net_if *iface, enum net_if_flag value) { - NET_ASSERT(iface); - NET_ASSERT(iface->if_dev); + if (iface == NULL || iface->if_dev == NULL) { + return false; + } return atomic_test_and_clear_bit(iface->if_dev->flags, value); } @@ -834,10 +856,7 @@ static inline bool net_if_flag_test_and_clear(struct net_if *iface, static inline bool net_if_flag_is_set(struct net_if *iface, enum net_if_flag value) { - NET_ASSERT(iface); - NET_ASSERT(iface->if_dev); - - if (iface == NULL) { + if (iface == NULL || iface->if_dev == NULL) { return false; } @@ -855,10 +874,12 @@ static inline bool net_if_flag_is_set(struct net_if *iface, static inline enum net_if_oper_state net_if_oper_state_set( struct net_if *iface, enum net_if_oper_state oper_state) { - NET_ASSERT(iface); - NET_ASSERT(iface->if_dev); + if (iface == NULL || iface->if_dev == NULL) { + return NET_IF_OPER_UNKNOWN; + } - if (oper_state >= NET_IF_OPER_UNKNOWN && oper_state <= NET_IF_OPER_UP) { + BUILD_ASSERT((enum net_if_oper_state)(-1) > 0 && NET_IF_OPER_UNKNOWN == 0); + if (oper_state <= NET_IF_OPER_UP) { iface->if_dev->oper_state = oper_state; } @@ -874,8 +895,9 @@ static inline enum net_if_oper_state net_if_oper_state_set( */ static inline enum net_if_oper_state net_if_oper_state(struct net_if *iface) { - NET_ASSERT(iface); - NET_ASSERT(iface->if_dev); + if (iface == NULL || iface->if_dev == NULL) { + return NET_IF_OPER_UNKNOWN; + } return iface->if_dev->oper_state; } @@ -899,7 +921,7 @@ enum net_verdict net_if_send_data(struct net_if *iface, struct net_pkt *pkt); */ static inline const struct net_l2 *net_if_l2(struct net_if *iface) { - if (!iface || !iface->if_dev) { + if (iface == NULL || iface->if_dev == NULL) { return NULL; } @@ -925,8 +947,9 @@ enum net_verdict net_if_recv_data(struct net_if *iface, struct net_pkt *pkt); */ static inline void *net_if_l2_data(struct net_if *iface) { - NET_ASSERT(iface); - NET_ASSERT(iface->if_dev); + if (iface == NULL || iface->if_dev == NULL) { + return NULL; + } return iface->if_dev->l2_data; } @@ -940,8 +963,9 @@ static inline void *net_if_l2_data(struct net_if *iface) */ static inline const struct device *net_if_get_device(struct net_if *iface) { - NET_ASSERT(iface); - NET_ASSERT(iface->if_dev); + if (iface == NULL || iface->if_dev == NULL) { + return NULL; + } return iface->if_dev->dev; } @@ -992,8 +1016,9 @@ bool net_if_is_offloaded(struct net_if *iface); static inline struct net_offload *net_if_offload(struct net_if *iface) { #if defined(CONFIG_NET_OFFLOAD) - NET_ASSERT(iface); - NET_ASSERT(iface->if_dev); + if (iface == NULL || iface->if_dev == NULL) { + return NULL; + } return iface->if_dev->offload; #else @@ -1013,8 +1038,9 @@ static inline struct net_offload *net_if_offload(struct net_if *iface) static inline bool net_if_is_socket_offloaded(struct net_if *iface) { #if defined(CONFIG_NET_SOCKETS_OFFLOAD) - NET_ASSERT(iface); - NET_ASSERT(iface->if_dev); + if (iface == NULL || iface->if_dev == NULL) { + return false; + } return (iface->if_dev->socket_offload != NULL); #else @@ -1034,8 +1060,9 @@ static inline void net_if_socket_offload_set( struct net_if *iface, net_socket_create_t socket_offload) { #if defined(CONFIG_NET_SOCKETS_OFFLOAD) - NET_ASSERT(iface); - NET_ASSERT(iface->if_dev); + if (iface == NULL || iface->if_dev == NULL) { + return; + } iface->if_dev->socket_offload = socket_offload; #else @@ -1054,8 +1081,9 @@ static inline void net_if_socket_offload_set( static inline net_socket_create_t net_if_socket_offload(struct net_if *iface) { #if defined(CONFIG_NET_SOCKETS_OFFLOAD) - NET_ASSERT(iface); - NET_ASSERT(iface->if_dev); + if (iface == NULL || iface->if_dev == NULL) { + return NULL; + } return iface->if_dev->socket_offload; #else @@ -1074,8 +1102,9 @@ static inline net_socket_create_t net_if_socket_offload(struct net_if *iface) */ static inline struct net_linkaddr *net_if_get_link_addr(struct net_if *iface) { - NET_ASSERT(iface); - NET_ASSERT(iface->if_dev); + if (iface == NULL || iface->if_dev == NULL) { + return NULL; + } return &iface->if_dev->link_addr; } @@ -1089,7 +1118,9 @@ static inline struct net_linkaddr *net_if_get_link_addr(struct net_if *iface) */ static inline struct net_if_config *net_if_get_config(struct net_if *iface) { - NET_ASSERT(iface); + if (iface == NULL) { + return NULL; + } return &iface->config; } @@ -1233,12 +1264,10 @@ static inline int net_if_set_link_addr(struct net_if *iface, */ static inline uint16_t net_if_get_mtu(struct net_if *iface) { - if (iface == NULL) { + if (iface == NULL || iface->if_dev == NULL) { return 0U; } - NET_ASSERT(iface->if_dev); - return iface->if_dev->mtu; } @@ -1251,12 +1280,10 @@ static inline uint16_t net_if_get_mtu(struct net_if *iface) static inline void net_if_set_mtu(struct net_if *iface, uint16_t mtu) { - if (iface == NULL) { + if (iface == NULL || iface->if_dev == NULL) { return; } - NET_ASSERT(iface->if_dev); - iface->if_dev->mtu = mtu; } @@ -1269,7 +1296,9 @@ static inline void net_if_set_mtu(struct net_if *iface, static inline void net_if_addr_set_lf(struct net_if_addr *ifaddr, bool is_infinite) { - NET_ASSERT(ifaddr); + if (ifaddr == NULL) { + return; + } ifaddr->is_infinite = is_infinite; } @@ -1301,7 +1330,9 @@ struct net_if *net_if_lookup_by_dev(const struct device *dev); */ static inline struct net_if_config *net_if_config_get(struct net_if *iface) { - NET_ASSERT(iface); + if (iface == NULL) { + return NULL; + } return &iface->config; } @@ -1632,7 +1663,9 @@ void net_if_ipv6_maddr_join(struct net_if *iface, */ static inline bool net_if_ipv6_maddr_is_joined(struct net_if_mcast_addr *addr) { - NET_ASSERT(addr); + if (addr == NULL) { + return false; + } return addr->is_joined; } @@ -1746,7 +1779,9 @@ bool net_if_ipv6_addr_onlink(struct net_if **iface, struct in6_addr *addr); #if defined(CONFIG_NET_NATIVE_IPV6) static inline struct in6_addr *net_if_router_ipv6(struct net_if_router *router) { - NET_ASSERT(router); + if (router == NULL) { + return NULL; + } return &router->address.in6_addr; } @@ -1824,7 +1859,16 @@ bool net_if_ipv6_router_rm(struct net_if_router *router); * * @return Hop limit */ +#if defined(CONFIG_NET_NATIVE_IPV6) uint8_t net_if_ipv6_get_hop_limit(struct net_if *iface); +#else +static inline uint8_t net_if_ipv6_get_hop_limit(struct net_if *iface) +{ + ARG_UNUSED(iface); + + return 0; +} +#endif /* CONFIG_NET_NATIVE_IPV6 */ /** * @brief Set the default IPv6 hop limit of a given interface. @@ -1832,7 +1876,16 @@ uint8_t net_if_ipv6_get_hop_limit(struct net_if *iface); * @param iface Network interface * @param hop_limit New hop limit */ +#if defined(CONFIG_NET_NATIVE_IPV6) void net_if_ipv6_set_hop_limit(struct net_if *iface, uint8_t hop_limit); +#else +static inline void net_if_ipv6_set_hop_limit(struct net_if *iface, + uint8_t hop_limit) +{ + ARG_UNUSED(iface); + ARG_UNUSED(hop_limit); +} +#endif /* CONFIG_NET_NATIVE_IPV6 */ /** @cond INTERNAL_HIDDEN */ @@ -1857,7 +1910,16 @@ static inline void net_ipv6_set_hop_limit(struct net_if *iface, * * @return Hop limit */ +#if defined(CONFIG_NET_NATIVE_IPV6) uint8_t net_if_ipv6_get_mcast_hop_limit(struct net_if *iface); +#else +static inline uint8_t net_if_ipv6_get_mcast_hop_limit(struct net_if *iface) +{ + ARG_UNUSED(iface); + + return 0; +} +#endif /* CONFIG_NET_NATIVE_IPV6 */ /** * @brief Set the default IPv6 multicast hop limit of a given interface. @@ -1865,7 +1927,16 @@ uint8_t net_if_ipv6_get_mcast_hop_limit(struct net_if *iface); * @param iface Network interface * @param hop_limit New hop limit */ +#if defined(CONFIG_NET_NATIVE_IPV6) void net_if_ipv6_set_mcast_hop_limit(struct net_if *iface, uint8_t hop_limit); +#else +static inline void net_if_ipv6_set_mcast_hop_limit(struct net_if *iface, + uint8_t hop_limit) +{ + ARG_UNUSED(iface); + ARG_UNUSED(hop_limit); +} +#endif /* CONFIG_NET_NATIVE_IPV6 */ /** * @brief Set IPv6 reachable time for a given interface @@ -1877,7 +1948,9 @@ static inline void net_if_ipv6_set_base_reachable_time(struct net_if *iface, uint32_t reachable_time) { #if defined(CONFIG_NET_NATIVE_IPV6) - NET_ASSERT(iface); + if (iface == NULL) { + return; + } if (!iface->config.ip.ipv6) { return; @@ -1901,7 +1974,9 @@ static inline void net_if_ipv6_set_base_reachable_time(struct net_if *iface, static inline uint32_t net_if_ipv6_get_reachable_time(struct net_if *iface) { #if defined(CONFIG_NET_NATIVE_IPV6) - NET_ASSERT(iface); + if (iface == NULL) { + return 0; + } if (!iface->config.ip.ipv6) { return 0; @@ -1952,7 +2027,9 @@ static inline void net_if_ipv6_set_retrans_timer(struct net_if *iface, uint32_t retrans_timer) { #if defined(CONFIG_NET_NATIVE_IPV6) - NET_ASSERT(iface); + if (iface == NULL) { + return; + } if (!iface->config.ip.ipv6) { return; @@ -1975,7 +2052,9 @@ static inline void net_if_ipv6_set_retrans_timer(struct net_if *iface, static inline uint32_t net_if_ipv6_get_retrans_timer(struct net_if *iface) { #if defined(CONFIG_NET_NATIVE_IPV6) - NET_ASSERT(iface); + if (iface == NULL) { + return 0; + } if (!iface->config.ip.ipv6) { return 0; @@ -1999,7 +2078,7 @@ static inline uint32_t net_if_ipv6_get_retrans_timer(struct net_if *iface) * @return Pointer to IPv6 address to use, NULL if no IPv6 address * could be found. */ -#if defined(CONFIG_NET_NATIVE_IPV6) +#if defined(CONFIG_NET_IPV6) const struct in6_addr *net_if_ipv6_select_src_addr(struct net_if *iface, const struct in6_addr *dst); #else @@ -2026,7 +2105,7 @@ static inline const struct in6_addr *net_if_ipv6_select_src_addr( * @return Pointer to IPv6 address to use, NULL if no IPv6 address * could be found. */ -#if defined(CONFIG_NET_NATIVE_IPV6) +#if defined(CONFIG_NET_IPV6) const struct in6_addr *net_if_ipv6_select_src_addr_hint(struct net_if *iface, const struct in6_addr *dst, int flags); @@ -2051,7 +2130,7 @@ static inline const struct in6_addr *net_if_ipv6_select_src_addr_hint( * @return Pointer to network interface to use, NULL if no suitable interface * could be found. */ -#if defined(CONFIG_NET_NATIVE_IPV6) +#if defined(CONFIG_NET_IPV6) struct net_if *net_if_ipv6_select_src_iface(const struct in6_addr *dst); #else static inline struct net_if *net_if_ipv6_select_src_iface( @@ -2312,7 +2391,9 @@ void net_if_ipv4_maddr_join(struct net_if *iface, */ static inline bool net_if_ipv4_maddr_is_joined(struct net_if_mcast_addr *addr) { - NET_ASSERT(addr); + if (addr == NULL) { + return false; + } return addr->is_joined; } @@ -2335,7 +2416,9 @@ void net_if_ipv4_maddr_leave(struct net_if *iface, #if defined(CONFIG_NET_NATIVE_IPV4) static inline struct in_addr *net_if_router_ipv4(struct net_if_router *router) { - NET_ASSERT(router); + if (router == NULL) { + return NULL; + } return &router->address.in_addr; } @@ -2428,7 +2511,7 @@ bool net_if_ipv4_is_addr_bcast(struct net_if *iface, * @return Pointer to network interface to use, NULL if no suitable interface * could be found. */ -#if defined(CONFIG_NET_NATIVE_IPV4) +#if defined(CONFIG_NET_IPV4) struct net_if *net_if_ipv4_select_src_iface(const struct in_addr *dst); #else static inline struct net_if *net_if_ipv4_select_src_iface( @@ -2451,7 +2534,7 @@ static inline struct net_if *net_if_ipv4_select_src_iface( * @return Pointer to IPv4 address to use, NULL if no IPv4 address * could be found. */ -#if defined(CONFIG_NET_NATIVE_IPV4) +#if defined(CONFIG_NET_IPV4) const struct in_addr *net_if_ipv4_select_src_addr(struct net_if *iface, const struct in_addr *dst); #else @@ -2562,6 +2645,15 @@ bool net_if_ipv4_set_netmask_by_addr(struct net_if *iface, const struct in_addr *addr, const struct in_addr *netmask); +/** + * @brief Get IPv4 gateway of an interface. + * + * @param iface Interface to use. + * + * @return The gateway set on the interface, unspecified address if not found. + */ +struct in_addr net_if_ipv4_get_gw(struct net_if *iface); + /** * @brief Set IPv4 gateway for an interface. * @@ -2773,7 +2865,9 @@ int net_if_up(struct net_if *iface); */ static inline bool net_if_is_up(struct net_if *iface) { - NET_ASSERT(iface); + if (iface == NULL) { + return false; + } return net_if_flag_is_set(iface, NET_IF_UP) && net_if_flag_is_set(iface, NET_IF_RUNNING); @@ -2797,7 +2891,9 @@ int net_if_down(struct net_if *iface); */ static inline bool net_if_is_admin_up(struct net_if *iface) { - NET_ASSERT(iface); + if (iface == NULL) { + return false; + } return net_if_flag_is_set(iface, NET_IF_UP); } @@ -2831,7 +2927,9 @@ void net_if_carrier_off(struct net_if *iface); */ static inline bool net_if_is_carrier_ok(struct net_if *iface) { - NET_ASSERT(iface); + if (iface == NULL) { + return false; + } return net_if_flag_is_set(iface, NET_IF_LOWER_UP); } @@ -2867,7 +2965,9 @@ void net_if_dormant_off(struct net_if *iface); */ static inline bool net_if_is_dormant(struct net_if *iface) { - NET_ASSERT(iface); + if (iface == NULL) { + return false; + } return net_if_flag_is_set(iface, NET_IF_DORMANT); } @@ -3140,12 +3240,24 @@ struct net_if_api { NET_IF_DHCPV6_INIT \ } +#define NET_PROMETHEUS_GET_COLLECTOR_NAME(dev_id, sfx) \ + net_stats_##dev_id##_##sfx##_collector +#define NET_PROMETHEUS_INIT(dev_id, sfx) \ + IF_ENABLED(CONFIG_NET_STATISTICS_VIA_PROMETHEUS, \ + (.collector = &NET_PROMETHEUS_GET_COLLECTOR_NAME(dev_id, sfx),)) + #define NET_IF_GET_NAME(dev_id, sfx) __net_if_##dev_id##_##sfx #define NET_IF_DEV_GET_NAME(dev_id, sfx) __net_if_dev_##dev_id##_##sfx #define NET_IF_GET(dev_id, sfx) \ ((struct net_if *)&NET_IF_GET_NAME(dev_id, sfx)) +#if defined(CONFIG_NET_STATISTICS_VIA_PROMETHEUS) +extern int net_stats_prometheus_scrape(struct prometheus_collector *collector, + struct prometheus_metric *metric, + void *user_data); +#endif /* CONFIG_NET_STATISTICS_VIA_PROMETHEUS */ + #define NET_IF_INIT(dev_id, sfx, _l2, _mtu, _num_configs) \ static STRUCT_SECTION_ITERABLE(net_if_dev, \ NET_IF_DEV_GET_NAME(dev_id, sfx)) = { \ @@ -3163,7 +3275,15 @@ struct net_if_api { .if_dev = &(NET_IF_DEV_GET_NAME(dev_id, sfx)), \ NET_IF_CONFIG_INIT \ } \ - } + }; \ + IF_ENABLED(CONFIG_NET_STATISTICS_VIA_PROMETHEUS, \ + (static PROMETHEUS_COLLECTOR_DEFINE( \ + NET_PROMETHEUS_GET_COLLECTOR_NAME(dev_id, \ + sfx), \ + net_stats_prometheus_scrape, \ + NET_IF_GET(dev_id, sfx)); \ + NET_STATS_PROMETHEUS(NET_IF_GET(dev_id, sfx), \ + dev_id, sfx);)) #define NET_IF_OFFLOAD_INIT(dev_id, sfx, _mtu) \ static STRUCT_SECTION_ITERABLE(net_if_dev, \ @@ -3181,7 +3301,16 @@ struct net_if_api { .if_dev = &(NET_IF_DEV_GET_NAME(dev_id, sfx)), \ NET_IF_CONFIG_INIT \ } \ - } + }; \ + IF_ENABLED(CONFIG_NET_STATISTICS_VIA_PROMETHEUS, \ + (static PROMETHEUS_COLLECTOR_DEFINE( \ + NET_PROMETHEUS_GET_COLLECTOR_NAME(dev_id, \ + sfx), \ + net_stats_prometheus_scrape, \ + NET_IF_GET(dev_id, sfx)); \ + NET_STATS_PROMETHEUS(NET_IF_GET(dev_id, sfx), \ + dev_id, sfx);)) + /** @endcond */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_ip.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_ip.h index 86fb06ee..214b90cd 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_ip.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_ip.h @@ -16,6 +16,8 @@ /** * @brief IPv4/IPv6 primitives and helpers * @defgroup ip_4_6 IPv4/IPv6 primitives and helpers + * @since 1.0 + * @version 1.0.0 * @ingroup networking * @{ */ @@ -63,6 +65,7 @@ enum net_ip_protocol { IPPROTO_IP = 0, /**< IP protocol (pseudo-val for setsockopt() */ IPPROTO_ICMP = 1, /**< ICMP protocol */ IPPROTO_IGMP = 2, /**< IGMP protocol */ + IPPROTO_ETH_P_ALL = 3, /**< Every packet. from linux if_ether.h */ IPPROTO_IPIP = 4, /**< IPIP tunnels */ IPPROTO_TCP = 6, /**< TCP protocol */ IPPROTO_UDP = 17, /**< UDP protocol */ @@ -76,6 +79,7 @@ enum net_ip_protocol_secure { IPPROTO_TLS_1_0 = 256, /**< TLS 1.0 protocol */ IPPROTO_TLS_1_1 = 257, /**< TLS 1.1 protocol */ IPPROTO_TLS_1_2 = 258, /**< TLS 1.2 protocol */ + IPPROTO_TLS_1_3 = 259, /**< TLS 1.3 protocol */ IPPROTO_DTLS_1_0 = 272, /**< DTLS 1.0 protocol */ IPPROTO_DTLS_1_2 = 273, /**< DTLS 1.2 protocol */ }; @@ -228,6 +232,12 @@ struct sockaddr_ll_ptr { uint8_t *sll_addr; /**< Physical-layer address, big endian */ }; +/** Socket address struct for unix socket where address is a pointer */ +struct sockaddr_un_ptr { + sa_family_t sun_family; /**< Always AF_UNIX */ + char *sun_path; /**< pathname */ +}; + struct sockaddr_can_ptr { sa_family_t can_family; int can_ifindex; @@ -370,14 +380,27 @@ struct cmsghdr { #endif #endif +#if defined(CONFIG_NET_NATIVE_OFFLOADED_SOCKETS) +#define UNIX_PATH_MAX 108 +#undef NET_SOCKADDR_MAX_SIZE +/* Define NET_SOCKADDR_MAX_SIZE to be struct of sa_family_t + char[UNIX_PATH_MAX] */ +#define NET_SOCKADDR_MAX_SIZE (UNIX_PATH_MAX+sizeof(sa_family_t)) +#if !defined(CONFIG_NET_SOCKETS_PACKET) +#undef NET_SOCKADDR_PTR_MAX_SIZE +#define NET_SOCKADDR_PTR_MAX_SIZE (sizeof(struct sockaddr_un_ptr)) +#endif +#endif + #if !defined(CONFIG_NET_IPV4) #if !defined(CONFIG_NET_IPV6) #if !defined(CONFIG_NET_SOCKETS_PACKET) +#if !defined(CONFIG_NET_NATIVE_OFFLOADED_SOCKETS) #define NET_SOCKADDR_MAX_SIZE (sizeof(struct sockaddr_in6)) #define NET_SOCKADDR_PTR_MAX_SIZE (sizeof(struct sockaddr_in6_ptr)) #endif #endif #endif +#endif /** @endcond */ @@ -435,6 +458,9 @@ extern const struct in6_addr in6addr_loopback; /** IPv4 any address */ #define INADDR_ANY 0 +/** IPv4 broadcast address */ +#define INADDR_BROADCAST 0xffffffff + /** IPv4 address initializer */ #define INADDR_ANY_INIT { { { INADDR_ANY } } } @@ -743,6 +769,38 @@ static inline bool net_ipv6_is_prefix(const uint8_t *addr1, return (addr1[bytes] & mask) == (addr2[bytes] & mask); } + +/** + * @brief Get the IPv6 network address via the unicast address and the prefix mask. + * + * @param inaddr Unicast IPv6 address. + * @param outaddr Prefix masked IPv6 address (network address). + * @param prefix_len Prefix length (max length is 128). + */ +static inline void net_ipv6_addr_prefix_mask(const uint8_t *inaddr, + uint8_t *outaddr, + uint8_t prefix_len) +{ + uint8_t bits = 128 - prefix_len; + uint8_t bytes = prefix_len / 8U; + uint8_t remain = bits % 8; + uint8_t mask; + + memset(outaddr, 0, 16U); + memcpy(outaddr, inaddr, bytes); + + if (!remain) { + /* No remaining bits, the prefixes are the same as first + * bytes are the same. + */ + return; + } + + /* Create a mask that has remaining most significant bits set */ + mask = (uint8_t)((0xff << (8 - remain)) ^ 0xff) << remain; + outaddr[bytes] = inaddr[bytes] & mask; +} + /** * @brief Check if the IPv4 address is a loopback address (127.0.0.0/8). * @@ -1401,7 +1459,32 @@ static inline bool net_ipv6_addr_is_v4_mapped(const struct in6_addr *addr) } /** - * @brief Create IPv6 address interface identifier + * @brief Generate IPv6 address using a prefix and interface identifier. + * Interface identifier is either generated from EUI-64 (MAC) defined + * in RFC 4291 or from randomized value defined in RFC 7217. + * + * @param iface Network interface + * @param prefix IPv6 prefix, can be left out in which case fe80::/64 is used + * @param network_id Network identifier (for example SSID in WLAN), this is + * optional can be set to NULL + * @param network_id_len Network identifier length, if set to 0 then the + * network id is ignored. + * @param dad_counter Duplicate Address Detection counter value, can be set to 0 + * if it is not known. + * @param addr IPv6 address + * @param lladdr Link local address + * + * @return 0 if ok, < 0 if error + */ +int net_ipv6_addr_generate_iid(struct net_if *iface, + const struct in6_addr *prefix, + uint8_t *network_id, size_t network_id_len, + uint8_t dad_counter, + struct in6_addr *addr, + struct net_linkaddr *lladdr); + +/** + * @brief Create IPv6 address interface identifier. * * @param addr IPv6 address * @param lladdr Link local address @@ -1409,43 +1492,7 @@ static inline bool net_ipv6_addr_is_v4_mapped(const struct in6_addr *addr) static inline void net_ipv6_addr_create_iid(struct in6_addr *addr, struct net_linkaddr *lladdr) { - UNALIGNED_PUT(htonl(0xfe800000), &addr->s6_addr32[0]); - UNALIGNED_PUT(0, &addr->s6_addr32[1]); - - switch (lladdr->len) { - case 2: - /* The generated IPv6 shall not toggle the - * Universal/Local bit. RFC 6282 ch 3.2.2 - */ - if (lladdr->type == NET_LINK_IEEE802154) { - UNALIGNED_PUT(0, &addr->s6_addr32[2]); - addr->s6_addr[11] = 0xff; - addr->s6_addr[12] = 0xfe; - addr->s6_addr[13] = 0U; - addr->s6_addr[14] = lladdr->addr[0]; - addr->s6_addr[15] = lladdr->addr[1]; - } - - break; - case 6: - /* We do not toggle the Universal/Local bit - * in Bluetooth. See RFC 7668 ch 3.2.2 - */ - memcpy(&addr->s6_addr[8], lladdr->addr, 3); - addr->s6_addr[11] = 0xff; - addr->s6_addr[12] = 0xfe; - memcpy(&addr->s6_addr[13], lladdr->addr + 3, 3); - - if (lladdr->type == NET_LINK_ETHERNET) { - addr->s6_addr[8] ^= 0x02; - } - - break; - case 8: - memcpy(&addr->s6_addr[8], lladdr->addr, lladdr->len); - addr->s6_addr[8] ^= 0x02; - break; - } + (void)net_ipv6_addr_generate_iid(NULL, NULL, NULL, 0, 0, addr, lladdr); } /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_l2.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_l2.h index 30085728..37c9b083 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_l2.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_l2.h @@ -13,7 +13,7 @@ #define ZEPHYR_INCLUDE_NET_NET_L2_H_ #include -#include +#include #include #include @@ -24,6 +24,8 @@ extern "C" { /** * @brief Network Layer 2 abstraction layer * @defgroup net_l2 Network L2 Abstraction Layer + * @since 1.5 + * @version 1.0.0 * @ingroup networking * @{ */ @@ -85,47 +87,31 @@ struct net_l2 { extern const struct net_l2 NET_L2_GET_NAME(_name) #define NET_L2_GET_CTX_TYPE(_name) _name##_CTX_TYPE -#ifdef CONFIG_NET_L2_VIRTUAL #define VIRTUAL_L2 VIRTUAL NET_L2_DECLARE_PUBLIC(VIRTUAL_L2); -#endif /* CONFIG_NET_L2_DUMMY */ -#ifdef CONFIG_NET_L2_DUMMY #define DUMMY_L2 DUMMY #define DUMMY_L2_CTX_TYPE void* NET_L2_DECLARE_PUBLIC(DUMMY_L2); -#endif /* CONFIG_NET_L2_DUMMY */ -#if defined(CONFIG_NET_OFFLOAD) || defined(CONFIG_NET_SOCKETS_OFFLOAD) #define OFFLOADED_NETDEV_L2 OFFLOADED_NETDEV NET_L2_DECLARE_PUBLIC(OFFLOADED_NETDEV_L2); -#endif /* CONFIG_NET_OFFLOAD || CONFIG_NET_SOCKETS_OFFLOAD */ -#ifdef CONFIG_NET_L2_ETHERNET #define ETHERNET_L2 ETHERNET NET_L2_DECLARE_PUBLIC(ETHERNET_L2); -#endif /* CONFIG_NET_L2_ETHERNET */ -#ifdef CONFIG_NET_L2_PPP #define PPP_L2 PPP NET_L2_DECLARE_PUBLIC(PPP_L2); -#endif /* CONFIG_NET_L2_PPP */ -#ifdef CONFIG_NET_L2_IEEE802154 #define IEEE802154_L2 IEEE802154 NET_L2_DECLARE_PUBLIC(IEEE802154_L2); -#endif /* CONFIG_NET_L2_IEEE802154 */ -#ifdef CONFIG_NET_L2_OPENTHREAD #define OPENTHREAD_L2 OPENTHREAD NET_L2_DECLARE_PUBLIC(OPENTHREAD_L2); -#endif /* CONFIG_NET_L2_OPENTHREAD */ -#ifdef CONFIG_NET_L2_CANBUS_RAW #define CANBUS_RAW_L2 CANBUS_RAW #define CANBUS_RAW_L2_CTX_TYPE void* NET_L2_DECLARE_PUBLIC(CANBUS_RAW_L2); -#endif /* CONFIG_NET_L2_CANBUS_RAW */ #ifdef CONFIG_NET_L2_CUSTOM_IEEE802154 #ifndef CUSTOM_IEEE802154_L2 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_linkaddr.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_linkaddr.h index 9e21e7dc..e5f0d5f2 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_linkaddr.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_linkaddr.h @@ -23,6 +23,8 @@ extern "C" { /** * @brief Network link address library * @defgroup net_linkaddr Network Link Address Library + * @since 1.0 + * @version 1.0.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_mgmt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_mgmt.h index 46c5e6aa..fe3ee7f9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_mgmt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_mgmt.h @@ -24,6 +24,8 @@ extern "C" { /** * @brief Network Management * @defgroup net_mgmt Network Management + * @since 1.7 + * @version 1.0.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_offload.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_offload.h index 30435127..f1752672 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_offload.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_offload.h @@ -15,11 +15,13 @@ /** * @brief Network offloading interface * @defgroup net_offload Network Offloading Interface + * @since 1.7 + * @version 0.8.0 * @ingroup networking * @{ */ -#include +#include #include #include diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_pkt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_pkt.h index 3f7df54e..1a3b4a04 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_pkt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_pkt.h @@ -19,7 +19,7 @@ #include #include -#include +#include #if defined(CONFIG_IEEE802154) #include @@ -40,6 +40,8 @@ extern "C" { /** * @brief Network packet management library * @defgroup net_pkt Network Packet Library + * @since 1.5 + * @version 0.8.0 * @ingroup networking * @{ */ @@ -48,6 +50,28 @@ struct net_context; /** @cond INTERNAL_HIDDEN */ +#if defined(CONFIG_NET_PKT_ALLOC_STATS) +struct net_pkt_alloc_stats { + uint64_t alloc_sum; + uint64_t time_sum; + uint32_t count; +}; + +struct net_pkt_alloc_stats_slab { + struct net_pkt_alloc_stats ok; + struct net_pkt_alloc_stats fail; + struct k_mem_slab *slab; +}; + +#define NET_PKT_ALLOC_STATS_DEFINE(alloc_name, slab_name) \ + STRUCT_SECTION_ITERABLE(net_pkt_alloc_stats_slab, alloc_name) = { \ + .slab = &slab_name, \ + } + +#else +#define NET_PKT_ALLOC_STATS_DEFINE(name, slab) +#endif /* CONFIG_NET_PKT_ALLOC_STATS */ + /* buffer cursor used in net_pkt */ struct net_pkt_cursor { /** Current net_buf pointer by the cursor */ @@ -121,7 +145,8 @@ struct net_pkt { struct net_ptp_time timestamp; #endif -#if defined(CONFIG_NET_PKT_RXTIME_STATS) || defined(CONFIG_NET_PKT_TXTIME_STATS) +#if defined(CONFIG_NET_PKT_RXTIME_STATS) || defined(CONFIG_NET_PKT_TXTIME_STATS) || \ + defined(CONFIG_TRACING_NET_CORE) struct { /** Create time in cycles */ uint32_t create_time; @@ -142,6 +167,10 @@ struct net_pkt { }; #endif /* CONFIG_NET_PKT_RXTIME_STATS || CONFIG_NET_PKT_TXTIME_STATS */ +#if defined(CONFIG_NET_PKT_ALLOC_STATS) + struct net_pkt_alloc_stats_slab *alloc_stats; +#endif /* CONFIG_NET_PKT_ALLOC_STATS */ + /** Reference counter */ atomic_t atomic_ref; @@ -313,6 +342,11 @@ struct net_pkt { uint8_t cooked_mode_pkt : 1; #endif /* CONFIG_NET_CAPTURE_COOKED_MODE */ +#if defined(CONFIG_NET_IPV4_PMTU) + /* Path MTU needed for this destination address */ + uint8_t ipv4_pmtu : 1; +#endif /* CONFIG_NET_IPV4_PMTU */ + /* @endcond */ }; @@ -754,6 +788,31 @@ static inline uint16_t net_pkt_ip_opts_len(struct net_pkt *pkt) #endif } +#if defined(CONFIG_NET_IPV4_PMTU) +static inline bool net_pkt_ipv4_pmtu(struct net_pkt *pkt) +{ + return !!pkt->ipv4_pmtu; +} + +static inline void net_pkt_set_ipv4_pmtu(struct net_pkt *pkt, bool value) +{ + pkt->ipv4_pmtu = value; +} +#else +static inline bool net_pkt_ipv4_pmtu(struct net_pkt *pkt) +{ + ARG_UNUSED(pkt); + + return false; +} + +static inline void net_pkt_set_ipv4_pmtu(struct net_pkt *pkt, bool value) +{ + ARG_UNUSED(pkt); + ARG_UNUSED(value); +} +#endif /* CONFIG_NET_IPV4_PMTU */ + #if defined(CONFIG_NET_IPV4_FRAGMENT) static inline uint16_t net_pkt_ipv4_fragment_offset(struct net_pkt *pkt) { @@ -1105,7 +1164,9 @@ static inline void net_pkt_set_timestamp_ns(struct net_pkt *pkt, net_time_t time } #endif /* CONFIG_NET_PKT_TIMESTAMP || CONFIG_NET_PKT_TXTIME */ -#if defined(CONFIG_NET_PKT_RXTIME_STATS) || defined(CONFIG_NET_PKT_TXTIME_STATS) +#if defined(CONFIG_NET_PKT_RXTIME_STATS) || defined(CONFIG_NET_PKT_TXTIME_STATS) || \ + defined(CONFIG_TRACING_NET_CORE) + static inline uint32_t net_pkt_create_time(struct net_pkt *pkt) { return pkt->create_time; @@ -1130,36 +1191,9 @@ static inline void net_pkt_set_create_time(struct net_pkt *pkt, ARG_UNUSED(pkt); ARG_UNUSED(create_time); } -#endif /* CONFIG_NET_PKT_RXTIME_STATS || CONFIG_NET_PKT_TXTIME_STATS */ - -/** - * @deprecated Use @ref net_pkt_timestamp or @ref net_pkt_timestamp_ns instead. - */ -static inline uint64_t net_pkt_txtime(struct net_pkt *pkt) -{ -#if defined(CONFIG_NET_PKT_TXTIME) - return pkt->timestamp.second * NSEC_PER_SEC + pkt->timestamp.nanosecond; -#else - ARG_UNUSED(pkt); - - return 0; -#endif /* CONFIG_NET_PKT_TXTIME */ -} - -/** - * @deprecated Use @ref net_pkt_set_timestamp or @ref net_pkt_set_timestamp_ns - * instead. - */ -static inline void net_pkt_set_txtime(struct net_pkt *pkt, uint64_t txtime) -{ -#if defined(CONFIG_NET_PKT_TXTIME) - pkt->timestamp.second = txtime / NSEC_PER_SEC; - pkt->timestamp.nanosecond = txtime % NSEC_PER_SEC; -#else - ARG_UNUSED(pkt); - ARG_UNUSED(txtime); -#endif /* CONFIG_NET_PKT_TXTIME */ -} +#endif /* CONFIG_NET_PKT_RXTIME_STATS || CONFIG_NET_PKT_TXTIME_STATS || + * CONFIG_TRACING_NET_CORE + */ #if defined(CONFIG_NET_PKT_TXTIME_STATS_DETAIL) || \ defined(CONFIG_NET_PKT_RXTIME_STATS_DETAIL) @@ -1474,7 +1508,8 @@ static inline void net_pkt_set_remote_address(struct net_pkt *pkt, * @param count Number of net_pkt in this slab. */ #define NET_PKT_SLAB_DEFINE(name, count) \ - K_MEM_SLAB_DEFINE(name, sizeof(struct net_pkt), count, 4) + K_MEM_SLAB_DEFINE(name, sizeof(struct net_pkt), count, 4); \ + NET_PKT_ALLOC_STATS_DEFINE(pkt_alloc_stats_##name, name) /** @cond INTERNAL_HIDDEN */ @@ -1579,6 +1614,7 @@ void net_pkt_frag_insert_debug(struct net_pkt *pkt, struct net_buf *frag, */ /** @endcond */ +#if defined(NET_PKT_DEBUG_ENABLED) /** * @brief Print fragment list and the fragment sizes * @@ -1586,12 +1622,12 @@ void net_pkt_frag_insert_debug(struct net_pkt *pkt, struct net_buf *frag, * * @param pkt Network pkt. */ -#if defined(NET_PKT_DEBUG_ENABLED) void net_pkt_print_frags(struct net_pkt *pkt); #else #define net_pkt_print_frags(pkt) #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Get a data buffer from a given pool. * @@ -1606,11 +1642,11 @@ void net_pkt_print_frags(struct net_pkt *pkt); * * @return Network buffer if successful, NULL otherwise. */ -#if !defined(NET_PKT_DEBUG_ENABLED) struct net_buf *net_pkt_get_reserve_data(struct net_buf_pool *pool, size_t min_len, k_timeout_t timeout); #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Get RX DATA buffer from pool. * Normally you should use net_pkt_get_frag() instead. @@ -1625,10 +1661,10 @@ struct net_buf *net_pkt_get_reserve_data(struct net_buf_pool *pool, * * @return Network buffer if successful, NULL otherwise. */ -#if !defined(NET_PKT_DEBUG_ENABLED) struct net_buf *net_pkt_get_reserve_rx_data(size_t min_len, k_timeout_t timeout); #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Get TX DATA buffer from pool. * Normally you should use net_pkt_get_frag() instead. @@ -1643,10 +1679,10 @@ struct net_buf *net_pkt_get_reserve_rx_data(size_t min_len, k_timeout_t timeout) * * @return Network buffer if successful, NULL otherwise. */ -#if !defined(NET_PKT_DEBUG_ENABLED) struct net_buf *net_pkt_get_reserve_tx_data(size_t min_len, k_timeout_t timeout); #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Get a data fragment that might be from user specific * buffer pool or from global DATA pool. @@ -1659,11 +1695,11 @@ struct net_buf *net_pkt_get_reserve_tx_data(size_t min_len, k_timeout_t timeout) * * @return Network buffer if successful, NULL otherwise. */ -#if !defined(NET_PKT_DEBUG_ENABLED) struct net_buf *net_pkt_get_frag(struct net_pkt *pkt, size_t min_len, k_timeout_t timeout); #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Place packet back into the available packets slab * @@ -1673,10 +1709,10 @@ struct net_buf *net_pkt_get_frag(struct net_pkt *pkt, size_t min_len, * @param pkt Network packet to release. * */ -#if !defined(NET_PKT_DEBUG_ENABLED) void net_pkt_unref(struct net_pkt *pkt); #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Increase the packet ref count * @@ -1686,10 +1722,10 @@ void net_pkt_unref(struct net_pkt *pkt); * * @return Network packet if successful, NULL otherwise. */ -#if !defined(NET_PKT_DEBUG_ENABLED) struct net_pkt *net_pkt_ref(struct net_pkt *pkt); #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Increase the packet fragment ref count * @@ -1699,19 +1735,19 @@ struct net_pkt *net_pkt_ref(struct net_pkt *pkt); * * @return a pointer on the referenced Network fragment. */ -#if !defined(NET_PKT_DEBUG_ENABLED) struct net_buf *net_pkt_frag_ref(struct net_buf *frag); #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Decrease the packet fragment ref count * * @param frag Network fragment to unref. */ -#if !defined(NET_PKT_DEBUG_ENABLED) void net_pkt_frag_unref(struct net_buf *frag); #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Delete existing fragment from a packet * @@ -1722,29 +1758,28 @@ void net_pkt_frag_unref(struct net_buf *frag); * @return Pointer to the following fragment, or NULL if it had no * further fragments. */ -#if !defined(NET_PKT_DEBUG_ENABLED) struct net_buf *net_pkt_frag_del(struct net_pkt *pkt, struct net_buf *parent, struct net_buf *frag); #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Add a fragment to a packet at the end of its fragment list * * @param pkt pkt Network packet where to add the fragment * @param frag Fragment to add */ -#if !defined(NET_PKT_DEBUG_ENABLED) void net_pkt_frag_add(struct net_pkt *pkt, struct net_buf *frag); #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Insert a fragment to a packet at the beginning of its fragment list * * @param pkt pkt Network packet where to insert the fragment * @param frag Fragment to insert */ -#if !defined(NET_PKT_DEBUG_ENABLED) void net_pkt_frag_insert(struct net_pkt *pkt, struct net_buf *frag); #endif @@ -1875,6 +1910,7 @@ struct net_pkt *net_pkt_rx_alloc_with_buffer_debug(struct net_if *iface, #endif /* NET_PKT_DEBUG_ENABLED */ /** @endcond */ +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Allocate an initialized net_pkt * @@ -1885,10 +1921,10 @@ struct net_pkt *net_pkt_rx_alloc_with_buffer_debug(struct net_if *iface, * * @return a pointer to a newly allocated net_pkt on success, NULL otherwise. */ -#if !defined(NET_PKT_DEBUG_ENABLED) struct net_pkt *net_pkt_alloc(k_timeout_t timeout); #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Allocate an initialized net_pkt from a specific slab * @@ -1903,11 +1939,11 @@ struct net_pkt *net_pkt_alloc(k_timeout_t timeout); * * @return a pointer to a newly allocated net_pkt on success, NULL otherwise. */ -#if !defined(NET_PKT_DEBUG_ENABLED) struct net_pkt *net_pkt_alloc_from_slab(struct k_mem_slab *slab, k_timeout_t timeout); #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Allocate an initialized net_pkt for RX * @@ -1918,10 +1954,10 @@ struct net_pkt *net_pkt_alloc_from_slab(struct k_mem_slab *slab, * * @return a pointer to a newly allocated net_pkt on success, NULL otherwise. */ -#if !defined(NET_PKT_DEBUG_ENABLED) struct net_pkt *net_pkt_rx_alloc(k_timeout_t timeout); #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Allocate a network packet for a specific network interface. * @@ -1930,7 +1966,6 @@ struct net_pkt *net_pkt_rx_alloc(k_timeout_t timeout); * * @return a pointer to a newly allocated net_pkt on success, NULL otherwise. */ -#if !defined(NET_PKT_DEBUG_ENABLED) struct net_pkt *net_pkt_alloc_on_iface(struct net_if *iface, k_timeout_t timeout); @@ -1943,6 +1978,7 @@ struct net_pkt *net_pkt_rx_alloc_on_iface(struct net_if *iface, #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Allocate buffer for a net_pkt * @@ -1958,13 +1994,13 @@ struct net_pkt *net_pkt_rx_alloc_on_iface(struct net_if *iface, * * @return 0 on success, negative errno code otherwise. */ -#if !defined(NET_PKT_DEBUG_ENABLED) int net_pkt_alloc_buffer(struct net_pkt *pkt, size_t size, enum net_ip_protocol proto, k_timeout_t timeout); #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Allocate buffer for a net_pkt, of specified size, w/o any additional * preconditions @@ -1978,11 +2014,11 @@ int net_pkt_alloc_buffer(struct net_pkt *pkt, * * @return 0 on success, negative errno code otherwise. */ -#if !defined(NET_PKT_DEBUG_ENABLED) int net_pkt_alloc_buffer_raw(struct net_pkt *pkt, size_t size, k_timeout_t timeout); #endif +#if !defined(NET_PKT_DEBUG_ENABLED) /** * @brief Allocate a network packet and buffer at once * @@ -1994,7 +2030,6 @@ int net_pkt_alloc_buffer_raw(struct net_pkt *pkt, size_t size, * * @return a pointer to a newly allocated net_pkt on success, NULL otherwise. */ -#if !defined(NET_PKT_DEBUG_ENABLED) struct net_pkt *net_pkt_alloc_with_buffer(struct net_if *iface, size_t size, sa_family_t family, diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_pkt_filter.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_pkt_filter.h index 753ca347..15406b6e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_pkt_filter.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_pkt_filter.h @@ -27,6 +27,8 @@ extern "C" { /** * @brief Network Packet Filter API * @defgroup net_pkt_filter Network Packet Filter API + * @since 3.0 + * @version 0.8.0 * @ingroup networking * @{ */ @@ -209,6 +211,8 @@ bool npf_remove_all_rules(struct npf_rule_list *rules); /** * @defgroup npf_basic_cond Basic Filter Conditions + * @since 3.0 + * @version 0.8.0 * @ingroup net_pkt_filter * @{ */ @@ -386,6 +390,8 @@ extern npf_test_fn_t npf_ip_src_addr_unmatch; /** * @defgroup npf_eth_cond Ethernet Filter Conditions * @ingroup net_pkt_filter + * @since 3.0 + * @version 0.8.0 * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_stats.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_stats.h index 5a2ac84e..5b28d994 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_stats.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_stats.h @@ -18,6 +18,13 @@ #include #include +#include +#include +#include +#include +#include +#include + #ifdef __cplusplus extern "C" { #endif @@ -25,6 +32,8 @@ extern "C" { /** * @brief Network statistics library * @defgroup net_stats Network Statistics Library + * @since 1.5 + * @version 0.8.0 * @ingroup networking * @{ */ @@ -196,6 +205,34 @@ struct net_stats_ipv6_nd { net_stats_t sent; }; +/** + * @brief IPv6 Path MTU Discovery statistics + */ +struct net_stats_ipv6_pmtu { + /** Number of dropped IPv6 PMTU packets. */ + net_stats_t drop; + + /** Number of received IPv6 PMTU packets. */ + net_stats_t recv; + + /** Number of sent IPv6 PMTU packets. */ + net_stats_t sent; +}; + +/** + * @brief IPv4 Path MTU Discovery statistics + */ +struct net_stats_ipv4_pmtu { + /** Number of dropped IPv4 PMTU packets. */ + net_stats_t drop; + + /** Number of received IPv4 PMTU packets. */ + net_stats_t recv; + + /** Number of sent IPv4 PMTU packets. */ + net_stats_t sent; +}; + /** * @brief IPv6 multicast listener daemon statistics */ @@ -224,6 +261,20 @@ struct net_stats_ipv4_igmp { net_stats_t drop; }; +/** + * @brief DNS statistics + */ +struct net_stats_dns { + /** Number of received DNS queries */ + net_stats_t recv; + + /** Number of sent DNS responses */ + net_stats_t sent; + + /** Number of dropped DNS packets */ + net_stats_t drop; +}; + /** * @brief Network packet transfer times for calculating average TX time */ @@ -363,6 +414,16 @@ struct net_stats { struct net_stats_ipv6_nd ipv6_nd; #endif +#if defined(CONFIG_NET_STATISTICS_IPV6_PMTU) + /** IPv6 Path MTU Discovery statistics */ + struct net_stats_ipv6_pmtu ipv6_pmtu; +#endif + +#if defined(CONFIG_NET_STATISTICS_IPV4_PMTU) + /** IPv4 Path MTU Discovery statistics */ + struct net_stats_ipv4_pmtu ipv4_pmtu; +#endif + #if defined(CONFIG_NET_STATISTICS_MLD) /** IPv6 MLD statistics */ struct net_stats_ipv6_mld ipv6_mld; @@ -373,6 +434,11 @@ struct net_stats { struct net_stats_ipv4_igmp ipv4_igmp; #endif +#if defined(CONFIG_NET_STATISTICS_DNS) + /** DNS statistics */ + struct net_stats_dns dns; +#endif + #if NET_TC_COUNT > 1 /** Traffic class statistics */ struct net_stats_tc tc; @@ -621,6 +687,9 @@ struct net_stats_wifi { /** Total number of unicast packets received and sent */ struct net_stats_pkts unicast; + + /** Total number of dropped packets at received and sent*/ + net_stats_t overrun_count; }; #if defined(CONFIG_NET_STATISTICS_USER_API) @@ -641,6 +710,8 @@ enum net_request_stats_cmd { NET_REQUEST_STATS_CMD_GET_IPV4, NET_REQUEST_STATS_CMD_GET_IPV6, NET_REQUEST_STATS_CMD_GET_IPV6_ND, + NET_REQUEST_STATS_CMD_GET_IPV6_PMTU, + NET_REQUEST_STATS_CMD_GET_IPV4_PMTU, NET_REQUEST_STATS_CMD_GET_ICMP, NET_REQUEST_STATS_CMD_GET_UDP, NET_REQUEST_STATS_CMD_GET_TCP, @@ -648,6 +719,7 @@ enum net_request_stats_cmd { NET_REQUEST_STATS_CMD_GET_PPP, NET_REQUEST_STATS_CMD_GET_PM, NET_REQUEST_STATS_CMD_GET_WIFI, + NET_REQUEST_STATS_CMD_RESET_WIFI, }; /** @endcond */ @@ -707,6 +779,26 @@ NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_IPV6_ND); /** @endcond */ #endif /* CONFIG_NET_STATISTICS_IPV6_ND */ +#if defined(CONFIG_NET_STATISTICS_IPV6_PMTU) +/** Request IPv6 Path MTU Discovery statistics */ +#define NET_REQUEST_STATS_GET_IPV6_PMTU \ + (_NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_IPV6_PMTU) + +/** @cond INTERNAL_HIDDEN */ +NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_IPV6_PMTU); +/** @endcond */ +#endif /* CONFIG_NET_STATISTICS_IPV6_PMTU */ + +#if defined(CONFIG_NET_STATISTICS_IPV4_PMTU) +/** Request IPv4 Path MTU Discovery statistics */ +#define NET_REQUEST_STATS_GET_IPV4_PMTU \ + (_NET_STATS_BASE | NET_REQUEST_STATS_CMD_GET_IPV4_PMTU) + +/** @cond INTERNAL_HIDDEN */ +NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_IPV4_PMTU); +/** @endcond */ +#endif /* CONFIG_NET_STATISTICS_IPV4_PMTU */ + #if defined(CONFIG_NET_STATISTICS_ICMP) /** Request ICMPv4 and ICMPv6 statistics */ #define NET_REQUEST_STATS_GET_ICMP \ @@ -777,8 +869,576 @@ NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_PM); /** @cond INTERNAL_HIDDEN */ NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_GET_WIFI); /** @endcond */ + +/** Reset Wi-Fi statistics*/ +#define NET_REQUEST_STATS_RESET_WIFI \ + (_NET_STATS_BASE | NET_REQUEST_STATS_CMD_RESET_WIFI) + +/** @cond INTERNAL_HIDDEN */ +NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_STATS_RESET_WIFI); +/** @endcond */ #endif /* CONFIG_NET_STATISTICS_WIFI */ +#define NET_STATS_GET_METRIC_NAME(_name) _name +#define NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx) net_stats_##dev_id##_##sfx##_collector +#define NET_STATS_GET_VAR(dev_id, sfx, var) zephyr_net_##var +#define NET_STATS_GET_INSTANCE(dev_id, sfx, _not_used) STRINGIFY(_##dev_id##_##sfx) + +/* The label value is set to be the network interface name. Note that we skip + * the first character (_) when setting the label value. This can be changed + * if there is a way to token paste the instance name without the prefix character. + * Note also that the below macros have some parameters that are not used atm. + */ +#define NET_STATS_PROMETHEUS_COUNTER_DEFINE(_desc, _labelval, _not_used, \ + _collector, _name, _stat_var_ptr) \ + static PROMETHEUS_COUNTER_DEFINE( \ + NET_STATS_GET_METRIC_NAME(_name), \ + _desc, ({ .key = "nic", .value = &_labelval[1] }), \ + &(_collector), _stat_var_ptr) + +#define NET_STATS_PROMETHEUS_GAUGE_DEFINE(_desc, _labelval, _not_used, \ + _collector, _name, _stat_var_ptr) \ + static PROMETHEUS_GAUGE_DEFINE( \ + NET_STATS_GET_METRIC_NAME(_name), \ + _desc, ({ .key = "nic", .value = &_labelval[1] }), \ + &(_collector), _stat_var_ptr) + +#define NET_STATS_PROMETHEUS_SUMMARY_DEFINE(_desc, _labelval, _not_used, \ + _collector, _name, _stat_var_ptr) \ + static PROMETHEUS_SUMMARY_DEFINE( \ + NET_STATS_GET_METRIC_NAME(_name), \ + _desc, ({ .key = "nic", .value = &_labelval[1] }), \ + &(_collector), _stat_var_ptr) + +#define NET_STATS_PROMETHEUS_HISTOGRAM_DEFINE(_desc, _labelval, _not_used, \ + _collector, _name, _stat_var_ptr) \ + static PROMETHEUS_HISTOGRAM_DEFINE( \ + NET_STATS_GET_METRIC_NAME(_name), \ + _desc, ({ .key = "nic", .value = &_labelval[1] }), \ + &(_collector), _stat_var_ptr) + +/* IPv6 layer statistics */ +#if defined(CONFIG_NET_STATISTICS_IPV6) +#define NET_STATS_PROMETHEUS_IPV6(iface, dev_id, sfx) \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv6 packets sent", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_sent), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv6_sent), \ + &(iface)->stats.ipv6.sent); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv6 packets received", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_recv), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv6_recv), \ + &(iface)->stats.ipv6.recv); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv6 packets dropped", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_drop), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv6_drop), \ + &(iface)->stats.ipv6.drop); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv6 packets forwarded", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_forward), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv6_forwarded), \ + &(iface)->stats.ipv6.forwarded) +#else +#define NET_STATS_PROMETHEUS_IPV6(iface, dev_id, sfx) +#endif + +/* IPv4 layer statistics */ +#if defined(CONFIG_NET_STATISTICS_IPV4) +#define NET_STATS_PROMETHEUS_IPV4(iface, dev_id, sfx) \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv4 packets sent", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_sent), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv4_sent), \ + &(iface)->stats.ipv4.sent); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv4 packets received", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_recv), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv4_recv), \ + &(iface)->stats.ipv4.recv); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv4 packets dropped", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_drop), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv4_drop), \ + &(iface)->stats.ipv4.drop); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv4 packets forwarded", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_forwarded), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv4_forwarded), \ + &(iface)->stats.ipv4.forwarded) +#else +#define NET_STATS_PROMETHEUS_IPV4(iface, dev_id, sfx) +#endif + +/* ICMP layer statistics */ +#if defined(CONFIG_NET_STATISTICS_ICMP) +#define NET_STATS_PROMETHEUS_ICMP(iface, dev_id, sfx) \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "ICMP packets sent", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, icmp_sent), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, icmp_sent), \ + &(iface)->stats.icmp.sent); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "ICMP packets received", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, icmp_recv), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, icmp_recv), \ + &(iface)->stats.icmp.recv); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "ICMP packets dropped", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, icmp_drop), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, icmp_drop), \ + &(iface)->stats.icmp.drop); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "ICMP packets checksum error", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, icmp_chkerr), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, icmp_chkerr), \ + &(iface)->stats.icmp.chkerr); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "ICMP packets type error", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, icmp_typeerr), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, icmp_typeerr), \ + &(iface)->stats.icmp.typeerr) +#else +#define NET_STATS_PROMETHEUS_ICMP(iface, dev_id, sfx) +#endif + +/* UDP layer statistics */ +#if defined(CONFIG_NET_STATISTICS_UDP) +#define NET_STATS_PROMETHEUS_UDP(iface, dev_id, sfx) \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "UDP packets sent", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, udp_sent), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, udp_sent), \ + &(iface)->stats.udp.sent); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "UDP packets received", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, udp_recv), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, udp_recv), \ + &(iface)->stats.udp.recv); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "UDP packets dropped", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, udp_drop), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, udp_drop), \ + &(iface)->stats.udp.drop); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "UDP packets checksum error", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, udp_chkerr), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, udp_chkerr), \ + &(iface)->stats.udp.chkerr) +#else +#define NET_STATS_PROMETHEUS_UDP(iface, dev_id, sfx) +#endif + +/* TCP layer statistics */ +#if defined(CONFIG_NET_STATISTICS_TCP) +#define NET_STATS_PROMETHEUS_TCP(iface, dev_id, sfx) \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "TCP bytes sent", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_bytes_sent), \ + "byte_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, tcp_bytes_sent), \ + &(iface)->stats.tcp.bytes.sent); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "TCP bytes received", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_bytes_recv), \ + "byte_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, tcp_bytes_recv), \ + &(iface)->stats.tcp.bytes.received); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "TCP bytes resent", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_bytes_resent), \ + "byte_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, tcp_bytes_resent), \ + &(iface)->stats.tcp.resent); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "TCP packets sent", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_sent), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, tcp_sent), \ + &(iface)->stats.tcp.sent); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "TCP packets received", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_recv), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, tcp_recv), \ + &(iface)->stats.tcp.recv); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "TCP packets dropped", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_drop), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, tcp_drop), \ + &(iface)->stats.tcp.drop); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "TCP packets checksum error", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_chkerr), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, tcp_chkerr), \ + &(iface)->stats.tcp.chkerr); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "TCP packets ack error", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_ackerr), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, tcp_ackerr), \ + &(iface)->stats.tcp.ackerr); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "TCP packets reset error", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_rsterr), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, tcp_rsterr), \ + &(iface)->stats.tcp.rsterr); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "TCP packets retransmitted", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_rexmit), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, tcp_rexmit), \ + &(iface)->stats.tcp.rexmit); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "TCP reset received", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_rst_recv), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, tcp_rst), \ + &(iface)->stats.tcp.rst); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "TCP connection drop", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_conndrop), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, tcp_conndrop), \ + &(iface)->stats.tcp.conndrop); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "TCP connection reset", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, tcp_connrst), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, tcp_connrst), \ + &(iface)->stats.tcp.connrst) +#else +#define NET_STATS_PROMETHEUS_TCP(iface, dev_id, sfx) +#endif + +/* IPv6 Neighbor Discovery statistics */ +#if defined(CONFIG_NET_STATISTICS_IPV6_ND) +#define NET_STATS_PROMETHEUS_IPV6_ND(iface, dev_id, sfx) \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv6 ND packets sent", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_nd_sent), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv6_nd_sent), \ + &(iface)->stats.ipv6_nd.sent); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv6 ND packets received", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_nd_recv), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv6_nd_recv), \ + &(iface)->stats.ipv6_nd.recv); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv6 ND packets dropped", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_nd_drop), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv6_nd_drop), \ + &(iface)->stats.ipv6_nd.drop) +#else +#define NET_STATS_PROMETHEUS_IPV6_ND(iface, dev_id, sfx) +#endif + +/* IPv6 Path MTU Discovery statistics */ +#if defined(CONFIG_NET_STATISTICS_IPV6_PMTU) +#define NET_STATS_PROMETHEUS_IPV6_PMTU(iface, dev_id, sfx) \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv6 PMTU packets sent", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_pmtu_sent), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv6_pmtu_sent), \ + &(iface)->stats.ipv6_pmtu.sent); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv6 PMTU packets received", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_pmtu_recv), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv6_pmtu_recv), \ + &(iface)->stats.ipv6_pmtu.recv); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv6 PMTU packets dropped", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_pmtu_drop), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv6_pmtu_drop), \ + &(iface)->stats.ipv6_pmtu.drop) +#else +#define NET_STATS_PROMETHEUS_IPV6_PMTU(iface, dev_id, sfx) +#endif + +/* IPv4 Path MTU Discovery statistics */ +#if defined(CONFIG_NET_STATISTICS_IPV4_PMTU) +#define NET_STATS_PROMETHEUS_IPV4_PMTU(iface, dev_id, sfx) \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv4 PMTU packets sent", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_pmtu_sent), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv4_pmtu_sent), \ + &(iface)->stats.ipv4_pmtu.sent); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv4 PMTU packets received", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_pmtu_recv), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv4_pmtu_recv), \ + &(iface)->stats.ipv4_pmtu.recv); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv4 PMTU packets dropped", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_pmtu_drop), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv4_pmtu_drop), \ + &(iface)->stats.ipv4_pmtu.drop) +#else +#define NET_STATS_PROMETHEUS_IPV4_PMTU(iface, dev_id, sfx) +#endif + +/* IPv6 Multicast Listener Discovery statistics */ +#if defined(CONFIG_NET_STATISTICS_MLD) +#define NET_STATS_PROMETHEUS_MLD(iface, dev_id, sfx) \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv6 MLD packets sent", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_mld_sent), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv6_mld_sent), \ + &(iface)->stats.ipv6_mld.sent); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv6 MLD packets received", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_mld_recv), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv6_mld_recv), \ + &(iface)->stats.ipv6_mld.recv); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv6 MLD packets dropped", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv6_mld_drop), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv6_mld_drop), \ + &(iface)->stats.ipv6_mld.drop) +#else +#define NET_STATS_PROMETHEUS_MLD(iface, dev_id, sfx) +#endif + +/* IPv4 IGMP statistics */ +#if defined(CONFIG_NET_STATISTICS_IGMP) +#define NET_STATS_PROMETHEUS_IGMP(iface, dev_id, sfx) \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv4 IGMP packets sent", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_igmp_sent), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv4_igmp_sent), \ + &(iface)->stats.ipv4_igmp.sent); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv4 IGMP packets received", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_igmp_recv), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv4_igmp_recv), \ + &(iface)->stats.ipv4_igmp.recv); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IPv4 IGMP packets dropped", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ipv4_igmp_drop), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ipv4_igmp_drop), \ + &(iface)->stats.ipv4_igmp.drop) +#else +#define NET_STATS_PROMETHEUS_IGMP(iface, dev_id, sfx) +#endif + +/* DNS statistics */ +#if defined(CONFIG_NET_STATISTICS_DNS) +#define NET_STATS_PROMETHEUS_DNS(iface, dev_id, sfx) \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "DNS packets sent", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, dns_sent), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, dns_sent), \ + &(iface)->stats.dns.sent); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "DNS packets received", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, dns_recv), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, dns_recv), \ + &(iface)->stats.dns.recv); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "DNS packets dropped", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, dns_drop), \ + "packet_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, dns_drop), \ + &(iface)->stats.dns.drop) +#else +#define NET_STATS_PROMETHEUS_DNS(iface, dev_id, sfx) +#endif + +/* TX time statistics */ +#if defined(CONFIG_NET_PKT_TXTIME_STATS) +#define NET_STATS_PROMETHEUS_TX_TIME(iface, dev_id, sfx) \ + NET_STATS_PROMETHEUS_SUMMARY_DEFINE( \ + "TX time in microseconds", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, tx_time), \ + "time", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, tx_time), \ + &(iface)->stats.tx_time) +#else +#define NET_STATS_PROMETHEUS_TX_TIME(iface, dev_id, sfx) +#endif + +/* RX time statistics */ +#if defined(CONFIG_NET_PKT_RXTIME_STATS) +#define NET_STATS_PROMETHEUS_RX_TIME(iface, dev_id, sfx) \ + NET_STATS_PROMETHEUS_SUMMARY_DEFINE( \ + "RX time in microseconds", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, rx_time), \ + "time", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, rx_time), \ + &(iface)->stats.rx_time) +#else +#define NET_STATS_PROMETHEUS_RX_TIME(iface, dev_id, sfx) +#endif + +/* Per network interface statistics via Prometheus */ +#define NET_STATS_PROMETHEUS(iface, dev_id, sfx) \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "Processing error", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, process_error), \ + "error_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, processing_error), \ + &(iface)->stats.processing_error); \ + /* IP layer error statistics */ \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IP proto error", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ip_proto_error), \ + "error_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ip_errors_protoerr), \ + &(iface)->stats.ip_errors.protoerr); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IP version/header len error", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ip_vhl_error), \ + "error_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ip_errors_vhlerr), \ + &(iface)->stats.ip_errors.vhlerr); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IP header len error (high byte)", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ip_hblen_error), \ + "error_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ip_errors_hblenerr), \ + &(iface)->stats.ip_errors.hblenerr); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IP header len error (low byte)", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ip_lblen_error), \ + "error_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ip_errors_lblenerr), \ + &(iface)->stats.ip_errors.lblenerr); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IP fragment error", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ip_frag_error), \ + "error_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ip_errors_fragerr), \ + &(iface)->stats.ip_errors.fragerr); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "IP checksum error", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, ip_chk_error), \ + "error_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, ip_errors_chkerr), \ + &(iface)->stats.ip_errors.chkerr); \ + /* General network statistics */ \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "Bytes received", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, bytes_recv), \ + "byte_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, bytes_recv), \ + &(iface)->stats.bytes.received); \ + NET_STATS_PROMETHEUS_COUNTER_DEFINE( \ + "Bytes sent", \ + NET_STATS_GET_INSTANCE(dev_id, sfx, bytes_sent), \ + "byte_count", \ + NET_STATS_GET_COLLECTOR_NAME(dev_id, sfx), \ + NET_STATS_GET_VAR(dev_id, sfx, bytes_sent), \ + &(iface)->stats.bytes.sent); \ + NET_STATS_PROMETHEUS_IPV6(iface, dev_id, sfx); \ + NET_STATS_PROMETHEUS_IPV4(iface, dev_id, sfx); \ + NET_STATS_PROMETHEUS_ICMP(iface, dev_id, sfx); \ + NET_STATS_PROMETHEUS_UDP(iface, dev_id, sfx); \ + NET_STATS_PROMETHEUS_TCP(iface, dev_id, sfx); \ + NET_STATS_PROMETHEUS_IPV6_ND(iface, dev_id, sfx); \ + NET_STATS_PROMETHEUS_IPV6_PMTU(iface, dev_id, sfx); \ + NET_STATS_PROMETHEUS_IPV4_PMTU(iface, dev_id, sfx); \ + NET_STATS_PROMETHEUS_MLD(iface, dev_id, sfx); \ + NET_STATS_PROMETHEUS_IGMP(iface, dev_id, sfx); \ + NET_STATS_PROMETHEUS_DNS(iface, dev_id, sfx); \ + NET_STATS_PROMETHEUS_TX_TIME(iface, dev_id, sfx); \ + NET_STATS_PROMETHEUS_RX_TIME(iface, dev_id, sfx) + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_time.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_time.h index 57a36517..def9ab01 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_time.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_time.h @@ -14,6 +14,8 @@ * https://github.com/torvalds/linux/blob/master/[tools/]include/linux/time64.h * * @defgroup net_time Network time representation. + * @since 3.5 + * @version 0.1.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_timeout.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_timeout.h index 87d31264..5e4f89fb 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_timeout.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/net_timeout.h @@ -17,6 +17,8 @@ /** * @brief Network long timeout primitives and helpers * @defgroup net_timeout Network long timeout primitives and helpers + * @since 1.14 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/offloaded_netdev.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/offloaded_netdev.h index 009a0666..fedfae74 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/offloaded_netdev.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/offloaded_netdev.h @@ -25,6 +25,8 @@ extern "C" { /** * @brief Offloaded Net Devices * @defgroup offloaded_netdev Offloaded Net Devices + * @since 3.4 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/openthread.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/openthread.h index 1e3619e5..0d83109e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/openthread.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/openthread.h @@ -14,6 +14,8 @@ /** * @brief OpenThread Layer 2 abstraction layer * @defgroup openthread OpenThread L2 abstraction layer + * @since 1.11 + * @version 0.8.0 * @ingroup ieee802154 * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/phy.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/phy.h index 160b31df..0cffda13 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/phy.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/phy.h @@ -16,6 +16,8 @@ /** * @brief Ethernet PHY Interface * @defgroup ethernet_phy Ethernet PHY Interface + * @since 2.7 + * @version 0.8.0 * @ingroup networking * @{ */ @@ -40,6 +42,10 @@ enum phy_link_speed { LINK_HALF_1000BASE_T = BIT(4), /** 1000Base-T Full-Duplex */ LINK_FULL_1000BASE_T = BIT(5), + /** 2.5GBase-T Full-Duplex */ + LINK_FULL_2500BASE_T = BIT(6), + /** 5GBase-T Full-Duplex */ + LINK_FULL_5000BASE_T = BIT(7), }; /** @@ -49,7 +55,7 @@ enum phy_link_speed { * * @return True if link is full duplex, false if not. */ -#define PHY_LINK_IS_FULL_DUPLEX(x) (x & (BIT(1) | BIT(3) | BIT(5))) +#define PHY_LINK_IS_FULL_DUPLEX(x) (x & (BIT(1) | BIT(3) | BIT(5) | BIT(6) | BIT(7))) /** * @brief Check if phy link speed is 1 Gbit/sec. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ppp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ppp.h index da31eca0..fc31f347 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ppp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ppp.h @@ -24,6 +24,8 @@ extern "C" { /** * @brief Point-to-point (PPP) L2/driver support functions * @defgroup ppp PPP L2/driver Support Functions + * @since 2.0 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/collector.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/collector.h new file mode 100644 index 00000000..08d93cf4 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/collector.h @@ -0,0 +1,177 @@ +/* + * Copyright (c) 2024 Mustafa Abdullah Kus, Sparse Technology + * Copyright (c) 2024 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_PROMETHEUS_COLLECTOR_H_ +#define ZEPHYR_INCLUDE_PROMETHEUS_COLLECTOR_H_ + +/** + * @file + * + * @brief Prometheus collector APIs. + * + * @defgroup prometheus Prometheus API + * @since 4.0 + * @version 0.1.0 + * @ingroup networking + * @{ + */ + +#include +#include +#include + +#include + +struct prometheus_collector; + +/** + * @typedef prometheus_scrape_cb_t + * @brief Callback used to scrape a collector for a specific metric. + * + * @param collector A valid pointer on the collector to scrape + * @param metric A valid pointer on the metric to scrape + * @param user_data A valid pointer to a user data or NULL + * + * @return 0 if successful, otherwise a negative error code. + */ +typedef int (*prometheus_scrape_cb_t)(struct prometheus_collector *collector, + struct prometheus_metric *metric, + void *user_data); + +/** + * @brief Prometheus collector definition + * + * This structure defines a Prometheus collector. + */ +struct prometheus_collector { + /** Name of the collector */ + const char *name; + /** Array of metrics associated with the collector */ + sys_slist_t metrics; + /** Mutex to protect the metrics list manipulation */ + struct k_mutex lock; + /** User callback function. If set, then the metric data is fetched + * via the function callback. + */ + prometheus_scrape_cb_t user_cb; + /** User data */ + void *user_data; +}; + +/** + * @brief Prometheus Collector definition. + * + * This macro defines a Collector. + * + * @param _name The collector's name. + * @param ... Optional user callback function. If set, this function is called + * when the collector is scraped. The function should be of type + * prometheus_scrape_cb_t. + * Optional user data to pass to the user callback function. + */ +#define PROMETHEUS_COLLECTOR_DEFINE(_name, ...) \ + STRUCT_SECTION_ITERABLE(prometheus_collector, _name) = { \ + .name = STRINGIFY(_name), \ + .metrics = SYS_SLIST_STATIC_INIT(&_name.metrics), \ + .lock = Z_MUTEX_INITIALIZER(_name.lock), \ + .user_cb = COND_CODE_0( \ + NUM_VA_ARGS_LESS_1( \ + LIST_DROP_EMPTY(__VA_ARGS__, _)), \ + (NULL), \ + (GET_ARG_N(1, __VA_ARGS__))), \ + .user_data = COND_CODE_0( \ + NUM_VA_ARGS_LESS_1(__VA_ARGS__), (NULL), \ + (GET_ARG_N(1, \ + GET_ARGS_LESS_N(1, __VA_ARGS__)))), \ + } + +/** + * @brief Register a metric with a Prometheus collector + * + * Registers the specified metric with the given collector. + * + * @param collector Pointer to the collector to register the metric with. + * @param metric Pointer to the metric to register. + * + * @return 0 if successful, otherwise a negative error code. + * @retval -EINVAL Invalid arguments. + * @retval -ENOMEM Not enough memory to register the metric. + */ +int prometheus_collector_register_metric(struct prometheus_collector *collector, + struct prometheus_metric *metric); + +/** + * @brief Get a metric from a Prometheus collector + * + * Retrieves the metric with the specified name from the given collector. + * + * @param collector Pointer to the collector to retrieve the metric from. + * @param name Name of the metric to retrieve. + * @return Pointer to the retrieved metric, or NULL if not found. + */ +const void *prometheus_collector_get_metric(struct prometheus_collector *collector, + const char *name); + +/** @cond INTERNAL_HIDDEN */ + +enum prometheus_walk_state { + PROMETHEUS_WALK_START, + PROMETHEUS_WALK_CONTINUE, + PROMETHEUS_WALK_STOP, +}; + +struct prometheus_collector_walk_context { + struct prometheus_collector *collector; + struct prometheus_metric *metric; + struct prometheus_metric *tmp; + enum prometheus_walk_state state; +}; + +/** @endcond */ + +/** + * @brief Walk through all metrics in a Prometheus collector and format them + * into a buffer. + * + * @param ctx Pointer to the walker context. + * @param buffer Pointer to the buffer to store the formatted metrics. + * @param buffer_size Size of the buffer. + * @return 0 if successful and we went through all metrics, -EAGAIN if we + * need to call this function again, any other negative error code + * means an error occurred. + */ +int prometheus_collector_walk_metrics(struct prometheus_collector_walk_context *ctx, + uint8_t *buffer, size_t buffer_size); + +/** + * @brief Initialize the walker context to walk through all metrics. + * + * @param ctx Pointer to the walker context. + * @param collector Pointer to the collector to walk through. + * + * @return 0 if successful, otherwise a negative error code. + */ +static inline int prometheus_collector_walk_init(struct prometheus_collector_walk_context *ctx, + struct prometheus_collector *collector) +{ + if (collector == NULL) { + return -EINVAL; + } + + ctx->collector = collector; + ctx->state = PROMETHEUS_WALK_START; + ctx->metric = NULL; + ctx->tmp = NULL; + + return 0; +} + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_PROMETHEUS_COLLECTOR_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/counter.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/counter.h new file mode 100644 index 00000000..591e7ec2 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/counter.h @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2024 Mustafa Abdullah Kus, Sparse Technology + * Copyright (c) 2024 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_PROMETHEUS_COUNTER_H_ +#define ZEPHYR_INCLUDE_PROMETHEUS_COUNTER_H_ + +/** + * @file + * + * @brief Prometheus counter APIs. + * + * @addtogroup prometheus + * @{ + */ + +#include + +#include +#include + +/** + * @brief Type used to represent a Prometheus counter metric. + * + * * References + * * See https://prometheus.io/docs/concepts/metric_types/#counter + */ +struct prometheus_counter { + /** Base of the Prometheus counter metric */ + struct prometheus_metric base; + /** Value of the Prometheus counter metric */ + uint64_t value; + /** User data */ + void *user_data; +}; + +/** + * @brief Prometheus Counter definition. + * + * This macro defines a Counter metric. If you want to make the counter static, + * then add "static" keyword before the PROMETHEUS_COUNTER_DEFINE. + * + * @param _name The counter metric name + * @param _desc Counter description + * @param _label Label for the metric. Additional labels can be added at runtime. + * @param _collector Collector to map this metric. Can be set to NULL if it not yet known. + * @param ... Optional user data specific to this metric instance. + * + * Example usage: + * @code{.c} + * + * PROMETHEUS_COUNTER_DEFINE(http_request_counter, "HTTP request counter", + * ({ .key = "http_request", .value = "request_count" }), + * NULL); + * @endcode + */ +#define PROMETHEUS_COUNTER_DEFINE(_name, _desc, _label, _collector, ...) \ + STRUCT_SECTION_ITERABLE(prometheus_counter, _name) = { \ + .base.name = STRINGIFY(_name), \ + .base.type = PROMETHEUS_COUNTER, \ + .base.description = _desc, \ + .base.labels[0] = __DEBRACKET _label, \ + .base.num_labels = 1, \ + .base.collector = _collector, \ + .value = 0ULL, \ + .user_data = COND_CODE_0( \ + NUM_VA_ARGS_LESS_1(LIST_DROP_EMPTY(__VA_ARGS__, _)), \ + (NULL), \ + (GET_ARG_N(1, __VA_ARGS__))), \ + } + +/** + * @brief Increment the value of a Prometheus counter metric + * Increments the value of the specified counter metric by arbitrary amount. + * @param counter Pointer to the counter metric to increment. + * @param value Amount to increment the counter by. + * @return 0 on success, negative errno on error. + */ +int prometheus_counter_add(struct prometheus_counter *counter, uint64_t value); + +/** + * @brief Increment the value of a Prometheus counter metric + * Increments the value of the specified counter metric by one. + * @param counter Pointer to the counter metric to increment. + * @return 0 on success, negative errno on error. + */ +static inline int prometheus_counter_inc(struct prometheus_counter *counter) +{ + return prometheus_counter_add(counter, 1ULL); +} + +/** + * @brief Set the counter value to specific value. + * The new value must be higher than the current value. This function can be used + * if we cannot add individual increments to the counter but need to periodically + * update the counter value. This function will add the difference between the + * new value and the old value to the counter. + * @param counter Pointer to the counter metric to increment. + * @param value New value of the counter. + * @return 0 on success, negative errno on error. + */ +int prometheus_counter_set(struct prometheus_counter *counter, uint64_t value); + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_PROMETHEUS_COUNTER_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/formatter.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/formatter.h new file mode 100644 index 00000000..393fe4c6 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/formatter.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2024 Mustafa Abdullah Kus, Sparse Technology + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_PROMETHEUS_FORMATTER_H_ +#define ZEPHYR_INCLUDE_PROMETHEUS_FORMATTER_H_ + +/** + * @file + * + * @brief Prometheus formatter APIs. + * + * @addtogroup prometheus + * @{ + */ + +#include + +/** + * @brief Format exposition data for Prometheus + * + * Formats the exposition data collected by the specified collector into the provided buffer. + * Function will format metric data according to Prometheus text-based format + * + * @param collector Pointer to the collector containing the data to format. + * @param buffer Pointer to the buffer where the formatted exposition data will be stored. + * @param buffer_size Size of the buffer. + * + * @return 0 on success, negative errno on error. + */ +int prometheus_format_exposition(struct prometheus_collector *collector, char *buffer, + size_t buffer_size); + +/** + * @brief Format exposition data for one metric for Prometheus + * + * Formats the exposition data of one specific metric into the provided buffer. + * Function will format metric data according to Prometheus text-based format. + * + * @param metric Pointer to the metric containing the data to format. + * @param buffer Pointer to the buffer where the formatted exposition data will be stored. + * @param buffer_size Size of the buffer. + * @param written How many bytes have been written to the buffer. + * + * @return 0 on success, negative errno on error. + */ +int prometheus_format_one_metric(struct prometheus_metric *metric, char *buffer, + size_t buffer_size, int *written); + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_PROMETHEUS_FORMATTER_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/gauge.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/gauge.h new file mode 100644 index 00000000..0703e381 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/gauge.h @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2024 Mustafa Abdullah Kus, Sparse Technology + * Copyright (c) 2024 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_PROMETHEUS_GAUGE_H_ +#define ZEPHYR_INCLUDE_PROMETHEUS_GAUGE_H_ + +/** + * @file + * + * @brief Prometheus gauge APIs. + * + * @addtogroup prometheus + * @{ + */ + +#include +#include + +/** + * @brief Type used to represent a Prometheus gauge metric. + * + * * References + * * See https://prometheus.io/docs/concepts/metric_types/#gauge + */ +struct prometheus_gauge { + /** Base of the Prometheus gauge metric */ + struct prometheus_metric base; + /** Value of the Prometheus gauge metric */ + double value; + /** User data */ + void *user_data; +}; + +/** + * @brief Prometheus Gauge definition. + * + * This macro defines a Gauge metric. If you want to make the gauge static, + * then add "static" keyword before the PROMETHEUS_GAUGE_DEFINE. + * + * @param _name The gauge metric name. + * @param _desc Gauge description + * @param _label Label for the metric. Additional labels can be added at runtime. + * @param _collector Collector to map this metric. Can be set to NULL if it not yet known. + * @param ... Optional user data specific to this metric instance. + * + * Example usage: + * @code{.c} + * + * PROMETHEUS_GAUGE_DEFINE(http_request_gauge, "HTTP request gauge", + * ({ .key = "http_request", .value = "request_count" }), + * NULL); + * + * @endcode + */ +#define PROMETHEUS_GAUGE_DEFINE(_name, _desc, _label, _collector, ...) \ + STRUCT_SECTION_ITERABLE(prometheus_gauge, _name) = { \ + .base.name = STRINGIFY(_name), \ + .base.type = PROMETHEUS_GAUGE, \ + .base.description = _desc, \ + .base.labels[0] = __DEBRACKET _label, \ + .base.num_labels = 1, \ + .base.collector = _collector, \ + .value = 0.0, \ + .user_data = COND_CODE_0( \ + NUM_VA_ARGS_LESS_1(LIST_DROP_EMPTY(__VA_ARGS__, _)), \ + (NULL), \ + (GET_ARG_N(1, __VA_ARGS__))), \ + } + +/** + * @brief Set the value of a Prometheus gauge metric + * + * Sets the value of the specified gauge metric to the given value. + * + * @param gauge Pointer to the gauge metric to set. + * @param value Value to set the gauge metric to. + * + * @return 0 on success, -EINVAL if the value is negative. + */ +int prometheus_gauge_set(struct prometheus_gauge *gauge, double value); + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_PROMETHEUS_GAUGE_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/histogram.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/histogram.h new file mode 100644 index 00000000..dbf5538f --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/histogram.h @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2024 Mustafa Abdullah Kus, Sparse Technology + * Copyright (c) 2024 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_PROMETHEUS_HISTOGRAM_H_ +#define ZEPHYR_INCLUDE_PROMETHEUS_HISTOGRAM_H_ + +/** + * @file + * + * @brief Prometheus histogram APIs. + * + * @addtogroup prometheus + * @{ + */ + +#include +#include + +#include + +/** + * @brief Prometheus histogram bucket definition. + * + * This structure defines a Prometheus histogram bucket. + */ +struct prometheus_histogram_bucket { + /** Upper bound value of bucket */ + double upper_bound; + /** Cumulative count of observations in the bucket */ + unsigned long count; +}; + +/** + * @brief Type used to represent a Prometheus histogram metric. + * + * * References + * * See https://prometheus.io/docs/concepts/metric_types/#histogram + */ +struct prometheus_histogram { + /** Base of the Prometheus histogram metric */ + struct prometheus_metric base; + /** Array of buckets in the histogram */ + struct prometheus_histogram_bucket *buckets; + /** Number of buckets in the histogram */ + size_t num_buckets; + /** Sum of all observed values in the histogram */ + double sum; + /** Total count of observations in the histogram */ + unsigned long count; + /** User data */ + void *user_data; +}; + +/** + * @brief Prometheus Histogram definition. + * + * This macro defines a Histogram metric. If you want to make the histogram static, + * then add "static" keyword before the PROMETHEUS_HISTOGRAM_DEFINE. + * + * @param _name The histogram metric name. + * @param _desc Histogram description + * @param _label Label for the metric. Additional labels can be added at runtime. + * @param _collector Collector to map this metric. Can be set to NULL if it not yet known. + * @param ... Optional user data specific to this metric instance. + * + * Example usage: + * @code{.c} + * + * PROMETHEUS_HISTOGRAM_DEFINE(http_request_histogram, "HTTP request histogram", + * ({ .key = "request_latency", .value = "request_latency_seconds" }), + * NULL); + * + * @endcode + */ +#define PROMETHEUS_HISTOGRAM_DEFINE(_name, _desc, _label, _collector, ...) \ + STRUCT_SECTION_ITERABLE(prometheus_histogram, _name) = { \ + .base.name = STRINGIFY(_name), \ + .base.type = PROMETHEUS_HISTOGRAM, \ + .base.description = _desc, \ + .base.labels[0] = __DEBRACKET _label, \ + .base.num_labels = 1, \ + .base.collector = _collector, \ + .buckets = NULL, \ + .num_buckets = 0, \ + .sum = 0.0, \ + .count = 0U, \ + .user_data = COND_CODE_0( \ + NUM_VA_ARGS_LESS_1(LIST_DROP_EMPTY(__VA_ARGS__, _)), \ + (NULL), \ + (GET_ARG_N(1, __VA_ARGS__))), \ + } + +/** + * @brief Observe a value in a Prometheus histogram metric + * + * Observes the specified value in the given histogram metric. + * + * @param histogram Pointer to the histogram metric to observe. + * @param value Value to observe in the histogram metric. + * @return 0 on success, -EINVAL if the value is negative. + */ +int prometheus_histogram_observe(struct prometheus_histogram *histogram, double value); + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_PROMETHEUS_HISTOGRAM_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/label.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/label.h new file mode 100644 index 00000000..7d348d43 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/label.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2024 Mustafa Abdullah Kus, Sparse Technology + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_PROMETHEUS_LABEL_H_ +#define ZEPHYR_INCLUDE_PROMETHEUS_LABEL_H_ + +/** + * @file + * + * @brief Prometheus label interface. + * + * @addtogroup prometheus + * @{ + */ + +#if defined(CONFIG_PROMETHEUS) +/** Maximum number of labels per metric */ +#define MAX_PROMETHEUS_LABELS_PER_METRIC CONFIG_PROMETHEUS_LABEL_MAX_COUNT +#else +#define MAX_PROMETHEUS_LABELS_PER_METRIC 1 +#endif /* CONFIG_PROMETHEUS */ + +/** + * @brief Prometheus label definition. + * + * This structure defines a Prometheus label. + */ +struct prometheus_label { + /** Prometheus metric label key */ + const char *key; + /** Prometheus metric label value */ + const char *value; +}; + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_PROMETHEUS_LABEL_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/metric.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/metric.h new file mode 100644 index 00000000..bbe3a0e3 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/metric.h @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2024 Mustafa Abdullah Kus, Sparse Technology + * Copyright (c) 2024 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_PROMETHEUS_METRIC_H_ +#define ZEPHYR_INCLUDE_PROMETHEUS_METRIC_H_ + +/** + * @file + * + * @brief Prometheus metric interface. + * + * @addtogroup prometheus + * @{ + */ + +#include +#include +#include + +/** + * @brief Prometheus metric types. + * + * * References + * * See https://prometheus.io/docs/concepts/metric_types + */ +enum prometheus_metric_type { + /** Prometheus Counter */ + PROMETHEUS_COUNTER = 0, + /** Prometheus Gauge */ + PROMETHEUS_GAUGE, + /** Prometheus Summary */ + PROMETHEUS_SUMMARY, + /** Prometheus Histogram */ + PROMETHEUS_HISTOGRAM, +}; + +/** + * @brief Type used to represent a Prometheus metric base. + * + * Every metric has a prometheus_metric structure associated used + * to control the metric access and usage. + */ +struct prometheus_metric { + /** Slist metric list node */ + sys_snode_t node; + /** Back pointer to the collector that this metric belongs to */ + struct prometheus_collector *collector; + /** Back pointer to the actual metric (counter, gauge, etc.). + * This is just a temporary solution, ultimate goal is to place + * this generic metrict struct into the actual metric struct. + */ + void *metric; + /** Type of the Prometheus metric. */ + enum prometheus_metric_type type; + /** Name of the Prometheus metric. */ + const char *name; + /** Description of the Prometheus metric. */ + const char *description; + /** Labels associated with the Prometheus metric. */ + struct prometheus_label labels[MAX_PROMETHEUS_LABELS_PER_METRIC]; + /** Number of labels associated with the Prometheus metric. */ + int num_labels; + /** User defined data */ + void *user_data; + /* Add any other necessary fields */ +}; + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_PROMETHEUS_METRIC_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/summary.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/summary.h new file mode 100644 index 00000000..d36b34c6 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/prometheus/summary.h @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2024 Mustafa Abdullah Kus, Sparse Technology + * Copyright (c) 2024 Nordic Semiconductor + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_PROMETHEUS_SUMMARY_H_ +#define ZEPHYR_INCLUDE_PROMETHEUS_SUMMARY_H_ + +/** + * @file + * + * @brief Prometheus summary APIs. + * + * @addtogroup prometheus + * @{ + */ + +#include +#include + +#include + +/** + * @brief Prometheus summary quantile definition. + * + * This structure defines a Prometheus summary quantile. + */ +struct prometheus_summary_quantile { + /** Quantile of the summary */ + double quantile; + /** Value of the quantile */ + double value; + /** User data */ + void *user_data; +}; + +/** + * @brief Type used to represent a Prometheus summary metric. + * + * * References + * * See https://prometheus.io/docs/concepts/metric_types/#summary + */ +struct prometheus_summary { + /** Base of the Prometheus summary metric */ + struct prometheus_metric base; + /** Array of quantiles associated with the Prometheus summary metric */ + struct prometheus_summary_quantile *quantiles; + /** Number of quantiles associated with the Prometheus summary metric */ + size_t num_quantiles; + /** Sum of all observed values in the summary metric */ + double sum; + /** Total count of observations in the summary metric */ + unsigned long count; + /** User data */ + void *user_data; +}; + +/** + * @brief Prometheus Summary definition. + * + * This macro defines a Summary metric. If you want to make the summary static, + * then add "static" keyword before the PROMETHEUS_SUMMARY_DEFINE. + * + * @param _name The summary metric name. + * @param _desc Summary description + * @param _label Label for the metric. Additional labels can be added at runtime. + * @param _collector Collector to map this metric. Can be set to NULL if it not yet known. + * @param ... Optional user data specific to this metric instance. + * + * + * Example usage: + * @code{.c} + * + * PROMETHEUS_SUMMARY_DEFINE(http_request_summary, "HTTP request summary", + * ({ .key = "request_latency", + * .value = "request_latency_seconds" }), NULL); + * + * @endcode + */ + +#define PROMETHEUS_SUMMARY_DEFINE(_name, _desc, _label, _collector, ...) \ + STRUCT_SECTION_ITERABLE(prometheus_summary, _name) = { \ + .base.name = STRINGIFY(_name), \ + .base.type = PROMETHEUS_SUMMARY, \ + .base.description = _desc, \ + .base.labels[0] = __DEBRACKET _label, \ + .base.num_labels = 1, \ + .base.collector = _collector, \ + .quantiles = NULL, \ + .num_quantiles = 0, \ + .sum = 0.0, \ + .count = 0U, \ + .user_data = COND_CODE_0( \ + NUM_VA_ARGS_LESS_1(LIST_DROP_EMPTY(__VA_ARGS__, _)), \ + (NULL), \ + (GET_ARG_N(1, __VA_ARGS__))), \ + } + +/** + * @brief Observes a value in a Prometheus summary metric + * + * Observes the specified value in the given summary metric. + * + * @param summary Pointer to the summary metric to observe. + * @param value Value to observe in the summary metric. + * @return 0 on success, -EINVAL if the value is negative. + */ +int prometheus_summary_observe(struct prometheus_summary *summary, double value); + +/** + * @brief Set the summary value to specific value. + * The new value must be higher than the current value. This function can be used + * if we cannot add individual increments to the summary but need to periodically + * update the counter value. This function will add the difference between the + * new value and the old value to the summary fields. + * @param summary Pointer to the summary metric to increment. + * @param value New value of the summary. + * @param count New counter value of the summary. + * @return 0 on success, negative errno on error. + */ +int prometheus_summary_observe_set(struct prometheus_summary *summary, + double value, unsigned long count); + +/** + * @} + */ + +#endif /* ZEPHYR_INCLUDE_PROMETHEUS_SUMMARY_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/promiscuous.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/promiscuous.h index 30d47b2c..431715c5 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/promiscuous.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/promiscuous.h @@ -17,6 +17,8 @@ /** * @brief Promiscuous mode support. * @defgroup promiscuous Promiscuous mode + * @since 1.13 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ptp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ptp.h index d57c47e7..f61f32d9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ptp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ptp.h @@ -17,6 +17,8 @@ /** * @brief Precision Time Protocol (PTP) support * @defgroup ptp PTP support + * @since 3.7 + * @version 0.1.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ptp_time.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ptp_time.h index 269325cd..f2e5409d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ptp_time.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/ptp_time.h @@ -18,6 +18,8 @@ /** * @brief Precision Time Protocol time specification * @defgroup ptp_time PTP time + * @since 1.13 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/sntp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/sntp.h index 68a733d3..66128f76 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/sntp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/sntp.h @@ -22,6 +22,8 @@ extern "C" { /** * @brief Simple Network Time Protocol API * @defgroup sntp SNTP + * @since 1.10 + * @version 0.8.0 * @ingroup networking * @{ */ @@ -71,13 +73,24 @@ int sntp_init(struct sntp_ctx *ctx, struct sockaddr *addr, * * @param ctx Address of sntp context. * @param timeout Timeout of waiting for sntp response (in milliseconds). - * @param time Timestamp including integer and fractional seconds since + * @param ts Timestamp including integer and fractional seconds since + * 1 Jan 1970 (output). + * + * @return 0 if ok, <0 if error (-ETIMEDOUT if timeout). + */ +int sntp_query(struct sntp_ctx *ctx, uint32_t timeout, struct sntp_time *ts); + +/** + * @brief Attempt to receive an SNTP response after issuing a query + * + * @param ctx Address of sntp context. + * @param timeout Timeout of waiting for sntp response (in milliseconds). + * @param ts Timestamp including integer and fractional seconds since * 1 Jan 1970 (output). * * @return 0 if ok, <0 if error (-ETIMEDOUT if timeout). */ -int sntp_query(struct sntp_ctx *ctx, uint32_t timeout, - struct sntp_time *time); +int sntp_recv_response(struct sntp_ctx *ctx, uint32_t timeout, struct sntp_time *ts); /** * @brief Release SNTP context diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket.h index 62f1387e..58c3fb03 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket.h @@ -18,6 +18,8 @@ /** * @brief BSD Sockets compatible API * @defgroup bsd_sockets BSD Sockets compatible API + * @since 1.9 + * @version 1.0.0 * @ingroup networking * @{ */ @@ -93,8 +95,10 @@ extern "C" { /** @} */ /** - * @defgroup secure_sockets_options Socket options for TLS - * @{ + * @defgroup secure_sockets_options Socket options for TLS + * @since 1.13 + * @version 0.8.0 + * @{ */ /** * @name Socket options for TLS @@ -328,13 +332,11 @@ __syscall void *zsock_get_context_object(int sock); * @brief Create a network socket * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/socket.html * for normative description. - * This function is also exposed as ``socket()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `socket()` + * if @kconfig{CONFIG_POSIX_API} is defined. * * If CONFIG_USERSPACE is enabled, the caller will be granted access to the * context object associated with the returned file descriptor. @@ -347,13 +349,11 @@ __syscall int zsock_socket(int family, int type, int proto); * @brief Create an unnamed pair of connected sockets * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * https://pubs.opengroup.org/onlinepubs/009695399/functions/socketpair.html * for normative description. - * This function is also exposed as ``socketpair()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `socketpair()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall int zsock_socketpair(int family, int type, int proto, int *sv); @@ -361,12 +361,10 @@ __syscall int zsock_socketpair(int family, int type, int proto, int *sv); * @brief Close a network socket * * @details - * @rst * Close a network socket. - * This function is also exposed as ``close()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined (in which case it - * may conflict with generic POSIX ``close()`` function). - * @endrst + * This function is also exposed as `close()` + * if @kconfig{CONFIG_POSIX_API} is defined (in which case it + * may conflict with generic POSIX `close()` function). */ __syscall int zsock_close(int sock); @@ -374,14 +372,12 @@ __syscall int zsock_close(int sock); * @brief Shutdown socket send/receive operations * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/shutdown.html * for normative description, but currently this function has no effect in * Zephyr and provided solely for compatibility with existing code. - * This function is also exposed as ``shutdown()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `shutdown()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall int zsock_shutdown(int sock, int how); @@ -389,13 +385,11 @@ __syscall int zsock_shutdown(int sock, int how); * @brief Bind a socket to a local network address * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/bind.html * for normative description. - * This function is also exposed as ``bind()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `bind()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall int zsock_bind(int sock, const struct sockaddr *addr, socklen_t addrlen); @@ -404,13 +398,11 @@ __syscall int zsock_bind(int sock, const struct sockaddr *addr, * @brief Connect a socket to a peer network address * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/connect.html * for normative description. - * This function is also exposed as ``connect()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `connect()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall int zsock_connect(int sock, const struct sockaddr *addr, socklen_t addrlen); @@ -419,13 +411,11 @@ __syscall int zsock_connect(int sock, const struct sockaddr *addr, * @brief Set up a STREAM socket to accept peer connections * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/listen.html * for normative description. - * This function is also exposed as ``listen()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `listen()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall int zsock_listen(int sock, int backlog); @@ -433,13 +423,11 @@ __syscall int zsock_listen(int sock, int backlog); * @brief Accept a connection on listening socket * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/accept.html * for normative description. - * This function is also exposed as ``accept()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `accept()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall int zsock_accept(int sock, struct sockaddr *addr, socklen_t *addrlen); @@ -447,13 +435,11 @@ __syscall int zsock_accept(int sock, struct sockaddr *addr, socklen_t *addrlen); * @brief Send data to an arbitrary network address * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/sendto.html * for normative description. - * This function is also exposed as ``sendto()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `sendto()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall ssize_t zsock_sendto(int sock, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, @@ -463,13 +449,11 @@ __syscall ssize_t zsock_sendto(int sock, const void *buf, size_t len, * @brief Send data to a connected peer * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/send.html * for normative description. - * This function is also exposed as ``send()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `send()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ static inline ssize_t zsock_send(int sock, const void *buf, size_t len, int flags) @@ -481,13 +465,11 @@ static inline ssize_t zsock_send(int sock, const void *buf, size_t len, * @brief Send data to an arbitrary network address * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/sendmsg.html * for normative description. - * This function is also exposed as ``sendmsg()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `sendmsg()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall ssize_t zsock_sendmsg(int sock, const struct msghdr *msg, int flags); @@ -496,13 +478,11 @@ __syscall ssize_t zsock_sendmsg(int sock, const struct msghdr *msg, * @brief Receive data from an arbitrary network address * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/recvfrom.html * for normative description. - * This function is also exposed as ``recvfrom()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `recvfrom()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall ssize_t zsock_recvfrom(int sock, void *buf, size_t max_len, int flags, struct sockaddr *src_addr, @@ -512,13 +492,11 @@ __syscall ssize_t zsock_recvfrom(int sock, void *buf, size_t max_len, * @brief Receive a message from an arbitrary network address * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/recvmsg.html * for normative description. - * This function is also exposed as ``recvmsg()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `recvmsg()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall ssize_t zsock_recvmsg(int sock, struct msghdr *msg, int flags); @@ -526,13 +504,11 @@ __syscall ssize_t zsock_recvmsg(int sock, struct msghdr *msg, int flags); * @brief Receive data from a connected peer * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/recv.html * for normative description. - * This function is also exposed as ``recv()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `recv()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ static inline ssize_t zsock_recv(int sock, void *buf, size_t max_len, int flags) @@ -544,13 +520,11 @@ static inline ssize_t zsock_recv(int sock, void *buf, size_t max_len, * @brief Control blocking/non-blocking mode of a socket * * @details - * @rst * This functions allow to (only) configure a socket for blocking or * non-blocking operation (O_NONBLOCK). - * This function is also exposed as ``fcntl()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined (in which case - * it may conflict with generic POSIX ``fcntl()`` function). - * @endrst + * This function is also exposed as `fcntl()` + * if @kconfig{CONFIG_POSIX_API} is defined (in which case + * it may conflict with generic POSIX `fcntl()` function). */ __syscall int zsock_fcntl_impl(int sock, int cmd, int flags); @@ -579,18 +553,16 @@ static inline int zsock_fcntl_wrapper(int sock, int cmd, ...) * @brief Control underlying socket parameters * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * https://pubs.opengroup.org/onlinepubs/9699919799/functions/ioctl.html * for normative description. * This function enables querying or manipulating underlying socket parameters. - * Currently supported @p request values include ``ZFD_IOCTL_FIONBIO``, and - * ``ZFD_IOCTL_FIONREAD``, to set non-blocking mode, and query the number of + * Currently supported @p request values include `ZFD_IOCTL_FIONBIO`, and + * `ZFD_IOCTL_FIONREAD`, to set non-blocking mode, and query the number of * bytes available to read, respectively. - * This function is also exposed as ``ioctl()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined (in which case - * it may conflict with generic POSIX ``ioctl()`` function). - * @endrst + * This function is also exposed as `ioctl()` + * if @kconfig{CONFIG_POSIX_API} is defined (in which case + * it may conflict with generic POSIX `ioctl()` function). */ __syscall int zsock_ioctl_impl(int sock, unsigned long request, va_list ap); @@ -616,31 +588,30 @@ static inline int zsock_ioctl_wrapper(int sock, unsigned long request, ...) * @brief Efficiently poll multiple sockets for events * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/poll.html * for normative description. - * This function is also exposed as ``poll()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined (in which case - * it may conflict with generic POSIX ``poll()`` function). - * @endrst + * This function is also exposed as `poll()` + * if @kconfig{CONFIG_POSIX_API} is defined (in which case + * it may conflict with generic POSIX `poll()` function). */ -__syscall int zsock_poll(struct zsock_pollfd *fds, int nfds, int timeout); +static inline int zsock_poll(struct zsock_pollfd *fds, int nfds, int timeout) +{ + return zvfs_poll(fds, nfds, timeout); +} /** * @brief Get various socket options * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockopt.html * for normative description. In Zephyr this function supports a subset of * socket options described by POSIX, but also some additional options * available in Linux (some options are dummy and provided to ease porting * of existing code). - * This function is also exposed as ``getsockopt()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `getsockopt()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall int zsock_getsockopt(int sock, int level, int optname, void *optval, socklen_t *optlen); @@ -649,16 +620,14 @@ __syscall int zsock_getsockopt(int sock, int level, int optname, * @brief Set various socket options * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/setsockopt.html * for normative description. In Zephyr this function supports a subset of * socket options described by POSIX, but also some additional options * available in Linux (some options are dummy and provided to ease porting * of existing code). - * This function is also exposed as ``setsockopt()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `setsockopt()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall int zsock_setsockopt(int sock, int level, int optname, const void *optval, socklen_t optlen); @@ -667,13 +636,11 @@ __syscall int zsock_setsockopt(int sock, int level, int optname, * @brief Get peer name * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/getpeername.html * for normative description. - * This function is also exposed as ``getpeername()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `getpeername()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall int zsock_getpeername(int sock, struct sockaddr *addr, socklen_t *addrlen); @@ -682,13 +649,11 @@ __syscall int zsock_getpeername(int sock, struct sockaddr *addr, * @brief Get socket name * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockname.html * for normative description. - * This function is also exposed as ``getsockname()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `getsockname()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall int zsock_getsockname(int sock, struct sockaddr *addr, socklen_t *addrlen); @@ -697,13 +662,11 @@ __syscall int zsock_getsockname(int sock, struct sockaddr *addr, * @brief Get local host name * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/gethostname.html * for normative description. - * This function is also exposed as ``gethostname()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `gethostname()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall int zsock_gethostname(char *buf, size_t len); @@ -711,13 +674,11 @@ __syscall int zsock_gethostname(char *buf, size_t len); * @brief Convert network address from internal to numeric ASCII form * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/inet_ntop.html * for normative description. - * This function is also exposed as ``inet_ntop()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `inet_ntop()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ static inline char *zsock_inet_ntop(sa_family_t family, const void *src, char *dst, size_t size) @@ -729,13 +690,11 @@ static inline char *zsock_inet_ntop(sa_family_t family, const void *src, * @brief Convert network address from numeric ASCII form to internal representation * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/inet_pton.html * for normative description. - * This function is also exposed as ``inet_pton()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `inet_pton()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ __syscall int zsock_inet_pton(sa_family_t family, const char *src, void *dst); @@ -774,13 +733,11 @@ __syscall int z_zsock_getaddrinfo_internal(const char *host, * @brief Resolve a domain name to one or more network addresses * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/getaddrinfo.html * for normative description. - * This function is also exposed as ``getaddrinfo()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `getaddrinfo()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ int zsock_getaddrinfo(const char *host, const char *service, const struct zsock_addrinfo *hints, @@ -790,13 +747,11 @@ int zsock_getaddrinfo(const char *host, const char *service, * @brief Free results returned by zsock_getaddrinfo() * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/freeaddrinfo.html * for normative description. - * This function is also exposed as ``freeaddrinfo()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `freeaddrinfo()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ void zsock_freeaddrinfo(struct zsock_addrinfo *ai); @@ -804,13 +759,11 @@ void zsock_freeaddrinfo(struct zsock_addrinfo *ai); * @brief Convert zsock_getaddrinfo() error code to textual message * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/gai_strerror.html * for normative description. - * This function is also exposed as ``gai_strerror()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `gai_strerror()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ const char *zsock_gai_strerror(int errcode); @@ -841,254 +794,16 @@ const char *zsock_gai_strerror(int errcode); * @brief Resolve a network address to a domain name or ASCII address * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/getnameinfo.html * for normative description. - * This function is also exposed as ``getnameinfo()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `getnameinfo()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ int zsock_getnameinfo(const struct sockaddr *addr, socklen_t addrlen, char *host, socklen_t hostlen, char *serv, socklen_t servlen, int flags); -#if defined(CONFIG_NET_SOCKETS_POSIX_NAMES) - -/** - * @name Socket APIs available if CONFIG_NET_SOCKETS_POSIX_NAMES is enabled - * @{ - */ - -/** POSIX wrapper for @ref zsock_pollfd */ -#define pollfd zsock_pollfd - -/** POSIX wrapper for @ref zsock_socket */ -static inline int socket(int family, int type, int proto) -{ - return zsock_socket(family, type, proto); -} - -/** POSIX wrapper for @ref zsock_socketpair */ -static inline int socketpair(int family, int type, int proto, int sv[2]) -{ - return zsock_socketpair(family, type, proto, sv); -} - -/** POSIX wrapper for @ref zsock_close */ -static inline int close(int sock) -{ - return zsock_close(sock); -} - -/** POSIX wrapper for @ref zsock_shutdown */ -static inline int shutdown(int sock, int how) -{ - return zsock_shutdown(sock, how); -} - -/** POSIX wrapper for @ref zsock_bind */ -static inline int bind(int sock, const struct sockaddr *addr, socklen_t addrlen) -{ - return zsock_bind(sock, addr, addrlen); -} - -/** POSIX wrapper for @ref zsock_connect */ -static inline int connect(int sock, const struct sockaddr *addr, - socklen_t addrlen) -{ - return zsock_connect(sock, addr, addrlen); -} - -/** POSIX wrapper for @ref zsock_listen */ -static inline int listen(int sock, int backlog) -{ - return zsock_listen(sock, backlog); -} - -/** POSIX wrapper for @ref zsock_accept */ -static inline int accept(int sock, struct sockaddr *addr, socklen_t *addrlen) -{ - return zsock_accept(sock, addr, addrlen); -} - -/** POSIX wrapper for @ref zsock_send */ -static inline ssize_t send(int sock, const void *buf, size_t len, int flags) -{ - return zsock_send(sock, buf, len, flags); -} - -/** POSIX wrapper for @ref zsock_recv */ -static inline ssize_t recv(int sock, void *buf, size_t max_len, int flags) -{ - return zsock_recv(sock, buf, max_len, flags); -} - -/** POSIX wrapper for @ref zsock_sendto */ -static inline ssize_t sendto(int sock, const void *buf, size_t len, int flags, - const struct sockaddr *dest_addr, - socklen_t addrlen) -{ - return zsock_sendto(sock, buf, len, flags, dest_addr, addrlen); -} - -/** POSIX wrapper for @ref zsock_sendmsg */ -static inline ssize_t sendmsg(int sock, const struct msghdr *message, - int flags) -{ - return zsock_sendmsg(sock, message, flags); -} - -/** POSIX wrapper for @ref zsock_recvfrom */ -static inline ssize_t recvfrom(int sock, void *buf, size_t max_len, int flags, - struct sockaddr *src_addr, socklen_t *addrlen) -{ - return zsock_recvfrom(sock, buf, max_len, flags, src_addr, addrlen); -} - -/** POSIX wrapper for @ref zsock_recvmsg */ -static inline ssize_t recvmsg(int sock, struct msghdr *msg, int flags) -{ - return zsock_recvmsg(sock, msg, flags); -} - -/** POSIX wrapper for @ref zsock_poll */ -static inline int poll(struct zsock_pollfd *fds, int nfds, int timeout) -{ - return zsock_poll(fds, nfds, timeout); -} - -/** POSIX wrapper for @ref zsock_getsockopt */ -static inline int getsockopt(int sock, int level, int optname, - void *optval, socklen_t *optlen) -{ - return zsock_getsockopt(sock, level, optname, optval, optlen); -} - -/** POSIX wrapper for @ref zsock_setsockopt */ -static inline int setsockopt(int sock, int level, int optname, - const void *optval, socklen_t optlen) -{ - return zsock_setsockopt(sock, level, optname, optval, optlen); -} - -/** POSIX wrapper for @ref zsock_getpeername */ -static inline int getpeername(int sock, struct sockaddr *addr, - socklen_t *addrlen) -{ - return zsock_getpeername(sock, addr, addrlen); -} - -/** POSIX wrapper for @ref zsock_getsockname */ -static inline int getsockname(int sock, struct sockaddr *addr, - socklen_t *addrlen) -{ - return zsock_getsockname(sock, addr, addrlen); -} - -/** POSIX wrapper for @ref zsock_getaddrinfo */ -static inline int getaddrinfo(const char *host, const char *service, - const struct zsock_addrinfo *hints, - struct zsock_addrinfo **res) -{ - return zsock_getaddrinfo(host, service, hints, res); -} - -/** POSIX wrapper for @ref zsock_freeaddrinfo */ -static inline void freeaddrinfo(struct zsock_addrinfo *ai) -{ - zsock_freeaddrinfo(ai); -} - -/** POSIX wrapper for @ref zsock_gai_strerror */ -static inline const char *gai_strerror(int errcode) -{ - return zsock_gai_strerror(errcode); -} - -/** POSIX wrapper for @ref zsock_getnameinfo */ -static inline int getnameinfo(const struct sockaddr *addr, socklen_t addrlen, - char *host, socklen_t hostlen, - char *serv, socklen_t servlen, int flags) -{ - return zsock_getnameinfo(addr, addrlen, host, hostlen, - serv, servlen, flags); -} - -/** POSIX wrapper for @ref zsock_addrinfo */ -#define addrinfo zsock_addrinfo - -/** POSIX wrapper for @ref zsock_gethostname */ -static inline int gethostname(char *buf, size_t len) -{ - return zsock_gethostname(buf, len); -} - -/** POSIX wrapper for @ref zsock_inet_pton */ -static inline int inet_pton(sa_family_t family, const char *src, void *dst) -{ - return zsock_inet_pton(family, src, dst); -} - -/** POSIX wrapper for @ref zsock_inet_ntop */ -static inline char *inet_ntop(sa_family_t family, const void *src, char *dst, - size_t size) -{ - return zsock_inet_ntop(family, src, dst, size); -} - -/** POSIX wrapper for @ref ZSOCK_POLLIN */ -#define POLLIN ZSOCK_POLLIN -/** POSIX wrapper for @ref ZSOCK_POLLOUT */ -#define POLLOUT ZSOCK_POLLOUT -/** POSIX wrapper for @ref ZSOCK_POLLERR */ -#define POLLERR ZSOCK_POLLERR -/** POSIX wrapper for @ref ZSOCK_POLLHUP */ -#define POLLHUP ZSOCK_POLLHUP -/** POSIX wrapper for @ref ZSOCK_POLLNVAL */ -#define POLLNVAL ZSOCK_POLLNVAL - -/** POSIX wrapper for @ref ZSOCK_MSG_PEEK */ -#define MSG_PEEK ZSOCK_MSG_PEEK -/** POSIX wrapper for @ref ZSOCK_MSG_CTRUNC */ -#define MSG_CTRUNC ZSOCK_MSG_CTRUNC -/** POSIX wrapper for @ref ZSOCK_MSG_TRUNC */ -#define MSG_TRUNC ZSOCK_MSG_TRUNC -/** POSIX wrapper for @ref ZSOCK_MSG_DONTWAIT */ -#define MSG_DONTWAIT ZSOCK_MSG_DONTWAIT -/** POSIX wrapper for @ref ZSOCK_MSG_WAITALL */ -#define MSG_WAITALL ZSOCK_MSG_WAITALL - -/** POSIX wrapper for @ref ZSOCK_SHUT_RD */ -#define SHUT_RD ZSOCK_SHUT_RD -/** POSIX wrapper for @ref ZSOCK_SHUT_WR */ -#define SHUT_WR ZSOCK_SHUT_WR -/** POSIX wrapper for @ref ZSOCK_SHUT_RDWR */ -#define SHUT_RDWR ZSOCK_SHUT_RDWR - -/** POSIX wrapper for @ref DNS_EAI_BADFLAGS */ -#define EAI_BADFLAGS DNS_EAI_BADFLAGS -/** POSIX wrapper for @ref DNS_EAI_NONAME */ -#define EAI_NONAME DNS_EAI_NONAME -/** POSIX wrapper for @ref DNS_EAI_AGAIN */ -#define EAI_AGAIN DNS_EAI_AGAIN -/** POSIX wrapper for @ref DNS_EAI_FAIL */ -#define EAI_FAIL DNS_EAI_FAIL -/** POSIX wrapper for @ref DNS_EAI_NODATA */ -#define EAI_NODATA DNS_EAI_NODATA -/** POSIX wrapper for @ref DNS_EAI_MEMORY */ -#define EAI_MEMORY DNS_EAI_MEMORY -/** POSIX wrapper for @ref DNS_EAI_SYSTEM */ -#define EAI_SYSTEM DNS_EAI_SYSTEM -/** POSIX wrapper for @ref DNS_EAI_SERVICE */ -#define EAI_SERVICE DNS_EAI_SERVICE -/** POSIX wrapper for @ref DNS_EAI_SOCKTYPE */ -#define EAI_SOCKTYPE DNS_EAI_SOCKTYPE -/** POSIX wrapper for @ref DNS_EAI_FAMILY */ -#define EAI_FAMILY DNS_EAI_FAMILY -/** @} */ -#endif /* defined(CONFIG_NET_SOCKETS_POSIX_NAMES) */ - /** * @name Network interface name description * @{ @@ -1239,6 +954,14 @@ struct in_pktinfo { struct in_addr ipi_addr; /**< Header Destination address */ }; +/** Retrieve the current known path MTU of the current socket. Returns an + * integer. IP_MTU is valid only for getsockopt and can be employed only when + * the socket has been connected. + */ +#define IP_MTU 14 + +/** Set IPv4 multicast datagram network interface. */ +#define IP_MULTICAST_IF 32 /** Set IPv4 multicast TTL value. */ #define IP_MULTICAST_TTL 33 /** Join IPv4 multicast group. */ @@ -1255,6 +978,17 @@ struct ip_mreqn { int imr_ifindex; /**< Network interface index */ }; +/** + * @brief Struct used when setting a IPv4 multicast network interface. + */ +struct ip_mreq { + struct in_addr imr_multiaddr; /**< IP multicast group address */ + struct in_addr imr_interface; /**< IP address of local interface */ +}; + +/** Clamp down the global port range for a given socket */ +#define IP_LOCAL_PORT_RANGE 51 + /** @} */ /** @@ -1265,6 +999,9 @@ struct ip_mreqn { /** Set the unicast hop limit for the socket. */ #define IPV6_UNICAST_HOPS 16 +/** Set multicast output network interface index for the socket. */ +#define IPV6_MULTICAST_IF 17 + /** Set the multicast hop limit for the socket. */ #define IPV6_MULTICAST_HOPS 18 @@ -1274,6 +1011,12 @@ struct ip_mreqn { /** Leave IPv6 multicast group. */ #define IPV6_DROP_MEMBERSHIP 21 +/** Join IPv6 multicast group. */ +#define IPV6_JOIN_GROUP IPV6_ADD_MEMBERSHIP + +/** Leave IPv6 multicast group. */ +#define IPV6_LEAVE_GROUP IPV6_DROP_MEMBERSHIP + /** * @brief Struct used when joining or leaving a IPv6 multicast group. */ @@ -1285,6 +1028,13 @@ struct ipv6_mreq { int ipv6mr_ifindex; }; +/** For getsockopt(), retrieve the current known IPv6 path MTU of the given socket. + * Valid only when the socket has been connected. + * For setsockopt(), set the MTU to be used for the socket. The MTU is limited by + * the device MTU or the path MTU when path MTU discovery is enabled. + */ +#define IPV6_MTU 24 + /** Don't support IPv4 access */ #define IPV6_V6ONLY 26 @@ -1338,6 +1088,46 @@ struct in6_pktinfo { #define SOMAXCONN 128 /** @} */ +/** + * @name Macros for checking special IPv6 addresses. + * @{ + */ +/** Check unspecified IPv6 address. */ +#define IN6_IS_ADDR_UNSPECIFIED(addr) \ + net_ipv6_addr_cmp(net_ipv6_unspecified_address(), addr) + +/** Check loopback IPv6 address. */ +#define IN6_IS_ADDR_LOOPBACK(addr) net_ipv6_is_addr_loopback(addr) + +/** Check IPv6 multicast address */ +#define IN6_IS_ADDR_MULTICAST(addr) net_ipv6_is_addr_mcast(addr) + +/** Check IPv6 link local address */ +#define IN6_IS_ADDR_LINKLOCAL(addr) net_ipv6_is_ll_addr(addr) + +/** Check IPv6 site local address */ +#define IN6_IS_ADDR_SITELOCAL(addr) net_ipv6_is_sl_addr(addr) + +/** Check IPv6 v4 mapped address */ +#define IN6_IS_ADDR_V4MAPPED(addr) net_ipv6_addr_is_v4_mapped(addr) + +/** Check IPv6 multicast global address */ +#define IN6_IS_ADDR_MC_GLOBAL(addr) net_ipv6_is_addr_mcast_global(addr) + +/** Check IPv6 multicast node local address */ +#define IN6_IS_ADDR_MC_NODELOCAL(addr) net_ipv6_is_addr_mcast_iface(addr) + +/** Check IPv6 multicast link local address */ +#define IN6_IS_ADDR_MC_LINKLOCAL(addr) net_ipv6_is_addr_mcast_link(addr) + +/** Check IPv6 multicast site local address */ +#define IN6_IS_ADDR_MC_SITELOCAL(addr) net_ipv6_is_addr_mcast_site(addr) + +/** Check IPv6 multicast organization local address */ +#define IN6_IS_ADDR_MC_ORGLOCAL(addr) net_ipv6_is_addr_mcast_org(addr) + +/** @} */ + /** @cond INTERNAL_HIDDEN */ /** * @brief Registration information for a given BSD socket family. @@ -1401,13 +1191,26 @@ struct net_socket_register { * We have these includes here so that we do not need * to change the applications that were only including * zephyr/net/socket.h header file. + * + * Additionally, if non-zephyr-prefixed headers are used here, + * native_sim pulls in those from the host rather than Zephyr's. */ #if defined(CONFIG_POSIX_API) -#include -#include -#include -#include -#include +#if !defined(ZEPHYR_INCLUDE_POSIX_ARPA_INET_H_) +#include +#endif +#if !defined(ZEPHYR_INCLUDE_POSIX_NETDB_H_) +#include +#endif +#if !defined(ZEPHYR_INCLUDE_POSIX_UNISTD_H_) +#include +#endif +#if !defined(ZEPHYR_INCLUDE_POSIX_POLL_H_) +#include +#endif +#if !defined(ZEPHYR_INCLUDE_POSIX_SYS_SOCKET_H_) +#include +#endif #endif /* CONFIG_POSIX_API */ #endif /* ZEPHYR_INCLUDE_NET_SOCKET_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_net_mgmt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_net_mgmt.h index 3c173f96..8f3c5829 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_net_mgmt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_net_mgmt.h @@ -24,7 +24,9 @@ extern "C" { /** * @brief Socket NET_MGMT library - * @defgroup socket_net_mgmt Network Core Library + * @defgroup socket_net_mgmt Socket NET_MGMT library + * @since 2.0 + * @version 0.1.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_poll.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_poll.h index 97e03804..d794f103 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_poll.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_poll.h @@ -7,6 +7,8 @@ #ifndef ZEPHYR_INCLUDE_NET_SOCKET_POLL_H_ #define ZEPHYR_INCLUDE_NET_SOCKET_POLL_H_ +#include + /* Setting for pollfd to avoid circular inclusion */ /** @@ -20,6 +22,7 @@ extern "C" { #endif +#ifdef __DOXYGEN__ /** * @brief Definition of the monitored socket/file descriptor. * @@ -30,6 +33,9 @@ struct zsock_pollfd { short events; /**< Requested events */ short revents; /**< Returned events */ }; +#else +#define zsock_pollfd zvfs_pollfd +#endif #ifdef __cplusplus } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_select.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_select.h index 5fca2950..10f3d9d4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_select.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_select.h @@ -19,142 +19,111 @@ * @{ */ +#include + #include #include +#include #ifdef __cplusplus extern "C" { #endif /** Socket file descriptor set. */ -typedef struct zsock_fd_set { - uint32_t bitset[(CONFIG_ZVFS_OPEN_MAX + 31) / 32]; -} zsock_fd_set; +typedef struct zvfs_fd_set zsock_fd_set; /** * @brief Legacy function to poll multiple sockets for events * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/select.html * for normative description. This function is provided to ease porting of * existing code and not recommended for usage due to its inefficiency, * use zsock_poll() instead. In Zephyr this function works only with * sockets, not arbitrary file descriptors. - * This function is also exposed as ``select()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined (in which case - * it may conflict with generic POSIX ``select()`` function). - * @endrst + * This function is also exposed as `select()` + * if @kconfig{CONFIG_POSIX_API} is defined (in which case + * it may conflict with generic POSIX `select()` function). */ -__syscall int zsock_select(int nfds, zsock_fd_set *readfds, - zsock_fd_set *writefds, - zsock_fd_set *exceptfds, - struct zsock_timeval *timeout); +static inline int zsock_select(int nfds, zsock_fd_set *readfds, zsock_fd_set *writefds, + zsock_fd_set *exceptfds, struct zsock_timeval *timeout) +{ + struct timespec to = { + .tv_sec = (timeout == NULL) ? 0 : timeout->tv_sec, + .tv_nsec = (long)((timeout == NULL) ? 0 : timeout->tv_usec * NSEC_PER_USEC)}; + + return zvfs_select(nfds, readfds, writefds, exceptfds, (timeout == NULL) ? NULL : &to, + NULL); +} /** Number of file descriptors which can be added to zsock_fd_set */ -#define ZSOCK_FD_SETSIZE (sizeof(((zsock_fd_set *)0)->bitset) * 8) +#define ZSOCK_FD_SETSIZE ZVFS_FD_SETSIZE /** * @brief Initialize (clear) fd_set * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/select.html * for normative description. - * This function is also exposed as ``FD_ZERO()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `FD_ZERO()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ -void ZSOCK_FD_ZERO(zsock_fd_set *set); +static inline void ZSOCK_FD_ZERO(zsock_fd_set *set) +{ + ZVFS_FD_ZERO(set); +} /** * @brief Check whether socket is a member of fd_set * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/select.html * for normative description. - * This function is also exposed as ``FD_ISSET()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `FD_ISSET()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ -int ZSOCK_FD_ISSET(int fd, zsock_fd_set *set); +static inline int ZSOCK_FD_ISSET(int fd, zsock_fd_set *set) +{ + return ZVFS_FD_ISSET(fd, set); +} /** * @brief Remove socket from fd_set * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/select.html * for normative description. - * This function is also exposed as ``FD_CLR()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `FD_CLR()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ -void ZSOCK_FD_CLR(int fd, zsock_fd_set *set); +static inline void ZSOCK_FD_CLR(int fd, zsock_fd_set *set) +{ + ZVFS_FD_CLR(fd, set); +} /** * @brief Add socket to fd_set * * @details - * @rst - * See `POSIX.1-2017 article - * `__ + * See POSIX.1-2017 article + * http://pubs.opengroup.org/onlinepubs/9699919799/functions/select.html * for normative description. - * This function is also exposed as ``FD_SET()`` - * if :kconfig:option:`CONFIG_POSIX_API` is defined. - * @endrst + * This function is also exposed as `FD_SET()` + * if @kconfig{CONFIG_POSIX_API} is defined. */ -void ZSOCK_FD_SET(int fd, zsock_fd_set *set); - -/** @cond INTERNAL_HIDDEN */ - -#ifdef CONFIG_NET_SOCKETS_POSIX_NAMES - -#define fd_set zsock_fd_set -#define FD_SETSIZE ZSOCK_FD_SETSIZE - -static inline int select(int nfds, zsock_fd_set *readfds, - zsock_fd_set *writefds, zsock_fd_set *exceptfds, - struct timeval *timeout) +static inline void ZSOCK_FD_SET(int fd, zsock_fd_set *set) { - return zsock_select(nfds, readfds, writefds, exceptfds, timeout); + ZVFS_FD_SET(fd, set); } -static inline void FD_ZERO(zsock_fd_set *set) -{ - ZSOCK_FD_ZERO(set); -} - -static inline int FD_ISSET(int fd, zsock_fd_set *set) -{ - return ZSOCK_FD_ISSET(fd, set); -} - -static inline void FD_CLR(int fd, zsock_fd_set *set) -{ - ZSOCK_FD_CLR(fd, set); -} - -static inline void FD_SET(int fd, zsock_fd_set *set) -{ - ZSOCK_FD_SET(fd, set); -} - -#endif /* CONFIG_NET_SOCKETS_POSIX_NAMES */ - -/** @endcond */ - #ifdef __cplusplus } #endif -#include - /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_service.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_service.h index f7c04fad..045d98dd 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_service.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socket_service.h @@ -18,6 +18,8 @@ /** * @brief BSD socket service API * @defgroup bsd_socket_service BSD socket service API + * @since 3.6 + * @version 0.2.0 * @ingroup networking * @{ */ @@ -30,15 +32,23 @@ extern "C" { #endif +struct net_socket_service_event; + +/** @brief The signature for a net socket service handler function. + * + * The function will be invoked by the socket service. + * + * @param pev the socket service event that provided the handler. + */ +typedef void (*net_socket_service_handler_t)(struct net_socket_service_event *pev); + /** * This struct contains information which socket triggered * calls to the callback function. */ struct net_socket_service_event { - /** k_work that is done when there is desired activity in file descriptor. */ - struct k_work work; /** Callback to be called for desired socket activity */ - k_work_handler_t callback; + net_socket_service_handler_t callback; /** Socket information that triggered this event. */ struct zsock_pollfd event; /** User data */ @@ -65,8 +75,6 @@ struct net_socket_service_desc { */ const char *owner; #endif - /** Workqueue where the work is submitted. */ - struct k_work_q *work_q; /** Pointer to the list of services that we are listening */ struct net_socket_service_event *pev; /** Length of the pollable socket array for this service. */ @@ -81,15 +89,13 @@ struct net_socket_service_desc { #define __z_net_socket_svc_get_idx(_svc_id) __z_net_socket_service_idx_##_svc_id #define __z_net_socket_svc_get_owner __FILE__ ":" STRINGIFY(__LINE__) -extern void net_socket_service_callback(struct k_work *work); - #if CONFIG_NET_SOCKETS_LOG_LEVEL >= LOG_LEVEL_DBG #define NET_SOCKET_SERVICE_OWNER .owner = __z_net_socket_svc_get_owner, #else #define NET_SOCKET_SERVICE_OWNER #endif -#define __z_net_socket_service_define(_name, _work_q, _cb, _count, ...) \ +#define __z_net_socket_service_define(_name, _cb, _count, ...) \ static int __z_net_socket_svc_get_idx(_name); \ static struct net_socket_service_event \ __z_net_socket_svc_get_name(_name)[_count] = { \ @@ -101,7 +107,6 @@ extern void net_socket_service_callback(struct k_work *work); COND_CODE_0(NUM_VA_ARGS_LESS_1(__VA_ARGS__), (), __VA_ARGS__) \ const STRUCT_SECTION_ITERABLE(net_socket_service_desc, _name) = { \ NET_SOCKET_SERVICE_OWNER \ - .work_q = (_work_q), \ .pev = __z_net_socket_svc_get_name(_name), \ .pev_len = (_count), \ .idx = &__z_net_socket_svc_get_idx(_name), \ @@ -124,13 +129,11 @@ extern void net_socket_service_callback(struct k_work *work); * instead. * * @param name Name of the service. - * @param work_q Pointer to workqueue where the work is done. Can be null in which case - * system workqueue is used. * @param cb Callback function that is called for socket activity. * @param count How many pollable sockets is needed for this service. */ -#define NET_SOCKET_SERVICE_SYNC_DEFINE(name, work_q, cb, count) \ - __z_net_socket_service_define(name, work_q, cb, count) +#define NET_SOCKET_SERVICE_SYNC_DEFINE(name, cb, count) \ + __z_net_socket_service_define(name, cb, count) /** * @brief Statically define a network socket service in a private (static) scope. @@ -139,13 +142,11 @@ extern void net_socket_service_callback(struct k_work *work); * with next socket service. * * @param name Name of the service. - * @param work_q Pointer to workqueue where the work is done. Can be null in which case - * system workqueue is used. * @param cb Callback function that is called for socket activity. * @param count How many pollable sockets is needed for this service. */ -#define NET_SOCKET_SERVICE_SYNC_DEFINE_STATIC(name, work_q, cb, count) \ - __z_net_socket_service_define(name, work_q, cb, count, static) +#define NET_SOCKET_SERVICE_SYNC_DEFINE_STATIC(name, cb, count) \ + __z_net_socket_service_define(name, cb, count, static) /** * @brief Register pollable sockets. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socketcan.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socketcan.h index dd2a7049..ca88d376 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socketcan.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socketcan.h @@ -23,7 +23,9 @@ extern "C" { /** * @brief SocketCAN library - * @defgroup socket_can Network Core Library + * @defgroup socket_can SocketCAN library + * @since 1.14 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socketcan_utils.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socketcan_utils.h index 7db287ff..4c4d2118 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socketcan_utils.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/socketcan_utils.h @@ -22,8 +22,7 @@ extern "C" { /** * @brief SocketCAN utilities - * @defgroup socket_can Network Core Library - * @ingroup networking + * @addtogroup socket_can * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/tftp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/tftp.h index eb3df0cc..5839987b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/tftp.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/tftp.h @@ -9,6 +9,8 @@ * @brief TFTP Client Implementation * * @defgroup tftp_client TFTP Client library + * @since 2.3 + * @version 0.1.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/tls_credentials.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/tls_credentials.h index 77e2a230..6477543f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/tls_credentials.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/tls_credentials.h @@ -16,6 +16,8 @@ /** * @brief TLS credentials management * @defgroup tls_credentials TLS credentials management + * @since 1.13 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/trickle.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/trickle.h index 9d46ffa0..9bd3e09f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/trickle.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/trickle.h @@ -26,6 +26,8 @@ extern "C" { /** * @brief Trickle algorithm library * @defgroup trickle Trickle Algorithm Library + * @since 1.7 + * @version 0.8.0 * @ingroup networking * @{ */ @@ -134,7 +136,9 @@ void net_trickle_inconsistency(struct net_trickle *trickle); */ static inline bool net_trickle_is_running(struct net_trickle *trickle) { - NET_ASSERT(trickle); + if (trickle == NULL) { + return false; + } return trickle->I != 0U; } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/virtual.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/virtual.h index 80666529..d229a214 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/virtual.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/virtual.h @@ -29,6 +29,8 @@ extern "C" { /** * @brief Virtual network interface support functions * @defgroup virtual Virtual Network Interface Support Functions + * @since 2.6 + * @version 0.8.0 * @ingroup networking * @{ */ @@ -41,6 +43,9 @@ enum virtual_interface_caps { /** Virtual LAN interface (VLAN) */ VIRTUAL_INTERFACE_VLAN = BIT(2), + /** Virtual Ethernet bridge interface. */ + VIRTUAL_INTERFACE_BRIDGE = BIT(3), + /** @cond INTERNAL_HIDDEN */ /* Marker for capabilities - must be at the end of the enum. * It is here because the capability list cannot be empty. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/virtual_mgmt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/virtual_mgmt.h index 467a1fef..04ca6ae9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/virtual_mgmt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/virtual_mgmt.h @@ -22,6 +22,8 @@ extern "C" { /** * @brief Virtual interface library * @defgroup virtual_mgmt Virtual Interface Library + * @since 2.6 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/websocket.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/websocket.h index 067fa599..790a2e93 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/websocket.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/websocket.h @@ -26,6 +26,8 @@ extern "C" { /** * @brief Websocket API * @defgroup websocket Websocket API + * @since 1.12 + * @version 0.1.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi.h index 6f8bfc0c..e74a44ca 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi.h @@ -11,8 +11,10 @@ */ /** - * @defgroup wifi_mgmt Wi-Fi Management * @brief Wi-Fi Management API. + * @defgroup wifi_mgmt Wi-Fi Management + * @since 1.12 + * @version 0.8.0 * @ingroup networking * @{ */ @@ -46,22 +48,144 @@ enum wifi_security_type { WIFI_SECURITY_TYPE_PSK_SHA256, /** WPA3-SAE security. */ WIFI_SECURITY_TYPE_SAE, + /** WPA3-SAE security with hunting-and-pecking loop. */ + WIFI_SECURITY_TYPE_SAE_HNP = WIFI_SECURITY_TYPE_SAE, + /** WPA3-SAE security with hash-to-element. */ + WIFI_SECURITY_TYPE_SAE_H2E, + /** WPA3-SAE security with both hunting-and-pecking loop and hash-to-element enabled. */ + WIFI_SECURITY_TYPE_SAE_AUTO, /** GB 15629.11-2003 WAPI security. */ WIFI_SECURITY_TYPE_WAPI, /** EAP security - Enterprise. */ WIFI_SECURITY_TYPE_EAP, + /** EAP TLS security - Enterprise. */ + WIFI_SECURITY_TYPE_EAP_TLS = WIFI_SECURITY_TYPE_EAP, /** WEP security. */ WIFI_SECURITY_TYPE_WEP, /** WPA-PSK security. */ WIFI_SECURITY_TYPE_WPA_PSK, /** WPA/WPA2/WPA3 PSK security. */ WIFI_SECURITY_TYPE_WPA_AUTO_PERSONAL, - -/** @cond INTERNAL_HIDDEN */ + /** DPP security */ + WIFI_SECURITY_TYPE_DPP, + /** EAP PEAP MSCHAPV2 security - Enterprise. */ + WIFI_SECURITY_TYPE_EAP_PEAP_MSCHAPV2, + /** EAP PEAP GTC security - Enterprise. */ + WIFI_SECURITY_TYPE_EAP_PEAP_GTC, + /** EAP TTLS MSCHAPV2 security - Enterprise. */ + WIFI_SECURITY_TYPE_EAP_TTLS_MSCHAPV2, + /** EAP PEAP security - Enterprise. */ + WIFI_SECURITY_TYPE_EAP_PEAP_TLS, + /** EAP TLS SHA256 security - Enterprise. */ + WIFI_SECURITY_TYPE_EAP_TLS_SHA256, + /** FT-PSK security */ + WIFI_SECURITY_TYPE_FT_PSK, + /** FT-SAE security */ + WIFI_SECURITY_TYPE_FT_SAE, + /** FT-EAP security */ + WIFI_SECURITY_TYPE_FT_EAP, + /** FT-EAP-SHA384 security */ + WIFI_SECURITY_TYPE_FT_EAP_SHA384, + + /** @cond INTERNAL_HIDDEN */ __WIFI_SECURITY_TYPE_AFTER_LAST, WIFI_SECURITY_TYPE_MAX = __WIFI_SECURITY_TYPE_AFTER_LAST - 1, WIFI_SECURITY_TYPE_UNKNOWN -/** @endcond */ + /** @endcond */ +}; + +/** @brief EPA method Types. */ +enum wifi_eap_type { + /** No EPA security. */ + WIFI_EAP_TYPE_NONE = 0, + /** EPA GTC security, refer to rfc3748 chapter 5. */ + WIFI_EAP_TYPE_GTC = 6, + /** EPA TLS security, refer to rfc5216. */ + WIFI_EAP_TYPE_TLS = 13, + /** EPA TTLS security, refer to rfc5281. */ + WIFI_EAP_TYPE_TTLS = 21, + /** EPA PEAP security, refer to draft-josefsson-pppext-eap-tls-eap-06.txt. */ + WIFI_EAP_TYPE_PEAP = 25, + /** EPA MSCHAPV2 security, refer to draft-kamath-pppext-eap-mschapv2-00.txt. */ + WIFI_EAP_TYPE_MSCHAPV2 = 26, +}; + +/** @brief Enterprise security WPA3 suiteb types. */ +enum wifi_suiteb_type { + /** suiteb. */ + WIFI_SUITEB = 1, + /** suiteb-192. */ + WIFI_SUITEB_192, +}; + +enum wifi_eap_tls_cipher_type { + /** EAP TLS with NONE */ + WIFI_EAP_TLS_NONE, + /** EAP TLS with ECDH & ECDSA with p384 */ + WIFI_EAP_TLS_ECC_P384, + /** EAP TLS with ECDH & RSA with > 3K */ + WIFI_EAP_TLS_RSA_3K, +}; + +/** @brief Group cipher and pairwise cipher types. */ +enum wifi_cipher_type { + /** AES in counter mode with CBC-MAC (CCMP-128). */ + WPA_CAPA_ENC_CCMP, + /** 128-bit Galois/Counter Mode Protocol. */ + WPA_CAPA_ENC_GCMP, + /** 256-bit Galois/Counter Mode Protocol. */ + WPA_CAPA_ENC_GCMP_256, +}; + +/** @brief group mgmt cipher types. */ +enum wifi_group_mgmt_cipher_type { + /** 128-bit Broadcast/Multicast Integrity Protocol + * Cipher-based Message Authentication Code . + */ + WPA_CAPA_ENC_BIP, + /** 128-bit Broadcast/Multicast Integrity Protocol + * Galois Message Authentication Code . + */ + WPA_CAPA_ENC_BIP_GMAC_128, + /** 256-bit Broadcast/Multicast Integrity Protocol + * Galois Message Authentication Code . + */ + WPA_CAPA_ENC_BIP_GMAC_256, +}; + +struct wifi_cipher_desc { + /** Cipher capability. */ + unsigned int capa; + /** Cipher name string. */ + char *name; +}; + +struct wifi_eap_cipher_config { + /** Key management type string. */ + char *key_mgmt; + /** OpenSSL cipher string. */ + char *openssl_ciphers; + /** Group cipher cipher string. */ + char *group_cipher; + /** Pairwise_cipher cipher string. */ + char *pairwise_cipher; + /** Group management cipher string. */ + char *group_mgmt_cipher; + /** Used to confiure TLS features. */ + char *tls_flags; +}; + +struct wifi_eap_config { + /** Security type. */ + unsigned int type; + /** EPA method type of phase1. */ + enum wifi_eap_type eap_type_phase1; + /** EPA method type of phase2. */ + enum wifi_eap_type eap_type_phase2; + /** EPA method string. */ + char *method; + /** Phase2 setting string. */ + char *phase2; }; /** Helper function to get user-friendly security type name. */ @@ -108,6 +232,27 @@ enum wifi_frequency_bands { /** Helper function to get user-friendly frequency band name. */ const char *wifi_band_txt(enum wifi_frequency_bands band); +/** + * @brief IEEE 802.11 operational frequency bandwidths (not exhaustive). + */ +enum wifi_frequency_bandwidths { + /** 20 MHz. */ + WIFI_FREQ_BANDWIDTH_20MHZ = 1, + /** 40 MHz. */ + WIFI_FREQ_BANDWIDTH_40MHZ, + /** 80 MHz. */ + WIFI_FREQ_BANDWIDTH_80MHZ, + + /** Number of frequency bandwidths available. */ + __WIFI_FREQ_BANDWIDTH_AFTER_LAST, + /** Highest frequency bandwidth available. */ + WIFI_FREQ_BANDWIDTH_MAX = __WIFI_FREQ_BANDWIDTH_AFTER_LAST - 1, + /** Invalid frequency bandwidth */ + WIFI_FREQ_BANDWIDTH_UNKNOWN +}; + +const char *const wifi_bandwidth_txt(enum wifi_frequency_bandwidths bandwidth); + /** Max SSID length */ #define WIFI_SSID_MAX_LEN 32 /** Minimum PSK length */ @@ -118,6 +263,10 @@ const char *wifi_band_txt(enum wifi_frequency_bands band); #define WIFI_SAE_PSWD_MAX_LEN 128 /** MAC address length */ #define WIFI_MAC_ADDR_LEN 6 +/** Max enterprise identity length */ +#define WIFI_ENT_IDENTITY_MAX_LEN 64 +/** Max enterprise password length */ +#define WIFI_ENT_PSWD_MAX_LEN 128 /** Minimum channel number */ #define WIFI_CHANNEL_MIN 1 @@ -428,12 +577,14 @@ static inline const char *wifi_twt_get_err_code_str(int16_t err_no) enum wifi_ps_param_type { /** Power save state. */ WIFI_PS_PARAM_STATE, - /** Power save listen interval. */ + /** Power save listen interval (units: (short) beacon intervals). */ WIFI_PS_PARAM_LISTEN_INTERVAL, /** Power save wakeup mode. */ WIFI_PS_PARAM_WAKEUP_MODE, /** Power save mode. */ WIFI_PS_PARAM_MODE, + /** Power save exit strategy. */ + WIFI_PS_PARAM_EXIT_STRATEGY, /** Power save timeout. */ WIFI_PS_PARAM_TIMEOUT, }; @@ -449,6 +600,24 @@ enum wifi_ps_wakeup_mode { /** Helper function to get user-friendly ps wakeup mode name. */ const char *wifi_ps_wakeup_mode_txt(enum wifi_ps_wakeup_mode ps_wakeup_mode); +/** + * @brief Wi-Fi power save exit strategy + */ +enum wifi_ps_exit_strategy { + /** PS-Poll frame based */ + WIFI_PS_EXIT_CUSTOM_ALGO = 0, + /** QoS NULL frame based */ + WIFI_PS_EXIT_EVERY_TIM, + +/** @cond INTERNAL_HIDDEN */ + WIFI_PS_EXIT_LAST, + WIFI_PS_EXIT_MAX = WIFI_PS_EXIT_LAST - 1, +/** @endcond */ +}; + +/** Helper function to get user-friendly ps exit strategy name. */ +const char *wifi_ps_exit_strategy_txt(enum wifi_ps_exit_strategy ps_exit_strategy); + /** @brief Wi-Fi power save error codes. */ enum wifi_config_ps_param_fail_reason { /** Unspecified error */ @@ -465,6 +634,8 @@ enum wifi_config_ps_param_fail_reason { WIFI_PS_PARAM_FAIL_DEVICE_CONNECTED, /** Listen interval out of range */ WIFI_PS_PARAM_LISTEN_INTERVAL_RANGE_INVALID, + /** Invalid exit strategy */ + WIFI_PS_PARAM_FAIL_INVALID_EXIT_STRATEGY, }; /** @cond INTERNAL_HIDDEN */ @@ -484,6 +655,20 @@ static const char * const wifi_ps_param_config_err_code_tbl[] = { }; /** @endcond */ +#ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_WNM +/** IEEE 802.11v BTM (BSS transition management) Query reasons. + * Refer to IEEE Std 802.11v-2011 - Table 7-43x-Transition and Transition Query reasons table. + */ +enum wifi_btm_query_reason { + /** Unspecified. */ + WIFI_BTM_QUERY_REASON_UNSPECIFIED = 0, + /** Low RSSI. */ + WIFI_BTM_QUERY_REASON_LOW_RSSI = 16, + /** Leaving ESS. */ + WIFI_BTM_QUERY_REASON_LEAVING_ESS = 20, +}; +#endif + /** Helper function to get user-friendly power save error code name. */ static inline const char *wifi_ps_get_config_err_code_str(int16_t err_no) { @@ -500,6 +685,12 @@ enum wifi_ap_config_param { WIFI_AP_CONFIG_PARAM_MAX_INACTIVITY = BIT(0), /** Used for AP mode configuration parameter max_num_sta */ WIFI_AP_CONFIG_PARAM_MAX_NUM_STA = BIT(1), + /** Used for AP mode configuration parameter bandwidth */ + WIFI_AP_CONFIG_PARAM_BANDWIDTH = BIT(2), + /** Used for AP mode configuration parameter ht_capab */ + WIFI_AP_CONFIG_PARAM_HT_CAPAB = BIT(3), + /** Used for AP mode configuration parameter vht_capab */ + WIFI_AP_CONFIG_PARAM_VHT_CAPAB = BIT(4), }; #ifdef __cplusplus diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi_credentials.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi_credentials.h new file mode 100644 index 00000000..0241930e --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi_credentials.h @@ -0,0 +1,218 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef WIFI_CREDENTIALS_H__ +#define WIFI_CREDENTIALS_H__ + +#include +#include +#include + +/** + * @defgroup wifi_credentials Wi-Fi credentials library + * @ingroup networking + * @since 4.0 + * @version 0.1.0 + * @{ + * @brief Library that provides a way to store and load Wi-Fi credentials. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* this entry contains a BSSID */ +#define WIFI_CREDENTIALS_FLAG_BSSID BIT(0) +/* this entry is to be preferred over others */ +#define WIFI_CREDENTIALS_FLAG_FAVORITE BIT(1) +/* this entry can use the 2.4 GHz band */ +#define WIFI_CREDENTIALS_FLAG_2_4GHz BIT(2) +/* this entry can use the 5 GHz band */ +#define WIFI_CREDENTIALS_FLAG_5GHz BIT(3) +/* this entry requires management frame protection */ +#define WIFI_CREDENTIALS_FLAG_MFP_REQUIRED BIT(4) +/* this entry disables management frame protection */ +#define WIFI_CREDENTIALS_FLAG_MFP_DISABLED BIT(5) + +#define WIFI_CREDENTIALS_MAX_PASSWORD_LEN \ + MAX(WIFI_PSK_MAX_LEN, CONFIG_WIFI_CREDENTIALS_SAE_PASSWORD_LENGTH) + +/** + * @brief Wi-Fi credentials entry header + * @note Every settings entry starts with this header. + * Depending on the `type` field, the header can be casted to a larger type. + * In addition to SSID (usually a string) and BSSID (a MAC address), + * a `flags` field can be used to control some detail settings. + * + */ +struct wifi_credentials_header { + enum wifi_security_type type; /**< Wi-Fi security type */ + char ssid[WIFI_SSID_MAX_LEN]; /**< SSID (Service Set Identifier) */ + size_t ssid_len; /**< Length of the SSID */ + uint32_t flags; /**< Flags for controlling detail settings */ + uint32_t timeout; /**< Timeout for connecting to the network */ + uint8_t bssid[WIFI_MAC_ADDR_LEN]; /**< BSSID (Basic Service Set Identifier) */ + uint8_t channel; /**< Channel on which the network operates */ +}; + +/** + * @brief Wi-Fi Personal credentials entry + * @note Contains only the header and a password. + * For PSK security, passwords can be up to `WIFI_PSK_MAX_LEN` bytes long + * including NULL termination. For SAE security it can range up to + * `CONFIG_WIFI_CREDENTIALS_SAE_PASSWORD_LENGTH`. + * + */ +struct wifi_credentials_personal { + struct wifi_credentials_header header; /**< Header */ + char password[WIFI_CREDENTIALS_MAX_PASSWORD_LEN]; /**< Password/PSK */ + size_t password_len; /**< Length of the password */ +}; + +/** + * @brief Wi-Fi Enterprise credentials entry + * @note This functionality is not yet implemented. + */ +struct wifi_credentials_enterprise { + struct wifi_credentials_header header; /**< Header */ + size_t identity_len; /**< Length of the identity */ + size_t anonymous_identity_len; /**< Length of the anonymous identity */ + size_t password_len; /**< Length of the password */ + size_t ca_cert_len; /**< Length of the CA certificate */ + size_t client_cert_len; /**< Length of the client certificate */ + size_t private_key_len; /**< Length of the private key */ + size_t private_key_pw_len; /**< Length of the private key password */ +}; + +/** + * @brief Get credentials for given SSID. + * + * @param[in] ssid SSID to look for + * @param[in] ssid_len length of SSID + * @param[out] type Wi-Fi security type + * @param[out] bssid_buf buffer to store BSSID if it was fixed + * @param[in] bssid_buf_len length of bssid_buf + * @param[out] password_buf buffer to store password + * @param[in] password_buf_len length of password_buf + * @param[out] password_len length of password + * @param[out] flags flags + * @param[out] channel channel + * @param[out] timeout timeout + * + * @return 0 Success. + * @return -ENOENT No network with this SSID was found. + * @return -EINVAL A required buffer was NULL or invalid SSID length. + * @return -EPROTO The network with this SSID is not a personal network. + */ +int wifi_credentials_get_by_ssid_personal(const char *ssid, size_t ssid_len, + enum wifi_security_type *type, uint8_t *bssid_buf, + size_t bssid_buf_len, char *password_buf, + size_t password_buf_len, size_t *password_len, + uint32_t *flags, uint8_t *channel, uint32_t *timeout); + +/** + * @brief Set credentials for given SSID. + * + * @param[in] ssid SSID to look for + * @param[in] ssid_len length of SSID + * @param[in] type Wi-Fi security type + * @param[in] bssid BSSID (may be NULL) + * @param[in] bssid_len length of BSSID buffer (either 0 or WIFI_MAC_ADDR_LEN) + * @param[in] password password + * @param[in] password_len length of password + * @param[in] flags flags + * @param[in] channel Channel + * @param[in] timeout Timeout + * + * @return 0 Success. Credentials are stored in persistent storage. + * @return -EINVAL A required buffer was NULL or security type is not supported. + * @return -ENOTSUP Security type is not supported. + * @return -ENOBUFS All slots are already taken. + */ +int wifi_credentials_set_personal(const char *ssid, size_t ssid_len, enum wifi_security_type type, + const uint8_t *bssid, size_t bssid_len, const char *password, + size_t password_len, uint32_t flags, uint8_t channel, + uint32_t timeout); + +/** + * @brief Get credentials for given SSID by struct. + * + * @param[in] ssid SSID to look for + * @param[in] ssid_len length of SSID + * @param[out] buf credentials Pointer to struct where credentials are stored + * + * @return 0 Success. + * @return -ENOENT No network with this SSID was found. + * @return -EINVAL A required buffer was NULL or too small. + * @return -EPROTO The network with this SSID is not a personal network. + */ +int wifi_credentials_get_by_ssid_personal_struct(const char *ssid, size_t ssid_len, + struct wifi_credentials_personal *buf); + +/** + * @brief Set credentials for given SSID by struct. + * + * @param[in] creds credentials Pointer to struct from which credentials are loaded + * + * @return 0 Success. + * @return -ENOENT No network with this SSID was found. + * @return -EINVAL A required buffer was NULL or incorrect size. + * @return -ENOBUFS All slots are already taken. + */ +int wifi_credentials_set_personal_struct(const struct wifi_credentials_personal *creds); + +/** + * @brief Delete credentials for given SSID. + * + * @param[in] ssid SSID to look for + * @param[in] ssid_len length of SSID + * + * @return -ENOENT if No network with this SSID was found. + * @return 0 on success, otherwise a negative error code + */ +int wifi_credentials_delete_by_ssid(const char *ssid, size_t ssid_len); + +/** + * @brief Check if credentials storage is empty. + * + * @return true if credential storage is empty, otherwise false + */ +bool wifi_credentials_is_empty(void); + +/** + * @brief Deletes all stored Wi-Fi credentials. + * + * This function deletes all Wi-Fi credentials that have been stored in the system. + * It is typically used when you want to clear all saved networks. + * + * @return 0 on successful, otherwise a negative error code + */ +int wifi_credentials_delete_all(void); + +/** + * @brief Callback type for wifi_credentials_for_each_ssid. + * @param[in] cb_arg arguments for the callback function. Appropriate cb_arg is + * transferred by wifi_credentials_for_each_ssid. + * @param[in] ssid SSID + * @param[in] ssid_len length of SSID + */ +typedef void (*wifi_credentials_ssid_cb)(void *cb_arg, const char *ssid, size_t ssid_len); + +/** + * @brief Call callback for each registered SSID. + * + * @param cb callback + * @param cb_arg argument for callback function + */ +void wifi_credentials_for_each_ssid(wifi_credentials_ssid_cb cb, void *cb_arg); + +#ifdef __cplusplus +} +#endif + +/** @} */ + +#endif /* WIFI_CREDENTIALS_H__ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi_mgmt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi_mgmt.h index 3c385994..d9d84303 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi_mgmt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi_mgmt.h @@ -1,5 +1,7 @@ /* * Copyright (c) 2017 Intel Corporation. + * Copyright 2024 NXP + * Copyright (c) 2024 Nordic Semiconductor ASA * * SPDX-License-Identifier: Apache-2.0 */ @@ -49,6 +51,12 @@ extern "C" { #define WIFI_MGMT_SCAN_CHAN_MAX_MANUAL 1 #endif /* CONFIG_WIFI_MGMT_SCAN_CHAN_MAX_MANUAL */ +#ifdef CONFIG_WIFI_ENT_IDENTITY_MAX_USERS +#define WIFI_ENT_IDENTITY_MAX_USERS CONFIG_WIFI_ENT_IDENTITY_MAX_USERS +#else +#define WIFI_ENT_IDENTITY_MAX_USERS 1 +#endif /* CONFIG_WIFI_ENT_IDENTITY_MAX_USERS */ + #define WIFI_MGMT_BAND_STR_SIZE_MAX 8 #define WIFI_MGMT_SCAN_MAX_BSS_CNT 65535 @@ -69,6 +77,10 @@ enum net_request_wifi_cmd { NET_REQUEST_WIFI_CMD_AP_DISABLE, /** Get interface status */ NET_REQUEST_WIFI_CMD_IFACE_STATUS, + /** Set or get 11k status */ + NET_REQUEST_WIFI_CMD_11K_CONFIG, + /** Send 11k neighbor request */ + NET_REQUEST_WIFI_CMD_11K_NEIGHBOR_REQUEST, /** Set power save status */ NET_REQUEST_WIFI_CMD_PS, /** Setup or teardown TWT flow */ @@ -87,13 +99,41 @@ enum net_request_wifi_cmd { NET_REQUEST_WIFI_CMD_AP_STA_DISCONNECT, /** Get Wi-Fi driver and Firmware versions */ NET_REQUEST_WIFI_CMD_VERSION, + /** Get Wi-Fi latest connection parameters */ + NET_REQUEST_WIFI_CMD_CONN_PARAMS, /** Set RTS threshold */ NET_REQUEST_WIFI_CMD_RTS_THRESHOLD, /** Configure AP parameter */ NET_REQUEST_WIFI_CMD_AP_CONFIG_PARAM, -/** @cond INTERNAL_HIDDEN */ + /** DPP actions */ + NET_REQUEST_WIFI_CMD_DPP, +#ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_WNM + /** BSS transition management query */ + NET_REQUEST_WIFI_CMD_BTM_QUERY, +#endif + /** Flush PMKSA cache entries */ + NET_REQUEST_WIFI_CMD_PMKSA_FLUSH, + /** Set enterprise mode credential */ + NET_REQUEST_WIFI_CMD_ENTERPRISE_CREDS, + /** Get RTS threshold */ + NET_REQUEST_WIFI_CMD_RTS_THRESHOLD_CONFIG, + /** WPS config */ + NET_REQUEST_WIFI_CMD_WPS_CONFIG, +#ifdef CONFIG_WIFI_CREDENTIALS_CONNECT_STORED + /** Connect to APs stored using wifi_credentials library. */ + NET_REQUEST_WIFI_CMD_CONNECT_STORED, +#endif + /** Start roaming */ + NET_REQUEST_WIFI_CMD_START_ROAMING, + /** Neighbor report complete */ + NET_REQUEST_WIFI_CMD_NEIGHBOR_REP_COMPLETE, + /** Specific scan */ + NET_REQUEST_WIFI_CMD_CANDIDATE_SCAN, + /** AP WPS config */ + NET_REQUEST_WIFI_CMD_AP_WPS_CONFIG, + /** @cond INTERNAL_HIDDEN */ NET_REQUEST_WIFI_CMD_MAX -/** @endcond */ + /** @endcond */ }; /** Request a Wi-Fi scan */ @@ -132,6 +172,16 @@ NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_AP_DISABLE); NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_IFACE_STATUS); +#define NET_REQUEST_WIFI_11K_CONFIG \ + (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_11K_CONFIG) + +NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_11K_CONFIG); + +#define NET_REQUEST_WIFI_11K_NEIGHBOR_REQUEST \ + (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_11K_NEIGHBOR_REQUEST) + +NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_11K_NEIGHBOR_REQUEST); + /** Request a Wi-Fi power save */ #define NET_REQUEST_WIFI_PS \ (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_PS) @@ -186,6 +236,12 @@ NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_AP_STA_DISCONNECT); NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_VERSION); +/** Request a Wi-Fi connection parameters */ +#define NET_REQUEST_WIFI_CONN_PARAMS \ + (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_CONN_PARAMS) + +NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_CONN_PARAMS); + /** Request a Wi-Fi RTS threshold */ #define NET_REQUEST_WIFI_RTS_THRESHOLD \ (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_RTS_THRESHOLD) @@ -198,6 +254,58 @@ NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_RTS_THRESHOLD); NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_AP_CONFIG_PARAM); +#ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_DPP +/** Request a Wi-Fi DPP operation */ +#define NET_REQUEST_WIFI_DPP \ + (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_DPP) + +NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_DPP); +#endif /* CONFIG_WIFI_NM_WPA_SUPPLICANT_DPP */ + +#ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_WNM +/** Request a Wi-Fi BTM query */ +#define NET_REQUEST_WIFI_BTM_QUERY (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_BTM_QUERY) + +NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_BTM_QUERY); +#endif + +/** Request a Wi-Fi PMKSA cache entries flush */ +#define NET_REQUEST_WIFI_PMKSA_FLUSH \ + (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_PMKSA_FLUSH) + +NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_PMKSA_FLUSH); + +/** Set Wi-Fi enterprise mode CA/client Cert and key */ +#define NET_REQUEST_WIFI_ENTERPRISE_CREDS \ + (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_ENTERPRISE_CREDS) + +NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_ENTERPRISE_CREDS); + +/** Request a Wi-Fi RTS threshold configuration */ +#define NET_REQUEST_WIFI_RTS_THRESHOLD_CONFIG \ + (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_RTS_THRESHOLD_CONFIG) + +NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_RTS_THRESHOLD_CONFIG); + +#define NET_REQUEST_WIFI_WPS_CONFIG (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_WPS_CONFIG) + +NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_WPS_CONFIG); +#ifdef CONFIG_WIFI_CREDENTIALS_CONNECT_STORED +#define NET_REQUEST_WIFI_CONNECT_STORED (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_CONNECT_STORED) + +NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_CONNECT_STORED); +#endif + +#define NET_REQUEST_WIFI_START_ROAMING \ + (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_START_ROAMING) + +NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_START_ROAMING); + +#define NET_REQUEST_WIFI_NEIGHBOR_REP_COMPLETE \ + (_NET_WIFI_BASE | NET_REQUEST_WIFI_CMD_NEIGHBOR_REP_COMPLETE) + +NET_MGMT_DEFINE_REQUEST_HANDLER(NET_REQUEST_WIFI_NEIGHBOR_REP_COMPLETE); + /** @brief Wi-Fi management events */ enum net_event_wifi_cmd { /** Scan results available */ @@ -220,6 +328,12 @@ enum net_event_wifi_cmd { NET_EVENT_WIFI_CMD_RAW_SCAN_RESULT, /** Disconnect complete */ NET_EVENT_WIFI_CMD_DISCONNECT_COMPLETE, + /** Signal change event */ + NET_EVENT_WIFI_CMD_SIGNAL_CHANGE, + /** Neighbor Report */ + NET_EVENT_WIFI_CMD_NEIGHBOR_REP_RECEIVED, + /** Neighbor Report complete */ + NET_EVENT_WIFI_CMD_NEIGHBOR_REP_COMPLETE, /** AP mode enable result */ NET_EVENT_WIFI_CMD_AP_ENABLE_RESULT, /** AP mode disable result */ @@ -228,6 +342,8 @@ enum net_event_wifi_cmd { NET_EVENT_WIFI_CMD_AP_STA_CONNECTED, /** STA disconnected from AP */ NET_EVENT_WIFI_CMD_AP_STA_DISCONNECTED, + /** Supplicant specific event */ + NET_EVENT_WIFI_CMD_SUPPLICANT, }; /** Event emitted for Wi-Fi scan result */ @@ -266,6 +382,14 @@ enum net_event_wifi_cmd { #define NET_EVENT_WIFI_DISCONNECT_COMPLETE \ (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_DISCONNECT_COMPLETE) +/** Event signal change of connected AP */ +#define NET_EVENT_WIFI_SIGNAL_CHANGE \ + (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_SIGNAL_CHANGE) + +/** Event Neighbor Report Completed */ +#define NET_EVENT_WIFI_NEIGHBOR_REP_COMP \ + (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_NEIGHBOR_REP_COMPLETE) + /** Event emitted for Wi-Fi access point enable result */ #define NET_EVENT_WIFI_AP_ENABLE_RESULT \ (_NET_WIFI_EVENT | NET_EVENT_WIFI_CMD_AP_ENABLE_RESULT) @@ -357,7 +481,7 @@ struct wifi_scan_params { */ struct wifi_scan_result { /** SSID */ - uint8_t ssid[WIFI_SSID_MAX_LEN]; + uint8_t ssid[WIFI_SSID_MAX_LEN + 1]; /** SSID length */ uint8_t ssid_length; /** Frequency band */ @@ -402,6 +526,50 @@ struct wifi_connect_req_params { uint8_t bssid[WIFI_MAC_ADDR_LEN]; /** Connect timeout in seconds, SYS_FOREVER_MS for no timeout */ int timeout; + /** anonymous identity */ + const uint8_t *anon_id; + /** anon_id length, max 64 */ + uint8_t aid_length; + /** Private key passwd for enterprise mode */ + const uint8_t *key_passwd; + /** Private key passwd length, max 128 */ + uint8_t key_passwd_length; + /** private key2 passwd */ + const uint8_t *key2_passwd; + /** key2 passwd length, max 128 */ + uint8_t key2_passwd_length; + /** suiteb or suiteb-192 */ + uint8_t suiteb_type; + /** TLS cipher */ + uint8_t TLS_cipher; + /** eap version */ + int eap_ver; + /** Identity for EAP */ + const uint8_t *eap_identity; + /** eap identity length, max 64 */ + uint8_t eap_id_length; + /** Password string for EAP. */ + const uint8_t *eap_password; + /** eap passwd length, max 128 */ + uint8_t eap_passwd_length; + /** Fast BSS Transition used */ + bool ft_used; + /** Number of EAP users */ + int nusers; + /** Number of EAP passwds */ + uint8_t passwds; + /** User Identities */ + const uint8_t *identities[WIFI_ENT_IDENTITY_MAX_USERS]; + /** User Passwords */ + const uint8_t *passwords[WIFI_ENT_IDENTITY_MAX_USERS]; + /** Hidden SSID configure + * 0: disabled (default) + * 1: send empty (length=0) SSID in beacon and ignore probe request for broadcast SSID + * 2: clear SSID, but keep the original length and ignore probe request for broadcast SSID + */ + uint8_t ignore_broadcast_ssid; + /** Parameter used for frequency band */ + enum wifi_frequency_bandwidths bandwidth; }; /** @brief Wi-Fi connect result codes. To be overlaid on top of \ref wifi_status @@ -490,7 +658,7 @@ struct wifi_iface_status { /** SSID length */ unsigned int ssid_len; /** SSID */ - char ssid[WIFI_SSID_MAX_LEN]; + char ssid[WIFI_SSID_MAX_LEN + 1]; /** BSSID */ char bssid[WIFI_MAC_ADDR_LEN]; /** Frequency band */ @@ -513,6 +681,8 @@ struct wifi_iface_status { unsigned short beacon_interval; /** is TWT capable? */ bool twt_capable; + /** The current 802.11 PHY TX data rate (in Kbps) */ + int current_phy_tx_rate; }; /** @brief Wi-Fi power save parameters */ @@ -538,6 +708,8 @@ struct wifi_ps_params { enum wifi_ps_param_type type; /** Wi-Fi power save fail reason */ enum wifi_config_ps_param_fail_reason fail_reason; + /** Wi-Fi power save exit strategy */ + enum wifi_ps_exit_strategy exit_strategy; }; /** @brief Wi-Fi TWT parameters */ @@ -623,6 +795,46 @@ struct wifi_twt_flow_info { uint32_t twt_wake_ahead_duration; }; +/** Wi-Fi enterprise mode credentials */ +struct wifi_enterprise_creds_params { + /** CA certification */ + uint8_t *ca_cert; + /** CA certification length */ + uint32_t ca_cert_len; + /** Client certification */ + uint8_t *client_cert; + /** Client certification length */ + uint32_t client_cert_len; + /** Client key */ + uint8_t *client_key; + /** Client key length */ + uint32_t client_key_len; + /** CA certification of phase2*/ + uint8_t *ca_cert2; + /** Phase2 CA certification length */ + uint32_t ca_cert2_len; + /** Client certification of phase2*/ + uint8_t *client_cert2; + /** Phase2 Client certification length */ + uint32_t client_cert2_len; + /** Client key of phase2*/ + uint8_t *client_key2; + /** Phase2 Client key length */ + uint32_t client_key2_len; + /** Server certification */ + uint8_t *server_cert; + /** Server certification length */ + uint32_t server_cert_len; + /** Server key */ + uint8_t *server_key; + /** Server key length */ + uint32_t server_key_len; + /** Diffie–Hellman parameter */ + uint8_t *dh_param; + /** Diffie–Hellman parameter length */ + uint32_t dh_param_len; +}; + /** @brief Wi-Fi power save configuration */ struct wifi_ps_config { /** Number of TWT flows */ @@ -641,6 +853,16 @@ enum wifi_mgmt_op { WIFI_MGMT_SET = 1, }; +/** Wi-Fi 11k parameters */ +struct wifi_11k_params { + /** 11k command operation */ + enum wifi_mgmt_op oper; + /** 11k enable/disable */ + bool enable_11k; + /** SSID */ + uint8_t ssid[WIFI_SSID_MAX_LEN + 1]; +}; + /** Max regulatory channel number */ #define MAX_REG_CHAN_NUM 42 @@ -662,7 +884,9 @@ struct wifi_reg_chan_info { struct wifi_reg_domain { /** Regulatory domain operation */ enum wifi_mgmt_op oper; - /** Ignore all other regulatory hints over this one */ + /** Ignore all other regulatory hints over this one, the behavior is + * implementation specific. + */ bool force; /** Country code: ISO/IEC 3166-1 alpha-2 */ uint8_t country_code[WIFI_COUNTRY_CODE_LEN]; @@ -756,6 +980,7 @@ struct wifi_channel_info { /** @cond INTERNAL_HIDDEN */ #define WIFI_AP_STA_MAX_INACTIVITY (LONG_MAX - 1) +#define WIFI_AP_IEEE_80211_CAPAB_MAX_LEN 64 /** @endcond */ /** @brief Wi-Fi AP configuration parameter */ @@ -766,6 +991,242 @@ struct wifi_ap_config_params { uint32_t max_inactivity; /** Parameter used for setting maximum number of stations */ uint32_t max_num_sta; + /** Parameter used for frequency band */ + enum wifi_frequency_bandwidths bandwidth; +#if defined(CONFIG_WIFI_NM_HOSTAPD_AP) + /** Parameter used for setting HT capabilities */ + char ht_capab[WIFI_AP_IEEE_80211_CAPAB_MAX_LEN + 1]; + /** Parameter used for setting VHT capabilities */ + char vht_capab[WIFI_AP_IEEE_80211_CAPAB_MAX_LEN + 1]; +#endif +}; + +#ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_DPP +/** @brief Wi-Fi DPP configuration parameter */ +/** Wi-Fi DPP QR-CODE in string max len for SHA512 */ +#define WIFI_DPP_QRCODE_MAX_LEN 255 + +/** Wi-Fi DPP operations */ +enum wifi_dpp_op { + /** Unset invalid operation */ + WIFI_DPP_OP_INVALID = 0, + /** Add configurator */ + WIFI_DPP_CONFIGURATOR_ADD, + /** Start DPP auth as configurator or enrollee */ + WIFI_DPP_AUTH_INIT, + /** Scan qr_code as parameter */ + WIFI_DPP_QR_CODE, + /** Start DPP chirp to send DPP announcement */ + WIFI_DPP_CHIRP, + /** Listen on specific frequency */ + WIFI_DPP_LISTEN, + /** Generate a bootstrap like qrcode */ + WIFI_DPP_BOOTSTRAP_GEN, + /** Get a bootstrap uri for external device to scan */ + WIFI_DPP_BOOTSTRAP_GET_URI, + /** Set configurator parameters */ + WIFI_DPP_SET_CONF_PARAM, + /** Set DPP rx response wait timeout */ + WIFI_DPP_SET_WAIT_RESP_TIME, + /** Reconfigure DPP network */ + WIFI_DPP_RECONFIG +}; + +/** Wi-Fi DPP crypto Elliptic Curves */ +enum wifi_dpp_curves { + /** Unset default use P-256 */ + WIFI_DPP_CURVES_DEFAULT = 0, + /** prime256v1 */ + WIFI_DPP_CURVES_P_256, + /** secp384r1 */ + WIFI_DPP_CURVES_P_384, + /** secp521r1 */ + WIFI_DPP_CURVES_P_512, + /** brainpoolP256r1 */ + WIFI_DPP_CURVES_BP_256, + /** brainpoolP384r1 */ + WIFI_DPP_CURVES_BP_384, + /** brainpoolP512r1 */ + WIFI_DPP_CURVES_BP_512 +}; + +/** Wi-Fi DPP role */ +enum wifi_dpp_role { + /** Unset role */ + WIFI_DPP_ROLE_UNSET = 0, + /** Configurator passes AP config to enrollee */ + WIFI_DPP_ROLE_CONFIGURATOR, + /** Enrollee gets AP config and connect to AP */ + WIFI_DPP_ROLE_ENROLLEE, + /** Both configurator and enrollee might be chosen */ + WIFI_DPP_ROLE_EITHER +}; + +/** Wi-Fi DPP security type + * + * current only support DPP only AKM + */ +enum wifi_dpp_conf { + /** Unset conf */ + WIFI_DPP_CONF_UNSET = 0, + /** conf=sta-dpp, AKM DPP only for sta */ + WIFI_DPP_CONF_STA, + /** conf=ap-dpp, AKM DPP only for ap */ + WIFI_DPP_CONF_AP, + /** conf=query, query for AKM */ + WIFI_DPP_CONF_QUERY +}; + +/** Wi-Fi DPP bootstrap type + * + * current default and only support QR-CODE + */ +enum wifi_dpp_bootstrap_type { + /** Unset type */ + WIFI_DPP_BOOTSTRAP_TYPE_UNSET = 0, + /** qrcode */ + WIFI_DPP_BOOTSTRAP_TYPE_QRCODE, + /** pkex */ + WIFI_DPP_BOOTSTRAP_TYPE_PKEX, + /** nfc */ + WIFI_DPP_BOOTSTRAP_TYPE_NFC_URI +}; + +/** Params to add DPP configurator */ +struct wifi_dpp_configurator_add_params { + /** ECP curves for private key */ + int curve; + /** ECP curves for net access key */ + int net_access_key_curve; +}; + +/** Params to initiate a DPP auth procedure */ +struct wifi_dpp_auth_init_params { + /** Peer bootstrap id */ + int peer; + /** Configuration parameter id */ + int configurator; + /** Role configurator or enrollee */ + int role; + /** Security type */ + int conf; + /** SSID in string */ + char ssid[WIFI_SSID_MAX_LEN + 1]; +}; + +/** Params to do DPP chirp */ +struct wifi_dpp_chirp_params { + /** Own bootstrap id */ + int id; + /** Chirp on frequency */ + int freq; +}; + +/** Params to do DPP listen */ +struct wifi_dpp_listen_params { + /** Listen on frequency */ + int freq; + /** Role configurator or enrollee */ + int role; +}; + +/** Params to generate a DPP bootstrap */ +struct wifi_dpp_bootstrap_gen_params { + /** Bootstrap type */ + int type; + /** Own operating class */ + int op_class; + /** Own working channel */ + int chan; + /** ECP curves */ + int curve; + /** Own mac address */ + uint8_t mac[WIFI_MAC_ADDR_LEN]; +}; + +/** Params to set specific DPP configurator */ +struct wifi_dpp_configurator_set_params { + /** Peer bootstrap id */ + int peer; + /** Configuration parameter id */ + int configurator; + /** Role configurator or enrollee */ + int role; + /** Security type */ + int conf; + /** ECP curves for private key */ + int curve; + /** ECP curves for net access key */ + int net_access_key_curve; + /** Own mac address */ + char ssid[WIFI_SSID_MAX_LEN + 1]; +}; + +/** Wi-Fi DPP params for various operations + */ +struct wifi_dpp_params { + /** Operation enum */ + int action; + union { + /** Params to add DPP configurator */ + struct wifi_dpp_configurator_add_params configurator_add; + /** Params to initiate a DPP auth procedure */ + struct wifi_dpp_auth_init_params auth_init; + /** Params to do DPP chirp */ + struct wifi_dpp_chirp_params chirp; + /** Params to do DPP listen */ + struct wifi_dpp_listen_params listen; + /** Params to generate a DPP bootstrap */ + struct wifi_dpp_bootstrap_gen_params bootstrap_gen; + /** Params to set specific DPP configurator */ + struct wifi_dpp_configurator_set_params configurator_set; + /** Bootstrap get uri id */ + int id; + /** Timeout for DPP frame response rx */ + int dpp_resp_wait_time; + /** network id for reconfig */ + int network_id; + /** DPP QR-CODE, max for SHA512 */ + uint8_t dpp_qr_code[WIFI_DPP_QRCODE_MAX_LEN + 1]; + /** Request response reusing request buffer. + * So once a request is sent, buffer will be + * fulfilled by response + */ + char resp[WIFI_DPP_QRCODE_MAX_LEN + 1]; + }; +}; +#endif /* CONFIG_WIFI_NM_WPA_SUPPLICANT_DPP */ + +#define WIFI_WPS_PIN_MAX_LEN 8 + +/** Operation for WPS */ +enum wifi_wps_op { + /** WPS pbc */ + WIFI_WPS_PBC = 0, + /** Get WPS pin number */ + WIFI_WPS_PIN_GET = 1, + /** Set WPS pin number */ + WIFI_WPS_PIN_SET = 2, +}; + +/** Wi-Fi wps setup */ +struct wifi_wps_config_params { + /** wps operation */ + enum wifi_wps_op oper; + /** pin value*/ + char pin[WIFI_WPS_PIN_MAX_LEN + 1]; +}; + +/** Wi-Fi AP status + */ +enum wifi_hostapd_iface_state { + WIFI_HAPD_IFACE_UNINITIALIZED, + WIFI_HAPD_IFACE_DISABLED, + WIFI_HAPD_IFACE_COUNTRY_UPDATE, + WIFI_HAPD_IFACE_ACS, + WIFI_HAPD_IFACE_HT_SCAN, + WIFI_HAPD_IFACE_DFS, + WIFI_HAPD_IFACE_ENABLED }; #include @@ -863,7 +1324,30 @@ struct wifi_mgmt_ops { * @return 0 if ok, < 0 if error */ int (*get_stats)(const struct device *dev, struct net_stats_wifi *stats); + /** Reset Wi-Fi statistics + * + * @param dev Pointer to the device structure for the driver instance. + * + * @return 0 if ok, < 0 if error + */ + int (*reset_stats)(const struct device *dev); #endif /* CONFIG_NET_STATISTICS_WIFI */ + /** Set or get 11K status + * + * @param dev Pointer to the device structure for the driver instance. + * @param params 11k parameters + * + * @return 0 if ok, < 0 if error + */ + int (*cfg_11k)(const struct device *dev, struct wifi_11k_params *params); + /** Send 11k neighbor request + * + * @param dev Pointer to the device structure for the driver instance. + * @param params 11k parameters + * + * @return 0 if ok, < 0 if error + */ + int (*send_11k_neighbor_request)(const struct device *dev, struct wifi_11k_params *params); /** Set power save status * * @param dev Pointer to the device structure for the driver instance. @@ -920,6 +1404,16 @@ struct wifi_mgmt_ops { * @return 0 if ok, < 0 if error */ int (*channel)(const struct device *dev, struct wifi_channel_info *channel); +#ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_WNM + /** Send BTM query + * + * @param dev Pointer to the device structure for the driver instance. + * @param reason query reason + * + * @return 0 if ok, < 0 if error + */ + int (*btm_query)(const struct device *dev, uint8_t reason); +#endif /** Get Version of WiFi driver and Firmware * * The driver that implements the get_version function must not use stack to allocate the @@ -933,6 +1427,14 @@ struct wifi_mgmt_ops { * @return 0 if ok, < 0 if error */ int (*get_version)(const struct device *dev, struct wifi_version *params); + /** Get Wi-Fi connection parameters recently used + * + * @param dev Pointer to the device structure for the driver instance + * @param params the Wi-Fi connection parameters recently used + * + * @return 0 if ok, < 0 if error + */ + int (*get_conn_params)(const struct device *dev, struct wifi_connect_req_params *params); /** Set RTS threshold value * * @param dev Pointer to the device structure for the driver instance. @@ -949,6 +1451,66 @@ struct wifi_mgmt_ops { * @return 0 if ok, < 0 if error */ int (*ap_config_params)(const struct device *dev, struct wifi_ap_config_params *params); + +#ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_DPP + /** Dispatch DPP operations by action enum, with or without arguments in string format + * + * @param dev Pointer to the device structure for the driver instance + * @param params DPP action enum and parameters in string + * + * @return 0 if ok, < 0 if error + */ + int (*dpp_dispatch)(const struct device *dev, struct wifi_dpp_params *params); +#endif /* CONFIG_WIFI_NM_WPA_SUPPLICANT_DPP */ + /** Flush PMKSA cache entries + * + * @param dev Pointer to the device structure for the driver instance. + * + * @return 0 if ok, < 0 if error + */ + int (*pmksa_flush)(const struct device *dev); + /** Set Wi-Fi enterprise mode CA/client Cert and key + * + * @param dev Pointer to the device structure for the driver instance. + * @param creds Pointer to the CA/client Cert and key. + * + * @return 0 if ok, < 0 if error + */ +#ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_CRYPTO_ENTERPRISE + int (*enterprise_creds)(const struct device *dev, + struct wifi_enterprise_creds_params *creds); +#endif + /** Get RTS threshold value + * + * @param dev Pointer to the device structure for the driver instance. + * @param rts_threshold Pointer to the RTS threshold value. + * + * @return 0 if ok, < 0 if error + */ + int (*get_rts_threshold)(const struct device *dev, unsigned int *rts_threshold); + /** Start a WPS PBC/PIN connection + * + * @param dev Pointer to the device structure for the driver instance + * @param params wps operarion parameters + * + * @return 0 if ok, < 0 if error + */ + int (*wps_config)(const struct device *dev, struct wifi_wps_config_params *params); + /** Trigger candidate scan + * + * @param dev Pointer to the device structure for the driver instance + * @param params Scan parameters + * + * @return 0 if ok, < 0 if error + */ + int (*candidate_scan)(const struct device *dev, struct wifi_scan_params *params); + /** Start 11r roaming + * + * @param dev Pointer to the device structure for the driver instance + * + * @return 0 if ok, < 0 if error + */ + int (*start_11r_roaming)(const struct device *dev); }; /** Wi-Fi management offload API */ @@ -1040,6 +1602,17 @@ void wifi_mgmt_raise_raw_scan_result_event(struct net_if *iface, */ void wifi_mgmt_raise_disconnect_complete_event(struct net_if *iface, int status); +#ifdef CONFIG_WIFI_NM_WPA_SUPPLICANT_ROAMING +/** Wi-Fi management neighbor reports event + * + * @param iface Network interface + * @param inbuf Input buffer of neighbor reports + * @param buf_len Lenghth of input buffer + */ +void wifi_mgmt_raise_neighbor_rep_recv_event(struct net_if *iface, + char *inbuf, size_t buf_len); +#endif + /** Wi-Fi management AP mode enable result event * * @param iface Network interface diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi_nm.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi_nm.h index 5965513d..4c94b478 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi_nm.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/wifi_nm.h @@ -22,6 +22,8 @@ /** * @brief Wi-Fi Network manager API * @defgroup wifi_nm Wi-Fi Network Manager API + * @since 3.5 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/zperf.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/zperf.h index c97c9d01..4b6c50f4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/zperf.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net/zperf.h @@ -10,6 +10,8 @@ * * @brief Zperf API * @defgroup zperf Zperf API + * @since 3.3 + * @version 0.8.0 * @ingroup networking * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net_buf.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net_buf.h new file mode 100644 index 00000000..02c041e9 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/net_buf.h @@ -0,0 +1,2731 @@ +/** @file + * @brief Buffer management. + */ + +/* + * Copyright (c) 2015 Intel Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_NET_BUF_H_ +#define ZEPHYR_INCLUDE_NET_BUF_H_ + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Network buffer library + * @defgroup net_buf Network Buffer Library + * @since 1.0 + * @version 1.0.0 + * @ingroup os_services + * @{ + */ + +/* Alignment needed for various parts of the buffer definition */ +#if CONFIG_NET_BUF_ALIGNMENT == 0 +#define __net_buf_align __aligned(sizeof(void *)) +#else +#define __net_buf_align __aligned(CONFIG_NET_BUF_ALIGNMENT) +#endif + +/** + * @brief Define a net_buf_simple stack variable. + * + * This is a helper macro which is used to define a net_buf_simple object + * on the stack. + * + * @param _name Name of the net_buf_simple object. + * @param _size Maximum data storage for the buffer. + */ +#define NET_BUF_SIMPLE_DEFINE(_name, _size) \ + uint8_t net_buf_data_##_name[_size]; \ + struct net_buf_simple _name = { \ + .data = net_buf_data_##_name, \ + .len = 0, \ + .size = _size, \ + .__buf = net_buf_data_##_name, \ + } + +/** + * + * @brief Define a static net_buf_simple variable. + * + * This is a helper macro which is used to define a static net_buf_simple + * object. + * + * @param _name Name of the net_buf_simple object. + * @param _size Maximum data storage for the buffer. + */ +#define NET_BUF_SIMPLE_DEFINE_STATIC(_name, _size) \ + static __noinit uint8_t net_buf_data_##_name[_size]; \ + static struct net_buf_simple _name = { \ + .data = net_buf_data_##_name, \ + .len = 0, \ + .size = _size, \ + .__buf = net_buf_data_##_name, \ + } + +/** + * @brief Simple network buffer representation. + * + * This is a simpler variant of the net_buf object (in fact net_buf uses + * net_buf_simple internally). It doesn't provide any kind of reference + * counting, user data, dynamic allocation, or in general the ability to + * pass through kernel objects such as FIFOs. + * + * The main use of this is for scenarios where the meta-data of the normal + * net_buf isn't needed and causes too much overhead. This could be e.g. + * when the buffer only needs to be allocated on the stack or when the + * access to and lifetime of the buffer is well controlled and constrained. + */ +struct net_buf_simple { + /** Pointer to the start of data in the buffer. */ + uint8_t *data; + + /** + * Length of the data behind the data pointer. + * + * To determine the max length, use net_buf_simple_max_len(), not #size! + */ + uint16_t len; + + /** Amount of data that net_buf_simple#__buf can store. */ + uint16_t size; + + /** Start of the data storage. Not to be accessed directly + * (the data pointer should be used instead). + */ + uint8_t *__buf; +}; + +/** + * + * @brief Define a net_buf_simple stack variable and get a pointer to it. + * + * This is a helper macro which is used to define a net_buf_simple object on + * the stack and the get a pointer to it as follows: + * + * struct net_buf_simple *my_buf = NET_BUF_SIMPLE(10); + * + * After creating the object it needs to be initialized by calling + * net_buf_simple_init(). + * + * @param _size Maximum data storage for the buffer. + * + * @return Pointer to stack-allocated net_buf_simple object. + */ +#define NET_BUF_SIMPLE(_size) \ + ((struct net_buf_simple *)(&(struct { \ + struct net_buf_simple buf; \ + uint8_t data[_size]; \ + }) { \ + .buf.size = _size, \ + })) + +/** + * @brief Initialize a net_buf_simple object. + * + * This needs to be called after creating a net_buf_simple object using + * the NET_BUF_SIMPLE macro. + * + * @param buf Buffer to initialize. + * @param reserve_head Headroom to reserve. + */ +static inline void net_buf_simple_init(struct net_buf_simple *buf, + size_t reserve_head) +{ + if (!buf->__buf) { + buf->__buf = (uint8_t *)buf + sizeof(*buf); + } + + buf->data = buf->__buf + reserve_head; + buf->len = 0U; +} + +/** + * @brief Initialize a net_buf_simple object with data. + * + * Initialized buffer object with external data. + * + * @param buf Buffer to initialize. + * @param data External data pointer + * @param size Amount of data the pointed data buffer if able to fit. + */ +void net_buf_simple_init_with_data(struct net_buf_simple *buf, + void *data, size_t size); + +/** + * @brief Reset buffer + * + * Reset buffer data so it can be reused for other purposes. + * + * @param buf Buffer to reset. + */ +static inline void net_buf_simple_reset(struct net_buf_simple *buf) +{ + buf->len = 0U; + buf->data = buf->__buf; +} + +/** + * Clone buffer state, using the same data buffer. + * + * Initializes a buffer to point to the same data as an existing buffer. + * Allows operations on the same data without altering the length and + * offset of the original. + * + * @param original Buffer to clone. + * @param clone The new clone. + */ +void net_buf_simple_clone(const struct net_buf_simple *original, + struct net_buf_simple *clone); + +/** + * @brief Prepare data to be added at the end of the buffer + * + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param len Number of bytes to increment the length with. + * + * @return The original tail of the buffer. + */ +void *net_buf_simple_add(struct net_buf_simple *buf, size_t len); + +/** + * @brief Copy given number of bytes from memory to the end of the buffer + * + * Increments the data length of the buffer to account for more data at the + * end. + * + * @param buf Buffer to update. + * @param mem Location of data to be added. + * @param len Length of data to be added + * + * @return The original tail of the buffer. + */ +void *net_buf_simple_add_mem(struct net_buf_simple *buf, const void *mem, + size_t len); + +/** + * @brief Add (8-bit) byte at the end of the buffer + * + * Increments the data length of the buffer to account for more data at the + * end. + * + * @param buf Buffer to update. + * @param val byte value to be added. + * + * @return Pointer to the value added + */ +uint8_t *net_buf_simple_add_u8(struct net_buf_simple *buf, uint8_t val); + +/** + * @brief Add 16-bit value at the end of the buffer + * + * Adds 16-bit value in little endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 16-bit value to be added. + */ +void net_buf_simple_add_le16(struct net_buf_simple *buf, uint16_t val); + +/** + * @brief Add 16-bit value at the end of the buffer + * + * Adds 16-bit value in big endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 16-bit value to be added. + */ +void net_buf_simple_add_be16(struct net_buf_simple *buf, uint16_t val); + +/** + * @brief Add 24-bit value at the end of the buffer + * + * Adds 24-bit value in little endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 24-bit value to be added. + */ +void net_buf_simple_add_le24(struct net_buf_simple *buf, uint32_t val); + +/** + * @brief Add 24-bit value at the end of the buffer + * + * Adds 24-bit value in big endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 24-bit value to be added. + */ +void net_buf_simple_add_be24(struct net_buf_simple *buf, uint32_t val); + +/** + * @brief Add 32-bit value at the end of the buffer + * + * Adds 32-bit value in little endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 32-bit value to be added. + */ +void net_buf_simple_add_le32(struct net_buf_simple *buf, uint32_t val); + +/** + * @brief Add 32-bit value at the end of the buffer + * + * Adds 32-bit value in big endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 32-bit value to be added. + */ +void net_buf_simple_add_be32(struct net_buf_simple *buf, uint32_t val); + +/** + * @brief Add 40-bit value at the end of the buffer + * + * Adds 40-bit value in little endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 40-bit value to be added. + */ +void net_buf_simple_add_le40(struct net_buf_simple *buf, uint64_t val); + +/** + * @brief Add 40-bit value at the end of the buffer + * + * Adds 40-bit value in big endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 40-bit value to be added. + */ +void net_buf_simple_add_be40(struct net_buf_simple *buf, uint64_t val); + +/** + * @brief Add 48-bit value at the end of the buffer + * + * Adds 48-bit value in little endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 48-bit value to be added. + */ +void net_buf_simple_add_le48(struct net_buf_simple *buf, uint64_t val); + +/** + * @brief Add 48-bit value at the end of the buffer + * + * Adds 48-bit value in big endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 48-bit value to be added. + */ +void net_buf_simple_add_be48(struct net_buf_simple *buf, uint64_t val); + +/** + * @brief Add 64-bit value at the end of the buffer + * + * Adds 64-bit value in little endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 64-bit value to be added. + */ +void net_buf_simple_add_le64(struct net_buf_simple *buf, uint64_t val); + +/** + * @brief Add 64-bit value at the end of the buffer + * + * Adds 64-bit value in big endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 64-bit value to be added. + */ +void net_buf_simple_add_be64(struct net_buf_simple *buf, uint64_t val); + +/** + * @brief Remove data from the end of the buffer. + * + * Removes data from the end of the buffer by modifying the buffer length. + * + * @param buf Buffer to update. + * @param len Number of bytes to remove. + * + * @return New end of the buffer data. + */ +void *net_buf_simple_remove_mem(struct net_buf_simple *buf, size_t len); + +/** + * @brief Remove a 8-bit value from the end of the buffer + * + * Same idea as with net_buf_simple_remove_mem(), but a helper for operating + * on 8-bit values. + * + * @param buf A valid pointer on a buffer. + * + * @return The 8-bit removed value + */ +uint8_t net_buf_simple_remove_u8(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 16 bits from the end of the buffer. + * + * Same idea as with net_buf_simple_remove_mem(), but a helper for operating + * on 16-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 16-bit value converted from little endian to host endian. + */ +uint16_t net_buf_simple_remove_le16(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 16 bits from the end of the buffer. + * + * Same idea as with net_buf_simple_remove_mem(), but a helper for operating + * on 16-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 16-bit value converted from big endian to host endian. + */ +uint16_t net_buf_simple_remove_be16(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 24 bits from the end of the buffer. + * + * Same idea as with net_buf_simple_remove_mem(), but a helper for operating + * on 24-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 24-bit value converted from little endian to host endian. + */ +uint32_t net_buf_simple_remove_le24(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 24 bits from the end of the buffer. + * + * Same idea as with net_buf_simple_remove_mem(), but a helper for operating + * on 24-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 24-bit value converted from big endian to host endian. + */ +uint32_t net_buf_simple_remove_be24(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 32 bits from the end of the buffer. + * + * Same idea as with net_buf_simple_remove_mem(), but a helper for operating + * on 32-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 32-bit value converted from little endian to host endian. + */ +uint32_t net_buf_simple_remove_le32(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 32 bits from the end of the buffer. + * + * Same idea as with net_buf_simple_remove_mem(), but a helper for operating + * on 32-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 32-bit value converted from big endian to host endian. + */ +uint32_t net_buf_simple_remove_be32(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 40 bits from the end of the buffer. + * + * Same idea as with net_buf_simple_remove_mem(), but a helper for operating + * on 40-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 40-bit value converted from little endian to host endian. + */ +uint64_t net_buf_simple_remove_le40(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 40 bits from the end of the buffer. + * + * Same idea as with net_buf_simple_remove_mem(), but a helper for operating + * on 40-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 40-bit value converted from big endian to host endian. + */ +uint64_t net_buf_simple_remove_be40(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 48 bits from the end of the buffer. + * + * Same idea as with net_buf_simple_remove_mem(), but a helper for operating + * on 48-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 48-bit value converted from little endian to host endian. + */ +uint64_t net_buf_simple_remove_le48(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 48 bits from the end of the buffer. + * + * Same idea as with net_buf_simple_remove_mem(), but a helper for operating + * on 48-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 48-bit value converted from big endian to host endian. + */ +uint64_t net_buf_simple_remove_be48(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 64 bits from the end of the buffer. + * + * Same idea as with net_buf_simple_remove_mem(), but a helper for operating + * on 64-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 64-bit value converted from little endian to host endian. + */ +uint64_t net_buf_simple_remove_le64(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 64 bits from the end of the buffer. + * + * Same idea as with net_buf_simple_remove_mem(), but a helper for operating + * on 64-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 64-bit value converted from big endian to host endian. + */ +uint64_t net_buf_simple_remove_be64(struct net_buf_simple *buf); + +/** + * @brief Prepare data to be added to the start of the buffer + * + * Modifies the data pointer and buffer length to account for more data + * in the beginning of the buffer. + * + * @param buf Buffer to update. + * @param len Number of bytes to add to the beginning. + * + * @return The new beginning of the buffer data. + */ +void *net_buf_simple_push(struct net_buf_simple *buf, size_t len); + +/** + * @brief Copy given number of bytes from memory to the start of the buffer. + * + * Modifies the data pointer and buffer length to account for more data + * in the beginning of the buffer. + * + * @param buf Buffer to update. + * @param mem Location of data to be added. + * @param len Length of data to be added. + * + * @return The new beginning of the buffer data. + */ +void *net_buf_simple_push_mem(struct net_buf_simple *buf, const void *mem, + size_t len); + +/** + * @brief Push 16-bit value to the beginning of the buffer + * + * Adds 16-bit value in little endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 16-bit value to be pushed to the buffer. + */ +void net_buf_simple_push_le16(struct net_buf_simple *buf, uint16_t val); + +/** + * @brief Push 16-bit value to the beginning of the buffer + * + * Adds 16-bit value in big endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 16-bit value to be pushed to the buffer. + */ +void net_buf_simple_push_be16(struct net_buf_simple *buf, uint16_t val); + +/** + * @brief Push 8-bit value to the beginning of the buffer + * + * Adds 8-bit value the beginning of the buffer. + * + * @param buf Buffer to update. + * @param val 8-bit value to be pushed to the buffer. + */ +void net_buf_simple_push_u8(struct net_buf_simple *buf, uint8_t val); + +/** + * @brief Push 24-bit value to the beginning of the buffer + * + * Adds 24-bit value in little endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 24-bit value to be pushed to the buffer. + */ +void net_buf_simple_push_le24(struct net_buf_simple *buf, uint32_t val); + +/** + * @brief Push 24-bit value to the beginning of the buffer + * + * Adds 24-bit value in big endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 24-bit value to be pushed to the buffer. + */ +void net_buf_simple_push_be24(struct net_buf_simple *buf, uint32_t val); + +/** + * @brief Push 32-bit value to the beginning of the buffer + * + * Adds 32-bit value in little endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 32-bit value to be pushed to the buffer. + */ +void net_buf_simple_push_le32(struct net_buf_simple *buf, uint32_t val); + +/** + * @brief Push 32-bit value to the beginning of the buffer + * + * Adds 32-bit value in big endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 32-bit value to be pushed to the buffer. + */ +void net_buf_simple_push_be32(struct net_buf_simple *buf, uint32_t val); + +/** + * @brief Push 40-bit value to the beginning of the buffer + * + * Adds 40-bit value in little endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 40-bit value to be pushed to the buffer. + */ +void net_buf_simple_push_le40(struct net_buf_simple *buf, uint64_t val); + +/** + * @brief Push 40-bit value to the beginning of the buffer + * + * Adds 40-bit value in big endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 40-bit value to be pushed to the buffer. + */ +void net_buf_simple_push_be40(struct net_buf_simple *buf, uint64_t val); + +/** + * @brief Push 48-bit value to the beginning of the buffer + * + * Adds 48-bit value in little endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 48-bit value to be pushed to the buffer. + */ +void net_buf_simple_push_le48(struct net_buf_simple *buf, uint64_t val); + +/** + * @brief Push 48-bit value to the beginning of the buffer + * + * Adds 48-bit value in big endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 48-bit value to be pushed to the buffer. + */ +void net_buf_simple_push_be48(struct net_buf_simple *buf, uint64_t val); + +/** + * @brief Push 64-bit value to the beginning of the buffer + * + * Adds 64-bit value in little endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 64-bit value to be pushed to the buffer. + */ +void net_buf_simple_push_le64(struct net_buf_simple *buf, uint64_t val); + +/** + * @brief Push 64-bit value to the beginning of the buffer + * + * Adds 64-bit value in big endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 64-bit value to be pushed to the buffer. + */ +void net_buf_simple_push_be64(struct net_buf_simple *buf, uint64_t val); + +/** + * @brief Remove data from the beginning of the buffer. + * + * Removes data from the beginning of the buffer by modifying the data + * pointer and buffer length. + * + * @param buf Buffer to update. + * @param len Number of bytes to remove. + * + * @return New beginning of the buffer data. + */ +void *net_buf_simple_pull(struct net_buf_simple *buf, size_t len); + +/** + * @brief Remove data from the beginning of the buffer. + * + * Removes data from the beginning of the buffer by modifying the data + * pointer and buffer length. + * + * @param buf Buffer to update. + * @param len Number of bytes to remove. + * + * @return Pointer to the old location of the buffer data. + */ +void *net_buf_simple_pull_mem(struct net_buf_simple *buf, size_t len); + +/** + * @brief Remove a 8-bit value from the beginning of the buffer + * + * Same idea as with net_buf_simple_pull(), but a helper for operating + * on 8-bit values. + * + * @param buf A valid pointer on a buffer. + * + * @return The 8-bit removed value + */ +uint8_t net_buf_simple_pull_u8(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 16 bits from the beginning of the buffer. + * + * Same idea as with net_buf_simple_pull(), but a helper for operating + * on 16-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 16-bit value converted from little endian to host endian. + */ +uint16_t net_buf_simple_pull_le16(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 16 bits from the beginning of the buffer. + * + * Same idea as with net_buf_simple_pull(), but a helper for operating + * on 16-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 16-bit value converted from big endian to host endian. + */ +uint16_t net_buf_simple_pull_be16(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 24 bits from the beginning of the buffer. + * + * Same idea as with net_buf_simple_pull(), but a helper for operating + * on 24-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 24-bit value converted from little endian to host endian. + */ +uint32_t net_buf_simple_pull_le24(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 24 bits from the beginning of the buffer. + * + * Same idea as with net_buf_simple_pull(), but a helper for operating + * on 24-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 24-bit value converted from big endian to host endian. + */ +uint32_t net_buf_simple_pull_be24(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 32 bits from the beginning of the buffer. + * + * Same idea as with net_buf_simple_pull(), but a helper for operating + * on 32-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 32-bit value converted from little endian to host endian. + */ +uint32_t net_buf_simple_pull_le32(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 32 bits from the beginning of the buffer. + * + * Same idea as with net_buf_simple_pull(), but a helper for operating + * on 32-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 32-bit value converted from big endian to host endian. + */ +uint32_t net_buf_simple_pull_be32(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 40 bits from the beginning of the buffer. + * + * Same idea as with net_buf_simple_pull(), but a helper for operating + * on 40-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 40-bit value converted from little endian to host endian. + */ +uint64_t net_buf_simple_pull_le40(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 40 bits from the beginning of the buffer. + * + * Same idea as with net_buf_simple_pull(), but a helper for operating + * on 40-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 40-bit value converted from big endian to host endian. + */ +uint64_t net_buf_simple_pull_be40(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 48 bits from the beginning of the buffer. + * + * Same idea as with net_buf_simple_pull(), but a helper for operating + * on 48-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 48-bit value converted from little endian to host endian. + */ +uint64_t net_buf_simple_pull_le48(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 48 bits from the beginning of the buffer. + * + * Same idea as with net_buf_simple_pull(), but a helper for operating + * on 48-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 48-bit value converted from big endian to host endian. + */ +uint64_t net_buf_simple_pull_be48(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 64 bits from the beginning of the buffer. + * + * Same idea as with net_buf_simple_pull(), but a helper for operating + * on 64-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 64-bit value converted from little endian to host endian. + */ +uint64_t net_buf_simple_pull_le64(struct net_buf_simple *buf); + +/** + * @brief Remove and convert 64 bits from the beginning of the buffer. + * + * Same idea as with net_buf_simple_pull(), but a helper for operating + * on 64-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 64-bit value converted from big endian to host endian. + */ +uint64_t net_buf_simple_pull_be64(struct net_buf_simple *buf); + +/** + * @brief Get the tail pointer for a buffer. + * + * Get a pointer to the end of the data in a buffer. + * + * @param buf Buffer. + * + * @return Tail pointer for the buffer. + */ +static inline uint8_t *net_buf_simple_tail(const struct net_buf_simple *buf) +{ + return buf->data + buf->len; +} + +/** + * @brief Check buffer headroom. + * + * Check how much free space there is in the beginning of the buffer. + * + * buf A valid pointer on a buffer + * + * @return Number of bytes available in the beginning of the buffer. + */ +size_t net_buf_simple_headroom(const struct net_buf_simple *buf); + +/** + * @brief Check buffer tailroom. + * + * Check how much free space there is at the end of the buffer. + * + * @param buf A valid pointer on a buffer + * + * @return Number of bytes available at the end of the buffer. + */ +size_t net_buf_simple_tailroom(const struct net_buf_simple *buf); + +/** + * @brief Check maximum net_buf_simple::len value. + * + * This value is depending on the number of bytes being reserved as headroom. + * + * @param buf A valid pointer on a buffer + * + * @return Number of bytes usable behind the net_buf_simple::data pointer. + */ +uint16_t net_buf_simple_max_len(const struct net_buf_simple *buf); + +/** + * @brief Parsing state of a buffer. + * + * This is used for temporarily storing the parsing state of a buffer + * while giving control of the parsing to a routine which we don't + * control. + */ +struct net_buf_simple_state { + /** Offset of the data pointer from the beginning of the storage */ + uint16_t offset; + /** Length of data */ + uint16_t len; +}; + +/** + * @brief Save the parsing state of a buffer. + * + * Saves the parsing state of a buffer so it can be restored later. + * + * @param buf Buffer from which the state should be saved. + * @param state Storage for the state. + */ +static inline void net_buf_simple_save(const struct net_buf_simple *buf, + struct net_buf_simple_state *state) +{ + state->offset = (uint16_t)net_buf_simple_headroom(buf); + state->len = buf->len; +} + +/** + * @brief Restore the parsing state of a buffer. + * + * Restores the parsing state of a buffer from a state previously stored + * by net_buf_simple_save(). + * + * @param buf Buffer to which the state should be restored. + * @param state Stored state. + */ +static inline void net_buf_simple_restore(struct net_buf_simple *buf, + struct net_buf_simple_state *state) +{ + buf->data = buf->__buf + state->offset; + buf->len = state->len; +} + +/** + * Flag indicating that the buffer's associated data pointer, points to + * externally allocated memory. Therefore once ref goes down to zero, the + * pointed data will not need to be deallocated. This never needs to be + * explicitly set or unset by the net_buf API user. Such net_buf is + * exclusively instantiated via net_buf_alloc_with_data() function. + * Reference count mechanism however will behave the same way, and ref + * count going to 0 will free the net_buf but no the data pointer in it. + */ +#define NET_BUF_EXTERNAL_DATA BIT(0) + +/** + * @brief Network buffer representation. + * + * This struct is used to represent network buffers. Such buffers are + * normally defined through the NET_BUF_POOL_*_DEFINE() APIs and allocated + * using the net_buf_alloc() API. + */ +struct net_buf { + /** Allow placing the buffer into sys_slist_t */ + sys_snode_t node; + + /** Fragments associated with this buffer. */ + struct net_buf *frags; + + /** Reference count. */ + uint8_t ref; + + /** Bit-field of buffer flags. */ + uint8_t flags; + + /** Where the buffer should go when freed up. */ + uint8_t pool_id; + + /** Size of user data on this buffer */ + uint8_t user_data_size; + + /** Union for convenience access to the net_buf_simple members, also + * preserving the old API. + */ + union { + /* The ABI of this struct must match net_buf_simple */ + struct { + /** Pointer to the start of data in the buffer. */ + uint8_t *data; + + /** Length of the data behind the data pointer. */ + uint16_t len; + + /** Amount of data that this buffer can store. */ + uint16_t size; + + /** Start of the data storage. Not to be accessed + * directly (the data pointer should be used + * instead). + */ + uint8_t *__buf; + }; + + /** @cond INTERNAL_HIDDEN */ + struct net_buf_simple b; + /** @endcond */ + }; + + /** System metadata for this buffer. Cleared on allocation. */ + uint8_t user_data[] __net_buf_align; +}; + +/** @cond INTERNAL_HIDDEN */ + +struct net_buf_data_cb { + uint8_t * __must_check (*alloc)(struct net_buf *buf, size_t *size, + k_timeout_t timeout); + uint8_t * __must_check (*ref)(struct net_buf *buf, uint8_t *data); + void (*unref)(struct net_buf *buf, uint8_t *data); +}; + +struct net_buf_data_alloc { + const struct net_buf_data_cb *cb; + void *alloc_data; + size_t max_alloc_size; +}; + +/** @endcond */ + +/** + * @brief Network buffer pool representation. + * + * This struct is used to represent a pool of network buffers. + */ +struct net_buf_pool { + /** LIFO to place the buffer into when free */ + struct k_lifo free; + + /** To prevent concurrent access/modifications */ + struct k_spinlock lock; + + /** Number of buffers in pool */ + const uint16_t buf_count; + + /** Number of uninitialized buffers */ + uint16_t uninit_count; + + /** Size of user data allocated to this pool */ + uint8_t user_data_size; + +#if defined(CONFIG_NET_BUF_POOL_USAGE) + /** Amount of available buffers in the pool. */ + atomic_t avail_count; + + /** Total size of the pool. */ + const uint16_t pool_size; + + /** Name of the pool. Used when printing pool information. */ + const char *name; +#endif /* CONFIG_NET_BUF_POOL_USAGE */ + + /** Optional destroy callback when buffer is freed. */ + void (*const destroy)(struct net_buf *buf); + + /** Data allocation handlers. */ + const struct net_buf_data_alloc *alloc; + + /** Start of buffer storage array */ + struct net_buf * const __bufs; +}; + +/** @cond INTERNAL_HIDDEN */ +#define NET_BUF_POOL_USAGE_INIT(_pool, _count) \ + IF_ENABLED(CONFIG_NET_BUF_POOL_USAGE, (.avail_count = ATOMIC_INIT(_count),)) \ + IF_ENABLED(CONFIG_NET_BUF_POOL_USAGE, (.name = STRINGIFY(_pool),)) + +#define NET_BUF_POOL_INITIALIZER(_pool, _alloc, _bufs, _count, _ud_size, _destroy) \ + { \ + .free = Z_LIFO_INITIALIZER(_pool.free), \ + .lock = { }, \ + .buf_count = _count, \ + .uninit_count = _count, \ + .user_data_size = _ud_size, \ + NET_BUF_POOL_USAGE_INIT(_pool, _count) \ + .destroy = _destroy, \ + .alloc = _alloc, \ + .__bufs = (struct net_buf *)_bufs, \ + } + +#define _NET_BUF_ARRAY_DEFINE(_name, _count, _ud_size) \ + struct _net_buf_##_name { uint8_t b[sizeof(struct net_buf)]; \ + uint8_t ud[_ud_size]; } __net_buf_align; \ + BUILD_ASSERT(_ud_size <= UINT8_MAX); \ + BUILD_ASSERT(offsetof(struct net_buf, user_data) == \ + offsetof(struct _net_buf_##_name, ud), "Invalid offset"); \ + BUILD_ASSERT(__alignof__(struct net_buf) == \ + __alignof__(struct _net_buf_##_name), "Invalid alignment"); \ + BUILD_ASSERT(sizeof(struct _net_buf_##_name) == \ + ROUND_UP(sizeof(struct net_buf) + _ud_size, __alignof__(struct net_buf)), \ + "Size cannot be determined"); \ + static struct _net_buf_##_name _net_buf_##_name[_count] __noinit + +extern const struct net_buf_data_alloc net_buf_heap_alloc; +/** @endcond */ + +/** + * + * @brief Define a new pool for buffers using the heap for the data. + * + * Defines a net_buf_pool struct and the necessary memory storage (array of + * structs) for the needed amount of buffers. After this, the buffers can be + * accessed from the pool through net_buf_alloc. The pool is defined as a + * static variable, so if it needs to be exported outside the current module + * this needs to happen with the help of a separate pointer rather than an + * extern declaration. + * + * The data payload of the buffers will be allocated from the heap using + * k_malloc, so CONFIG_HEAP_MEM_POOL_SIZE must be set to a positive value. + * This kind of pool does not support blocking on the data allocation, so + * the timeout passed to net_buf_alloc will be always treated as K_NO_WAIT + * when trying to allocate the data. This means that allocation failures, + * i.e. NULL returns, must always be handled cleanly. + * + * If provided with a custom destroy callback, this callback is + * responsible for eventually calling net_buf_destroy() to complete the + * process of returning the buffer to the pool. + * + * @param _name Name of the pool variable. + * @param _count Number of buffers in the pool. + * @param _ud_size User data space to reserve per buffer. + * @param _destroy Optional destroy callback when buffer is freed. + */ +#define NET_BUF_POOL_HEAP_DEFINE(_name, _count, _ud_size, _destroy) \ + _NET_BUF_ARRAY_DEFINE(_name, _count, _ud_size); \ + static STRUCT_SECTION_ITERABLE(net_buf_pool, _name) = \ + NET_BUF_POOL_INITIALIZER(_name, &net_buf_heap_alloc, \ + _net_buf_##_name, _count, _ud_size, \ + _destroy) + +/** @cond INTERNAL_HIDDEN */ + +struct net_buf_pool_fixed { + uint8_t *data_pool; +}; + +extern const struct net_buf_data_cb net_buf_fixed_cb; + +/** @endcond */ + +/** + * + * @brief Define a new pool for buffers based on fixed-size data + * + * Defines a net_buf_pool struct and the necessary memory storage (array of + * structs) for the needed amount of buffers. After this, the buffers can be + * accessed from the pool through net_buf_alloc. The pool is defined as a + * static variable, so if it needs to be exported outside the current module + * this needs to happen with the help of a separate pointer rather than an + * extern declaration. + * + * The data payload of the buffers will be allocated from a byte array + * of fixed sized chunks. This kind of pool does not support blocking on + * the data allocation, so the timeout passed to net_buf_alloc will be + * always treated as K_NO_WAIT when trying to allocate the data. This means + * that allocation failures, i.e. NULL returns, must always be handled + * cleanly. + * + * If provided with a custom destroy callback, this callback is + * responsible for eventually calling net_buf_destroy() to complete the + * process of returning the buffer to the pool. + * + * @param _name Name of the pool variable. + * @param _count Number of buffers in the pool. + * @param _data_size Maximum data payload per buffer. + * @param _ud_size User data space to reserve per buffer. + * @param _destroy Optional destroy callback when buffer is freed. + */ +#define NET_BUF_POOL_FIXED_DEFINE(_name, _count, _data_size, _ud_size, _destroy) \ + _NET_BUF_ARRAY_DEFINE(_name, _count, _ud_size); \ + static uint8_t __noinit net_buf_data_##_name[_count][_data_size] __net_buf_align; \ + static const struct net_buf_pool_fixed net_buf_fixed_##_name = { \ + .data_pool = (uint8_t *)net_buf_data_##_name, \ + }; \ + static const struct net_buf_data_alloc net_buf_fixed_alloc_##_name = { \ + .cb = &net_buf_fixed_cb, \ + .alloc_data = (void *)&net_buf_fixed_##_name, \ + .max_alloc_size = _data_size, \ + }; \ + static STRUCT_SECTION_ITERABLE(net_buf_pool, _name) = \ + NET_BUF_POOL_INITIALIZER(_name, &net_buf_fixed_alloc_##_name, \ + _net_buf_##_name, _count, _ud_size, \ + _destroy) + +/** @cond INTERNAL_HIDDEN */ +extern const struct net_buf_data_cb net_buf_var_cb; +/** @endcond */ + +/** + * + * @brief Define a new pool for buffers with variable size payloads + * + * Defines a net_buf_pool struct and the necessary memory storage (array of + * structs) for the needed amount of buffers. After this, the buffers can be + * accessed from the pool through net_buf_alloc. The pool is defined as a + * static variable, so if it needs to be exported outside the current module + * this needs to happen with the help of a separate pointer rather than an + * extern declaration. + * + * The data payload of the buffers will be based on a memory pool from which + * variable size payloads may be allocated. + * + * If provided with a custom destroy callback, this callback is + * responsible for eventually calling net_buf_destroy() to complete the + * process of returning the buffer to the pool. + * + * @param _name Name of the pool variable. + * @param _count Number of buffers in the pool. + * @param _data_size Total amount of memory available for data payloads. + * @param _ud_size User data space to reserve per buffer. + * @param _destroy Optional destroy callback when buffer is freed. + */ +#define NET_BUF_POOL_VAR_DEFINE(_name, _count, _data_size, _ud_size, _destroy) \ + _NET_BUF_ARRAY_DEFINE(_name, _count, _ud_size); \ + K_HEAP_DEFINE(net_buf_mem_pool_##_name, _data_size); \ + static const struct net_buf_data_alloc net_buf_data_alloc_##_name = { \ + .cb = &net_buf_var_cb, \ + .alloc_data = &net_buf_mem_pool_##_name, \ + .max_alloc_size = 0, \ + }; \ + static STRUCT_SECTION_ITERABLE(net_buf_pool, _name) = \ + NET_BUF_POOL_INITIALIZER(_name, &net_buf_data_alloc_##_name, \ + _net_buf_##_name, _count, _ud_size, \ + _destroy) + +/** + * + * @brief Define a new pool for buffers + * + * Defines a net_buf_pool struct and the necessary memory storage (array of + * structs) for the needed amount of buffers. After this,the buffers can be + * accessed from the pool through net_buf_alloc. The pool is defined as a + * static variable, so if it needs to be exported outside the current module + * this needs to happen with the help of a separate pointer rather than an + * extern declaration. + * + * If provided with a custom destroy callback this callback is + * responsible for eventually calling net_buf_destroy() to complete the + * process of returning the buffer to the pool. + * + * @param _name Name of the pool variable. + * @param _count Number of buffers in the pool. + * @param _size Maximum data size for each buffer. + * @param _ud_size Amount of user data space to reserve. + * @param _destroy Optional destroy callback when buffer is freed. + */ +#define NET_BUF_POOL_DEFINE(_name, _count, _size, _ud_size, _destroy) \ + NET_BUF_POOL_FIXED_DEFINE(_name, _count, _size, _ud_size, _destroy) + +/** + * @brief Looks up a pool based on its ID. + * + * @param id Pool ID (e.g. from buf->pool_id). + * + * @return Pointer to pool. + */ +struct net_buf_pool *net_buf_pool_get(int id); + +/** + * @brief Get a zero-based index for a buffer. + * + * This function will translate a buffer into a zero-based index, + * based on its placement in its buffer pool. This can be useful if you + * want to associate an external array of meta-data contexts with the + * buffers of a pool. + * + * @param buf Network buffer. + * + * @return Zero-based index for the buffer. + */ +int net_buf_id(const struct net_buf *buf); + +/** + * @brief Allocate a new fixed buffer from a pool. + * + * @note Some types of data allocators do not support + * blocking (such as the HEAP type). In this case it's still possible + * for net_buf_alloc() to fail (return NULL) even if it was given + * K_FOREVER. + * + * @note The timeout value will be overridden to K_NO_WAIT if called from the + * system workqueue. + * + * @param pool Which pool to allocate the buffer from. + * @param timeout Affects the action taken should the pool be empty. + * If K_NO_WAIT, then return immediately. If K_FOREVER, then + * wait as long as necessary. Otherwise, wait until the specified + * timeout. + * + * @return New buffer or NULL if out of buffers. + */ +#if defined(CONFIG_NET_BUF_LOG) +struct net_buf * __must_check net_buf_alloc_fixed_debug(struct net_buf_pool *pool, + k_timeout_t timeout, + const char *func, + int line); +#define net_buf_alloc_fixed(_pool, _timeout) \ + net_buf_alloc_fixed_debug(_pool, _timeout, __func__, __LINE__) +#else +struct net_buf * __must_check net_buf_alloc_fixed(struct net_buf_pool *pool, + k_timeout_t timeout); +#endif + +/** + * @copydetails net_buf_alloc_fixed + */ +static inline struct net_buf * __must_check net_buf_alloc(struct net_buf_pool *pool, + k_timeout_t timeout) +{ + return net_buf_alloc_fixed(pool, timeout); +} + +/** + * @brief Allocate a new variable length buffer from a pool. + * + * @note Some types of data allocators do not support + * blocking (such as the HEAP type). In this case it's still possible + * for net_buf_alloc() to fail (return NULL) even if it was given + * K_FOREVER. + * + * @note The timeout value will be overridden to K_NO_WAIT if called from the + * system workqueue. + * + * @param pool Which pool to allocate the buffer from. + * @param size Amount of data the buffer must be able to fit. + * @param timeout Affects the action taken should the pool be empty. + * If K_NO_WAIT, then return immediately. If K_FOREVER, then + * wait as long as necessary. Otherwise, wait until the specified + * timeout. + * + * @return New buffer or NULL if out of buffers. + */ +#if defined(CONFIG_NET_BUF_LOG) +struct net_buf * __must_check net_buf_alloc_len_debug(struct net_buf_pool *pool, + size_t size, + k_timeout_t timeout, + const char *func, + int line); +#define net_buf_alloc_len(_pool, _size, _timeout) \ + net_buf_alloc_len_debug(_pool, _size, _timeout, __func__, __LINE__) +#else +struct net_buf * __must_check net_buf_alloc_len(struct net_buf_pool *pool, + size_t size, + k_timeout_t timeout); +#endif + +/** + * @brief Allocate a new buffer from a pool but with external data pointer. + * + * Allocate a new buffer from a pool, where the data pointer comes from the + * user and not from the pool. + * + * @note Some types of data allocators do not support + * blocking (such as the HEAP type). In this case it's still possible + * for net_buf_alloc() to fail (return NULL) even if it was given + * K_FOREVER. + * + * @note The timeout value will be overridden to K_NO_WAIT if called from the + * system workqueue. + * + * @param pool Which pool to allocate the buffer from. + * @param data External data pointer + * @param size Amount of data the pointed data buffer if able to fit. + * @param timeout Affects the action taken should the pool be empty. + * If K_NO_WAIT, then return immediately. If K_FOREVER, then + * wait as long as necessary. Otherwise, wait until the specified + * timeout. + * + * @return New buffer or NULL if out of buffers. + */ +#if defined(CONFIG_NET_BUF_LOG) +struct net_buf * __must_check net_buf_alloc_with_data_debug(struct net_buf_pool *pool, + void *data, size_t size, + k_timeout_t timeout, + const char *func, int line); +#define net_buf_alloc_with_data(_pool, _data_, _size, _timeout) \ + net_buf_alloc_with_data_debug(_pool, _data_, _size, _timeout, \ + __func__, __LINE__) +#else +struct net_buf * __must_check net_buf_alloc_with_data(struct net_buf_pool *pool, + void *data, size_t size, + k_timeout_t timeout); +#endif + +/** + * @brief Get a buffer from a FIFO. + * + * @deprecated Use @a k_fifo_get() instead. + * + * @param fifo Which FIFO to take the buffer from. + * @param timeout Affects the action taken should the FIFO be empty. + * If K_NO_WAIT, then return immediately. If K_FOREVER, then wait as + * long as necessary. Otherwise, wait until the specified timeout. + * + * @return New buffer or NULL if the FIFO is empty. + */ +#if defined(CONFIG_NET_BUF_LOG) +__deprecated struct net_buf * __must_check net_buf_get_debug(struct k_fifo *fifo, + k_timeout_t timeout, + const char *func, int line); +#define net_buf_get(_fifo, _timeout) \ + net_buf_get_debug(_fifo, _timeout, __func__, __LINE__) +#else +__deprecated struct net_buf * __must_check net_buf_get(struct k_fifo *fifo, + k_timeout_t timeout); +#endif + +/** + * @brief Destroy buffer from custom destroy callback + * + * This helper is only intended to be used from custom destroy callbacks. + * If no custom destroy callback is given to NET_BUF_POOL_*_DEFINE() then + * there is no need to use this API. + * + * @param buf Buffer to destroy. + */ +static inline void net_buf_destroy(struct net_buf *buf) +{ + struct net_buf_pool *pool = net_buf_pool_get(buf->pool_id); + + if (buf->__buf) { + if (!(buf->flags & NET_BUF_EXTERNAL_DATA)) { + pool->alloc->cb->unref(buf, buf->__buf); + } + buf->__buf = NULL; + } + + k_lifo_put(&pool->free, buf); +} + +/** + * @brief Reset buffer + * + * Reset buffer data and flags so it can be reused for other purposes. + * + * @param buf Buffer to reset. + */ +void net_buf_reset(struct net_buf *buf); + +/** + * @brief Initialize buffer with the given headroom. + * + * The buffer is not expected to contain any data when this API is called. + * + * @param buf Buffer to initialize. + * @param reserve How much headroom to reserve. + */ +void net_buf_simple_reserve(struct net_buf_simple *buf, size_t reserve); + +/** + * @brief Put a buffer into a list + * + * @param list Which list to append the buffer to. + * @param buf Buffer. + */ +void net_buf_slist_put(sys_slist_t *list, struct net_buf *buf); + +/** + * @brief Get a buffer from a list. + * + * @param list Which list to take the buffer from. + * + * @return New buffer or NULL if the FIFO is empty. + */ +struct net_buf * __must_check net_buf_slist_get(sys_slist_t *list); + +/** + * @brief Put a buffer to the end of a FIFO. + * + * @deprecated Use @a k_fifo_put() instead. + * + * @param fifo Which FIFO to put the buffer to. + * @param buf Buffer. + */ +__deprecated void net_buf_put(struct k_fifo *fifo, struct net_buf *buf); + +/** + * @brief Decrements the reference count of a buffer. + * + * The buffer is put back into the pool if the reference count reaches zero. + * + * @param buf A valid pointer on a buffer + */ +#if defined(CONFIG_NET_BUF_LOG) +void net_buf_unref_debug(struct net_buf *buf, const char *func, int line); +#define net_buf_unref(_buf) \ + net_buf_unref_debug(_buf, __func__, __LINE__) +#else +void net_buf_unref(struct net_buf *buf); +#endif + +/** + * @brief Increment the reference count of a buffer. + * + * @param buf A valid pointer on a buffer + * + * @return the buffer newly referenced + */ +struct net_buf * __must_check net_buf_ref(struct net_buf *buf); + +/** + * @brief Clone buffer + * + * Duplicate given buffer including any (user) data and headers currently stored. + * + * @param buf A valid pointer on a buffer + * @param timeout Affects the action taken should the pool be empty. + * If K_NO_WAIT, then return immediately. If K_FOREVER, then + * wait as long as necessary. Otherwise, wait until the specified + * timeout. + * + * @return Cloned buffer or NULL if out of buffers. + */ +struct net_buf * __must_check net_buf_clone(struct net_buf *buf, + k_timeout_t timeout); + +/** + * @brief Get a pointer to the user data of a buffer. + * + * @param buf A valid pointer on a buffer + * + * @return Pointer to the user data of the buffer. + */ +static inline void * __must_check net_buf_user_data(const struct net_buf *buf) +{ + return (void *)buf->user_data; +} + +/** + * @brief Copy user data from one to another buffer. + * + * @param dst A valid pointer to a buffer gettings its user data overwritten. + * @param src A valid pointer to a buffer gettings its user data copied. User data size must be + * equal to or exceed @a dst. + * + * @return 0 on success or negative error number on failure. + */ +int net_buf_user_data_copy(struct net_buf *dst, const struct net_buf *src); + +/** + * @brief Initialize buffer with the given headroom. + * + * The buffer is not expected to contain any data when this API is called. + * + * @param buf Buffer to initialize. + * @param reserve How much headroom to reserve. + */ +static inline void net_buf_reserve(struct net_buf *buf, size_t reserve) +{ + net_buf_simple_reserve(&buf->b, reserve); +} + +/** + * @brief Prepare data to be added at the end of the buffer + * + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param len Number of bytes to increment the length with. + * + * @return The original tail of the buffer. + */ +static inline void *net_buf_add(struct net_buf *buf, size_t len) +{ + return net_buf_simple_add(&buf->b, len); +} + +/** + * @brief Copies the given number of bytes to the end of the buffer + * + * Increments the data length of the buffer to account for more data at + * the end. + * + * @param buf Buffer to update. + * @param mem Location of data to be added. + * @param len Length of data to be added + * + * @return The original tail of the buffer. + */ +static inline void *net_buf_add_mem(struct net_buf *buf, const void *mem, + size_t len) +{ + return net_buf_simple_add_mem(&buf->b, mem, len); +} + +/** + * @brief Add (8-bit) byte at the end of the buffer + * + * Increments the data length of the buffer to account for more data at + * the end. + * + * @param buf Buffer to update. + * @param val byte value to be added. + * + * @return Pointer to the value added + */ +static inline uint8_t *net_buf_add_u8(struct net_buf *buf, uint8_t val) +{ + return net_buf_simple_add_u8(&buf->b, val); +} + +/** + * @brief Add 16-bit value at the end of the buffer + * + * Adds 16-bit value in little endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 16-bit value to be added. + */ +static inline void net_buf_add_le16(struct net_buf *buf, uint16_t val) +{ + net_buf_simple_add_le16(&buf->b, val); +} + +/** + * @brief Add 16-bit value at the end of the buffer + * + * Adds 16-bit value in big endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 16-bit value to be added. + */ +static inline void net_buf_add_be16(struct net_buf *buf, uint16_t val) +{ + net_buf_simple_add_be16(&buf->b, val); +} + +/** + * @brief Add 24-bit value at the end of the buffer + * + * Adds 24-bit value in little endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 24-bit value to be added. + */ +static inline void net_buf_add_le24(struct net_buf *buf, uint32_t val) +{ + net_buf_simple_add_le24(&buf->b, val); +} + +/** + * @brief Add 24-bit value at the end of the buffer + * + * Adds 24-bit value in big endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 24-bit value to be added. + */ +static inline void net_buf_add_be24(struct net_buf *buf, uint32_t val) +{ + net_buf_simple_add_be24(&buf->b, val); +} + +/** + * @brief Add 32-bit value at the end of the buffer + * + * Adds 32-bit value in little endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 32-bit value to be added. + */ +static inline void net_buf_add_le32(struct net_buf *buf, uint32_t val) +{ + net_buf_simple_add_le32(&buf->b, val); +} + +/** + * @brief Add 32-bit value at the end of the buffer + * + * Adds 32-bit value in big endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 32-bit value to be added. + */ +static inline void net_buf_add_be32(struct net_buf *buf, uint32_t val) +{ + net_buf_simple_add_be32(&buf->b, val); +} + +/** + * @brief Add 40-bit value at the end of the buffer + * + * Adds 40-bit value in little endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 40-bit value to be added. + */ +static inline void net_buf_add_le40(struct net_buf *buf, uint64_t val) +{ + net_buf_simple_add_le40(&buf->b, val); +} + +/** + * @brief Add 40-bit value at the end of the buffer + * + * Adds 40-bit value in big endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 40-bit value to be added. + */ +static inline void net_buf_add_be40(struct net_buf *buf, uint64_t val) +{ + net_buf_simple_add_be40(&buf->b, val); +} + +/** + * @brief Add 48-bit value at the end of the buffer + * + * Adds 48-bit value in little endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 48-bit value to be added. + */ +static inline void net_buf_add_le48(struct net_buf *buf, uint64_t val) +{ + net_buf_simple_add_le48(&buf->b, val); +} + +/** + * @brief Add 48-bit value at the end of the buffer + * + * Adds 48-bit value in big endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 48-bit value to be added. + */ +static inline void net_buf_add_be48(struct net_buf *buf, uint64_t val) +{ + net_buf_simple_add_be48(&buf->b, val); +} + +/** + * @brief Add 64-bit value at the end of the buffer + * + * Adds 64-bit value in little endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 64-bit value to be added. + */ +static inline void net_buf_add_le64(struct net_buf *buf, uint64_t val) +{ + net_buf_simple_add_le64(&buf->b, val); +} + +/** + * @brief Add 64-bit value at the end of the buffer + * + * Adds 64-bit value in big endian format at the end of buffer. + * Increments the data length of a buffer to account for more data + * at the end. + * + * @param buf Buffer to update. + * @param val 64-bit value to be added. + */ +static inline void net_buf_add_be64(struct net_buf *buf, uint64_t val) +{ + net_buf_simple_add_be64(&buf->b, val); +} + +/** + * @brief Remove data from the end of the buffer. + * + * Removes data from the end of the buffer by modifying the buffer length. + * + * @param buf Buffer to update. + * @param len Number of bytes to remove. + * + * @return New end of the buffer data. + */ +static inline void *net_buf_remove_mem(struct net_buf *buf, size_t len) +{ + return net_buf_simple_remove_mem(&buf->b, len); +} + +/** + * @brief Remove a 8-bit value from the end of the buffer + * + * Same idea as with net_buf_remove_mem(), but a helper for operating on + * 8-bit values. + * + * @param buf A valid pointer on a buffer. + * + * @return The 8-bit removed value + */ +static inline uint8_t net_buf_remove_u8(struct net_buf *buf) +{ + return net_buf_simple_remove_u8(&buf->b); +} + +/** + * @brief Remove and convert 16 bits from the end of the buffer. + * + * Same idea as with net_buf_remove_mem(), but a helper for operating on + * 16-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 16-bit value converted from little endian to host endian. + */ +static inline uint16_t net_buf_remove_le16(struct net_buf *buf) +{ + return net_buf_simple_remove_le16(&buf->b); +} + +/** + * @brief Remove and convert 16 bits from the end of the buffer. + * + * Same idea as with net_buf_remove_mem(), but a helper for operating on + * 16-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 16-bit value converted from big endian to host endian. + */ +static inline uint16_t net_buf_remove_be16(struct net_buf *buf) +{ + return net_buf_simple_remove_be16(&buf->b); +} + +/** + * @brief Remove and convert 24 bits from the end of the buffer. + * + * Same idea as with net_buf_remove_mem(), but a helper for operating on + * 24-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 24-bit value converted from big endian to host endian. + */ +static inline uint32_t net_buf_remove_be24(struct net_buf *buf) +{ + return net_buf_simple_remove_be24(&buf->b); +} + +/** + * @brief Remove and convert 24 bits from the end of the buffer. + * + * Same idea as with net_buf_remove_mem(), but a helper for operating on + * 24-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 24-bit value converted from little endian to host endian. + */ +static inline uint32_t net_buf_remove_le24(struct net_buf *buf) +{ + return net_buf_simple_remove_le24(&buf->b); +} + +/** + * @brief Remove and convert 32 bits from the end of the buffer. + * + * Same idea as with net_buf_remove_mem(), but a helper for operating on + * 32-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 32-bit value converted from little endian to host endian. + */ +static inline uint32_t net_buf_remove_le32(struct net_buf *buf) +{ + return net_buf_simple_remove_le32(&buf->b); +} + +/** + * @brief Remove and convert 32 bits from the end of the buffer. + * + * Same idea as with net_buf_remove_mem(), but a helper for operating on + * 32-bit big endian data. + * + * @param buf A valid pointer on a buffer + * + * @return 32-bit value converted from big endian to host endian. + */ +static inline uint32_t net_buf_remove_be32(struct net_buf *buf) +{ + return net_buf_simple_remove_be32(&buf->b); +} + +/** + * @brief Remove and convert 40 bits from the end of the buffer. + * + * Same idea as with net_buf_remove_mem(), but a helper for operating on + * 40-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 40-bit value converted from little endian to host endian. + */ +static inline uint64_t net_buf_remove_le40(struct net_buf *buf) +{ + return net_buf_simple_remove_le40(&buf->b); +} + +/** + * @brief Remove and convert 40 bits from the end of the buffer. + * + * Same idea as with net_buf_remove_mem(), but a helper for operating on + * 40-bit big endian data. + * + * @param buf A valid pointer on a buffer + * + * @return 40-bit value converted from big endian to host endian. + */ +static inline uint64_t net_buf_remove_be40(struct net_buf *buf) +{ + return net_buf_simple_remove_be40(&buf->b); +} + +/** + * @brief Remove and convert 48 bits from the end of the buffer. + * + * Same idea as with net_buf_remove_mem(), but a helper for operating on + * 48-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 48-bit value converted from little endian to host endian. + */ +static inline uint64_t net_buf_remove_le48(struct net_buf *buf) +{ + return net_buf_simple_remove_le48(&buf->b); +} + +/** + * @brief Remove and convert 48 bits from the end of the buffer. + * + * Same idea as with net_buf_remove_mem(), but a helper for operating on + * 48-bit big endian data. + * + * @param buf A valid pointer on a buffer + * + * @return 48-bit value converted from big endian to host endian. + */ +static inline uint64_t net_buf_remove_be48(struct net_buf *buf) +{ + return net_buf_simple_remove_be48(&buf->b); +} + +/** + * @brief Remove and convert 64 bits from the end of the buffer. + * + * Same idea as with net_buf_remove_mem(), but a helper for operating on + * 64-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 64-bit value converted from little endian to host endian. + */ +static inline uint64_t net_buf_remove_le64(struct net_buf *buf) +{ + return net_buf_simple_remove_le64(&buf->b); +} + +/** + * @brief Remove and convert 64 bits from the end of the buffer. + * + * Same idea as with net_buf_remove_mem(), but a helper for operating on + * 64-bit big endian data. + * + * @param buf A valid pointer on a buffer + * + * @return 64-bit value converted from big endian to host endian. + */ +static inline uint64_t net_buf_remove_be64(struct net_buf *buf) +{ + return net_buf_simple_remove_be64(&buf->b); +} + +/** + * @brief Prepare data to be added at the start of the buffer + * + * Modifies the data pointer and buffer length to account for more data + * in the beginning of the buffer. + * + * @param buf Buffer to update. + * @param len Number of bytes to add to the beginning. + * + * @return The new beginning of the buffer data. + */ +static inline void *net_buf_push(struct net_buf *buf, size_t len) +{ + return net_buf_simple_push(&buf->b, len); +} + +/** + * @brief Copies the given number of bytes to the start of the buffer + * + * Modifies the data pointer and buffer length to account for more data + * in the beginning of the buffer. + * + * @param buf Buffer to update. + * @param mem Location of data to be added. + * @param len Length of data to be added. + * + * @return The new beginning of the buffer data. + */ +static inline void *net_buf_push_mem(struct net_buf *buf, const void *mem, + size_t len) +{ + return net_buf_simple_push_mem(&buf->b, mem, len); +} + +/** + * @brief Push 8-bit value to the beginning of the buffer + * + * Adds 8-bit value the beginning of the buffer. + * + * @param buf Buffer to update. + * @param val 8-bit value to be pushed to the buffer. + */ +static inline void net_buf_push_u8(struct net_buf *buf, uint8_t val) +{ + net_buf_simple_push_u8(&buf->b, val); +} + +/** + * @brief Push 16-bit value to the beginning of the buffer + * + * Adds 16-bit value in little endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 16-bit value to be pushed to the buffer. + */ +static inline void net_buf_push_le16(struct net_buf *buf, uint16_t val) +{ + net_buf_simple_push_le16(&buf->b, val); +} + +/** + * @brief Push 16-bit value to the beginning of the buffer + * + * Adds 16-bit value in big endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 16-bit value to be pushed to the buffer. + */ +static inline void net_buf_push_be16(struct net_buf *buf, uint16_t val) +{ + net_buf_simple_push_be16(&buf->b, val); +} + +/** + * @brief Push 24-bit value to the beginning of the buffer + * + * Adds 24-bit value in little endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 24-bit value to be pushed to the buffer. + */ +static inline void net_buf_push_le24(struct net_buf *buf, uint32_t val) +{ + net_buf_simple_push_le24(&buf->b, val); +} + +/** + * @brief Push 24-bit value to the beginning of the buffer + * + * Adds 24-bit value in big endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 24-bit value to be pushed to the buffer. + */ +static inline void net_buf_push_be24(struct net_buf *buf, uint32_t val) +{ + net_buf_simple_push_be24(&buf->b, val); +} + +/** + * @brief Push 32-bit value to the beginning of the buffer + * + * Adds 32-bit value in little endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 32-bit value to be pushed to the buffer. + */ +static inline void net_buf_push_le32(struct net_buf *buf, uint32_t val) +{ + net_buf_simple_push_le32(&buf->b, val); +} + +/** + * @brief Push 32-bit value to the beginning of the buffer + * + * Adds 32-bit value in big endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 32-bit value to be pushed to the buffer. + */ +static inline void net_buf_push_be32(struct net_buf *buf, uint32_t val) +{ + net_buf_simple_push_be32(&buf->b, val); +} + +/** + * @brief Push 40-bit value to the beginning of the buffer + * + * Adds 40-bit value in little endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 40-bit value to be pushed to the buffer. + */ +static inline void net_buf_push_le40(struct net_buf *buf, uint64_t val) +{ + net_buf_simple_push_le40(&buf->b, val); +} + +/** + * @brief Push 40-bit value to the beginning of the buffer + * + * Adds 40-bit value in big endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 40-bit value to be pushed to the buffer. + */ +static inline void net_buf_push_be40(struct net_buf *buf, uint64_t val) +{ + net_buf_simple_push_be40(&buf->b, val); +} + +/** + * @brief Push 48-bit value to the beginning of the buffer + * + * Adds 48-bit value in little endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 48-bit value to be pushed to the buffer. + */ +static inline void net_buf_push_le48(struct net_buf *buf, uint64_t val) +{ + net_buf_simple_push_le48(&buf->b, val); +} + +/** + * @brief Push 48-bit value to the beginning of the buffer + * + * Adds 48-bit value in big endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 48-bit value to be pushed to the buffer. + */ +static inline void net_buf_push_be48(struct net_buf *buf, uint64_t val) +{ + net_buf_simple_push_be48(&buf->b, val); +} + +/** + * @brief Push 64-bit value to the beginning of the buffer + * + * Adds 64-bit value in little endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 64-bit value to be pushed to the buffer. + */ +static inline void net_buf_push_le64(struct net_buf *buf, uint64_t val) +{ + net_buf_simple_push_le64(&buf->b, val); +} + +/** + * @brief Push 64-bit value to the beginning of the buffer + * + * Adds 64-bit value in big endian format to the beginning of the + * buffer. + * + * @param buf Buffer to update. + * @param val 64-bit value to be pushed to the buffer. + */ +static inline void net_buf_push_be64(struct net_buf *buf, uint64_t val) +{ + net_buf_simple_push_be64(&buf->b, val); +} + +/** + * @brief Remove data from the beginning of the buffer. + * + * Removes data from the beginning of the buffer by modifying the data + * pointer and buffer length. + * + * @param buf Buffer to update. + * @param len Number of bytes to remove. + * + * @return New beginning of the buffer data. + */ +static inline void *net_buf_pull(struct net_buf *buf, size_t len) +{ + return net_buf_simple_pull(&buf->b, len); +} + +/** + * @brief Remove data from the beginning of the buffer. + * + * Removes data from the beginning of the buffer by modifying the data + * pointer and buffer length. + * + * @param buf Buffer to update. + * @param len Number of bytes to remove. + * + * @return Pointer to the old beginning of the buffer data. + */ +static inline void *net_buf_pull_mem(struct net_buf *buf, size_t len) +{ + return net_buf_simple_pull_mem(&buf->b, len); +} + +/** + * @brief Remove a 8-bit value from the beginning of the buffer + * + * Same idea as with net_buf_pull(), but a helper for operating on + * 8-bit values. + * + * @param buf A valid pointer on a buffer. + * + * @return The 8-bit removed value + */ +static inline uint8_t net_buf_pull_u8(struct net_buf *buf) +{ + return net_buf_simple_pull_u8(&buf->b); +} + +/** + * @brief Remove and convert 16 bits from the beginning of the buffer. + * + * Same idea as with net_buf_pull(), but a helper for operating on + * 16-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 16-bit value converted from little endian to host endian. + */ +static inline uint16_t net_buf_pull_le16(struct net_buf *buf) +{ + return net_buf_simple_pull_le16(&buf->b); +} + +/** + * @brief Remove and convert 16 bits from the beginning of the buffer. + * + * Same idea as with net_buf_pull(), but a helper for operating on + * 16-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 16-bit value converted from big endian to host endian. + */ +static inline uint16_t net_buf_pull_be16(struct net_buf *buf) +{ + return net_buf_simple_pull_be16(&buf->b); +} + +/** + * @brief Remove and convert 24 bits from the beginning of the buffer. + * + * Same idea as with net_buf_pull(), but a helper for operating on + * 24-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 24-bit value converted from little endian to host endian. + */ +static inline uint32_t net_buf_pull_le24(struct net_buf *buf) +{ + return net_buf_simple_pull_le24(&buf->b); +} + +/** + * @brief Remove and convert 24 bits from the beginning of the buffer. + * + * Same idea as with net_buf_pull(), but a helper for operating on + * 24-bit big endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 24-bit value converted from big endian to host endian. + */ +static inline uint32_t net_buf_pull_be24(struct net_buf *buf) +{ + return net_buf_simple_pull_be24(&buf->b); +} + +/** + * @brief Remove and convert 32 bits from the beginning of the buffer. + * + * Same idea as with net_buf_pull(), but a helper for operating on + * 32-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 32-bit value converted from little endian to host endian. + */ +static inline uint32_t net_buf_pull_le32(struct net_buf *buf) +{ + return net_buf_simple_pull_le32(&buf->b); +} + +/** + * @brief Remove and convert 32 bits from the beginning of the buffer. + * + * Same idea as with net_buf_pull(), but a helper for operating on + * 32-bit big endian data. + * + * @param buf A valid pointer on a buffer + * + * @return 32-bit value converted from big endian to host endian. + */ +static inline uint32_t net_buf_pull_be32(struct net_buf *buf) +{ + return net_buf_simple_pull_be32(&buf->b); +} + +/** + * @brief Remove and convert 40 bits from the beginning of the buffer. + * + * Same idea as with net_buf_pull(), but a helper for operating on + * 40-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 40-bit value converted from little endian to host endian. + */ +static inline uint64_t net_buf_pull_le40(struct net_buf *buf) +{ + return net_buf_simple_pull_le40(&buf->b); +} + +/** + * @brief Remove and convert 40 bits from the beginning of the buffer. + * + * Same idea as with net_buf_pull(), but a helper for operating on + * 40-bit big endian data. + * + * @param buf A valid pointer on a buffer + * + * @return 40-bit value converted from big endian to host endian. + */ +static inline uint64_t net_buf_pull_be40(struct net_buf *buf) +{ + return net_buf_simple_pull_be40(&buf->b); +} + +/** + * @brief Remove and convert 48 bits from the beginning of the buffer. + * + * Same idea as with net_buf_pull(), but a helper for operating on + * 48-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 48-bit value converted from little endian to host endian. + */ +static inline uint64_t net_buf_pull_le48(struct net_buf *buf) +{ + return net_buf_simple_pull_le48(&buf->b); +} + +/** + * @brief Remove and convert 48 bits from the beginning of the buffer. + * + * Same idea as with net_buf_pull(), but a helper for operating on + * 48-bit big endian data. + * + * @param buf A valid pointer on a buffer + * + * @return 48-bit value converted from big endian to host endian. + */ +static inline uint64_t net_buf_pull_be48(struct net_buf *buf) +{ + return net_buf_simple_pull_be48(&buf->b); +} + +/** + * @brief Remove and convert 64 bits from the beginning of the buffer. + * + * Same idea as with net_buf_pull(), but a helper for operating on + * 64-bit little endian data. + * + * @param buf A valid pointer on a buffer. + * + * @return 64-bit value converted from little endian to host endian. + */ +static inline uint64_t net_buf_pull_le64(struct net_buf *buf) +{ + return net_buf_simple_pull_le64(&buf->b); +} + +/** + * @brief Remove and convert 64 bits from the beginning of the buffer. + * + * Same idea as with net_buf_pull(), but a helper for operating on + * 64-bit big endian data. + * + * @param buf A valid pointer on a buffer + * + * @return 64-bit value converted from big endian to host endian. + */ +static inline uint64_t net_buf_pull_be64(struct net_buf *buf) +{ + return net_buf_simple_pull_be64(&buf->b); +} + +/** + * @brief Check buffer tailroom. + * + * Check how much free space there is at the end of the buffer. + * + * @param buf A valid pointer on a buffer + * + * @return Number of bytes available at the end of the buffer. + */ +static inline size_t net_buf_tailroom(const struct net_buf *buf) +{ + return net_buf_simple_tailroom(&buf->b); +} + +/** + * @brief Check buffer headroom. + * + * Check how much free space there is in the beginning of the buffer. + * + * buf A valid pointer on a buffer + * + * @return Number of bytes available in the beginning of the buffer. + */ +static inline size_t net_buf_headroom(const struct net_buf *buf) +{ + return net_buf_simple_headroom(&buf->b); +} + +/** + * @brief Check maximum net_buf::len value. + * + * This value is depending on the number of bytes being reserved as headroom. + * + * @param buf A valid pointer on a buffer + * + * @return Number of bytes usable behind the net_buf::data pointer. + */ +static inline uint16_t net_buf_max_len(const struct net_buf *buf) +{ + return net_buf_simple_max_len(&buf->b); +} + +/** + * @brief Get the tail pointer for a buffer. + * + * Get a pointer to the end of the data in a buffer. + * + * @param buf Buffer. + * + * @return Tail pointer for the buffer. + */ +static inline uint8_t *net_buf_tail(const struct net_buf *buf) +{ + return net_buf_simple_tail(&buf->b); +} + +/** + * @brief Find the last fragment in the fragment list. + * + * @return Pointer to last fragment in the list. + */ +struct net_buf *net_buf_frag_last(struct net_buf *frags); + +/** + * @brief Insert a new fragment to a chain of bufs. + * + * Insert a new fragment into the buffer fragments list after the parent. + * + * Note: This function takes ownership of the fragment reference so the + * caller is not required to unref. + * + * @param parent Parent buffer/fragment. + * @param frag Fragment to insert. + */ +void net_buf_frag_insert(struct net_buf *parent, struct net_buf *frag); + +/** + * @brief Add a new fragment to the end of a chain of bufs. + * + * Append a new fragment into the buffer fragments list. + * + * Note: This function takes ownership of the fragment reference so the + * caller is not required to unref. + * + * @param head Head of the fragment chain. + * @param frag Fragment to add. + * + * @return New head of the fragment chain. Either head (if head + * was non-NULL) or frag (if head was NULL). + */ +struct net_buf *net_buf_frag_add(struct net_buf *head, struct net_buf *frag); + +/** + * @brief Delete existing fragment from a chain of bufs. + * + * @param parent Parent buffer/fragment, or NULL if there is no parent. + * @param frag Fragment to delete. + * + * @return Pointer to the buffer following the fragment, or NULL if it + * had no further fragments. + */ +#if defined(CONFIG_NET_BUF_LOG) +struct net_buf *net_buf_frag_del_debug(struct net_buf *parent, + struct net_buf *frag, + const char *func, int line); +#define net_buf_frag_del(_parent, _frag) \ + net_buf_frag_del_debug(_parent, _frag, __func__, __LINE__) +#else +struct net_buf *net_buf_frag_del(struct net_buf *parent, struct net_buf *frag); +#endif + +/** + * @brief Copy bytes from net_buf chain starting at offset to linear buffer + * + * Copy (extract) @a len bytes from @a src net_buf chain, starting from @a + * offset in it, to a linear buffer @a dst. Return number of bytes actually + * copied, which may be less than requested, if net_buf chain doesn't have + * enough data, or destination buffer is too small. + * + * @param dst Destination buffer + * @param dst_len Destination buffer length + * @param src Source net_buf chain + * @param offset Starting offset to copy from + * @param len Number of bytes to copy + * @return number of bytes actually copied + */ +size_t net_buf_linearize(void *dst, size_t dst_len, + const struct net_buf *src, size_t offset, size_t len); + +/** + * @typedef net_buf_allocator_cb + * @brief Network buffer allocator callback. + * + * @details The allocator callback is called when net_buf_append_bytes + * needs to allocate a new net_buf. + * + * @param timeout Affects the action taken should the net buf pool be empty. + * If K_NO_WAIT, then return immediately. If K_FOREVER, then + * wait as long as necessary. Otherwise, wait until the specified + * timeout. + * @param user_data The user data given in net_buf_append_bytes call. + * @return pointer to allocated net_buf or NULL on error. + */ +typedef struct net_buf * __must_check (*net_buf_allocator_cb)(k_timeout_t timeout, + void *user_data); + +/** + * @brief Append data to a list of net_buf + * + * @details Append data to a net_buf. If there is not enough space in the + * net_buf then more net_buf will be added, unless there are no free net_buf + * and timeout occurs. If not allocator is provided it attempts to allocate from + * the same pool as the original buffer. + * + * @param buf Network buffer. + * @param len Total length of input data + * @param value Data to be added + * @param timeout Timeout is passed to the net_buf allocator callback. + * @param allocate_cb When a new net_buf is required, use this callback. + * @param user_data A user data pointer to be supplied to the allocate_cb. + * This pointer is can be anything from a mem_pool or a net_pkt, the + * logic is left up to the allocate_cb function. + * + * @return Length of data actually added. This may be less than input + * length if other timeout than K_FOREVER was used, and there + * were no free fragments in a pool to accommodate all data. + */ +size_t net_buf_append_bytes(struct net_buf *buf, size_t len, + const void *value, k_timeout_t timeout, + net_buf_allocator_cb allocate_cb, void *user_data); + +/** + * @brief Match data with a net_buf's content + * + * @details Compare data with a content of a net_buf. Provide information about + * the number of bytes matching between both. If needed, traverse + * through multiple buffer fragments. + * + * @param buf Network buffer + * @param offset Starting offset to compare from + * @param data Data buffer for comparison + * @param len Number of bytes to compare + * + * @return The number of bytes compared before the first difference. + */ +size_t net_buf_data_match(const struct net_buf *buf, size_t offset, const void *data, size_t len); + +/** + * @brief Skip N number of bytes in a net_buf + * + * @details Skip N number of bytes starting from fragment's offset. If the total + * length of data is placed in multiple fragments, this function will skip from + * all fragments until it reaches N number of bytes. Any fully skipped buffers + * are removed from the net_buf list. + * + * @param buf Network buffer. + * @param len Total length of data to be skipped. + * + * @return Pointer to the fragment or + * NULL and pos is 0 after successful skip, + * NULL and pos is 0xffff otherwise. + */ +static inline struct net_buf *net_buf_skip(struct net_buf *buf, size_t len) +{ + while (buf && len--) { + net_buf_pull_u8(buf); + if (!buf->len) { + buf = net_buf_frag_del(NULL, buf); + } + } + + return buf; +} + +/** + * @brief Calculate amount of bytes stored in fragments. + * + * Calculates the total amount of data stored in the given buffer and the + * fragments linked to it. + * + * @param buf Buffer to start off with. + * + * @return Number of bytes in the buffer and its fragments. + */ +static inline size_t net_buf_frags_len(const struct net_buf *buf) +{ + size_t bytes = 0; + + while (buf) { + bytes += buf->len; + buf = buf->frags; + } + + return bytes; +} + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_NET_BUF_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/platform/hooks.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/platform/hooks.h new file mode 100644 index 00000000..9989f640 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/platform/hooks.h @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2024 Intel Corporation + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_PLATFORM_PLATFORM_H_ +#define ZEPHYR_INCLUDE_PLATFORM_PLATFORM_H_ + +/** + * @file + * @brief Soc and Board hooks + * + * This header file contains function prototypes for the interfaces between + * zephyr architecture and initialization code and the SoC and board specific logic + * that resides under boards/ and soc/ + * + * @note These are all standard soc and board interfaces that are exported from + * soc and board specific logic to OS internal logic. These should never be accessed + * directly from application code but may be freely used within the OS. + */ + + +/** + * @brief SoC hook executed at the beginning of the reset vector. + * + * This hook is implemented by the SoC and can be used to perform any + * SoC-specific initialization. + */ +void soc_reset_hook(void); + +/** + * @brief SoC hook executed after the reset vector. + * + * This hook is implemented by the SoC and can be used to perform any + * SoC-specific initialization. + */ +void soc_prep_hook(void); + +/** + * @brief SoC hook executed before the kernel and devices are initialized. + * + * This hook is implemented by the SoC and can be used to perform any + * SoC-specific initialization. + */ +void soc_early_init_hook(void); + +/** + * @brief SoC hook executed after the kernel and devices are initialized. + * + * This hook is implemented by the SoC and can be used to perform any + * SoC-specific initialization. + */ +void soc_late_init_hook(void); + +/** + * @brief SoC per-core initialization + * + * This hook is implemented by the SoC and can be used to perform any + * SoC-specific per-core initialization + */ +void soc_per_core_init_hook(void); + +/** + * @brief Board hook executed before the kernel starts. + * + * This is called before the kernel has started. This hook + * is implemented by the board and can be used to perform any board-specific + * initialization. + */ +void board_early_init_hook(void); + +/** + * @brief Board hook executed after the kernel starts. + * + * This is called after the kernel has started, but before the main function is + * called. This hook is implemented by the board and can be used to perform + * any board-specific initialization. + */ +void board_late_init_hook(void); + +#endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/pm/device.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/pm/device.h index 5d3b4a96..f7c008f3 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/pm/device.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/pm/device.h @@ -208,7 +208,7 @@ BUILD_ASSERT(offsetof(struct pm_device_isr, base) == 0); #ifdef CONFIG_PM_DEVICE_POWER_DOMAIN #define Z_PM_DEVICE_POWER_DOMAIN_INIT(_node_id) \ .domain = DEVICE_DT_GET_OR_NULL(DT_PHANDLE(_node_id, \ - power_domain)), + power_domains)), #else #define Z_PM_DEVICE_POWER_DOMAIN_INIT(obj) #endif /* CONFIG_PM_DEVICE_POWER_DOMAIN */ @@ -625,7 +625,8 @@ bool pm_device_is_powered(const struct device *dev); * This helper function is intended to be called at the end of a driver * init function to automatically setup the device into the lowest power * mode. It assumes that the device has been configured as if it is in - * @ref PM_DEVICE_STATE_OFF. + * @ref PM_DEVICE_STATE_OFF, or @ref PM_DEVICE_STATE_SUSPENDED if device can + * never be powered off. * * @param dev Device instance. * @param action_cb Device PM control callback function. @@ -718,10 +719,16 @@ static inline int pm_device_driver_init(const struct device *dev, pm_device_acti /* When power management is not enabled, all drivers should initialise to active state */ rc = action_cb(dev, PM_DEVICE_ACTION_TURN_ON); - if (rc == 0) { - rc = action_cb(dev, PM_DEVICE_ACTION_RESUME); + if ((rc < 0) && (rc != -ENOTSUP)) { + return rc; } - return rc; + + rc = action_cb(dev, PM_DEVICE_ACTION_RESUME); + if (rc < 0) { + return rc; + } + + return 0; } #endif /* CONFIG_PM_DEVICE */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/pm/policy.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/pm/policy.h index 6fe91663..057488d7 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/pm/policy.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/pm/policy.h @@ -67,7 +67,7 @@ struct pm_policy_latency_request { struct pm_policy_event { /** @cond INTERNAL_HIDDEN */ sys_snode_t node; - uint32_t value_cyc; + int64_t uptime_ticks; /** @endcond */ }; @@ -137,50 +137,6 @@ void pm_policy_state_lock_put(enum pm_state state, uint8_t substate_id); */ bool pm_policy_state_lock_is_active(enum pm_state state, uint8_t substate_id); -/** - * @brief Add a new latency requirement. - * - * The system will not enter any power state that would make the system to - * exceed the given latency value. - * - * @param req Latency request. - * @param value_us Maximum allowed latency in microseconds. - */ -void pm_policy_latency_request_add(struct pm_policy_latency_request *req, - uint32_t value_us); - -/** - * @brief Update a latency requirement. - * - * @param req Latency request. - * @param value_us New maximum allowed latency in microseconds. - */ -void pm_policy_latency_request_update(struct pm_policy_latency_request *req, - uint32_t value_us); - -/** - * @brief Remove a latency requirement. - * - * @param req Latency request. - */ -void pm_policy_latency_request_remove(struct pm_policy_latency_request *req); - -/** - * @brief Subscribe to maximum latency changes. - * - * @param req Subscription request. - * @param cb Callback function (NULL to disable). - */ -void pm_policy_latency_changed_subscribe(struct pm_policy_latency_subscription *req, - pm_policy_latency_changed_cb_t cb); - -/** - * @brief Unsubscribe to maximum latency changes. - * - * @param req Subscription request. - */ -void pm_policy_latency_changed_unsubscribe(struct pm_policy_latency_subscription *req); - /** * @brief Register an event. * @@ -189,27 +145,30 @@ void pm_policy_latency_changed_unsubscribe(struct pm_policy_latency_subscription * event, the policy manager will be able to decide whether certain power states * are worth entering or not. * - * @note It is mandatory to unregister events once they have happened by using - * pm_policy_event_unregister(). Not doing so is an API contract violation, - * because the system would continue to consider them as valid events in the - * *far* future, that is, after the cycle counter rollover. + * CPU is woken up before the time passed in cycle to minimize event handling + * latency. Once woken up, the CPU will be kept awake until the event has been + * handled, which is signaled by pm_policy_event_unregister() or moving event + * into the future using pm_policy_event_update(). * * @param evt Event. - * @param time_us When the event will occur, in microseconds from now. + * @param uptime_ticks When the event will occur, in uptime ticks. * - * @see pm_policy_event_unregister + * @see pm_policy_event_unregister() */ -void pm_policy_event_register(struct pm_policy_event *evt, uint32_t time_us); +void pm_policy_event_register(struct pm_policy_event *evt, int64_t uptime_ticks); /** * @brief Update an event. * + * This shortcut allows for moving the time an event will occur without the + * need for an unregister + register cycle. + * * @param evt Event. - * @param time_us When the event will occur, in microseconds from now. + * @param uptime_ticks When the event will occur, in uptime ticks. * * @see pm_policy_event_register */ -void pm_policy_event_update(struct pm_policy_event *evt, uint32_t time_us); +void pm_policy_event_update(struct pm_policy_event *evt, int64_t uptime_ticks); /** * @brief Unregister an event. @@ -246,6 +205,18 @@ void pm_policy_device_power_lock_get(const struct device *dev); */ void pm_policy_device_power_lock_put(const struct device *dev); +/** + * @brief Returns the ticks until the next event + * + * If an event is registred, it will return the number of ticks until the next event, if the + * "next"/"oldest" registered event is in the past, it will return 0. Otherwise it returns -1. + * + * @retval >0 If next registered event is in the future + * @retval 0 If next registered event is now or in the past + * @retval -1 Otherwise + */ +int64_t pm_policy_next_event_ticks(void); + #else static inline void pm_policy_state_lock_get(enum pm_state state, uint8_t substate_id) { @@ -267,38 +238,16 @@ static inline bool pm_policy_state_lock_is_active(enum pm_state state, uint8_t s return false; } -static inline void pm_policy_latency_request_add( - struct pm_policy_latency_request *req, uint32_t value_us) -{ - ARG_UNUSED(req); - ARG_UNUSED(value_us); -} - -static inline void pm_policy_latency_request_update( - struct pm_policy_latency_request *req, uint32_t value_us) -{ - ARG_UNUSED(req); - ARG_UNUSED(value_us); -} - -static inline void pm_policy_latency_request_remove( - struct pm_policy_latency_request *req) -{ - ARG_UNUSED(req); -} - -static inline void pm_policy_event_register(struct pm_policy_event *evt, - uint32_t time_us) +static inline void pm_policy_event_register(struct pm_policy_event *evt, uint32_t cycle) { ARG_UNUSED(evt); - ARG_UNUSED(time_us); + ARG_UNUSED(cycle); } -static inline void pm_policy_event_update(struct pm_policy_event *evt, - uint32_t time_us) +static inline void pm_policy_event_update(struct pm_policy_event *evt, uint32_t cycle) { ARG_UNUSED(evt); - ARG_UNUSED(time_us); + ARG_UNUSED(cycle); } static inline void pm_policy_event_unregister(struct pm_policy_event *evt) @@ -316,8 +265,79 @@ static inline void pm_policy_device_power_lock_put(const struct device *dev) ARG_UNUSED(dev); } +static inline int64_t pm_policy_next_event_ticks(void) +{ + return -1; +} + #endif /* CONFIG_PM */ +#if defined(CONFIG_PM) || defined(CONFIG_PM_POLICY_LATENCY_STANDALONE) || defined(__DOXYGEN__) +/** + * @brief Add a new latency requirement. + * + * The system will not enter any power state that would make the system to + * exceed the given latency value. + * + * @param req Latency request. + * @param value_us Maximum allowed latency in microseconds. + */ +void pm_policy_latency_request_add(struct pm_policy_latency_request *req, + uint32_t value_us); + +/** + * @brief Update a latency requirement. + * + * @param req Latency request. + * @param value_us New maximum allowed latency in microseconds. + */ +void pm_policy_latency_request_update(struct pm_policy_latency_request *req, + uint32_t value_us); + +/** + * @brief Remove a latency requirement. + * + * @param req Latency request. + */ +void pm_policy_latency_request_remove(struct pm_policy_latency_request *req); + +/** + * @brief Subscribe to maximum latency changes. + * + * @param req Subscription request. + * @param cb Callback function (NULL to disable). + */ +void pm_policy_latency_changed_subscribe(struct pm_policy_latency_subscription *req, + pm_policy_latency_changed_cb_t cb); + +/** + * @brief Unsubscribe to maximum latency changes. + * + * @param req Subscription request. + */ +void pm_policy_latency_changed_unsubscribe(struct pm_policy_latency_subscription *req); +#else +static inline void pm_policy_latency_request_add( + struct pm_policy_latency_request *req, uint32_t value_us) +{ + ARG_UNUSED(req); + ARG_UNUSED(value_us); +} + +static inline void pm_policy_latency_request_update( + struct pm_policy_latency_request *req, uint32_t value_us) +{ + ARG_UNUSED(req); + ARG_UNUSED(value_us); +} + +static inline void pm_policy_latency_request_remove( + struct pm_policy_latency_request *req) +{ + ARG_UNUSED(req); +} +#endif /* CONFIG_PM CONFIG_PM_POLICY_LATENCY_STANDALONE */ + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/pm/state.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/pm/state.h index 87363ea2..6590b90c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/pm/state.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/pm/state.h @@ -194,7 +194,7 @@ struct pm_state_constraint { * @param idx Index within the array. */ #define Z_DT_PHANDLE_01(node_id, prop, idx) \ - COND_CODE_1(DT_NODE_HAS_STATUS(DT_PHANDLE_BY_IDX(node_id, prop, idx), okay), \ + COND_CODE_1(DT_NODE_HAS_STATUS_OKAY(DT_PHANDLE_BY_IDX(node_id, prop, idx)), \ (1), (0)) /** @@ -207,7 +207,7 @@ struct pm_state_constraint { * @param node_id A node identifier with compatible zephyr,power-state */ #define Z_PM_STATE_INFO_FROM_DT_CPU(i, node_id) \ - COND_CODE_1(DT_NODE_HAS_STATUS(DT_PHANDLE_BY_IDX(node_id, cpu_power_states, i), okay), \ + COND_CODE_1(DT_NODE_HAS_STATUS_OKAY(DT_PHANDLE_BY_IDX(node_id, cpu_power_states, i)), \ (PM_STATE_INFO_DT_INIT(DT_PHANDLE_BY_IDX(node_id, cpu_power_states, i)),), ()) /** @@ -220,7 +220,7 @@ struct pm_state_constraint { * @param node_id A node identifier with compatible zephyr,power-state */ #define Z_PM_STATE_FROM_DT_CPU(i, node_id) \ - COND_CODE_1(DT_NODE_HAS_STATUS(DT_PHANDLE_BY_IDX(node_id, cpu_power_states, i), okay), \ + COND_CODE_1(DT_NODE_HAS_STATUS_OKAY(DT_PHANDLE_BY_IDX(node_id, cpu_power_states, i)), \ (PM_STATE_DT_INIT(DT_PHANDLE_BY_IDX(node_id, cpu_power_states, i)),), ()) /** @endcond */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/dirent.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/dirent.h index 12f5d443..0ffe8756 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/dirent.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/dirent.h @@ -7,7 +7,8 @@ #define ZEPHYR_INCLUDE_POSIX_DIRENT_H_ #include -#include "posix_types.h" + +#include #ifdef CONFIG_POSIX_FILE_SYSTEM #include @@ -27,6 +28,8 @@ struct dirent { DIR *opendir(const char *dirname); int closedir(DIR *dirp); struct dirent *readdir(DIR *dirp); +int readdir_r(DIR *ZRESTRICT dirp, struct dirent *ZRESTRICT entry, + struct dirent **ZRESTRICT result); #ifdef __cplusplus } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/fcntl.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/fcntl.h index 9689d1ae..24ed1776 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/fcntl.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/fcntl.h @@ -8,9 +8,13 @@ #define ZEPHYR_POSIX_FCNTL_H_ #ifdef CONFIG_PICOLIBC -#define O_CREAT 0x0040 +#define O_CREAT 0x0040 +#define O_TRUNC 0x0200 +#define O_APPEND 0x0400 #else -#define O_CREAT 0x0200 +#define O_CREAT 0x0200 +#define O_TRUNC 0x0400 +#define O_APPEND 0x0008 #endif #define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR) @@ -19,7 +23,6 @@ #define O_WRONLY 01 #define O_RDWR 02 -#define O_APPEND 0x0400 #define O_EXCL 0x0800 #define O_NONBLOCK 0x4000 diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/grp.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/grp.h new file mode 100644 index 00000000..3f5616c3 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/grp.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2024 Meta Platforms + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_POSIX_GRP_H_ +#define ZEPHYR_INCLUDE_POSIX_GRP_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/** + * @brief Group structure + */ +struct group { + /**< the name of the group */ + char *gr_name; + /**< numerical group ID */ + gid_t gr_gid; + /**< pointer to a null-terminated array of character pointers to member names */ + char **gr_mem; +}; + +int getgrnam_r(const char *name, struct group *grp, char *buffer, size_t bufsize, + struct group **result); +int getgrgid_r(gid_t gid, struct group *grp, char *buffer, size_t bufsize, struct group **result); + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_POSIX_GRP_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/mqueue.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/mqueue.h index aac03426..40db0733 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/mqueue.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/mqueue.h @@ -12,7 +12,7 @@ #include #include #include -#include "posix_types.h" +#include #ifdef __cplusplus extern "C" { diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/poll.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/poll.h index 4aeebeed..aa2c8921 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/poll.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/poll.h @@ -12,9 +12,12 @@ extern "C" { #endif +typedef unsigned int nfds_t; + #define pollfd zsock_pollfd #define POLLIN ZSOCK_POLLIN +#define POLLPRI ZSOCK_POLLPRI #define POLLOUT ZSOCK_POLLOUT #define POLLERR ZSOCK_POLLERR #define POLLHUP ZSOCK_POLLHUP diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/posix_features.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/posix_features.h index eb3c4b44..e4a91c6f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/posix_features.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/posix_features.h @@ -123,7 +123,10 @@ #endif /* #define _POSIX_SPORADIC_SERVER (-1L) */ -/* #define _POSIX_SYNCHRONIZED_IO (-1L) */ + +#ifdef CONFIG_POSIX_SYNCHRONIZED_IO +#define _POSIX_SYNCHRONIZED_IO _POSIX_VERSION +#endif #ifdef CONFIG_POSIX_THREAD_ATTR_STACKADDR #define _POSIX_THREAD_ATTR_STACKADDR _POSIX_VERSION @@ -328,7 +331,9 @@ #define SYMLOOP_MAX _POSIX_SYMLOOP_MAX #define TIMER_MAX _POSIX_TIMER_MAX #define TTY_NAME_MAX _POSIX_TTY_NAME_MAX +#ifndef TZNAME_MAX #define TZNAME_MAX _POSIX_TZNAME_MAX +#endif /* Pathname variable values */ #define FILESIZEBITS (32) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/posix_types.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/posix_types.h index cbe51fa7..e65a398c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/posix_types.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/posix_types.h @@ -11,6 +11,18 @@ #include #endif +#if !defined(_CLOCK_T_DECLARED) && !defined(__clock_t_defined) +typedef unsigned long clock_t; +#define _CLOCK_T_DECLARED +#define __clock_t_defined +#endif + +#if !defined(_CLOCKID_T_DECLARED) && !defined(__clockid_t_defined) +typedef unsigned long clockid_t; +#define _CLOCKID_T_DECLARED +#define __clockid_t_defined +#endif + #ifdef CONFIG_NEWLIB_LIBC #include #endif @@ -21,6 +33,48 @@ extern "C" { #endif +#if !defined(_DEV_T_DECLARED) && !defined(__dev_t_defined) +typedef int dev_t; +#define _DEV_T_DECLARED +#define __dev_t_defined +#endif + +#if !defined(_INO_T_DECLARED) && !defined(__ino_t_defined) +typedef int ino_t; +#define _INO_T_DECLARED +#define __ino_t_defined +#endif + +#if !defined(_NLINK_T_DECLARED) && !defined(__nlink_t_defined) +typedef unsigned short nlink_t; +#define _NLINK_T_DECLARED +#define __nlink_t_defined +#endif + +#if !defined(_UID_T_DECLARED) && !defined(__uid_t_defined) +typedef unsigned short uid_t; +#define _UID_T_DECLARED +#define __uid_t_defined +#endif + +#if !defined(_GID_T_DECLARED) && !defined(__gid_t_defined) +typedef unsigned short gid_t; +#define _GID_T_DECLARED +#define __gid_t_defined +#endif + +#if !defined(_BLKSIZE_T_DECLARED) && !defined(__blksize_t_defined) +typedef unsigned long blksize_t; +#define _BLKSIZE_T_DECLARED +#define __blksize_t_defined +#endif + +#if !defined(_BLKCNT_T_DECLARED) && !defined(__blkcnt_t_defined) +typedef unsigned long blkcnt_t; +#define _BLKCNT_T_DECLARED +#define __blkcnt_t_defined +#endif + #if !defined(CONFIG_ARCMWDT_LIBC) typedef int pid_t; #endif @@ -30,12 +84,7 @@ typedef unsigned long useconds_t; #endif /* time related attributes */ -#if !defined(CONFIG_NEWLIB_LIBC) && !defined(CONFIG_ARCMWDT_LIBC) -#ifndef __clockid_t_defined -typedef uint32_t clockid_t; -#endif -#endif /* !CONFIG_NEWLIB_LIBC && !CONFIG_ARCMWDT_LIBC */ -#ifndef __timer_t_defined +#if !defined(__timer_t_defined) && !defined(_TIMER_T_DECLARED) typedef unsigned long timer_t; #endif @@ -45,12 +94,10 @@ struct pthread_attr { uint32_t details[2]; }; -#if defined(CONFIG_MINIMAL_LIBC) || defined(CONFIG_PICOLIBC) || defined(CONFIG_ARMCLANG_STD_LIBC) \ - || defined(CONFIG_ARCMWDT_LIBC) +#if !defined(CONFIG_NEWLIB_LIBC) typedef struct pthread_attr pthread_attr_t; -#endif - BUILD_ASSERT(sizeof(pthread_attr_t) >= sizeof(struct pthread_attr)); +#endif typedef uint32_t pthread_t; typedef uint32_t pthread_spinlock_t; @@ -65,11 +112,10 @@ struct pthread_mutexattr { unsigned char type: 2; bool initialized: 1; }; -#if defined(CONFIG_MINIMAL_LIBC) || defined(CONFIG_PICOLIBC) || defined(CONFIG_ARMCLANG_STD_LIBC) \ - || defined(CONFIG_ARCMWDT_LIBC) +#if !defined(CONFIG_NEWLIB_LIBC) typedef struct pthread_mutexattr pthread_mutexattr_t; -#endif BUILD_ASSERT(sizeof(pthread_mutexattr_t) >= sizeof(struct pthread_mutexattr)); +#endif /* Condition variables */ typedef uint32_t pthread_cond_t; @@ -78,11 +124,10 @@ struct pthread_condattr { clockid_t clock; }; -#if defined(CONFIG_MINIMAL_LIBC) || defined(CONFIG_PICOLIBC) || defined(CONFIG_ARMCLANG_STD_LIBC) \ - || defined(CONFIG_ARCMWDT_LIBC) +#if !defined(CONFIG_NEWLIB_LIBC) typedef struct pthread_condattr pthread_condattr_t; -#endif BUILD_ASSERT(sizeof(pthread_condattr_t) >= sizeof(struct pthread_condattr)); +#endif /* Barrier */ typedef uint32_t pthread_barrier_t; @@ -99,14 +144,12 @@ struct pthread_once { bool flag; }; -#if defined(CONFIG_MINIMAL_LIBC) || defined(CONFIG_PICOLIBC) || defined(CONFIG_ARMCLANG_STD_LIBC) \ - || defined(CONFIG_ARCMWDT_LIBC) +#if !defined(CONFIG_NEWLIB_LIBC) typedef uint32_t pthread_key_t; typedef struct pthread_once pthread_once_t; -#endif - /* Newlib typedefs pthread_once_t as a struct with two ints */ BUILD_ASSERT(sizeof(pthread_once_t) >= sizeof(struct pthread_once)); +#endif #ifdef __cplusplus } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/pthread.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/pthread.h index eaa9ccb6..685a8d9a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/pthread.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/pthread.h @@ -183,6 +183,8 @@ int pthread_condattr_setclock(pthread_condattr_t *att, clockid_t clock_id); * FIXME: Only PRIO_NONE is supported. Implement other protocols. */ #define PTHREAD_PRIO_NONE 0 +#define PTHREAD_PRIO_INHERIT 1 +#define PTHREAD_PRIO_PROTECT 2 /** * @brief POSIX threading compatibility API @@ -348,16 +350,22 @@ int pthread_barrierattr_getpshared(const pthread_barrierattr_t *ZRESTRICT attr, int pthread_condattr_getpshared(const pthread_condattr_t * int *); int pthread_condattr_setpshared(pthread_condattr_t *, int); int pthread_mutex_consistent(pthread_mutex_t *); -int pthread_mutex_getprioceiling(const pthread_mutex_t * int *); -int pthread_mutex_setprioceiling(pthread_mutex_t *, int int *); -int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *, int *); int pthread_mutexattr_getpshared(const pthread_mutexattr_t * int *); int pthread_mutexattr_getrobust(const pthread_mutexattr_t * int *); -int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int); int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int); int pthread_mutexattr_setrobust(pthread_mutexattr_t *, int); */ +#ifdef CONFIG_POSIX_THREAD_PRIO_PROTECT +int pthread_mutex_getprioceiling(const pthread_mutex_t *ZRESTRICT mutex, + int *ZRESTRICT prioceiling); +int pthread_mutex_setprioceiling(pthread_mutex_t *ZRESTRICT mutex, int prioceiling, + int *ZRESTRICT old_ceiling); +int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *ZRESTRICT attr, + int *ZRESTRICT prioceiling); +int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *attr, int prioceiling); +#endif /* CONFIG_POSIX_THREAD_PRIO_PROTECT */ + /* Base Pthread related APIs */ /** @@ -421,6 +429,8 @@ int pthread_attr_setinheritsched(pthread_attr_t *attr, int inheritsched); int pthread_once(pthread_once_t *once, void (*initFunc)(void)); #endif FUNC_NORETURN void pthread_exit(void *retval); +int pthread_timedjoin_np(pthread_t thread, void **status, const struct timespec *abstime); +int pthread_tryjoin_np(pthread_t thread, void **status); int pthread_join(pthread_t thread, void **status); int pthread_cancel(pthread_t pthread); int pthread_detach(pthread_t thread); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/pwd.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/pwd.h new file mode 100644 index 00000000..3557b20a --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/pwd.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2024 Meta Platforms + * + * SPDX-License-Identifier: Apache-2.0 + */ +#ifndef ZEPHYR_INCLUDE_POSIX_PWD_H_ +#define ZEPHYR_INCLUDE_POSIX_PWD_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +struct passwd { + /* user's login name */ + char *pw_name; + /* numerical user ID */ + uid_t pw_uid; + /* numerical group ID */ + gid_t pw_gid; + /* initial working directory */ + char *pw_dir; + /* program to use as shell */ + char *pw_shell; +}; + +int getpwnam_r(const char *nam, struct passwd *pwd, char *buffer, size_t bufsize, + struct passwd **result); +int getpwuid_r(uid_t uid, struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result); + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_POSIX_PWD_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sched.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sched.h index b337cc2c..29a3fa93 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sched.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sched.h @@ -7,8 +7,7 @@ #define ZEPHYR_INCLUDE_POSIX_SCHED_H_ #include - -#include "posix_types.h" +#include #include diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/semaphore.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/semaphore.h index 3b0f53b0..e3f6014c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/semaphore.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/semaphore.h @@ -7,7 +7,7 @@ #define ZEPHYR_INCLUDE_POSIX_SEMAPHORE_H_ #include -#include "posix_types.h" +#include #ifdef __cplusplus extern "C" { diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/signal.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/signal.h index 165050f2..e106642f 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/signal.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/signal.h @@ -6,7 +6,8 @@ #ifndef ZEPHYR_INCLUDE_POSIX_SIGNAL_H_ #define ZEPHYR_INCLUDE_POSIX_SIGNAL_H_ -#include "posix_types.h" +/* include posix_types.h before posix_features.h (here) to avoid build errors against newlib */ +#include #include "posix_features.h" #ifdef __cplusplus @@ -77,6 +78,16 @@ typedef struct { #define SIG_UNBLOCK 2 #endif +#define SIG_DFL ((void *)0) +#define SIG_IGN ((void *)1) +#define SIG_ERR ((void *)-1) + +#define SI_USER 1 +#define SI_QUEUE 2 +#define SI_TIMER 3 +#define SI_ASYNCIO 4 +#define SI_MESGQ 5 + typedef int sig_atomic_t; /* Atomic entity type (ANSI) */ union sigval { @@ -92,12 +103,36 @@ struct sigevent { int sigev_signo; }; +typedef struct { + int si_signo; + int si_code; + union sigval si_value; +} siginfo_t; + +struct sigaction { + void (*sa_handler)(int signno); + sigset_t sa_mask; + int sa_flags; + void (*sa_sigaction)(int signo, siginfo_t *info, void *context); +}; + +typedef void (*sighandler_t)(int signo); + +unsigned int alarm(unsigned int seconds); +int kill(pid_t pid, int sig); +int pause(void); +int raise(int signo); +int sigaction(int sig, const struct sigaction *ZRESTRICT act, struct sigaction *ZRESTRICT oact); +int sigpending(sigset_t *set); +int sigsuspend(const sigset_t *sigmask); +int sigwait(const sigset_t *ZRESTRICT set, int *ZRESTRICT signo); char *strsignal(int signum); int sigemptyset(sigset_t *set); int sigfillset(sigset_t *set); int sigaddset(sigset_t *set, int signo); int sigdelset(sigset_t *set, int signo); int sigismember(const sigset_t *set, int signo); +sighandler_t signal(int signo, sighandler_t handler); int sigprocmask(int how, const sigset_t *ZRESTRICT set, sigset_t *ZRESTRICT oset); int pthread_sigmask(int how, const sigset_t *ZRESTRICT set, sigset_t *ZRESTRICT oset); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sys/select.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sys/select.h index fc61c018..b51ace79 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sys/select.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sys/select.h @@ -6,23 +6,26 @@ #ifndef ZEPHYR_INCLUDE_POSIX_SYS_SELECT_H_ #define ZEPHYR_INCLUDE_POSIX_SYS_SELECT_H_ -#include -#include +#include +#include #ifdef __cplusplus extern "C" { #endif -#define fd_set zsock_fd_set -#define FD_SETSIZE ZSOCK_FD_SETSIZE -#define FD_ZERO ZSOCK_FD_ZERO -#define FD_SET ZSOCK_FD_SET -#define FD_CLR ZSOCK_FD_CLR -#define FD_ISSET ZSOCK_FD_ISSET +#define FD_SETSIZE ZVFS_FD_SETSIZE + +typedef struct zvfs_fd_set fd_set; struct timeval; -int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); +int pselect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, + const struct timespec *timeout, const void *sigmask); +int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout); +void FD_CLR(int fd, fd_set *fdset); +int FD_ISSET(int fd, fd_set *fdset); +void FD_SET(int fd, fd_set *fdset); +void FD_ZERO(fd_set *fdset); #ifdef __cplusplus } diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sys/stat.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sys/stat.h index 2d19df29..fdd4e093 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sys/stat.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sys/stat.h @@ -36,43 +36,8 @@ extern "C" { #include #include -#include -#include -#ifndef _DEV_T_DECLARED -typedef int dev_t; -#define _DEV_T_DECLARED -#endif - -#ifndef _INO_T_DECLARED -typedef int ino_t; -#define _INO_T_DECLARED -#endif - -#ifndef _NLINK_T_DECLARED -typedef unsigned short nlink_t; -#define _NLINK_T_DECLARED -#endif - -#ifndef _UID_T_DECLARED -typedef unsigned short uid_t; -#define _UID_T_DECLARED -#endif - -#ifndef _GID_T_DECLARED -typedef unsigned short gid_t; -#define _GID_T_DECLARED -#endif - -#ifndef _BLKSIZE_T_DECLARED -typedef unsigned long blksize_t; -#define _BLKSIZE_T_DECLARED -#endif - -#ifndef _BLKCNT_T_DECLARED -typedef unsigned long blkcnt_t; -#define _BLKCNT_T_DECLARED -#endif +#include /* dj's stat defines _STAT_H_ */ #ifndef _STAT_H_ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sys/time.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sys/time.h index d7e108b5..71153f71 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sys/time.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/sys/time.h @@ -22,6 +22,7 @@ struct timeval { #endif #else +#include #include #endif /* CONFIG_NEWLIB_LIBC */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/time.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/time.h index f0ca0728..51542f30 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/time.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/time.h @@ -58,7 +58,7 @@ struct itimerspec { #include #include -#include "posix_types.h" +#include #include #ifdef __cplusplus @@ -97,6 +97,7 @@ int clock_getcpuclockid(pid_t pid, clockid_t *clock_id); /* Timer APIs */ int timer_create(clockid_t clockId, struct sigevent *evp, timer_t *timerid); int timer_delete(timer_t timerid); +struct itimerspec; int timer_gettime(timer_t timerid, struct itimerspec *its); int timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/unistd.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/unistd.h index 194b2bff..b7ac069b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/unistd.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/posix/unistd.h @@ -6,7 +6,7 @@ #ifndef ZEPHYR_INCLUDE_POSIX_UNISTD_H_ #define ZEPHYR_INCLUDE_POSIX_UNISTD_H_ -#include "posix_types.h" +#include #ifdef CONFIG_POSIX_API #include @@ -35,11 +35,16 @@ off_t lseek(int file, off_t offset, int whence); int fsync(int fd); int ftruncate(int fd, off_t length); +#ifdef CONFIG_POSIX_SYNCHRONIZED_IO +int fdatasync(int fd); +#endif /* CONFIG_POSIX_SYNCHRONIZED_IO */ + /* File System related operations */ int rename(const char *old, const char *newp); int unlink(const char *path); int stat(const char *path, struct stat *buf); int mkdir(const char *path, mode_t mode); +int rmdir(const char *path); FUNC_NORETURN void _exit(int status); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/rtio/rtio.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/rtio/rtio.h index 1bb3a844..228211a4 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/rtio/rtio.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/rtio/rtio.h @@ -253,30 +253,36 @@ struct rtio_sqe { union { - /** OP_TX, OP_RX */ + /** OP_TX */ struct { uint32_t buf_len; /**< Length of buffer */ - uint8_t *buf; /**< Buffer to use*/ - }; + const uint8_t *buf; /**< Buffer to write from */ + } tx; + + /** OP_RX */ + struct { + uint32_t buf_len; /**< Length of buffer */ + uint8_t *buf; /**< Buffer to read into */ + } rx; /** OP_TINY_TX */ struct { - uint8_t tiny_buf_len; /**< Length of tiny buffer */ - uint8_t tiny_buf[7]; /**< Tiny buffer */ - }; + uint8_t buf_len; /**< Length of tiny buffer */ + uint8_t buf[7]; /**< Tiny buffer */ + } tiny_tx; /** OP_CALLBACK */ struct { rtio_callback_t callback; void *arg0; /**< Last argument given to callback */ - }; + } callback; /** OP_TXRX */ struct { - uint32_t txrx_buf_len; - uint8_t *tx_buf; - uint8_t *rx_buf; - }; + uint32_t buf_len; /**< Length of tx and rx buffers */ + const uint8_t *tx_buf; /**< Buffer to write from */ + uint8_t *rx_buf; /**< Buffer to read into */ + } txrx; /** OP_I2C_CONFIGURE */ uint32_t i2c_config; @@ -504,8 +510,8 @@ static inline void rtio_sqe_prep_read(struct rtio_sqe *sqe, sqe->op = RTIO_OP_RX; sqe->prio = prio; sqe->iodev = iodev; - sqe->buf_len = len; - sqe->buf = buf; + sqe->rx.buf_len = len; + sqe->rx.buf = buf; sqe->userdata = userdata; } @@ -536,7 +542,7 @@ static inline void rtio_sqe_prep_read_multishot(struct rtio_sqe *sqe, static inline void rtio_sqe_prep_write(struct rtio_sqe *sqe, const struct rtio_iodev *iodev, int8_t prio, - uint8_t *buf, + const uint8_t *buf, uint32_t len, void *userdata) { @@ -544,8 +550,8 @@ static inline void rtio_sqe_prep_write(struct rtio_sqe *sqe, sqe->op = RTIO_OP_TX; sqe->prio = prio; sqe->iodev = iodev; - sqe->buf_len = len; - sqe->buf = buf; + sqe->tx.buf_len = len; + sqe->tx.buf = buf; sqe->userdata = userdata; } @@ -566,14 +572,14 @@ static inline void rtio_sqe_prep_tiny_write(struct rtio_sqe *sqe, uint8_t tiny_write_len, void *userdata) { - __ASSERT_NO_MSG(tiny_write_len <= sizeof(sqe->tiny_buf)); + __ASSERT_NO_MSG(tiny_write_len <= sizeof(sqe->tiny_tx.buf)); memset(sqe, 0, sizeof(struct rtio_sqe)); sqe->op = RTIO_OP_TINY_TX; sqe->prio = prio; sqe->iodev = iodev; - sqe->tiny_buf_len = tiny_write_len; - memcpy(sqe->tiny_buf, tiny_write_data, tiny_write_len); + sqe->tiny_tx.buf_len = tiny_write_len; + memcpy(sqe->tiny_tx.buf, tiny_write_data, tiny_write_len); sqe->userdata = userdata; } @@ -594,18 +600,37 @@ static inline void rtio_sqe_prep_callback(struct rtio_sqe *sqe, sqe->op = RTIO_OP_CALLBACK; sqe->prio = 0; sqe->iodev = NULL; - sqe->callback = callback; - sqe->arg0 = arg0; + sqe->callback.callback = callback; + sqe->callback.arg0 = arg0; sqe->userdata = userdata; } +/** + * @brief Prepare a callback op submission that does not create a CQE + * + * Similar to @ref rtio_sqe_prep_callback, but the @ref RTIO_SQE_NO_RESPONSE + * flag is set on the SQE to prevent the generation of a CQE upon completion. + * + * This can be useful when the callback is the last operation in a sequence + * whose job is to clean up all the previous CQE's. Without @ref RTIO_SQE_NO_RESPONSE + * the completion itself will result in a CQE that cannot be consumed in the callback. + */ +static inline void rtio_sqe_prep_callback_no_cqe(struct rtio_sqe *sqe, + rtio_callback_t callback, + void *arg0, + void *userdata) +{ + rtio_sqe_prep_callback(sqe, callback, arg0, userdata); + sqe->flags |= RTIO_SQE_NO_RESPONSE; +} + /** * @brief Prepare a transceive op submission */ static inline void rtio_sqe_prep_transceive(struct rtio_sqe *sqe, const struct rtio_iodev *iodev, int8_t prio, - uint8_t *tx_buf, + const uint8_t *tx_buf, uint8_t *rx_buf, uint32_t buf_len, void *userdata) @@ -614,9 +639,9 @@ static inline void rtio_sqe_prep_transceive(struct rtio_sqe *sqe, sqe->op = RTIO_OP_TXRX; sqe->prio = prio; sqe->iodev = iodev; - sqe->txrx_buf_len = buf_len; - sqe->tx_buf = tx_buf; - sqe->rx_buf = rx_buf; + sqe->txrx.buf_len = buf_len; + sqe->txrx.tx_buf = tx_buf; + sqe->txrx.rx_buf = rx_buf; sqe->userdata = userdata; } @@ -696,6 +721,10 @@ static inline int rtio_block_pool_alloc(struct rtio *r, size_t min_sz, return 0; } + if (bytes <= block_size) { + break; + } + bytes -= block_size; } while (bytes >= min_sz); @@ -1036,9 +1065,9 @@ static inline uint32_t rtio_cqe_compute_flags(struct rtio_iodev_sqe *iodev_sqe) if (iodev_sqe->sqe.op == RTIO_OP_RX && iodev_sqe->sqe.flags & RTIO_SQE_MEMPOOL_BUFFER) { struct rtio *r = iodev_sqe->r; struct sys_mem_blocks *mem_pool = r->block_pool; - int blk_index = (iodev_sqe->sqe.buf - mem_pool->buffer) >> + int blk_index = (iodev_sqe->sqe.rx.buf - mem_pool->buffer) >> mem_pool->info.blk_sz_shift; - int blk_count = iodev_sqe->sqe.buf_len >> mem_pool->info.blk_sz_shift; + int blk_count = iodev_sqe->sqe.rx.buf_len >> mem_pool->info.blk_sz_shift; flags = RTIO_CQE_FLAG_PREP_MEMPOOL(blk_index, blk_count); } @@ -1185,19 +1214,19 @@ static inline int rtio_sqe_rx_buf(const struct rtio_iodev_sqe *iodev_sqe, uint32 if (sqe->op == RTIO_OP_RX && sqe->flags & RTIO_SQE_MEMPOOL_BUFFER) { struct rtio *r = iodev_sqe->r; - if (sqe->buf != NULL) { - if (sqe->buf_len < min_buf_len) { + if (sqe->rx.buf != NULL) { + if (sqe->rx.buf_len < min_buf_len) { return -ENOMEM; } - *buf = sqe->buf; - *buf_len = sqe->buf_len; + *buf = sqe->rx.buf; + *buf_len = sqe->rx.buf_len; return 0; } int rc = rtio_block_pool_alloc(r, min_buf_len, max_buf_len, buf, buf_len); if (rc == 0) { - sqe->buf = *buf; - sqe->buf_len = *buf_len; + sqe->rx.buf = *buf; + sqe->rx.buf_len = *buf_len; return 0; } @@ -1207,12 +1236,12 @@ static inline int rtio_sqe_rx_buf(const struct rtio_iodev_sqe *iodev_sqe, uint32 ARG_UNUSED(max_buf_len); #endif - if (sqe->buf_len < min_buf_len) { + if (sqe->rx.buf_len < min_buf_len) { return -ENOMEM; } - *buf = sqe->buf; - *buf_len = sqe->buf_len; + *buf = sqe->rx.buf; + *buf_len = sqe->rx.buf_len; return 0; } @@ -1381,12 +1410,7 @@ static inline int z_impl_rtio_cqe_copy_out(struct rtio *r, cqe = K_TIMEOUT_EQ(timeout, K_FOREVER) ? rtio_cqe_consume_block(r) : rtio_cqe_consume(r); if (cqe == NULL) { -#ifdef CONFIG_BOARD_NATIVE_POSIX - /* Native posix fakes the clock and only moves it forward when sleeping. */ - k_sleep(K_TICKS(1)); -#else - Z_SPIN_DELAY(1); -#endif + Z_SPIN_DELAY(25); continue; } cqes[copied++] = *cqe; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/settings/settings.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/settings/settings.h index 99b9fc21..f22f1aba 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/settings/settings.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/settings/settings.h @@ -70,6 +70,9 @@ struct settings_handler { const char *name; /**< Name of subtree. */ + int cprio; + /**< Priority of commit, lower value is higher priority */ + int (*h_get)(const char *key, char *val, int val_len_max); /**< Get values handler of settings items identified by keyword names. * @@ -136,6 +139,9 @@ struct settings_handler_static { const char *name; /**< Name of subtree. */ + int cprio; + /**< Priority of commit, lower value is higher priority */ + int (*h_get)(const char *key, char *val, int val_len_max); /**< Get values handler of settings items identified by keyword names. * @@ -196,22 +202,30 @@ struct settings_handler_static { * @param _set set routine (can be NULL) * @param _commit commit routine (can be NULL) * @param _export export routine (can be NULL) + * @param _cprio commit priority (lower value is higher priority) * * This creates a variable _hname prepended by settings_handler_. * */ -#define SETTINGS_STATIC_HANDLER_DEFINE(_hname, _tree, _get, _set, _commit, \ - _export) \ +#define SETTINGS_STATIC_HANDLER_DEFINE_WITH_CPRIO(_hname, _tree, _get, _set, \ + _commit, _export, _cprio) \ const STRUCT_SECTION_ITERABLE(settings_handler_static, \ settings_handler_ ## _hname) = { \ .name = _tree, \ + .cprio = _cprio, \ .h_get = _get, \ .h_set = _set, \ .h_commit = _commit, \ .h_export = _export, \ } +/* Handlers without commit priority are set to priority O */ +#define SETTINGS_STATIC_HANDLER_DEFINE(_hname, _tree, _get, _set, _commit, \ + _export) \ + SETTINGS_STATIC_HANDLER_DEFINE_WITH_CPRIO(_hname, _tree, _get, _set, \ + _commit, _export, 0) + /** * Initialization of settings and backend * @@ -224,7 +238,20 @@ struct settings_handler_static { int settings_subsys_init(void); /** - * Register a handler for settings items stored in RAM. + * Register a handler for settings items stored in RAM with + * commit priority. + * + * @param cf Structure containing registration info. + * @param cprio Commit priority (lower value is higher priority). + * + * @return 0 on success, non-zero on failure. + */ +int settings_register_with_cprio(struct settings_handler *cf, + int cprio); + +/** + * Register a handler for settings items stored in RAM with + * commit priority set to default. * * @param cf Structure containing registration info. * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell.h index d99baf00..9f7d18f7 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell.h @@ -159,6 +159,28 @@ typedef bool (*shell_device_filter_t)(const struct device *dev); const struct device *shell_device_filter(size_t idx, shell_device_filter_t filter); +/** + * @brief Get a @ref device reference from its @ref device.name field or label. + * + * This function iterates through the devices on the system. If a device with + * the given @p name field is found, and that device initialized successfully at + * boot time, this function returns a pointer to the device. + * + * If no device has the given @p name, this function returns `NULL`. + * + * This function also returns NULL when a device is found, but it failed to + * initialize successfully at boot time. (To troubleshoot this case, set a + * breakpoint on your device driver's initialization function.) + * + * @param name device name to search for. A null pointer, or a pointer to an + * empty string, will cause NULL to be returned. + * + * @return pointer to device structure with the given name; `NULL` if the device + * is not found or if the device with that name's initialization function + * failed. + */ +const struct device *shell_device_get_binding(const char *name); + /** * @brief Shell command handler prototype. * @@ -191,7 +213,7 @@ typedef int (*shell_dict_cmd_handler)(const struct shell *sh, size_t argc, char **argv, void *data); /* When entries are added to the memory section a padding is applied for - * native_posix_64 and x86_64 targets. Adding padding to allow handle data + * the posix architecture with 64bits builds and x86_64 targets. Adding padding to allow handle data * in the memory section as array. */ #if (defined(CONFIG_ARCH_POSIX) && defined(CONFIG_64BIT)) || defined(CONFIG_X86_64) @@ -912,6 +934,41 @@ struct shell { extern void z_shell_print_stream(const void *user_ctx, const char *data, size_t data_len); + +/** @brief Internal macro for defining a shell instance. + * + * As it does not create the default shell logging backend it allows to use + * custom approach for integrating logging with shell. + * + * @param[in] _name Instance name. + * @param[in] _prompt Shell default prompt string. + * @param[in] _transport_iface Pointer to the transport interface. + * @param[in] _out_buf Output buffer. + * @param[in] _log_backend Pointer to the log backend instance. + * @param[in] _shell_flag Shell output newline sequence. + */ +#define Z_SHELL_DEFINE(_name, _prompt, _transport_iface, _out_buf, _log_backend, _shell_flag) \ + static const struct shell _name; \ + static struct shell_ctx UTIL_CAT(_name, _ctx); \ + Z_SHELL_HISTORY_DEFINE(_name##_history, CONFIG_SHELL_HISTORY_BUFFER); \ + Z_SHELL_FPRINTF_DEFINE(_name##_fprintf, &_name, _out_buf, CONFIG_SHELL_PRINTF_BUFF_SIZE, \ + true, z_shell_print_stream); \ + LOG_INSTANCE_REGISTER(shell, _name, CONFIG_SHELL_LOG_LEVEL); \ + Z_SHELL_STATS_DEFINE(_name); \ + static K_KERNEL_STACK_DEFINE(_name##_stack, CONFIG_SHELL_STACK_SIZE); \ + static struct k_thread _name##_thread; \ + static const STRUCT_SECTION_ITERABLE(shell, _name) = { \ + .default_prompt = _prompt, \ + .iface = _transport_iface, \ + .ctx = &UTIL_CAT(_name, _ctx), \ + .history = IS_ENABLED(CONFIG_SHELL_HISTORY) ? &_name##_history : NULL, \ + .shell_flag = _shell_flag, \ + .fprintf_ctx = &_name##_fprintf, \ + .stats = Z_SHELL_STATS_PTR(_name), \ + .log_backend = _log_backend, \ + LOG_INSTANCE_PTR_INIT(log, shell, _name).name = \ + STRINGIFY(_name), .thread = &_name##_thread, .stack = _name##_stack} + /** * @brief Macro for defining a shell instance. * @@ -925,37 +982,12 @@ extern void z_shell_print_stream(const void *user_ctx, const char *data, * message is dropped. * @param[in] _shell_flag Shell output newline sequence. */ -#define SHELL_DEFINE(_name, _prompt, _transport_iface, \ - _log_queue_size, _log_timeout, _shell_flag) \ - static const struct shell _name; \ - static struct shell_ctx UTIL_CAT(_name, _ctx); \ - static uint8_t _name##_out_buffer[CONFIG_SHELL_PRINTF_BUFF_SIZE]; \ - Z_SHELL_LOG_BACKEND_DEFINE(_name, _name##_out_buffer, \ - CONFIG_SHELL_PRINTF_BUFF_SIZE, \ - _log_queue_size, _log_timeout); \ - Z_SHELL_HISTORY_DEFINE(_name##_history, CONFIG_SHELL_HISTORY_BUFFER); \ - Z_SHELL_FPRINTF_DEFINE(_name##_fprintf, &_name, _name##_out_buffer, \ - CONFIG_SHELL_PRINTF_BUFF_SIZE, \ - true, z_shell_print_stream); \ - LOG_INSTANCE_REGISTER(shell, _name, CONFIG_SHELL_LOG_LEVEL); \ - Z_SHELL_STATS_DEFINE(_name); \ - static K_KERNEL_STACK_DEFINE(_name##_stack, CONFIG_SHELL_STACK_SIZE); \ - static struct k_thread _name##_thread; \ - static const STRUCT_SECTION_ITERABLE(shell, _name) = { \ - .default_prompt = _prompt, \ - .iface = _transport_iface, \ - .ctx = &UTIL_CAT(_name, _ctx), \ - .history = IS_ENABLED(CONFIG_SHELL_HISTORY) ? \ - &_name##_history : NULL, \ - .shell_flag = _shell_flag, \ - .fprintf_ctx = &_name##_fprintf, \ - .stats = Z_SHELL_STATS_PTR(_name), \ - .log_backend = Z_SHELL_LOG_BACKEND_PTR(_name), \ - LOG_INSTANCE_PTR_INIT(log, shell, _name) \ - .name = STRINGIFY(_name), \ - .thread = &_name##_thread, \ - .stack = _name##_stack \ - } +#define SHELL_DEFINE(_name, _prompt, _transport_iface, _log_queue_size, _log_timeout, _shell_flag) \ + static uint8_t _name##_out_buffer[CONFIG_SHELL_PRINTF_BUFF_SIZE]; \ + Z_SHELL_LOG_BACKEND_DEFINE(_name, _name##_out_buffer, CONFIG_SHELL_PRINTF_BUFF_SIZE, \ + _log_queue_size, _log_timeout); \ + Z_SHELL_DEFINE(_name, _prompt, _transport_iface, _name##_out_buffer, \ + Z_SHELL_LOG_BACKEND_PTR(_name), _shell_flag) /** * @brief Function for initializing a transport layer and internal shell state. @@ -1093,7 +1125,8 @@ void shell_hexdump(const struct shell *sh, const uint8_t *data, size_t len); * @param[in] ... List of parameters to print. */ #define shell_info(_sh, _ft, ...) \ - shell_fprintf(_sh, SHELL_INFO, _ft "\n", ##__VA_ARGS__) + shell_fprintf_info(_sh, _ft "\n", ##__VA_ARGS__) +void __printf_like(2, 3) shell_fprintf_info(const struct shell *sh, const char *fmt, ...); /** * @brief Print normal message to the shell. @@ -1105,7 +1138,8 @@ void shell_hexdump(const struct shell *sh, const uint8_t *data, size_t len); * @param[in] ... List of parameters to print. */ #define shell_print(_sh, _ft, ...) \ - shell_fprintf(_sh, SHELL_NORMAL, _ft "\n", ##__VA_ARGS__) + shell_fprintf_normal(_sh, _ft "\n", ##__VA_ARGS__) +void __printf_like(2, 3) shell_fprintf_normal(const struct shell *sh, const char *fmt, ...); /** * @brief Print warning message to the shell. @@ -1117,7 +1151,8 @@ void shell_hexdump(const struct shell *sh, const uint8_t *data, size_t len); * @param[in] ... List of parameters to print. */ #define shell_warn(_sh, _ft, ...) \ - shell_fprintf(_sh, SHELL_WARNING, _ft "\n", ##__VA_ARGS__) + shell_fprintf_warn(_sh, _ft "\n", ##__VA_ARGS__) +void __printf_like(2, 3) shell_fprintf_warn(const struct shell *sh, const char *fmt, ...); /** * @brief Print error message to the shell. @@ -1129,7 +1164,8 @@ void shell_hexdump(const struct shell *sh, const uint8_t *data, size_t len); * @param[in] ... List of parameters to print. */ #define shell_error(_sh, _ft, ...) \ - shell_fprintf(_sh, SHELL_ERROR, _ft "\n", ##__VA_ARGS__) + shell_fprintf_error(_sh, _ft "\n", ##__VA_ARGS__) +void __printf_like(2, 3) shell_fprintf_error(const struct shell *sh, const char *fmt, ...); /** * @brief Process function, which should be executed when data is ready in the diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_backend.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_backend.h index ae8f8a5a..d0611f92 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_backend.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_backend.h @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef SHELL_BACKEND_H__ -#define SHELL_BACKEND_H__ +#ifndef ZEPHYR_INCLUDE_SHELL_BACKEND_H_ +#define ZEPHYR_INCLUDE_SHELL_BACKEND_H_ #include #include @@ -58,4 +58,4 @@ const struct shell *shell_backend_get_by_name(const char *backend_name); } #endif -#endif /* SHELL_BACKEND_H__ */ +#endif /* ZEPHYR_INCLUDE_SHELL_BACKEND_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_dummy.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_dummy.h index 43dc4a86..bd520f4a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_dummy.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_dummy.h @@ -6,8 +6,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef SHELL_DUMMY_H__ -#define SHELL_DUMMY_H__ +#ifndef ZEPHYR_INCLUDE_SHELL_DUMMY_H_ +#define ZEPHYR_INCLUDE_SHELL_DUMMY_H_ #include @@ -68,4 +68,4 @@ void shell_backend_dummy_clear_output(const struct shell *sh); } #endif -#endif /* SHELL_DUMMY_H__ */ +#endif /* ZEPHYR_INCLUDE_SHELL_DUMMY_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_fprintf.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_fprintf.h index 979e88eb..aaac65ea 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_fprintf.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_fprintf.h @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef SHELL_FPRINTF_H__ -#define SHELL_FPRINTF_H__ +#ifndef ZEPHYR_INCLUDE_SHELL_FPRINTF_H_ +#define ZEPHYR_INCLUDE_SHELL_FPRINTF_H_ #include #include @@ -80,4 +80,4 @@ void z_shell_fprintf_buffer_flush(const struct shell_fprintf *sh_fprintf); } #endif -#endif /* SHELL_FPRINTF_H__ */ +#endif /* ZEPHYR_INCLUDE_SHELL_FPRINTF_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_history.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_history.h index 91483357..1ddf69b7 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_history.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_history.h @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef SHELL_HISTORY_H__ -#define SHELL_HISTORY_H__ +#ifndef ZEPHYR_INCLUDE_SHELL_HISTORY_H_ +#define ZEPHYR_INCLUDE_SHELL_HISTORY_H_ #include #include @@ -111,4 +111,4 @@ static inline bool z_shell_history_active(struct shell_history *history) } #endif -#endif /* SHELL_HISTORY_H__ */ +#endif /* ZEPHYR_INCLUDE_SHELL_HISTORY_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_log_backend.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_log_backend.h index 620709ff..327e82d8 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_log_backend.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_log_backend.h @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef SHELL_LOG_BACKEND_H__ -#define SHELL_LOG_BACKEND_H__ +#ifndef ZEPHYR_INCLUDE_SHELL_LOG_BACKEND_H_ +#define ZEPHYR_INCLUDE_SHELL_LOG_BACKEND_H_ #include #include @@ -124,4 +124,4 @@ bool z_shell_log_backend_process(const struct shell_log_backend *backend); } #endif -#endif /* SHELL_LOG_BACKEND_H__ */ +#endif /* ZEPHYR_INCLUDE_SHELL_LOG_BACKEND_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_mqtt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_mqtt.h index 72e597e6..92ce6987 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_mqtt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_mqtt.h @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef SHELL_MQTT_H__ -#define SHELL_MQTT_H__ +#ifndef ZEPHYR_INCLUDE_SHELL_MQTT_H_ +#define ZEPHYR_INCLUDE_SHELL_MQTT_H_ #include #include @@ -137,4 +137,4 @@ bool shell_mqtt_get_devid(char *id, int id_max_len); } #endif -#endif /* SHELL_MQTT_H__ */ +#endif /* ZEPHYR_INCLUDE_SHELL_MQTT_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_rpmsg.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_rpmsg.h index 7a79c74c..726cab47 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_rpmsg.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_rpmsg.h @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef SHELL_RPMSG_H__ -#define SHELL_RPMSG_H__ +#ifndef ZEPHYR_INCLUDE_SHELL_RPMSG_H_ +#define ZEPHYR_INCLUDE_SHELL_RPMSG_H_ #include #include @@ -84,4 +84,4 @@ const struct shell *shell_backend_rpmsg_get_ptr(void); } #endif -#endif /* SHELL_RPMSG_H__ */ +#endif /* ZEPHYR_INCLUDE_SHELL_RPMSG_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_rtt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_rtt.h index ab1e60d9..930e5fff 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_rtt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_rtt.h @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef SHELL_RTT_H__ -#define SHELL_RTT_H__ +#ifndef ZEPHYR_INCLUDE_SHELL_RTT_H_ +#define ZEPHYR_INCLUDE_SHELL_RTT_H_ #include @@ -41,4 +41,4 @@ const struct shell *shell_backend_rtt_get_ptr(void); } #endif -#endif /* SHELL_RTT_H__ */ +#endif /* ZEPHYR_INCLUDE_SHELL_RTT_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_string_conv.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_string_conv.h index 3b072426..0fed0b23 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_string_conv.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_string_conv.h @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef SHELL_STRING_CONV_H__ -#define SHELL_STRING_CONV_H__ +#ifndef ZEPHYR_INCLUDE_SHELL_STRING_CONV_H_ +#define ZEPHYR_INCLUDE_SHELL_STRING_CONV_H_ #include #include @@ -86,4 +86,4 @@ bool shell_strtobool(const char *str, int base, int *err); } #endif -#endif /* SHELL_STRING_CONV_H__ */ +#endif /* ZEPHYR_INCLUDE_SHELL_STRING_CONV_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_telnet.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_telnet.h index 6501a63f..a3ed366e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_telnet.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_telnet.h @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef SHELL_TELNET_H__ -#define SHELL_TELNET_H__ +#ifndef ZEPHYR_INCLUDE_SHELL_TELNET_H_ +#define ZEPHYR_INCLUDE_SHELL_TELNET_H_ #include #include @@ -85,4 +85,4 @@ const struct shell *shell_backend_telnet_get_ptr(void); } #endif -#endif /* SHELL_TELNET_H__ */ +#endif /* ZEPHYR_INCLUDE_SHELL_TELNET_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_types.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_types.h index a45f0c17..609c450c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_types.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_types.h @@ -3,8 +3,8 @@ * * SPDX-License-Identifier: Apache-2.0 */ -#ifndef SHELL_TYPES_H__ -#define SHELL_TYPES_H__ +#ifndef ZEPHYR_INCLUDE_SHELL_TYPES_H_ +#define ZEPHYR_INCLUDE_SHELL_TYPES_H_ #ifdef __cplusplus @@ -51,4 +51,4 @@ struct shell_vt100_ctx { } #endif -#endif /* SHELL_TYPES_H__ */ +#endif /* ZEPHYR_INCLUDE_SHELL_TYPES_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_uart.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_uart.h index e424a185..d1a8a4df 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_uart.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_uart.h @@ -4,8 +4,8 @@ * SPDX-License-Identifier: Apache-2.0 */ -#ifndef SHELL_UART_H__ -#define SHELL_UART_H__ +#ifndef ZEPHYR_INCLUDE_SHELL_UART_H_ +#define ZEPHYR_INCLUDE_SHELL_UART_H_ #include #include @@ -115,4 +115,4 @@ struct smp_shell_data *shell_uart_smp_shell_data_get_ptr(void); } #endif -#endif /* SHELL_UART_H__ */ +#endif /* ZEPHYR_INCLUDE_SHELL_UART_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_websocket.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_websocket.h new file mode 100644 index 00000000..12bd4972 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/shell/shell_websocket.h @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2024 Nordic Semiconductor ASA + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_SHELL_WEBSOCKET_H_ +#define ZEPHYR_INCLUDE_SHELL_WEBSOCKET_H_ + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SHELL_WEBSOCKET_SERVICE_COUNT CONFIG_SHELL_WEBSOCKET_BACKEND_COUNT + +/** Line buffer structure. */ +struct shell_websocket_line_buf { + /** Line buffer. */ + char buf[CONFIG_SHELL_WEBSOCKET_LINE_BUF_SIZE]; + + /** Current line length. */ + uint16_t len; +}; + +/** WEBSOCKET-based shell transport. */ +struct shell_websocket { + /** Handler function registered by shell. */ + shell_transport_handler_t shell_handler; + + /** Context registered by shell. */ + void *shell_context; + + /** Buffer for outgoing line. */ + struct shell_websocket_line_buf line_out; + + /** Array for sockets used by the websocket service. */ + struct zsock_pollfd fds[1]; + + /** Input buffer. */ + uint8_t rx_buf[CONFIG_SHELL_CMD_BUFF_SIZE]; + + /** Number of data bytes within the input buffer. */ + size_t rx_len; + + /** Mutex protecting the input buffer access. */ + struct k_mutex rx_lock; + + /** The delayed work is used to send non-lf terminated output that has + * been around for "too long". This will prove to be useful + * to send the shell prompt for instance. + */ + struct k_work_delayable send_work; + struct k_work_sync work_sync; + + /** If set, no output is sent to the WEBSOCKET client. */ + bool output_lock; +}; + +extern const struct shell_transport_api shell_websocket_transport_api; +extern int shell_websocket_setup(int ws_socket, void *user_data); +extern int shell_websocket_enable(const struct shell *sh); + +#define GET_WS_NAME(_service) ws_ctx_##_service +#define GET_WS_SHELL_NAME(_name) shell_websocket_##_name +#define GET_WS_TRANSPORT_NAME(_service) transport_shell_ws_##_service +#define GET_WS_DETAIL_NAME(_service) ws_res_detail_##_service + +#define SHELL_WEBSOCKET_DEFINE(_service) \ + static struct shell_websocket GET_WS_NAME(_service); \ + static struct shell_transport GET_WS_TRANSPORT_NAME(_service) = { \ + .api = &shell_websocket_transport_api, \ + .ctx = &GET_WS_NAME(_service), \ + } + +#define SHELL_WS_PORT_NAME(_service) http_service_##_service +#define SHELL_WS_BUF_NAME(_service) ws_recv_buffer_##_service +#define SHELL_WS_TEMP_RECV_BUF_SIZE 256 + +#define DEFINE_WEBSOCKET_HTTP_SERVICE(_service) \ + uint8_t SHELL_WS_BUF_NAME(_service)[SHELL_WS_TEMP_RECV_BUF_SIZE]; \ + struct http_resource_detail_websocket \ + GET_WS_DETAIL_NAME(_service) = { \ + .common = { \ + .type = HTTP_RESOURCE_TYPE_WEBSOCKET, \ + \ + /* We need HTTP/1.1 GET method for upgrading */ \ + .bitmask_of_supported_http_methods = BIT(HTTP_GET), \ + }, \ + .cb = shell_websocket_setup, \ + .data_buffer = SHELL_WS_BUF_NAME(_service), \ + .data_buffer_len = sizeof(SHELL_WS_BUF_NAME(_service)), \ + .user_data = &GET_WS_NAME(_service), \ + }; \ + HTTP_RESOURCE_DEFINE(ws_resource_##_service, _service, \ + "/" CONFIG_SHELL_WEBSOCKET_ENDPOINT_URL, \ + &GET_WS_DETAIL_NAME(_service)) + +#define DEFINE_WEBSOCKET_SERVICE(_service) \ + SHELL_WEBSOCKET_DEFINE(_service); \ + SHELL_DEFINE(shell_websocket_##_service, \ + CONFIG_SHELL_WEBSOCKET_PROMPT, \ + &GET_WS_TRANSPORT_NAME(_service), \ + CONFIG_SHELL_WEBSOCKET_LOG_MESSAGE_QUEUE_SIZE, \ + CONFIG_SHELL_WEBSOCKET_LOG_MESSAGE_QUEUE_TIMEOUT, \ + SHELL_FLAG_OLF_CRLF); \ + DEFINE_WEBSOCKET_HTTP_SERVICE(_service) + +#if defined(CONFIG_NET_SOCKETS_SOCKOPT_TLS) +/* Use a secure connection only for Websocket. */ +#define WEBSOCKET_CONSOLE_DEFINE(_service, _sec_tag_list, _sec_tag_list_size) \ + static uint16_t SHELL_WS_PORT_NAME(_service) = \ + CONFIG_SHELL_WEBSOCKET_PORT; \ + HTTPS_SERVICE_DEFINE(_service, \ + CONFIG_SHELL_WEBSOCKET_IP_ADDR, \ + &SHELL_WS_PORT_NAME(_service), \ + SHELL_WEBSOCKET_SERVICE_COUNT, \ + SHELL_WEBSOCKET_SERVICE_COUNT, \ + NULL, \ + _sec_tag_list, \ + _sec_tag_list_size); \ + DEFINE_WEBSOCKET_SERVICE(_service); \ + + +#else /* CONFIG_NET_SOCKETS_SOCKOPT_TLS */ +/* TLS not possible so define only normal HTTP service */ +#define WEBSOCKET_CONSOLE_DEFINE(_service, _sec_tag_list, _sec_tag_list_size) \ + static uint16_t SHELL_WS_PORT_NAME(_service) = \ + CONFIG_SHELL_WEBSOCKET_PORT; \ + HTTP_SERVICE_DEFINE(_service, \ + CONFIG_SHELL_WEBSOCKET_IP_ADDR, \ + &SHELL_WS_PORT_NAME(_service), \ + SHELL_WEBSOCKET_SERVICE_COUNT, \ + SHELL_WEBSOCKET_SERVICE_COUNT, \ + NULL); \ + DEFINE_WEBSOCKET_SERVICE(_service) + +#endif /* CONFIG_NET_SOCKETS_SOCKOPT_TLS */ + +#define WEBSOCKET_CONSOLE_ENABLE(_service) \ + (void)shell_websocket_enable(&GET_WS_SHELL_NAME(_service)) + +#ifdef __cplusplus +} +#endif + +#endif /* ZEPHYR_INCLUDE_SHELL_WEBSOCKET_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/storage/flash_map.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/storage/flash_map.h index 937e2428..cdd9ae00 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/storage/flash_map.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/storage/flash_map.h @@ -45,11 +45,6 @@ extern "C" { #endif -/** Provided for compatibility with MCUboot */ -#define SOC_FLASH_0_ID 0 -/** Provided for compatibility with MCUboot */ -#define SPI_FLASH_0_ID 1 - /** * @brief Flash partition * @@ -138,6 +133,27 @@ int flash_area_open(uint8_t id, const struct flash_area **fa); */ void flash_area_close(const struct flash_area *fa); +/** + * @brief Verify that a device assigned to flash area is ready for use. + * + * Indicates whether the provided flash area has a device known to be + * in a state where it can be used with Flash Map API. + * + * This can be used with struct flash_area pointers captured from FIXED_PARTITION(). + * At minimum this means that the device has been successfully initialized. + * + * @param fa pointer to flash_area object to check. + * + * @retval true If the device is ready for use. + * @retval false If the device is not ready for use or if a NULL pointer is + * passed as flash area pointer or device pointer within flash area object + * is NULL. + */ +static ALWAYS_INLINE bool flash_area_device_is_ready(const struct flash_area *fa) +{ + return (fa != NULL && device_is_ready(fa->fa_dev)); +} + /** * @brief Read flash area data * @@ -237,6 +253,20 @@ uint32_t flash_area_align(const struct flash_area *fa); int flash_area_get_sectors(int fa_id, uint32_t *count, struct flash_sector *sectors); +/** + * Retrieve info about sectors within the area. + * + * @param[in] fa pointer to flash area object. + * @param[out] sectors buffer for sectors data + * @param[in,out] count On input Capacity of @p sectors, on output number of + * sectors retrieved. + * + * @return 0 on success, negative errno code on fail. Especially returns + * -ENOMEM if There are too many flash pages on the flash_area to fit in the + * array. + */ +int flash_area_sectors(const struct flash_area *fa, uint32_t *count, struct flash_sector *sectors); + /** * Flash map iteration callback * @@ -381,6 +411,32 @@ uint8_t flash_area_erased_val(const struct flash_area *fa); #define FIXED_PARTITION_NODE_DEVICE(node) \ DEVICE_DT_GET(DT_MTD_FROM_FIXED_PARTITION(node)) +/** + * Get pointer to flash_area object by partition label + * + * @param label DTS node label of a partition + * + * @return Pointer to flash_area type object representing partition + */ +#define FIXED_PARTITION(label) FIXED_PARTITION_1(DT_NODELABEL(label)) +#define FIXED_PARTITION_1(node) FIXED_PARTITION_0(DT_DEP_ORD(node)) +#define FIXED_PARTITION_0(ord) \ + ((const struct flash_area *)&DT_CAT(global_fixed_partition_ORD_, ord)) + +/** @cond INTERNAL_HIDDEN */ +#define DECLARE_PARTITION(node) DECLARE_PARTITION_0(DT_DEP_ORD(node)) +#define DECLARE_PARTITION_0(ord) \ + extern const struct flash_area DT_CAT(global_fixed_partition_ORD_, ord); +#define FOR_EACH_PARTITION_TABLE(table) DT_FOREACH_CHILD(table, DECLARE_PARTITION) + +/* Generate declarations */ +DT_FOREACH_STATUS_OKAY(fixed_partitions, FOR_EACH_PARTITION_TABLE) + +#undef DECLARE_PARTITION +#undef DECLARE_PARTITION_0 +#undef FOR_EACH_PARTITION_TABLE +/** @endcond */ + #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/storage/stream_flash.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/storage/stream_flash.h index bc871dba..b1d78af9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/storage/stream_flash.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/storage/stream_flash.h @@ -97,7 +97,7 @@ int stream_flash_init(struct stream_flash_ctx *ctx, const struct device *fdev, * * @return Number of payload bytes written to flash. */ -size_t stream_flash_bytes_written(struct stream_flash_ctx *ctx); +size_t stream_flash_bytes_written(const struct stream_flash_ctx *ctx); /** * @brief Process input buffers to be written to flash device in single blocks. @@ -149,7 +149,8 @@ int stream_flash_erase_page(struct stream_flash_ctx *ctx, off_t off); * @param settings_key key to use with the settings module for loading * the stream write progress * - * @return non-negative on success, negative errno code on fail + * @return non-negative on success, -ERANGE in case when @p off is out + * of area designated for stream or negative errno code on fail */ int stream_flash_progress_load(struct stream_flash_ctx *ctx, const char *settings_key); @@ -163,7 +164,7 @@ int stream_flash_progress_load(struct stream_flash_ctx *ctx, * * @return non-negative on success, negative errno code on fail */ -int stream_flash_progress_save(struct stream_flash_ctx *ctx, +int stream_flash_progress_save(const struct stream_flash_ctx *ctx, const char *settings_key); /** @@ -175,7 +176,7 @@ int stream_flash_progress_save(struct stream_flash_ctx *ctx, * * @return non-negative on success, negative errno code on fail */ -int stream_flash_progress_clear(struct stream_flash_ctx *ctx, +int stream_flash_progress_clear(const struct stream_flash_ctx *ctx, const char *settings_key); #ifdef __cplusplus diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/atomic.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/atomic.h index 86ba2cdf..078be968 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/atomic.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/atomic.h @@ -73,7 +73,7 @@ extern "C" { * @cond INTERNAL_HIDDEN */ -#define ATOMIC_BITS (sizeof(atomic_val_t) * 8) +#define ATOMIC_BITS (sizeof(atomic_val_t) * BITS_PER_BYTE) #define ATOMIC_MASK(bit) BIT((unsigned long)(bit) & (ATOMIC_BITS - 1U)) #define ATOMIC_ELEM(addr, bit) ((addr) + ((bit) / ATOMIC_BITS)) @@ -112,9 +112,9 @@ extern "C" { atomic_t name[ATOMIC_BITMAP_SIZE(num_bits)] /** - * @brief Atomically test a bit. + * @brief Atomically get and test a bit. * - * This routine tests whether bit number @a bit of @a target is set or not. + * Atomically get a value and then test whether bit number @a bit of @a target is set or not. * The target may be a single atomic variable or an array of them. * * @note @atomic_api @@ -132,7 +132,7 @@ static inline bool atomic_test_bit(const atomic_t *target, int bit) } /** - * @brief Atomically test and clear a bit. + * @brief Atomically clear a bit and test it. * * Atomically clear bit number @a bit of @a target and return its old value. * The target may be a single atomic variable or an array of them. @@ -155,7 +155,7 @@ static inline bool atomic_test_and_clear_bit(atomic_t *target, int bit) } /** - * @brief Atomically set a bit. + * @brief Atomically set a bit and test it. * * Atomically set bit number @a bit of @a target and return its old value. * The target may be a single atomic variable or an array of them. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/cbprintf.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/cbprintf.h index 6a160a62..2685448d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/cbprintf.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/cbprintf.h @@ -216,8 +216,6 @@ BUILD_ASSERT(Z_IS_POW2(CBPRINTF_PACKAGE_ALIGNMENT)); * are also checked and if determined to be read-only they are also copied. */ #define CBPRINTF_PACKAGE_CONVERT_RO_STR BIT(0) -/** @deprecated Use @ref CBPRINTF_PACKAGE_CONVERT_RO_STR instead. */ -#define CBPRINTF_PACKAGE_COPY_RO_STR CBPRINTF_PACKAGE_CONVERT_RO_STR __DEPRECATED_MACRO /** @brief Append read-write strings from source package to destination package. * @@ -230,8 +228,6 @@ BUILD_ASSERT(Z_IS_POW2(CBPRINTF_PACKAGE_ALIGNMENT)); * package if @ref CBPRINTF_PACKAGE_CONVERT_KEEP_RO_STR is set. */ #define CBPRINTF_PACKAGE_CONVERT_RW_STR BIT(1) -/** @deprecated Use @ref CBPRINTF_PACKAGE_CONVERT_RW_STR instead. */ -#define CBPRINTF_PACKAGE_COPY_RW_STR CBPRINTF_PACKAGE_CONVERT_RW_STR __DEPRECATED_MACRO /** @brief Keep read-only location indexes in the package. * @@ -239,8 +235,6 @@ BUILD_ASSERT(Z_IS_POW2(CBPRINTF_PACKAGE_ALIGNMENT)); * not set they are discarded. */ #define CBPRINTF_PACKAGE_CONVERT_KEEP_RO_STR BIT(2) -/** @deprecated Use @ref CBPRINTF_PACKAGE_CONVERT_KEEP_RO_STR instead. */ -#define CBPRINTF_PACKAGE_COPY_KEEP_RO_STR CBPRINTF_PACKAGE_CONVERT_KEEP_RO_STR __DEPRECATED_MACRO /** @brief Check format string if %p argument was treated as %s in the package. * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/crc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/crc.h index c16281b1..7a0c33cf 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/crc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/crc.h @@ -29,6 +29,7 @@ extern "C" { * computation. */ #define CRC8_CCITT_INITIAL_VALUE 0xFF +#define CRC8_ROHC_INITIAL_VALUE 0xFF /* Initial value expected to be used at the beginning of the OpenPGP CRC-24 computation. */ #define CRC24_PGP_INITIAL_VALUE 0x00B704CEU @@ -58,9 +59,10 @@ enum crc_type { CRC4, /**< Use @ref crc4 */ CRC4_TI, /**< Use @ref crc4_ti */ CRC7_BE, /**< Use @ref crc7_be */ - CRC8, /**< Use @ref crc8 */ + CRC8, /**< Use @ref crc8 */ CRC8_CCITT, /**< Use @ref crc8_ccitt */ - CRC16, /**< Use @ref crc16 */ + CRC8_ROHC, /**< Use @ref crc8_rohc */ + CRC16, /**< Use @ref crc16 */ CRC16_ANSI, /**< Use @ref crc16_ansi */ CRC16_CCITT, /**< Use @ref crc16_ccitt */ CRC16_ITU_T, /**< Use @ref crc16_itu_t */ @@ -135,7 +137,7 @@ uint16_t crc16_reflect(uint16_t poly, uint16_t seed, const uint8_t *src, size_t * @return The computed CRC8 value */ uint8_t crc8(const uint8_t *src, size_t len, uint8_t polynomial, uint8_t initial_value, - bool reversed); + bool reversed); /** * @brief Compute the checksum of a buffer with polynomial 0x1021, reflecting @@ -274,6 +276,20 @@ uint32_t crc32_c(uint32_t crc, const uint8_t *data, */ uint8_t crc8_ccitt(uint8_t initial_value, const void *buf, size_t len); +/** + * @brief Compute ROHC variant of CRC 8 + * + * ROHC (Robust Header Compression) variant of CRC 8. + * Uses 0x07 as the polynomial with reflection. + * + * @param initial_value Initial value for the CRC computation + * @param buf Input bytes for the computation + * @param len Length of the input in bytes + * + * @return The computed CRC8 value + */ +uint8_t crc8_rohc(uint8_t initial_value, const void *buf, size_t len); + /** * @brief Compute the CRC-7 checksum of a buffer. * @@ -322,7 +338,7 @@ uint8_t crc4_ti(uint8_t seed, const uint8_t *src, size_t len); * @return The computed CRC4 value */ uint8_t crc4(const uint8_t *src, size_t len, uint8_t polynomial, uint8_t initial_value, - bool reversed); + bool reversed); /** * @brief Generate an OpenPGP CRC-24 checksum as defined in RFC 4880 section 6.1. @@ -384,6 +400,8 @@ static inline uint32_t crc_by_type(enum crc_type type, const uint8_t *src, size_ return crc8(src, len, poly, seed, reflect); case CRC8_CCITT: return crc8_ccitt(seed, src, len); + case CRC8_ROHC: + return crc8_rohc(seed, src, len); case CRC16: if (reflect) { return crc16_reflect(poly, seed, src, len); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/errno_private.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/errno_private.h index 5adba7bf..c8965060 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/errno_private.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/errno_private.h @@ -8,6 +8,7 @@ #define ZEPHYR_INCLUDE_SYS_ERRNO_PRIVATE_H_ #include +#include /* For Z_THREAD_LOCAL */ #ifdef __cplusplus extern "C" { @@ -26,7 +27,7 @@ static inline int *z_errno(void) } #elif defined(CONFIG_ERRNO_IN_TLS) -extern __thread int z_errno_var; +extern Z_THREAD_LOCAL int z_errno_var; static inline int *z_errno(void) { diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/fdtable.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/fdtable.h index 785df8d4..3d0b7149 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/fdtable.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/fdtable.h @@ -7,9 +7,10 @@ #define ZEPHYR_INCLUDE_SYS_FDTABLE_H_ #include -#include +#include + /* FIXME: For native_posix ssize_t, off_t. */ -#include +#include #include #include @@ -27,10 +28,29 @@ #define ZVFS_MODE_IFLNK 0120000 #define ZVFS_MODE_IFSOCK 0140000 +#define ZVFS_POLLIN BIT(0) +#define ZVFS_POLLPRI BIT(1) +#define ZVFS_POLLOUT BIT(2) +#define ZVFS_POLLERR BIT(3) +#define ZVFS_POLLHUP BIT(4) +#define ZVFS_POLLNVAL BIT(5) + #ifdef __cplusplus extern "C" { #endif +/* FIXME: use k_off_t and k_ssize_t to avoid the POSIX->Zephyr->POSIX dependency cycle */ +#ifdef CONFIG_NEWLIB_LIBC +#ifndef _OFF_T_DECLARED +typedef __off_t off_t; +#define _OFF_T_DECLARED +#endif +#ifndef _SSIZE_T_DECLARED +typedef _ssize_t ssize_t; +#define _SSIZE_T_DECLARED +#endif +#endif + /** * File descriptor virtual method table. * Currently all operations beyond read/write/close go thru ioctl method. @@ -44,7 +64,10 @@ struct fd_op_vtable { ssize_t (*write)(void *obj, const void *buf, size_t sz); ssize_t (*write_offs)(void *obj, const void *buf, size_t sz, size_t offset); }; - int (*close)(void *obj); + union { + int (*close)(void *obj); + int (*close2)(void *obj, int fd); + }; int (*ioctl)(void *obj, unsigned int request, va_list args); }; @@ -192,6 +215,31 @@ static inline int zvfs_fdtable_call_ioctl(const struct fd_op_vtable *vtable, voi return res; } +struct zvfs_pollfd { + int fd; + short events; + short revents; +}; + +__syscall int zvfs_poll(struct zvfs_pollfd *fds, int nfds, int poll_timeout); + +struct zvfs_fd_set { + uint32_t bitset[(CONFIG_ZVFS_OPEN_MAX + 31) / 32]; +}; + +/** @brief Number of file descriptors which can be added @ref zvfs_fd_set */ +#define ZVFS_FD_SETSIZE (sizeof(((struct zvfs_fd_set *)0)->bitset) * 8) + +void ZVFS_FD_CLR(int fd, struct zvfs_fd_set *fdset); +int ZVFS_FD_ISSET(int fd, struct zvfs_fd_set *fdset); +void ZVFS_FD_SET(int fd, struct zvfs_fd_set *fdset); +void ZVFS_FD_ZERO(struct zvfs_fd_set *fdset); + +__syscall int zvfs_select(int nfds, struct zvfs_fd_set *ZRESTRICT readfds, + struct zvfs_fd_set *ZRESTRICT writefds, + struct zvfs_fd_set *ZRESTRICT errorfds, + const struct timespec *ZRESTRICT timeout, const void *ZRESTRICT sigmask); + /** * Request codes for fd_op_vtable.ioctl(). * @@ -221,4 +269,6 @@ enum { } #endif +#include + #endif /* ZEPHYR_INCLUDE_SYS_FDTABLE_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/libc-hooks.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/libc-hooks.h index e737fc68..1b420674 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/libc-hooks.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/libc-hooks.h @@ -44,6 +44,8 @@ __syscall size_t zephyr_fwrite(const void *ZRESTRICT ptr, size_t size, #endif /* CONFIG_NEWLIB_LIBC */ +void __stdout_hook_install(int (*hook)(int)); + #ifdef CONFIG_USERSPACE #ifdef CONFIG_COMMON_LIBC_MALLOC @@ -56,7 +58,7 @@ __syscall size_t zephyr_fwrite(const void *ZRESTRICT ptr, size_t size, #define Z_MALLOC_PARTITION_EXISTS 1 #endif -#elif defined(CONFIG_NEWLIB_LIBC) +#elif defined(CONFIG_NEWLIB_LIBC) && !defined(CONFIG_NEWLIB_LIBC_CUSTOM_SBRK) /* If we are using newlib, the heap arena is in one of two areas: * - If we have an MPU that requires power of two alignment, the heap bounds * must be specified in Kconfig via CONFIG_NEWLIB_LIBC_ALIGNED_HEAP_SIZE. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/multi_heap.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/multi_heap.h index af970cea..25e61e7e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/multi_heap.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/multi_heap.h @@ -168,6 +168,32 @@ const struct sys_multi_heap_rec *sys_multi_heap_get_heap(const struct sys_multi_ */ void sys_multi_heap_free(struct sys_multi_heap *mheap, void *block); +/** @brief Expand the size of an existing allocation on the multi heap + * + * Returns a pointer to a new memory region with the same contents, + * but a different allocated size. If the new allocation can be + * expanded in place, the pointer returned will be identical. + * Otherwise the data will be copies to a new block and the old one + * will be freed as per sys_heap_free(). If the specified size is + * smaller than the original, the block will be truncated in place and + * the remaining memory returned to the heap. If the allocation of a + * new block fails, then NULL will be returned and the old block will + * not be freed or modified. If a new allocation is needed, the choice + * for the heap used will be bases on the cfg parameter (same as in sys_multi_heap_aligned_alloc). + * + * @param mheap Multi heap pointer + * @param cfg Opaque configuration parameter, as for sys_multi_heap_fn_t + * @param ptr Original pointer returned from a previous allocation + * @param align Alignment in bytes, must be a power of two + * @param bytes Number of bytes requested for the new block + * @return Pointer to memory the caller can now use, or NULL + */ +void *sys_multi_heap_aligned_realloc(struct sys_multi_heap *mheap, void *cfg, + void *ptr, size_t align, size_t bytes); + +#define sys_multi_heap_realloc(mheap, cfg, ptr, bytes) \ + sys_multi_heap_aligned_realloc(mheap, cfg, ptr, 0, bytes) + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/poweroff.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/poweroff.h index b4ecabcf..195e4eaf 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/poweroff.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/poweroff.h @@ -29,8 +29,6 @@ extern "C" { */ FUNC_NORETURN void z_sys_poweroff(void); -/** @} */ - /** @endcond */ /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/printk-hooks.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/printk-hooks.h new file mode 100644 index 00000000..ef59469e --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/printk-hooks.h @@ -0,0 +1,38 @@ +/* + * Copyright 2024 Google LLC + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_SYS_PRINTK_HOOKS_H_ +#define ZEPHYR_INCLUDE_SYS_PRINTK_HOOKS_H_ + +/** + * @brief printk function handler + * + * @param c Character to output + * + * @returns The character passed as input. + */ +typedef int (*printk_hook_fn_t)(int c); + +/** + * @brief Install the character output routine for printk + * + * To be called by the platform's console driver at init time. Installs a + * routine that outputs one ASCII character at a time. + * @param fn putc routine to install + */ +void __printk_hook_install(printk_hook_fn_t fn); + +/** + * @brief Get the current character output routine for printk + * + * To be called by any console driver that would like to save + * current hook - if any - for later re-installation. + * + * @return a function pointer or NULL if no hook is set + */ +printk_hook_fn_t __printk_get_hook(void); + +#endif /* ZEPHYR_INCLUDE_SYS_PRINTK_HOOKS_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/rb.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/rb.h index 66003ef1..2ce368a9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/rb.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/rb.h @@ -66,8 +66,8 @@ struct rbnode { * packed binary tree, plus root... Works out to 59 entries for 32 * bit pointers and 121 at 64 bits. */ -#define Z_TBITS(t) ((sizeof(t)) < 8 ? 2 : 3) -#define Z_PBITS(t) (8 * sizeof(t)) +#define Z_TBITS(t) ((sizeof(t)) < sizeof(uint64_t) ? 2 : 3) +#define Z_PBITS(t) (BITS_PER_BYTE * sizeof(t)) #define Z_MAX_RBTREE_DEPTH (2 * (Z_PBITS(int *) - Z_TBITS(int *) - 1) + 1) /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/ring_buffer.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/ring_buffer.h index bd2cd5ef..6bec33e9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/ring_buffer.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/ring_buffer.h @@ -174,9 +174,6 @@ static inline void ring_buf_init(struct ring_buf *buf, * Each data item is an array of 32-bit words (from zero to 1020 bytes in * length), coupled with a 16-bit type identifier and an 8-bit integer value. * - * Each data item is an array of 32-bit words (from zero to 1020 bytes in - * length), coupled with a 16-bit type identifier and an 8-bit integer value. - * * @param buf Address of ring buffer. * @param size Ring buffer size (in 32-bit words) * @param data Ring buffer data area (uint32_t data[size]). diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/sem.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/sem.h index d4e93df4..73e4d873 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/sem.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/sem.h @@ -23,6 +23,7 @@ #include #include #include +#include #ifdef __cplusplus extern "C" { @@ -138,6 +139,82 @@ int sys_sem_take(struct sys_sem *sem, k_timeout_t timeout); */ unsigned int sys_sem_count_get(struct sys_sem *sem); +/** + * @cond INTERNAL_HIDDEN + */ + +#if defined(__GNUC__) +static ALWAYS_INLINE void z_sys_sem_lock_onexit(__maybe_unused int *rc) +{ + __ASSERT(*rc == 1, "SYS_SEM_LOCK exited with goto, break or return, " + "use SYS_SEM_LOCK_BREAK instead."); +} +#define SYS_SEM_LOCK_ONEXIT __attribute__((__cleanup__(z_sys_sem_lock_onexit))) +#else +#define SYS_SEM_LOCK_ONEXIT +#endif + +/** + * INTERNAL_HIDDEN @endcond + */ + +/** + * @brief Leaves a code block guarded with @ref SYS_SEM_LOCK after releasing the + * lock. + * + * See @ref SYS_SEM_LOCK for details. + */ +#define SYS_SEM_LOCK_BREAK continue + +/** + * @brief Guards a code block with the given sys_sem, automatically acquiring + * the semaphore before executing the code block. The semaphore will be + * released either when reaching the end of the code block or when leaving the + * block with @ref SYS_SEM_LOCK_BREAK. + * + * @details Example usage: + * + * @code{.c} + * SYS_SEM_LOCK(&sem) { + * + * ...execute statements with the semaphore held... + * + * if (some_condition) { + * ...release the lock and leave the guarded section prematurely: + * SYS_SEM_LOCK_BREAK; + * } + * + * ...execute statements with the lock held... + * + * } + * @endcode + * + * Behind the scenes this pattern expands to a for-loop whose body is executed + * exactly once: + * + * @code{.c} + * for (sys_sem_take(&sem, K_FOREVER); ...; sys_sem_give(&sem)) { + * ... + * } + * @endcode + * + * @warning The code block must execute to its end or be left by calling + * @ref SYS_SEM_LOCK_BREAK. Otherwise, e.g. if exiting the block with a break, + * goto or return statement, the semaphore will not be released on exit. + * + * @param sem Semaphore (@ref sys_sem) used to guard the enclosed code block. + */ +#define SYS_SEM_LOCK(sem) \ + for (int __rc SYS_SEM_LOCK_ONEXIT = sys_sem_take((sem), K_FOREVER); ({ \ + __ASSERT(__rc >= 0, "Failed to take sem: %d", __rc); \ + __rc == 0; \ + }); \ + ({ \ + __rc = sys_sem_give((sem)); \ + __ASSERT(__rc == 0, "Failed to give sem: %d", __rc); \ + }), \ + __rc = 1) + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/sys_heap.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/sys_heap.h index a6a868b8..f01bae18 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/sys_heap.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/sys_heap.h @@ -10,6 +10,7 @@ #include #include #include +#include #ifdef __cplusplus extern "C" { @@ -209,7 +210,15 @@ size_t sys_heap_usable_size(struct sys_heap *heap, void *mem); * @param heap Heap to validate * @return true, if the heap is valid, otherwise false */ +#ifdef CONFIG_SYS_HEAP_VALIDATE bool sys_heap_validate(struct sys_heap *heap); +#else +static inline bool sys_heap_validate(struct sys_heap *heap) +{ + ARG_UNUSED(heap); + return true; +} +#endif /** @brief sys_heap stress test rig * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/timeutil.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/timeutil.h index 0f475a72..333ff76a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/timeutil.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/timeutil.h @@ -37,6 +37,9 @@ extern "C" { * @{ */ +/* Base Year value use in calculations in "timeutil_timegm64" API */ +#define TIME_UTILS_BASE_YEAR 1900 + /** * @brief Convert broken-down time to a POSIX epoch offset in seconds. * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util.h index 95cf9c6d..6773490c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util.h @@ -30,7 +30,7 @@ #include /** @brief Number of bits that make up a type */ -#define NUM_BITS(t) (sizeof(t) * 8) +#define NUM_BITS(t) (sizeof(t) * BITS_PER_BYTE) #ifdef __cplusplus extern "C" { @@ -57,6 +57,15 @@ extern "C" { # error Missing required predefined macros for BITS_PER_LONG calculation #endif +/** Number of bits in a byte. */ +#define BITS_PER_BYTE (__CHAR_BIT__) + +/** Number of bits in a nibble. */ +#define BITS_PER_NIBBLE (__CHAR_BIT__ / 2) + +/** Number of nibbles in a byte. */ +#define NIBBLES_PER_BYTE (BITS_PER_BYTE / BITS_PER_NIBBLE) + /** Number of bits in a long int. */ #define BITS_PER_LONG (__CHAR_BIT__ * __SIZEOF_LONG__) @@ -77,22 +86,6 @@ extern "C" { #define GENMASK64(h, l) \ (((~0ULL) - (1ULL << (l)) + 1) & (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h)))) -/** @brief Extract the Least Significant Bit from @p value. */ -#define LSB_GET(value) ((value) & -(value)) - -/** - * @brief Extract a bitfield element from @p value corresponding to - * the field mask @p mask. - */ -#define FIELD_GET(mask, value) (((value) & (mask)) / LSB_GET(mask)) - -/** - * @brief Prepare a bitfield element using @p value with @p mask representing - * its field position and width. The result should be combined - * with other fields using a logical OR. - */ -#define FIELD_PREP(mask, value) (((value) * LSB_GET(mask)) & (mask)) - /** @brief 0 if @p cond is true-ish; causes a compile error otherwise. */ #define ZERO_OR_COMPILE_ERROR(cond) ((int) sizeof(char[1 - 2 * !(cond)]) - 1) @@ -129,6 +122,29 @@ extern "C" { #endif /* __cplusplus */ +/** + * @brief Declare a flexible array member. + * + * This macro declares a flexible array member in a struct. The member + * is named @p name and has type @p type. + * + * Since C99, flexible arrays are part of the C standard, but for historical + * reasons many places still use an older GNU extension that is declare + * zero length arrays. + * + * Although zero length arrays are flexible arrays, we can't blindly + * replace [0] with [] because of some syntax limitations. This macro + * workaround these limitations. + * + * It is specially useful for cases where flexible arrays are + * used in unions or are not the last element in the struct. + */ +#define FLEXIBLE_ARRAY_DECLARE(type, name) \ + struct { \ + struct { } __unused_##name; \ + type name[]; \ + } + /** * @brief Whether @p ptr is an element of @p array * @@ -350,16 +366,10 @@ extern "C" { * * @return The result of @p n / @p d, rounded to the nearest integer. */ -#define DIV_ROUND_CLOSEST(n, d) \ - ((((n) < 0) ^ ((d) < 0)) ? ((n) - ((d) / 2)) / (d) : \ - ((n) + ((d) / 2)) / (d)) - -/** - * @brief Ceiling function applied to @p numerator / @p divider as a fraction. - * @deprecated Use DIV_ROUND_UP() instead. - */ -#define ceiling_fraction(numerator, divider) __DEPRECATED_MACRO \ - DIV_ROUND_UP(numerator, divider) +#define DIV_ROUND_CLOSEST(n, d) \ + (((((__typeof__(n))-1) < 0) && (((__typeof__(d))-1) < 0) && ((n) < 0) ^ ((d) < 0)) \ + ? ((n) - ((d) / 2)) / (d) \ + : ((n) + ((d) / 2)) / (d)) #ifndef MAX /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util_internal.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util_internal.h index 5b57d2f7..8ec41f6c 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util_internal.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util_internal.h @@ -50,7 +50,7 @@ #define Z_IS_ENABLED3(ignore_this, val, ...) val /* Implementation of IS_EQ(). Returns 1 if _0 and _1 are the same integer from - * 0 to 4095, 0 otherwise. + * 0 to 4096, 0 otherwise. */ #define Z_IS_EQ(_0, _1) Z_HAS_COMMA(Z_CAT4(Z_IS_, _0, _EQ_, _1)()) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util_internal_is_eq.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util_internal_is_eq.h index 0734cf35..11657c6a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util_internal_is_eq.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util_internal_is_eq.h @@ -13,4102 +13,16393 @@ #ifndef ZEPHYR_INCLUDE_SYS_UTIL_INTERNAL_IS_EQ_H_ #define ZEPHYR_INCLUDE_SYS_UTIL_INTERNAL_IS_EQ_H_ -#define Z_IS_0_EQ_0(...) \, -#define Z_IS_1_EQ_1(...) \, -#define Z_IS_2_EQ_2(...) \, -#define Z_IS_3_EQ_3(...) \, -#define Z_IS_4_EQ_4(...) \, -#define Z_IS_5_EQ_5(...) \, -#define Z_IS_6_EQ_6(...) \, -#define Z_IS_7_EQ_7(...) \, -#define Z_IS_8_EQ_8(...) \, -#define Z_IS_9_EQ_9(...) \, -#define Z_IS_10_EQ_10(...) \, -#define Z_IS_11_EQ_11(...) \, -#define Z_IS_12_EQ_12(...) \, -#define Z_IS_13_EQ_13(...) \, -#define Z_IS_14_EQ_14(...) \, -#define Z_IS_15_EQ_15(...) \, -#define Z_IS_16_EQ_16(...) \, -#define Z_IS_17_EQ_17(...) \, -#define Z_IS_18_EQ_18(...) \, -#define Z_IS_19_EQ_19(...) \, -#define Z_IS_20_EQ_20(...) \, -#define Z_IS_21_EQ_21(...) \, -#define Z_IS_22_EQ_22(...) \, -#define Z_IS_23_EQ_23(...) \, -#define Z_IS_24_EQ_24(...) \, -#define Z_IS_25_EQ_25(...) \, -#define Z_IS_26_EQ_26(...) \, -#define Z_IS_27_EQ_27(...) \, -#define Z_IS_28_EQ_28(...) \, -#define Z_IS_29_EQ_29(...) \, -#define Z_IS_30_EQ_30(...) \, -#define Z_IS_31_EQ_31(...) \, -#define Z_IS_32_EQ_32(...) \, -#define Z_IS_33_EQ_33(...) \, -#define Z_IS_34_EQ_34(...) \, -#define Z_IS_35_EQ_35(...) \, -#define Z_IS_36_EQ_36(...) \, -#define Z_IS_37_EQ_37(...) \, -#define Z_IS_38_EQ_38(...) \, -#define Z_IS_39_EQ_39(...) \, -#define Z_IS_40_EQ_40(...) \, -#define Z_IS_41_EQ_41(...) \, -#define Z_IS_42_EQ_42(...) \, -#define Z_IS_43_EQ_43(...) \, -#define Z_IS_44_EQ_44(...) \, -#define Z_IS_45_EQ_45(...) \, -#define Z_IS_46_EQ_46(...) \, -#define Z_IS_47_EQ_47(...) \, -#define Z_IS_48_EQ_48(...) \, -#define Z_IS_49_EQ_49(...) \, -#define Z_IS_50_EQ_50(...) \, -#define Z_IS_51_EQ_51(...) \, -#define Z_IS_52_EQ_52(...) \, -#define Z_IS_53_EQ_53(...) \, -#define Z_IS_54_EQ_54(...) \, -#define Z_IS_55_EQ_55(...) \, -#define Z_IS_56_EQ_56(...) \, -#define Z_IS_57_EQ_57(...) \, -#define Z_IS_58_EQ_58(...) \, -#define Z_IS_59_EQ_59(...) \, -#define Z_IS_60_EQ_60(...) \, -#define Z_IS_61_EQ_61(...) \, -#define Z_IS_62_EQ_62(...) \, -#define Z_IS_63_EQ_63(...) \, -#define Z_IS_64_EQ_64(...) \, -#define Z_IS_65_EQ_65(...) \, -#define Z_IS_66_EQ_66(...) \, -#define Z_IS_67_EQ_67(...) \, -#define Z_IS_68_EQ_68(...) \, -#define Z_IS_69_EQ_69(...) \, -#define Z_IS_70_EQ_70(...) \, -#define Z_IS_71_EQ_71(...) \, -#define Z_IS_72_EQ_72(...) \, -#define Z_IS_73_EQ_73(...) \, -#define Z_IS_74_EQ_74(...) \, -#define Z_IS_75_EQ_75(...) \, -#define Z_IS_76_EQ_76(...) \, -#define Z_IS_77_EQ_77(...) \, -#define Z_IS_78_EQ_78(...) \, -#define Z_IS_79_EQ_79(...) \, -#define Z_IS_80_EQ_80(...) \, -#define Z_IS_81_EQ_81(...) \, -#define Z_IS_82_EQ_82(...) \, -#define Z_IS_83_EQ_83(...) \, -#define Z_IS_84_EQ_84(...) \, -#define Z_IS_85_EQ_85(...) \, -#define Z_IS_86_EQ_86(...) \, -#define Z_IS_87_EQ_87(...) \, -#define Z_IS_88_EQ_88(...) \, -#define Z_IS_89_EQ_89(...) \, -#define Z_IS_90_EQ_90(...) \, -#define Z_IS_91_EQ_91(...) \, -#define Z_IS_92_EQ_92(...) \, -#define Z_IS_93_EQ_93(...) \, -#define Z_IS_94_EQ_94(...) \, -#define Z_IS_95_EQ_95(...) \, -#define Z_IS_96_EQ_96(...) \, -#define Z_IS_97_EQ_97(...) \, -#define Z_IS_98_EQ_98(...) \, -#define Z_IS_99_EQ_99(...) \, -#define Z_IS_100_EQ_100(...) \, -#define Z_IS_101_EQ_101(...) \, -#define Z_IS_102_EQ_102(...) \, -#define Z_IS_103_EQ_103(...) \, -#define Z_IS_104_EQ_104(...) \, -#define Z_IS_105_EQ_105(...) \, -#define Z_IS_106_EQ_106(...) \, -#define Z_IS_107_EQ_107(...) \, -#define Z_IS_108_EQ_108(...) \, -#define Z_IS_109_EQ_109(...) \, -#define Z_IS_110_EQ_110(...) \, -#define Z_IS_111_EQ_111(...) \, -#define Z_IS_112_EQ_112(...) \, -#define Z_IS_113_EQ_113(...) \, -#define Z_IS_114_EQ_114(...) \, -#define Z_IS_115_EQ_115(...) \, -#define Z_IS_116_EQ_116(...) \, -#define Z_IS_117_EQ_117(...) \, -#define Z_IS_118_EQ_118(...) \, -#define Z_IS_119_EQ_119(...) \, -#define Z_IS_120_EQ_120(...) \, -#define Z_IS_121_EQ_121(...) \, -#define Z_IS_122_EQ_122(...) \, -#define Z_IS_123_EQ_123(...) \, -#define Z_IS_124_EQ_124(...) \, -#define Z_IS_125_EQ_125(...) \, -#define Z_IS_126_EQ_126(...) \, -#define Z_IS_127_EQ_127(...) \, -#define Z_IS_128_EQ_128(...) \, -#define Z_IS_129_EQ_129(...) \, -#define Z_IS_130_EQ_130(...) \, -#define Z_IS_131_EQ_131(...) \, -#define Z_IS_132_EQ_132(...) \, -#define Z_IS_133_EQ_133(...) \, -#define Z_IS_134_EQ_134(...) \, -#define Z_IS_135_EQ_135(...) \, -#define Z_IS_136_EQ_136(...) \, -#define Z_IS_137_EQ_137(...) \, -#define Z_IS_138_EQ_138(...) \, -#define Z_IS_139_EQ_139(...) \, -#define Z_IS_140_EQ_140(...) \, -#define Z_IS_141_EQ_141(...) \, -#define Z_IS_142_EQ_142(...) \, -#define Z_IS_143_EQ_143(...) \, -#define Z_IS_144_EQ_144(...) \, -#define Z_IS_145_EQ_145(...) \, -#define Z_IS_146_EQ_146(...) \, -#define Z_IS_147_EQ_147(...) \, -#define Z_IS_148_EQ_148(...) \, -#define Z_IS_149_EQ_149(...) \, -#define Z_IS_150_EQ_150(...) \, -#define Z_IS_151_EQ_151(...) \, -#define Z_IS_152_EQ_152(...) \, -#define Z_IS_153_EQ_153(...) \, -#define Z_IS_154_EQ_154(...) \, -#define Z_IS_155_EQ_155(...) \, -#define Z_IS_156_EQ_156(...) \, -#define Z_IS_157_EQ_157(...) \, -#define Z_IS_158_EQ_158(...) \, -#define Z_IS_159_EQ_159(...) \, -#define Z_IS_160_EQ_160(...) \, -#define Z_IS_161_EQ_161(...) \, -#define Z_IS_162_EQ_162(...) \, -#define Z_IS_163_EQ_163(...) \, -#define Z_IS_164_EQ_164(...) \, -#define Z_IS_165_EQ_165(...) \, -#define Z_IS_166_EQ_166(...) \, -#define Z_IS_167_EQ_167(...) \, -#define Z_IS_168_EQ_168(...) \, -#define Z_IS_169_EQ_169(...) \, -#define Z_IS_170_EQ_170(...) \, -#define Z_IS_171_EQ_171(...) \, -#define Z_IS_172_EQ_172(...) \, -#define Z_IS_173_EQ_173(...) \, -#define Z_IS_174_EQ_174(...) \, -#define Z_IS_175_EQ_175(...) \, -#define Z_IS_176_EQ_176(...) \, -#define Z_IS_177_EQ_177(...) \, -#define Z_IS_178_EQ_178(...) \, -#define Z_IS_179_EQ_179(...) \, -#define Z_IS_180_EQ_180(...) \, -#define Z_IS_181_EQ_181(...) \, -#define Z_IS_182_EQ_182(...) \, -#define Z_IS_183_EQ_183(...) \, -#define Z_IS_184_EQ_184(...) \, -#define Z_IS_185_EQ_185(...) \, -#define Z_IS_186_EQ_186(...) \, -#define Z_IS_187_EQ_187(...) \, -#define Z_IS_188_EQ_188(...) \, -#define Z_IS_189_EQ_189(...) \, -#define Z_IS_190_EQ_190(...) \, -#define Z_IS_191_EQ_191(...) \, -#define Z_IS_192_EQ_192(...) \, -#define Z_IS_193_EQ_193(...) \, -#define Z_IS_194_EQ_194(...) \, -#define Z_IS_195_EQ_195(...) \, -#define Z_IS_196_EQ_196(...) \, -#define Z_IS_197_EQ_197(...) \, -#define Z_IS_198_EQ_198(...) \, -#define Z_IS_199_EQ_199(...) \, -#define Z_IS_200_EQ_200(...) \, -#define Z_IS_201_EQ_201(...) \, -#define Z_IS_202_EQ_202(...) \, -#define Z_IS_203_EQ_203(...) \, -#define Z_IS_204_EQ_204(...) \, -#define Z_IS_205_EQ_205(...) \, -#define Z_IS_206_EQ_206(...) \, -#define Z_IS_207_EQ_207(...) \, -#define Z_IS_208_EQ_208(...) \, -#define Z_IS_209_EQ_209(...) \, -#define Z_IS_210_EQ_210(...) \, -#define Z_IS_211_EQ_211(...) \, -#define Z_IS_212_EQ_212(...) \, -#define Z_IS_213_EQ_213(...) \, -#define Z_IS_214_EQ_214(...) \, -#define Z_IS_215_EQ_215(...) \, -#define Z_IS_216_EQ_216(...) \, -#define Z_IS_217_EQ_217(...) \, -#define Z_IS_218_EQ_218(...) \, -#define Z_IS_219_EQ_219(...) \, -#define Z_IS_220_EQ_220(...) \, -#define Z_IS_221_EQ_221(...) \, -#define Z_IS_222_EQ_222(...) \, -#define Z_IS_223_EQ_223(...) \, -#define Z_IS_224_EQ_224(...) \, -#define Z_IS_225_EQ_225(...) \, -#define Z_IS_226_EQ_226(...) \, -#define Z_IS_227_EQ_227(...) \, -#define Z_IS_228_EQ_228(...) \, -#define Z_IS_229_EQ_229(...) \, -#define Z_IS_230_EQ_230(...) \, -#define Z_IS_231_EQ_231(...) \, -#define Z_IS_232_EQ_232(...) \, -#define Z_IS_233_EQ_233(...) \, -#define Z_IS_234_EQ_234(...) \, -#define Z_IS_235_EQ_235(...) \, -#define Z_IS_236_EQ_236(...) \, -#define Z_IS_237_EQ_237(...) \, -#define Z_IS_238_EQ_238(...) \, -#define Z_IS_239_EQ_239(...) \, -#define Z_IS_240_EQ_240(...) \, -#define Z_IS_241_EQ_241(...) \, -#define Z_IS_242_EQ_242(...) \, -#define Z_IS_243_EQ_243(...) \, -#define Z_IS_244_EQ_244(...) \, -#define Z_IS_245_EQ_245(...) \, -#define Z_IS_246_EQ_246(...) \, -#define Z_IS_247_EQ_247(...) \, -#define Z_IS_248_EQ_248(...) \, -#define Z_IS_249_EQ_249(...) \, -#define Z_IS_250_EQ_250(...) \, -#define Z_IS_251_EQ_251(...) \, -#define Z_IS_252_EQ_252(...) \, -#define Z_IS_253_EQ_253(...) \, -#define Z_IS_254_EQ_254(...) \, -#define Z_IS_255_EQ_255(...) \, -#define Z_IS_256_EQ_256(...) \, -#define Z_IS_257_EQ_257(...) \, -#define Z_IS_258_EQ_258(...) \, -#define Z_IS_259_EQ_259(...) \, -#define Z_IS_260_EQ_260(...) \, -#define Z_IS_261_EQ_261(...) \, -#define Z_IS_262_EQ_262(...) \, -#define Z_IS_263_EQ_263(...) \, -#define Z_IS_264_EQ_264(...) \, -#define Z_IS_265_EQ_265(...) \, -#define Z_IS_266_EQ_266(...) \, -#define Z_IS_267_EQ_267(...) \, -#define Z_IS_268_EQ_268(...) \, -#define Z_IS_269_EQ_269(...) \, -#define Z_IS_270_EQ_270(...) \, -#define Z_IS_271_EQ_271(...) \, -#define Z_IS_272_EQ_272(...) \, -#define Z_IS_273_EQ_273(...) \, -#define Z_IS_274_EQ_274(...) \, -#define Z_IS_275_EQ_275(...) \, -#define Z_IS_276_EQ_276(...) \, -#define Z_IS_277_EQ_277(...) \, -#define Z_IS_278_EQ_278(...) \, -#define Z_IS_279_EQ_279(...) \, -#define Z_IS_280_EQ_280(...) \, -#define Z_IS_281_EQ_281(...) \, -#define Z_IS_282_EQ_282(...) \, -#define Z_IS_283_EQ_283(...) \, -#define Z_IS_284_EQ_284(...) \, -#define Z_IS_285_EQ_285(...) \, -#define Z_IS_286_EQ_286(...) \, -#define Z_IS_287_EQ_287(...) \, -#define Z_IS_288_EQ_288(...) \, -#define Z_IS_289_EQ_289(...) \, -#define Z_IS_290_EQ_290(...) \, -#define Z_IS_291_EQ_291(...) \, -#define Z_IS_292_EQ_292(...) \, -#define Z_IS_293_EQ_293(...) \, -#define Z_IS_294_EQ_294(...) \, -#define Z_IS_295_EQ_295(...) \, -#define Z_IS_296_EQ_296(...) \, -#define Z_IS_297_EQ_297(...) \, -#define Z_IS_298_EQ_298(...) \, -#define Z_IS_299_EQ_299(...) \, -#define Z_IS_300_EQ_300(...) \, -#define Z_IS_301_EQ_301(...) \, -#define Z_IS_302_EQ_302(...) \, -#define Z_IS_303_EQ_303(...) \, -#define Z_IS_304_EQ_304(...) \, -#define Z_IS_305_EQ_305(...) \, -#define Z_IS_306_EQ_306(...) \, -#define Z_IS_307_EQ_307(...) \, -#define Z_IS_308_EQ_308(...) \, -#define Z_IS_309_EQ_309(...) \, -#define Z_IS_310_EQ_310(...) \, -#define Z_IS_311_EQ_311(...) \, -#define Z_IS_312_EQ_312(...) \, -#define Z_IS_313_EQ_313(...) \, -#define Z_IS_314_EQ_314(...) \, -#define Z_IS_315_EQ_315(...) \, -#define Z_IS_316_EQ_316(...) \, -#define Z_IS_317_EQ_317(...) \, -#define Z_IS_318_EQ_318(...) \, -#define Z_IS_319_EQ_319(...) \, -#define Z_IS_320_EQ_320(...) \, -#define Z_IS_321_EQ_321(...) \, -#define Z_IS_322_EQ_322(...) \, -#define Z_IS_323_EQ_323(...) \, -#define Z_IS_324_EQ_324(...) \, -#define Z_IS_325_EQ_325(...) \, -#define Z_IS_326_EQ_326(...) \, -#define Z_IS_327_EQ_327(...) \, -#define Z_IS_328_EQ_328(...) \, -#define Z_IS_329_EQ_329(...) \, -#define Z_IS_330_EQ_330(...) \, -#define Z_IS_331_EQ_331(...) \, -#define Z_IS_332_EQ_332(...) \, -#define Z_IS_333_EQ_333(...) \, -#define Z_IS_334_EQ_334(...) \, -#define Z_IS_335_EQ_335(...) \, -#define Z_IS_336_EQ_336(...) \, -#define Z_IS_337_EQ_337(...) \, -#define Z_IS_338_EQ_338(...) \, -#define Z_IS_339_EQ_339(...) \, -#define Z_IS_340_EQ_340(...) \, -#define Z_IS_341_EQ_341(...) \, -#define Z_IS_342_EQ_342(...) \, -#define Z_IS_343_EQ_343(...) \, -#define Z_IS_344_EQ_344(...) \, -#define Z_IS_345_EQ_345(...) \, -#define Z_IS_346_EQ_346(...) \, -#define Z_IS_347_EQ_347(...) \, -#define Z_IS_348_EQ_348(...) \, -#define Z_IS_349_EQ_349(...) \, -#define Z_IS_350_EQ_350(...) \, -#define Z_IS_351_EQ_351(...) \, -#define Z_IS_352_EQ_352(...) \, -#define Z_IS_353_EQ_353(...) \, -#define Z_IS_354_EQ_354(...) \, -#define Z_IS_355_EQ_355(...) \, -#define Z_IS_356_EQ_356(...) \, -#define Z_IS_357_EQ_357(...) \, -#define Z_IS_358_EQ_358(...) \, -#define Z_IS_359_EQ_359(...) \, -#define Z_IS_360_EQ_360(...) \, -#define Z_IS_361_EQ_361(...) \, -#define Z_IS_362_EQ_362(...) \, -#define Z_IS_363_EQ_363(...) \, -#define Z_IS_364_EQ_364(...) \, -#define Z_IS_365_EQ_365(...) \, -#define Z_IS_366_EQ_366(...) \, -#define Z_IS_367_EQ_367(...) \, -#define Z_IS_368_EQ_368(...) \, -#define Z_IS_369_EQ_369(...) \, -#define Z_IS_370_EQ_370(...) \, -#define Z_IS_371_EQ_371(...) \, -#define Z_IS_372_EQ_372(...) \, -#define Z_IS_373_EQ_373(...) \, -#define Z_IS_374_EQ_374(...) \, -#define Z_IS_375_EQ_375(...) \, -#define Z_IS_376_EQ_376(...) \, -#define Z_IS_377_EQ_377(...) \, -#define Z_IS_378_EQ_378(...) \, -#define Z_IS_379_EQ_379(...) \, -#define Z_IS_380_EQ_380(...) \, -#define Z_IS_381_EQ_381(...) \, -#define Z_IS_382_EQ_382(...) \, -#define Z_IS_383_EQ_383(...) \, -#define Z_IS_384_EQ_384(...) \, -#define Z_IS_385_EQ_385(...) \, -#define Z_IS_386_EQ_386(...) \, -#define Z_IS_387_EQ_387(...) \, -#define Z_IS_388_EQ_388(...) \, -#define Z_IS_389_EQ_389(...) \, -#define Z_IS_390_EQ_390(...) \, -#define Z_IS_391_EQ_391(...) \, -#define Z_IS_392_EQ_392(...) \, -#define Z_IS_393_EQ_393(...) \, -#define Z_IS_394_EQ_394(...) \, -#define Z_IS_395_EQ_395(...) \, -#define Z_IS_396_EQ_396(...) \, -#define Z_IS_397_EQ_397(...) \, -#define Z_IS_398_EQ_398(...) \, -#define Z_IS_399_EQ_399(...) \, -#define Z_IS_400_EQ_400(...) \, -#define Z_IS_401_EQ_401(...) \, -#define Z_IS_402_EQ_402(...) \, -#define Z_IS_403_EQ_403(...) \, -#define Z_IS_404_EQ_404(...) \, -#define Z_IS_405_EQ_405(...) \, -#define Z_IS_406_EQ_406(...) \, -#define Z_IS_407_EQ_407(...) \, -#define Z_IS_408_EQ_408(...) \, -#define Z_IS_409_EQ_409(...) \, -#define Z_IS_410_EQ_410(...) \, -#define Z_IS_411_EQ_411(...) \, -#define Z_IS_412_EQ_412(...) \, -#define Z_IS_413_EQ_413(...) \, -#define Z_IS_414_EQ_414(...) \, -#define Z_IS_415_EQ_415(...) \, -#define Z_IS_416_EQ_416(...) \, -#define Z_IS_417_EQ_417(...) \, -#define Z_IS_418_EQ_418(...) \, -#define Z_IS_419_EQ_419(...) \, -#define Z_IS_420_EQ_420(...) \, -#define Z_IS_421_EQ_421(...) \, -#define Z_IS_422_EQ_422(...) \, -#define Z_IS_423_EQ_423(...) \, -#define Z_IS_424_EQ_424(...) \, -#define Z_IS_425_EQ_425(...) \, -#define Z_IS_426_EQ_426(...) \, -#define Z_IS_427_EQ_427(...) \, -#define Z_IS_428_EQ_428(...) \, -#define Z_IS_429_EQ_429(...) \, -#define Z_IS_430_EQ_430(...) \, -#define Z_IS_431_EQ_431(...) \, -#define Z_IS_432_EQ_432(...) \, -#define Z_IS_433_EQ_433(...) \, -#define Z_IS_434_EQ_434(...) \, -#define Z_IS_435_EQ_435(...) \, -#define Z_IS_436_EQ_436(...) \, -#define Z_IS_437_EQ_437(...) \, -#define Z_IS_438_EQ_438(...) \, -#define Z_IS_439_EQ_439(...) \, -#define Z_IS_440_EQ_440(...) \, -#define Z_IS_441_EQ_441(...) \, -#define Z_IS_442_EQ_442(...) \, -#define Z_IS_443_EQ_443(...) \, -#define Z_IS_444_EQ_444(...) \, -#define Z_IS_445_EQ_445(...) \, -#define Z_IS_446_EQ_446(...) \, -#define Z_IS_447_EQ_447(...) \, -#define Z_IS_448_EQ_448(...) \, -#define Z_IS_449_EQ_449(...) \, -#define Z_IS_450_EQ_450(...) \, -#define Z_IS_451_EQ_451(...) \, -#define Z_IS_452_EQ_452(...) \, -#define Z_IS_453_EQ_453(...) \, -#define Z_IS_454_EQ_454(...) \, -#define Z_IS_455_EQ_455(...) \, -#define Z_IS_456_EQ_456(...) \, -#define Z_IS_457_EQ_457(...) \, -#define Z_IS_458_EQ_458(...) \, -#define Z_IS_459_EQ_459(...) \, -#define Z_IS_460_EQ_460(...) \, -#define Z_IS_461_EQ_461(...) \, -#define Z_IS_462_EQ_462(...) \, -#define Z_IS_463_EQ_463(...) \, -#define Z_IS_464_EQ_464(...) \, -#define Z_IS_465_EQ_465(...) \, -#define Z_IS_466_EQ_466(...) \, -#define Z_IS_467_EQ_467(...) \, -#define Z_IS_468_EQ_468(...) \, -#define Z_IS_469_EQ_469(...) \, -#define Z_IS_470_EQ_470(...) \, -#define Z_IS_471_EQ_471(...) \, -#define Z_IS_472_EQ_472(...) \, -#define Z_IS_473_EQ_473(...) \, -#define Z_IS_474_EQ_474(...) \, -#define Z_IS_475_EQ_475(...) \, -#define Z_IS_476_EQ_476(...) \, -#define Z_IS_477_EQ_477(...) \, -#define Z_IS_478_EQ_478(...) \, -#define Z_IS_479_EQ_479(...) \, -#define Z_IS_480_EQ_480(...) \, -#define Z_IS_481_EQ_481(...) \, -#define Z_IS_482_EQ_482(...) \, -#define Z_IS_483_EQ_483(...) \, -#define Z_IS_484_EQ_484(...) \, -#define Z_IS_485_EQ_485(...) \, -#define Z_IS_486_EQ_486(...) \, -#define Z_IS_487_EQ_487(...) \, -#define Z_IS_488_EQ_488(...) \, -#define Z_IS_489_EQ_489(...) \, -#define Z_IS_490_EQ_490(...) \, -#define Z_IS_491_EQ_491(...) \, -#define Z_IS_492_EQ_492(...) \, -#define Z_IS_493_EQ_493(...) \, -#define Z_IS_494_EQ_494(...) \, -#define Z_IS_495_EQ_495(...) \, -#define Z_IS_496_EQ_496(...) \, -#define Z_IS_497_EQ_497(...) \, -#define Z_IS_498_EQ_498(...) \, -#define Z_IS_499_EQ_499(...) \, -#define Z_IS_500_EQ_500(...) \, -#define Z_IS_501_EQ_501(...) \, -#define Z_IS_502_EQ_502(...) \, -#define Z_IS_503_EQ_503(...) \, -#define Z_IS_504_EQ_504(...) \, -#define Z_IS_505_EQ_505(...) \, -#define Z_IS_506_EQ_506(...) \, -#define Z_IS_507_EQ_507(...) \, -#define Z_IS_508_EQ_508(...) \, -#define Z_IS_509_EQ_509(...) \, -#define Z_IS_510_EQ_510(...) \, -#define Z_IS_511_EQ_511(...) \, -#define Z_IS_512_EQ_512(...) \, -#define Z_IS_513_EQ_513(...) \, -#define Z_IS_514_EQ_514(...) \, -#define Z_IS_515_EQ_515(...) \, -#define Z_IS_516_EQ_516(...) \, -#define Z_IS_517_EQ_517(...) \, -#define Z_IS_518_EQ_518(...) \, -#define Z_IS_519_EQ_519(...) \, -#define Z_IS_520_EQ_520(...) \, -#define Z_IS_521_EQ_521(...) \, -#define Z_IS_522_EQ_522(...) \, -#define Z_IS_523_EQ_523(...) \, -#define Z_IS_524_EQ_524(...) \, -#define Z_IS_525_EQ_525(...) \, -#define Z_IS_526_EQ_526(...) \, -#define Z_IS_527_EQ_527(...) \, -#define Z_IS_528_EQ_528(...) \, -#define Z_IS_529_EQ_529(...) \, -#define Z_IS_530_EQ_530(...) \, -#define Z_IS_531_EQ_531(...) \, -#define Z_IS_532_EQ_532(...) \, -#define Z_IS_533_EQ_533(...) \, -#define Z_IS_534_EQ_534(...) \, -#define Z_IS_535_EQ_535(...) \, -#define Z_IS_536_EQ_536(...) \, -#define Z_IS_537_EQ_537(...) \, -#define Z_IS_538_EQ_538(...) \, -#define Z_IS_539_EQ_539(...) \, -#define Z_IS_540_EQ_540(...) \, -#define Z_IS_541_EQ_541(...) \, -#define Z_IS_542_EQ_542(...) \, -#define Z_IS_543_EQ_543(...) \, -#define Z_IS_544_EQ_544(...) \, -#define Z_IS_545_EQ_545(...) \, -#define Z_IS_546_EQ_546(...) \, -#define Z_IS_547_EQ_547(...) \, -#define Z_IS_548_EQ_548(...) \, -#define Z_IS_549_EQ_549(...) \, -#define Z_IS_550_EQ_550(...) \, -#define Z_IS_551_EQ_551(...) \, -#define Z_IS_552_EQ_552(...) \, -#define Z_IS_553_EQ_553(...) \, -#define Z_IS_554_EQ_554(...) \, -#define Z_IS_555_EQ_555(...) \, -#define Z_IS_556_EQ_556(...) \, -#define Z_IS_557_EQ_557(...) \, -#define Z_IS_558_EQ_558(...) \, -#define Z_IS_559_EQ_559(...) \, -#define Z_IS_560_EQ_560(...) \, -#define Z_IS_561_EQ_561(...) \, -#define Z_IS_562_EQ_562(...) \, -#define Z_IS_563_EQ_563(...) \, -#define Z_IS_564_EQ_564(...) \, -#define Z_IS_565_EQ_565(...) \, -#define Z_IS_566_EQ_566(...) \, -#define Z_IS_567_EQ_567(...) \, -#define Z_IS_568_EQ_568(...) \, -#define Z_IS_569_EQ_569(...) \, -#define Z_IS_570_EQ_570(...) \, -#define Z_IS_571_EQ_571(...) \, -#define Z_IS_572_EQ_572(...) \, -#define Z_IS_573_EQ_573(...) \, -#define Z_IS_574_EQ_574(...) \, -#define Z_IS_575_EQ_575(...) \, -#define Z_IS_576_EQ_576(...) \, -#define Z_IS_577_EQ_577(...) \, -#define Z_IS_578_EQ_578(...) \, -#define Z_IS_579_EQ_579(...) \, -#define Z_IS_580_EQ_580(...) \, -#define Z_IS_581_EQ_581(...) \, -#define Z_IS_582_EQ_582(...) \, -#define Z_IS_583_EQ_583(...) \, -#define Z_IS_584_EQ_584(...) \, -#define Z_IS_585_EQ_585(...) \, -#define Z_IS_586_EQ_586(...) \, -#define Z_IS_587_EQ_587(...) \, -#define Z_IS_588_EQ_588(...) \, -#define Z_IS_589_EQ_589(...) \, -#define Z_IS_590_EQ_590(...) \, -#define Z_IS_591_EQ_591(...) \, -#define Z_IS_592_EQ_592(...) \, -#define Z_IS_593_EQ_593(...) \, -#define Z_IS_594_EQ_594(...) \, -#define Z_IS_595_EQ_595(...) \, -#define Z_IS_596_EQ_596(...) \, -#define Z_IS_597_EQ_597(...) \, -#define Z_IS_598_EQ_598(...) \, -#define Z_IS_599_EQ_599(...) \, -#define Z_IS_600_EQ_600(...) \, -#define Z_IS_601_EQ_601(...) \, -#define Z_IS_602_EQ_602(...) \, -#define Z_IS_603_EQ_603(...) \, -#define Z_IS_604_EQ_604(...) \, -#define Z_IS_605_EQ_605(...) \, -#define Z_IS_606_EQ_606(...) \, -#define Z_IS_607_EQ_607(...) \, -#define Z_IS_608_EQ_608(...) \, -#define Z_IS_609_EQ_609(...) \, -#define Z_IS_610_EQ_610(...) \, -#define Z_IS_611_EQ_611(...) \, -#define Z_IS_612_EQ_612(...) \, -#define Z_IS_613_EQ_613(...) \, -#define Z_IS_614_EQ_614(...) \, -#define Z_IS_615_EQ_615(...) \, -#define Z_IS_616_EQ_616(...) \, -#define Z_IS_617_EQ_617(...) \, -#define Z_IS_618_EQ_618(...) \, -#define Z_IS_619_EQ_619(...) \, -#define Z_IS_620_EQ_620(...) \, -#define Z_IS_621_EQ_621(...) \, -#define Z_IS_622_EQ_622(...) \, -#define Z_IS_623_EQ_623(...) \, -#define Z_IS_624_EQ_624(...) \, -#define Z_IS_625_EQ_625(...) \, -#define Z_IS_626_EQ_626(...) \, -#define Z_IS_627_EQ_627(...) \, -#define Z_IS_628_EQ_628(...) \, -#define Z_IS_629_EQ_629(...) \, -#define Z_IS_630_EQ_630(...) \, -#define Z_IS_631_EQ_631(...) \, -#define Z_IS_632_EQ_632(...) \, -#define Z_IS_633_EQ_633(...) \, -#define Z_IS_634_EQ_634(...) \, -#define Z_IS_635_EQ_635(...) \, -#define Z_IS_636_EQ_636(...) \, -#define Z_IS_637_EQ_637(...) \, -#define Z_IS_638_EQ_638(...) \, -#define Z_IS_639_EQ_639(...) \, -#define Z_IS_640_EQ_640(...) \, -#define Z_IS_641_EQ_641(...) \, -#define Z_IS_642_EQ_642(...) \, -#define Z_IS_643_EQ_643(...) \, -#define Z_IS_644_EQ_644(...) \, -#define Z_IS_645_EQ_645(...) \, -#define Z_IS_646_EQ_646(...) \, -#define Z_IS_647_EQ_647(...) \, -#define Z_IS_648_EQ_648(...) \, -#define Z_IS_649_EQ_649(...) \, -#define Z_IS_650_EQ_650(...) \, -#define Z_IS_651_EQ_651(...) \, -#define Z_IS_652_EQ_652(...) \, -#define Z_IS_653_EQ_653(...) \, -#define Z_IS_654_EQ_654(...) \, -#define Z_IS_655_EQ_655(...) \, -#define Z_IS_656_EQ_656(...) \, -#define Z_IS_657_EQ_657(...) \, -#define Z_IS_658_EQ_658(...) \, -#define Z_IS_659_EQ_659(...) \, -#define Z_IS_660_EQ_660(...) \, -#define Z_IS_661_EQ_661(...) \, -#define Z_IS_662_EQ_662(...) \, -#define Z_IS_663_EQ_663(...) \, -#define Z_IS_664_EQ_664(...) \, -#define Z_IS_665_EQ_665(...) \, -#define Z_IS_666_EQ_666(...) \, -#define Z_IS_667_EQ_667(...) \, -#define Z_IS_668_EQ_668(...) \, -#define Z_IS_669_EQ_669(...) \, -#define Z_IS_670_EQ_670(...) \, -#define Z_IS_671_EQ_671(...) \, -#define Z_IS_672_EQ_672(...) \, -#define Z_IS_673_EQ_673(...) \, -#define Z_IS_674_EQ_674(...) \, -#define Z_IS_675_EQ_675(...) \, -#define Z_IS_676_EQ_676(...) \, -#define Z_IS_677_EQ_677(...) \, -#define Z_IS_678_EQ_678(...) \, -#define Z_IS_679_EQ_679(...) \, -#define Z_IS_680_EQ_680(...) \, -#define Z_IS_681_EQ_681(...) \, -#define Z_IS_682_EQ_682(...) \, -#define Z_IS_683_EQ_683(...) \, -#define Z_IS_684_EQ_684(...) \, -#define Z_IS_685_EQ_685(...) \, -#define Z_IS_686_EQ_686(...) \, -#define Z_IS_687_EQ_687(...) \, -#define Z_IS_688_EQ_688(...) \, -#define Z_IS_689_EQ_689(...) \, -#define Z_IS_690_EQ_690(...) \, -#define Z_IS_691_EQ_691(...) \, -#define Z_IS_692_EQ_692(...) \, -#define Z_IS_693_EQ_693(...) \, -#define Z_IS_694_EQ_694(...) \, -#define Z_IS_695_EQ_695(...) \, -#define Z_IS_696_EQ_696(...) \, -#define Z_IS_697_EQ_697(...) \, -#define Z_IS_698_EQ_698(...) \, -#define Z_IS_699_EQ_699(...) \, -#define Z_IS_700_EQ_700(...) \, -#define Z_IS_701_EQ_701(...) \, -#define Z_IS_702_EQ_702(...) \, -#define Z_IS_703_EQ_703(...) \, -#define Z_IS_704_EQ_704(...) \, -#define Z_IS_705_EQ_705(...) \, -#define Z_IS_706_EQ_706(...) \, -#define Z_IS_707_EQ_707(...) \, -#define Z_IS_708_EQ_708(...) \, -#define Z_IS_709_EQ_709(...) \, -#define Z_IS_710_EQ_710(...) \, -#define Z_IS_711_EQ_711(...) \, -#define Z_IS_712_EQ_712(...) \, -#define Z_IS_713_EQ_713(...) \, -#define Z_IS_714_EQ_714(...) \, -#define Z_IS_715_EQ_715(...) \, -#define Z_IS_716_EQ_716(...) \, -#define Z_IS_717_EQ_717(...) \, -#define Z_IS_718_EQ_718(...) \, -#define Z_IS_719_EQ_719(...) \, -#define Z_IS_720_EQ_720(...) \, -#define Z_IS_721_EQ_721(...) \, -#define Z_IS_722_EQ_722(...) \, -#define Z_IS_723_EQ_723(...) \, -#define Z_IS_724_EQ_724(...) \, -#define Z_IS_725_EQ_725(...) \, -#define Z_IS_726_EQ_726(...) \, -#define Z_IS_727_EQ_727(...) \, -#define Z_IS_728_EQ_728(...) \, -#define Z_IS_729_EQ_729(...) \, -#define Z_IS_730_EQ_730(...) \, -#define Z_IS_731_EQ_731(...) \, -#define Z_IS_732_EQ_732(...) \, -#define Z_IS_733_EQ_733(...) \, -#define Z_IS_734_EQ_734(...) \, -#define Z_IS_735_EQ_735(...) \, -#define Z_IS_736_EQ_736(...) \, -#define Z_IS_737_EQ_737(...) \, -#define Z_IS_738_EQ_738(...) \, -#define Z_IS_739_EQ_739(...) \, -#define Z_IS_740_EQ_740(...) \, -#define Z_IS_741_EQ_741(...) \, -#define Z_IS_742_EQ_742(...) \, -#define Z_IS_743_EQ_743(...) \, -#define Z_IS_744_EQ_744(...) \, -#define Z_IS_745_EQ_745(...) \, -#define Z_IS_746_EQ_746(...) \, -#define Z_IS_747_EQ_747(...) \, -#define Z_IS_748_EQ_748(...) \, -#define Z_IS_749_EQ_749(...) \, -#define Z_IS_750_EQ_750(...) \, -#define Z_IS_751_EQ_751(...) \, -#define Z_IS_752_EQ_752(...) \, -#define Z_IS_753_EQ_753(...) \, -#define Z_IS_754_EQ_754(...) \, -#define Z_IS_755_EQ_755(...) \, -#define Z_IS_756_EQ_756(...) \, -#define Z_IS_757_EQ_757(...) \, -#define Z_IS_758_EQ_758(...) \, -#define Z_IS_759_EQ_759(...) \, -#define Z_IS_760_EQ_760(...) \, -#define Z_IS_761_EQ_761(...) \, -#define Z_IS_762_EQ_762(...) \, -#define Z_IS_763_EQ_763(...) \, -#define Z_IS_764_EQ_764(...) \, -#define Z_IS_765_EQ_765(...) \, -#define Z_IS_766_EQ_766(...) \, -#define Z_IS_767_EQ_767(...) \, -#define Z_IS_768_EQ_768(...) \, -#define Z_IS_769_EQ_769(...) \, -#define Z_IS_770_EQ_770(...) \, -#define Z_IS_771_EQ_771(...) \, -#define Z_IS_772_EQ_772(...) \, -#define Z_IS_773_EQ_773(...) \, -#define Z_IS_774_EQ_774(...) \, -#define Z_IS_775_EQ_775(...) \, -#define Z_IS_776_EQ_776(...) \, -#define Z_IS_777_EQ_777(...) \, -#define Z_IS_778_EQ_778(...) \, -#define Z_IS_779_EQ_779(...) \, -#define Z_IS_780_EQ_780(...) \, -#define Z_IS_781_EQ_781(...) \, -#define Z_IS_782_EQ_782(...) \, -#define Z_IS_783_EQ_783(...) \, -#define Z_IS_784_EQ_784(...) \, -#define Z_IS_785_EQ_785(...) \, -#define Z_IS_786_EQ_786(...) \, -#define Z_IS_787_EQ_787(...) \, -#define Z_IS_788_EQ_788(...) \, -#define Z_IS_789_EQ_789(...) \, -#define Z_IS_790_EQ_790(...) \, -#define Z_IS_791_EQ_791(...) \, -#define Z_IS_792_EQ_792(...) \, -#define Z_IS_793_EQ_793(...) \, -#define Z_IS_794_EQ_794(...) \, -#define Z_IS_795_EQ_795(...) \, -#define Z_IS_796_EQ_796(...) \, -#define Z_IS_797_EQ_797(...) \, -#define Z_IS_798_EQ_798(...) \, -#define Z_IS_799_EQ_799(...) \, -#define Z_IS_800_EQ_800(...) \, -#define Z_IS_801_EQ_801(...) \, -#define Z_IS_802_EQ_802(...) \, -#define Z_IS_803_EQ_803(...) \, -#define Z_IS_804_EQ_804(...) \, -#define Z_IS_805_EQ_805(...) \, -#define Z_IS_806_EQ_806(...) \, -#define Z_IS_807_EQ_807(...) \, -#define Z_IS_808_EQ_808(...) \, -#define Z_IS_809_EQ_809(...) \, -#define Z_IS_810_EQ_810(...) \, -#define Z_IS_811_EQ_811(...) \, -#define Z_IS_812_EQ_812(...) \, -#define Z_IS_813_EQ_813(...) \, -#define Z_IS_814_EQ_814(...) \, -#define Z_IS_815_EQ_815(...) \, -#define Z_IS_816_EQ_816(...) \, -#define Z_IS_817_EQ_817(...) \, -#define Z_IS_818_EQ_818(...) \, -#define Z_IS_819_EQ_819(...) \, -#define Z_IS_820_EQ_820(...) \, -#define Z_IS_821_EQ_821(...) \, -#define Z_IS_822_EQ_822(...) \, -#define Z_IS_823_EQ_823(...) \, -#define Z_IS_824_EQ_824(...) \, -#define Z_IS_825_EQ_825(...) \, -#define Z_IS_826_EQ_826(...) \, -#define Z_IS_827_EQ_827(...) \, -#define Z_IS_828_EQ_828(...) \, -#define Z_IS_829_EQ_829(...) \, -#define Z_IS_830_EQ_830(...) \, -#define Z_IS_831_EQ_831(...) \, -#define Z_IS_832_EQ_832(...) \, -#define Z_IS_833_EQ_833(...) \, -#define Z_IS_834_EQ_834(...) \, -#define Z_IS_835_EQ_835(...) \, -#define Z_IS_836_EQ_836(...) \, -#define Z_IS_837_EQ_837(...) \, -#define Z_IS_838_EQ_838(...) \, -#define Z_IS_839_EQ_839(...) \, -#define Z_IS_840_EQ_840(...) \, -#define Z_IS_841_EQ_841(...) \, -#define Z_IS_842_EQ_842(...) \, -#define Z_IS_843_EQ_843(...) \, -#define Z_IS_844_EQ_844(...) \, -#define Z_IS_845_EQ_845(...) \, -#define Z_IS_846_EQ_846(...) \, -#define Z_IS_847_EQ_847(...) \, -#define Z_IS_848_EQ_848(...) \, -#define Z_IS_849_EQ_849(...) \, -#define Z_IS_850_EQ_850(...) \, -#define Z_IS_851_EQ_851(...) \, -#define Z_IS_852_EQ_852(...) \, -#define Z_IS_853_EQ_853(...) \, -#define Z_IS_854_EQ_854(...) \, -#define Z_IS_855_EQ_855(...) \, -#define Z_IS_856_EQ_856(...) \, -#define Z_IS_857_EQ_857(...) \, -#define Z_IS_858_EQ_858(...) \, -#define Z_IS_859_EQ_859(...) \, -#define Z_IS_860_EQ_860(...) \, -#define Z_IS_861_EQ_861(...) \, -#define Z_IS_862_EQ_862(...) \, -#define Z_IS_863_EQ_863(...) \, -#define Z_IS_864_EQ_864(...) \, -#define Z_IS_865_EQ_865(...) \, -#define Z_IS_866_EQ_866(...) \, -#define Z_IS_867_EQ_867(...) \, -#define Z_IS_868_EQ_868(...) \, -#define Z_IS_869_EQ_869(...) \, -#define Z_IS_870_EQ_870(...) \, -#define Z_IS_871_EQ_871(...) \, -#define Z_IS_872_EQ_872(...) \, -#define Z_IS_873_EQ_873(...) \, -#define Z_IS_874_EQ_874(...) \, -#define Z_IS_875_EQ_875(...) \, -#define Z_IS_876_EQ_876(...) \, -#define Z_IS_877_EQ_877(...) \, -#define Z_IS_878_EQ_878(...) \, -#define Z_IS_879_EQ_879(...) \, -#define Z_IS_880_EQ_880(...) \, -#define Z_IS_881_EQ_881(...) \, -#define Z_IS_882_EQ_882(...) \, -#define Z_IS_883_EQ_883(...) \, -#define Z_IS_884_EQ_884(...) \, -#define Z_IS_885_EQ_885(...) \, -#define Z_IS_886_EQ_886(...) \, -#define Z_IS_887_EQ_887(...) \, -#define Z_IS_888_EQ_888(...) \, -#define Z_IS_889_EQ_889(...) \, -#define Z_IS_890_EQ_890(...) \, -#define Z_IS_891_EQ_891(...) \, -#define Z_IS_892_EQ_892(...) \, -#define Z_IS_893_EQ_893(...) \, -#define Z_IS_894_EQ_894(...) \, -#define Z_IS_895_EQ_895(...) \, -#define Z_IS_896_EQ_896(...) \, -#define Z_IS_897_EQ_897(...) \, -#define Z_IS_898_EQ_898(...) \, -#define Z_IS_899_EQ_899(...) \, -#define Z_IS_900_EQ_900(...) \, -#define Z_IS_901_EQ_901(...) \, -#define Z_IS_902_EQ_902(...) \, -#define Z_IS_903_EQ_903(...) \, -#define Z_IS_904_EQ_904(...) \, -#define Z_IS_905_EQ_905(...) \, -#define Z_IS_906_EQ_906(...) \, -#define Z_IS_907_EQ_907(...) \, -#define Z_IS_908_EQ_908(...) \, -#define Z_IS_909_EQ_909(...) \, -#define Z_IS_910_EQ_910(...) \, -#define Z_IS_911_EQ_911(...) \, -#define Z_IS_912_EQ_912(...) \, -#define Z_IS_913_EQ_913(...) \, -#define Z_IS_914_EQ_914(...) \, -#define Z_IS_915_EQ_915(...) \, -#define Z_IS_916_EQ_916(...) \, -#define Z_IS_917_EQ_917(...) \, -#define Z_IS_918_EQ_918(...) \, -#define Z_IS_919_EQ_919(...) \, -#define Z_IS_920_EQ_920(...) \, -#define Z_IS_921_EQ_921(...) \, -#define Z_IS_922_EQ_922(...) \, -#define Z_IS_923_EQ_923(...) \, -#define Z_IS_924_EQ_924(...) \, -#define Z_IS_925_EQ_925(...) \, -#define Z_IS_926_EQ_926(...) \, -#define Z_IS_927_EQ_927(...) \, -#define Z_IS_928_EQ_928(...) \, -#define Z_IS_929_EQ_929(...) \, -#define Z_IS_930_EQ_930(...) \, -#define Z_IS_931_EQ_931(...) \, -#define Z_IS_932_EQ_932(...) \, -#define Z_IS_933_EQ_933(...) \, -#define Z_IS_934_EQ_934(...) \, -#define Z_IS_935_EQ_935(...) \, -#define Z_IS_936_EQ_936(...) \, -#define Z_IS_937_EQ_937(...) \, -#define Z_IS_938_EQ_938(...) \, -#define Z_IS_939_EQ_939(...) \, -#define Z_IS_940_EQ_940(...) \, -#define Z_IS_941_EQ_941(...) \, -#define Z_IS_942_EQ_942(...) \, -#define Z_IS_943_EQ_943(...) \, -#define Z_IS_944_EQ_944(...) \, -#define Z_IS_945_EQ_945(...) \, -#define Z_IS_946_EQ_946(...) \, -#define Z_IS_947_EQ_947(...) \, -#define Z_IS_948_EQ_948(...) \, -#define Z_IS_949_EQ_949(...) \, -#define Z_IS_950_EQ_950(...) \, -#define Z_IS_951_EQ_951(...) \, -#define Z_IS_952_EQ_952(...) \, -#define Z_IS_953_EQ_953(...) \, -#define Z_IS_954_EQ_954(...) \, -#define Z_IS_955_EQ_955(...) \, -#define Z_IS_956_EQ_956(...) \, -#define Z_IS_957_EQ_957(...) \, -#define Z_IS_958_EQ_958(...) \, -#define Z_IS_959_EQ_959(...) \, -#define Z_IS_960_EQ_960(...) \, -#define Z_IS_961_EQ_961(...) \, -#define Z_IS_962_EQ_962(...) \, -#define Z_IS_963_EQ_963(...) \, -#define Z_IS_964_EQ_964(...) \, -#define Z_IS_965_EQ_965(...) \, -#define Z_IS_966_EQ_966(...) \, -#define Z_IS_967_EQ_967(...) \, -#define Z_IS_968_EQ_968(...) \, -#define Z_IS_969_EQ_969(...) \, -#define Z_IS_970_EQ_970(...) \, -#define Z_IS_971_EQ_971(...) \, -#define Z_IS_972_EQ_972(...) \, -#define Z_IS_973_EQ_973(...) \, -#define Z_IS_974_EQ_974(...) \, -#define Z_IS_975_EQ_975(...) \, -#define Z_IS_976_EQ_976(...) \, -#define Z_IS_977_EQ_977(...) \, -#define Z_IS_978_EQ_978(...) \, -#define Z_IS_979_EQ_979(...) \, -#define Z_IS_980_EQ_980(...) \, -#define Z_IS_981_EQ_981(...) \, -#define Z_IS_982_EQ_982(...) \, -#define Z_IS_983_EQ_983(...) \, -#define Z_IS_984_EQ_984(...) \, -#define Z_IS_985_EQ_985(...) \, -#define Z_IS_986_EQ_986(...) \, -#define Z_IS_987_EQ_987(...) \, -#define Z_IS_988_EQ_988(...) \, -#define Z_IS_989_EQ_989(...) \, -#define Z_IS_990_EQ_990(...) \, -#define Z_IS_991_EQ_991(...) \, -#define Z_IS_992_EQ_992(...) \, -#define Z_IS_993_EQ_993(...) \, -#define Z_IS_994_EQ_994(...) \, -#define Z_IS_995_EQ_995(...) \, -#define Z_IS_996_EQ_996(...) \, -#define Z_IS_997_EQ_997(...) \, -#define Z_IS_998_EQ_998(...) \, -#define Z_IS_999_EQ_999(...) \, -#define Z_IS_1000_EQ_1000(...) \, -#define Z_IS_1001_EQ_1001(...) \, -#define Z_IS_1002_EQ_1002(...) \, -#define Z_IS_1003_EQ_1003(...) \, -#define Z_IS_1004_EQ_1004(...) \, -#define Z_IS_1005_EQ_1005(...) \, -#define Z_IS_1006_EQ_1006(...) \, -#define Z_IS_1007_EQ_1007(...) \, -#define Z_IS_1008_EQ_1008(...) \, -#define Z_IS_1009_EQ_1009(...) \, -#define Z_IS_1010_EQ_1010(...) \, -#define Z_IS_1011_EQ_1011(...) \, -#define Z_IS_1012_EQ_1012(...) \, -#define Z_IS_1013_EQ_1013(...) \, -#define Z_IS_1014_EQ_1014(...) \, -#define Z_IS_1015_EQ_1015(...) \, -#define Z_IS_1016_EQ_1016(...) \, -#define Z_IS_1017_EQ_1017(...) \, -#define Z_IS_1018_EQ_1018(...) \, -#define Z_IS_1019_EQ_1019(...) \, -#define Z_IS_1020_EQ_1020(...) \, -#define Z_IS_1021_EQ_1021(...) \, -#define Z_IS_1022_EQ_1022(...) \, -#define Z_IS_1023_EQ_1023(...) \, -#define Z_IS_1024_EQ_1024(...) \, -#define Z_IS_1025_EQ_1025(...) \, -#define Z_IS_1026_EQ_1026(...) \, -#define Z_IS_1027_EQ_1027(...) \, -#define Z_IS_1028_EQ_1028(...) \, -#define Z_IS_1029_EQ_1029(...) \, -#define Z_IS_1030_EQ_1030(...) \, -#define Z_IS_1031_EQ_1031(...) \, -#define Z_IS_1032_EQ_1032(...) \, -#define Z_IS_1033_EQ_1033(...) \, -#define Z_IS_1034_EQ_1034(...) \, -#define Z_IS_1035_EQ_1035(...) \, -#define Z_IS_1036_EQ_1036(...) \, -#define Z_IS_1037_EQ_1037(...) \, -#define Z_IS_1038_EQ_1038(...) \, -#define Z_IS_1039_EQ_1039(...) \, -#define Z_IS_1040_EQ_1040(...) \, -#define Z_IS_1041_EQ_1041(...) \, -#define Z_IS_1042_EQ_1042(...) \, -#define Z_IS_1043_EQ_1043(...) \, -#define Z_IS_1044_EQ_1044(...) \, -#define Z_IS_1045_EQ_1045(...) \, -#define Z_IS_1046_EQ_1046(...) \, -#define Z_IS_1047_EQ_1047(...) \, -#define Z_IS_1048_EQ_1048(...) \, -#define Z_IS_1049_EQ_1049(...) \, -#define Z_IS_1050_EQ_1050(...) \, -#define Z_IS_1051_EQ_1051(...) \, -#define Z_IS_1052_EQ_1052(...) \, -#define Z_IS_1053_EQ_1053(...) \, -#define Z_IS_1054_EQ_1054(...) \, -#define Z_IS_1055_EQ_1055(...) \, -#define Z_IS_1056_EQ_1056(...) \, -#define Z_IS_1057_EQ_1057(...) \, -#define Z_IS_1058_EQ_1058(...) \, -#define Z_IS_1059_EQ_1059(...) \, -#define Z_IS_1060_EQ_1060(...) \, -#define Z_IS_1061_EQ_1061(...) \, -#define Z_IS_1062_EQ_1062(...) \, -#define Z_IS_1063_EQ_1063(...) \, -#define Z_IS_1064_EQ_1064(...) \, -#define Z_IS_1065_EQ_1065(...) \, -#define Z_IS_1066_EQ_1066(...) \, -#define Z_IS_1067_EQ_1067(...) \, -#define Z_IS_1068_EQ_1068(...) \, -#define Z_IS_1069_EQ_1069(...) \, -#define Z_IS_1070_EQ_1070(...) \, -#define Z_IS_1071_EQ_1071(...) \, -#define Z_IS_1072_EQ_1072(...) \, -#define Z_IS_1073_EQ_1073(...) \, -#define Z_IS_1074_EQ_1074(...) \, -#define Z_IS_1075_EQ_1075(...) \, -#define Z_IS_1076_EQ_1076(...) \, -#define Z_IS_1077_EQ_1077(...) \, -#define Z_IS_1078_EQ_1078(...) \, -#define Z_IS_1079_EQ_1079(...) \, -#define Z_IS_1080_EQ_1080(...) \, -#define Z_IS_1081_EQ_1081(...) \, -#define Z_IS_1082_EQ_1082(...) \, -#define Z_IS_1083_EQ_1083(...) \, -#define Z_IS_1084_EQ_1084(...) \, -#define Z_IS_1085_EQ_1085(...) \, -#define Z_IS_1086_EQ_1086(...) \, -#define Z_IS_1087_EQ_1087(...) \, -#define Z_IS_1088_EQ_1088(...) \, -#define Z_IS_1089_EQ_1089(...) \, -#define Z_IS_1090_EQ_1090(...) \, -#define Z_IS_1091_EQ_1091(...) \, -#define Z_IS_1092_EQ_1092(...) \, -#define Z_IS_1093_EQ_1093(...) \, -#define Z_IS_1094_EQ_1094(...) \, -#define Z_IS_1095_EQ_1095(...) \, -#define Z_IS_1096_EQ_1096(...) \, -#define Z_IS_1097_EQ_1097(...) \, -#define Z_IS_1098_EQ_1098(...) \, -#define Z_IS_1099_EQ_1099(...) \, -#define Z_IS_1100_EQ_1100(...) \, -#define Z_IS_1101_EQ_1101(...) \, -#define Z_IS_1102_EQ_1102(...) \, -#define Z_IS_1103_EQ_1103(...) \, -#define Z_IS_1104_EQ_1104(...) \, -#define Z_IS_1105_EQ_1105(...) \, -#define Z_IS_1106_EQ_1106(...) \, -#define Z_IS_1107_EQ_1107(...) \, -#define Z_IS_1108_EQ_1108(...) \, -#define Z_IS_1109_EQ_1109(...) \, -#define Z_IS_1110_EQ_1110(...) \, -#define Z_IS_1111_EQ_1111(...) \, -#define Z_IS_1112_EQ_1112(...) \, -#define Z_IS_1113_EQ_1113(...) \, -#define Z_IS_1114_EQ_1114(...) \, -#define Z_IS_1115_EQ_1115(...) \, -#define Z_IS_1116_EQ_1116(...) \, -#define Z_IS_1117_EQ_1117(...) \, -#define Z_IS_1118_EQ_1118(...) \, -#define Z_IS_1119_EQ_1119(...) \, -#define Z_IS_1120_EQ_1120(...) \, -#define Z_IS_1121_EQ_1121(...) \, -#define Z_IS_1122_EQ_1122(...) \, -#define Z_IS_1123_EQ_1123(...) \, -#define Z_IS_1124_EQ_1124(...) \, -#define Z_IS_1125_EQ_1125(...) \, -#define Z_IS_1126_EQ_1126(...) \, -#define Z_IS_1127_EQ_1127(...) \, -#define Z_IS_1128_EQ_1128(...) \, -#define Z_IS_1129_EQ_1129(...) \, -#define Z_IS_1130_EQ_1130(...) \, -#define Z_IS_1131_EQ_1131(...) \, -#define Z_IS_1132_EQ_1132(...) \, -#define Z_IS_1133_EQ_1133(...) \, -#define Z_IS_1134_EQ_1134(...) \, -#define Z_IS_1135_EQ_1135(...) \, -#define Z_IS_1136_EQ_1136(...) \, -#define Z_IS_1137_EQ_1137(...) \, -#define Z_IS_1138_EQ_1138(...) \, -#define Z_IS_1139_EQ_1139(...) \, -#define Z_IS_1140_EQ_1140(...) \, -#define Z_IS_1141_EQ_1141(...) \, -#define Z_IS_1142_EQ_1142(...) \, -#define Z_IS_1143_EQ_1143(...) \, -#define Z_IS_1144_EQ_1144(...) \, -#define Z_IS_1145_EQ_1145(...) \, -#define Z_IS_1146_EQ_1146(...) \, -#define Z_IS_1147_EQ_1147(...) \, -#define Z_IS_1148_EQ_1148(...) \, -#define Z_IS_1149_EQ_1149(...) \, -#define Z_IS_1150_EQ_1150(...) \, -#define Z_IS_1151_EQ_1151(...) \, -#define Z_IS_1152_EQ_1152(...) \, -#define Z_IS_1153_EQ_1153(...) \, -#define Z_IS_1154_EQ_1154(...) \, -#define Z_IS_1155_EQ_1155(...) \, -#define Z_IS_1156_EQ_1156(...) \, -#define Z_IS_1157_EQ_1157(...) \, -#define Z_IS_1158_EQ_1158(...) \, -#define Z_IS_1159_EQ_1159(...) \, -#define Z_IS_1160_EQ_1160(...) \, -#define Z_IS_1161_EQ_1161(...) \, -#define Z_IS_1162_EQ_1162(...) \, -#define Z_IS_1163_EQ_1163(...) \, -#define Z_IS_1164_EQ_1164(...) \, -#define Z_IS_1165_EQ_1165(...) \, -#define Z_IS_1166_EQ_1166(...) \, -#define Z_IS_1167_EQ_1167(...) \, -#define Z_IS_1168_EQ_1168(...) \, -#define Z_IS_1169_EQ_1169(...) \, -#define Z_IS_1170_EQ_1170(...) \, -#define Z_IS_1171_EQ_1171(...) \, -#define Z_IS_1172_EQ_1172(...) \, -#define Z_IS_1173_EQ_1173(...) \, -#define Z_IS_1174_EQ_1174(...) \, -#define Z_IS_1175_EQ_1175(...) \, -#define Z_IS_1176_EQ_1176(...) \, -#define Z_IS_1177_EQ_1177(...) \, -#define Z_IS_1178_EQ_1178(...) \, -#define Z_IS_1179_EQ_1179(...) \, -#define Z_IS_1180_EQ_1180(...) \, -#define Z_IS_1181_EQ_1181(...) \, -#define Z_IS_1182_EQ_1182(...) \, -#define Z_IS_1183_EQ_1183(...) \, -#define Z_IS_1184_EQ_1184(...) \, -#define Z_IS_1185_EQ_1185(...) \, -#define Z_IS_1186_EQ_1186(...) \, -#define Z_IS_1187_EQ_1187(...) \, -#define Z_IS_1188_EQ_1188(...) \, -#define Z_IS_1189_EQ_1189(...) \, -#define Z_IS_1190_EQ_1190(...) \, -#define Z_IS_1191_EQ_1191(...) \, -#define Z_IS_1192_EQ_1192(...) \, -#define Z_IS_1193_EQ_1193(...) \, -#define Z_IS_1194_EQ_1194(...) \, -#define Z_IS_1195_EQ_1195(...) \, -#define Z_IS_1196_EQ_1196(...) \, -#define Z_IS_1197_EQ_1197(...) \, -#define Z_IS_1198_EQ_1198(...) \, -#define Z_IS_1199_EQ_1199(...) \, -#define Z_IS_1200_EQ_1200(...) \, -#define Z_IS_1201_EQ_1201(...) \, -#define Z_IS_1202_EQ_1202(...) \, -#define Z_IS_1203_EQ_1203(...) \, -#define Z_IS_1204_EQ_1204(...) \, -#define Z_IS_1205_EQ_1205(...) \, -#define Z_IS_1206_EQ_1206(...) \, -#define Z_IS_1207_EQ_1207(...) \, -#define Z_IS_1208_EQ_1208(...) \, -#define Z_IS_1209_EQ_1209(...) \, -#define Z_IS_1210_EQ_1210(...) \, -#define Z_IS_1211_EQ_1211(...) \, -#define Z_IS_1212_EQ_1212(...) \, -#define Z_IS_1213_EQ_1213(...) \, -#define Z_IS_1214_EQ_1214(...) \, -#define Z_IS_1215_EQ_1215(...) \, -#define Z_IS_1216_EQ_1216(...) \, -#define Z_IS_1217_EQ_1217(...) \, -#define Z_IS_1218_EQ_1218(...) \, -#define Z_IS_1219_EQ_1219(...) \, -#define Z_IS_1220_EQ_1220(...) \, -#define Z_IS_1221_EQ_1221(...) \, -#define Z_IS_1222_EQ_1222(...) \, -#define Z_IS_1223_EQ_1223(...) \, -#define Z_IS_1224_EQ_1224(...) \, -#define Z_IS_1225_EQ_1225(...) \, -#define Z_IS_1226_EQ_1226(...) \, -#define Z_IS_1227_EQ_1227(...) \, -#define Z_IS_1228_EQ_1228(...) \, -#define Z_IS_1229_EQ_1229(...) \, -#define Z_IS_1230_EQ_1230(...) \, -#define Z_IS_1231_EQ_1231(...) \, -#define Z_IS_1232_EQ_1232(...) \, -#define Z_IS_1233_EQ_1233(...) \, -#define Z_IS_1234_EQ_1234(...) \, -#define Z_IS_1235_EQ_1235(...) \, -#define Z_IS_1236_EQ_1236(...) \, -#define Z_IS_1237_EQ_1237(...) \, -#define Z_IS_1238_EQ_1238(...) \, -#define Z_IS_1239_EQ_1239(...) \, -#define Z_IS_1240_EQ_1240(...) \, -#define Z_IS_1241_EQ_1241(...) \, -#define Z_IS_1242_EQ_1242(...) \, -#define Z_IS_1243_EQ_1243(...) \, -#define Z_IS_1244_EQ_1244(...) \, -#define Z_IS_1245_EQ_1245(...) \, -#define Z_IS_1246_EQ_1246(...) \, -#define Z_IS_1247_EQ_1247(...) \, -#define Z_IS_1248_EQ_1248(...) \, -#define Z_IS_1249_EQ_1249(...) \, -#define Z_IS_1250_EQ_1250(...) \, -#define Z_IS_1251_EQ_1251(...) \, -#define Z_IS_1252_EQ_1252(...) \, -#define Z_IS_1253_EQ_1253(...) \, -#define Z_IS_1254_EQ_1254(...) \, -#define Z_IS_1255_EQ_1255(...) \, -#define Z_IS_1256_EQ_1256(...) \, -#define Z_IS_1257_EQ_1257(...) \, -#define Z_IS_1258_EQ_1258(...) \, -#define Z_IS_1259_EQ_1259(...) \, -#define Z_IS_1260_EQ_1260(...) \, -#define Z_IS_1261_EQ_1261(...) \, -#define Z_IS_1262_EQ_1262(...) \, -#define Z_IS_1263_EQ_1263(...) \, -#define Z_IS_1264_EQ_1264(...) \, -#define Z_IS_1265_EQ_1265(...) \, -#define Z_IS_1266_EQ_1266(...) \, -#define Z_IS_1267_EQ_1267(...) \, -#define Z_IS_1268_EQ_1268(...) \, -#define Z_IS_1269_EQ_1269(...) \, -#define Z_IS_1270_EQ_1270(...) \, -#define Z_IS_1271_EQ_1271(...) \, -#define Z_IS_1272_EQ_1272(...) \, -#define Z_IS_1273_EQ_1273(...) \, -#define Z_IS_1274_EQ_1274(...) \, -#define Z_IS_1275_EQ_1275(...) \, -#define Z_IS_1276_EQ_1276(...) \, -#define Z_IS_1277_EQ_1277(...) \, -#define Z_IS_1278_EQ_1278(...) \, -#define Z_IS_1279_EQ_1279(...) \, -#define Z_IS_1280_EQ_1280(...) \, -#define Z_IS_1281_EQ_1281(...) \, -#define Z_IS_1282_EQ_1282(...) \, -#define Z_IS_1283_EQ_1283(...) \, -#define Z_IS_1284_EQ_1284(...) \, -#define Z_IS_1285_EQ_1285(...) \, -#define Z_IS_1286_EQ_1286(...) \, -#define Z_IS_1287_EQ_1287(...) \, -#define Z_IS_1288_EQ_1288(...) \, -#define Z_IS_1289_EQ_1289(...) \, -#define Z_IS_1290_EQ_1290(...) \, -#define Z_IS_1291_EQ_1291(...) \, -#define Z_IS_1292_EQ_1292(...) \, -#define Z_IS_1293_EQ_1293(...) \, -#define Z_IS_1294_EQ_1294(...) \, -#define Z_IS_1295_EQ_1295(...) \, -#define Z_IS_1296_EQ_1296(...) \, -#define Z_IS_1297_EQ_1297(...) \, -#define Z_IS_1298_EQ_1298(...) \, -#define Z_IS_1299_EQ_1299(...) \, -#define Z_IS_1300_EQ_1300(...) \, -#define Z_IS_1301_EQ_1301(...) \, -#define Z_IS_1302_EQ_1302(...) \, -#define Z_IS_1303_EQ_1303(...) \, -#define Z_IS_1304_EQ_1304(...) \, -#define Z_IS_1305_EQ_1305(...) \, -#define Z_IS_1306_EQ_1306(...) \, -#define Z_IS_1307_EQ_1307(...) \, -#define Z_IS_1308_EQ_1308(...) \, -#define Z_IS_1309_EQ_1309(...) \, -#define Z_IS_1310_EQ_1310(...) \, -#define Z_IS_1311_EQ_1311(...) \, -#define Z_IS_1312_EQ_1312(...) \, -#define Z_IS_1313_EQ_1313(...) \, -#define Z_IS_1314_EQ_1314(...) \, -#define Z_IS_1315_EQ_1315(...) \, -#define Z_IS_1316_EQ_1316(...) \, -#define Z_IS_1317_EQ_1317(...) \, -#define Z_IS_1318_EQ_1318(...) \, -#define Z_IS_1319_EQ_1319(...) \, -#define Z_IS_1320_EQ_1320(...) \, -#define Z_IS_1321_EQ_1321(...) \, -#define Z_IS_1322_EQ_1322(...) \, -#define Z_IS_1323_EQ_1323(...) \, -#define Z_IS_1324_EQ_1324(...) \, -#define Z_IS_1325_EQ_1325(...) \, -#define Z_IS_1326_EQ_1326(...) \, -#define Z_IS_1327_EQ_1327(...) \, -#define Z_IS_1328_EQ_1328(...) \, -#define Z_IS_1329_EQ_1329(...) \, -#define Z_IS_1330_EQ_1330(...) \, -#define Z_IS_1331_EQ_1331(...) \, -#define Z_IS_1332_EQ_1332(...) \, -#define Z_IS_1333_EQ_1333(...) \, -#define Z_IS_1334_EQ_1334(...) \, -#define Z_IS_1335_EQ_1335(...) \, -#define Z_IS_1336_EQ_1336(...) \, -#define Z_IS_1337_EQ_1337(...) \, -#define Z_IS_1338_EQ_1338(...) \, -#define Z_IS_1339_EQ_1339(...) \, -#define Z_IS_1340_EQ_1340(...) \, -#define Z_IS_1341_EQ_1341(...) \, -#define Z_IS_1342_EQ_1342(...) \, -#define Z_IS_1343_EQ_1343(...) \, -#define Z_IS_1344_EQ_1344(...) \, -#define Z_IS_1345_EQ_1345(...) \, -#define Z_IS_1346_EQ_1346(...) \, -#define Z_IS_1347_EQ_1347(...) \, -#define Z_IS_1348_EQ_1348(...) \, -#define Z_IS_1349_EQ_1349(...) \, -#define Z_IS_1350_EQ_1350(...) \, -#define Z_IS_1351_EQ_1351(...) \, -#define Z_IS_1352_EQ_1352(...) \, -#define Z_IS_1353_EQ_1353(...) \, -#define Z_IS_1354_EQ_1354(...) \, -#define Z_IS_1355_EQ_1355(...) \, -#define Z_IS_1356_EQ_1356(...) \, -#define Z_IS_1357_EQ_1357(...) \, -#define Z_IS_1358_EQ_1358(...) \, -#define Z_IS_1359_EQ_1359(...) \, -#define Z_IS_1360_EQ_1360(...) \, -#define Z_IS_1361_EQ_1361(...) \, -#define Z_IS_1362_EQ_1362(...) \, -#define Z_IS_1363_EQ_1363(...) \, -#define Z_IS_1364_EQ_1364(...) \, -#define Z_IS_1365_EQ_1365(...) \, -#define Z_IS_1366_EQ_1366(...) \, -#define Z_IS_1367_EQ_1367(...) \, -#define Z_IS_1368_EQ_1368(...) \, -#define Z_IS_1369_EQ_1369(...) \, -#define Z_IS_1370_EQ_1370(...) \, -#define Z_IS_1371_EQ_1371(...) \, -#define Z_IS_1372_EQ_1372(...) \, -#define Z_IS_1373_EQ_1373(...) \, -#define Z_IS_1374_EQ_1374(...) \, -#define Z_IS_1375_EQ_1375(...) \, -#define Z_IS_1376_EQ_1376(...) \, -#define Z_IS_1377_EQ_1377(...) \, -#define Z_IS_1378_EQ_1378(...) \, -#define Z_IS_1379_EQ_1379(...) \, -#define Z_IS_1380_EQ_1380(...) \, -#define Z_IS_1381_EQ_1381(...) \, -#define Z_IS_1382_EQ_1382(...) \, -#define Z_IS_1383_EQ_1383(...) \, -#define Z_IS_1384_EQ_1384(...) \, -#define Z_IS_1385_EQ_1385(...) \, -#define Z_IS_1386_EQ_1386(...) \, -#define Z_IS_1387_EQ_1387(...) \, -#define Z_IS_1388_EQ_1388(...) \, -#define Z_IS_1389_EQ_1389(...) \, -#define Z_IS_1390_EQ_1390(...) \, -#define Z_IS_1391_EQ_1391(...) \, -#define Z_IS_1392_EQ_1392(...) \, -#define Z_IS_1393_EQ_1393(...) \, -#define Z_IS_1394_EQ_1394(...) \, -#define Z_IS_1395_EQ_1395(...) \, -#define Z_IS_1396_EQ_1396(...) \, -#define Z_IS_1397_EQ_1397(...) \, -#define Z_IS_1398_EQ_1398(...) \, -#define Z_IS_1399_EQ_1399(...) \, -#define Z_IS_1400_EQ_1400(...) \, -#define Z_IS_1401_EQ_1401(...) \, -#define Z_IS_1402_EQ_1402(...) \, -#define Z_IS_1403_EQ_1403(...) \, -#define Z_IS_1404_EQ_1404(...) \, -#define Z_IS_1405_EQ_1405(...) \, -#define Z_IS_1406_EQ_1406(...) \, -#define Z_IS_1407_EQ_1407(...) \, -#define Z_IS_1408_EQ_1408(...) \, -#define Z_IS_1409_EQ_1409(...) \, -#define Z_IS_1410_EQ_1410(...) \, -#define Z_IS_1411_EQ_1411(...) \, -#define Z_IS_1412_EQ_1412(...) \, -#define Z_IS_1413_EQ_1413(...) \, -#define Z_IS_1414_EQ_1414(...) \, -#define Z_IS_1415_EQ_1415(...) \, -#define Z_IS_1416_EQ_1416(...) \, -#define Z_IS_1417_EQ_1417(...) \, -#define Z_IS_1418_EQ_1418(...) \, -#define Z_IS_1419_EQ_1419(...) \, -#define Z_IS_1420_EQ_1420(...) \, -#define Z_IS_1421_EQ_1421(...) \, -#define Z_IS_1422_EQ_1422(...) \, -#define Z_IS_1423_EQ_1423(...) \, -#define Z_IS_1424_EQ_1424(...) \, -#define Z_IS_1425_EQ_1425(...) \, -#define Z_IS_1426_EQ_1426(...) \, -#define Z_IS_1427_EQ_1427(...) \, -#define Z_IS_1428_EQ_1428(...) \, -#define Z_IS_1429_EQ_1429(...) \, -#define Z_IS_1430_EQ_1430(...) \, -#define Z_IS_1431_EQ_1431(...) \, -#define Z_IS_1432_EQ_1432(...) \, -#define Z_IS_1433_EQ_1433(...) \, -#define Z_IS_1434_EQ_1434(...) \, -#define Z_IS_1435_EQ_1435(...) \, -#define Z_IS_1436_EQ_1436(...) \, -#define Z_IS_1437_EQ_1437(...) \, -#define Z_IS_1438_EQ_1438(...) \, -#define Z_IS_1439_EQ_1439(...) \, -#define Z_IS_1440_EQ_1440(...) \, -#define Z_IS_1441_EQ_1441(...) \, -#define Z_IS_1442_EQ_1442(...) \, -#define Z_IS_1443_EQ_1443(...) \, -#define Z_IS_1444_EQ_1444(...) \, -#define Z_IS_1445_EQ_1445(...) \, -#define Z_IS_1446_EQ_1446(...) \, -#define Z_IS_1447_EQ_1447(...) \, -#define Z_IS_1448_EQ_1448(...) \, -#define Z_IS_1449_EQ_1449(...) \, -#define Z_IS_1450_EQ_1450(...) \, -#define Z_IS_1451_EQ_1451(...) \, -#define Z_IS_1452_EQ_1452(...) \, -#define Z_IS_1453_EQ_1453(...) \, -#define Z_IS_1454_EQ_1454(...) \, -#define Z_IS_1455_EQ_1455(...) \, -#define Z_IS_1456_EQ_1456(...) \, -#define Z_IS_1457_EQ_1457(...) \, -#define Z_IS_1458_EQ_1458(...) \, -#define Z_IS_1459_EQ_1459(...) \, -#define Z_IS_1460_EQ_1460(...) \, -#define Z_IS_1461_EQ_1461(...) \, -#define Z_IS_1462_EQ_1462(...) \, -#define Z_IS_1463_EQ_1463(...) \, -#define Z_IS_1464_EQ_1464(...) \, -#define Z_IS_1465_EQ_1465(...) \, -#define Z_IS_1466_EQ_1466(...) \, -#define Z_IS_1467_EQ_1467(...) \, -#define Z_IS_1468_EQ_1468(...) \, -#define Z_IS_1469_EQ_1469(...) \, -#define Z_IS_1470_EQ_1470(...) \, -#define Z_IS_1471_EQ_1471(...) \, -#define Z_IS_1472_EQ_1472(...) \, -#define Z_IS_1473_EQ_1473(...) \, -#define Z_IS_1474_EQ_1474(...) \, -#define Z_IS_1475_EQ_1475(...) \, -#define Z_IS_1476_EQ_1476(...) \, -#define Z_IS_1477_EQ_1477(...) \, -#define Z_IS_1478_EQ_1478(...) \, -#define Z_IS_1479_EQ_1479(...) \, -#define Z_IS_1480_EQ_1480(...) \, -#define Z_IS_1481_EQ_1481(...) \, -#define Z_IS_1482_EQ_1482(...) \, -#define Z_IS_1483_EQ_1483(...) \, -#define Z_IS_1484_EQ_1484(...) \, -#define Z_IS_1485_EQ_1485(...) \, -#define Z_IS_1486_EQ_1486(...) \, -#define Z_IS_1487_EQ_1487(...) \, -#define Z_IS_1488_EQ_1488(...) \, -#define Z_IS_1489_EQ_1489(...) \, -#define Z_IS_1490_EQ_1490(...) \, -#define Z_IS_1491_EQ_1491(...) \, -#define Z_IS_1492_EQ_1492(...) \, -#define Z_IS_1493_EQ_1493(...) \, -#define Z_IS_1494_EQ_1494(...) \, -#define Z_IS_1495_EQ_1495(...) \, -#define Z_IS_1496_EQ_1496(...) \, -#define Z_IS_1497_EQ_1497(...) \, -#define Z_IS_1498_EQ_1498(...) \, -#define Z_IS_1499_EQ_1499(...) \, -#define Z_IS_1500_EQ_1500(...) \, -#define Z_IS_1501_EQ_1501(...) \, -#define Z_IS_1502_EQ_1502(...) \, -#define Z_IS_1503_EQ_1503(...) \, -#define Z_IS_1504_EQ_1504(...) \, -#define Z_IS_1505_EQ_1505(...) \, -#define Z_IS_1506_EQ_1506(...) \, -#define Z_IS_1507_EQ_1507(...) \, -#define Z_IS_1508_EQ_1508(...) \, -#define Z_IS_1509_EQ_1509(...) \, -#define Z_IS_1510_EQ_1510(...) \, -#define Z_IS_1511_EQ_1511(...) \, -#define Z_IS_1512_EQ_1512(...) \, -#define Z_IS_1513_EQ_1513(...) \, -#define Z_IS_1514_EQ_1514(...) \, -#define Z_IS_1515_EQ_1515(...) \, -#define Z_IS_1516_EQ_1516(...) \, -#define Z_IS_1517_EQ_1517(...) \, -#define Z_IS_1518_EQ_1518(...) \, -#define Z_IS_1519_EQ_1519(...) \, -#define Z_IS_1520_EQ_1520(...) \, -#define Z_IS_1521_EQ_1521(...) \, -#define Z_IS_1522_EQ_1522(...) \, -#define Z_IS_1523_EQ_1523(...) \, -#define Z_IS_1524_EQ_1524(...) \, -#define Z_IS_1525_EQ_1525(...) \, -#define Z_IS_1526_EQ_1526(...) \, -#define Z_IS_1527_EQ_1527(...) \, -#define Z_IS_1528_EQ_1528(...) \, -#define Z_IS_1529_EQ_1529(...) \, -#define Z_IS_1530_EQ_1530(...) \, -#define Z_IS_1531_EQ_1531(...) \, -#define Z_IS_1532_EQ_1532(...) \, -#define Z_IS_1533_EQ_1533(...) \, -#define Z_IS_1534_EQ_1534(...) \, -#define Z_IS_1535_EQ_1535(...) \, -#define Z_IS_1536_EQ_1536(...) \, -#define Z_IS_1537_EQ_1537(...) \, -#define Z_IS_1538_EQ_1538(...) \, -#define Z_IS_1539_EQ_1539(...) \, -#define Z_IS_1540_EQ_1540(...) \, -#define Z_IS_1541_EQ_1541(...) \, -#define Z_IS_1542_EQ_1542(...) \, -#define Z_IS_1543_EQ_1543(...) \, -#define Z_IS_1544_EQ_1544(...) \, -#define Z_IS_1545_EQ_1545(...) \, -#define Z_IS_1546_EQ_1546(...) \, -#define Z_IS_1547_EQ_1547(...) \, -#define Z_IS_1548_EQ_1548(...) \, -#define Z_IS_1549_EQ_1549(...) \, -#define Z_IS_1550_EQ_1550(...) \, -#define Z_IS_1551_EQ_1551(...) \, -#define Z_IS_1552_EQ_1552(...) \, -#define Z_IS_1553_EQ_1553(...) \, -#define Z_IS_1554_EQ_1554(...) \, -#define Z_IS_1555_EQ_1555(...) \, -#define Z_IS_1556_EQ_1556(...) \, -#define Z_IS_1557_EQ_1557(...) \, -#define Z_IS_1558_EQ_1558(...) \, -#define Z_IS_1559_EQ_1559(...) \, -#define Z_IS_1560_EQ_1560(...) \, -#define Z_IS_1561_EQ_1561(...) \, -#define Z_IS_1562_EQ_1562(...) \, -#define Z_IS_1563_EQ_1563(...) \, -#define Z_IS_1564_EQ_1564(...) \, -#define Z_IS_1565_EQ_1565(...) \, -#define Z_IS_1566_EQ_1566(...) \, -#define Z_IS_1567_EQ_1567(...) \, -#define Z_IS_1568_EQ_1568(...) \, -#define Z_IS_1569_EQ_1569(...) \, -#define Z_IS_1570_EQ_1570(...) \, -#define Z_IS_1571_EQ_1571(...) \, -#define Z_IS_1572_EQ_1572(...) \, -#define Z_IS_1573_EQ_1573(...) \, -#define Z_IS_1574_EQ_1574(...) \, -#define Z_IS_1575_EQ_1575(...) \, -#define Z_IS_1576_EQ_1576(...) \, -#define Z_IS_1577_EQ_1577(...) \, -#define Z_IS_1578_EQ_1578(...) \, -#define Z_IS_1579_EQ_1579(...) \, -#define Z_IS_1580_EQ_1580(...) \, -#define Z_IS_1581_EQ_1581(...) \, -#define Z_IS_1582_EQ_1582(...) \, -#define Z_IS_1583_EQ_1583(...) \, -#define Z_IS_1584_EQ_1584(...) \, -#define Z_IS_1585_EQ_1585(...) \, -#define Z_IS_1586_EQ_1586(...) \, -#define Z_IS_1587_EQ_1587(...) \, -#define Z_IS_1588_EQ_1588(...) \, -#define Z_IS_1589_EQ_1589(...) \, -#define Z_IS_1590_EQ_1590(...) \, -#define Z_IS_1591_EQ_1591(...) \, -#define Z_IS_1592_EQ_1592(...) \, -#define Z_IS_1593_EQ_1593(...) \, -#define Z_IS_1594_EQ_1594(...) \, -#define Z_IS_1595_EQ_1595(...) \, -#define Z_IS_1596_EQ_1596(...) \, -#define Z_IS_1597_EQ_1597(...) \, -#define Z_IS_1598_EQ_1598(...) \, -#define Z_IS_1599_EQ_1599(...) \, -#define Z_IS_1600_EQ_1600(...) \, -#define Z_IS_1601_EQ_1601(...) \, -#define Z_IS_1602_EQ_1602(...) \, -#define Z_IS_1603_EQ_1603(...) \, -#define Z_IS_1604_EQ_1604(...) \, -#define Z_IS_1605_EQ_1605(...) \, -#define Z_IS_1606_EQ_1606(...) \, -#define Z_IS_1607_EQ_1607(...) \, -#define Z_IS_1608_EQ_1608(...) \, -#define Z_IS_1609_EQ_1609(...) \, -#define Z_IS_1610_EQ_1610(...) \, -#define Z_IS_1611_EQ_1611(...) \, -#define Z_IS_1612_EQ_1612(...) \, -#define Z_IS_1613_EQ_1613(...) \, -#define Z_IS_1614_EQ_1614(...) \, -#define Z_IS_1615_EQ_1615(...) \, -#define Z_IS_1616_EQ_1616(...) \, -#define Z_IS_1617_EQ_1617(...) \, -#define Z_IS_1618_EQ_1618(...) \, -#define Z_IS_1619_EQ_1619(...) \, -#define Z_IS_1620_EQ_1620(...) \, -#define Z_IS_1621_EQ_1621(...) \, -#define Z_IS_1622_EQ_1622(...) \, -#define Z_IS_1623_EQ_1623(...) \, -#define Z_IS_1624_EQ_1624(...) \, -#define Z_IS_1625_EQ_1625(...) \, -#define Z_IS_1626_EQ_1626(...) \, -#define Z_IS_1627_EQ_1627(...) \, -#define Z_IS_1628_EQ_1628(...) \, -#define Z_IS_1629_EQ_1629(...) \, -#define Z_IS_1630_EQ_1630(...) \, -#define Z_IS_1631_EQ_1631(...) \, -#define Z_IS_1632_EQ_1632(...) \, -#define Z_IS_1633_EQ_1633(...) \, -#define Z_IS_1634_EQ_1634(...) \, -#define Z_IS_1635_EQ_1635(...) \, -#define Z_IS_1636_EQ_1636(...) \, -#define Z_IS_1637_EQ_1637(...) \, -#define Z_IS_1638_EQ_1638(...) \, -#define Z_IS_1639_EQ_1639(...) \, -#define Z_IS_1640_EQ_1640(...) \, -#define Z_IS_1641_EQ_1641(...) \, -#define Z_IS_1642_EQ_1642(...) \, -#define Z_IS_1643_EQ_1643(...) \, -#define Z_IS_1644_EQ_1644(...) \, -#define Z_IS_1645_EQ_1645(...) \, -#define Z_IS_1646_EQ_1646(...) \, -#define Z_IS_1647_EQ_1647(...) \, -#define Z_IS_1648_EQ_1648(...) \, -#define Z_IS_1649_EQ_1649(...) \, -#define Z_IS_1650_EQ_1650(...) \, -#define Z_IS_1651_EQ_1651(...) \, -#define Z_IS_1652_EQ_1652(...) \, -#define Z_IS_1653_EQ_1653(...) \, -#define Z_IS_1654_EQ_1654(...) \, -#define Z_IS_1655_EQ_1655(...) \, -#define Z_IS_1656_EQ_1656(...) \, -#define Z_IS_1657_EQ_1657(...) \, -#define Z_IS_1658_EQ_1658(...) \, -#define Z_IS_1659_EQ_1659(...) \, -#define Z_IS_1660_EQ_1660(...) \, -#define Z_IS_1661_EQ_1661(...) \, -#define Z_IS_1662_EQ_1662(...) \, -#define Z_IS_1663_EQ_1663(...) \, -#define Z_IS_1664_EQ_1664(...) \, -#define Z_IS_1665_EQ_1665(...) \, -#define Z_IS_1666_EQ_1666(...) \, -#define Z_IS_1667_EQ_1667(...) \, -#define Z_IS_1668_EQ_1668(...) \, -#define Z_IS_1669_EQ_1669(...) \, -#define Z_IS_1670_EQ_1670(...) \, -#define Z_IS_1671_EQ_1671(...) \, -#define Z_IS_1672_EQ_1672(...) \, -#define Z_IS_1673_EQ_1673(...) \, -#define Z_IS_1674_EQ_1674(...) \, -#define Z_IS_1675_EQ_1675(...) \, -#define Z_IS_1676_EQ_1676(...) \, -#define Z_IS_1677_EQ_1677(...) \, -#define Z_IS_1678_EQ_1678(...) \, -#define Z_IS_1679_EQ_1679(...) \, -#define Z_IS_1680_EQ_1680(...) \, -#define Z_IS_1681_EQ_1681(...) \, -#define Z_IS_1682_EQ_1682(...) \, -#define Z_IS_1683_EQ_1683(...) \, -#define Z_IS_1684_EQ_1684(...) \, -#define Z_IS_1685_EQ_1685(...) \, -#define Z_IS_1686_EQ_1686(...) \, -#define Z_IS_1687_EQ_1687(...) \, -#define Z_IS_1688_EQ_1688(...) \, -#define Z_IS_1689_EQ_1689(...) \, -#define Z_IS_1690_EQ_1690(...) \, -#define Z_IS_1691_EQ_1691(...) \, -#define Z_IS_1692_EQ_1692(...) \, -#define Z_IS_1693_EQ_1693(...) \, -#define Z_IS_1694_EQ_1694(...) \, -#define Z_IS_1695_EQ_1695(...) \, -#define Z_IS_1696_EQ_1696(...) \, -#define Z_IS_1697_EQ_1697(...) \, -#define Z_IS_1698_EQ_1698(...) \, -#define Z_IS_1699_EQ_1699(...) \, -#define Z_IS_1700_EQ_1700(...) \, -#define Z_IS_1701_EQ_1701(...) \, -#define Z_IS_1702_EQ_1702(...) \, -#define Z_IS_1703_EQ_1703(...) \, -#define Z_IS_1704_EQ_1704(...) \, -#define Z_IS_1705_EQ_1705(...) \, -#define Z_IS_1706_EQ_1706(...) \, -#define Z_IS_1707_EQ_1707(...) \, -#define Z_IS_1708_EQ_1708(...) \, -#define Z_IS_1709_EQ_1709(...) \, -#define Z_IS_1710_EQ_1710(...) \, -#define Z_IS_1711_EQ_1711(...) \, -#define Z_IS_1712_EQ_1712(...) \, -#define Z_IS_1713_EQ_1713(...) \, -#define Z_IS_1714_EQ_1714(...) \, -#define Z_IS_1715_EQ_1715(...) \, -#define Z_IS_1716_EQ_1716(...) \, -#define Z_IS_1717_EQ_1717(...) \, -#define Z_IS_1718_EQ_1718(...) \, -#define Z_IS_1719_EQ_1719(...) \, -#define Z_IS_1720_EQ_1720(...) \, -#define Z_IS_1721_EQ_1721(...) \, -#define Z_IS_1722_EQ_1722(...) \, -#define Z_IS_1723_EQ_1723(...) \, -#define Z_IS_1724_EQ_1724(...) \, -#define Z_IS_1725_EQ_1725(...) \, -#define Z_IS_1726_EQ_1726(...) \, -#define Z_IS_1727_EQ_1727(...) \, -#define Z_IS_1728_EQ_1728(...) \, -#define Z_IS_1729_EQ_1729(...) \, -#define Z_IS_1730_EQ_1730(...) \, -#define Z_IS_1731_EQ_1731(...) \, -#define Z_IS_1732_EQ_1732(...) \, -#define Z_IS_1733_EQ_1733(...) \, -#define Z_IS_1734_EQ_1734(...) \, -#define Z_IS_1735_EQ_1735(...) \, -#define Z_IS_1736_EQ_1736(...) \, -#define Z_IS_1737_EQ_1737(...) \, -#define Z_IS_1738_EQ_1738(...) \, -#define Z_IS_1739_EQ_1739(...) \, -#define Z_IS_1740_EQ_1740(...) \, -#define Z_IS_1741_EQ_1741(...) \, -#define Z_IS_1742_EQ_1742(...) \, -#define Z_IS_1743_EQ_1743(...) \, -#define Z_IS_1744_EQ_1744(...) \, -#define Z_IS_1745_EQ_1745(...) \, -#define Z_IS_1746_EQ_1746(...) \, -#define Z_IS_1747_EQ_1747(...) \, -#define Z_IS_1748_EQ_1748(...) \, -#define Z_IS_1749_EQ_1749(...) \, -#define Z_IS_1750_EQ_1750(...) \, -#define Z_IS_1751_EQ_1751(...) \, -#define Z_IS_1752_EQ_1752(...) \, -#define Z_IS_1753_EQ_1753(...) \, -#define Z_IS_1754_EQ_1754(...) \, -#define Z_IS_1755_EQ_1755(...) \, -#define Z_IS_1756_EQ_1756(...) \, -#define Z_IS_1757_EQ_1757(...) \, -#define Z_IS_1758_EQ_1758(...) \, -#define Z_IS_1759_EQ_1759(...) \, -#define Z_IS_1760_EQ_1760(...) \, -#define Z_IS_1761_EQ_1761(...) \, -#define Z_IS_1762_EQ_1762(...) \, -#define Z_IS_1763_EQ_1763(...) \, -#define Z_IS_1764_EQ_1764(...) \, -#define Z_IS_1765_EQ_1765(...) \, -#define Z_IS_1766_EQ_1766(...) \, -#define Z_IS_1767_EQ_1767(...) \, -#define Z_IS_1768_EQ_1768(...) \, -#define Z_IS_1769_EQ_1769(...) \, -#define Z_IS_1770_EQ_1770(...) \, -#define Z_IS_1771_EQ_1771(...) \, -#define Z_IS_1772_EQ_1772(...) \, -#define Z_IS_1773_EQ_1773(...) \, -#define Z_IS_1774_EQ_1774(...) \, -#define Z_IS_1775_EQ_1775(...) \, -#define Z_IS_1776_EQ_1776(...) \, -#define Z_IS_1777_EQ_1777(...) \, -#define Z_IS_1778_EQ_1778(...) \, -#define Z_IS_1779_EQ_1779(...) \, -#define Z_IS_1780_EQ_1780(...) \, -#define Z_IS_1781_EQ_1781(...) \, -#define Z_IS_1782_EQ_1782(...) \, -#define Z_IS_1783_EQ_1783(...) \, -#define Z_IS_1784_EQ_1784(...) \, -#define Z_IS_1785_EQ_1785(...) \, -#define Z_IS_1786_EQ_1786(...) \, -#define Z_IS_1787_EQ_1787(...) \, -#define Z_IS_1788_EQ_1788(...) \, -#define Z_IS_1789_EQ_1789(...) \, -#define Z_IS_1790_EQ_1790(...) \, -#define Z_IS_1791_EQ_1791(...) \, -#define Z_IS_1792_EQ_1792(...) \, -#define Z_IS_1793_EQ_1793(...) \, -#define Z_IS_1794_EQ_1794(...) \, -#define Z_IS_1795_EQ_1795(...) \, -#define Z_IS_1796_EQ_1796(...) \, -#define Z_IS_1797_EQ_1797(...) \, -#define Z_IS_1798_EQ_1798(...) \, -#define Z_IS_1799_EQ_1799(...) \, -#define Z_IS_1800_EQ_1800(...) \, -#define Z_IS_1801_EQ_1801(...) \, -#define Z_IS_1802_EQ_1802(...) \, -#define Z_IS_1803_EQ_1803(...) \, -#define Z_IS_1804_EQ_1804(...) \, -#define Z_IS_1805_EQ_1805(...) \, -#define Z_IS_1806_EQ_1806(...) \, -#define Z_IS_1807_EQ_1807(...) \, -#define Z_IS_1808_EQ_1808(...) \, -#define Z_IS_1809_EQ_1809(...) \, -#define Z_IS_1810_EQ_1810(...) \, -#define Z_IS_1811_EQ_1811(...) \, -#define Z_IS_1812_EQ_1812(...) \, -#define Z_IS_1813_EQ_1813(...) \, -#define Z_IS_1814_EQ_1814(...) \, -#define Z_IS_1815_EQ_1815(...) \, -#define Z_IS_1816_EQ_1816(...) \, -#define Z_IS_1817_EQ_1817(...) \, -#define Z_IS_1818_EQ_1818(...) \, -#define Z_IS_1819_EQ_1819(...) \, -#define Z_IS_1820_EQ_1820(...) \, -#define Z_IS_1821_EQ_1821(...) \, -#define Z_IS_1822_EQ_1822(...) \, -#define Z_IS_1823_EQ_1823(...) \, -#define Z_IS_1824_EQ_1824(...) \, -#define Z_IS_1825_EQ_1825(...) \, -#define Z_IS_1826_EQ_1826(...) \, -#define Z_IS_1827_EQ_1827(...) \, -#define Z_IS_1828_EQ_1828(...) \, -#define Z_IS_1829_EQ_1829(...) \, -#define Z_IS_1830_EQ_1830(...) \, -#define Z_IS_1831_EQ_1831(...) \, -#define Z_IS_1832_EQ_1832(...) \, -#define Z_IS_1833_EQ_1833(...) \, -#define Z_IS_1834_EQ_1834(...) \, -#define Z_IS_1835_EQ_1835(...) \, -#define Z_IS_1836_EQ_1836(...) \, -#define Z_IS_1837_EQ_1837(...) \, -#define Z_IS_1838_EQ_1838(...) \, -#define Z_IS_1839_EQ_1839(...) \, -#define Z_IS_1840_EQ_1840(...) \, -#define Z_IS_1841_EQ_1841(...) \, -#define Z_IS_1842_EQ_1842(...) \, -#define Z_IS_1843_EQ_1843(...) \, -#define Z_IS_1844_EQ_1844(...) \, -#define Z_IS_1845_EQ_1845(...) \, -#define Z_IS_1846_EQ_1846(...) \, -#define Z_IS_1847_EQ_1847(...) \, -#define Z_IS_1848_EQ_1848(...) \, -#define Z_IS_1849_EQ_1849(...) \, -#define Z_IS_1850_EQ_1850(...) \, -#define Z_IS_1851_EQ_1851(...) \, -#define Z_IS_1852_EQ_1852(...) \, -#define Z_IS_1853_EQ_1853(...) \, -#define Z_IS_1854_EQ_1854(...) \, -#define Z_IS_1855_EQ_1855(...) \, -#define Z_IS_1856_EQ_1856(...) \, -#define Z_IS_1857_EQ_1857(...) \, -#define Z_IS_1858_EQ_1858(...) \, -#define Z_IS_1859_EQ_1859(...) \, -#define Z_IS_1860_EQ_1860(...) \, -#define Z_IS_1861_EQ_1861(...) \, -#define Z_IS_1862_EQ_1862(...) \, -#define Z_IS_1863_EQ_1863(...) \, -#define Z_IS_1864_EQ_1864(...) \, -#define Z_IS_1865_EQ_1865(...) \, -#define Z_IS_1866_EQ_1866(...) \, -#define Z_IS_1867_EQ_1867(...) \, -#define Z_IS_1868_EQ_1868(...) \, -#define Z_IS_1869_EQ_1869(...) \, -#define Z_IS_1870_EQ_1870(...) \, -#define Z_IS_1871_EQ_1871(...) \, -#define Z_IS_1872_EQ_1872(...) \, -#define Z_IS_1873_EQ_1873(...) \, -#define Z_IS_1874_EQ_1874(...) \, -#define Z_IS_1875_EQ_1875(...) \, -#define Z_IS_1876_EQ_1876(...) \, -#define Z_IS_1877_EQ_1877(...) \, -#define Z_IS_1878_EQ_1878(...) \, -#define Z_IS_1879_EQ_1879(...) \, -#define Z_IS_1880_EQ_1880(...) \, -#define Z_IS_1881_EQ_1881(...) \, -#define Z_IS_1882_EQ_1882(...) \, -#define Z_IS_1883_EQ_1883(...) \, -#define Z_IS_1884_EQ_1884(...) \, -#define Z_IS_1885_EQ_1885(...) \, -#define Z_IS_1886_EQ_1886(...) \, -#define Z_IS_1887_EQ_1887(...) \, -#define Z_IS_1888_EQ_1888(...) \, -#define Z_IS_1889_EQ_1889(...) \, -#define Z_IS_1890_EQ_1890(...) \, -#define Z_IS_1891_EQ_1891(...) \, -#define Z_IS_1892_EQ_1892(...) \, -#define Z_IS_1893_EQ_1893(...) \, -#define Z_IS_1894_EQ_1894(...) \, -#define Z_IS_1895_EQ_1895(...) \, -#define Z_IS_1896_EQ_1896(...) \, -#define Z_IS_1897_EQ_1897(...) \, -#define Z_IS_1898_EQ_1898(...) \, -#define Z_IS_1899_EQ_1899(...) \, -#define Z_IS_1900_EQ_1900(...) \, -#define Z_IS_1901_EQ_1901(...) \, -#define Z_IS_1902_EQ_1902(...) \, -#define Z_IS_1903_EQ_1903(...) \, -#define Z_IS_1904_EQ_1904(...) \, -#define Z_IS_1905_EQ_1905(...) \, -#define Z_IS_1906_EQ_1906(...) \, -#define Z_IS_1907_EQ_1907(...) \, -#define Z_IS_1908_EQ_1908(...) \, -#define Z_IS_1909_EQ_1909(...) \, -#define Z_IS_1910_EQ_1910(...) \, -#define Z_IS_1911_EQ_1911(...) \, -#define Z_IS_1912_EQ_1912(...) \, -#define Z_IS_1913_EQ_1913(...) \, -#define Z_IS_1914_EQ_1914(...) \, -#define Z_IS_1915_EQ_1915(...) \, -#define Z_IS_1916_EQ_1916(...) \, -#define Z_IS_1917_EQ_1917(...) \, -#define Z_IS_1918_EQ_1918(...) \, -#define Z_IS_1919_EQ_1919(...) \, -#define Z_IS_1920_EQ_1920(...) \, -#define Z_IS_1921_EQ_1921(...) \, -#define Z_IS_1922_EQ_1922(...) \, -#define Z_IS_1923_EQ_1923(...) \, -#define Z_IS_1924_EQ_1924(...) \, -#define Z_IS_1925_EQ_1925(...) \, -#define Z_IS_1926_EQ_1926(...) \, -#define Z_IS_1927_EQ_1927(...) \, -#define Z_IS_1928_EQ_1928(...) \, -#define Z_IS_1929_EQ_1929(...) \, -#define Z_IS_1930_EQ_1930(...) \, -#define Z_IS_1931_EQ_1931(...) \, -#define Z_IS_1932_EQ_1932(...) \, -#define Z_IS_1933_EQ_1933(...) \, -#define Z_IS_1934_EQ_1934(...) \, -#define Z_IS_1935_EQ_1935(...) \, -#define Z_IS_1936_EQ_1936(...) \, -#define Z_IS_1937_EQ_1937(...) \, -#define Z_IS_1938_EQ_1938(...) \, -#define Z_IS_1939_EQ_1939(...) \, -#define Z_IS_1940_EQ_1940(...) \, -#define Z_IS_1941_EQ_1941(...) \, -#define Z_IS_1942_EQ_1942(...) \, -#define Z_IS_1943_EQ_1943(...) \, -#define Z_IS_1944_EQ_1944(...) \, -#define Z_IS_1945_EQ_1945(...) \, -#define Z_IS_1946_EQ_1946(...) \, -#define Z_IS_1947_EQ_1947(...) \, -#define Z_IS_1948_EQ_1948(...) \, -#define Z_IS_1949_EQ_1949(...) \, -#define Z_IS_1950_EQ_1950(...) \, -#define Z_IS_1951_EQ_1951(...) \, -#define Z_IS_1952_EQ_1952(...) \, -#define Z_IS_1953_EQ_1953(...) \, -#define Z_IS_1954_EQ_1954(...) \, -#define Z_IS_1955_EQ_1955(...) \, -#define Z_IS_1956_EQ_1956(...) \, -#define Z_IS_1957_EQ_1957(...) \, -#define Z_IS_1958_EQ_1958(...) \, -#define Z_IS_1959_EQ_1959(...) \, -#define Z_IS_1960_EQ_1960(...) \, -#define Z_IS_1961_EQ_1961(...) \, -#define Z_IS_1962_EQ_1962(...) \, -#define Z_IS_1963_EQ_1963(...) \, -#define Z_IS_1964_EQ_1964(...) \, -#define Z_IS_1965_EQ_1965(...) \, -#define Z_IS_1966_EQ_1966(...) \, -#define Z_IS_1967_EQ_1967(...) \, -#define Z_IS_1968_EQ_1968(...) \, -#define Z_IS_1969_EQ_1969(...) \, -#define Z_IS_1970_EQ_1970(...) \, -#define Z_IS_1971_EQ_1971(...) \, -#define Z_IS_1972_EQ_1972(...) \, -#define Z_IS_1973_EQ_1973(...) \, -#define Z_IS_1974_EQ_1974(...) \, -#define Z_IS_1975_EQ_1975(...) \, -#define Z_IS_1976_EQ_1976(...) \, -#define Z_IS_1977_EQ_1977(...) \, -#define Z_IS_1978_EQ_1978(...) \, -#define Z_IS_1979_EQ_1979(...) \, -#define Z_IS_1980_EQ_1980(...) \, -#define Z_IS_1981_EQ_1981(...) \, -#define Z_IS_1982_EQ_1982(...) \, -#define Z_IS_1983_EQ_1983(...) \, -#define Z_IS_1984_EQ_1984(...) \, -#define Z_IS_1985_EQ_1985(...) \, -#define Z_IS_1986_EQ_1986(...) \, -#define Z_IS_1987_EQ_1987(...) \, -#define Z_IS_1988_EQ_1988(...) \, -#define Z_IS_1989_EQ_1989(...) \, -#define Z_IS_1990_EQ_1990(...) \, -#define Z_IS_1991_EQ_1991(...) \, -#define Z_IS_1992_EQ_1992(...) \, -#define Z_IS_1993_EQ_1993(...) \, -#define Z_IS_1994_EQ_1994(...) \, -#define Z_IS_1995_EQ_1995(...) \, -#define Z_IS_1996_EQ_1996(...) \, -#define Z_IS_1997_EQ_1997(...) \, -#define Z_IS_1998_EQ_1998(...) \, -#define Z_IS_1999_EQ_1999(...) \, -#define Z_IS_2000_EQ_2000(...) \, -#define Z_IS_2001_EQ_2001(...) \, -#define Z_IS_2002_EQ_2002(...) \, -#define Z_IS_2003_EQ_2003(...) \, -#define Z_IS_2004_EQ_2004(...) \, -#define Z_IS_2005_EQ_2005(...) \, -#define Z_IS_2006_EQ_2006(...) \, -#define Z_IS_2007_EQ_2007(...) \, -#define Z_IS_2008_EQ_2008(...) \, -#define Z_IS_2009_EQ_2009(...) \, -#define Z_IS_2010_EQ_2010(...) \, -#define Z_IS_2011_EQ_2011(...) \, -#define Z_IS_2012_EQ_2012(...) \, -#define Z_IS_2013_EQ_2013(...) \, -#define Z_IS_2014_EQ_2014(...) \, -#define Z_IS_2015_EQ_2015(...) \, -#define Z_IS_2016_EQ_2016(...) \, -#define Z_IS_2017_EQ_2017(...) \, -#define Z_IS_2018_EQ_2018(...) \, -#define Z_IS_2019_EQ_2019(...) \, -#define Z_IS_2020_EQ_2020(...) \, -#define Z_IS_2021_EQ_2021(...) \, -#define Z_IS_2022_EQ_2022(...) \, -#define Z_IS_2023_EQ_2023(...) \, -#define Z_IS_2024_EQ_2024(...) \, -#define Z_IS_2025_EQ_2025(...) \, -#define Z_IS_2026_EQ_2026(...) \, -#define Z_IS_2027_EQ_2027(...) \, -#define Z_IS_2028_EQ_2028(...) \, -#define Z_IS_2029_EQ_2029(...) \, -#define Z_IS_2030_EQ_2030(...) \, -#define Z_IS_2031_EQ_2031(...) \, -#define Z_IS_2032_EQ_2032(...) \, -#define Z_IS_2033_EQ_2033(...) \, -#define Z_IS_2034_EQ_2034(...) \, -#define Z_IS_2035_EQ_2035(...) \, -#define Z_IS_2036_EQ_2036(...) \, -#define Z_IS_2037_EQ_2037(...) \, -#define Z_IS_2038_EQ_2038(...) \, -#define Z_IS_2039_EQ_2039(...) \, -#define Z_IS_2040_EQ_2040(...) \, -#define Z_IS_2041_EQ_2041(...) \, -#define Z_IS_2042_EQ_2042(...) \, -#define Z_IS_2043_EQ_2043(...) \, -#define Z_IS_2044_EQ_2044(...) \, -#define Z_IS_2045_EQ_2045(...) \, -#define Z_IS_2046_EQ_2046(...) \, -#define Z_IS_2047_EQ_2047(...) \, -#define Z_IS_2048_EQ_2048(...) \, -#define Z_IS_2049_EQ_2049(...) \, -#define Z_IS_2050_EQ_2050(...) \, -#define Z_IS_2051_EQ_2051(...) \, -#define Z_IS_2052_EQ_2052(...) \, -#define Z_IS_2053_EQ_2053(...) \, -#define Z_IS_2054_EQ_2054(...) \, -#define Z_IS_2055_EQ_2055(...) \, -#define Z_IS_2056_EQ_2056(...) \, -#define Z_IS_2057_EQ_2057(...) \, -#define Z_IS_2058_EQ_2058(...) \, -#define Z_IS_2059_EQ_2059(...) \, -#define Z_IS_2060_EQ_2060(...) \, -#define Z_IS_2061_EQ_2061(...) \, -#define Z_IS_2062_EQ_2062(...) \, -#define Z_IS_2063_EQ_2063(...) \, -#define Z_IS_2064_EQ_2064(...) \, -#define Z_IS_2065_EQ_2065(...) \, -#define Z_IS_2066_EQ_2066(...) \, -#define Z_IS_2067_EQ_2067(...) \, -#define Z_IS_2068_EQ_2068(...) \, -#define Z_IS_2069_EQ_2069(...) \, -#define Z_IS_2070_EQ_2070(...) \, -#define Z_IS_2071_EQ_2071(...) \, -#define Z_IS_2072_EQ_2072(...) \, -#define Z_IS_2073_EQ_2073(...) \, -#define Z_IS_2074_EQ_2074(...) \, -#define Z_IS_2075_EQ_2075(...) \, -#define Z_IS_2076_EQ_2076(...) \, -#define Z_IS_2077_EQ_2077(...) \, -#define Z_IS_2078_EQ_2078(...) \, -#define Z_IS_2079_EQ_2079(...) \, -#define Z_IS_2080_EQ_2080(...) \, -#define Z_IS_2081_EQ_2081(...) \, -#define Z_IS_2082_EQ_2082(...) \, -#define Z_IS_2083_EQ_2083(...) \, -#define Z_IS_2084_EQ_2084(...) \, -#define Z_IS_2085_EQ_2085(...) \, -#define Z_IS_2086_EQ_2086(...) \, -#define Z_IS_2087_EQ_2087(...) \, -#define Z_IS_2088_EQ_2088(...) \, -#define Z_IS_2089_EQ_2089(...) \, -#define Z_IS_2090_EQ_2090(...) \, -#define Z_IS_2091_EQ_2091(...) \, -#define Z_IS_2092_EQ_2092(...) \, -#define Z_IS_2093_EQ_2093(...) \, -#define Z_IS_2094_EQ_2094(...) \, -#define Z_IS_2095_EQ_2095(...) \, -#define Z_IS_2096_EQ_2096(...) \, -#define Z_IS_2097_EQ_2097(...) \, -#define Z_IS_2098_EQ_2098(...) \, -#define Z_IS_2099_EQ_2099(...) \, -#define Z_IS_2100_EQ_2100(...) \, -#define Z_IS_2101_EQ_2101(...) \, -#define Z_IS_2102_EQ_2102(...) \, -#define Z_IS_2103_EQ_2103(...) \, -#define Z_IS_2104_EQ_2104(...) \, -#define Z_IS_2105_EQ_2105(...) \, -#define Z_IS_2106_EQ_2106(...) \, -#define Z_IS_2107_EQ_2107(...) \, -#define Z_IS_2108_EQ_2108(...) \, -#define Z_IS_2109_EQ_2109(...) \, -#define Z_IS_2110_EQ_2110(...) \, -#define Z_IS_2111_EQ_2111(...) \, -#define Z_IS_2112_EQ_2112(...) \, -#define Z_IS_2113_EQ_2113(...) \, -#define Z_IS_2114_EQ_2114(...) \, -#define Z_IS_2115_EQ_2115(...) \, -#define Z_IS_2116_EQ_2116(...) \, -#define Z_IS_2117_EQ_2117(...) \, -#define Z_IS_2118_EQ_2118(...) \, -#define Z_IS_2119_EQ_2119(...) \, -#define Z_IS_2120_EQ_2120(...) \, -#define Z_IS_2121_EQ_2121(...) \, -#define Z_IS_2122_EQ_2122(...) \, -#define Z_IS_2123_EQ_2123(...) \, -#define Z_IS_2124_EQ_2124(...) \, -#define Z_IS_2125_EQ_2125(...) \, -#define Z_IS_2126_EQ_2126(...) \, -#define Z_IS_2127_EQ_2127(...) \, -#define Z_IS_2128_EQ_2128(...) \, -#define Z_IS_2129_EQ_2129(...) \, -#define Z_IS_2130_EQ_2130(...) \, -#define Z_IS_2131_EQ_2131(...) \, -#define Z_IS_2132_EQ_2132(...) \, -#define Z_IS_2133_EQ_2133(...) \, -#define Z_IS_2134_EQ_2134(...) \, -#define Z_IS_2135_EQ_2135(...) \, -#define Z_IS_2136_EQ_2136(...) \, -#define Z_IS_2137_EQ_2137(...) \, -#define Z_IS_2138_EQ_2138(...) \, -#define Z_IS_2139_EQ_2139(...) \, -#define Z_IS_2140_EQ_2140(...) \, -#define Z_IS_2141_EQ_2141(...) \, -#define Z_IS_2142_EQ_2142(...) \, -#define Z_IS_2143_EQ_2143(...) \, -#define Z_IS_2144_EQ_2144(...) \, -#define Z_IS_2145_EQ_2145(...) \, -#define Z_IS_2146_EQ_2146(...) \, -#define Z_IS_2147_EQ_2147(...) \, -#define Z_IS_2148_EQ_2148(...) \, -#define Z_IS_2149_EQ_2149(...) \, -#define Z_IS_2150_EQ_2150(...) \, -#define Z_IS_2151_EQ_2151(...) \, -#define Z_IS_2152_EQ_2152(...) \, -#define Z_IS_2153_EQ_2153(...) \, -#define Z_IS_2154_EQ_2154(...) \, -#define Z_IS_2155_EQ_2155(...) \, -#define Z_IS_2156_EQ_2156(...) \, -#define Z_IS_2157_EQ_2157(...) \, -#define Z_IS_2158_EQ_2158(...) \, -#define Z_IS_2159_EQ_2159(...) \, -#define Z_IS_2160_EQ_2160(...) \, -#define Z_IS_2161_EQ_2161(...) \, -#define Z_IS_2162_EQ_2162(...) \, -#define Z_IS_2163_EQ_2163(...) \, -#define Z_IS_2164_EQ_2164(...) \, -#define Z_IS_2165_EQ_2165(...) \, -#define Z_IS_2166_EQ_2166(...) \, -#define Z_IS_2167_EQ_2167(...) \, -#define Z_IS_2168_EQ_2168(...) \, -#define Z_IS_2169_EQ_2169(...) \, -#define Z_IS_2170_EQ_2170(...) \, -#define Z_IS_2171_EQ_2171(...) \, -#define Z_IS_2172_EQ_2172(...) \, -#define Z_IS_2173_EQ_2173(...) \, -#define Z_IS_2174_EQ_2174(...) \, -#define Z_IS_2175_EQ_2175(...) \, -#define Z_IS_2176_EQ_2176(...) \, -#define Z_IS_2177_EQ_2177(...) \, -#define Z_IS_2178_EQ_2178(...) \, -#define Z_IS_2179_EQ_2179(...) \, -#define Z_IS_2180_EQ_2180(...) \, -#define Z_IS_2181_EQ_2181(...) \, -#define Z_IS_2182_EQ_2182(...) \, -#define Z_IS_2183_EQ_2183(...) \, -#define Z_IS_2184_EQ_2184(...) \, -#define Z_IS_2185_EQ_2185(...) \, -#define Z_IS_2186_EQ_2186(...) \, -#define Z_IS_2187_EQ_2187(...) \, -#define Z_IS_2188_EQ_2188(...) \, -#define Z_IS_2189_EQ_2189(...) \, -#define Z_IS_2190_EQ_2190(...) \, -#define Z_IS_2191_EQ_2191(...) \, -#define Z_IS_2192_EQ_2192(...) \, -#define Z_IS_2193_EQ_2193(...) \, -#define Z_IS_2194_EQ_2194(...) \, -#define Z_IS_2195_EQ_2195(...) \, -#define Z_IS_2196_EQ_2196(...) \, -#define Z_IS_2197_EQ_2197(...) \, -#define Z_IS_2198_EQ_2198(...) \, -#define Z_IS_2199_EQ_2199(...) \, -#define Z_IS_2200_EQ_2200(...) \, -#define Z_IS_2201_EQ_2201(...) \, -#define Z_IS_2202_EQ_2202(...) \, -#define Z_IS_2203_EQ_2203(...) \, -#define Z_IS_2204_EQ_2204(...) \, -#define Z_IS_2205_EQ_2205(...) \, -#define Z_IS_2206_EQ_2206(...) \, -#define Z_IS_2207_EQ_2207(...) \, -#define Z_IS_2208_EQ_2208(...) \, -#define Z_IS_2209_EQ_2209(...) \, -#define Z_IS_2210_EQ_2210(...) \, -#define Z_IS_2211_EQ_2211(...) \, -#define Z_IS_2212_EQ_2212(...) \, -#define Z_IS_2213_EQ_2213(...) \, -#define Z_IS_2214_EQ_2214(...) \, -#define Z_IS_2215_EQ_2215(...) \, -#define Z_IS_2216_EQ_2216(...) \, -#define Z_IS_2217_EQ_2217(...) \, -#define Z_IS_2218_EQ_2218(...) \, -#define Z_IS_2219_EQ_2219(...) \, -#define Z_IS_2220_EQ_2220(...) \, -#define Z_IS_2221_EQ_2221(...) \, -#define Z_IS_2222_EQ_2222(...) \, -#define Z_IS_2223_EQ_2223(...) \, -#define Z_IS_2224_EQ_2224(...) \, -#define Z_IS_2225_EQ_2225(...) \, -#define Z_IS_2226_EQ_2226(...) \, -#define Z_IS_2227_EQ_2227(...) \, -#define Z_IS_2228_EQ_2228(...) \, -#define Z_IS_2229_EQ_2229(...) \, -#define Z_IS_2230_EQ_2230(...) \, -#define Z_IS_2231_EQ_2231(...) \, -#define Z_IS_2232_EQ_2232(...) \, -#define Z_IS_2233_EQ_2233(...) \, -#define Z_IS_2234_EQ_2234(...) \, -#define Z_IS_2235_EQ_2235(...) \, -#define Z_IS_2236_EQ_2236(...) \, -#define Z_IS_2237_EQ_2237(...) \, -#define Z_IS_2238_EQ_2238(...) \, -#define Z_IS_2239_EQ_2239(...) \, -#define Z_IS_2240_EQ_2240(...) \, -#define Z_IS_2241_EQ_2241(...) \, -#define Z_IS_2242_EQ_2242(...) \, -#define Z_IS_2243_EQ_2243(...) \, -#define Z_IS_2244_EQ_2244(...) \, -#define Z_IS_2245_EQ_2245(...) \, -#define Z_IS_2246_EQ_2246(...) \, -#define Z_IS_2247_EQ_2247(...) \, -#define Z_IS_2248_EQ_2248(...) \, -#define Z_IS_2249_EQ_2249(...) \, -#define Z_IS_2250_EQ_2250(...) \, -#define Z_IS_2251_EQ_2251(...) \, -#define Z_IS_2252_EQ_2252(...) \, -#define Z_IS_2253_EQ_2253(...) \, -#define Z_IS_2254_EQ_2254(...) \, -#define Z_IS_2255_EQ_2255(...) \, -#define Z_IS_2256_EQ_2256(...) \, -#define Z_IS_2257_EQ_2257(...) \, -#define Z_IS_2258_EQ_2258(...) \, -#define Z_IS_2259_EQ_2259(...) \, -#define Z_IS_2260_EQ_2260(...) \, -#define Z_IS_2261_EQ_2261(...) \, -#define Z_IS_2262_EQ_2262(...) \, -#define Z_IS_2263_EQ_2263(...) \, -#define Z_IS_2264_EQ_2264(...) \, -#define Z_IS_2265_EQ_2265(...) \, -#define Z_IS_2266_EQ_2266(...) \, -#define Z_IS_2267_EQ_2267(...) \, -#define Z_IS_2268_EQ_2268(...) \, -#define Z_IS_2269_EQ_2269(...) \, -#define Z_IS_2270_EQ_2270(...) \, -#define Z_IS_2271_EQ_2271(...) \, -#define Z_IS_2272_EQ_2272(...) \, -#define Z_IS_2273_EQ_2273(...) \, -#define Z_IS_2274_EQ_2274(...) \, -#define Z_IS_2275_EQ_2275(...) \, -#define Z_IS_2276_EQ_2276(...) \, -#define Z_IS_2277_EQ_2277(...) \, -#define Z_IS_2278_EQ_2278(...) \, -#define Z_IS_2279_EQ_2279(...) \, -#define Z_IS_2280_EQ_2280(...) \, -#define Z_IS_2281_EQ_2281(...) \, -#define Z_IS_2282_EQ_2282(...) \, -#define Z_IS_2283_EQ_2283(...) \, -#define Z_IS_2284_EQ_2284(...) \, -#define Z_IS_2285_EQ_2285(...) \, -#define Z_IS_2286_EQ_2286(...) \, -#define Z_IS_2287_EQ_2287(...) \, -#define Z_IS_2288_EQ_2288(...) \, -#define Z_IS_2289_EQ_2289(...) \, -#define Z_IS_2290_EQ_2290(...) \, -#define Z_IS_2291_EQ_2291(...) \, -#define Z_IS_2292_EQ_2292(...) \, -#define Z_IS_2293_EQ_2293(...) \, -#define Z_IS_2294_EQ_2294(...) \, -#define Z_IS_2295_EQ_2295(...) \, -#define Z_IS_2296_EQ_2296(...) \, -#define Z_IS_2297_EQ_2297(...) \, -#define Z_IS_2298_EQ_2298(...) \, -#define Z_IS_2299_EQ_2299(...) \, -#define Z_IS_2300_EQ_2300(...) \, -#define Z_IS_2301_EQ_2301(...) \, -#define Z_IS_2302_EQ_2302(...) \, -#define Z_IS_2303_EQ_2303(...) \, -#define Z_IS_2304_EQ_2304(...) \, -#define Z_IS_2305_EQ_2305(...) \, -#define Z_IS_2306_EQ_2306(...) \, -#define Z_IS_2307_EQ_2307(...) \, -#define Z_IS_2308_EQ_2308(...) \, -#define Z_IS_2309_EQ_2309(...) \, -#define Z_IS_2310_EQ_2310(...) \, -#define Z_IS_2311_EQ_2311(...) \, -#define Z_IS_2312_EQ_2312(...) \, -#define Z_IS_2313_EQ_2313(...) \, -#define Z_IS_2314_EQ_2314(...) \, -#define Z_IS_2315_EQ_2315(...) \, -#define Z_IS_2316_EQ_2316(...) \, -#define Z_IS_2317_EQ_2317(...) \, -#define Z_IS_2318_EQ_2318(...) \, -#define Z_IS_2319_EQ_2319(...) \, -#define Z_IS_2320_EQ_2320(...) \, -#define Z_IS_2321_EQ_2321(...) \, -#define Z_IS_2322_EQ_2322(...) \, -#define Z_IS_2323_EQ_2323(...) \, -#define Z_IS_2324_EQ_2324(...) \, -#define Z_IS_2325_EQ_2325(...) \, -#define Z_IS_2326_EQ_2326(...) \, -#define Z_IS_2327_EQ_2327(...) \, -#define Z_IS_2328_EQ_2328(...) \, -#define Z_IS_2329_EQ_2329(...) \, -#define Z_IS_2330_EQ_2330(...) \, -#define Z_IS_2331_EQ_2331(...) \, -#define Z_IS_2332_EQ_2332(...) \, -#define Z_IS_2333_EQ_2333(...) \, -#define Z_IS_2334_EQ_2334(...) \, -#define Z_IS_2335_EQ_2335(...) \, -#define Z_IS_2336_EQ_2336(...) \, -#define Z_IS_2337_EQ_2337(...) \, -#define Z_IS_2338_EQ_2338(...) \, -#define Z_IS_2339_EQ_2339(...) \, -#define Z_IS_2340_EQ_2340(...) \, -#define Z_IS_2341_EQ_2341(...) \, -#define Z_IS_2342_EQ_2342(...) \, -#define Z_IS_2343_EQ_2343(...) \, -#define Z_IS_2344_EQ_2344(...) \, -#define Z_IS_2345_EQ_2345(...) \, -#define Z_IS_2346_EQ_2346(...) \, -#define Z_IS_2347_EQ_2347(...) \, -#define Z_IS_2348_EQ_2348(...) \, -#define Z_IS_2349_EQ_2349(...) \, -#define Z_IS_2350_EQ_2350(...) \, -#define Z_IS_2351_EQ_2351(...) \, -#define Z_IS_2352_EQ_2352(...) \, -#define Z_IS_2353_EQ_2353(...) \, -#define Z_IS_2354_EQ_2354(...) \, -#define Z_IS_2355_EQ_2355(...) \, -#define Z_IS_2356_EQ_2356(...) \, -#define Z_IS_2357_EQ_2357(...) \, -#define Z_IS_2358_EQ_2358(...) \, -#define Z_IS_2359_EQ_2359(...) \, -#define Z_IS_2360_EQ_2360(...) \, -#define Z_IS_2361_EQ_2361(...) \, -#define Z_IS_2362_EQ_2362(...) \, -#define Z_IS_2363_EQ_2363(...) \, -#define Z_IS_2364_EQ_2364(...) \, -#define Z_IS_2365_EQ_2365(...) \, -#define Z_IS_2366_EQ_2366(...) \, -#define Z_IS_2367_EQ_2367(...) \, -#define Z_IS_2368_EQ_2368(...) \, -#define Z_IS_2369_EQ_2369(...) \, -#define Z_IS_2370_EQ_2370(...) \, -#define Z_IS_2371_EQ_2371(...) \, -#define Z_IS_2372_EQ_2372(...) \, -#define Z_IS_2373_EQ_2373(...) \, -#define Z_IS_2374_EQ_2374(...) \, -#define Z_IS_2375_EQ_2375(...) \, -#define Z_IS_2376_EQ_2376(...) \, -#define Z_IS_2377_EQ_2377(...) \, -#define Z_IS_2378_EQ_2378(...) \, -#define Z_IS_2379_EQ_2379(...) \, -#define Z_IS_2380_EQ_2380(...) \, -#define Z_IS_2381_EQ_2381(...) \, -#define Z_IS_2382_EQ_2382(...) \, -#define Z_IS_2383_EQ_2383(...) \, -#define Z_IS_2384_EQ_2384(...) \, -#define Z_IS_2385_EQ_2385(...) \, -#define Z_IS_2386_EQ_2386(...) \, -#define Z_IS_2387_EQ_2387(...) \, -#define Z_IS_2388_EQ_2388(...) \, -#define Z_IS_2389_EQ_2389(...) \, -#define Z_IS_2390_EQ_2390(...) \, -#define Z_IS_2391_EQ_2391(...) \, -#define Z_IS_2392_EQ_2392(...) \, -#define Z_IS_2393_EQ_2393(...) \, -#define Z_IS_2394_EQ_2394(...) \, -#define Z_IS_2395_EQ_2395(...) \, -#define Z_IS_2396_EQ_2396(...) \, -#define Z_IS_2397_EQ_2397(...) \, -#define Z_IS_2398_EQ_2398(...) \, -#define Z_IS_2399_EQ_2399(...) \, -#define Z_IS_2400_EQ_2400(...) \, -#define Z_IS_2401_EQ_2401(...) \, -#define Z_IS_2402_EQ_2402(...) \, -#define Z_IS_2403_EQ_2403(...) \, -#define Z_IS_2404_EQ_2404(...) \, -#define Z_IS_2405_EQ_2405(...) \, -#define Z_IS_2406_EQ_2406(...) \, -#define Z_IS_2407_EQ_2407(...) \, -#define Z_IS_2408_EQ_2408(...) \, -#define Z_IS_2409_EQ_2409(...) \, -#define Z_IS_2410_EQ_2410(...) \, -#define Z_IS_2411_EQ_2411(...) \, -#define Z_IS_2412_EQ_2412(...) \, -#define Z_IS_2413_EQ_2413(...) \, -#define Z_IS_2414_EQ_2414(...) \, -#define Z_IS_2415_EQ_2415(...) \, -#define Z_IS_2416_EQ_2416(...) \, -#define Z_IS_2417_EQ_2417(...) \, -#define Z_IS_2418_EQ_2418(...) \, -#define Z_IS_2419_EQ_2419(...) \, -#define Z_IS_2420_EQ_2420(...) \, -#define Z_IS_2421_EQ_2421(...) \, -#define Z_IS_2422_EQ_2422(...) \, -#define Z_IS_2423_EQ_2423(...) \, -#define Z_IS_2424_EQ_2424(...) \, -#define Z_IS_2425_EQ_2425(...) \, -#define Z_IS_2426_EQ_2426(...) \, -#define Z_IS_2427_EQ_2427(...) \, -#define Z_IS_2428_EQ_2428(...) \, -#define Z_IS_2429_EQ_2429(...) \, -#define Z_IS_2430_EQ_2430(...) \, -#define Z_IS_2431_EQ_2431(...) \, -#define Z_IS_2432_EQ_2432(...) \, -#define Z_IS_2433_EQ_2433(...) \, -#define Z_IS_2434_EQ_2434(...) \, -#define Z_IS_2435_EQ_2435(...) \, -#define Z_IS_2436_EQ_2436(...) \, -#define Z_IS_2437_EQ_2437(...) \, -#define Z_IS_2438_EQ_2438(...) \, -#define Z_IS_2439_EQ_2439(...) \, -#define Z_IS_2440_EQ_2440(...) \, -#define Z_IS_2441_EQ_2441(...) \, -#define Z_IS_2442_EQ_2442(...) \, -#define Z_IS_2443_EQ_2443(...) \, -#define Z_IS_2444_EQ_2444(...) \, -#define Z_IS_2445_EQ_2445(...) \, -#define Z_IS_2446_EQ_2446(...) \, -#define Z_IS_2447_EQ_2447(...) \, -#define Z_IS_2448_EQ_2448(...) \, -#define Z_IS_2449_EQ_2449(...) \, -#define Z_IS_2450_EQ_2450(...) \, -#define Z_IS_2451_EQ_2451(...) \, -#define Z_IS_2452_EQ_2452(...) \, -#define Z_IS_2453_EQ_2453(...) \, -#define Z_IS_2454_EQ_2454(...) \, -#define Z_IS_2455_EQ_2455(...) \, -#define Z_IS_2456_EQ_2456(...) \, -#define Z_IS_2457_EQ_2457(...) \, -#define Z_IS_2458_EQ_2458(...) \, -#define Z_IS_2459_EQ_2459(...) \, -#define Z_IS_2460_EQ_2460(...) \, -#define Z_IS_2461_EQ_2461(...) \, -#define Z_IS_2462_EQ_2462(...) \, -#define Z_IS_2463_EQ_2463(...) \, -#define Z_IS_2464_EQ_2464(...) \, -#define Z_IS_2465_EQ_2465(...) \, -#define Z_IS_2466_EQ_2466(...) \, -#define Z_IS_2467_EQ_2467(...) \, -#define Z_IS_2468_EQ_2468(...) \, -#define Z_IS_2469_EQ_2469(...) \, -#define Z_IS_2470_EQ_2470(...) \, -#define Z_IS_2471_EQ_2471(...) \, -#define Z_IS_2472_EQ_2472(...) \, -#define Z_IS_2473_EQ_2473(...) \, -#define Z_IS_2474_EQ_2474(...) \, -#define Z_IS_2475_EQ_2475(...) \, -#define Z_IS_2476_EQ_2476(...) \, -#define Z_IS_2477_EQ_2477(...) \, -#define Z_IS_2478_EQ_2478(...) \, -#define Z_IS_2479_EQ_2479(...) \, -#define Z_IS_2480_EQ_2480(...) \, -#define Z_IS_2481_EQ_2481(...) \, -#define Z_IS_2482_EQ_2482(...) \, -#define Z_IS_2483_EQ_2483(...) \, -#define Z_IS_2484_EQ_2484(...) \, -#define Z_IS_2485_EQ_2485(...) \, -#define Z_IS_2486_EQ_2486(...) \, -#define Z_IS_2487_EQ_2487(...) \, -#define Z_IS_2488_EQ_2488(...) \, -#define Z_IS_2489_EQ_2489(...) \, -#define Z_IS_2490_EQ_2490(...) \, -#define Z_IS_2491_EQ_2491(...) \, -#define Z_IS_2492_EQ_2492(...) \, -#define Z_IS_2493_EQ_2493(...) \, -#define Z_IS_2494_EQ_2494(...) \, -#define Z_IS_2495_EQ_2495(...) \, -#define Z_IS_2496_EQ_2496(...) \, -#define Z_IS_2497_EQ_2497(...) \, -#define Z_IS_2498_EQ_2498(...) \, -#define Z_IS_2499_EQ_2499(...) \, -#define Z_IS_2500_EQ_2500(...) \, -#define Z_IS_2501_EQ_2501(...) \, -#define Z_IS_2502_EQ_2502(...) \, -#define Z_IS_2503_EQ_2503(...) \, -#define Z_IS_2504_EQ_2504(...) \, -#define Z_IS_2505_EQ_2505(...) \, -#define Z_IS_2506_EQ_2506(...) \, -#define Z_IS_2507_EQ_2507(...) \, -#define Z_IS_2508_EQ_2508(...) \, -#define Z_IS_2509_EQ_2509(...) \, -#define Z_IS_2510_EQ_2510(...) \, -#define Z_IS_2511_EQ_2511(...) \, -#define Z_IS_2512_EQ_2512(...) \, -#define Z_IS_2513_EQ_2513(...) \, -#define Z_IS_2514_EQ_2514(...) \, -#define Z_IS_2515_EQ_2515(...) \, -#define Z_IS_2516_EQ_2516(...) \, -#define Z_IS_2517_EQ_2517(...) \, -#define Z_IS_2518_EQ_2518(...) \, -#define Z_IS_2519_EQ_2519(...) \, -#define Z_IS_2520_EQ_2520(...) \, -#define Z_IS_2521_EQ_2521(...) \, -#define Z_IS_2522_EQ_2522(...) \, -#define Z_IS_2523_EQ_2523(...) \, -#define Z_IS_2524_EQ_2524(...) \, -#define Z_IS_2525_EQ_2525(...) \, -#define Z_IS_2526_EQ_2526(...) \, -#define Z_IS_2527_EQ_2527(...) \, -#define Z_IS_2528_EQ_2528(...) \, -#define Z_IS_2529_EQ_2529(...) \, -#define Z_IS_2530_EQ_2530(...) \, -#define Z_IS_2531_EQ_2531(...) \, -#define Z_IS_2532_EQ_2532(...) \, -#define Z_IS_2533_EQ_2533(...) \, -#define Z_IS_2534_EQ_2534(...) \, -#define Z_IS_2535_EQ_2535(...) \, -#define Z_IS_2536_EQ_2536(...) \, -#define Z_IS_2537_EQ_2537(...) \, -#define Z_IS_2538_EQ_2538(...) \, -#define Z_IS_2539_EQ_2539(...) \, -#define Z_IS_2540_EQ_2540(...) \, -#define Z_IS_2541_EQ_2541(...) \, -#define Z_IS_2542_EQ_2542(...) \, -#define Z_IS_2543_EQ_2543(...) \, -#define Z_IS_2544_EQ_2544(...) \, -#define Z_IS_2545_EQ_2545(...) \, -#define Z_IS_2546_EQ_2546(...) \, -#define Z_IS_2547_EQ_2547(...) \, -#define Z_IS_2548_EQ_2548(...) \, -#define Z_IS_2549_EQ_2549(...) \, -#define Z_IS_2550_EQ_2550(...) \, -#define Z_IS_2551_EQ_2551(...) \, -#define Z_IS_2552_EQ_2552(...) \, -#define Z_IS_2553_EQ_2553(...) \, -#define Z_IS_2554_EQ_2554(...) \, -#define Z_IS_2555_EQ_2555(...) \, -#define Z_IS_2556_EQ_2556(...) \, -#define Z_IS_2557_EQ_2557(...) \, -#define Z_IS_2558_EQ_2558(...) \, -#define Z_IS_2559_EQ_2559(...) \, -#define Z_IS_2560_EQ_2560(...) \, -#define Z_IS_2561_EQ_2561(...) \, -#define Z_IS_2562_EQ_2562(...) \, -#define Z_IS_2563_EQ_2563(...) \, -#define Z_IS_2564_EQ_2564(...) \, -#define Z_IS_2565_EQ_2565(...) \, -#define Z_IS_2566_EQ_2566(...) \, -#define Z_IS_2567_EQ_2567(...) \, -#define Z_IS_2568_EQ_2568(...) \, -#define Z_IS_2569_EQ_2569(...) \, -#define Z_IS_2570_EQ_2570(...) \, -#define Z_IS_2571_EQ_2571(...) \, -#define Z_IS_2572_EQ_2572(...) \, -#define Z_IS_2573_EQ_2573(...) \, -#define Z_IS_2574_EQ_2574(...) \, -#define Z_IS_2575_EQ_2575(...) \, -#define Z_IS_2576_EQ_2576(...) \, -#define Z_IS_2577_EQ_2577(...) \, -#define Z_IS_2578_EQ_2578(...) \, -#define Z_IS_2579_EQ_2579(...) \, -#define Z_IS_2580_EQ_2580(...) \, -#define Z_IS_2581_EQ_2581(...) \, -#define Z_IS_2582_EQ_2582(...) \, -#define Z_IS_2583_EQ_2583(...) \, -#define Z_IS_2584_EQ_2584(...) \, -#define Z_IS_2585_EQ_2585(...) \, -#define Z_IS_2586_EQ_2586(...) \, -#define Z_IS_2587_EQ_2587(...) \, -#define Z_IS_2588_EQ_2588(...) \, -#define Z_IS_2589_EQ_2589(...) \, -#define Z_IS_2590_EQ_2590(...) \, -#define Z_IS_2591_EQ_2591(...) \, -#define Z_IS_2592_EQ_2592(...) \, -#define Z_IS_2593_EQ_2593(...) \, -#define Z_IS_2594_EQ_2594(...) \, -#define Z_IS_2595_EQ_2595(...) \, -#define Z_IS_2596_EQ_2596(...) \, -#define Z_IS_2597_EQ_2597(...) \, -#define Z_IS_2598_EQ_2598(...) \, -#define Z_IS_2599_EQ_2599(...) \, -#define Z_IS_2600_EQ_2600(...) \, -#define Z_IS_2601_EQ_2601(...) \, -#define Z_IS_2602_EQ_2602(...) \, -#define Z_IS_2603_EQ_2603(...) \, -#define Z_IS_2604_EQ_2604(...) \, -#define Z_IS_2605_EQ_2605(...) \, -#define Z_IS_2606_EQ_2606(...) \, -#define Z_IS_2607_EQ_2607(...) \, -#define Z_IS_2608_EQ_2608(...) \, -#define Z_IS_2609_EQ_2609(...) \, -#define Z_IS_2610_EQ_2610(...) \, -#define Z_IS_2611_EQ_2611(...) \, -#define Z_IS_2612_EQ_2612(...) \, -#define Z_IS_2613_EQ_2613(...) \, -#define Z_IS_2614_EQ_2614(...) \, -#define Z_IS_2615_EQ_2615(...) \, -#define Z_IS_2616_EQ_2616(...) \, -#define Z_IS_2617_EQ_2617(...) \, -#define Z_IS_2618_EQ_2618(...) \, -#define Z_IS_2619_EQ_2619(...) \, -#define Z_IS_2620_EQ_2620(...) \, -#define Z_IS_2621_EQ_2621(...) \, -#define Z_IS_2622_EQ_2622(...) \, -#define Z_IS_2623_EQ_2623(...) \, -#define Z_IS_2624_EQ_2624(...) \, -#define Z_IS_2625_EQ_2625(...) \, -#define Z_IS_2626_EQ_2626(...) \, -#define Z_IS_2627_EQ_2627(...) \, -#define Z_IS_2628_EQ_2628(...) \, -#define Z_IS_2629_EQ_2629(...) \, -#define Z_IS_2630_EQ_2630(...) \, -#define Z_IS_2631_EQ_2631(...) \, -#define Z_IS_2632_EQ_2632(...) \, -#define Z_IS_2633_EQ_2633(...) \, -#define Z_IS_2634_EQ_2634(...) \, -#define Z_IS_2635_EQ_2635(...) \, -#define Z_IS_2636_EQ_2636(...) \, -#define Z_IS_2637_EQ_2637(...) \, -#define Z_IS_2638_EQ_2638(...) \, -#define Z_IS_2639_EQ_2639(...) \, -#define Z_IS_2640_EQ_2640(...) \, -#define Z_IS_2641_EQ_2641(...) \, -#define Z_IS_2642_EQ_2642(...) \, -#define Z_IS_2643_EQ_2643(...) \, -#define Z_IS_2644_EQ_2644(...) \, -#define Z_IS_2645_EQ_2645(...) \, -#define Z_IS_2646_EQ_2646(...) \, -#define Z_IS_2647_EQ_2647(...) \, -#define Z_IS_2648_EQ_2648(...) \, -#define Z_IS_2649_EQ_2649(...) \, -#define Z_IS_2650_EQ_2650(...) \, -#define Z_IS_2651_EQ_2651(...) \, -#define Z_IS_2652_EQ_2652(...) \, -#define Z_IS_2653_EQ_2653(...) \, -#define Z_IS_2654_EQ_2654(...) \, -#define Z_IS_2655_EQ_2655(...) \, -#define Z_IS_2656_EQ_2656(...) \, -#define Z_IS_2657_EQ_2657(...) \, -#define Z_IS_2658_EQ_2658(...) \, -#define Z_IS_2659_EQ_2659(...) \, -#define Z_IS_2660_EQ_2660(...) \, -#define Z_IS_2661_EQ_2661(...) \, -#define Z_IS_2662_EQ_2662(...) \, -#define Z_IS_2663_EQ_2663(...) \, -#define Z_IS_2664_EQ_2664(...) \, -#define Z_IS_2665_EQ_2665(...) \, -#define Z_IS_2666_EQ_2666(...) \, -#define Z_IS_2667_EQ_2667(...) \, -#define Z_IS_2668_EQ_2668(...) \, -#define Z_IS_2669_EQ_2669(...) \, -#define Z_IS_2670_EQ_2670(...) \, -#define Z_IS_2671_EQ_2671(...) \, -#define Z_IS_2672_EQ_2672(...) \, -#define Z_IS_2673_EQ_2673(...) \, -#define Z_IS_2674_EQ_2674(...) \, -#define Z_IS_2675_EQ_2675(...) \, -#define Z_IS_2676_EQ_2676(...) \, -#define Z_IS_2677_EQ_2677(...) \, -#define Z_IS_2678_EQ_2678(...) \, -#define Z_IS_2679_EQ_2679(...) \, -#define Z_IS_2680_EQ_2680(...) \, -#define Z_IS_2681_EQ_2681(...) \, -#define Z_IS_2682_EQ_2682(...) \, -#define Z_IS_2683_EQ_2683(...) \, -#define Z_IS_2684_EQ_2684(...) \, -#define Z_IS_2685_EQ_2685(...) \, -#define Z_IS_2686_EQ_2686(...) \, -#define Z_IS_2687_EQ_2687(...) \, -#define Z_IS_2688_EQ_2688(...) \, -#define Z_IS_2689_EQ_2689(...) \, -#define Z_IS_2690_EQ_2690(...) \, -#define Z_IS_2691_EQ_2691(...) \, -#define Z_IS_2692_EQ_2692(...) \, -#define Z_IS_2693_EQ_2693(...) \, -#define Z_IS_2694_EQ_2694(...) \, -#define Z_IS_2695_EQ_2695(...) \, -#define Z_IS_2696_EQ_2696(...) \, -#define Z_IS_2697_EQ_2697(...) \, -#define Z_IS_2698_EQ_2698(...) \, -#define Z_IS_2699_EQ_2699(...) \, -#define Z_IS_2700_EQ_2700(...) \, -#define Z_IS_2701_EQ_2701(...) \, -#define Z_IS_2702_EQ_2702(...) \, -#define Z_IS_2703_EQ_2703(...) \, -#define Z_IS_2704_EQ_2704(...) \, -#define Z_IS_2705_EQ_2705(...) \, -#define Z_IS_2706_EQ_2706(...) \, -#define Z_IS_2707_EQ_2707(...) \, -#define Z_IS_2708_EQ_2708(...) \, -#define Z_IS_2709_EQ_2709(...) \, -#define Z_IS_2710_EQ_2710(...) \, -#define Z_IS_2711_EQ_2711(...) \, -#define Z_IS_2712_EQ_2712(...) \, -#define Z_IS_2713_EQ_2713(...) \, -#define Z_IS_2714_EQ_2714(...) \, -#define Z_IS_2715_EQ_2715(...) \, -#define Z_IS_2716_EQ_2716(...) \, -#define Z_IS_2717_EQ_2717(...) \, -#define Z_IS_2718_EQ_2718(...) \, -#define Z_IS_2719_EQ_2719(...) \, -#define Z_IS_2720_EQ_2720(...) \, -#define Z_IS_2721_EQ_2721(...) \, -#define Z_IS_2722_EQ_2722(...) \, -#define Z_IS_2723_EQ_2723(...) \, -#define Z_IS_2724_EQ_2724(...) \, -#define Z_IS_2725_EQ_2725(...) \, -#define Z_IS_2726_EQ_2726(...) \, -#define Z_IS_2727_EQ_2727(...) \, -#define Z_IS_2728_EQ_2728(...) \, -#define Z_IS_2729_EQ_2729(...) \, -#define Z_IS_2730_EQ_2730(...) \, -#define Z_IS_2731_EQ_2731(...) \, -#define Z_IS_2732_EQ_2732(...) \, -#define Z_IS_2733_EQ_2733(...) \, -#define Z_IS_2734_EQ_2734(...) \, -#define Z_IS_2735_EQ_2735(...) \, -#define Z_IS_2736_EQ_2736(...) \, -#define Z_IS_2737_EQ_2737(...) \, -#define Z_IS_2738_EQ_2738(...) \, -#define Z_IS_2739_EQ_2739(...) \, -#define Z_IS_2740_EQ_2740(...) \, -#define Z_IS_2741_EQ_2741(...) \, -#define Z_IS_2742_EQ_2742(...) \, -#define Z_IS_2743_EQ_2743(...) \, -#define Z_IS_2744_EQ_2744(...) \, -#define Z_IS_2745_EQ_2745(...) \, -#define Z_IS_2746_EQ_2746(...) \, -#define Z_IS_2747_EQ_2747(...) \, -#define Z_IS_2748_EQ_2748(...) \, -#define Z_IS_2749_EQ_2749(...) \, -#define Z_IS_2750_EQ_2750(...) \, -#define Z_IS_2751_EQ_2751(...) \, -#define Z_IS_2752_EQ_2752(...) \, -#define Z_IS_2753_EQ_2753(...) \, -#define Z_IS_2754_EQ_2754(...) \, -#define Z_IS_2755_EQ_2755(...) \, -#define Z_IS_2756_EQ_2756(...) \, -#define Z_IS_2757_EQ_2757(...) \, -#define Z_IS_2758_EQ_2758(...) \, -#define Z_IS_2759_EQ_2759(...) \, -#define Z_IS_2760_EQ_2760(...) \, -#define Z_IS_2761_EQ_2761(...) \, -#define Z_IS_2762_EQ_2762(...) \, -#define Z_IS_2763_EQ_2763(...) \, -#define Z_IS_2764_EQ_2764(...) \, -#define Z_IS_2765_EQ_2765(...) \, -#define Z_IS_2766_EQ_2766(...) \, -#define Z_IS_2767_EQ_2767(...) \, -#define Z_IS_2768_EQ_2768(...) \, -#define Z_IS_2769_EQ_2769(...) \, -#define Z_IS_2770_EQ_2770(...) \, -#define Z_IS_2771_EQ_2771(...) \, -#define Z_IS_2772_EQ_2772(...) \, -#define Z_IS_2773_EQ_2773(...) \, -#define Z_IS_2774_EQ_2774(...) \, -#define Z_IS_2775_EQ_2775(...) \, -#define Z_IS_2776_EQ_2776(...) \, -#define Z_IS_2777_EQ_2777(...) \, -#define Z_IS_2778_EQ_2778(...) \, -#define Z_IS_2779_EQ_2779(...) \, -#define Z_IS_2780_EQ_2780(...) \, -#define Z_IS_2781_EQ_2781(...) \, -#define Z_IS_2782_EQ_2782(...) \, -#define Z_IS_2783_EQ_2783(...) \, -#define Z_IS_2784_EQ_2784(...) \, -#define Z_IS_2785_EQ_2785(...) \, -#define Z_IS_2786_EQ_2786(...) \, -#define Z_IS_2787_EQ_2787(...) \, -#define Z_IS_2788_EQ_2788(...) \, -#define Z_IS_2789_EQ_2789(...) \, -#define Z_IS_2790_EQ_2790(...) \, -#define Z_IS_2791_EQ_2791(...) \, -#define Z_IS_2792_EQ_2792(...) \, -#define Z_IS_2793_EQ_2793(...) \, -#define Z_IS_2794_EQ_2794(...) \, -#define Z_IS_2795_EQ_2795(...) \, -#define Z_IS_2796_EQ_2796(...) \, -#define Z_IS_2797_EQ_2797(...) \, -#define Z_IS_2798_EQ_2798(...) \, -#define Z_IS_2799_EQ_2799(...) \, -#define Z_IS_2800_EQ_2800(...) \, -#define Z_IS_2801_EQ_2801(...) \, -#define Z_IS_2802_EQ_2802(...) \, -#define Z_IS_2803_EQ_2803(...) \, -#define Z_IS_2804_EQ_2804(...) \, -#define Z_IS_2805_EQ_2805(...) \, -#define Z_IS_2806_EQ_2806(...) \, -#define Z_IS_2807_EQ_2807(...) \, -#define Z_IS_2808_EQ_2808(...) \, -#define Z_IS_2809_EQ_2809(...) \, -#define Z_IS_2810_EQ_2810(...) \, -#define Z_IS_2811_EQ_2811(...) \, -#define Z_IS_2812_EQ_2812(...) \, -#define Z_IS_2813_EQ_2813(...) \, -#define Z_IS_2814_EQ_2814(...) \, -#define Z_IS_2815_EQ_2815(...) \, -#define Z_IS_2816_EQ_2816(...) \, -#define Z_IS_2817_EQ_2817(...) \, -#define Z_IS_2818_EQ_2818(...) \, -#define Z_IS_2819_EQ_2819(...) \, -#define Z_IS_2820_EQ_2820(...) \, -#define Z_IS_2821_EQ_2821(...) \, -#define Z_IS_2822_EQ_2822(...) \, -#define Z_IS_2823_EQ_2823(...) \, -#define Z_IS_2824_EQ_2824(...) \, -#define Z_IS_2825_EQ_2825(...) \, -#define Z_IS_2826_EQ_2826(...) \, -#define Z_IS_2827_EQ_2827(...) \, -#define Z_IS_2828_EQ_2828(...) \, -#define Z_IS_2829_EQ_2829(...) \, -#define Z_IS_2830_EQ_2830(...) \, -#define Z_IS_2831_EQ_2831(...) \, -#define Z_IS_2832_EQ_2832(...) \, -#define Z_IS_2833_EQ_2833(...) \, -#define Z_IS_2834_EQ_2834(...) \, -#define Z_IS_2835_EQ_2835(...) \, -#define Z_IS_2836_EQ_2836(...) \, -#define Z_IS_2837_EQ_2837(...) \, -#define Z_IS_2838_EQ_2838(...) \, -#define Z_IS_2839_EQ_2839(...) \, -#define Z_IS_2840_EQ_2840(...) \, -#define Z_IS_2841_EQ_2841(...) \, -#define Z_IS_2842_EQ_2842(...) \, -#define Z_IS_2843_EQ_2843(...) \, -#define Z_IS_2844_EQ_2844(...) \, -#define Z_IS_2845_EQ_2845(...) \, -#define Z_IS_2846_EQ_2846(...) \, -#define Z_IS_2847_EQ_2847(...) \, -#define Z_IS_2848_EQ_2848(...) \, -#define Z_IS_2849_EQ_2849(...) \, -#define Z_IS_2850_EQ_2850(...) \, -#define Z_IS_2851_EQ_2851(...) \, -#define Z_IS_2852_EQ_2852(...) \, -#define Z_IS_2853_EQ_2853(...) \, -#define Z_IS_2854_EQ_2854(...) \, -#define Z_IS_2855_EQ_2855(...) \, -#define Z_IS_2856_EQ_2856(...) \, -#define Z_IS_2857_EQ_2857(...) \, -#define Z_IS_2858_EQ_2858(...) \, -#define Z_IS_2859_EQ_2859(...) \, -#define Z_IS_2860_EQ_2860(...) \, -#define Z_IS_2861_EQ_2861(...) \, -#define Z_IS_2862_EQ_2862(...) \, -#define Z_IS_2863_EQ_2863(...) \, -#define Z_IS_2864_EQ_2864(...) \, -#define Z_IS_2865_EQ_2865(...) \, -#define Z_IS_2866_EQ_2866(...) \, -#define Z_IS_2867_EQ_2867(...) \, -#define Z_IS_2868_EQ_2868(...) \, -#define Z_IS_2869_EQ_2869(...) \, -#define Z_IS_2870_EQ_2870(...) \, -#define Z_IS_2871_EQ_2871(...) \, -#define Z_IS_2872_EQ_2872(...) \, -#define Z_IS_2873_EQ_2873(...) \, -#define Z_IS_2874_EQ_2874(...) \, -#define Z_IS_2875_EQ_2875(...) \, -#define Z_IS_2876_EQ_2876(...) \, -#define Z_IS_2877_EQ_2877(...) \, -#define Z_IS_2878_EQ_2878(...) \, -#define Z_IS_2879_EQ_2879(...) \, -#define Z_IS_2880_EQ_2880(...) \, -#define Z_IS_2881_EQ_2881(...) \, -#define Z_IS_2882_EQ_2882(...) \, -#define Z_IS_2883_EQ_2883(...) \, -#define Z_IS_2884_EQ_2884(...) \, -#define Z_IS_2885_EQ_2885(...) \, -#define Z_IS_2886_EQ_2886(...) \, -#define Z_IS_2887_EQ_2887(...) \, -#define Z_IS_2888_EQ_2888(...) \, -#define Z_IS_2889_EQ_2889(...) \, -#define Z_IS_2890_EQ_2890(...) \, -#define Z_IS_2891_EQ_2891(...) \, -#define Z_IS_2892_EQ_2892(...) \, -#define Z_IS_2893_EQ_2893(...) \, -#define Z_IS_2894_EQ_2894(...) \, -#define Z_IS_2895_EQ_2895(...) \, -#define Z_IS_2896_EQ_2896(...) \, -#define Z_IS_2897_EQ_2897(...) \, -#define Z_IS_2898_EQ_2898(...) \, -#define Z_IS_2899_EQ_2899(...) \, -#define Z_IS_2900_EQ_2900(...) \, -#define Z_IS_2901_EQ_2901(...) \, -#define Z_IS_2902_EQ_2902(...) \, -#define Z_IS_2903_EQ_2903(...) \, -#define Z_IS_2904_EQ_2904(...) \, -#define Z_IS_2905_EQ_2905(...) \, -#define Z_IS_2906_EQ_2906(...) \, -#define Z_IS_2907_EQ_2907(...) \, -#define Z_IS_2908_EQ_2908(...) \, -#define Z_IS_2909_EQ_2909(...) \, -#define Z_IS_2910_EQ_2910(...) \, -#define Z_IS_2911_EQ_2911(...) \, -#define Z_IS_2912_EQ_2912(...) \, -#define Z_IS_2913_EQ_2913(...) \, -#define Z_IS_2914_EQ_2914(...) \, -#define Z_IS_2915_EQ_2915(...) \, -#define Z_IS_2916_EQ_2916(...) \, -#define Z_IS_2917_EQ_2917(...) \, -#define Z_IS_2918_EQ_2918(...) \, -#define Z_IS_2919_EQ_2919(...) \, -#define Z_IS_2920_EQ_2920(...) \, -#define Z_IS_2921_EQ_2921(...) \, -#define Z_IS_2922_EQ_2922(...) \, -#define Z_IS_2923_EQ_2923(...) \, -#define Z_IS_2924_EQ_2924(...) \, -#define Z_IS_2925_EQ_2925(...) \, -#define Z_IS_2926_EQ_2926(...) \, -#define Z_IS_2927_EQ_2927(...) \, -#define Z_IS_2928_EQ_2928(...) \, -#define Z_IS_2929_EQ_2929(...) \, -#define Z_IS_2930_EQ_2930(...) \, -#define Z_IS_2931_EQ_2931(...) \, -#define Z_IS_2932_EQ_2932(...) \, -#define Z_IS_2933_EQ_2933(...) \, -#define Z_IS_2934_EQ_2934(...) \, -#define Z_IS_2935_EQ_2935(...) \, -#define Z_IS_2936_EQ_2936(...) \, -#define Z_IS_2937_EQ_2937(...) \, -#define Z_IS_2938_EQ_2938(...) \, -#define Z_IS_2939_EQ_2939(...) \, -#define Z_IS_2940_EQ_2940(...) \, -#define Z_IS_2941_EQ_2941(...) \, -#define Z_IS_2942_EQ_2942(...) \, -#define Z_IS_2943_EQ_2943(...) \, -#define Z_IS_2944_EQ_2944(...) \, -#define Z_IS_2945_EQ_2945(...) \, -#define Z_IS_2946_EQ_2946(...) \, -#define Z_IS_2947_EQ_2947(...) \, -#define Z_IS_2948_EQ_2948(...) \, -#define Z_IS_2949_EQ_2949(...) \, -#define Z_IS_2950_EQ_2950(...) \, -#define Z_IS_2951_EQ_2951(...) \, -#define Z_IS_2952_EQ_2952(...) \, -#define Z_IS_2953_EQ_2953(...) \, -#define Z_IS_2954_EQ_2954(...) \, -#define Z_IS_2955_EQ_2955(...) \, -#define Z_IS_2956_EQ_2956(...) \, -#define Z_IS_2957_EQ_2957(...) \, -#define Z_IS_2958_EQ_2958(...) \, -#define Z_IS_2959_EQ_2959(...) \, -#define Z_IS_2960_EQ_2960(...) \, -#define Z_IS_2961_EQ_2961(...) \, -#define Z_IS_2962_EQ_2962(...) \, -#define Z_IS_2963_EQ_2963(...) \, -#define Z_IS_2964_EQ_2964(...) \, -#define Z_IS_2965_EQ_2965(...) \, -#define Z_IS_2966_EQ_2966(...) \, -#define Z_IS_2967_EQ_2967(...) \, -#define Z_IS_2968_EQ_2968(...) \, -#define Z_IS_2969_EQ_2969(...) \, -#define Z_IS_2970_EQ_2970(...) \, -#define Z_IS_2971_EQ_2971(...) \, -#define Z_IS_2972_EQ_2972(...) \, -#define Z_IS_2973_EQ_2973(...) \, -#define Z_IS_2974_EQ_2974(...) \, -#define Z_IS_2975_EQ_2975(...) \, -#define Z_IS_2976_EQ_2976(...) \, -#define Z_IS_2977_EQ_2977(...) \, -#define Z_IS_2978_EQ_2978(...) \, -#define Z_IS_2979_EQ_2979(...) \, -#define Z_IS_2980_EQ_2980(...) \, -#define Z_IS_2981_EQ_2981(...) \, -#define Z_IS_2982_EQ_2982(...) \, -#define Z_IS_2983_EQ_2983(...) \, -#define Z_IS_2984_EQ_2984(...) \, -#define Z_IS_2985_EQ_2985(...) \, -#define Z_IS_2986_EQ_2986(...) \, -#define Z_IS_2987_EQ_2987(...) \, -#define Z_IS_2988_EQ_2988(...) \, -#define Z_IS_2989_EQ_2989(...) \, -#define Z_IS_2990_EQ_2990(...) \, -#define Z_IS_2991_EQ_2991(...) \, -#define Z_IS_2992_EQ_2992(...) \, -#define Z_IS_2993_EQ_2993(...) \, -#define Z_IS_2994_EQ_2994(...) \, -#define Z_IS_2995_EQ_2995(...) \, -#define Z_IS_2996_EQ_2996(...) \, -#define Z_IS_2997_EQ_2997(...) \, -#define Z_IS_2998_EQ_2998(...) \, -#define Z_IS_2999_EQ_2999(...) \, -#define Z_IS_3000_EQ_3000(...) \, -#define Z_IS_3001_EQ_3001(...) \, -#define Z_IS_3002_EQ_3002(...) \, -#define Z_IS_3003_EQ_3003(...) \, -#define Z_IS_3004_EQ_3004(...) \, -#define Z_IS_3005_EQ_3005(...) \, -#define Z_IS_3006_EQ_3006(...) \, -#define Z_IS_3007_EQ_3007(...) \, -#define Z_IS_3008_EQ_3008(...) \, -#define Z_IS_3009_EQ_3009(...) \, -#define Z_IS_3010_EQ_3010(...) \, -#define Z_IS_3011_EQ_3011(...) \, -#define Z_IS_3012_EQ_3012(...) \, -#define Z_IS_3013_EQ_3013(...) \, -#define Z_IS_3014_EQ_3014(...) \, -#define Z_IS_3015_EQ_3015(...) \, -#define Z_IS_3016_EQ_3016(...) \, -#define Z_IS_3017_EQ_3017(...) \, -#define Z_IS_3018_EQ_3018(...) \, -#define Z_IS_3019_EQ_3019(...) \, -#define Z_IS_3020_EQ_3020(...) \, -#define Z_IS_3021_EQ_3021(...) \, -#define Z_IS_3022_EQ_3022(...) \, -#define Z_IS_3023_EQ_3023(...) \, -#define Z_IS_3024_EQ_3024(...) \, -#define Z_IS_3025_EQ_3025(...) \, -#define Z_IS_3026_EQ_3026(...) \, -#define Z_IS_3027_EQ_3027(...) \, -#define Z_IS_3028_EQ_3028(...) \, -#define Z_IS_3029_EQ_3029(...) \, -#define Z_IS_3030_EQ_3030(...) \, -#define Z_IS_3031_EQ_3031(...) \, -#define Z_IS_3032_EQ_3032(...) \, -#define Z_IS_3033_EQ_3033(...) \, -#define Z_IS_3034_EQ_3034(...) \, -#define Z_IS_3035_EQ_3035(...) \, -#define Z_IS_3036_EQ_3036(...) \, -#define Z_IS_3037_EQ_3037(...) \, -#define Z_IS_3038_EQ_3038(...) \, -#define Z_IS_3039_EQ_3039(...) \, -#define Z_IS_3040_EQ_3040(...) \, -#define Z_IS_3041_EQ_3041(...) \, -#define Z_IS_3042_EQ_3042(...) \, -#define Z_IS_3043_EQ_3043(...) \, -#define Z_IS_3044_EQ_3044(...) \, -#define Z_IS_3045_EQ_3045(...) \, -#define Z_IS_3046_EQ_3046(...) \, -#define Z_IS_3047_EQ_3047(...) \, -#define Z_IS_3048_EQ_3048(...) \, -#define Z_IS_3049_EQ_3049(...) \, -#define Z_IS_3050_EQ_3050(...) \, -#define Z_IS_3051_EQ_3051(...) \, -#define Z_IS_3052_EQ_3052(...) \, -#define Z_IS_3053_EQ_3053(...) \, -#define Z_IS_3054_EQ_3054(...) \, -#define Z_IS_3055_EQ_3055(...) \, -#define Z_IS_3056_EQ_3056(...) \, -#define Z_IS_3057_EQ_3057(...) \, -#define Z_IS_3058_EQ_3058(...) \, -#define Z_IS_3059_EQ_3059(...) \, -#define Z_IS_3060_EQ_3060(...) \, -#define Z_IS_3061_EQ_3061(...) \, -#define Z_IS_3062_EQ_3062(...) \, -#define Z_IS_3063_EQ_3063(...) \, -#define Z_IS_3064_EQ_3064(...) \, -#define Z_IS_3065_EQ_3065(...) \, -#define Z_IS_3066_EQ_3066(...) \, -#define Z_IS_3067_EQ_3067(...) \, -#define Z_IS_3068_EQ_3068(...) \, -#define Z_IS_3069_EQ_3069(...) \, -#define Z_IS_3070_EQ_3070(...) \, -#define Z_IS_3071_EQ_3071(...) \, -#define Z_IS_3072_EQ_3072(...) \, -#define Z_IS_3073_EQ_3073(...) \, -#define Z_IS_3074_EQ_3074(...) \, -#define Z_IS_3075_EQ_3075(...) \, -#define Z_IS_3076_EQ_3076(...) \, -#define Z_IS_3077_EQ_3077(...) \, -#define Z_IS_3078_EQ_3078(...) \, -#define Z_IS_3079_EQ_3079(...) \, -#define Z_IS_3080_EQ_3080(...) \, -#define Z_IS_3081_EQ_3081(...) \, -#define Z_IS_3082_EQ_3082(...) \, -#define Z_IS_3083_EQ_3083(...) \, -#define Z_IS_3084_EQ_3084(...) \, -#define Z_IS_3085_EQ_3085(...) \, -#define Z_IS_3086_EQ_3086(...) \, -#define Z_IS_3087_EQ_3087(...) \, -#define Z_IS_3088_EQ_3088(...) \, -#define Z_IS_3089_EQ_3089(...) \, -#define Z_IS_3090_EQ_3090(...) \, -#define Z_IS_3091_EQ_3091(...) \, -#define Z_IS_3092_EQ_3092(...) \, -#define Z_IS_3093_EQ_3093(...) \, -#define Z_IS_3094_EQ_3094(...) \, -#define Z_IS_3095_EQ_3095(...) \, -#define Z_IS_3096_EQ_3096(...) \, -#define Z_IS_3097_EQ_3097(...) \, -#define Z_IS_3098_EQ_3098(...) \, -#define Z_IS_3099_EQ_3099(...) \, -#define Z_IS_3100_EQ_3100(...) \, -#define Z_IS_3101_EQ_3101(...) \, -#define Z_IS_3102_EQ_3102(...) \, -#define Z_IS_3103_EQ_3103(...) \, -#define Z_IS_3104_EQ_3104(...) \, -#define Z_IS_3105_EQ_3105(...) \, -#define Z_IS_3106_EQ_3106(...) \, -#define Z_IS_3107_EQ_3107(...) \, -#define Z_IS_3108_EQ_3108(...) \, -#define Z_IS_3109_EQ_3109(...) \, -#define Z_IS_3110_EQ_3110(...) \, -#define Z_IS_3111_EQ_3111(...) \, -#define Z_IS_3112_EQ_3112(...) \, -#define Z_IS_3113_EQ_3113(...) \, -#define Z_IS_3114_EQ_3114(...) \, -#define Z_IS_3115_EQ_3115(...) \, -#define Z_IS_3116_EQ_3116(...) \, -#define Z_IS_3117_EQ_3117(...) \, -#define Z_IS_3118_EQ_3118(...) \, -#define Z_IS_3119_EQ_3119(...) \, -#define Z_IS_3120_EQ_3120(...) \, -#define Z_IS_3121_EQ_3121(...) \, -#define Z_IS_3122_EQ_3122(...) \, -#define Z_IS_3123_EQ_3123(...) \, -#define Z_IS_3124_EQ_3124(...) \, -#define Z_IS_3125_EQ_3125(...) \, -#define Z_IS_3126_EQ_3126(...) \, -#define Z_IS_3127_EQ_3127(...) \, -#define Z_IS_3128_EQ_3128(...) \, -#define Z_IS_3129_EQ_3129(...) \, -#define Z_IS_3130_EQ_3130(...) \, -#define Z_IS_3131_EQ_3131(...) \, -#define Z_IS_3132_EQ_3132(...) \, -#define Z_IS_3133_EQ_3133(...) \, -#define Z_IS_3134_EQ_3134(...) \, -#define Z_IS_3135_EQ_3135(...) \, -#define Z_IS_3136_EQ_3136(...) \, -#define Z_IS_3137_EQ_3137(...) \, -#define Z_IS_3138_EQ_3138(...) \, -#define Z_IS_3139_EQ_3139(...) \, -#define Z_IS_3140_EQ_3140(...) \, -#define Z_IS_3141_EQ_3141(...) \, -#define Z_IS_3142_EQ_3142(...) \, -#define Z_IS_3143_EQ_3143(...) \, -#define Z_IS_3144_EQ_3144(...) \, -#define Z_IS_3145_EQ_3145(...) \, -#define Z_IS_3146_EQ_3146(...) \, -#define Z_IS_3147_EQ_3147(...) \, -#define Z_IS_3148_EQ_3148(...) \, -#define Z_IS_3149_EQ_3149(...) \, -#define Z_IS_3150_EQ_3150(...) \, -#define Z_IS_3151_EQ_3151(...) \, -#define Z_IS_3152_EQ_3152(...) \, -#define Z_IS_3153_EQ_3153(...) \, -#define Z_IS_3154_EQ_3154(...) \, -#define Z_IS_3155_EQ_3155(...) \, -#define Z_IS_3156_EQ_3156(...) \, -#define Z_IS_3157_EQ_3157(...) \, -#define Z_IS_3158_EQ_3158(...) \, -#define Z_IS_3159_EQ_3159(...) \, -#define Z_IS_3160_EQ_3160(...) \, -#define Z_IS_3161_EQ_3161(...) \, -#define Z_IS_3162_EQ_3162(...) \, -#define Z_IS_3163_EQ_3163(...) \, -#define Z_IS_3164_EQ_3164(...) \, -#define Z_IS_3165_EQ_3165(...) \, -#define Z_IS_3166_EQ_3166(...) \, -#define Z_IS_3167_EQ_3167(...) \, -#define Z_IS_3168_EQ_3168(...) \, -#define Z_IS_3169_EQ_3169(...) \, -#define Z_IS_3170_EQ_3170(...) \, -#define Z_IS_3171_EQ_3171(...) \, -#define Z_IS_3172_EQ_3172(...) \, -#define Z_IS_3173_EQ_3173(...) \, -#define Z_IS_3174_EQ_3174(...) \, -#define Z_IS_3175_EQ_3175(...) \, -#define Z_IS_3176_EQ_3176(...) \, -#define Z_IS_3177_EQ_3177(...) \, -#define Z_IS_3178_EQ_3178(...) \, -#define Z_IS_3179_EQ_3179(...) \, -#define Z_IS_3180_EQ_3180(...) \, -#define Z_IS_3181_EQ_3181(...) \, -#define Z_IS_3182_EQ_3182(...) \, -#define Z_IS_3183_EQ_3183(...) \, -#define Z_IS_3184_EQ_3184(...) \, -#define Z_IS_3185_EQ_3185(...) \, -#define Z_IS_3186_EQ_3186(...) \, -#define Z_IS_3187_EQ_3187(...) \, -#define Z_IS_3188_EQ_3188(...) \, -#define Z_IS_3189_EQ_3189(...) \, -#define Z_IS_3190_EQ_3190(...) \, -#define Z_IS_3191_EQ_3191(...) \, -#define Z_IS_3192_EQ_3192(...) \, -#define Z_IS_3193_EQ_3193(...) \, -#define Z_IS_3194_EQ_3194(...) \, -#define Z_IS_3195_EQ_3195(...) \, -#define Z_IS_3196_EQ_3196(...) \, -#define Z_IS_3197_EQ_3197(...) \, -#define Z_IS_3198_EQ_3198(...) \, -#define Z_IS_3199_EQ_3199(...) \, -#define Z_IS_3200_EQ_3200(...) \, -#define Z_IS_3201_EQ_3201(...) \, -#define Z_IS_3202_EQ_3202(...) \, -#define Z_IS_3203_EQ_3203(...) \, -#define Z_IS_3204_EQ_3204(...) \, -#define Z_IS_3205_EQ_3205(...) \, -#define Z_IS_3206_EQ_3206(...) \, -#define Z_IS_3207_EQ_3207(...) \, -#define Z_IS_3208_EQ_3208(...) \, -#define Z_IS_3209_EQ_3209(...) \, -#define Z_IS_3210_EQ_3210(...) \, -#define Z_IS_3211_EQ_3211(...) \, -#define Z_IS_3212_EQ_3212(...) \, -#define Z_IS_3213_EQ_3213(...) \, -#define Z_IS_3214_EQ_3214(...) \, -#define Z_IS_3215_EQ_3215(...) \, -#define Z_IS_3216_EQ_3216(...) \, -#define Z_IS_3217_EQ_3217(...) \, -#define Z_IS_3218_EQ_3218(...) \, -#define Z_IS_3219_EQ_3219(...) \, -#define Z_IS_3220_EQ_3220(...) \, -#define Z_IS_3221_EQ_3221(...) \, -#define Z_IS_3222_EQ_3222(...) \, -#define Z_IS_3223_EQ_3223(...) \, -#define Z_IS_3224_EQ_3224(...) \, -#define Z_IS_3225_EQ_3225(...) \, -#define Z_IS_3226_EQ_3226(...) \, -#define Z_IS_3227_EQ_3227(...) \, -#define Z_IS_3228_EQ_3228(...) \, -#define Z_IS_3229_EQ_3229(...) \, -#define Z_IS_3230_EQ_3230(...) \, -#define Z_IS_3231_EQ_3231(...) \, -#define Z_IS_3232_EQ_3232(...) \, -#define Z_IS_3233_EQ_3233(...) \, -#define Z_IS_3234_EQ_3234(...) \, -#define Z_IS_3235_EQ_3235(...) \, -#define Z_IS_3236_EQ_3236(...) \, -#define Z_IS_3237_EQ_3237(...) \, -#define Z_IS_3238_EQ_3238(...) \, -#define Z_IS_3239_EQ_3239(...) \, -#define Z_IS_3240_EQ_3240(...) \, -#define Z_IS_3241_EQ_3241(...) \, -#define Z_IS_3242_EQ_3242(...) \, -#define Z_IS_3243_EQ_3243(...) \, -#define Z_IS_3244_EQ_3244(...) \, -#define Z_IS_3245_EQ_3245(...) \, -#define Z_IS_3246_EQ_3246(...) \, -#define Z_IS_3247_EQ_3247(...) \, -#define Z_IS_3248_EQ_3248(...) \, -#define Z_IS_3249_EQ_3249(...) \, -#define Z_IS_3250_EQ_3250(...) \, -#define Z_IS_3251_EQ_3251(...) \, -#define Z_IS_3252_EQ_3252(...) \, -#define Z_IS_3253_EQ_3253(...) \, -#define Z_IS_3254_EQ_3254(...) \, -#define Z_IS_3255_EQ_3255(...) \, -#define Z_IS_3256_EQ_3256(...) \, -#define Z_IS_3257_EQ_3257(...) \, -#define Z_IS_3258_EQ_3258(...) \, -#define Z_IS_3259_EQ_3259(...) \, -#define Z_IS_3260_EQ_3260(...) \, -#define Z_IS_3261_EQ_3261(...) \, -#define Z_IS_3262_EQ_3262(...) \, -#define Z_IS_3263_EQ_3263(...) \, -#define Z_IS_3264_EQ_3264(...) \, -#define Z_IS_3265_EQ_3265(...) \, -#define Z_IS_3266_EQ_3266(...) \, -#define Z_IS_3267_EQ_3267(...) \, -#define Z_IS_3268_EQ_3268(...) \, -#define Z_IS_3269_EQ_3269(...) \, -#define Z_IS_3270_EQ_3270(...) \, -#define Z_IS_3271_EQ_3271(...) \, -#define Z_IS_3272_EQ_3272(...) \, -#define Z_IS_3273_EQ_3273(...) \, -#define Z_IS_3274_EQ_3274(...) \, -#define Z_IS_3275_EQ_3275(...) \, -#define Z_IS_3276_EQ_3276(...) \, -#define Z_IS_3277_EQ_3277(...) \, -#define Z_IS_3278_EQ_3278(...) \, -#define Z_IS_3279_EQ_3279(...) \, -#define Z_IS_3280_EQ_3280(...) \, -#define Z_IS_3281_EQ_3281(...) \, -#define Z_IS_3282_EQ_3282(...) \, -#define Z_IS_3283_EQ_3283(...) \, -#define Z_IS_3284_EQ_3284(...) \, -#define Z_IS_3285_EQ_3285(...) \, -#define Z_IS_3286_EQ_3286(...) \, -#define Z_IS_3287_EQ_3287(...) \, -#define Z_IS_3288_EQ_3288(...) \, -#define Z_IS_3289_EQ_3289(...) \, -#define Z_IS_3290_EQ_3290(...) \, -#define Z_IS_3291_EQ_3291(...) \, -#define Z_IS_3292_EQ_3292(...) \, -#define Z_IS_3293_EQ_3293(...) \, -#define Z_IS_3294_EQ_3294(...) \, -#define Z_IS_3295_EQ_3295(...) \, -#define Z_IS_3296_EQ_3296(...) \, -#define Z_IS_3297_EQ_3297(...) \, -#define Z_IS_3298_EQ_3298(...) \, -#define Z_IS_3299_EQ_3299(...) \, -#define Z_IS_3300_EQ_3300(...) \, -#define Z_IS_3301_EQ_3301(...) \, -#define Z_IS_3302_EQ_3302(...) \, -#define Z_IS_3303_EQ_3303(...) \, -#define Z_IS_3304_EQ_3304(...) \, -#define Z_IS_3305_EQ_3305(...) \, -#define Z_IS_3306_EQ_3306(...) \, -#define Z_IS_3307_EQ_3307(...) \, -#define Z_IS_3308_EQ_3308(...) \, -#define Z_IS_3309_EQ_3309(...) \, -#define Z_IS_3310_EQ_3310(...) \, -#define Z_IS_3311_EQ_3311(...) \, -#define Z_IS_3312_EQ_3312(...) \, -#define Z_IS_3313_EQ_3313(...) \, -#define Z_IS_3314_EQ_3314(...) \, -#define Z_IS_3315_EQ_3315(...) \, -#define Z_IS_3316_EQ_3316(...) \, -#define Z_IS_3317_EQ_3317(...) \, -#define Z_IS_3318_EQ_3318(...) \, -#define Z_IS_3319_EQ_3319(...) \, -#define Z_IS_3320_EQ_3320(...) \, -#define Z_IS_3321_EQ_3321(...) \, -#define Z_IS_3322_EQ_3322(...) \, -#define Z_IS_3323_EQ_3323(...) \, -#define Z_IS_3324_EQ_3324(...) \, -#define Z_IS_3325_EQ_3325(...) \, -#define Z_IS_3326_EQ_3326(...) \, -#define Z_IS_3327_EQ_3327(...) \, -#define Z_IS_3328_EQ_3328(...) \, -#define Z_IS_3329_EQ_3329(...) \, -#define Z_IS_3330_EQ_3330(...) \, -#define Z_IS_3331_EQ_3331(...) \, -#define Z_IS_3332_EQ_3332(...) \, -#define Z_IS_3333_EQ_3333(...) \, -#define Z_IS_3334_EQ_3334(...) \, -#define Z_IS_3335_EQ_3335(...) \, -#define Z_IS_3336_EQ_3336(...) \, -#define Z_IS_3337_EQ_3337(...) \, -#define Z_IS_3338_EQ_3338(...) \, -#define Z_IS_3339_EQ_3339(...) \, -#define Z_IS_3340_EQ_3340(...) \, -#define Z_IS_3341_EQ_3341(...) \, -#define Z_IS_3342_EQ_3342(...) \, -#define Z_IS_3343_EQ_3343(...) \, -#define Z_IS_3344_EQ_3344(...) \, -#define Z_IS_3345_EQ_3345(...) \, -#define Z_IS_3346_EQ_3346(...) \, -#define Z_IS_3347_EQ_3347(...) \, -#define Z_IS_3348_EQ_3348(...) \, -#define Z_IS_3349_EQ_3349(...) \, -#define Z_IS_3350_EQ_3350(...) \, -#define Z_IS_3351_EQ_3351(...) \, -#define Z_IS_3352_EQ_3352(...) \, -#define Z_IS_3353_EQ_3353(...) \, -#define Z_IS_3354_EQ_3354(...) \, -#define Z_IS_3355_EQ_3355(...) \, -#define Z_IS_3356_EQ_3356(...) \, -#define Z_IS_3357_EQ_3357(...) \, -#define Z_IS_3358_EQ_3358(...) \, -#define Z_IS_3359_EQ_3359(...) \, -#define Z_IS_3360_EQ_3360(...) \, -#define Z_IS_3361_EQ_3361(...) \, -#define Z_IS_3362_EQ_3362(...) \, -#define Z_IS_3363_EQ_3363(...) \, -#define Z_IS_3364_EQ_3364(...) \, -#define Z_IS_3365_EQ_3365(...) \, -#define Z_IS_3366_EQ_3366(...) \, -#define Z_IS_3367_EQ_3367(...) \, -#define Z_IS_3368_EQ_3368(...) \, -#define Z_IS_3369_EQ_3369(...) \, -#define Z_IS_3370_EQ_3370(...) \, -#define Z_IS_3371_EQ_3371(...) \, -#define Z_IS_3372_EQ_3372(...) \, -#define Z_IS_3373_EQ_3373(...) \, -#define Z_IS_3374_EQ_3374(...) \, -#define Z_IS_3375_EQ_3375(...) \, -#define Z_IS_3376_EQ_3376(...) \, -#define Z_IS_3377_EQ_3377(...) \, -#define Z_IS_3378_EQ_3378(...) \, -#define Z_IS_3379_EQ_3379(...) \, -#define Z_IS_3380_EQ_3380(...) \, -#define Z_IS_3381_EQ_3381(...) \, -#define Z_IS_3382_EQ_3382(...) \, -#define Z_IS_3383_EQ_3383(...) \, -#define Z_IS_3384_EQ_3384(...) \, -#define Z_IS_3385_EQ_3385(...) \, -#define Z_IS_3386_EQ_3386(...) \, -#define Z_IS_3387_EQ_3387(...) \, -#define Z_IS_3388_EQ_3388(...) \, -#define Z_IS_3389_EQ_3389(...) \, -#define Z_IS_3390_EQ_3390(...) \, -#define Z_IS_3391_EQ_3391(...) \, -#define Z_IS_3392_EQ_3392(...) \, -#define Z_IS_3393_EQ_3393(...) \, -#define Z_IS_3394_EQ_3394(...) \, -#define Z_IS_3395_EQ_3395(...) \, -#define Z_IS_3396_EQ_3396(...) \, -#define Z_IS_3397_EQ_3397(...) \, -#define Z_IS_3398_EQ_3398(...) \, -#define Z_IS_3399_EQ_3399(...) \, -#define Z_IS_3400_EQ_3400(...) \, -#define Z_IS_3401_EQ_3401(...) \, -#define Z_IS_3402_EQ_3402(...) \, -#define Z_IS_3403_EQ_3403(...) \, -#define Z_IS_3404_EQ_3404(...) \, -#define Z_IS_3405_EQ_3405(...) \, -#define Z_IS_3406_EQ_3406(...) \, -#define Z_IS_3407_EQ_3407(...) \, -#define Z_IS_3408_EQ_3408(...) \, -#define Z_IS_3409_EQ_3409(...) \, -#define Z_IS_3410_EQ_3410(...) \, -#define Z_IS_3411_EQ_3411(...) \, -#define Z_IS_3412_EQ_3412(...) \, -#define Z_IS_3413_EQ_3413(...) \, -#define Z_IS_3414_EQ_3414(...) \, -#define Z_IS_3415_EQ_3415(...) \, -#define Z_IS_3416_EQ_3416(...) \, -#define Z_IS_3417_EQ_3417(...) \, -#define Z_IS_3418_EQ_3418(...) \, -#define Z_IS_3419_EQ_3419(...) \, -#define Z_IS_3420_EQ_3420(...) \, -#define Z_IS_3421_EQ_3421(...) \, -#define Z_IS_3422_EQ_3422(...) \, -#define Z_IS_3423_EQ_3423(...) \, -#define Z_IS_3424_EQ_3424(...) \, -#define Z_IS_3425_EQ_3425(...) \, -#define Z_IS_3426_EQ_3426(...) \, -#define Z_IS_3427_EQ_3427(...) \, -#define Z_IS_3428_EQ_3428(...) \, -#define Z_IS_3429_EQ_3429(...) \, -#define Z_IS_3430_EQ_3430(...) \, -#define Z_IS_3431_EQ_3431(...) \, -#define Z_IS_3432_EQ_3432(...) \, -#define Z_IS_3433_EQ_3433(...) \, -#define Z_IS_3434_EQ_3434(...) \, -#define Z_IS_3435_EQ_3435(...) \, -#define Z_IS_3436_EQ_3436(...) \, -#define Z_IS_3437_EQ_3437(...) \, -#define Z_IS_3438_EQ_3438(...) \, -#define Z_IS_3439_EQ_3439(...) \, -#define Z_IS_3440_EQ_3440(...) \, -#define Z_IS_3441_EQ_3441(...) \, -#define Z_IS_3442_EQ_3442(...) \, -#define Z_IS_3443_EQ_3443(...) \, -#define Z_IS_3444_EQ_3444(...) \, -#define Z_IS_3445_EQ_3445(...) \, -#define Z_IS_3446_EQ_3446(...) \, -#define Z_IS_3447_EQ_3447(...) \, -#define Z_IS_3448_EQ_3448(...) \, -#define Z_IS_3449_EQ_3449(...) \, -#define Z_IS_3450_EQ_3450(...) \, -#define Z_IS_3451_EQ_3451(...) \, -#define Z_IS_3452_EQ_3452(...) \, -#define Z_IS_3453_EQ_3453(...) \, -#define Z_IS_3454_EQ_3454(...) \, -#define Z_IS_3455_EQ_3455(...) \, -#define Z_IS_3456_EQ_3456(...) \, -#define Z_IS_3457_EQ_3457(...) \, -#define Z_IS_3458_EQ_3458(...) \, -#define Z_IS_3459_EQ_3459(...) \, -#define Z_IS_3460_EQ_3460(...) \, -#define Z_IS_3461_EQ_3461(...) \, -#define Z_IS_3462_EQ_3462(...) \, -#define Z_IS_3463_EQ_3463(...) \, -#define Z_IS_3464_EQ_3464(...) \, -#define Z_IS_3465_EQ_3465(...) \, -#define Z_IS_3466_EQ_3466(...) \, -#define Z_IS_3467_EQ_3467(...) \, -#define Z_IS_3468_EQ_3468(...) \, -#define Z_IS_3469_EQ_3469(...) \, -#define Z_IS_3470_EQ_3470(...) \, -#define Z_IS_3471_EQ_3471(...) \, -#define Z_IS_3472_EQ_3472(...) \, -#define Z_IS_3473_EQ_3473(...) \, -#define Z_IS_3474_EQ_3474(...) \, -#define Z_IS_3475_EQ_3475(...) \, -#define Z_IS_3476_EQ_3476(...) \, -#define Z_IS_3477_EQ_3477(...) \, -#define Z_IS_3478_EQ_3478(...) \, -#define Z_IS_3479_EQ_3479(...) \, -#define Z_IS_3480_EQ_3480(...) \, -#define Z_IS_3481_EQ_3481(...) \, -#define Z_IS_3482_EQ_3482(...) \, -#define Z_IS_3483_EQ_3483(...) \, -#define Z_IS_3484_EQ_3484(...) \, -#define Z_IS_3485_EQ_3485(...) \, -#define Z_IS_3486_EQ_3486(...) \, -#define Z_IS_3487_EQ_3487(...) \, -#define Z_IS_3488_EQ_3488(...) \, -#define Z_IS_3489_EQ_3489(...) \, -#define Z_IS_3490_EQ_3490(...) \, -#define Z_IS_3491_EQ_3491(...) \, -#define Z_IS_3492_EQ_3492(...) \, -#define Z_IS_3493_EQ_3493(...) \, -#define Z_IS_3494_EQ_3494(...) \, -#define Z_IS_3495_EQ_3495(...) \, -#define Z_IS_3496_EQ_3496(...) \, -#define Z_IS_3497_EQ_3497(...) \, -#define Z_IS_3498_EQ_3498(...) \, -#define Z_IS_3499_EQ_3499(...) \, -#define Z_IS_3500_EQ_3500(...) \, -#define Z_IS_3501_EQ_3501(...) \, -#define Z_IS_3502_EQ_3502(...) \, -#define Z_IS_3503_EQ_3503(...) \, -#define Z_IS_3504_EQ_3504(...) \, -#define Z_IS_3505_EQ_3505(...) \, -#define Z_IS_3506_EQ_3506(...) \, -#define Z_IS_3507_EQ_3507(...) \, -#define Z_IS_3508_EQ_3508(...) \, -#define Z_IS_3509_EQ_3509(...) \, -#define Z_IS_3510_EQ_3510(...) \, -#define Z_IS_3511_EQ_3511(...) \, -#define Z_IS_3512_EQ_3512(...) \, -#define Z_IS_3513_EQ_3513(...) \, -#define Z_IS_3514_EQ_3514(...) \, -#define Z_IS_3515_EQ_3515(...) \, -#define Z_IS_3516_EQ_3516(...) \, -#define Z_IS_3517_EQ_3517(...) \, -#define Z_IS_3518_EQ_3518(...) \, -#define Z_IS_3519_EQ_3519(...) \, -#define Z_IS_3520_EQ_3520(...) \, -#define Z_IS_3521_EQ_3521(...) \, -#define Z_IS_3522_EQ_3522(...) \, -#define Z_IS_3523_EQ_3523(...) \, -#define Z_IS_3524_EQ_3524(...) \, -#define Z_IS_3525_EQ_3525(...) \, -#define Z_IS_3526_EQ_3526(...) \, -#define Z_IS_3527_EQ_3527(...) \, -#define Z_IS_3528_EQ_3528(...) \, -#define Z_IS_3529_EQ_3529(...) \, -#define Z_IS_3530_EQ_3530(...) \, -#define Z_IS_3531_EQ_3531(...) \, -#define Z_IS_3532_EQ_3532(...) \, -#define Z_IS_3533_EQ_3533(...) \, -#define Z_IS_3534_EQ_3534(...) \, -#define Z_IS_3535_EQ_3535(...) \, -#define Z_IS_3536_EQ_3536(...) \, -#define Z_IS_3537_EQ_3537(...) \, -#define Z_IS_3538_EQ_3538(...) \, -#define Z_IS_3539_EQ_3539(...) \, -#define Z_IS_3540_EQ_3540(...) \, -#define Z_IS_3541_EQ_3541(...) \, -#define Z_IS_3542_EQ_3542(...) \, -#define Z_IS_3543_EQ_3543(...) \, -#define Z_IS_3544_EQ_3544(...) \, -#define Z_IS_3545_EQ_3545(...) \, -#define Z_IS_3546_EQ_3546(...) \, -#define Z_IS_3547_EQ_3547(...) \, -#define Z_IS_3548_EQ_3548(...) \, -#define Z_IS_3549_EQ_3549(...) \, -#define Z_IS_3550_EQ_3550(...) \, -#define Z_IS_3551_EQ_3551(...) \, -#define Z_IS_3552_EQ_3552(...) \, -#define Z_IS_3553_EQ_3553(...) \, -#define Z_IS_3554_EQ_3554(...) \, -#define Z_IS_3555_EQ_3555(...) \, -#define Z_IS_3556_EQ_3556(...) \, -#define Z_IS_3557_EQ_3557(...) \, -#define Z_IS_3558_EQ_3558(...) \, -#define Z_IS_3559_EQ_3559(...) \, -#define Z_IS_3560_EQ_3560(...) \, -#define Z_IS_3561_EQ_3561(...) \, -#define Z_IS_3562_EQ_3562(...) \, -#define Z_IS_3563_EQ_3563(...) \, -#define Z_IS_3564_EQ_3564(...) \, -#define Z_IS_3565_EQ_3565(...) \, -#define Z_IS_3566_EQ_3566(...) \, -#define Z_IS_3567_EQ_3567(...) \, -#define Z_IS_3568_EQ_3568(...) \, -#define Z_IS_3569_EQ_3569(...) \, -#define Z_IS_3570_EQ_3570(...) \, -#define Z_IS_3571_EQ_3571(...) \, -#define Z_IS_3572_EQ_3572(...) \, -#define Z_IS_3573_EQ_3573(...) \, -#define Z_IS_3574_EQ_3574(...) \, -#define Z_IS_3575_EQ_3575(...) \, -#define Z_IS_3576_EQ_3576(...) \, -#define Z_IS_3577_EQ_3577(...) \, -#define Z_IS_3578_EQ_3578(...) \, -#define Z_IS_3579_EQ_3579(...) \, -#define Z_IS_3580_EQ_3580(...) \, -#define Z_IS_3581_EQ_3581(...) \, -#define Z_IS_3582_EQ_3582(...) \, -#define Z_IS_3583_EQ_3583(...) \, -#define Z_IS_3584_EQ_3584(...) \, -#define Z_IS_3585_EQ_3585(...) \, -#define Z_IS_3586_EQ_3586(...) \, -#define Z_IS_3587_EQ_3587(...) \, -#define Z_IS_3588_EQ_3588(...) \, -#define Z_IS_3589_EQ_3589(...) \, -#define Z_IS_3590_EQ_3590(...) \, -#define Z_IS_3591_EQ_3591(...) \, -#define Z_IS_3592_EQ_3592(...) \, -#define Z_IS_3593_EQ_3593(...) \, -#define Z_IS_3594_EQ_3594(...) \, -#define Z_IS_3595_EQ_3595(...) \, -#define Z_IS_3596_EQ_3596(...) \, -#define Z_IS_3597_EQ_3597(...) \, -#define Z_IS_3598_EQ_3598(...) \, -#define Z_IS_3599_EQ_3599(...) \, -#define Z_IS_3600_EQ_3600(...) \, -#define Z_IS_3601_EQ_3601(...) \, -#define Z_IS_3602_EQ_3602(...) \, -#define Z_IS_3603_EQ_3603(...) \, -#define Z_IS_3604_EQ_3604(...) \, -#define Z_IS_3605_EQ_3605(...) \, -#define Z_IS_3606_EQ_3606(...) \, -#define Z_IS_3607_EQ_3607(...) \, -#define Z_IS_3608_EQ_3608(...) \, -#define Z_IS_3609_EQ_3609(...) \, -#define Z_IS_3610_EQ_3610(...) \, -#define Z_IS_3611_EQ_3611(...) \, -#define Z_IS_3612_EQ_3612(...) \, -#define Z_IS_3613_EQ_3613(...) \, -#define Z_IS_3614_EQ_3614(...) \, -#define Z_IS_3615_EQ_3615(...) \, -#define Z_IS_3616_EQ_3616(...) \, -#define Z_IS_3617_EQ_3617(...) \, -#define Z_IS_3618_EQ_3618(...) \, -#define Z_IS_3619_EQ_3619(...) \, -#define Z_IS_3620_EQ_3620(...) \, -#define Z_IS_3621_EQ_3621(...) \, -#define Z_IS_3622_EQ_3622(...) \, -#define Z_IS_3623_EQ_3623(...) \, -#define Z_IS_3624_EQ_3624(...) \, -#define Z_IS_3625_EQ_3625(...) \, -#define Z_IS_3626_EQ_3626(...) \, -#define Z_IS_3627_EQ_3627(...) \, -#define Z_IS_3628_EQ_3628(...) \, -#define Z_IS_3629_EQ_3629(...) \, -#define Z_IS_3630_EQ_3630(...) \, -#define Z_IS_3631_EQ_3631(...) \, -#define Z_IS_3632_EQ_3632(...) \, -#define Z_IS_3633_EQ_3633(...) \, -#define Z_IS_3634_EQ_3634(...) \, -#define Z_IS_3635_EQ_3635(...) \, -#define Z_IS_3636_EQ_3636(...) \, -#define Z_IS_3637_EQ_3637(...) \, -#define Z_IS_3638_EQ_3638(...) \, -#define Z_IS_3639_EQ_3639(...) \, -#define Z_IS_3640_EQ_3640(...) \, -#define Z_IS_3641_EQ_3641(...) \, -#define Z_IS_3642_EQ_3642(...) \, -#define Z_IS_3643_EQ_3643(...) \, -#define Z_IS_3644_EQ_3644(...) \, -#define Z_IS_3645_EQ_3645(...) \, -#define Z_IS_3646_EQ_3646(...) \, -#define Z_IS_3647_EQ_3647(...) \, -#define Z_IS_3648_EQ_3648(...) \, -#define Z_IS_3649_EQ_3649(...) \, -#define Z_IS_3650_EQ_3650(...) \, -#define Z_IS_3651_EQ_3651(...) \, -#define Z_IS_3652_EQ_3652(...) \, -#define Z_IS_3653_EQ_3653(...) \, -#define Z_IS_3654_EQ_3654(...) \, -#define Z_IS_3655_EQ_3655(...) \, -#define Z_IS_3656_EQ_3656(...) \, -#define Z_IS_3657_EQ_3657(...) \, -#define Z_IS_3658_EQ_3658(...) \, -#define Z_IS_3659_EQ_3659(...) \, -#define Z_IS_3660_EQ_3660(...) \, -#define Z_IS_3661_EQ_3661(...) \, -#define Z_IS_3662_EQ_3662(...) \, -#define Z_IS_3663_EQ_3663(...) \, -#define Z_IS_3664_EQ_3664(...) \, -#define Z_IS_3665_EQ_3665(...) \, -#define Z_IS_3666_EQ_3666(...) \, -#define Z_IS_3667_EQ_3667(...) \, -#define Z_IS_3668_EQ_3668(...) \, -#define Z_IS_3669_EQ_3669(...) \, -#define Z_IS_3670_EQ_3670(...) \, -#define Z_IS_3671_EQ_3671(...) \, -#define Z_IS_3672_EQ_3672(...) \, -#define Z_IS_3673_EQ_3673(...) \, -#define Z_IS_3674_EQ_3674(...) \, -#define Z_IS_3675_EQ_3675(...) \, -#define Z_IS_3676_EQ_3676(...) \, -#define Z_IS_3677_EQ_3677(...) \, -#define Z_IS_3678_EQ_3678(...) \, -#define Z_IS_3679_EQ_3679(...) \, -#define Z_IS_3680_EQ_3680(...) \, -#define Z_IS_3681_EQ_3681(...) \, -#define Z_IS_3682_EQ_3682(...) \, -#define Z_IS_3683_EQ_3683(...) \, -#define Z_IS_3684_EQ_3684(...) \, -#define Z_IS_3685_EQ_3685(...) \, -#define Z_IS_3686_EQ_3686(...) \, -#define Z_IS_3687_EQ_3687(...) \, -#define Z_IS_3688_EQ_3688(...) \, -#define Z_IS_3689_EQ_3689(...) \, -#define Z_IS_3690_EQ_3690(...) \, -#define Z_IS_3691_EQ_3691(...) \, -#define Z_IS_3692_EQ_3692(...) \, -#define Z_IS_3693_EQ_3693(...) \, -#define Z_IS_3694_EQ_3694(...) \, -#define Z_IS_3695_EQ_3695(...) \, -#define Z_IS_3696_EQ_3696(...) \, -#define Z_IS_3697_EQ_3697(...) \, -#define Z_IS_3698_EQ_3698(...) \, -#define Z_IS_3699_EQ_3699(...) \, -#define Z_IS_3700_EQ_3700(...) \, -#define Z_IS_3701_EQ_3701(...) \, -#define Z_IS_3702_EQ_3702(...) \, -#define Z_IS_3703_EQ_3703(...) \, -#define Z_IS_3704_EQ_3704(...) \, -#define Z_IS_3705_EQ_3705(...) \, -#define Z_IS_3706_EQ_3706(...) \, -#define Z_IS_3707_EQ_3707(...) \, -#define Z_IS_3708_EQ_3708(...) \, -#define Z_IS_3709_EQ_3709(...) \, -#define Z_IS_3710_EQ_3710(...) \, -#define Z_IS_3711_EQ_3711(...) \, -#define Z_IS_3712_EQ_3712(...) \, -#define Z_IS_3713_EQ_3713(...) \, -#define Z_IS_3714_EQ_3714(...) \, -#define Z_IS_3715_EQ_3715(...) \, -#define Z_IS_3716_EQ_3716(...) \, -#define Z_IS_3717_EQ_3717(...) \, -#define Z_IS_3718_EQ_3718(...) \, -#define Z_IS_3719_EQ_3719(...) \, -#define Z_IS_3720_EQ_3720(...) \, -#define Z_IS_3721_EQ_3721(...) \, -#define Z_IS_3722_EQ_3722(...) \, -#define Z_IS_3723_EQ_3723(...) \, -#define Z_IS_3724_EQ_3724(...) \, -#define Z_IS_3725_EQ_3725(...) \, -#define Z_IS_3726_EQ_3726(...) \, -#define Z_IS_3727_EQ_3727(...) \, -#define Z_IS_3728_EQ_3728(...) \, -#define Z_IS_3729_EQ_3729(...) \, -#define Z_IS_3730_EQ_3730(...) \, -#define Z_IS_3731_EQ_3731(...) \, -#define Z_IS_3732_EQ_3732(...) \, -#define Z_IS_3733_EQ_3733(...) \, -#define Z_IS_3734_EQ_3734(...) \, -#define Z_IS_3735_EQ_3735(...) \, -#define Z_IS_3736_EQ_3736(...) \, -#define Z_IS_3737_EQ_3737(...) \, -#define Z_IS_3738_EQ_3738(...) \, -#define Z_IS_3739_EQ_3739(...) \, -#define Z_IS_3740_EQ_3740(...) \, -#define Z_IS_3741_EQ_3741(...) \, -#define Z_IS_3742_EQ_3742(...) \, -#define Z_IS_3743_EQ_3743(...) \, -#define Z_IS_3744_EQ_3744(...) \, -#define Z_IS_3745_EQ_3745(...) \, -#define Z_IS_3746_EQ_3746(...) \, -#define Z_IS_3747_EQ_3747(...) \, -#define Z_IS_3748_EQ_3748(...) \, -#define Z_IS_3749_EQ_3749(...) \, -#define Z_IS_3750_EQ_3750(...) \, -#define Z_IS_3751_EQ_3751(...) \, -#define Z_IS_3752_EQ_3752(...) \, -#define Z_IS_3753_EQ_3753(...) \, -#define Z_IS_3754_EQ_3754(...) \, -#define Z_IS_3755_EQ_3755(...) \, -#define Z_IS_3756_EQ_3756(...) \, -#define Z_IS_3757_EQ_3757(...) \, -#define Z_IS_3758_EQ_3758(...) \, -#define Z_IS_3759_EQ_3759(...) \, -#define Z_IS_3760_EQ_3760(...) \, -#define Z_IS_3761_EQ_3761(...) \, -#define Z_IS_3762_EQ_3762(...) \, -#define Z_IS_3763_EQ_3763(...) \, -#define Z_IS_3764_EQ_3764(...) \, -#define Z_IS_3765_EQ_3765(...) \, -#define Z_IS_3766_EQ_3766(...) \, -#define Z_IS_3767_EQ_3767(...) \, -#define Z_IS_3768_EQ_3768(...) \, -#define Z_IS_3769_EQ_3769(...) \, -#define Z_IS_3770_EQ_3770(...) \, -#define Z_IS_3771_EQ_3771(...) \, -#define Z_IS_3772_EQ_3772(...) \, -#define Z_IS_3773_EQ_3773(...) \, -#define Z_IS_3774_EQ_3774(...) \, -#define Z_IS_3775_EQ_3775(...) \, -#define Z_IS_3776_EQ_3776(...) \, -#define Z_IS_3777_EQ_3777(...) \, -#define Z_IS_3778_EQ_3778(...) \, -#define Z_IS_3779_EQ_3779(...) \, -#define Z_IS_3780_EQ_3780(...) \, -#define Z_IS_3781_EQ_3781(...) \, -#define Z_IS_3782_EQ_3782(...) \, -#define Z_IS_3783_EQ_3783(...) \, -#define Z_IS_3784_EQ_3784(...) \, -#define Z_IS_3785_EQ_3785(...) \, -#define Z_IS_3786_EQ_3786(...) \, -#define Z_IS_3787_EQ_3787(...) \, -#define Z_IS_3788_EQ_3788(...) \, -#define Z_IS_3789_EQ_3789(...) \, -#define Z_IS_3790_EQ_3790(...) \, -#define Z_IS_3791_EQ_3791(...) \, -#define Z_IS_3792_EQ_3792(...) \, -#define Z_IS_3793_EQ_3793(...) \, -#define Z_IS_3794_EQ_3794(...) \, -#define Z_IS_3795_EQ_3795(...) \, -#define Z_IS_3796_EQ_3796(...) \, -#define Z_IS_3797_EQ_3797(...) \, -#define Z_IS_3798_EQ_3798(...) \, -#define Z_IS_3799_EQ_3799(...) \, -#define Z_IS_3800_EQ_3800(...) \, -#define Z_IS_3801_EQ_3801(...) \, -#define Z_IS_3802_EQ_3802(...) \, -#define Z_IS_3803_EQ_3803(...) \, -#define Z_IS_3804_EQ_3804(...) \, -#define Z_IS_3805_EQ_3805(...) \, -#define Z_IS_3806_EQ_3806(...) \, -#define Z_IS_3807_EQ_3807(...) \, -#define Z_IS_3808_EQ_3808(...) \, -#define Z_IS_3809_EQ_3809(...) \, -#define Z_IS_3810_EQ_3810(...) \, -#define Z_IS_3811_EQ_3811(...) \, -#define Z_IS_3812_EQ_3812(...) \, -#define Z_IS_3813_EQ_3813(...) \, -#define Z_IS_3814_EQ_3814(...) \, -#define Z_IS_3815_EQ_3815(...) \, -#define Z_IS_3816_EQ_3816(...) \, -#define Z_IS_3817_EQ_3817(...) \, -#define Z_IS_3818_EQ_3818(...) \, -#define Z_IS_3819_EQ_3819(...) \, -#define Z_IS_3820_EQ_3820(...) \, -#define Z_IS_3821_EQ_3821(...) \, -#define Z_IS_3822_EQ_3822(...) \, -#define Z_IS_3823_EQ_3823(...) \, -#define Z_IS_3824_EQ_3824(...) \, -#define Z_IS_3825_EQ_3825(...) \, -#define Z_IS_3826_EQ_3826(...) \, -#define Z_IS_3827_EQ_3827(...) \, -#define Z_IS_3828_EQ_3828(...) \, -#define Z_IS_3829_EQ_3829(...) \, -#define Z_IS_3830_EQ_3830(...) \, -#define Z_IS_3831_EQ_3831(...) \, -#define Z_IS_3832_EQ_3832(...) \, -#define Z_IS_3833_EQ_3833(...) \, -#define Z_IS_3834_EQ_3834(...) \, -#define Z_IS_3835_EQ_3835(...) \, -#define Z_IS_3836_EQ_3836(...) \, -#define Z_IS_3837_EQ_3837(...) \, -#define Z_IS_3838_EQ_3838(...) \, -#define Z_IS_3839_EQ_3839(...) \, -#define Z_IS_3840_EQ_3840(...) \, -#define Z_IS_3841_EQ_3841(...) \, -#define Z_IS_3842_EQ_3842(...) \, -#define Z_IS_3843_EQ_3843(...) \, -#define Z_IS_3844_EQ_3844(...) \, -#define Z_IS_3845_EQ_3845(...) \, -#define Z_IS_3846_EQ_3846(...) \, -#define Z_IS_3847_EQ_3847(...) \, -#define Z_IS_3848_EQ_3848(...) \, -#define Z_IS_3849_EQ_3849(...) \, -#define Z_IS_3850_EQ_3850(...) \, -#define Z_IS_3851_EQ_3851(...) \, -#define Z_IS_3852_EQ_3852(...) \, -#define Z_IS_3853_EQ_3853(...) \, -#define Z_IS_3854_EQ_3854(...) \, -#define Z_IS_3855_EQ_3855(...) \, -#define Z_IS_3856_EQ_3856(...) \, -#define Z_IS_3857_EQ_3857(...) \, -#define Z_IS_3858_EQ_3858(...) \, -#define Z_IS_3859_EQ_3859(...) \, -#define Z_IS_3860_EQ_3860(...) \, -#define Z_IS_3861_EQ_3861(...) \, -#define Z_IS_3862_EQ_3862(...) \, -#define Z_IS_3863_EQ_3863(...) \, -#define Z_IS_3864_EQ_3864(...) \, -#define Z_IS_3865_EQ_3865(...) \, -#define Z_IS_3866_EQ_3866(...) \, -#define Z_IS_3867_EQ_3867(...) \, -#define Z_IS_3868_EQ_3868(...) \, -#define Z_IS_3869_EQ_3869(...) \, -#define Z_IS_3870_EQ_3870(...) \, -#define Z_IS_3871_EQ_3871(...) \, -#define Z_IS_3872_EQ_3872(...) \, -#define Z_IS_3873_EQ_3873(...) \, -#define Z_IS_3874_EQ_3874(...) \, -#define Z_IS_3875_EQ_3875(...) \, -#define Z_IS_3876_EQ_3876(...) \, -#define Z_IS_3877_EQ_3877(...) \, -#define Z_IS_3878_EQ_3878(...) \, -#define Z_IS_3879_EQ_3879(...) \, -#define Z_IS_3880_EQ_3880(...) \, -#define Z_IS_3881_EQ_3881(...) \, -#define Z_IS_3882_EQ_3882(...) \, -#define Z_IS_3883_EQ_3883(...) \, -#define Z_IS_3884_EQ_3884(...) \, -#define Z_IS_3885_EQ_3885(...) \, -#define Z_IS_3886_EQ_3886(...) \, -#define Z_IS_3887_EQ_3887(...) \, -#define Z_IS_3888_EQ_3888(...) \, -#define Z_IS_3889_EQ_3889(...) \, -#define Z_IS_3890_EQ_3890(...) \, -#define Z_IS_3891_EQ_3891(...) \, -#define Z_IS_3892_EQ_3892(...) \, -#define Z_IS_3893_EQ_3893(...) \, -#define Z_IS_3894_EQ_3894(...) \, -#define Z_IS_3895_EQ_3895(...) \, -#define Z_IS_3896_EQ_3896(...) \, -#define Z_IS_3897_EQ_3897(...) \, -#define Z_IS_3898_EQ_3898(...) \, -#define Z_IS_3899_EQ_3899(...) \, -#define Z_IS_3900_EQ_3900(...) \, -#define Z_IS_3901_EQ_3901(...) \, -#define Z_IS_3902_EQ_3902(...) \, -#define Z_IS_3903_EQ_3903(...) \, -#define Z_IS_3904_EQ_3904(...) \, -#define Z_IS_3905_EQ_3905(...) \, -#define Z_IS_3906_EQ_3906(...) \, -#define Z_IS_3907_EQ_3907(...) \, -#define Z_IS_3908_EQ_3908(...) \, -#define Z_IS_3909_EQ_3909(...) \, -#define Z_IS_3910_EQ_3910(...) \, -#define Z_IS_3911_EQ_3911(...) \, -#define Z_IS_3912_EQ_3912(...) \, -#define Z_IS_3913_EQ_3913(...) \, -#define Z_IS_3914_EQ_3914(...) \, -#define Z_IS_3915_EQ_3915(...) \, -#define Z_IS_3916_EQ_3916(...) \, -#define Z_IS_3917_EQ_3917(...) \, -#define Z_IS_3918_EQ_3918(...) \, -#define Z_IS_3919_EQ_3919(...) \, -#define Z_IS_3920_EQ_3920(...) \, -#define Z_IS_3921_EQ_3921(...) \, -#define Z_IS_3922_EQ_3922(...) \, -#define Z_IS_3923_EQ_3923(...) \, -#define Z_IS_3924_EQ_3924(...) \, -#define Z_IS_3925_EQ_3925(...) \, -#define Z_IS_3926_EQ_3926(...) \, -#define Z_IS_3927_EQ_3927(...) \, -#define Z_IS_3928_EQ_3928(...) \, -#define Z_IS_3929_EQ_3929(...) \, -#define Z_IS_3930_EQ_3930(...) \, -#define Z_IS_3931_EQ_3931(...) \, -#define Z_IS_3932_EQ_3932(...) \, -#define Z_IS_3933_EQ_3933(...) \, -#define Z_IS_3934_EQ_3934(...) \, -#define Z_IS_3935_EQ_3935(...) \, -#define Z_IS_3936_EQ_3936(...) \, -#define Z_IS_3937_EQ_3937(...) \, -#define Z_IS_3938_EQ_3938(...) \, -#define Z_IS_3939_EQ_3939(...) \, -#define Z_IS_3940_EQ_3940(...) \, -#define Z_IS_3941_EQ_3941(...) \, -#define Z_IS_3942_EQ_3942(...) \, -#define Z_IS_3943_EQ_3943(...) \, -#define Z_IS_3944_EQ_3944(...) \, -#define Z_IS_3945_EQ_3945(...) \, -#define Z_IS_3946_EQ_3946(...) \, -#define Z_IS_3947_EQ_3947(...) \, -#define Z_IS_3948_EQ_3948(...) \, -#define Z_IS_3949_EQ_3949(...) \, -#define Z_IS_3950_EQ_3950(...) \, -#define Z_IS_3951_EQ_3951(...) \, -#define Z_IS_3952_EQ_3952(...) \, -#define Z_IS_3953_EQ_3953(...) \, -#define Z_IS_3954_EQ_3954(...) \, -#define Z_IS_3955_EQ_3955(...) \, -#define Z_IS_3956_EQ_3956(...) \, -#define Z_IS_3957_EQ_3957(...) \, -#define Z_IS_3958_EQ_3958(...) \, -#define Z_IS_3959_EQ_3959(...) \, -#define Z_IS_3960_EQ_3960(...) \, -#define Z_IS_3961_EQ_3961(...) \, -#define Z_IS_3962_EQ_3962(...) \, -#define Z_IS_3963_EQ_3963(...) \, -#define Z_IS_3964_EQ_3964(...) \, -#define Z_IS_3965_EQ_3965(...) \, -#define Z_IS_3966_EQ_3966(...) \, -#define Z_IS_3967_EQ_3967(...) \, -#define Z_IS_3968_EQ_3968(...) \, -#define Z_IS_3969_EQ_3969(...) \, -#define Z_IS_3970_EQ_3970(...) \, -#define Z_IS_3971_EQ_3971(...) \, -#define Z_IS_3972_EQ_3972(...) \, -#define Z_IS_3973_EQ_3973(...) \, -#define Z_IS_3974_EQ_3974(...) \, -#define Z_IS_3975_EQ_3975(...) \, -#define Z_IS_3976_EQ_3976(...) \, -#define Z_IS_3977_EQ_3977(...) \, -#define Z_IS_3978_EQ_3978(...) \, -#define Z_IS_3979_EQ_3979(...) \, -#define Z_IS_3980_EQ_3980(...) \, -#define Z_IS_3981_EQ_3981(...) \, -#define Z_IS_3982_EQ_3982(...) \, -#define Z_IS_3983_EQ_3983(...) \, -#define Z_IS_3984_EQ_3984(...) \, -#define Z_IS_3985_EQ_3985(...) \, -#define Z_IS_3986_EQ_3986(...) \, -#define Z_IS_3987_EQ_3987(...) \, -#define Z_IS_3988_EQ_3988(...) \, -#define Z_IS_3989_EQ_3989(...) \, -#define Z_IS_3990_EQ_3990(...) \, -#define Z_IS_3991_EQ_3991(...) \, -#define Z_IS_3992_EQ_3992(...) \, -#define Z_IS_3993_EQ_3993(...) \, -#define Z_IS_3994_EQ_3994(...) \, -#define Z_IS_3995_EQ_3995(...) \, -#define Z_IS_3996_EQ_3996(...) \, -#define Z_IS_3997_EQ_3997(...) \, -#define Z_IS_3998_EQ_3998(...) \, -#define Z_IS_3999_EQ_3999(...) \, -#define Z_IS_4000_EQ_4000(...) \, -#define Z_IS_4001_EQ_4001(...) \, -#define Z_IS_4002_EQ_4002(...) \, -#define Z_IS_4003_EQ_4003(...) \, -#define Z_IS_4004_EQ_4004(...) \, -#define Z_IS_4005_EQ_4005(...) \, -#define Z_IS_4006_EQ_4006(...) \, -#define Z_IS_4007_EQ_4007(...) \, -#define Z_IS_4008_EQ_4008(...) \, -#define Z_IS_4009_EQ_4009(...) \, -#define Z_IS_4010_EQ_4010(...) \, -#define Z_IS_4011_EQ_4011(...) \, -#define Z_IS_4012_EQ_4012(...) \, -#define Z_IS_4013_EQ_4013(...) \, -#define Z_IS_4014_EQ_4014(...) \, -#define Z_IS_4015_EQ_4015(...) \, -#define Z_IS_4016_EQ_4016(...) \, -#define Z_IS_4017_EQ_4017(...) \, -#define Z_IS_4018_EQ_4018(...) \, -#define Z_IS_4019_EQ_4019(...) \, -#define Z_IS_4020_EQ_4020(...) \, -#define Z_IS_4021_EQ_4021(...) \, -#define Z_IS_4022_EQ_4022(...) \, -#define Z_IS_4023_EQ_4023(...) \, -#define Z_IS_4024_EQ_4024(...) \, -#define Z_IS_4025_EQ_4025(...) \, -#define Z_IS_4026_EQ_4026(...) \, -#define Z_IS_4027_EQ_4027(...) \, -#define Z_IS_4028_EQ_4028(...) \, -#define Z_IS_4029_EQ_4029(...) \, -#define Z_IS_4030_EQ_4030(...) \, -#define Z_IS_4031_EQ_4031(...) \, -#define Z_IS_4032_EQ_4032(...) \, -#define Z_IS_4033_EQ_4033(...) \, -#define Z_IS_4034_EQ_4034(...) \, -#define Z_IS_4035_EQ_4035(...) \, -#define Z_IS_4036_EQ_4036(...) \, -#define Z_IS_4037_EQ_4037(...) \, -#define Z_IS_4038_EQ_4038(...) \, -#define Z_IS_4039_EQ_4039(...) \, -#define Z_IS_4040_EQ_4040(...) \, -#define Z_IS_4041_EQ_4041(...) \, -#define Z_IS_4042_EQ_4042(...) \, -#define Z_IS_4043_EQ_4043(...) \, -#define Z_IS_4044_EQ_4044(...) \, -#define Z_IS_4045_EQ_4045(...) \, -#define Z_IS_4046_EQ_4046(...) \, -#define Z_IS_4047_EQ_4047(...) \, -#define Z_IS_4048_EQ_4048(...) \, -#define Z_IS_4049_EQ_4049(...) \, -#define Z_IS_4050_EQ_4050(...) \, -#define Z_IS_4051_EQ_4051(...) \, -#define Z_IS_4052_EQ_4052(...) \, -#define Z_IS_4053_EQ_4053(...) \, -#define Z_IS_4054_EQ_4054(...) \, -#define Z_IS_4055_EQ_4055(...) \, -#define Z_IS_4056_EQ_4056(...) \, -#define Z_IS_4057_EQ_4057(...) \, -#define Z_IS_4058_EQ_4058(...) \, -#define Z_IS_4059_EQ_4059(...) \, -#define Z_IS_4060_EQ_4060(...) \, -#define Z_IS_4061_EQ_4061(...) \, -#define Z_IS_4062_EQ_4062(...) \, -#define Z_IS_4063_EQ_4063(...) \, -#define Z_IS_4064_EQ_4064(...) \, -#define Z_IS_4065_EQ_4065(...) \, -#define Z_IS_4066_EQ_4066(...) \, -#define Z_IS_4067_EQ_4067(...) \, -#define Z_IS_4068_EQ_4068(...) \, -#define Z_IS_4069_EQ_4069(...) \, -#define Z_IS_4070_EQ_4070(...) \, -#define Z_IS_4071_EQ_4071(...) \, -#define Z_IS_4072_EQ_4072(...) \, -#define Z_IS_4073_EQ_4073(...) \, -#define Z_IS_4074_EQ_4074(...) \, -#define Z_IS_4075_EQ_4075(...) \, -#define Z_IS_4076_EQ_4076(...) \, -#define Z_IS_4077_EQ_4077(...) \, -#define Z_IS_4078_EQ_4078(...) \, -#define Z_IS_4079_EQ_4079(...) \, -#define Z_IS_4080_EQ_4080(...) \, -#define Z_IS_4081_EQ_4081(...) \, -#define Z_IS_4082_EQ_4082(...) \, -#define Z_IS_4083_EQ_4083(...) \, -#define Z_IS_4084_EQ_4084(...) \, -#define Z_IS_4085_EQ_4085(...) \, -#define Z_IS_4086_EQ_4086(...) \, -#define Z_IS_4087_EQ_4087(...) \, -#define Z_IS_4088_EQ_4088(...) \, -#define Z_IS_4089_EQ_4089(...) \, -#define Z_IS_4090_EQ_4090(...) \, -#define Z_IS_4091_EQ_4091(...) \, -#define Z_IS_4092_EQ_4092(...) \, -#define Z_IS_4093_EQ_4093(...) \, -#define Z_IS_4094_EQ_4094(...) \, -#define Z_IS_4095_EQ_4095(...) \, -#define Z_IS_4096_EQ_4096(...) \, +#define Z_IS_0_EQ_0(...) \, +#define Z_IS_0U_EQ_0(...) \, +#define Z_IS_0_EQ_0U(...) \, +#define Z_IS_0U_EQ_0U(...) \, +#define Z_IS_1_EQ_1(...) \, +#define Z_IS_1U_EQ_1(...) \, +#define Z_IS_1_EQ_1U(...) \, +#define Z_IS_1U_EQ_1U(...) \, +#define Z_IS_2_EQ_2(...) \, +#define Z_IS_2U_EQ_2(...) \, +#define Z_IS_2_EQ_2U(...) \, +#define Z_IS_2U_EQ_2U(...) \, +#define Z_IS_3_EQ_3(...) \, +#define Z_IS_3U_EQ_3(...) \, +#define Z_IS_3_EQ_3U(...) \, +#define Z_IS_3U_EQ_3U(...) \, +#define Z_IS_4_EQ_4(...) \, +#define Z_IS_4U_EQ_4(...) \, +#define Z_IS_4_EQ_4U(...) \, +#define Z_IS_4U_EQ_4U(...) \, +#define Z_IS_5_EQ_5(...) \, +#define Z_IS_5U_EQ_5(...) \, +#define Z_IS_5_EQ_5U(...) \, +#define Z_IS_5U_EQ_5U(...) \, +#define Z_IS_6_EQ_6(...) \, +#define Z_IS_6U_EQ_6(...) \, +#define Z_IS_6_EQ_6U(...) \, +#define Z_IS_6U_EQ_6U(...) \, +#define Z_IS_7_EQ_7(...) \, +#define Z_IS_7U_EQ_7(...) \, +#define Z_IS_7_EQ_7U(...) \, +#define Z_IS_7U_EQ_7U(...) \, +#define Z_IS_8_EQ_8(...) \, +#define Z_IS_8U_EQ_8(...) \, +#define Z_IS_8_EQ_8U(...) \, +#define Z_IS_8U_EQ_8U(...) \, +#define Z_IS_9_EQ_9(...) \, +#define Z_IS_9U_EQ_9(...) \, +#define Z_IS_9_EQ_9U(...) \, +#define Z_IS_9U_EQ_9U(...) \, +#define Z_IS_10_EQ_10(...) \, +#define Z_IS_10U_EQ_10(...) \, +#define Z_IS_10_EQ_10U(...) \, +#define Z_IS_10U_EQ_10U(...) \, +#define Z_IS_11_EQ_11(...) \, +#define Z_IS_11U_EQ_11(...) \, +#define Z_IS_11_EQ_11U(...) \, +#define Z_IS_11U_EQ_11U(...) \, +#define Z_IS_12_EQ_12(...) \, +#define Z_IS_12U_EQ_12(...) \, +#define Z_IS_12_EQ_12U(...) \, +#define Z_IS_12U_EQ_12U(...) \, +#define Z_IS_13_EQ_13(...) \, +#define Z_IS_13U_EQ_13(...) \, +#define Z_IS_13_EQ_13U(...) \, +#define Z_IS_13U_EQ_13U(...) \, +#define Z_IS_14_EQ_14(...) \, +#define Z_IS_14U_EQ_14(...) \, +#define Z_IS_14_EQ_14U(...) \, +#define Z_IS_14U_EQ_14U(...) \, +#define Z_IS_15_EQ_15(...) \, +#define Z_IS_15U_EQ_15(...) \, +#define Z_IS_15_EQ_15U(...) \, +#define Z_IS_15U_EQ_15U(...) \, +#define Z_IS_16_EQ_16(...) \, +#define Z_IS_16U_EQ_16(...) \, +#define Z_IS_16_EQ_16U(...) \, +#define Z_IS_16U_EQ_16U(...) \, +#define Z_IS_17_EQ_17(...) \, +#define Z_IS_17U_EQ_17(...) \, +#define Z_IS_17_EQ_17U(...) \, +#define Z_IS_17U_EQ_17U(...) \, +#define Z_IS_18_EQ_18(...) \, +#define Z_IS_18U_EQ_18(...) \, +#define Z_IS_18_EQ_18U(...) \, +#define Z_IS_18U_EQ_18U(...) \, +#define Z_IS_19_EQ_19(...) \, +#define Z_IS_19U_EQ_19(...) \, +#define Z_IS_19_EQ_19U(...) \, +#define Z_IS_19U_EQ_19U(...) \, +#define Z_IS_20_EQ_20(...) \, +#define Z_IS_20U_EQ_20(...) \, +#define Z_IS_20_EQ_20U(...) \, +#define Z_IS_20U_EQ_20U(...) \, +#define Z_IS_21_EQ_21(...) \, +#define Z_IS_21U_EQ_21(...) \, +#define Z_IS_21_EQ_21U(...) \, +#define Z_IS_21U_EQ_21U(...) \, +#define Z_IS_22_EQ_22(...) \, +#define Z_IS_22U_EQ_22(...) \, +#define Z_IS_22_EQ_22U(...) \, +#define Z_IS_22U_EQ_22U(...) \, +#define Z_IS_23_EQ_23(...) \, +#define Z_IS_23U_EQ_23(...) \, +#define Z_IS_23_EQ_23U(...) \, +#define Z_IS_23U_EQ_23U(...) \, +#define Z_IS_24_EQ_24(...) \, +#define Z_IS_24U_EQ_24(...) \, +#define Z_IS_24_EQ_24U(...) \, +#define Z_IS_24U_EQ_24U(...) \, +#define Z_IS_25_EQ_25(...) \, +#define Z_IS_25U_EQ_25(...) \, +#define Z_IS_25_EQ_25U(...) \, +#define Z_IS_25U_EQ_25U(...) \, +#define Z_IS_26_EQ_26(...) \, +#define Z_IS_26U_EQ_26(...) \, +#define Z_IS_26_EQ_26U(...) \, +#define Z_IS_26U_EQ_26U(...) \, +#define Z_IS_27_EQ_27(...) \, +#define Z_IS_27U_EQ_27(...) \, +#define Z_IS_27_EQ_27U(...) \, +#define Z_IS_27U_EQ_27U(...) \, +#define Z_IS_28_EQ_28(...) \, +#define Z_IS_28U_EQ_28(...) \, +#define Z_IS_28_EQ_28U(...) \, +#define Z_IS_28U_EQ_28U(...) \, +#define Z_IS_29_EQ_29(...) \, +#define Z_IS_29U_EQ_29(...) \, +#define Z_IS_29_EQ_29U(...) \, +#define Z_IS_29U_EQ_29U(...) \, +#define Z_IS_30_EQ_30(...) \, +#define Z_IS_30U_EQ_30(...) \, +#define Z_IS_30_EQ_30U(...) \, +#define Z_IS_30U_EQ_30U(...) \, +#define Z_IS_31_EQ_31(...) \, +#define Z_IS_31U_EQ_31(...) \, +#define Z_IS_31_EQ_31U(...) \, +#define Z_IS_31U_EQ_31U(...) \, +#define Z_IS_32_EQ_32(...) \, +#define Z_IS_32U_EQ_32(...) \, +#define Z_IS_32_EQ_32U(...) \, +#define Z_IS_32U_EQ_32U(...) \, +#define Z_IS_33_EQ_33(...) \, +#define Z_IS_33U_EQ_33(...) \, +#define Z_IS_33_EQ_33U(...) \, +#define Z_IS_33U_EQ_33U(...) \, +#define Z_IS_34_EQ_34(...) \, +#define Z_IS_34U_EQ_34(...) \, +#define Z_IS_34_EQ_34U(...) \, +#define Z_IS_34U_EQ_34U(...) \, +#define Z_IS_35_EQ_35(...) \, +#define Z_IS_35U_EQ_35(...) \, +#define Z_IS_35_EQ_35U(...) \, +#define Z_IS_35U_EQ_35U(...) \, +#define Z_IS_36_EQ_36(...) \, +#define Z_IS_36U_EQ_36(...) \, +#define Z_IS_36_EQ_36U(...) \, +#define Z_IS_36U_EQ_36U(...) \, +#define Z_IS_37_EQ_37(...) \, +#define Z_IS_37U_EQ_37(...) \, +#define Z_IS_37_EQ_37U(...) \, +#define Z_IS_37U_EQ_37U(...) \, +#define Z_IS_38_EQ_38(...) \, +#define Z_IS_38U_EQ_38(...) \, +#define Z_IS_38_EQ_38U(...) \, +#define Z_IS_38U_EQ_38U(...) \, +#define Z_IS_39_EQ_39(...) \, +#define Z_IS_39U_EQ_39(...) \, +#define Z_IS_39_EQ_39U(...) \, +#define Z_IS_39U_EQ_39U(...) \, +#define Z_IS_40_EQ_40(...) \, +#define Z_IS_40U_EQ_40(...) \, +#define Z_IS_40_EQ_40U(...) \, +#define Z_IS_40U_EQ_40U(...) \, +#define Z_IS_41_EQ_41(...) \, +#define Z_IS_41U_EQ_41(...) \, +#define Z_IS_41_EQ_41U(...) \, +#define Z_IS_41U_EQ_41U(...) \, +#define Z_IS_42_EQ_42(...) \, +#define Z_IS_42U_EQ_42(...) \, +#define Z_IS_42_EQ_42U(...) \, +#define Z_IS_42U_EQ_42U(...) \, +#define Z_IS_43_EQ_43(...) \, +#define Z_IS_43U_EQ_43(...) \, +#define Z_IS_43_EQ_43U(...) \, +#define Z_IS_43U_EQ_43U(...) \, +#define Z_IS_44_EQ_44(...) \, +#define Z_IS_44U_EQ_44(...) \, +#define Z_IS_44_EQ_44U(...) \, +#define Z_IS_44U_EQ_44U(...) \, +#define Z_IS_45_EQ_45(...) \, +#define Z_IS_45U_EQ_45(...) \, +#define Z_IS_45_EQ_45U(...) \, +#define Z_IS_45U_EQ_45U(...) \, +#define Z_IS_46_EQ_46(...) \, +#define Z_IS_46U_EQ_46(...) \, +#define Z_IS_46_EQ_46U(...) \, +#define Z_IS_46U_EQ_46U(...) \, +#define Z_IS_47_EQ_47(...) \, +#define Z_IS_47U_EQ_47(...) \, +#define Z_IS_47_EQ_47U(...) \, +#define Z_IS_47U_EQ_47U(...) \, +#define Z_IS_48_EQ_48(...) \, +#define Z_IS_48U_EQ_48(...) \, +#define Z_IS_48_EQ_48U(...) \, +#define Z_IS_48U_EQ_48U(...) \, +#define Z_IS_49_EQ_49(...) \, +#define Z_IS_49U_EQ_49(...) \, +#define Z_IS_49_EQ_49U(...) \, +#define Z_IS_49U_EQ_49U(...) \, +#define Z_IS_50_EQ_50(...) \, +#define Z_IS_50U_EQ_50(...) \, +#define Z_IS_50_EQ_50U(...) \, +#define Z_IS_50U_EQ_50U(...) \, +#define Z_IS_51_EQ_51(...) \, +#define Z_IS_51U_EQ_51(...) \, +#define Z_IS_51_EQ_51U(...) \, +#define Z_IS_51U_EQ_51U(...) \, +#define Z_IS_52_EQ_52(...) \, +#define Z_IS_52U_EQ_52(...) \, +#define Z_IS_52_EQ_52U(...) \, +#define Z_IS_52U_EQ_52U(...) \, +#define Z_IS_53_EQ_53(...) \, +#define Z_IS_53U_EQ_53(...) \, +#define Z_IS_53_EQ_53U(...) \, +#define Z_IS_53U_EQ_53U(...) \, +#define Z_IS_54_EQ_54(...) \, +#define Z_IS_54U_EQ_54(...) \, +#define Z_IS_54_EQ_54U(...) \, +#define Z_IS_54U_EQ_54U(...) \, +#define Z_IS_55_EQ_55(...) \, +#define Z_IS_55U_EQ_55(...) \, +#define Z_IS_55_EQ_55U(...) \, +#define Z_IS_55U_EQ_55U(...) \, +#define Z_IS_56_EQ_56(...) \, +#define Z_IS_56U_EQ_56(...) \, +#define Z_IS_56_EQ_56U(...) \, +#define Z_IS_56U_EQ_56U(...) \, +#define Z_IS_57_EQ_57(...) \, +#define Z_IS_57U_EQ_57(...) \, +#define Z_IS_57_EQ_57U(...) \, +#define Z_IS_57U_EQ_57U(...) \, +#define Z_IS_58_EQ_58(...) \, +#define Z_IS_58U_EQ_58(...) \, +#define Z_IS_58_EQ_58U(...) \, +#define Z_IS_58U_EQ_58U(...) \, +#define Z_IS_59_EQ_59(...) \, +#define Z_IS_59U_EQ_59(...) \, +#define Z_IS_59_EQ_59U(...) \, +#define Z_IS_59U_EQ_59U(...) \, +#define Z_IS_60_EQ_60(...) \, +#define Z_IS_60U_EQ_60(...) \, +#define Z_IS_60_EQ_60U(...) \, +#define Z_IS_60U_EQ_60U(...) \, +#define Z_IS_61_EQ_61(...) \, +#define Z_IS_61U_EQ_61(...) \, +#define Z_IS_61_EQ_61U(...) \, +#define Z_IS_61U_EQ_61U(...) \, +#define Z_IS_62_EQ_62(...) \, +#define Z_IS_62U_EQ_62(...) \, +#define Z_IS_62_EQ_62U(...) \, +#define Z_IS_62U_EQ_62U(...) \, +#define Z_IS_63_EQ_63(...) \, +#define Z_IS_63U_EQ_63(...) \, +#define Z_IS_63_EQ_63U(...) \, +#define Z_IS_63U_EQ_63U(...) \, +#define Z_IS_64_EQ_64(...) \, +#define Z_IS_64U_EQ_64(...) \, +#define Z_IS_64_EQ_64U(...) \, +#define Z_IS_64U_EQ_64U(...) \, +#define Z_IS_65_EQ_65(...) \, +#define Z_IS_65U_EQ_65(...) \, +#define Z_IS_65_EQ_65U(...) \, +#define Z_IS_65U_EQ_65U(...) \, +#define Z_IS_66_EQ_66(...) \, +#define Z_IS_66U_EQ_66(...) \, +#define Z_IS_66_EQ_66U(...) \, +#define Z_IS_66U_EQ_66U(...) \, +#define Z_IS_67_EQ_67(...) \, +#define Z_IS_67U_EQ_67(...) \, +#define Z_IS_67_EQ_67U(...) \, +#define Z_IS_67U_EQ_67U(...) \, +#define Z_IS_68_EQ_68(...) \, +#define Z_IS_68U_EQ_68(...) \, +#define Z_IS_68_EQ_68U(...) \, +#define Z_IS_68U_EQ_68U(...) \, +#define Z_IS_69_EQ_69(...) \, +#define Z_IS_69U_EQ_69(...) \, +#define Z_IS_69_EQ_69U(...) \, +#define Z_IS_69U_EQ_69U(...) \, +#define Z_IS_70_EQ_70(...) \, +#define Z_IS_70U_EQ_70(...) \, +#define Z_IS_70_EQ_70U(...) \, +#define Z_IS_70U_EQ_70U(...) \, +#define Z_IS_71_EQ_71(...) \, +#define Z_IS_71U_EQ_71(...) \, +#define Z_IS_71_EQ_71U(...) \, +#define Z_IS_71U_EQ_71U(...) \, +#define Z_IS_72_EQ_72(...) \, +#define Z_IS_72U_EQ_72(...) \, +#define Z_IS_72_EQ_72U(...) \, +#define Z_IS_72U_EQ_72U(...) \, +#define Z_IS_73_EQ_73(...) \, +#define Z_IS_73U_EQ_73(...) \, +#define Z_IS_73_EQ_73U(...) \, +#define Z_IS_73U_EQ_73U(...) \, +#define Z_IS_74_EQ_74(...) \, +#define Z_IS_74U_EQ_74(...) \, +#define Z_IS_74_EQ_74U(...) \, +#define Z_IS_74U_EQ_74U(...) \, +#define Z_IS_75_EQ_75(...) \, +#define Z_IS_75U_EQ_75(...) \, +#define Z_IS_75_EQ_75U(...) \, +#define Z_IS_75U_EQ_75U(...) \, +#define Z_IS_76_EQ_76(...) \, +#define Z_IS_76U_EQ_76(...) \, +#define Z_IS_76_EQ_76U(...) \, +#define Z_IS_76U_EQ_76U(...) \, +#define Z_IS_77_EQ_77(...) \, +#define Z_IS_77U_EQ_77(...) \, +#define Z_IS_77_EQ_77U(...) \, +#define Z_IS_77U_EQ_77U(...) \, +#define Z_IS_78_EQ_78(...) \, +#define Z_IS_78U_EQ_78(...) \, +#define Z_IS_78_EQ_78U(...) \, +#define Z_IS_78U_EQ_78U(...) \, +#define Z_IS_79_EQ_79(...) \, +#define Z_IS_79U_EQ_79(...) \, +#define Z_IS_79_EQ_79U(...) \, +#define Z_IS_79U_EQ_79U(...) \, +#define Z_IS_80_EQ_80(...) \, +#define Z_IS_80U_EQ_80(...) \, +#define Z_IS_80_EQ_80U(...) \, +#define Z_IS_80U_EQ_80U(...) \, +#define Z_IS_81_EQ_81(...) \, +#define Z_IS_81U_EQ_81(...) \, +#define Z_IS_81_EQ_81U(...) \, +#define Z_IS_81U_EQ_81U(...) \, +#define Z_IS_82_EQ_82(...) \, +#define Z_IS_82U_EQ_82(...) \, +#define Z_IS_82_EQ_82U(...) \, +#define Z_IS_82U_EQ_82U(...) \, +#define Z_IS_83_EQ_83(...) \, +#define Z_IS_83U_EQ_83(...) \, +#define Z_IS_83_EQ_83U(...) \, +#define Z_IS_83U_EQ_83U(...) \, +#define Z_IS_84_EQ_84(...) \, +#define Z_IS_84U_EQ_84(...) \, +#define Z_IS_84_EQ_84U(...) \, +#define Z_IS_84U_EQ_84U(...) \, +#define Z_IS_85_EQ_85(...) \, +#define Z_IS_85U_EQ_85(...) \, +#define Z_IS_85_EQ_85U(...) \, +#define Z_IS_85U_EQ_85U(...) \, +#define Z_IS_86_EQ_86(...) \, +#define Z_IS_86U_EQ_86(...) \, +#define Z_IS_86_EQ_86U(...) \, +#define Z_IS_86U_EQ_86U(...) \, +#define Z_IS_87_EQ_87(...) \, +#define Z_IS_87U_EQ_87(...) \, +#define Z_IS_87_EQ_87U(...) \, +#define Z_IS_87U_EQ_87U(...) \, +#define Z_IS_88_EQ_88(...) \, +#define Z_IS_88U_EQ_88(...) \, +#define Z_IS_88_EQ_88U(...) \, +#define Z_IS_88U_EQ_88U(...) \, +#define Z_IS_89_EQ_89(...) \, +#define Z_IS_89U_EQ_89(...) \, +#define Z_IS_89_EQ_89U(...) \, +#define Z_IS_89U_EQ_89U(...) \, +#define Z_IS_90_EQ_90(...) \, +#define Z_IS_90U_EQ_90(...) \, +#define Z_IS_90_EQ_90U(...) \, +#define Z_IS_90U_EQ_90U(...) \, +#define Z_IS_91_EQ_91(...) \, +#define Z_IS_91U_EQ_91(...) \, +#define Z_IS_91_EQ_91U(...) \, +#define Z_IS_91U_EQ_91U(...) \, +#define Z_IS_92_EQ_92(...) \, +#define Z_IS_92U_EQ_92(...) \, +#define Z_IS_92_EQ_92U(...) \, +#define Z_IS_92U_EQ_92U(...) \, +#define Z_IS_93_EQ_93(...) \, +#define Z_IS_93U_EQ_93(...) \, +#define Z_IS_93_EQ_93U(...) \, +#define Z_IS_93U_EQ_93U(...) \, +#define Z_IS_94_EQ_94(...) \, +#define Z_IS_94U_EQ_94(...) \, +#define Z_IS_94_EQ_94U(...) \, +#define Z_IS_94U_EQ_94U(...) \, +#define Z_IS_95_EQ_95(...) \, +#define Z_IS_95U_EQ_95(...) \, +#define Z_IS_95_EQ_95U(...) \, +#define Z_IS_95U_EQ_95U(...) \, +#define Z_IS_96_EQ_96(...) \, +#define Z_IS_96U_EQ_96(...) \, +#define Z_IS_96_EQ_96U(...) \, +#define Z_IS_96U_EQ_96U(...) \, +#define Z_IS_97_EQ_97(...) \, +#define Z_IS_97U_EQ_97(...) \, +#define Z_IS_97_EQ_97U(...) \, +#define Z_IS_97U_EQ_97U(...) \, +#define Z_IS_98_EQ_98(...) \, +#define Z_IS_98U_EQ_98(...) \, +#define Z_IS_98_EQ_98U(...) \, +#define Z_IS_98U_EQ_98U(...) \, +#define Z_IS_99_EQ_99(...) \, +#define Z_IS_99U_EQ_99(...) \, +#define Z_IS_99_EQ_99U(...) \, +#define Z_IS_99U_EQ_99U(...) \, +#define Z_IS_100_EQ_100(...) \, +#define Z_IS_100U_EQ_100(...) \, +#define Z_IS_100_EQ_100U(...) \, +#define Z_IS_100U_EQ_100U(...) \, +#define Z_IS_101_EQ_101(...) \, +#define Z_IS_101U_EQ_101(...) \, +#define Z_IS_101_EQ_101U(...) \, +#define Z_IS_101U_EQ_101U(...) \, +#define Z_IS_102_EQ_102(...) \, +#define Z_IS_102U_EQ_102(...) \, +#define Z_IS_102_EQ_102U(...) \, +#define Z_IS_102U_EQ_102U(...) \, +#define Z_IS_103_EQ_103(...) \, +#define Z_IS_103U_EQ_103(...) \, +#define Z_IS_103_EQ_103U(...) \, +#define Z_IS_103U_EQ_103U(...) \, +#define Z_IS_104_EQ_104(...) \, +#define Z_IS_104U_EQ_104(...) \, +#define Z_IS_104_EQ_104U(...) \, +#define Z_IS_104U_EQ_104U(...) \, +#define Z_IS_105_EQ_105(...) \, +#define Z_IS_105U_EQ_105(...) \, +#define Z_IS_105_EQ_105U(...) \, +#define Z_IS_105U_EQ_105U(...) \, +#define Z_IS_106_EQ_106(...) \, +#define Z_IS_106U_EQ_106(...) \, +#define Z_IS_106_EQ_106U(...) \, +#define Z_IS_106U_EQ_106U(...) \, +#define Z_IS_107_EQ_107(...) \, +#define Z_IS_107U_EQ_107(...) \, +#define Z_IS_107_EQ_107U(...) \, +#define Z_IS_107U_EQ_107U(...) \, +#define Z_IS_108_EQ_108(...) \, +#define Z_IS_108U_EQ_108(...) \, +#define Z_IS_108_EQ_108U(...) \, +#define Z_IS_108U_EQ_108U(...) \, +#define Z_IS_109_EQ_109(...) \, +#define Z_IS_109U_EQ_109(...) \, +#define Z_IS_109_EQ_109U(...) \, +#define Z_IS_109U_EQ_109U(...) \, +#define Z_IS_110_EQ_110(...) \, +#define Z_IS_110U_EQ_110(...) \, +#define Z_IS_110_EQ_110U(...) \, +#define Z_IS_110U_EQ_110U(...) \, +#define Z_IS_111_EQ_111(...) \, +#define Z_IS_111U_EQ_111(...) \, +#define Z_IS_111_EQ_111U(...) \, +#define Z_IS_111U_EQ_111U(...) \, +#define Z_IS_112_EQ_112(...) \, +#define Z_IS_112U_EQ_112(...) \, +#define Z_IS_112_EQ_112U(...) \, +#define Z_IS_112U_EQ_112U(...) \, +#define Z_IS_113_EQ_113(...) \, +#define Z_IS_113U_EQ_113(...) \, +#define Z_IS_113_EQ_113U(...) \, +#define Z_IS_113U_EQ_113U(...) \, +#define Z_IS_114_EQ_114(...) \, +#define Z_IS_114U_EQ_114(...) \, +#define Z_IS_114_EQ_114U(...) \, +#define Z_IS_114U_EQ_114U(...) \, +#define Z_IS_115_EQ_115(...) \, +#define Z_IS_115U_EQ_115(...) \, +#define Z_IS_115_EQ_115U(...) \, +#define Z_IS_115U_EQ_115U(...) \, +#define Z_IS_116_EQ_116(...) \, +#define Z_IS_116U_EQ_116(...) \, +#define Z_IS_116_EQ_116U(...) \, +#define Z_IS_116U_EQ_116U(...) \, +#define Z_IS_117_EQ_117(...) \, +#define Z_IS_117U_EQ_117(...) \, +#define Z_IS_117_EQ_117U(...) \, +#define Z_IS_117U_EQ_117U(...) \, +#define Z_IS_118_EQ_118(...) \, +#define Z_IS_118U_EQ_118(...) \, +#define Z_IS_118_EQ_118U(...) \, +#define Z_IS_118U_EQ_118U(...) \, +#define Z_IS_119_EQ_119(...) \, +#define Z_IS_119U_EQ_119(...) \, +#define Z_IS_119_EQ_119U(...) \, +#define Z_IS_119U_EQ_119U(...) \, +#define Z_IS_120_EQ_120(...) \, +#define Z_IS_120U_EQ_120(...) \, +#define Z_IS_120_EQ_120U(...) \, +#define Z_IS_120U_EQ_120U(...) \, +#define Z_IS_121_EQ_121(...) \, +#define Z_IS_121U_EQ_121(...) \, +#define Z_IS_121_EQ_121U(...) \, +#define Z_IS_121U_EQ_121U(...) \, +#define Z_IS_122_EQ_122(...) \, +#define Z_IS_122U_EQ_122(...) \, +#define Z_IS_122_EQ_122U(...) \, +#define Z_IS_122U_EQ_122U(...) \, +#define Z_IS_123_EQ_123(...) \, +#define Z_IS_123U_EQ_123(...) \, +#define Z_IS_123_EQ_123U(...) \, +#define Z_IS_123U_EQ_123U(...) \, +#define Z_IS_124_EQ_124(...) \, +#define Z_IS_124U_EQ_124(...) \, +#define Z_IS_124_EQ_124U(...) \, +#define Z_IS_124U_EQ_124U(...) \, +#define Z_IS_125_EQ_125(...) \, +#define Z_IS_125U_EQ_125(...) \, +#define Z_IS_125_EQ_125U(...) \, +#define Z_IS_125U_EQ_125U(...) \, +#define Z_IS_126_EQ_126(...) \, +#define Z_IS_126U_EQ_126(...) \, +#define Z_IS_126_EQ_126U(...) \, +#define Z_IS_126U_EQ_126U(...) \, +#define Z_IS_127_EQ_127(...) \, +#define Z_IS_127U_EQ_127(...) \, +#define Z_IS_127_EQ_127U(...) \, +#define Z_IS_127U_EQ_127U(...) \, +#define Z_IS_128_EQ_128(...) \, +#define Z_IS_128U_EQ_128(...) \, +#define Z_IS_128_EQ_128U(...) \, +#define Z_IS_128U_EQ_128U(...) \, +#define Z_IS_129_EQ_129(...) \, +#define Z_IS_129U_EQ_129(...) \, +#define Z_IS_129_EQ_129U(...) \, +#define Z_IS_129U_EQ_129U(...) \, +#define Z_IS_130_EQ_130(...) \, +#define Z_IS_130U_EQ_130(...) \, +#define Z_IS_130_EQ_130U(...) \, +#define Z_IS_130U_EQ_130U(...) \, +#define Z_IS_131_EQ_131(...) \, +#define Z_IS_131U_EQ_131(...) \, +#define Z_IS_131_EQ_131U(...) \, +#define Z_IS_131U_EQ_131U(...) \, +#define Z_IS_132_EQ_132(...) \, +#define Z_IS_132U_EQ_132(...) \, +#define Z_IS_132_EQ_132U(...) \, +#define Z_IS_132U_EQ_132U(...) \, +#define Z_IS_133_EQ_133(...) \, +#define Z_IS_133U_EQ_133(...) \, +#define Z_IS_133_EQ_133U(...) \, +#define Z_IS_133U_EQ_133U(...) \, +#define Z_IS_134_EQ_134(...) \, +#define Z_IS_134U_EQ_134(...) \, +#define Z_IS_134_EQ_134U(...) \, +#define Z_IS_134U_EQ_134U(...) \, +#define Z_IS_135_EQ_135(...) \, +#define Z_IS_135U_EQ_135(...) \, +#define Z_IS_135_EQ_135U(...) \, +#define Z_IS_135U_EQ_135U(...) \, +#define Z_IS_136_EQ_136(...) \, +#define Z_IS_136U_EQ_136(...) \, +#define Z_IS_136_EQ_136U(...) \, +#define Z_IS_136U_EQ_136U(...) \, +#define Z_IS_137_EQ_137(...) \, +#define Z_IS_137U_EQ_137(...) \, +#define Z_IS_137_EQ_137U(...) \, +#define Z_IS_137U_EQ_137U(...) \, +#define Z_IS_138_EQ_138(...) \, +#define Z_IS_138U_EQ_138(...) \, +#define Z_IS_138_EQ_138U(...) \, +#define Z_IS_138U_EQ_138U(...) \, +#define Z_IS_139_EQ_139(...) \, +#define Z_IS_139U_EQ_139(...) \, +#define Z_IS_139_EQ_139U(...) \, +#define Z_IS_139U_EQ_139U(...) \, +#define Z_IS_140_EQ_140(...) \, +#define Z_IS_140U_EQ_140(...) \, +#define Z_IS_140_EQ_140U(...) \, +#define Z_IS_140U_EQ_140U(...) \, +#define Z_IS_141_EQ_141(...) \, +#define Z_IS_141U_EQ_141(...) \, +#define Z_IS_141_EQ_141U(...) \, +#define Z_IS_141U_EQ_141U(...) \, +#define Z_IS_142_EQ_142(...) \, +#define Z_IS_142U_EQ_142(...) \, +#define Z_IS_142_EQ_142U(...) \, +#define Z_IS_142U_EQ_142U(...) \, +#define Z_IS_143_EQ_143(...) \, +#define Z_IS_143U_EQ_143(...) \, +#define Z_IS_143_EQ_143U(...) \, +#define Z_IS_143U_EQ_143U(...) \, +#define Z_IS_144_EQ_144(...) \, +#define Z_IS_144U_EQ_144(...) \, +#define Z_IS_144_EQ_144U(...) \, +#define Z_IS_144U_EQ_144U(...) \, +#define Z_IS_145_EQ_145(...) \, +#define Z_IS_145U_EQ_145(...) \, +#define Z_IS_145_EQ_145U(...) \, +#define Z_IS_145U_EQ_145U(...) \, +#define Z_IS_146_EQ_146(...) \, +#define Z_IS_146U_EQ_146(...) \, +#define Z_IS_146_EQ_146U(...) \, +#define Z_IS_146U_EQ_146U(...) \, +#define Z_IS_147_EQ_147(...) \, +#define Z_IS_147U_EQ_147(...) \, +#define Z_IS_147_EQ_147U(...) \, +#define Z_IS_147U_EQ_147U(...) \, +#define Z_IS_148_EQ_148(...) \, +#define Z_IS_148U_EQ_148(...) \, +#define Z_IS_148_EQ_148U(...) \, +#define Z_IS_148U_EQ_148U(...) \, +#define Z_IS_149_EQ_149(...) \, +#define Z_IS_149U_EQ_149(...) \, +#define Z_IS_149_EQ_149U(...) \, +#define Z_IS_149U_EQ_149U(...) \, +#define Z_IS_150_EQ_150(...) \, +#define Z_IS_150U_EQ_150(...) \, +#define Z_IS_150_EQ_150U(...) \, +#define Z_IS_150U_EQ_150U(...) \, +#define Z_IS_151_EQ_151(...) \, +#define Z_IS_151U_EQ_151(...) \, +#define Z_IS_151_EQ_151U(...) \, +#define Z_IS_151U_EQ_151U(...) \, +#define Z_IS_152_EQ_152(...) \, +#define Z_IS_152U_EQ_152(...) \, +#define Z_IS_152_EQ_152U(...) \, +#define Z_IS_152U_EQ_152U(...) \, +#define Z_IS_153_EQ_153(...) \, +#define Z_IS_153U_EQ_153(...) \, +#define Z_IS_153_EQ_153U(...) \, +#define Z_IS_153U_EQ_153U(...) \, +#define Z_IS_154_EQ_154(...) \, +#define Z_IS_154U_EQ_154(...) \, +#define Z_IS_154_EQ_154U(...) \, +#define Z_IS_154U_EQ_154U(...) \, +#define Z_IS_155_EQ_155(...) \, +#define Z_IS_155U_EQ_155(...) \, +#define Z_IS_155_EQ_155U(...) \, +#define Z_IS_155U_EQ_155U(...) \, +#define Z_IS_156_EQ_156(...) \, +#define Z_IS_156U_EQ_156(...) \, +#define Z_IS_156_EQ_156U(...) \, +#define Z_IS_156U_EQ_156U(...) \, +#define Z_IS_157_EQ_157(...) \, +#define Z_IS_157U_EQ_157(...) \, +#define Z_IS_157_EQ_157U(...) \, +#define Z_IS_157U_EQ_157U(...) \, +#define Z_IS_158_EQ_158(...) \, +#define Z_IS_158U_EQ_158(...) \, +#define Z_IS_158_EQ_158U(...) \, +#define Z_IS_158U_EQ_158U(...) \, +#define Z_IS_159_EQ_159(...) \, +#define Z_IS_159U_EQ_159(...) \, +#define Z_IS_159_EQ_159U(...) \, +#define Z_IS_159U_EQ_159U(...) \, +#define Z_IS_160_EQ_160(...) \, +#define Z_IS_160U_EQ_160(...) \, +#define Z_IS_160_EQ_160U(...) \, +#define Z_IS_160U_EQ_160U(...) \, +#define Z_IS_161_EQ_161(...) \, +#define Z_IS_161U_EQ_161(...) \, +#define Z_IS_161_EQ_161U(...) \, +#define Z_IS_161U_EQ_161U(...) \, +#define Z_IS_162_EQ_162(...) \, +#define Z_IS_162U_EQ_162(...) \, +#define Z_IS_162_EQ_162U(...) \, +#define Z_IS_162U_EQ_162U(...) \, +#define Z_IS_163_EQ_163(...) \, +#define Z_IS_163U_EQ_163(...) \, +#define Z_IS_163_EQ_163U(...) \, +#define Z_IS_163U_EQ_163U(...) \, +#define Z_IS_164_EQ_164(...) \, +#define Z_IS_164U_EQ_164(...) \, +#define Z_IS_164_EQ_164U(...) \, +#define Z_IS_164U_EQ_164U(...) \, +#define Z_IS_165_EQ_165(...) \, +#define Z_IS_165U_EQ_165(...) \, +#define Z_IS_165_EQ_165U(...) \, +#define Z_IS_165U_EQ_165U(...) \, +#define Z_IS_166_EQ_166(...) \, +#define Z_IS_166U_EQ_166(...) \, +#define Z_IS_166_EQ_166U(...) \, +#define Z_IS_166U_EQ_166U(...) \, +#define Z_IS_167_EQ_167(...) \, +#define Z_IS_167U_EQ_167(...) \, +#define Z_IS_167_EQ_167U(...) \, +#define Z_IS_167U_EQ_167U(...) \, +#define Z_IS_168_EQ_168(...) \, +#define Z_IS_168U_EQ_168(...) \, +#define Z_IS_168_EQ_168U(...) \, +#define Z_IS_168U_EQ_168U(...) \, +#define Z_IS_169_EQ_169(...) \, +#define Z_IS_169U_EQ_169(...) \, +#define Z_IS_169_EQ_169U(...) \, +#define Z_IS_169U_EQ_169U(...) \, +#define Z_IS_170_EQ_170(...) \, +#define Z_IS_170U_EQ_170(...) \, +#define Z_IS_170_EQ_170U(...) \, +#define Z_IS_170U_EQ_170U(...) \, +#define Z_IS_171_EQ_171(...) \, +#define Z_IS_171U_EQ_171(...) \, +#define Z_IS_171_EQ_171U(...) \, +#define Z_IS_171U_EQ_171U(...) \, +#define Z_IS_172_EQ_172(...) \, +#define Z_IS_172U_EQ_172(...) \, +#define Z_IS_172_EQ_172U(...) \, +#define Z_IS_172U_EQ_172U(...) \, +#define Z_IS_173_EQ_173(...) \, +#define Z_IS_173U_EQ_173(...) \, +#define Z_IS_173_EQ_173U(...) \, +#define Z_IS_173U_EQ_173U(...) \, +#define Z_IS_174_EQ_174(...) \, +#define Z_IS_174U_EQ_174(...) \, +#define Z_IS_174_EQ_174U(...) \, +#define Z_IS_174U_EQ_174U(...) \, +#define Z_IS_175_EQ_175(...) \, +#define Z_IS_175U_EQ_175(...) \, +#define Z_IS_175_EQ_175U(...) \, +#define Z_IS_175U_EQ_175U(...) \, +#define Z_IS_176_EQ_176(...) \, +#define Z_IS_176U_EQ_176(...) \, +#define Z_IS_176_EQ_176U(...) \, +#define Z_IS_176U_EQ_176U(...) \, +#define Z_IS_177_EQ_177(...) \, +#define Z_IS_177U_EQ_177(...) \, +#define Z_IS_177_EQ_177U(...) \, +#define Z_IS_177U_EQ_177U(...) \, +#define Z_IS_178_EQ_178(...) \, +#define Z_IS_178U_EQ_178(...) \, +#define Z_IS_178_EQ_178U(...) \, +#define Z_IS_178U_EQ_178U(...) \, +#define Z_IS_179_EQ_179(...) \, +#define Z_IS_179U_EQ_179(...) \, +#define Z_IS_179_EQ_179U(...) \, +#define Z_IS_179U_EQ_179U(...) \, +#define Z_IS_180_EQ_180(...) \, +#define Z_IS_180U_EQ_180(...) \, +#define Z_IS_180_EQ_180U(...) \, +#define Z_IS_180U_EQ_180U(...) \, +#define Z_IS_181_EQ_181(...) \, +#define Z_IS_181U_EQ_181(...) \, +#define Z_IS_181_EQ_181U(...) \, +#define Z_IS_181U_EQ_181U(...) \, +#define Z_IS_182_EQ_182(...) \, +#define Z_IS_182U_EQ_182(...) \, +#define Z_IS_182_EQ_182U(...) \, +#define Z_IS_182U_EQ_182U(...) \, +#define Z_IS_183_EQ_183(...) \, +#define Z_IS_183U_EQ_183(...) \, +#define Z_IS_183_EQ_183U(...) \, +#define Z_IS_183U_EQ_183U(...) \, +#define Z_IS_184_EQ_184(...) \, +#define Z_IS_184U_EQ_184(...) \, +#define Z_IS_184_EQ_184U(...) \, +#define Z_IS_184U_EQ_184U(...) \, +#define Z_IS_185_EQ_185(...) \, +#define Z_IS_185U_EQ_185(...) \, +#define Z_IS_185_EQ_185U(...) \, +#define Z_IS_185U_EQ_185U(...) \, +#define Z_IS_186_EQ_186(...) \, +#define Z_IS_186U_EQ_186(...) \, +#define Z_IS_186_EQ_186U(...) \, +#define Z_IS_186U_EQ_186U(...) \, +#define Z_IS_187_EQ_187(...) \, +#define Z_IS_187U_EQ_187(...) \, +#define Z_IS_187_EQ_187U(...) \, +#define Z_IS_187U_EQ_187U(...) \, +#define Z_IS_188_EQ_188(...) \, +#define Z_IS_188U_EQ_188(...) \, +#define Z_IS_188_EQ_188U(...) \, +#define Z_IS_188U_EQ_188U(...) \, +#define Z_IS_189_EQ_189(...) \, +#define Z_IS_189U_EQ_189(...) \, +#define Z_IS_189_EQ_189U(...) \, +#define Z_IS_189U_EQ_189U(...) \, +#define Z_IS_190_EQ_190(...) \, +#define Z_IS_190U_EQ_190(...) \, +#define Z_IS_190_EQ_190U(...) \, +#define Z_IS_190U_EQ_190U(...) \, +#define Z_IS_191_EQ_191(...) \, +#define Z_IS_191U_EQ_191(...) \, +#define Z_IS_191_EQ_191U(...) \, +#define Z_IS_191U_EQ_191U(...) \, +#define Z_IS_192_EQ_192(...) \, +#define Z_IS_192U_EQ_192(...) \, +#define Z_IS_192_EQ_192U(...) \, +#define Z_IS_192U_EQ_192U(...) \, +#define Z_IS_193_EQ_193(...) \, +#define Z_IS_193U_EQ_193(...) \, +#define Z_IS_193_EQ_193U(...) \, +#define Z_IS_193U_EQ_193U(...) \, +#define Z_IS_194_EQ_194(...) \, +#define Z_IS_194U_EQ_194(...) \, +#define Z_IS_194_EQ_194U(...) \, +#define Z_IS_194U_EQ_194U(...) \, +#define Z_IS_195_EQ_195(...) \, +#define Z_IS_195U_EQ_195(...) \, +#define Z_IS_195_EQ_195U(...) \, +#define Z_IS_195U_EQ_195U(...) \, +#define Z_IS_196_EQ_196(...) \, +#define Z_IS_196U_EQ_196(...) \, +#define Z_IS_196_EQ_196U(...) \, +#define Z_IS_196U_EQ_196U(...) \, +#define Z_IS_197_EQ_197(...) \, +#define Z_IS_197U_EQ_197(...) \, +#define Z_IS_197_EQ_197U(...) \, +#define Z_IS_197U_EQ_197U(...) \, +#define Z_IS_198_EQ_198(...) \, +#define Z_IS_198U_EQ_198(...) \, +#define Z_IS_198_EQ_198U(...) \, +#define Z_IS_198U_EQ_198U(...) \, +#define Z_IS_199_EQ_199(...) \, +#define Z_IS_199U_EQ_199(...) \, +#define Z_IS_199_EQ_199U(...) \, +#define Z_IS_199U_EQ_199U(...) \, +#define Z_IS_200_EQ_200(...) \, +#define Z_IS_200U_EQ_200(...) \, +#define Z_IS_200_EQ_200U(...) \, +#define Z_IS_200U_EQ_200U(...) \, +#define Z_IS_201_EQ_201(...) \, +#define Z_IS_201U_EQ_201(...) \, +#define Z_IS_201_EQ_201U(...) \, +#define Z_IS_201U_EQ_201U(...) \, +#define Z_IS_202_EQ_202(...) \, +#define Z_IS_202U_EQ_202(...) \, +#define Z_IS_202_EQ_202U(...) \, +#define Z_IS_202U_EQ_202U(...) \, +#define Z_IS_203_EQ_203(...) \, +#define Z_IS_203U_EQ_203(...) \, +#define Z_IS_203_EQ_203U(...) \, +#define Z_IS_203U_EQ_203U(...) \, +#define Z_IS_204_EQ_204(...) \, +#define Z_IS_204U_EQ_204(...) \, +#define Z_IS_204_EQ_204U(...) \, +#define Z_IS_204U_EQ_204U(...) \, +#define Z_IS_205_EQ_205(...) \, +#define Z_IS_205U_EQ_205(...) \, +#define Z_IS_205_EQ_205U(...) \, +#define Z_IS_205U_EQ_205U(...) \, +#define Z_IS_206_EQ_206(...) \, +#define Z_IS_206U_EQ_206(...) \, +#define Z_IS_206_EQ_206U(...) \, +#define Z_IS_206U_EQ_206U(...) \, +#define Z_IS_207_EQ_207(...) \, +#define Z_IS_207U_EQ_207(...) \, +#define Z_IS_207_EQ_207U(...) \, +#define Z_IS_207U_EQ_207U(...) \, +#define Z_IS_208_EQ_208(...) \, +#define Z_IS_208U_EQ_208(...) \, +#define Z_IS_208_EQ_208U(...) \, +#define Z_IS_208U_EQ_208U(...) \, +#define Z_IS_209_EQ_209(...) \, +#define Z_IS_209U_EQ_209(...) \, +#define Z_IS_209_EQ_209U(...) \, +#define Z_IS_209U_EQ_209U(...) \, +#define Z_IS_210_EQ_210(...) \, +#define Z_IS_210U_EQ_210(...) \, +#define Z_IS_210_EQ_210U(...) \, +#define Z_IS_210U_EQ_210U(...) \, +#define Z_IS_211_EQ_211(...) \, +#define Z_IS_211U_EQ_211(...) \, +#define Z_IS_211_EQ_211U(...) \, +#define Z_IS_211U_EQ_211U(...) \, +#define Z_IS_212_EQ_212(...) \, +#define Z_IS_212U_EQ_212(...) \, +#define Z_IS_212_EQ_212U(...) \, +#define Z_IS_212U_EQ_212U(...) \, +#define Z_IS_213_EQ_213(...) \, +#define Z_IS_213U_EQ_213(...) \, +#define Z_IS_213_EQ_213U(...) \, +#define Z_IS_213U_EQ_213U(...) \, +#define Z_IS_214_EQ_214(...) \, +#define Z_IS_214U_EQ_214(...) \, +#define Z_IS_214_EQ_214U(...) \, +#define Z_IS_214U_EQ_214U(...) \, +#define Z_IS_215_EQ_215(...) \, +#define Z_IS_215U_EQ_215(...) \, +#define Z_IS_215_EQ_215U(...) \, +#define Z_IS_215U_EQ_215U(...) \, +#define Z_IS_216_EQ_216(...) \, +#define Z_IS_216U_EQ_216(...) \, +#define Z_IS_216_EQ_216U(...) \, +#define Z_IS_216U_EQ_216U(...) \, +#define Z_IS_217_EQ_217(...) \, +#define Z_IS_217U_EQ_217(...) \, +#define Z_IS_217_EQ_217U(...) \, +#define Z_IS_217U_EQ_217U(...) \, +#define Z_IS_218_EQ_218(...) \, +#define Z_IS_218U_EQ_218(...) \, +#define Z_IS_218_EQ_218U(...) \, +#define Z_IS_218U_EQ_218U(...) \, +#define Z_IS_219_EQ_219(...) \, +#define Z_IS_219U_EQ_219(...) \, +#define Z_IS_219_EQ_219U(...) \, +#define Z_IS_219U_EQ_219U(...) \, +#define Z_IS_220_EQ_220(...) \, +#define Z_IS_220U_EQ_220(...) \, +#define Z_IS_220_EQ_220U(...) \, +#define Z_IS_220U_EQ_220U(...) \, +#define Z_IS_221_EQ_221(...) \, +#define Z_IS_221U_EQ_221(...) \, +#define Z_IS_221_EQ_221U(...) \, +#define Z_IS_221U_EQ_221U(...) \, +#define Z_IS_222_EQ_222(...) \, +#define Z_IS_222U_EQ_222(...) \, +#define Z_IS_222_EQ_222U(...) \, +#define Z_IS_222U_EQ_222U(...) \, +#define Z_IS_223_EQ_223(...) \, +#define Z_IS_223U_EQ_223(...) \, +#define Z_IS_223_EQ_223U(...) \, +#define Z_IS_223U_EQ_223U(...) \, +#define Z_IS_224_EQ_224(...) \, +#define Z_IS_224U_EQ_224(...) \, +#define Z_IS_224_EQ_224U(...) \, +#define Z_IS_224U_EQ_224U(...) \, +#define Z_IS_225_EQ_225(...) \, +#define Z_IS_225U_EQ_225(...) \, +#define Z_IS_225_EQ_225U(...) \, +#define Z_IS_225U_EQ_225U(...) \, +#define Z_IS_226_EQ_226(...) \, +#define Z_IS_226U_EQ_226(...) \, +#define Z_IS_226_EQ_226U(...) \, +#define Z_IS_226U_EQ_226U(...) \, +#define Z_IS_227_EQ_227(...) \, +#define Z_IS_227U_EQ_227(...) \, +#define Z_IS_227_EQ_227U(...) \, +#define Z_IS_227U_EQ_227U(...) \, +#define Z_IS_228_EQ_228(...) \, +#define Z_IS_228U_EQ_228(...) \, +#define Z_IS_228_EQ_228U(...) \, +#define Z_IS_228U_EQ_228U(...) \, +#define Z_IS_229_EQ_229(...) \, +#define Z_IS_229U_EQ_229(...) \, +#define Z_IS_229_EQ_229U(...) \, +#define Z_IS_229U_EQ_229U(...) \, +#define Z_IS_230_EQ_230(...) \, +#define Z_IS_230U_EQ_230(...) \, +#define Z_IS_230_EQ_230U(...) \, +#define Z_IS_230U_EQ_230U(...) \, +#define Z_IS_231_EQ_231(...) \, +#define Z_IS_231U_EQ_231(...) \, +#define Z_IS_231_EQ_231U(...) \, +#define Z_IS_231U_EQ_231U(...) \, +#define Z_IS_232_EQ_232(...) \, +#define Z_IS_232U_EQ_232(...) \, +#define Z_IS_232_EQ_232U(...) \, +#define Z_IS_232U_EQ_232U(...) \, +#define Z_IS_233_EQ_233(...) \, +#define Z_IS_233U_EQ_233(...) \, +#define Z_IS_233_EQ_233U(...) \, +#define Z_IS_233U_EQ_233U(...) \, +#define Z_IS_234_EQ_234(...) \, +#define Z_IS_234U_EQ_234(...) \, +#define Z_IS_234_EQ_234U(...) \, +#define Z_IS_234U_EQ_234U(...) \, +#define Z_IS_235_EQ_235(...) \, +#define Z_IS_235U_EQ_235(...) \, +#define Z_IS_235_EQ_235U(...) \, +#define Z_IS_235U_EQ_235U(...) \, +#define Z_IS_236_EQ_236(...) \, +#define Z_IS_236U_EQ_236(...) \, +#define Z_IS_236_EQ_236U(...) \, +#define Z_IS_236U_EQ_236U(...) \, +#define Z_IS_237_EQ_237(...) \, +#define Z_IS_237U_EQ_237(...) \, +#define Z_IS_237_EQ_237U(...) \, +#define Z_IS_237U_EQ_237U(...) \, +#define Z_IS_238_EQ_238(...) \, +#define Z_IS_238U_EQ_238(...) \, +#define Z_IS_238_EQ_238U(...) \, +#define Z_IS_238U_EQ_238U(...) \, +#define Z_IS_239_EQ_239(...) \, +#define Z_IS_239U_EQ_239(...) \, +#define Z_IS_239_EQ_239U(...) \, +#define Z_IS_239U_EQ_239U(...) \, +#define Z_IS_240_EQ_240(...) \, +#define Z_IS_240U_EQ_240(...) \, +#define Z_IS_240_EQ_240U(...) \, +#define Z_IS_240U_EQ_240U(...) \, +#define Z_IS_241_EQ_241(...) \, +#define Z_IS_241U_EQ_241(...) \, +#define Z_IS_241_EQ_241U(...) \, +#define Z_IS_241U_EQ_241U(...) \, +#define Z_IS_242_EQ_242(...) \, +#define Z_IS_242U_EQ_242(...) \, +#define Z_IS_242_EQ_242U(...) \, +#define Z_IS_242U_EQ_242U(...) \, +#define Z_IS_243_EQ_243(...) \, +#define Z_IS_243U_EQ_243(...) \, +#define Z_IS_243_EQ_243U(...) \, +#define Z_IS_243U_EQ_243U(...) \, +#define Z_IS_244_EQ_244(...) \, +#define Z_IS_244U_EQ_244(...) \, +#define Z_IS_244_EQ_244U(...) \, +#define Z_IS_244U_EQ_244U(...) \, +#define Z_IS_245_EQ_245(...) \, +#define Z_IS_245U_EQ_245(...) \, +#define Z_IS_245_EQ_245U(...) \, +#define Z_IS_245U_EQ_245U(...) \, +#define Z_IS_246_EQ_246(...) \, +#define Z_IS_246U_EQ_246(...) \, +#define Z_IS_246_EQ_246U(...) \, +#define Z_IS_246U_EQ_246U(...) \, +#define Z_IS_247_EQ_247(...) \, +#define Z_IS_247U_EQ_247(...) \, +#define Z_IS_247_EQ_247U(...) \, +#define Z_IS_247U_EQ_247U(...) \, +#define Z_IS_248_EQ_248(...) \, +#define Z_IS_248U_EQ_248(...) \, +#define Z_IS_248_EQ_248U(...) \, +#define Z_IS_248U_EQ_248U(...) \, +#define Z_IS_249_EQ_249(...) \, +#define Z_IS_249U_EQ_249(...) \, +#define Z_IS_249_EQ_249U(...) \, +#define Z_IS_249U_EQ_249U(...) \, +#define Z_IS_250_EQ_250(...) \, +#define Z_IS_250U_EQ_250(...) \, +#define Z_IS_250_EQ_250U(...) \, +#define Z_IS_250U_EQ_250U(...) \, +#define Z_IS_251_EQ_251(...) \, +#define Z_IS_251U_EQ_251(...) \, +#define Z_IS_251_EQ_251U(...) \, +#define Z_IS_251U_EQ_251U(...) \, +#define Z_IS_252_EQ_252(...) \, +#define Z_IS_252U_EQ_252(...) \, +#define Z_IS_252_EQ_252U(...) \, +#define Z_IS_252U_EQ_252U(...) \, +#define Z_IS_253_EQ_253(...) \, +#define Z_IS_253U_EQ_253(...) \, +#define Z_IS_253_EQ_253U(...) \, +#define Z_IS_253U_EQ_253U(...) \, +#define Z_IS_254_EQ_254(...) \, +#define Z_IS_254U_EQ_254(...) \, +#define Z_IS_254_EQ_254U(...) \, +#define Z_IS_254U_EQ_254U(...) \, +#define Z_IS_255_EQ_255(...) \, +#define Z_IS_255U_EQ_255(...) \, +#define Z_IS_255_EQ_255U(...) \, +#define Z_IS_255U_EQ_255U(...) \, +#define Z_IS_256_EQ_256(...) \, +#define Z_IS_256U_EQ_256(...) \, +#define Z_IS_256_EQ_256U(...) \, +#define Z_IS_256U_EQ_256U(...) \, +#define Z_IS_257_EQ_257(...) \, +#define Z_IS_257U_EQ_257(...) \, +#define Z_IS_257_EQ_257U(...) \, +#define Z_IS_257U_EQ_257U(...) \, +#define Z_IS_258_EQ_258(...) \, +#define Z_IS_258U_EQ_258(...) \, +#define Z_IS_258_EQ_258U(...) \, +#define Z_IS_258U_EQ_258U(...) \, +#define Z_IS_259_EQ_259(...) \, +#define Z_IS_259U_EQ_259(...) \, +#define Z_IS_259_EQ_259U(...) \, +#define Z_IS_259U_EQ_259U(...) \, +#define Z_IS_260_EQ_260(...) \, +#define Z_IS_260U_EQ_260(...) \, +#define Z_IS_260_EQ_260U(...) \, +#define Z_IS_260U_EQ_260U(...) \, +#define Z_IS_261_EQ_261(...) \, +#define Z_IS_261U_EQ_261(...) \, +#define Z_IS_261_EQ_261U(...) \, +#define Z_IS_261U_EQ_261U(...) \, +#define Z_IS_262_EQ_262(...) \, +#define Z_IS_262U_EQ_262(...) \, +#define Z_IS_262_EQ_262U(...) \, +#define Z_IS_262U_EQ_262U(...) \, +#define Z_IS_263_EQ_263(...) \, +#define Z_IS_263U_EQ_263(...) \, +#define Z_IS_263_EQ_263U(...) \, +#define Z_IS_263U_EQ_263U(...) \, +#define Z_IS_264_EQ_264(...) \, +#define Z_IS_264U_EQ_264(...) \, +#define Z_IS_264_EQ_264U(...) \, +#define Z_IS_264U_EQ_264U(...) \, +#define Z_IS_265_EQ_265(...) \, +#define Z_IS_265U_EQ_265(...) \, +#define Z_IS_265_EQ_265U(...) \, +#define Z_IS_265U_EQ_265U(...) \, +#define Z_IS_266_EQ_266(...) \, +#define Z_IS_266U_EQ_266(...) \, +#define Z_IS_266_EQ_266U(...) \, +#define Z_IS_266U_EQ_266U(...) \, +#define Z_IS_267_EQ_267(...) \, +#define Z_IS_267U_EQ_267(...) \, +#define Z_IS_267_EQ_267U(...) \, +#define Z_IS_267U_EQ_267U(...) \, +#define Z_IS_268_EQ_268(...) \, +#define Z_IS_268U_EQ_268(...) \, +#define Z_IS_268_EQ_268U(...) \, +#define Z_IS_268U_EQ_268U(...) \, +#define Z_IS_269_EQ_269(...) \, +#define Z_IS_269U_EQ_269(...) \, +#define Z_IS_269_EQ_269U(...) \, +#define Z_IS_269U_EQ_269U(...) \, +#define Z_IS_270_EQ_270(...) \, +#define Z_IS_270U_EQ_270(...) \, +#define Z_IS_270_EQ_270U(...) \, +#define Z_IS_270U_EQ_270U(...) \, +#define Z_IS_271_EQ_271(...) \, +#define Z_IS_271U_EQ_271(...) \, +#define Z_IS_271_EQ_271U(...) \, +#define Z_IS_271U_EQ_271U(...) \, +#define Z_IS_272_EQ_272(...) \, +#define Z_IS_272U_EQ_272(...) \, +#define Z_IS_272_EQ_272U(...) \, +#define Z_IS_272U_EQ_272U(...) \, +#define Z_IS_273_EQ_273(...) \, +#define Z_IS_273U_EQ_273(...) \, +#define Z_IS_273_EQ_273U(...) \, +#define Z_IS_273U_EQ_273U(...) \, +#define Z_IS_274_EQ_274(...) \, +#define Z_IS_274U_EQ_274(...) \, +#define Z_IS_274_EQ_274U(...) \, +#define Z_IS_274U_EQ_274U(...) \, +#define Z_IS_275_EQ_275(...) \, +#define Z_IS_275U_EQ_275(...) \, +#define Z_IS_275_EQ_275U(...) \, +#define Z_IS_275U_EQ_275U(...) \, +#define Z_IS_276_EQ_276(...) \, +#define Z_IS_276U_EQ_276(...) \, +#define Z_IS_276_EQ_276U(...) \, +#define Z_IS_276U_EQ_276U(...) \, +#define Z_IS_277_EQ_277(...) \, +#define Z_IS_277U_EQ_277(...) \, +#define Z_IS_277_EQ_277U(...) \, +#define Z_IS_277U_EQ_277U(...) \, +#define Z_IS_278_EQ_278(...) \, +#define Z_IS_278U_EQ_278(...) \, +#define Z_IS_278_EQ_278U(...) \, +#define Z_IS_278U_EQ_278U(...) \, +#define Z_IS_279_EQ_279(...) \, +#define Z_IS_279U_EQ_279(...) \, +#define Z_IS_279_EQ_279U(...) \, +#define Z_IS_279U_EQ_279U(...) \, +#define Z_IS_280_EQ_280(...) \, +#define Z_IS_280U_EQ_280(...) \, +#define Z_IS_280_EQ_280U(...) \, +#define Z_IS_280U_EQ_280U(...) \, +#define Z_IS_281_EQ_281(...) \, +#define Z_IS_281U_EQ_281(...) \, +#define Z_IS_281_EQ_281U(...) \, +#define Z_IS_281U_EQ_281U(...) \, +#define Z_IS_282_EQ_282(...) \, +#define Z_IS_282U_EQ_282(...) \, +#define Z_IS_282_EQ_282U(...) \, +#define Z_IS_282U_EQ_282U(...) \, +#define Z_IS_283_EQ_283(...) \, +#define Z_IS_283U_EQ_283(...) \, +#define Z_IS_283_EQ_283U(...) \, +#define Z_IS_283U_EQ_283U(...) \, +#define Z_IS_284_EQ_284(...) \, +#define Z_IS_284U_EQ_284(...) \, +#define Z_IS_284_EQ_284U(...) \, +#define Z_IS_284U_EQ_284U(...) \, +#define Z_IS_285_EQ_285(...) \, +#define Z_IS_285U_EQ_285(...) \, +#define Z_IS_285_EQ_285U(...) \, +#define Z_IS_285U_EQ_285U(...) \, +#define Z_IS_286_EQ_286(...) \, +#define Z_IS_286U_EQ_286(...) \, +#define Z_IS_286_EQ_286U(...) \, +#define Z_IS_286U_EQ_286U(...) \, +#define Z_IS_287_EQ_287(...) \, +#define Z_IS_287U_EQ_287(...) \, +#define Z_IS_287_EQ_287U(...) \, +#define Z_IS_287U_EQ_287U(...) \, +#define Z_IS_288_EQ_288(...) \, +#define Z_IS_288U_EQ_288(...) \, +#define Z_IS_288_EQ_288U(...) \, +#define Z_IS_288U_EQ_288U(...) \, +#define Z_IS_289_EQ_289(...) \, +#define Z_IS_289U_EQ_289(...) \, +#define Z_IS_289_EQ_289U(...) \, +#define Z_IS_289U_EQ_289U(...) \, +#define Z_IS_290_EQ_290(...) \, +#define Z_IS_290U_EQ_290(...) \, +#define Z_IS_290_EQ_290U(...) \, +#define Z_IS_290U_EQ_290U(...) \, +#define Z_IS_291_EQ_291(...) \, +#define Z_IS_291U_EQ_291(...) \, +#define Z_IS_291_EQ_291U(...) \, +#define Z_IS_291U_EQ_291U(...) \, +#define Z_IS_292_EQ_292(...) \, +#define Z_IS_292U_EQ_292(...) \, +#define Z_IS_292_EQ_292U(...) \, +#define Z_IS_292U_EQ_292U(...) \, +#define Z_IS_293_EQ_293(...) \, +#define Z_IS_293U_EQ_293(...) \, +#define Z_IS_293_EQ_293U(...) \, +#define Z_IS_293U_EQ_293U(...) \, +#define Z_IS_294_EQ_294(...) \, +#define Z_IS_294U_EQ_294(...) \, +#define Z_IS_294_EQ_294U(...) \, +#define Z_IS_294U_EQ_294U(...) \, +#define Z_IS_295_EQ_295(...) \, +#define Z_IS_295U_EQ_295(...) \, +#define Z_IS_295_EQ_295U(...) \, +#define Z_IS_295U_EQ_295U(...) \, +#define Z_IS_296_EQ_296(...) \, +#define Z_IS_296U_EQ_296(...) \, +#define Z_IS_296_EQ_296U(...) \, +#define Z_IS_296U_EQ_296U(...) \, +#define Z_IS_297_EQ_297(...) \, +#define Z_IS_297U_EQ_297(...) \, +#define Z_IS_297_EQ_297U(...) \, +#define Z_IS_297U_EQ_297U(...) \, +#define Z_IS_298_EQ_298(...) \, +#define Z_IS_298U_EQ_298(...) \, +#define Z_IS_298_EQ_298U(...) \, +#define Z_IS_298U_EQ_298U(...) \, +#define Z_IS_299_EQ_299(...) \, +#define Z_IS_299U_EQ_299(...) \, +#define Z_IS_299_EQ_299U(...) \, +#define Z_IS_299U_EQ_299U(...) \, +#define Z_IS_300_EQ_300(...) \, +#define Z_IS_300U_EQ_300(...) \, +#define Z_IS_300_EQ_300U(...) \, +#define Z_IS_300U_EQ_300U(...) \, +#define Z_IS_301_EQ_301(...) \, +#define Z_IS_301U_EQ_301(...) \, +#define Z_IS_301_EQ_301U(...) \, +#define Z_IS_301U_EQ_301U(...) \, +#define Z_IS_302_EQ_302(...) \, +#define Z_IS_302U_EQ_302(...) \, +#define Z_IS_302_EQ_302U(...) \, +#define Z_IS_302U_EQ_302U(...) \, +#define Z_IS_303_EQ_303(...) \, +#define Z_IS_303U_EQ_303(...) \, +#define Z_IS_303_EQ_303U(...) \, +#define Z_IS_303U_EQ_303U(...) \, +#define Z_IS_304_EQ_304(...) \, +#define Z_IS_304U_EQ_304(...) \, +#define Z_IS_304_EQ_304U(...) \, +#define Z_IS_304U_EQ_304U(...) \, +#define Z_IS_305_EQ_305(...) \, +#define Z_IS_305U_EQ_305(...) \, +#define Z_IS_305_EQ_305U(...) \, +#define Z_IS_305U_EQ_305U(...) \, +#define Z_IS_306_EQ_306(...) \, +#define Z_IS_306U_EQ_306(...) \, +#define Z_IS_306_EQ_306U(...) \, +#define Z_IS_306U_EQ_306U(...) \, +#define Z_IS_307_EQ_307(...) \, +#define Z_IS_307U_EQ_307(...) \, +#define Z_IS_307_EQ_307U(...) \, +#define Z_IS_307U_EQ_307U(...) \, +#define Z_IS_308_EQ_308(...) \, +#define Z_IS_308U_EQ_308(...) \, +#define Z_IS_308_EQ_308U(...) \, +#define Z_IS_308U_EQ_308U(...) \, +#define Z_IS_309_EQ_309(...) \, +#define Z_IS_309U_EQ_309(...) \, +#define Z_IS_309_EQ_309U(...) \, +#define Z_IS_309U_EQ_309U(...) \, +#define Z_IS_310_EQ_310(...) \, +#define Z_IS_310U_EQ_310(...) \, +#define Z_IS_310_EQ_310U(...) \, +#define Z_IS_310U_EQ_310U(...) \, +#define Z_IS_311_EQ_311(...) \, +#define Z_IS_311U_EQ_311(...) \, +#define Z_IS_311_EQ_311U(...) \, +#define Z_IS_311U_EQ_311U(...) \, +#define Z_IS_312_EQ_312(...) \, +#define Z_IS_312U_EQ_312(...) \, +#define Z_IS_312_EQ_312U(...) \, +#define Z_IS_312U_EQ_312U(...) \, +#define Z_IS_313_EQ_313(...) \, +#define Z_IS_313U_EQ_313(...) \, +#define Z_IS_313_EQ_313U(...) \, +#define Z_IS_313U_EQ_313U(...) \, +#define Z_IS_314_EQ_314(...) \, +#define Z_IS_314U_EQ_314(...) \, +#define Z_IS_314_EQ_314U(...) \, +#define Z_IS_314U_EQ_314U(...) \, +#define Z_IS_315_EQ_315(...) \, +#define Z_IS_315U_EQ_315(...) \, +#define Z_IS_315_EQ_315U(...) \, +#define Z_IS_315U_EQ_315U(...) \, +#define Z_IS_316_EQ_316(...) \, +#define Z_IS_316U_EQ_316(...) \, +#define Z_IS_316_EQ_316U(...) \, +#define Z_IS_316U_EQ_316U(...) \, +#define Z_IS_317_EQ_317(...) \, +#define Z_IS_317U_EQ_317(...) \, +#define Z_IS_317_EQ_317U(...) \, +#define Z_IS_317U_EQ_317U(...) \, +#define Z_IS_318_EQ_318(...) \, +#define Z_IS_318U_EQ_318(...) \, +#define Z_IS_318_EQ_318U(...) \, +#define Z_IS_318U_EQ_318U(...) \, +#define Z_IS_319_EQ_319(...) \, +#define Z_IS_319U_EQ_319(...) \, +#define Z_IS_319_EQ_319U(...) \, +#define Z_IS_319U_EQ_319U(...) \, +#define Z_IS_320_EQ_320(...) \, +#define Z_IS_320U_EQ_320(...) \, +#define Z_IS_320_EQ_320U(...) \, +#define Z_IS_320U_EQ_320U(...) \, +#define Z_IS_321_EQ_321(...) \, +#define Z_IS_321U_EQ_321(...) \, +#define Z_IS_321_EQ_321U(...) \, +#define Z_IS_321U_EQ_321U(...) \, +#define Z_IS_322_EQ_322(...) \, +#define Z_IS_322U_EQ_322(...) \, +#define Z_IS_322_EQ_322U(...) \, +#define Z_IS_322U_EQ_322U(...) \, +#define Z_IS_323_EQ_323(...) \, +#define Z_IS_323U_EQ_323(...) \, +#define Z_IS_323_EQ_323U(...) \, +#define Z_IS_323U_EQ_323U(...) \, +#define Z_IS_324_EQ_324(...) \, +#define Z_IS_324U_EQ_324(...) \, +#define Z_IS_324_EQ_324U(...) \, +#define Z_IS_324U_EQ_324U(...) \, +#define Z_IS_325_EQ_325(...) \, +#define Z_IS_325U_EQ_325(...) \, +#define Z_IS_325_EQ_325U(...) \, +#define Z_IS_325U_EQ_325U(...) \, +#define Z_IS_326_EQ_326(...) \, +#define Z_IS_326U_EQ_326(...) \, +#define Z_IS_326_EQ_326U(...) \, +#define Z_IS_326U_EQ_326U(...) \, +#define Z_IS_327_EQ_327(...) \, +#define Z_IS_327U_EQ_327(...) \, +#define Z_IS_327_EQ_327U(...) \, +#define Z_IS_327U_EQ_327U(...) \, +#define Z_IS_328_EQ_328(...) \, +#define Z_IS_328U_EQ_328(...) \, +#define Z_IS_328_EQ_328U(...) \, +#define Z_IS_328U_EQ_328U(...) \, +#define Z_IS_329_EQ_329(...) \, +#define Z_IS_329U_EQ_329(...) \, +#define Z_IS_329_EQ_329U(...) \, +#define Z_IS_329U_EQ_329U(...) \, +#define Z_IS_330_EQ_330(...) \, +#define Z_IS_330U_EQ_330(...) \, +#define Z_IS_330_EQ_330U(...) \, +#define Z_IS_330U_EQ_330U(...) \, +#define Z_IS_331_EQ_331(...) \, +#define Z_IS_331U_EQ_331(...) \, +#define Z_IS_331_EQ_331U(...) \, +#define Z_IS_331U_EQ_331U(...) \, +#define Z_IS_332_EQ_332(...) \, +#define Z_IS_332U_EQ_332(...) \, +#define Z_IS_332_EQ_332U(...) \, +#define Z_IS_332U_EQ_332U(...) \, +#define Z_IS_333_EQ_333(...) \, +#define Z_IS_333U_EQ_333(...) \, +#define Z_IS_333_EQ_333U(...) \, +#define Z_IS_333U_EQ_333U(...) \, +#define Z_IS_334_EQ_334(...) \, +#define Z_IS_334U_EQ_334(...) \, +#define Z_IS_334_EQ_334U(...) \, +#define Z_IS_334U_EQ_334U(...) \, +#define Z_IS_335_EQ_335(...) \, +#define Z_IS_335U_EQ_335(...) \, +#define Z_IS_335_EQ_335U(...) \, +#define Z_IS_335U_EQ_335U(...) \, +#define Z_IS_336_EQ_336(...) \, +#define Z_IS_336U_EQ_336(...) \, +#define Z_IS_336_EQ_336U(...) \, +#define Z_IS_336U_EQ_336U(...) \, +#define Z_IS_337_EQ_337(...) \, +#define Z_IS_337U_EQ_337(...) \, +#define Z_IS_337_EQ_337U(...) \, +#define Z_IS_337U_EQ_337U(...) \, +#define Z_IS_338_EQ_338(...) \, +#define Z_IS_338U_EQ_338(...) \, +#define Z_IS_338_EQ_338U(...) \, +#define Z_IS_338U_EQ_338U(...) \, +#define Z_IS_339_EQ_339(...) \, +#define Z_IS_339U_EQ_339(...) \, +#define Z_IS_339_EQ_339U(...) \, +#define Z_IS_339U_EQ_339U(...) \, +#define Z_IS_340_EQ_340(...) \, +#define Z_IS_340U_EQ_340(...) \, +#define Z_IS_340_EQ_340U(...) \, +#define Z_IS_340U_EQ_340U(...) \, +#define Z_IS_341_EQ_341(...) \, +#define Z_IS_341U_EQ_341(...) \, +#define Z_IS_341_EQ_341U(...) \, +#define Z_IS_341U_EQ_341U(...) \, +#define Z_IS_342_EQ_342(...) \, +#define Z_IS_342U_EQ_342(...) \, +#define Z_IS_342_EQ_342U(...) \, +#define Z_IS_342U_EQ_342U(...) \, +#define Z_IS_343_EQ_343(...) \, +#define Z_IS_343U_EQ_343(...) \, +#define Z_IS_343_EQ_343U(...) \, +#define Z_IS_343U_EQ_343U(...) \, +#define Z_IS_344_EQ_344(...) \, +#define Z_IS_344U_EQ_344(...) \, +#define Z_IS_344_EQ_344U(...) \, +#define Z_IS_344U_EQ_344U(...) \, +#define Z_IS_345_EQ_345(...) \, +#define Z_IS_345U_EQ_345(...) \, +#define Z_IS_345_EQ_345U(...) \, +#define Z_IS_345U_EQ_345U(...) \, +#define Z_IS_346_EQ_346(...) \, +#define Z_IS_346U_EQ_346(...) \, +#define Z_IS_346_EQ_346U(...) \, +#define Z_IS_346U_EQ_346U(...) \, +#define Z_IS_347_EQ_347(...) \, +#define Z_IS_347U_EQ_347(...) \, +#define Z_IS_347_EQ_347U(...) \, +#define Z_IS_347U_EQ_347U(...) \, +#define Z_IS_348_EQ_348(...) \, +#define Z_IS_348U_EQ_348(...) \, +#define Z_IS_348_EQ_348U(...) \, +#define Z_IS_348U_EQ_348U(...) \, +#define Z_IS_349_EQ_349(...) \, +#define Z_IS_349U_EQ_349(...) \, +#define Z_IS_349_EQ_349U(...) \, +#define Z_IS_349U_EQ_349U(...) \, +#define Z_IS_350_EQ_350(...) \, +#define Z_IS_350U_EQ_350(...) \, +#define Z_IS_350_EQ_350U(...) \, +#define Z_IS_350U_EQ_350U(...) \, +#define Z_IS_351_EQ_351(...) \, +#define Z_IS_351U_EQ_351(...) \, +#define Z_IS_351_EQ_351U(...) \, +#define Z_IS_351U_EQ_351U(...) \, +#define Z_IS_352_EQ_352(...) \, +#define Z_IS_352U_EQ_352(...) \, +#define Z_IS_352_EQ_352U(...) \, +#define Z_IS_352U_EQ_352U(...) \, +#define Z_IS_353_EQ_353(...) \, +#define Z_IS_353U_EQ_353(...) \, +#define Z_IS_353_EQ_353U(...) \, +#define Z_IS_353U_EQ_353U(...) \, +#define Z_IS_354_EQ_354(...) \, +#define Z_IS_354U_EQ_354(...) \, +#define Z_IS_354_EQ_354U(...) \, +#define Z_IS_354U_EQ_354U(...) \, +#define Z_IS_355_EQ_355(...) \, +#define Z_IS_355U_EQ_355(...) \, +#define Z_IS_355_EQ_355U(...) \, +#define Z_IS_355U_EQ_355U(...) \, +#define Z_IS_356_EQ_356(...) \, +#define Z_IS_356U_EQ_356(...) \, +#define Z_IS_356_EQ_356U(...) \, +#define Z_IS_356U_EQ_356U(...) \, +#define Z_IS_357_EQ_357(...) \, +#define Z_IS_357U_EQ_357(...) \, +#define Z_IS_357_EQ_357U(...) \, +#define Z_IS_357U_EQ_357U(...) \, +#define Z_IS_358_EQ_358(...) \, +#define Z_IS_358U_EQ_358(...) \, +#define Z_IS_358_EQ_358U(...) \, +#define Z_IS_358U_EQ_358U(...) \, +#define Z_IS_359_EQ_359(...) \, +#define Z_IS_359U_EQ_359(...) \, +#define Z_IS_359_EQ_359U(...) \, +#define Z_IS_359U_EQ_359U(...) \, +#define Z_IS_360_EQ_360(...) \, +#define Z_IS_360U_EQ_360(...) \, +#define Z_IS_360_EQ_360U(...) \, +#define Z_IS_360U_EQ_360U(...) \, +#define Z_IS_361_EQ_361(...) \, +#define Z_IS_361U_EQ_361(...) \, +#define Z_IS_361_EQ_361U(...) \, +#define Z_IS_361U_EQ_361U(...) \, +#define Z_IS_362_EQ_362(...) \, +#define Z_IS_362U_EQ_362(...) \, +#define Z_IS_362_EQ_362U(...) \, +#define Z_IS_362U_EQ_362U(...) \, +#define Z_IS_363_EQ_363(...) \, +#define Z_IS_363U_EQ_363(...) \, +#define Z_IS_363_EQ_363U(...) \, +#define Z_IS_363U_EQ_363U(...) \, +#define Z_IS_364_EQ_364(...) \, +#define Z_IS_364U_EQ_364(...) \, +#define Z_IS_364_EQ_364U(...) \, +#define Z_IS_364U_EQ_364U(...) \, +#define Z_IS_365_EQ_365(...) \, +#define Z_IS_365U_EQ_365(...) \, +#define Z_IS_365_EQ_365U(...) \, +#define Z_IS_365U_EQ_365U(...) \, +#define Z_IS_366_EQ_366(...) \, +#define Z_IS_366U_EQ_366(...) \, +#define Z_IS_366_EQ_366U(...) \, +#define Z_IS_366U_EQ_366U(...) \, +#define Z_IS_367_EQ_367(...) \, +#define Z_IS_367U_EQ_367(...) \, +#define Z_IS_367_EQ_367U(...) \, +#define Z_IS_367U_EQ_367U(...) \, +#define Z_IS_368_EQ_368(...) \, +#define Z_IS_368U_EQ_368(...) \, +#define Z_IS_368_EQ_368U(...) \, +#define Z_IS_368U_EQ_368U(...) \, +#define Z_IS_369_EQ_369(...) \, +#define Z_IS_369U_EQ_369(...) \, +#define Z_IS_369_EQ_369U(...) \, +#define Z_IS_369U_EQ_369U(...) \, +#define Z_IS_370_EQ_370(...) \, +#define Z_IS_370U_EQ_370(...) \, +#define Z_IS_370_EQ_370U(...) \, +#define Z_IS_370U_EQ_370U(...) \, +#define Z_IS_371_EQ_371(...) \, +#define Z_IS_371U_EQ_371(...) \, +#define Z_IS_371_EQ_371U(...) \, +#define Z_IS_371U_EQ_371U(...) \, +#define Z_IS_372_EQ_372(...) \, +#define Z_IS_372U_EQ_372(...) \, +#define Z_IS_372_EQ_372U(...) \, +#define Z_IS_372U_EQ_372U(...) \, +#define Z_IS_373_EQ_373(...) \, +#define Z_IS_373U_EQ_373(...) \, +#define Z_IS_373_EQ_373U(...) \, +#define Z_IS_373U_EQ_373U(...) \, +#define Z_IS_374_EQ_374(...) \, +#define Z_IS_374U_EQ_374(...) \, +#define Z_IS_374_EQ_374U(...) \, +#define Z_IS_374U_EQ_374U(...) \, +#define Z_IS_375_EQ_375(...) \, +#define Z_IS_375U_EQ_375(...) \, +#define Z_IS_375_EQ_375U(...) \, +#define Z_IS_375U_EQ_375U(...) \, +#define Z_IS_376_EQ_376(...) \, +#define Z_IS_376U_EQ_376(...) \, +#define Z_IS_376_EQ_376U(...) \, +#define Z_IS_376U_EQ_376U(...) \, +#define Z_IS_377_EQ_377(...) \, +#define Z_IS_377U_EQ_377(...) \, +#define Z_IS_377_EQ_377U(...) \, +#define Z_IS_377U_EQ_377U(...) \, +#define Z_IS_378_EQ_378(...) \, +#define Z_IS_378U_EQ_378(...) \, +#define Z_IS_378_EQ_378U(...) \, +#define Z_IS_378U_EQ_378U(...) \, +#define Z_IS_379_EQ_379(...) \, +#define Z_IS_379U_EQ_379(...) \, +#define Z_IS_379_EQ_379U(...) \, +#define Z_IS_379U_EQ_379U(...) \, +#define Z_IS_380_EQ_380(...) \, +#define Z_IS_380U_EQ_380(...) \, +#define Z_IS_380_EQ_380U(...) \, +#define Z_IS_380U_EQ_380U(...) \, +#define Z_IS_381_EQ_381(...) \, +#define Z_IS_381U_EQ_381(...) \, +#define Z_IS_381_EQ_381U(...) \, +#define Z_IS_381U_EQ_381U(...) \, +#define Z_IS_382_EQ_382(...) \, +#define Z_IS_382U_EQ_382(...) \, +#define Z_IS_382_EQ_382U(...) \, +#define Z_IS_382U_EQ_382U(...) \, +#define Z_IS_383_EQ_383(...) \, +#define Z_IS_383U_EQ_383(...) \, +#define Z_IS_383_EQ_383U(...) \, +#define Z_IS_383U_EQ_383U(...) \, +#define Z_IS_384_EQ_384(...) \, +#define Z_IS_384U_EQ_384(...) \, +#define Z_IS_384_EQ_384U(...) \, +#define Z_IS_384U_EQ_384U(...) \, +#define Z_IS_385_EQ_385(...) \, +#define Z_IS_385U_EQ_385(...) \, +#define Z_IS_385_EQ_385U(...) \, +#define Z_IS_385U_EQ_385U(...) \, +#define Z_IS_386_EQ_386(...) \, +#define Z_IS_386U_EQ_386(...) \, +#define Z_IS_386_EQ_386U(...) \, +#define Z_IS_386U_EQ_386U(...) \, +#define Z_IS_387_EQ_387(...) \, +#define Z_IS_387U_EQ_387(...) \, +#define Z_IS_387_EQ_387U(...) \, +#define Z_IS_387U_EQ_387U(...) \, +#define Z_IS_388_EQ_388(...) \, +#define Z_IS_388U_EQ_388(...) \, +#define Z_IS_388_EQ_388U(...) \, +#define Z_IS_388U_EQ_388U(...) \, +#define Z_IS_389_EQ_389(...) \, +#define Z_IS_389U_EQ_389(...) \, +#define Z_IS_389_EQ_389U(...) \, +#define Z_IS_389U_EQ_389U(...) \, +#define Z_IS_390_EQ_390(...) \, +#define Z_IS_390U_EQ_390(...) \, +#define Z_IS_390_EQ_390U(...) \, +#define Z_IS_390U_EQ_390U(...) \, +#define Z_IS_391_EQ_391(...) \, +#define Z_IS_391U_EQ_391(...) \, +#define Z_IS_391_EQ_391U(...) \, +#define Z_IS_391U_EQ_391U(...) \, +#define Z_IS_392_EQ_392(...) \, +#define Z_IS_392U_EQ_392(...) \, +#define Z_IS_392_EQ_392U(...) \, +#define Z_IS_392U_EQ_392U(...) \, +#define Z_IS_393_EQ_393(...) \, +#define Z_IS_393U_EQ_393(...) \, +#define Z_IS_393_EQ_393U(...) \, +#define Z_IS_393U_EQ_393U(...) \, +#define Z_IS_394_EQ_394(...) \, +#define Z_IS_394U_EQ_394(...) \, +#define Z_IS_394_EQ_394U(...) \, +#define Z_IS_394U_EQ_394U(...) \, +#define Z_IS_395_EQ_395(...) \, +#define Z_IS_395U_EQ_395(...) \, +#define Z_IS_395_EQ_395U(...) \, +#define Z_IS_395U_EQ_395U(...) \, +#define Z_IS_396_EQ_396(...) \, +#define Z_IS_396U_EQ_396(...) \, +#define Z_IS_396_EQ_396U(...) \, +#define Z_IS_396U_EQ_396U(...) \, +#define Z_IS_397_EQ_397(...) \, +#define Z_IS_397U_EQ_397(...) \, +#define Z_IS_397_EQ_397U(...) \, +#define Z_IS_397U_EQ_397U(...) \, +#define Z_IS_398_EQ_398(...) \, +#define Z_IS_398U_EQ_398(...) \, +#define Z_IS_398_EQ_398U(...) \, +#define Z_IS_398U_EQ_398U(...) \, +#define Z_IS_399_EQ_399(...) \, +#define Z_IS_399U_EQ_399(...) \, +#define Z_IS_399_EQ_399U(...) \, +#define Z_IS_399U_EQ_399U(...) \, +#define Z_IS_400_EQ_400(...) \, +#define Z_IS_400U_EQ_400(...) \, +#define Z_IS_400_EQ_400U(...) \, +#define Z_IS_400U_EQ_400U(...) \, +#define Z_IS_401_EQ_401(...) \, +#define Z_IS_401U_EQ_401(...) \, +#define Z_IS_401_EQ_401U(...) \, +#define Z_IS_401U_EQ_401U(...) \, +#define Z_IS_402_EQ_402(...) \, +#define Z_IS_402U_EQ_402(...) \, +#define Z_IS_402_EQ_402U(...) \, +#define Z_IS_402U_EQ_402U(...) \, +#define Z_IS_403_EQ_403(...) \, +#define Z_IS_403U_EQ_403(...) \, +#define Z_IS_403_EQ_403U(...) \, +#define Z_IS_403U_EQ_403U(...) \, +#define Z_IS_404_EQ_404(...) \, +#define Z_IS_404U_EQ_404(...) \, +#define Z_IS_404_EQ_404U(...) \, +#define Z_IS_404U_EQ_404U(...) \, +#define Z_IS_405_EQ_405(...) \, +#define Z_IS_405U_EQ_405(...) \, +#define Z_IS_405_EQ_405U(...) \, +#define Z_IS_405U_EQ_405U(...) \, +#define Z_IS_406_EQ_406(...) \, +#define Z_IS_406U_EQ_406(...) \, +#define Z_IS_406_EQ_406U(...) \, +#define Z_IS_406U_EQ_406U(...) \, +#define Z_IS_407_EQ_407(...) \, +#define Z_IS_407U_EQ_407(...) \, +#define Z_IS_407_EQ_407U(...) \, +#define Z_IS_407U_EQ_407U(...) \, +#define Z_IS_408_EQ_408(...) \, +#define Z_IS_408U_EQ_408(...) \, +#define Z_IS_408_EQ_408U(...) \, +#define Z_IS_408U_EQ_408U(...) \, +#define Z_IS_409_EQ_409(...) \, +#define Z_IS_409U_EQ_409(...) \, +#define Z_IS_409_EQ_409U(...) \, +#define Z_IS_409U_EQ_409U(...) \, +#define Z_IS_410_EQ_410(...) \, +#define Z_IS_410U_EQ_410(...) \, +#define Z_IS_410_EQ_410U(...) \, +#define Z_IS_410U_EQ_410U(...) \, +#define Z_IS_411_EQ_411(...) \, +#define Z_IS_411U_EQ_411(...) \, +#define Z_IS_411_EQ_411U(...) \, +#define Z_IS_411U_EQ_411U(...) \, +#define Z_IS_412_EQ_412(...) \, +#define Z_IS_412U_EQ_412(...) \, +#define Z_IS_412_EQ_412U(...) \, +#define Z_IS_412U_EQ_412U(...) \, +#define Z_IS_413_EQ_413(...) \, +#define Z_IS_413U_EQ_413(...) \, +#define Z_IS_413_EQ_413U(...) \, +#define Z_IS_413U_EQ_413U(...) \, +#define Z_IS_414_EQ_414(...) \, +#define Z_IS_414U_EQ_414(...) \, +#define Z_IS_414_EQ_414U(...) \, +#define Z_IS_414U_EQ_414U(...) \, +#define Z_IS_415_EQ_415(...) \, +#define Z_IS_415U_EQ_415(...) \, +#define Z_IS_415_EQ_415U(...) \, +#define Z_IS_415U_EQ_415U(...) \, +#define Z_IS_416_EQ_416(...) \, +#define Z_IS_416U_EQ_416(...) \, +#define Z_IS_416_EQ_416U(...) \, +#define Z_IS_416U_EQ_416U(...) \, +#define Z_IS_417_EQ_417(...) \, +#define Z_IS_417U_EQ_417(...) \, +#define Z_IS_417_EQ_417U(...) \, +#define Z_IS_417U_EQ_417U(...) \, +#define Z_IS_418_EQ_418(...) \, +#define Z_IS_418U_EQ_418(...) \, +#define Z_IS_418_EQ_418U(...) \, +#define Z_IS_418U_EQ_418U(...) \, +#define Z_IS_419_EQ_419(...) \, +#define Z_IS_419U_EQ_419(...) \, +#define Z_IS_419_EQ_419U(...) \, +#define Z_IS_419U_EQ_419U(...) \, +#define Z_IS_420_EQ_420(...) \, +#define Z_IS_420U_EQ_420(...) \, +#define Z_IS_420_EQ_420U(...) \, +#define Z_IS_420U_EQ_420U(...) \, +#define Z_IS_421_EQ_421(...) \, +#define Z_IS_421U_EQ_421(...) \, +#define Z_IS_421_EQ_421U(...) \, +#define Z_IS_421U_EQ_421U(...) \, +#define Z_IS_422_EQ_422(...) \, +#define Z_IS_422U_EQ_422(...) \, +#define Z_IS_422_EQ_422U(...) \, +#define Z_IS_422U_EQ_422U(...) \, +#define Z_IS_423_EQ_423(...) \, +#define Z_IS_423U_EQ_423(...) \, +#define Z_IS_423_EQ_423U(...) \, +#define Z_IS_423U_EQ_423U(...) \, +#define Z_IS_424_EQ_424(...) \, +#define Z_IS_424U_EQ_424(...) \, +#define Z_IS_424_EQ_424U(...) \, +#define Z_IS_424U_EQ_424U(...) \, +#define Z_IS_425_EQ_425(...) \, +#define Z_IS_425U_EQ_425(...) \, +#define Z_IS_425_EQ_425U(...) \, +#define Z_IS_425U_EQ_425U(...) \, +#define Z_IS_426_EQ_426(...) \, +#define Z_IS_426U_EQ_426(...) \, +#define Z_IS_426_EQ_426U(...) \, +#define Z_IS_426U_EQ_426U(...) \, +#define Z_IS_427_EQ_427(...) \, +#define Z_IS_427U_EQ_427(...) \, +#define Z_IS_427_EQ_427U(...) \, +#define Z_IS_427U_EQ_427U(...) \, +#define Z_IS_428_EQ_428(...) \, +#define Z_IS_428U_EQ_428(...) \, +#define Z_IS_428_EQ_428U(...) \, +#define Z_IS_428U_EQ_428U(...) \, +#define Z_IS_429_EQ_429(...) \, +#define Z_IS_429U_EQ_429(...) \, +#define Z_IS_429_EQ_429U(...) \, +#define Z_IS_429U_EQ_429U(...) \, +#define Z_IS_430_EQ_430(...) \, +#define Z_IS_430U_EQ_430(...) \, +#define Z_IS_430_EQ_430U(...) \, +#define Z_IS_430U_EQ_430U(...) \, +#define Z_IS_431_EQ_431(...) \, +#define Z_IS_431U_EQ_431(...) \, +#define Z_IS_431_EQ_431U(...) \, +#define Z_IS_431U_EQ_431U(...) \, +#define Z_IS_432_EQ_432(...) \, +#define Z_IS_432U_EQ_432(...) \, +#define Z_IS_432_EQ_432U(...) \, +#define Z_IS_432U_EQ_432U(...) \, +#define Z_IS_433_EQ_433(...) \, +#define Z_IS_433U_EQ_433(...) \, +#define Z_IS_433_EQ_433U(...) \, +#define Z_IS_433U_EQ_433U(...) \, +#define Z_IS_434_EQ_434(...) \, +#define Z_IS_434U_EQ_434(...) \, +#define Z_IS_434_EQ_434U(...) \, +#define Z_IS_434U_EQ_434U(...) \, +#define Z_IS_435_EQ_435(...) \, +#define Z_IS_435U_EQ_435(...) \, +#define Z_IS_435_EQ_435U(...) \, +#define Z_IS_435U_EQ_435U(...) \, +#define Z_IS_436_EQ_436(...) \, +#define Z_IS_436U_EQ_436(...) \, +#define Z_IS_436_EQ_436U(...) \, +#define Z_IS_436U_EQ_436U(...) \, +#define Z_IS_437_EQ_437(...) \, +#define Z_IS_437U_EQ_437(...) \, +#define Z_IS_437_EQ_437U(...) \, +#define Z_IS_437U_EQ_437U(...) \, +#define Z_IS_438_EQ_438(...) \, +#define Z_IS_438U_EQ_438(...) \, +#define Z_IS_438_EQ_438U(...) \, +#define Z_IS_438U_EQ_438U(...) \, +#define Z_IS_439_EQ_439(...) \, +#define Z_IS_439U_EQ_439(...) \, +#define Z_IS_439_EQ_439U(...) \, +#define Z_IS_439U_EQ_439U(...) \, +#define Z_IS_440_EQ_440(...) \, +#define Z_IS_440U_EQ_440(...) \, +#define Z_IS_440_EQ_440U(...) \, +#define Z_IS_440U_EQ_440U(...) \, +#define Z_IS_441_EQ_441(...) \, +#define Z_IS_441U_EQ_441(...) \, +#define Z_IS_441_EQ_441U(...) \, +#define Z_IS_441U_EQ_441U(...) \, +#define Z_IS_442_EQ_442(...) \, +#define Z_IS_442U_EQ_442(...) \, +#define Z_IS_442_EQ_442U(...) \, +#define Z_IS_442U_EQ_442U(...) \, +#define Z_IS_443_EQ_443(...) \, +#define Z_IS_443U_EQ_443(...) \, +#define Z_IS_443_EQ_443U(...) \, +#define Z_IS_443U_EQ_443U(...) \, +#define Z_IS_444_EQ_444(...) \, +#define Z_IS_444U_EQ_444(...) \, +#define Z_IS_444_EQ_444U(...) \, +#define Z_IS_444U_EQ_444U(...) \, +#define Z_IS_445_EQ_445(...) \, +#define Z_IS_445U_EQ_445(...) \, +#define Z_IS_445_EQ_445U(...) \, +#define Z_IS_445U_EQ_445U(...) \, +#define Z_IS_446_EQ_446(...) \, +#define Z_IS_446U_EQ_446(...) \, +#define Z_IS_446_EQ_446U(...) \, +#define Z_IS_446U_EQ_446U(...) \, +#define Z_IS_447_EQ_447(...) \, +#define Z_IS_447U_EQ_447(...) \, +#define Z_IS_447_EQ_447U(...) \, +#define Z_IS_447U_EQ_447U(...) \, +#define Z_IS_448_EQ_448(...) \, +#define Z_IS_448U_EQ_448(...) \, +#define Z_IS_448_EQ_448U(...) \, +#define Z_IS_448U_EQ_448U(...) \, +#define Z_IS_449_EQ_449(...) \, +#define Z_IS_449U_EQ_449(...) \, +#define Z_IS_449_EQ_449U(...) \, +#define Z_IS_449U_EQ_449U(...) \, +#define Z_IS_450_EQ_450(...) \, +#define Z_IS_450U_EQ_450(...) \, +#define Z_IS_450_EQ_450U(...) \, +#define Z_IS_450U_EQ_450U(...) \, +#define Z_IS_451_EQ_451(...) \, +#define Z_IS_451U_EQ_451(...) \, +#define Z_IS_451_EQ_451U(...) \, +#define Z_IS_451U_EQ_451U(...) \, +#define Z_IS_452_EQ_452(...) \, +#define Z_IS_452U_EQ_452(...) \, +#define Z_IS_452_EQ_452U(...) \, +#define Z_IS_452U_EQ_452U(...) \, +#define Z_IS_453_EQ_453(...) \, +#define Z_IS_453U_EQ_453(...) \, +#define Z_IS_453_EQ_453U(...) \, +#define Z_IS_453U_EQ_453U(...) \, +#define Z_IS_454_EQ_454(...) \, +#define Z_IS_454U_EQ_454(...) \, +#define Z_IS_454_EQ_454U(...) \, +#define Z_IS_454U_EQ_454U(...) \, +#define Z_IS_455_EQ_455(...) \, +#define Z_IS_455U_EQ_455(...) \, +#define Z_IS_455_EQ_455U(...) \, +#define Z_IS_455U_EQ_455U(...) \, +#define Z_IS_456_EQ_456(...) \, +#define Z_IS_456U_EQ_456(...) \, +#define Z_IS_456_EQ_456U(...) \, +#define Z_IS_456U_EQ_456U(...) \, +#define Z_IS_457_EQ_457(...) \, +#define Z_IS_457U_EQ_457(...) \, +#define Z_IS_457_EQ_457U(...) \, +#define Z_IS_457U_EQ_457U(...) \, +#define Z_IS_458_EQ_458(...) \, +#define Z_IS_458U_EQ_458(...) \, +#define Z_IS_458_EQ_458U(...) \, +#define Z_IS_458U_EQ_458U(...) \, +#define Z_IS_459_EQ_459(...) \, +#define Z_IS_459U_EQ_459(...) \, +#define Z_IS_459_EQ_459U(...) \, +#define Z_IS_459U_EQ_459U(...) \, +#define Z_IS_460_EQ_460(...) \, +#define Z_IS_460U_EQ_460(...) \, +#define Z_IS_460_EQ_460U(...) \, +#define Z_IS_460U_EQ_460U(...) \, +#define Z_IS_461_EQ_461(...) \, +#define Z_IS_461U_EQ_461(...) \, +#define Z_IS_461_EQ_461U(...) \, +#define Z_IS_461U_EQ_461U(...) \, +#define Z_IS_462_EQ_462(...) \, +#define Z_IS_462U_EQ_462(...) \, +#define Z_IS_462_EQ_462U(...) \, +#define Z_IS_462U_EQ_462U(...) \, +#define Z_IS_463_EQ_463(...) \, +#define Z_IS_463U_EQ_463(...) \, +#define Z_IS_463_EQ_463U(...) \, +#define Z_IS_463U_EQ_463U(...) \, +#define Z_IS_464_EQ_464(...) \, +#define Z_IS_464U_EQ_464(...) \, +#define Z_IS_464_EQ_464U(...) \, +#define Z_IS_464U_EQ_464U(...) \, +#define Z_IS_465_EQ_465(...) \, +#define Z_IS_465U_EQ_465(...) \, +#define Z_IS_465_EQ_465U(...) \, +#define Z_IS_465U_EQ_465U(...) \, +#define Z_IS_466_EQ_466(...) \, +#define Z_IS_466U_EQ_466(...) \, +#define Z_IS_466_EQ_466U(...) \, +#define Z_IS_466U_EQ_466U(...) \, +#define Z_IS_467_EQ_467(...) \, +#define Z_IS_467U_EQ_467(...) \, +#define Z_IS_467_EQ_467U(...) \, +#define Z_IS_467U_EQ_467U(...) \, +#define Z_IS_468_EQ_468(...) \, +#define Z_IS_468U_EQ_468(...) \, +#define Z_IS_468_EQ_468U(...) \, +#define Z_IS_468U_EQ_468U(...) \, +#define Z_IS_469_EQ_469(...) \, +#define Z_IS_469U_EQ_469(...) \, +#define Z_IS_469_EQ_469U(...) \, +#define Z_IS_469U_EQ_469U(...) \, +#define Z_IS_470_EQ_470(...) \, +#define Z_IS_470U_EQ_470(...) \, +#define Z_IS_470_EQ_470U(...) \, +#define Z_IS_470U_EQ_470U(...) \, +#define Z_IS_471_EQ_471(...) \, +#define Z_IS_471U_EQ_471(...) \, +#define Z_IS_471_EQ_471U(...) \, +#define Z_IS_471U_EQ_471U(...) \, +#define Z_IS_472_EQ_472(...) \, +#define Z_IS_472U_EQ_472(...) \, +#define Z_IS_472_EQ_472U(...) \, +#define Z_IS_472U_EQ_472U(...) \, +#define Z_IS_473_EQ_473(...) \, +#define Z_IS_473U_EQ_473(...) \, +#define Z_IS_473_EQ_473U(...) \, +#define Z_IS_473U_EQ_473U(...) \, +#define Z_IS_474_EQ_474(...) \, +#define Z_IS_474U_EQ_474(...) \, +#define Z_IS_474_EQ_474U(...) \, +#define Z_IS_474U_EQ_474U(...) \, +#define Z_IS_475_EQ_475(...) \, +#define Z_IS_475U_EQ_475(...) \, +#define Z_IS_475_EQ_475U(...) \, +#define Z_IS_475U_EQ_475U(...) \, +#define Z_IS_476_EQ_476(...) \, +#define Z_IS_476U_EQ_476(...) \, +#define Z_IS_476_EQ_476U(...) \, +#define Z_IS_476U_EQ_476U(...) \, +#define Z_IS_477_EQ_477(...) \, +#define Z_IS_477U_EQ_477(...) \, +#define Z_IS_477_EQ_477U(...) \, +#define Z_IS_477U_EQ_477U(...) \, +#define Z_IS_478_EQ_478(...) \, +#define Z_IS_478U_EQ_478(...) \, +#define Z_IS_478_EQ_478U(...) \, +#define Z_IS_478U_EQ_478U(...) \, +#define Z_IS_479_EQ_479(...) \, +#define Z_IS_479U_EQ_479(...) \, +#define Z_IS_479_EQ_479U(...) \, +#define Z_IS_479U_EQ_479U(...) \, +#define Z_IS_480_EQ_480(...) \, +#define Z_IS_480U_EQ_480(...) \, +#define Z_IS_480_EQ_480U(...) \, +#define Z_IS_480U_EQ_480U(...) \, +#define Z_IS_481_EQ_481(...) \, +#define Z_IS_481U_EQ_481(...) \, +#define Z_IS_481_EQ_481U(...) \, +#define Z_IS_481U_EQ_481U(...) \, +#define Z_IS_482_EQ_482(...) \, +#define Z_IS_482U_EQ_482(...) \, +#define Z_IS_482_EQ_482U(...) \, +#define Z_IS_482U_EQ_482U(...) \, +#define Z_IS_483_EQ_483(...) \, +#define Z_IS_483U_EQ_483(...) \, +#define Z_IS_483_EQ_483U(...) \, +#define Z_IS_483U_EQ_483U(...) \, +#define Z_IS_484_EQ_484(...) \, +#define Z_IS_484U_EQ_484(...) \, +#define Z_IS_484_EQ_484U(...) \, +#define Z_IS_484U_EQ_484U(...) \, +#define Z_IS_485_EQ_485(...) \, +#define Z_IS_485U_EQ_485(...) \, +#define Z_IS_485_EQ_485U(...) \, +#define Z_IS_485U_EQ_485U(...) \, +#define Z_IS_486_EQ_486(...) \, +#define Z_IS_486U_EQ_486(...) \, +#define Z_IS_486_EQ_486U(...) \, +#define Z_IS_486U_EQ_486U(...) \, +#define Z_IS_487_EQ_487(...) \, +#define Z_IS_487U_EQ_487(...) \, +#define Z_IS_487_EQ_487U(...) \, +#define Z_IS_487U_EQ_487U(...) \, +#define Z_IS_488_EQ_488(...) \, +#define Z_IS_488U_EQ_488(...) \, +#define Z_IS_488_EQ_488U(...) \, +#define Z_IS_488U_EQ_488U(...) \, +#define Z_IS_489_EQ_489(...) \, +#define Z_IS_489U_EQ_489(...) \, +#define Z_IS_489_EQ_489U(...) \, +#define Z_IS_489U_EQ_489U(...) \, +#define Z_IS_490_EQ_490(...) \, +#define Z_IS_490U_EQ_490(...) \, +#define Z_IS_490_EQ_490U(...) \, +#define Z_IS_490U_EQ_490U(...) \, +#define Z_IS_491_EQ_491(...) \, +#define Z_IS_491U_EQ_491(...) \, +#define Z_IS_491_EQ_491U(...) \, +#define Z_IS_491U_EQ_491U(...) \, +#define Z_IS_492_EQ_492(...) \, +#define Z_IS_492U_EQ_492(...) \, +#define Z_IS_492_EQ_492U(...) \, +#define Z_IS_492U_EQ_492U(...) \, +#define Z_IS_493_EQ_493(...) \, +#define Z_IS_493U_EQ_493(...) \, +#define Z_IS_493_EQ_493U(...) \, +#define Z_IS_493U_EQ_493U(...) \, +#define Z_IS_494_EQ_494(...) \, +#define Z_IS_494U_EQ_494(...) \, +#define Z_IS_494_EQ_494U(...) \, +#define Z_IS_494U_EQ_494U(...) \, +#define Z_IS_495_EQ_495(...) \, +#define Z_IS_495U_EQ_495(...) \, +#define Z_IS_495_EQ_495U(...) \, +#define Z_IS_495U_EQ_495U(...) \, +#define Z_IS_496_EQ_496(...) \, +#define Z_IS_496U_EQ_496(...) \, +#define Z_IS_496_EQ_496U(...) \, +#define Z_IS_496U_EQ_496U(...) \, +#define Z_IS_497_EQ_497(...) \, +#define Z_IS_497U_EQ_497(...) \, +#define Z_IS_497_EQ_497U(...) \, +#define Z_IS_497U_EQ_497U(...) \, +#define Z_IS_498_EQ_498(...) \, +#define Z_IS_498U_EQ_498(...) \, +#define Z_IS_498_EQ_498U(...) \, +#define Z_IS_498U_EQ_498U(...) \, +#define Z_IS_499_EQ_499(...) \, +#define Z_IS_499U_EQ_499(...) \, +#define Z_IS_499_EQ_499U(...) \, +#define Z_IS_499U_EQ_499U(...) \, +#define Z_IS_500_EQ_500(...) \, +#define Z_IS_500U_EQ_500(...) \, +#define Z_IS_500_EQ_500U(...) \, +#define Z_IS_500U_EQ_500U(...) \, +#define Z_IS_501_EQ_501(...) \, +#define Z_IS_501U_EQ_501(...) \, +#define Z_IS_501_EQ_501U(...) \, +#define Z_IS_501U_EQ_501U(...) \, +#define Z_IS_502_EQ_502(...) \, +#define Z_IS_502U_EQ_502(...) \, +#define Z_IS_502_EQ_502U(...) \, +#define Z_IS_502U_EQ_502U(...) \, +#define Z_IS_503_EQ_503(...) \, +#define Z_IS_503U_EQ_503(...) \, +#define Z_IS_503_EQ_503U(...) \, +#define Z_IS_503U_EQ_503U(...) \, +#define Z_IS_504_EQ_504(...) \, +#define Z_IS_504U_EQ_504(...) \, +#define Z_IS_504_EQ_504U(...) \, +#define Z_IS_504U_EQ_504U(...) \, +#define Z_IS_505_EQ_505(...) \, +#define Z_IS_505U_EQ_505(...) \, +#define Z_IS_505_EQ_505U(...) \, +#define Z_IS_505U_EQ_505U(...) \, +#define Z_IS_506_EQ_506(...) \, +#define Z_IS_506U_EQ_506(...) \, +#define Z_IS_506_EQ_506U(...) \, +#define Z_IS_506U_EQ_506U(...) \, +#define Z_IS_507_EQ_507(...) \, +#define Z_IS_507U_EQ_507(...) \, +#define Z_IS_507_EQ_507U(...) \, +#define Z_IS_507U_EQ_507U(...) \, +#define Z_IS_508_EQ_508(...) \, +#define Z_IS_508U_EQ_508(...) \, +#define Z_IS_508_EQ_508U(...) \, +#define Z_IS_508U_EQ_508U(...) \, +#define Z_IS_509_EQ_509(...) \, +#define Z_IS_509U_EQ_509(...) \, +#define Z_IS_509_EQ_509U(...) \, +#define Z_IS_509U_EQ_509U(...) \, +#define Z_IS_510_EQ_510(...) \, +#define Z_IS_510U_EQ_510(...) \, +#define Z_IS_510_EQ_510U(...) \, +#define Z_IS_510U_EQ_510U(...) \, +#define Z_IS_511_EQ_511(...) \, +#define Z_IS_511U_EQ_511(...) \, +#define Z_IS_511_EQ_511U(...) \, +#define Z_IS_511U_EQ_511U(...) \, +#define Z_IS_512_EQ_512(...) \, +#define Z_IS_512U_EQ_512(...) \, +#define Z_IS_512_EQ_512U(...) \, +#define Z_IS_512U_EQ_512U(...) \, +#define Z_IS_513_EQ_513(...) \, +#define Z_IS_513U_EQ_513(...) \, +#define Z_IS_513_EQ_513U(...) \, +#define Z_IS_513U_EQ_513U(...) \, +#define Z_IS_514_EQ_514(...) \, +#define Z_IS_514U_EQ_514(...) \, +#define Z_IS_514_EQ_514U(...) \, +#define Z_IS_514U_EQ_514U(...) \, +#define Z_IS_515_EQ_515(...) \, +#define Z_IS_515U_EQ_515(...) \, +#define Z_IS_515_EQ_515U(...) \, +#define Z_IS_515U_EQ_515U(...) \, +#define Z_IS_516_EQ_516(...) \, +#define Z_IS_516U_EQ_516(...) \, +#define Z_IS_516_EQ_516U(...) \, +#define Z_IS_516U_EQ_516U(...) \, +#define Z_IS_517_EQ_517(...) \, +#define Z_IS_517U_EQ_517(...) \, +#define Z_IS_517_EQ_517U(...) \, +#define Z_IS_517U_EQ_517U(...) \, +#define Z_IS_518_EQ_518(...) \, +#define Z_IS_518U_EQ_518(...) \, +#define Z_IS_518_EQ_518U(...) \, +#define Z_IS_518U_EQ_518U(...) \, +#define Z_IS_519_EQ_519(...) \, +#define Z_IS_519U_EQ_519(...) \, +#define Z_IS_519_EQ_519U(...) \, +#define Z_IS_519U_EQ_519U(...) \, +#define Z_IS_520_EQ_520(...) \, +#define Z_IS_520U_EQ_520(...) \, +#define Z_IS_520_EQ_520U(...) \, +#define Z_IS_520U_EQ_520U(...) \, +#define Z_IS_521_EQ_521(...) \, +#define Z_IS_521U_EQ_521(...) \, +#define Z_IS_521_EQ_521U(...) \, +#define Z_IS_521U_EQ_521U(...) \, +#define Z_IS_522_EQ_522(...) \, +#define Z_IS_522U_EQ_522(...) \, +#define Z_IS_522_EQ_522U(...) \, +#define Z_IS_522U_EQ_522U(...) \, +#define Z_IS_523_EQ_523(...) \, +#define Z_IS_523U_EQ_523(...) \, +#define Z_IS_523_EQ_523U(...) \, +#define Z_IS_523U_EQ_523U(...) \, +#define Z_IS_524_EQ_524(...) \, +#define Z_IS_524U_EQ_524(...) \, +#define Z_IS_524_EQ_524U(...) \, +#define Z_IS_524U_EQ_524U(...) \, +#define Z_IS_525_EQ_525(...) \, +#define Z_IS_525U_EQ_525(...) \, +#define Z_IS_525_EQ_525U(...) \, +#define Z_IS_525U_EQ_525U(...) \, +#define Z_IS_526_EQ_526(...) \, +#define Z_IS_526U_EQ_526(...) \, +#define Z_IS_526_EQ_526U(...) \, +#define Z_IS_526U_EQ_526U(...) \, +#define Z_IS_527_EQ_527(...) \, +#define Z_IS_527U_EQ_527(...) \, +#define Z_IS_527_EQ_527U(...) \, +#define Z_IS_527U_EQ_527U(...) \, +#define Z_IS_528_EQ_528(...) \, +#define Z_IS_528U_EQ_528(...) \, +#define Z_IS_528_EQ_528U(...) \, +#define Z_IS_528U_EQ_528U(...) \, +#define Z_IS_529_EQ_529(...) \, +#define Z_IS_529U_EQ_529(...) \, +#define Z_IS_529_EQ_529U(...) \, +#define Z_IS_529U_EQ_529U(...) \, +#define Z_IS_530_EQ_530(...) \, +#define Z_IS_530U_EQ_530(...) \, +#define Z_IS_530_EQ_530U(...) \, +#define Z_IS_530U_EQ_530U(...) \, +#define Z_IS_531_EQ_531(...) \, +#define Z_IS_531U_EQ_531(...) \, +#define Z_IS_531_EQ_531U(...) \, +#define Z_IS_531U_EQ_531U(...) \, +#define Z_IS_532_EQ_532(...) \, +#define Z_IS_532U_EQ_532(...) \, +#define Z_IS_532_EQ_532U(...) \, +#define Z_IS_532U_EQ_532U(...) \, +#define Z_IS_533_EQ_533(...) \, +#define Z_IS_533U_EQ_533(...) \, +#define Z_IS_533_EQ_533U(...) \, +#define Z_IS_533U_EQ_533U(...) \, +#define Z_IS_534_EQ_534(...) \, +#define Z_IS_534U_EQ_534(...) \, +#define Z_IS_534_EQ_534U(...) \, +#define Z_IS_534U_EQ_534U(...) \, +#define Z_IS_535_EQ_535(...) \, +#define Z_IS_535U_EQ_535(...) \, +#define Z_IS_535_EQ_535U(...) \, +#define Z_IS_535U_EQ_535U(...) \, +#define Z_IS_536_EQ_536(...) \, +#define Z_IS_536U_EQ_536(...) \, +#define Z_IS_536_EQ_536U(...) \, +#define Z_IS_536U_EQ_536U(...) \, +#define Z_IS_537_EQ_537(...) \, +#define Z_IS_537U_EQ_537(...) \, +#define Z_IS_537_EQ_537U(...) \, +#define Z_IS_537U_EQ_537U(...) \, +#define Z_IS_538_EQ_538(...) \, +#define Z_IS_538U_EQ_538(...) \, +#define Z_IS_538_EQ_538U(...) \, +#define Z_IS_538U_EQ_538U(...) \, +#define Z_IS_539_EQ_539(...) \, +#define Z_IS_539U_EQ_539(...) \, +#define Z_IS_539_EQ_539U(...) \, +#define Z_IS_539U_EQ_539U(...) \, +#define Z_IS_540_EQ_540(...) \, +#define Z_IS_540U_EQ_540(...) \, +#define Z_IS_540_EQ_540U(...) \, +#define Z_IS_540U_EQ_540U(...) \, +#define Z_IS_541_EQ_541(...) \, +#define Z_IS_541U_EQ_541(...) \, +#define Z_IS_541_EQ_541U(...) \, +#define Z_IS_541U_EQ_541U(...) \, +#define Z_IS_542_EQ_542(...) \, +#define Z_IS_542U_EQ_542(...) \, +#define Z_IS_542_EQ_542U(...) \, +#define Z_IS_542U_EQ_542U(...) \, +#define Z_IS_543_EQ_543(...) \, +#define Z_IS_543U_EQ_543(...) \, +#define Z_IS_543_EQ_543U(...) \, +#define Z_IS_543U_EQ_543U(...) \, +#define Z_IS_544_EQ_544(...) \, +#define Z_IS_544U_EQ_544(...) \, +#define Z_IS_544_EQ_544U(...) \, +#define Z_IS_544U_EQ_544U(...) \, +#define Z_IS_545_EQ_545(...) \, +#define Z_IS_545U_EQ_545(...) \, +#define Z_IS_545_EQ_545U(...) \, +#define Z_IS_545U_EQ_545U(...) \, +#define Z_IS_546_EQ_546(...) \, +#define Z_IS_546U_EQ_546(...) \, +#define Z_IS_546_EQ_546U(...) \, +#define Z_IS_546U_EQ_546U(...) \, +#define Z_IS_547_EQ_547(...) \, +#define Z_IS_547U_EQ_547(...) \, +#define Z_IS_547_EQ_547U(...) \, +#define Z_IS_547U_EQ_547U(...) \, +#define Z_IS_548_EQ_548(...) \, +#define Z_IS_548U_EQ_548(...) \, +#define Z_IS_548_EQ_548U(...) \, +#define Z_IS_548U_EQ_548U(...) \, +#define Z_IS_549_EQ_549(...) \, +#define Z_IS_549U_EQ_549(...) \, +#define Z_IS_549_EQ_549U(...) \, +#define Z_IS_549U_EQ_549U(...) \, +#define Z_IS_550_EQ_550(...) \, +#define Z_IS_550U_EQ_550(...) \, +#define Z_IS_550_EQ_550U(...) \, +#define Z_IS_550U_EQ_550U(...) \, +#define Z_IS_551_EQ_551(...) \, +#define Z_IS_551U_EQ_551(...) \, +#define Z_IS_551_EQ_551U(...) \, +#define Z_IS_551U_EQ_551U(...) \, +#define Z_IS_552_EQ_552(...) \, +#define Z_IS_552U_EQ_552(...) \, +#define Z_IS_552_EQ_552U(...) \, +#define Z_IS_552U_EQ_552U(...) \, +#define Z_IS_553_EQ_553(...) \, +#define Z_IS_553U_EQ_553(...) \, +#define Z_IS_553_EQ_553U(...) \, +#define Z_IS_553U_EQ_553U(...) \, +#define Z_IS_554_EQ_554(...) \, +#define Z_IS_554U_EQ_554(...) \, +#define Z_IS_554_EQ_554U(...) \, +#define Z_IS_554U_EQ_554U(...) \, +#define Z_IS_555_EQ_555(...) \, +#define Z_IS_555U_EQ_555(...) \, +#define Z_IS_555_EQ_555U(...) \, +#define Z_IS_555U_EQ_555U(...) \, +#define Z_IS_556_EQ_556(...) \, +#define Z_IS_556U_EQ_556(...) \, +#define Z_IS_556_EQ_556U(...) \, +#define Z_IS_556U_EQ_556U(...) \, +#define Z_IS_557_EQ_557(...) \, +#define Z_IS_557U_EQ_557(...) \, +#define Z_IS_557_EQ_557U(...) \, +#define Z_IS_557U_EQ_557U(...) \, +#define Z_IS_558_EQ_558(...) \, +#define Z_IS_558U_EQ_558(...) \, +#define Z_IS_558_EQ_558U(...) \, +#define Z_IS_558U_EQ_558U(...) \, +#define Z_IS_559_EQ_559(...) \, +#define Z_IS_559U_EQ_559(...) \, +#define Z_IS_559_EQ_559U(...) \, +#define Z_IS_559U_EQ_559U(...) \, +#define Z_IS_560_EQ_560(...) \, +#define Z_IS_560U_EQ_560(...) \, +#define Z_IS_560_EQ_560U(...) \, +#define Z_IS_560U_EQ_560U(...) \, +#define Z_IS_561_EQ_561(...) \, +#define Z_IS_561U_EQ_561(...) \, +#define Z_IS_561_EQ_561U(...) \, +#define Z_IS_561U_EQ_561U(...) \, +#define Z_IS_562_EQ_562(...) \, +#define Z_IS_562U_EQ_562(...) \, +#define Z_IS_562_EQ_562U(...) \, +#define Z_IS_562U_EQ_562U(...) \, +#define Z_IS_563_EQ_563(...) \, +#define Z_IS_563U_EQ_563(...) \, +#define Z_IS_563_EQ_563U(...) \, +#define Z_IS_563U_EQ_563U(...) \, +#define Z_IS_564_EQ_564(...) \, +#define Z_IS_564U_EQ_564(...) \, +#define Z_IS_564_EQ_564U(...) \, +#define Z_IS_564U_EQ_564U(...) \, +#define Z_IS_565_EQ_565(...) \, +#define Z_IS_565U_EQ_565(...) \, +#define Z_IS_565_EQ_565U(...) \, +#define Z_IS_565U_EQ_565U(...) \, +#define Z_IS_566_EQ_566(...) \, +#define Z_IS_566U_EQ_566(...) \, +#define Z_IS_566_EQ_566U(...) \, +#define Z_IS_566U_EQ_566U(...) \, +#define Z_IS_567_EQ_567(...) \, +#define Z_IS_567U_EQ_567(...) \, +#define Z_IS_567_EQ_567U(...) \, +#define Z_IS_567U_EQ_567U(...) \, +#define Z_IS_568_EQ_568(...) \, +#define Z_IS_568U_EQ_568(...) \, +#define Z_IS_568_EQ_568U(...) \, +#define Z_IS_568U_EQ_568U(...) \, +#define Z_IS_569_EQ_569(...) \, +#define Z_IS_569U_EQ_569(...) \, +#define Z_IS_569_EQ_569U(...) \, +#define Z_IS_569U_EQ_569U(...) \, +#define Z_IS_570_EQ_570(...) \, +#define Z_IS_570U_EQ_570(...) \, +#define Z_IS_570_EQ_570U(...) \, +#define Z_IS_570U_EQ_570U(...) \, +#define Z_IS_571_EQ_571(...) \, +#define Z_IS_571U_EQ_571(...) \, +#define Z_IS_571_EQ_571U(...) \, +#define Z_IS_571U_EQ_571U(...) \, +#define Z_IS_572_EQ_572(...) \, +#define Z_IS_572U_EQ_572(...) \, +#define Z_IS_572_EQ_572U(...) \, +#define Z_IS_572U_EQ_572U(...) \, +#define Z_IS_573_EQ_573(...) \, +#define Z_IS_573U_EQ_573(...) \, +#define Z_IS_573_EQ_573U(...) \, +#define Z_IS_573U_EQ_573U(...) \, +#define Z_IS_574_EQ_574(...) \, +#define Z_IS_574U_EQ_574(...) \, +#define Z_IS_574_EQ_574U(...) \, +#define Z_IS_574U_EQ_574U(...) \, +#define Z_IS_575_EQ_575(...) \, +#define Z_IS_575U_EQ_575(...) \, +#define Z_IS_575_EQ_575U(...) \, +#define Z_IS_575U_EQ_575U(...) \, +#define Z_IS_576_EQ_576(...) \, +#define Z_IS_576U_EQ_576(...) \, +#define Z_IS_576_EQ_576U(...) \, +#define Z_IS_576U_EQ_576U(...) \, +#define Z_IS_577_EQ_577(...) \, +#define Z_IS_577U_EQ_577(...) \, +#define Z_IS_577_EQ_577U(...) \, +#define Z_IS_577U_EQ_577U(...) \, +#define Z_IS_578_EQ_578(...) \, +#define Z_IS_578U_EQ_578(...) \, +#define Z_IS_578_EQ_578U(...) \, +#define Z_IS_578U_EQ_578U(...) \, +#define Z_IS_579_EQ_579(...) \, +#define Z_IS_579U_EQ_579(...) \, +#define Z_IS_579_EQ_579U(...) \, +#define Z_IS_579U_EQ_579U(...) \, +#define Z_IS_580_EQ_580(...) \, +#define Z_IS_580U_EQ_580(...) \, +#define Z_IS_580_EQ_580U(...) \, +#define Z_IS_580U_EQ_580U(...) \, +#define Z_IS_581_EQ_581(...) \, +#define Z_IS_581U_EQ_581(...) \, +#define Z_IS_581_EQ_581U(...) \, +#define Z_IS_581U_EQ_581U(...) \, +#define Z_IS_582_EQ_582(...) \, +#define Z_IS_582U_EQ_582(...) \, +#define Z_IS_582_EQ_582U(...) \, +#define Z_IS_582U_EQ_582U(...) \, +#define Z_IS_583_EQ_583(...) \, +#define Z_IS_583U_EQ_583(...) \, +#define Z_IS_583_EQ_583U(...) \, +#define Z_IS_583U_EQ_583U(...) \, +#define Z_IS_584_EQ_584(...) \, +#define Z_IS_584U_EQ_584(...) \, +#define Z_IS_584_EQ_584U(...) \, +#define Z_IS_584U_EQ_584U(...) \, +#define Z_IS_585_EQ_585(...) \, +#define Z_IS_585U_EQ_585(...) \, +#define Z_IS_585_EQ_585U(...) \, +#define Z_IS_585U_EQ_585U(...) \, +#define Z_IS_586_EQ_586(...) \, +#define Z_IS_586U_EQ_586(...) \, +#define Z_IS_586_EQ_586U(...) \, +#define Z_IS_586U_EQ_586U(...) \, +#define Z_IS_587_EQ_587(...) \, +#define Z_IS_587U_EQ_587(...) \, +#define Z_IS_587_EQ_587U(...) \, +#define Z_IS_587U_EQ_587U(...) \, +#define Z_IS_588_EQ_588(...) \, +#define Z_IS_588U_EQ_588(...) \, +#define Z_IS_588_EQ_588U(...) \, +#define Z_IS_588U_EQ_588U(...) \, +#define Z_IS_589_EQ_589(...) \, +#define Z_IS_589U_EQ_589(...) \, +#define Z_IS_589_EQ_589U(...) \, +#define Z_IS_589U_EQ_589U(...) \, +#define Z_IS_590_EQ_590(...) \, +#define Z_IS_590U_EQ_590(...) \, +#define Z_IS_590_EQ_590U(...) \, +#define Z_IS_590U_EQ_590U(...) \, +#define Z_IS_591_EQ_591(...) \, +#define Z_IS_591U_EQ_591(...) \, +#define Z_IS_591_EQ_591U(...) \, +#define Z_IS_591U_EQ_591U(...) \, +#define Z_IS_592_EQ_592(...) \, +#define Z_IS_592U_EQ_592(...) \, +#define Z_IS_592_EQ_592U(...) \, +#define Z_IS_592U_EQ_592U(...) \, +#define Z_IS_593_EQ_593(...) \, +#define Z_IS_593U_EQ_593(...) \, +#define Z_IS_593_EQ_593U(...) \, +#define Z_IS_593U_EQ_593U(...) \, +#define Z_IS_594_EQ_594(...) \, +#define Z_IS_594U_EQ_594(...) \, +#define Z_IS_594_EQ_594U(...) \, +#define Z_IS_594U_EQ_594U(...) \, +#define Z_IS_595_EQ_595(...) \, +#define Z_IS_595U_EQ_595(...) \, +#define Z_IS_595_EQ_595U(...) \, +#define Z_IS_595U_EQ_595U(...) \, +#define Z_IS_596_EQ_596(...) \, +#define Z_IS_596U_EQ_596(...) \, +#define Z_IS_596_EQ_596U(...) \, +#define Z_IS_596U_EQ_596U(...) \, +#define Z_IS_597_EQ_597(...) \, +#define Z_IS_597U_EQ_597(...) \, +#define Z_IS_597_EQ_597U(...) \, +#define Z_IS_597U_EQ_597U(...) \, +#define Z_IS_598_EQ_598(...) \, +#define Z_IS_598U_EQ_598(...) \, +#define Z_IS_598_EQ_598U(...) \, +#define Z_IS_598U_EQ_598U(...) \, +#define Z_IS_599_EQ_599(...) \, +#define Z_IS_599U_EQ_599(...) \, +#define Z_IS_599_EQ_599U(...) \, +#define Z_IS_599U_EQ_599U(...) \, +#define Z_IS_600_EQ_600(...) \, +#define Z_IS_600U_EQ_600(...) \, +#define Z_IS_600_EQ_600U(...) \, +#define Z_IS_600U_EQ_600U(...) \, +#define Z_IS_601_EQ_601(...) \, +#define Z_IS_601U_EQ_601(...) \, +#define Z_IS_601_EQ_601U(...) \, +#define Z_IS_601U_EQ_601U(...) \, +#define Z_IS_602_EQ_602(...) \, +#define Z_IS_602U_EQ_602(...) \, +#define Z_IS_602_EQ_602U(...) \, +#define Z_IS_602U_EQ_602U(...) \, +#define Z_IS_603_EQ_603(...) \, +#define Z_IS_603U_EQ_603(...) \, +#define Z_IS_603_EQ_603U(...) \, +#define Z_IS_603U_EQ_603U(...) \, +#define Z_IS_604_EQ_604(...) \, +#define Z_IS_604U_EQ_604(...) \, +#define Z_IS_604_EQ_604U(...) \, +#define Z_IS_604U_EQ_604U(...) \, +#define Z_IS_605_EQ_605(...) \, +#define Z_IS_605U_EQ_605(...) \, +#define Z_IS_605_EQ_605U(...) \, +#define Z_IS_605U_EQ_605U(...) \, +#define Z_IS_606_EQ_606(...) \, +#define Z_IS_606U_EQ_606(...) \, +#define Z_IS_606_EQ_606U(...) \, +#define Z_IS_606U_EQ_606U(...) \, +#define Z_IS_607_EQ_607(...) \, +#define Z_IS_607U_EQ_607(...) \, +#define Z_IS_607_EQ_607U(...) \, +#define Z_IS_607U_EQ_607U(...) \, +#define Z_IS_608_EQ_608(...) \, +#define Z_IS_608U_EQ_608(...) \, +#define Z_IS_608_EQ_608U(...) \, +#define Z_IS_608U_EQ_608U(...) \, +#define Z_IS_609_EQ_609(...) \, +#define Z_IS_609U_EQ_609(...) \, +#define Z_IS_609_EQ_609U(...) \, +#define Z_IS_609U_EQ_609U(...) \, +#define Z_IS_610_EQ_610(...) \, +#define Z_IS_610U_EQ_610(...) \, +#define Z_IS_610_EQ_610U(...) \, +#define Z_IS_610U_EQ_610U(...) \, +#define Z_IS_611_EQ_611(...) \, +#define Z_IS_611U_EQ_611(...) \, +#define Z_IS_611_EQ_611U(...) \, +#define Z_IS_611U_EQ_611U(...) \, +#define Z_IS_612_EQ_612(...) \, +#define Z_IS_612U_EQ_612(...) \, +#define Z_IS_612_EQ_612U(...) \, +#define Z_IS_612U_EQ_612U(...) \, +#define Z_IS_613_EQ_613(...) \, +#define Z_IS_613U_EQ_613(...) \, +#define Z_IS_613_EQ_613U(...) \, +#define Z_IS_613U_EQ_613U(...) \, +#define Z_IS_614_EQ_614(...) \, +#define Z_IS_614U_EQ_614(...) \, +#define Z_IS_614_EQ_614U(...) \, +#define Z_IS_614U_EQ_614U(...) \, +#define Z_IS_615_EQ_615(...) \, +#define Z_IS_615U_EQ_615(...) \, +#define Z_IS_615_EQ_615U(...) \, +#define Z_IS_615U_EQ_615U(...) \, +#define Z_IS_616_EQ_616(...) \, +#define Z_IS_616U_EQ_616(...) \, +#define Z_IS_616_EQ_616U(...) \, +#define Z_IS_616U_EQ_616U(...) \, +#define Z_IS_617_EQ_617(...) \, +#define Z_IS_617U_EQ_617(...) \, +#define Z_IS_617_EQ_617U(...) \, +#define Z_IS_617U_EQ_617U(...) \, +#define Z_IS_618_EQ_618(...) \, +#define Z_IS_618U_EQ_618(...) \, +#define Z_IS_618_EQ_618U(...) \, +#define Z_IS_618U_EQ_618U(...) \, +#define Z_IS_619_EQ_619(...) \, +#define Z_IS_619U_EQ_619(...) \, +#define Z_IS_619_EQ_619U(...) \, +#define Z_IS_619U_EQ_619U(...) \, +#define Z_IS_620_EQ_620(...) \, +#define Z_IS_620U_EQ_620(...) \, +#define Z_IS_620_EQ_620U(...) \, +#define Z_IS_620U_EQ_620U(...) \, +#define Z_IS_621_EQ_621(...) \, +#define Z_IS_621U_EQ_621(...) \, +#define Z_IS_621_EQ_621U(...) \, +#define Z_IS_621U_EQ_621U(...) \, +#define Z_IS_622_EQ_622(...) \, +#define Z_IS_622U_EQ_622(...) \, +#define Z_IS_622_EQ_622U(...) \, +#define Z_IS_622U_EQ_622U(...) \, +#define Z_IS_623_EQ_623(...) \, +#define Z_IS_623U_EQ_623(...) \, +#define Z_IS_623_EQ_623U(...) \, +#define Z_IS_623U_EQ_623U(...) \, +#define Z_IS_624_EQ_624(...) \, +#define Z_IS_624U_EQ_624(...) \, +#define Z_IS_624_EQ_624U(...) \, +#define Z_IS_624U_EQ_624U(...) \, +#define Z_IS_625_EQ_625(...) \, +#define Z_IS_625U_EQ_625(...) \, +#define Z_IS_625_EQ_625U(...) \, +#define Z_IS_625U_EQ_625U(...) \, +#define Z_IS_626_EQ_626(...) \, +#define Z_IS_626U_EQ_626(...) \, +#define Z_IS_626_EQ_626U(...) \, +#define Z_IS_626U_EQ_626U(...) \, +#define Z_IS_627_EQ_627(...) \, +#define Z_IS_627U_EQ_627(...) \, +#define Z_IS_627_EQ_627U(...) \, +#define Z_IS_627U_EQ_627U(...) \, +#define Z_IS_628_EQ_628(...) \, +#define Z_IS_628U_EQ_628(...) \, +#define Z_IS_628_EQ_628U(...) \, +#define Z_IS_628U_EQ_628U(...) \, +#define Z_IS_629_EQ_629(...) \, +#define Z_IS_629U_EQ_629(...) \, +#define Z_IS_629_EQ_629U(...) \, +#define Z_IS_629U_EQ_629U(...) \, +#define Z_IS_630_EQ_630(...) \, +#define Z_IS_630U_EQ_630(...) \, +#define Z_IS_630_EQ_630U(...) \, +#define Z_IS_630U_EQ_630U(...) \, +#define Z_IS_631_EQ_631(...) \, +#define Z_IS_631U_EQ_631(...) \, +#define Z_IS_631_EQ_631U(...) \, +#define Z_IS_631U_EQ_631U(...) \, +#define Z_IS_632_EQ_632(...) \, +#define Z_IS_632U_EQ_632(...) \, +#define Z_IS_632_EQ_632U(...) \, +#define Z_IS_632U_EQ_632U(...) \, +#define Z_IS_633_EQ_633(...) \, +#define Z_IS_633U_EQ_633(...) \, +#define Z_IS_633_EQ_633U(...) \, +#define Z_IS_633U_EQ_633U(...) \, +#define Z_IS_634_EQ_634(...) \, +#define Z_IS_634U_EQ_634(...) \, +#define Z_IS_634_EQ_634U(...) \, +#define Z_IS_634U_EQ_634U(...) \, +#define Z_IS_635_EQ_635(...) \, +#define Z_IS_635U_EQ_635(...) \, +#define Z_IS_635_EQ_635U(...) \, +#define Z_IS_635U_EQ_635U(...) \, +#define Z_IS_636_EQ_636(...) \, +#define Z_IS_636U_EQ_636(...) \, +#define Z_IS_636_EQ_636U(...) \, +#define Z_IS_636U_EQ_636U(...) \, +#define Z_IS_637_EQ_637(...) \, +#define Z_IS_637U_EQ_637(...) \, +#define Z_IS_637_EQ_637U(...) \, +#define Z_IS_637U_EQ_637U(...) \, +#define Z_IS_638_EQ_638(...) \, +#define Z_IS_638U_EQ_638(...) \, +#define Z_IS_638_EQ_638U(...) \, +#define Z_IS_638U_EQ_638U(...) \, +#define Z_IS_639_EQ_639(...) \, +#define Z_IS_639U_EQ_639(...) \, +#define Z_IS_639_EQ_639U(...) \, +#define Z_IS_639U_EQ_639U(...) \, +#define Z_IS_640_EQ_640(...) \, +#define Z_IS_640U_EQ_640(...) \, +#define Z_IS_640_EQ_640U(...) \, +#define Z_IS_640U_EQ_640U(...) \, +#define Z_IS_641_EQ_641(...) \, +#define Z_IS_641U_EQ_641(...) \, +#define Z_IS_641_EQ_641U(...) \, +#define Z_IS_641U_EQ_641U(...) \, +#define Z_IS_642_EQ_642(...) \, +#define Z_IS_642U_EQ_642(...) \, +#define Z_IS_642_EQ_642U(...) \, +#define Z_IS_642U_EQ_642U(...) \, +#define Z_IS_643_EQ_643(...) \, +#define Z_IS_643U_EQ_643(...) \, +#define Z_IS_643_EQ_643U(...) \, +#define Z_IS_643U_EQ_643U(...) \, +#define Z_IS_644_EQ_644(...) \, +#define Z_IS_644U_EQ_644(...) \, +#define Z_IS_644_EQ_644U(...) \, +#define Z_IS_644U_EQ_644U(...) \, +#define Z_IS_645_EQ_645(...) \, +#define Z_IS_645U_EQ_645(...) \, +#define Z_IS_645_EQ_645U(...) \, +#define Z_IS_645U_EQ_645U(...) \, +#define Z_IS_646_EQ_646(...) \, +#define Z_IS_646U_EQ_646(...) \, +#define Z_IS_646_EQ_646U(...) \, +#define Z_IS_646U_EQ_646U(...) \, +#define Z_IS_647_EQ_647(...) \, +#define Z_IS_647U_EQ_647(...) \, +#define Z_IS_647_EQ_647U(...) \, +#define Z_IS_647U_EQ_647U(...) \, +#define Z_IS_648_EQ_648(...) \, +#define Z_IS_648U_EQ_648(...) \, +#define Z_IS_648_EQ_648U(...) \, +#define Z_IS_648U_EQ_648U(...) \, +#define Z_IS_649_EQ_649(...) \, +#define Z_IS_649U_EQ_649(...) \, +#define Z_IS_649_EQ_649U(...) \, +#define Z_IS_649U_EQ_649U(...) \, +#define Z_IS_650_EQ_650(...) \, +#define Z_IS_650U_EQ_650(...) \, +#define Z_IS_650_EQ_650U(...) \, +#define Z_IS_650U_EQ_650U(...) \, +#define Z_IS_651_EQ_651(...) \, +#define Z_IS_651U_EQ_651(...) \, +#define Z_IS_651_EQ_651U(...) \, +#define Z_IS_651U_EQ_651U(...) \, +#define Z_IS_652_EQ_652(...) \, +#define Z_IS_652U_EQ_652(...) \, +#define Z_IS_652_EQ_652U(...) \, +#define Z_IS_652U_EQ_652U(...) \, +#define Z_IS_653_EQ_653(...) \, +#define Z_IS_653U_EQ_653(...) \, +#define Z_IS_653_EQ_653U(...) \, +#define Z_IS_653U_EQ_653U(...) \, +#define Z_IS_654_EQ_654(...) \, +#define Z_IS_654U_EQ_654(...) \, +#define Z_IS_654_EQ_654U(...) \, +#define Z_IS_654U_EQ_654U(...) \, +#define Z_IS_655_EQ_655(...) \, +#define Z_IS_655U_EQ_655(...) \, +#define Z_IS_655_EQ_655U(...) \, +#define Z_IS_655U_EQ_655U(...) \, +#define Z_IS_656_EQ_656(...) \, +#define Z_IS_656U_EQ_656(...) \, +#define Z_IS_656_EQ_656U(...) \, +#define Z_IS_656U_EQ_656U(...) \, +#define Z_IS_657_EQ_657(...) \, +#define Z_IS_657U_EQ_657(...) \, +#define Z_IS_657_EQ_657U(...) \, +#define Z_IS_657U_EQ_657U(...) \, +#define Z_IS_658_EQ_658(...) \, +#define Z_IS_658U_EQ_658(...) \, +#define Z_IS_658_EQ_658U(...) \, +#define Z_IS_658U_EQ_658U(...) \, +#define Z_IS_659_EQ_659(...) \, +#define Z_IS_659U_EQ_659(...) \, +#define Z_IS_659_EQ_659U(...) \, +#define Z_IS_659U_EQ_659U(...) \, +#define Z_IS_660_EQ_660(...) \, +#define Z_IS_660U_EQ_660(...) \, +#define Z_IS_660_EQ_660U(...) \, +#define Z_IS_660U_EQ_660U(...) \, +#define Z_IS_661_EQ_661(...) \, +#define Z_IS_661U_EQ_661(...) \, +#define Z_IS_661_EQ_661U(...) \, +#define Z_IS_661U_EQ_661U(...) \, +#define Z_IS_662_EQ_662(...) \, +#define Z_IS_662U_EQ_662(...) \, +#define Z_IS_662_EQ_662U(...) \, +#define Z_IS_662U_EQ_662U(...) \, +#define Z_IS_663_EQ_663(...) \, +#define Z_IS_663U_EQ_663(...) \, +#define Z_IS_663_EQ_663U(...) \, +#define Z_IS_663U_EQ_663U(...) \, +#define Z_IS_664_EQ_664(...) \, +#define Z_IS_664U_EQ_664(...) \, +#define Z_IS_664_EQ_664U(...) \, +#define Z_IS_664U_EQ_664U(...) \, +#define Z_IS_665_EQ_665(...) \, +#define Z_IS_665U_EQ_665(...) \, +#define Z_IS_665_EQ_665U(...) \, +#define Z_IS_665U_EQ_665U(...) \, +#define Z_IS_666_EQ_666(...) \, +#define Z_IS_666U_EQ_666(...) \, +#define Z_IS_666_EQ_666U(...) \, +#define Z_IS_666U_EQ_666U(...) \, +#define Z_IS_667_EQ_667(...) \, +#define Z_IS_667U_EQ_667(...) \, +#define Z_IS_667_EQ_667U(...) \, +#define Z_IS_667U_EQ_667U(...) \, +#define Z_IS_668_EQ_668(...) \, +#define Z_IS_668U_EQ_668(...) \, +#define Z_IS_668_EQ_668U(...) \, +#define Z_IS_668U_EQ_668U(...) \, +#define Z_IS_669_EQ_669(...) \, +#define Z_IS_669U_EQ_669(...) \, +#define Z_IS_669_EQ_669U(...) \, +#define Z_IS_669U_EQ_669U(...) \, +#define Z_IS_670_EQ_670(...) \, +#define Z_IS_670U_EQ_670(...) \, +#define Z_IS_670_EQ_670U(...) \, +#define Z_IS_670U_EQ_670U(...) \, +#define Z_IS_671_EQ_671(...) \, +#define Z_IS_671U_EQ_671(...) \, +#define Z_IS_671_EQ_671U(...) \, +#define Z_IS_671U_EQ_671U(...) \, +#define Z_IS_672_EQ_672(...) \, +#define Z_IS_672U_EQ_672(...) \, +#define Z_IS_672_EQ_672U(...) \, +#define Z_IS_672U_EQ_672U(...) \, +#define Z_IS_673_EQ_673(...) \, +#define Z_IS_673U_EQ_673(...) \, +#define Z_IS_673_EQ_673U(...) \, +#define Z_IS_673U_EQ_673U(...) \, +#define Z_IS_674_EQ_674(...) \, +#define Z_IS_674U_EQ_674(...) \, +#define Z_IS_674_EQ_674U(...) \, +#define Z_IS_674U_EQ_674U(...) \, +#define Z_IS_675_EQ_675(...) \, +#define Z_IS_675U_EQ_675(...) \, +#define Z_IS_675_EQ_675U(...) \, +#define Z_IS_675U_EQ_675U(...) \, +#define Z_IS_676_EQ_676(...) \, +#define Z_IS_676U_EQ_676(...) \, +#define Z_IS_676_EQ_676U(...) \, +#define Z_IS_676U_EQ_676U(...) \, +#define Z_IS_677_EQ_677(...) \, +#define Z_IS_677U_EQ_677(...) \, +#define Z_IS_677_EQ_677U(...) \, +#define Z_IS_677U_EQ_677U(...) \, +#define Z_IS_678_EQ_678(...) \, +#define Z_IS_678U_EQ_678(...) \, +#define Z_IS_678_EQ_678U(...) \, +#define Z_IS_678U_EQ_678U(...) \, +#define Z_IS_679_EQ_679(...) \, +#define Z_IS_679U_EQ_679(...) \, +#define Z_IS_679_EQ_679U(...) \, +#define Z_IS_679U_EQ_679U(...) \, +#define Z_IS_680_EQ_680(...) \, +#define Z_IS_680U_EQ_680(...) \, +#define Z_IS_680_EQ_680U(...) \, +#define Z_IS_680U_EQ_680U(...) \, +#define Z_IS_681_EQ_681(...) \, +#define Z_IS_681U_EQ_681(...) \, +#define Z_IS_681_EQ_681U(...) \, +#define Z_IS_681U_EQ_681U(...) \, +#define Z_IS_682_EQ_682(...) \, +#define Z_IS_682U_EQ_682(...) \, +#define Z_IS_682_EQ_682U(...) \, +#define Z_IS_682U_EQ_682U(...) \, +#define Z_IS_683_EQ_683(...) \, +#define Z_IS_683U_EQ_683(...) \, +#define Z_IS_683_EQ_683U(...) \, +#define Z_IS_683U_EQ_683U(...) \, +#define Z_IS_684_EQ_684(...) \, +#define Z_IS_684U_EQ_684(...) \, +#define Z_IS_684_EQ_684U(...) \, +#define Z_IS_684U_EQ_684U(...) \, +#define Z_IS_685_EQ_685(...) \, +#define Z_IS_685U_EQ_685(...) \, +#define Z_IS_685_EQ_685U(...) \, +#define Z_IS_685U_EQ_685U(...) \, +#define Z_IS_686_EQ_686(...) \, +#define Z_IS_686U_EQ_686(...) \, +#define Z_IS_686_EQ_686U(...) \, +#define Z_IS_686U_EQ_686U(...) \, +#define Z_IS_687_EQ_687(...) \, +#define Z_IS_687U_EQ_687(...) \, +#define Z_IS_687_EQ_687U(...) \, +#define Z_IS_687U_EQ_687U(...) \, +#define Z_IS_688_EQ_688(...) \, +#define Z_IS_688U_EQ_688(...) \, +#define Z_IS_688_EQ_688U(...) \, +#define Z_IS_688U_EQ_688U(...) \, +#define Z_IS_689_EQ_689(...) \, +#define Z_IS_689U_EQ_689(...) \, +#define Z_IS_689_EQ_689U(...) \, +#define Z_IS_689U_EQ_689U(...) \, +#define Z_IS_690_EQ_690(...) \, +#define Z_IS_690U_EQ_690(...) \, +#define Z_IS_690_EQ_690U(...) \, +#define Z_IS_690U_EQ_690U(...) \, +#define Z_IS_691_EQ_691(...) \, +#define Z_IS_691U_EQ_691(...) \, +#define Z_IS_691_EQ_691U(...) \, +#define Z_IS_691U_EQ_691U(...) \, +#define Z_IS_692_EQ_692(...) \, +#define Z_IS_692U_EQ_692(...) \, +#define Z_IS_692_EQ_692U(...) \, +#define Z_IS_692U_EQ_692U(...) \, +#define Z_IS_693_EQ_693(...) \, +#define Z_IS_693U_EQ_693(...) \, +#define Z_IS_693_EQ_693U(...) \, +#define Z_IS_693U_EQ_693U(...) \, +#define Z_IS_694_EQ_694(...) \, +#define Z_IS_694U_EQ_694(...) \, +#define Z_IS_694_EQ_694U(...) \, +#define Z_IS_694U_EQ_694U(...) \, +#define Z_IS_695_EQ_695(...) \, +#define Z_IS_695U_EQ_695(...) \, +#define Z_IS_695_EQ_695U(...) \, +#define Z_IS_695U_EQ_695U(...) \, +#define Z_IS_696_EQ_696(...) \, +#define Z_IS_696U_EQ_696(...) \, +#define Z_IS_696_EQ_696U(...) \, +#define Z_IS_696U_EQ_696U(...) \, +#define Z_IS_697_EQ_697(...) \, +#define Z_IS_697U_EQ_697(...) \, +#define Z_IS_697_EQ_697U(...) \, +#define Z_IS_697U_EQ_697U(...) \, +#define Z_IS_698_EQ_698(...) \, +#define Z_IS_698U_EQ_698(...) \, +#define Z_IS_698_EQ_698U(...) \, +#define Z_IS_698U_EQ_698U(...) \, +#define Z_IS_699_EQ_699(...) \, +#define Z_IS_699U_EQ_699(...) \, +#define Z_IS_699_EQ_699U(...) \, +#define Z_IS_699U_EQ_699U(...) \, +#define Z_IS_700_EQ_700(...) \, +#define Z_IS_700U_EQ_700(...) \, +#define Z_IS_700_EQ_700U(...) \, +#define Z_IS_700U_EQ_700U(...) \, +#define Z_IS_701_EQ_701(...) \, +#define Z_IS_701U_EQ_701(...) \, +#define Z_IS_701_EQ_701U(...) \, +#define Z_IS_701U_EQ_701U(...) \, +#define Z_IS_702_EQ_702(...) \, +#define Z_IS_702U_EQ_702(...) \, +#define Z_IS_702_EQ_702U(...) \, +#define Z_IS_702U_EQ_702U(...) \, +#define Z_IS_703_EQ_703(...) \, +#define Z_IS_703U_EQ_703(...) \, +#define Z_IS_703_EQ_703U(...) \, +#define Z_IS_703U_EQ_703U(...) \, +#define Z_IS_704_EQ_704(...) \, +#define Z_IS_704U_EQ_704(...) \, +#define Z_IS_704_EQ_704U(...) \, +#define Z_IS_704U_EQ_704U(...) \, +#define Z_IS_705_EQ_705(...) \, +#define Z_IS_705U_EQ_705(...) \, +#define Z_IS_705_EQ_705U(...) \, +#define Z_IS_705U_EQ_705U(...) \, +#define Z_IS_706_EQ_706(...) \, +#define Z_IS_706U_EQ_706(...) \, +#define Z_IS_706_EQ_706U(...) \, +#define Z_IS_706U_EQ_706U(...) \, +#define Z_IS_707_EQ_707(...) \, +#define Z_IS_707U_EQ_707(...) \, +#define Z_IS_707_EQ_707U(...) \, +#define Z_IS_707U_EQ_707U(...) \, +#define Z_IS_708_EQ_708(...) \, +#define Z_IS_708U_EQ_708(...) \, +#define Z_IS_708_EQ_708U(...) \, +#define Z_IS_708U_EQ_708U(...) \, +#define Z_IS_709_EQ_709(...) \, +#define Z_IS_709U_EQ_709(...) \, +#define Z_IS_709_EQ_709U(...) \, +#define Z_IS_709U_EQ_709U(...) \, +#define Z_IS_710_EQ_710(...) \, +#define Z_IS_710U_EQ_710(...) \, +#define Z_IS_710_EQ_710U(...) \, +#define Z_IS_710U_EQ_710U(...) \, +#define Z_IS_711_EQ_711(...) \, +#define Z_IS_711U_EQ_711(...) \, +#define Z_IS_711_EQ_711U(...) \, +#define Z_IS_711U_EQ_711U(...) \, +#define Z_IS_712_EQ_712(...) \, +#define Z_IS_712U_EQ_712(...) \, +#define Z_IS_712_EQ_712U(...) \, +#define Z_IS_712U_EQ_712U(...) \, +#define Z_IS_713_EQ_713(...) \, +#define Z_IS_713U_EQ_713(...) \, +#define Z_IS_713_EQ_713U(...) \, +#define Z_IS_713U_EQ_713U(...) \, +#define Z_IS_714_EQ_714(...) \, +#define Z_IS_714U_EQ_714(...) \, +#define Z_IS_714_EQ_714U(...) \, +#define Z_IS_714U_EQ_714U(...) \, +#define Z_IS_715_EQ_715(...) \, +#define Z_IS_715U_EQ_715(...) \, +#define Z_IS_715_EQ_715U(...) \, +#define Z_IS_715U_EQ_715U(...) \, +#define Z_IS_716_EQ_716(...) \, +#define Z_IS_716U_EQ_716(...) \, +#define Z_IS_716_EQ_716U(...) \, +#define Z_IS_716U_EQ_716U(...) \, +#define Z_IS_717_EQ_717(...) \, +#define Z_IS_717U_EQ_717(...) \, +#define Z_IS_717_EQ_717U(...) \, +#define Z_IS_717U_EQ_717U(...) \, +#define Z_IS_718_EQ_718(...) \, +#define Z_IS_718U_EQ_718(...) \, +#define Z_IS_718_EQ_718U(...) \, +#define Z_IS_718U_EQ_718U(...) \, +#define Z_IS_719_EQ_719(...) \, +#define Z_IS_719U_EQ_719(...) \, +#define Z_IS_719_EQ_719U(...) \, +#define Z_IS_719U_EQ_719U(...) \, +#define Z_IS_720_EQ_720(...) \, +#define Z_IS_720U_EQ_720(...) \, +#define Z_IS_720_EQ_720U(...) \, +#define Z_IS_720U_EQ_720U(...) \, +#define Z_IS_721_EQ_721(...) \, +#define Z_IS_721U_EQ_721(...) \, +#define Z_IS_721_EQ_721U(...) \, +#define Z_IS_721U_EQ_721U(...) \, +#define Z_IS_722_EQ_722(...) \, +#define Z_IS_722U_EQ_722(...) \, +#define Z_IS_722_EQ_722U(...) \, +#define Z_IS_722U_EQ_722U(...) \, +#define Z_IS_723_EQ_723(...) \, +#define Z_IS_723U_EQ_723(...) \, +#define Z_IS_723_EQ_723U(...) \, +#define Z_IS_723U_EQ_723U(...) \, +#define Z_IS_724_EQ_724(...) \, +#define Z_IS_724U_EQ_724(...) \, +#define Z_IS_724_EQ_724U(...) \, +#define Z_IS_724U_EQ_724U(...) \, +#define Z_IS_725_EQ_725(...) \, +#define Z_IS_725U_EQ_725(...) \, +#define Z_IS_725_EQ_725U(...) \, +#define Z_IS_725U_EQ_725U(...) \, +#define Z_IS_726_EQ_726(...) \, +#define Z_IS_726U_EQ_726(...) \, +#define Z_IS_726_EQ_726U(...) \, +#define Z_IS_726U_EQ_726U(...) \, +#define Z_IS_727_EQ_727(...) \, +#define Z_IS_727U_EQ_727(...) \, +#define Z_IS_727_EQ_727U(...) \, +#define Z_IS_727U_EQ_727U(...) \, +#define Z_IS_728_EQ_728(...) \, +#define Z_IS_728U_EQ_728(...) \, +#define Z_IS_728_EQ_728U(...) \, +#define Z_IS_728U_EQ_728U(...) \, +#define Z_IS_729_EQ_729(...) \, +#define Z_IS_729U_EQ_729(...) \, +#define Z_IS_729_EQ_729U(...) \, +#define Z_IS_729U_EQ_729U(...) \, +#define Z_IS_730_EQ_730(...) \, +#define Z_IS_730U_EQ_730(...) \, +#define Z_IS_730_EQ_730U(...) \, +#define Z_IS_730U_EQ_730U(...) \, +#define Z_IS_731_EQ_731(...) \, +#define Z_IS_731U_EQ_731(...) \, +#define Z_IS_731_EQ_731U(...) \, +#define Z_IS_731U_EQ_731U(...) \, +#define Z_IS_732_EQ_732(...) \, +#define Z_IS_732U_EQ_732(...) \, +#define Z_IS_732_EQ_732U(...) \, +#define Z_IS_732U_EQ_732U(...) \, +#define Z_IS_733_EQ_733(...) \, +#define Z_IS_733U_EQ_733(...) \, +#define Z_IS_733_EQ_733U(...) \, +#define Z_IS_733U_EQ_733U(...) \, +#define Z_IS_734_EQ_734(...) \, +#define Z_IS_734U_EQ_734(...) \, +#define Z_IS_734_EQ_734U(...) \, +#define Z_IS_734U_EQ_734U(...) \, +#define Z_IS_735_EQ_735(...) \, +#define Z_IS_735U_EQ_735(...) \, +#define Z_IS_735_EQ_735U(...) \, +#define Z_IS_735U_EQ_735U(...) \, +#define Z_IS_736_EQ_736(...) \, +#define Z_IS_736U_EQ_736(...) \, +#define Z_IS_736_EQ_736U(...) \, +#define Z_IS_736U_EQ_736U(...) \, +#define Z_IS_737_EQ_737(...) \, +#define Z_IS_737U_EQ_737(...) \, +#define Z_IS_737_EQ_737U(...) \, +#define Z_IS_737U_EQ_737U(...) \, +#define Z_IS_738_EQ_738(...) \, +#define Z_IS_738U_EQ_738(...) \, +#define Z_IS_738_EQ_738U(...) \, +#define Z_IS_738U_EQ_738U(...) \, +#define Z_IS_739_EQ_739(...) \, +#define Z_IS_739U_EQ_739(...) \, +#define Z_IS_739_EQ_739U(...) \, +#define Z_IS_739U_EQ_739U(...) \, +#define Z_IS_740_EQ_740(...) \, +#define Z_IS_740U_EQ_740(...) \, +#define Z_IS_740_EQ_740U(...) \, +#define Z_IS_740U_EQ_740U(...) \, +#define Z_IS_741_EQ_741(...) \, +#define Z_IS_741U_EQ_741(...) \, +#define Z_IS_741_EQ_741U(...) \, +#define Z_IS_741U_EQ_741U(...) \, +#define Z_IS_742_EQ_742(...) \, +#define Z_IS_742U_EQ_742(...) \, +#define Z_IS_742_EQ_742U(...) \, +#define Z_IS_742U_EQ_742U(...) \, +#define Z_IS_743_EQ_743(...) \, +#define Z_IS_743U_EQ_743(...) \, +#define Z_IS_743_EQ_743U(...) \, +#define Z_IS_743U_EQ_743U(...) \, +#define Z_IS_744_EQ_744(...) \, +#define Z_IS_744U_EQ_744(...) \, +#define Z_IS_744_EQ_744U(...) \, +#define Z_IS_744U_EQ_744U(...) \, +#define Z_IS_745_EQ_745(...) \, +#define Z_IS_745U_EQ_745(...) \, +#define Z_IS_745_EQ_745U(...) \, +#define Z_IS_745U_EQ_745U(...) \, +#define Z_IS_746_EQ_746(...) \, +#define Z_IS_746U_EQ_746(...) \, +#define Z_IS_746_EQ_746U(...) \, +#define Z_IS_746U_EQ_746U(...) \, +#define Z_IS_747_EQ_747(...) \, +#define Z_IS_747U_EQ_747(...) \, +#define Z_IS_747_EQ_747U(...) \, +#define Z_IS_747U_EQ_747U(...) \, +#define Z_IS_748_EQ_748(...) \, +#define Z_IS_748U_EQ_748(...) \, +#define Z_IS_748_EQ_748U(...) \, +#define Z_IS_748U_EQ_748U(...) \, +#define Z_IS_749_EQ_749(...) \, +#define Z_IS_749U_EQ_749(...) \, +#define Z_IS_749_EQ_749U(...) \, +#define Z_IS_749U_EQ_749U(...) \, +#define Z_IS_750_EQ_750(...) \, +#define Z_IS_750U_EQ_750(...) \, +#define Z_IS_750_EQ_750U(...) \, +#define Z_IS_750U_EQ_750U(...) \, +#define Z_IS_751_EQ_751(...) \, +#define Z_IS_751U_EQ_751(...) \, +#define Z_IS_751_EQ_751U(...) \, +#define Z_IS_751U_EQ_751U(...) \, +#define Z_IS_752_EQ_752(...) \, +#define Z_IS_752U_EQ_752(...) \, +#define Z_IS_752_EQ_752U(...) \, +#define Z_IS_752U_EQ_752U(...) \, +#define Z_IS_753_EQ_753(...) \, +#define Z_IS_753U_EQ_753(...) \, +#define Z_IS_753_EQ_753U(...) \, +#define Z_IS_753U_EQ_753U(...) \, +#define Z_IS_754_EQ_754(...) \, +#define Z_IS_754U_EQ_754(...) \, +#define Z_IS_754_EQ_754U(...) \, +#define Z_IS_754U_EQ_754U(...) \, +#define Z_IS_755_EQ_755(...) \, +#define Z_IS_755U_EQ_755(...) \, +#define Z_IS_755_EQ_755U(...) \, +#define Z_IS_755U_EQ_755U(...) \, +#define Z_IS_756_EQ_756(...) \, +#define Z_IS_756U_EQ_756(...) \, +#define Z_IS_756_EQ_756U(...) \, +#define Z_IS_756U_EQ_756U(...) \, +#define Z_IS_757_EQ_757(...) \, +#define Z_IS_757U_EQ_757(...) \, +#define Z_IS_757_EQ_757U(...) \, +#define Z_IS_757U_EQ_757U(...) \, +#define Z_IS_758_EQ_758(...) \, +#define Z_IS_758U_EQ_758(...) \, +#define Z_IS_758_EQ_758U(...) \, +#define Z_IS_758U_EQ_758U(...) \, +#define Z_IS_759_EQ_759(...) \, +#define Z_IS_759U_EQ_759(...) \, +#define Z_IS_759_EQ_759U(...) \, +#define Z_IS_759U_EQ_759U(...) \, +#define Z_IS_760_EQ_760(...) \, +#define Z_IS_760U_EQ_760(...) \, +#define Z_IS_760_EQ_760U(...) \, +#define Z_IS_760U_EQ_760U(...) \, +#define Z_IS_761_EQ_761(...) \, +#define Z_IS_761U_EQ_761(...) \, +#define Z_IS_761_EQ_761U(...) \, +#define Z_IS_761U_EQ_761U(...) \, +#define Z_IS_762_EQ_762(...) \, +#define Z_IS_762U_EQ_762(...) \, +#define Z_IS_762_EQ_762U(...) \, +#define Z_IS_762U_EQ_762U(...) \, +#define Z_IS_763_EQ_763(...) \, +#define Z_IS_763U_EQ_763(...) \, +#define Z_IS_763_EQ_763U(...) \, +#define Z_IS_763U_EQ_763U(...) \, +#define Z_IS_764_EQ_764(...) \, +#define Z_IS_764U_EQ_764(...) \, +#define Z_IS_764_EQ_764U(...) \, +#define Z_IS_764U_EQ_764U(...) \, +#define Z_IS_765_EQ_765(...) \, +#define Z_IS_765U_EQ_765(...) \, +#define Z_IS_765_EQ_765U(...) \, +#define Z_IS_765U_EQ_765U(...) \, +#define Z_IS_766_EQ_766(...) \, +#define Z_IS_766U_EQ_766(...) \, +#define Z_IS_766_EQ_766U(...) \, +#define Z_IS_766U_EQ_766U(...) \, +#define Z_IS_767_EQ_767(...) \, +#define Z_IS_767U_EQ_767(...) \, +#define Z_IS_767_EQ_767U(...) \, +#define Z_IS_767U_EQ_767U(...) \, +#define Z_IS_768_EQ_768(...) \, +#define Z_IS_768U_EQ_768(...) \, +#define Z_IS_768_EQ_768U(...) \, +#define Z_IS_768U_EQ_768U(...) \, +#define Z_IS_769_EQ_769(...) \, +#define Z_IS_769U_EQ_769(...) \, +#define Z_IS_769_EQ_769U(...) \, +#define Z_IS_769U_EQ_769U(...) \, +#define Z_IS_770_EQ_770(...) \, +#define Z_IS_770U_EQ_770(...) \, +#define Z_IS_770_EQ_770U(...) \, +#define Z_IS_770U_EQ_770U(...) \, +#define Z_IS_771_EQ_771(...) \, +#define Z_IS_771U_EQ_771(...) \, +#define Z_IS_771_EQ_771U(...) \, +#define Z_IS_771U_EQ_771U(...) \, +#define Z_IS_772_EQ_772(...) \, +#define Z_IS_772U_EQ_772(...) \, +#define Z_IS_772_EQ_772U(...) \, +#define Z_IS_772U_EQ_772U(...) \, +#define Z_IS_773_EQ_773(...) \, +#define Z_IS_773U_EQ_773(...) \, +#define Z_IS_773_EQ_773U(...) \, +#define Z_IS_773U_EQ_773U(...) \, +#define Z_IS_774_EQ_774(...) \, +#define Z_IS_774U_EQ_774(...) \, +#define Z_IS_774_EQ_774U(...) \, +#define Z_IS_774U_EQ_774U(...) \, +#define Z_IS_775_EQ_775(...) \, +#define Z_IS_775U_EQ_775(...) \, +#define Z_IS_775_EQ_775U(...) \, +#define Z_IS_775U_EQ_775U(...) \, +#define Z_IS_776_EQ_776(...) \, +#define Z_IS_776U_EQ_776(...) \, +#define Z_IS_776_EQ_776U(...) \, +#define Z_IS_776U_EQ_776U(...) \, +#define Z_IS_777_EQ_777(...) \, +#define Z_IS_777U_EQ_777(...) \, +#define Z_IS_777_EQ_777U(...) \, +#define Z_IS_777U_EQ_777U(...) \, +#define Z_IS_778_EQ_778(...) \, +#define Z_IS_778U_EQ_778(...) \, +#define Z_IS_778_EQ_778U(...) \, +#define Z_IS_778U_EQ_778U(...) \, +#define Z_IS_779_EQ_779(...) \, +#define Z_IS_779U_EQ_779(...) \, +#define Z_IS_779_EQ_779U(...) \, +#define Z_IS_779U_EQ_779U(...) \, +#define Z_IS_780_EQ_780(...) \, +#define Z_IS_780U_EQ_780(...) \, +#define Z_IS_780_EQ_780U(...) \, +#define Z_IS_780U_EQ_780U(...) \, +#define Z_IS_781_EQ_781(...) \, +#define Z_IS_781U_EQ_781(...) \, +#define Z_IS_781_EQ_781U(...) \, +#define Z_IS_781U_EQ_781U(...) \, +#define Z_IS_782_EQ_782(...) \, +#define Z_IS_782U_EQ_782(...) \, +#define Z_IS_782_EQ_782U(...) \, +#define Z_IS_782U_EQ_782U(...) \, +#define Z_IS_783_EQ_783(...) \, +#define Z_IS_783U_EQ_783(...) \, +#define Z_IS_783_EQ_783U(...) \, +#define Z_IS_783U_EQ_783U(...) \, +#define Z_IS_784_EQ_784(...) \, +#define Z_IS_784U_EQ_784(...) \, +#define Z_IS_784_EQ_784U(...) \, +#define Z_IS_784U_EQ_784U(...) \, +#define Z_IS_785_EQ_785(...) \, +#define Z_IS_785U_EQ_785(...) \, +#define Z_IS_785_EQ_785U(...) \, +#define Z_IS_785U_EQ_785U(...) \, +#define Z_IS_786_EQ_786(...) \, +#define Z_IS_786U_EQ_786(...) \, +#define Z_IS_786_EQ_786U(...) \, +#define Z_IS_786U_EQ_786U(...) \, +#define Z_IS_787_EQ_787(...) \, +#define Z_IS_787U_EQ_787(...) \, +#define Z_IS_787_EQ_787U(...) \, +#define Z_IS_787U_EQ_787U(...) \, +#define Z_IS_788_EQ_788(...) \, +#define Z_IS_788U_EQ_788(...) \, +#define Z_IS_788_EQ_788U(...) \, +#define Z_IS_788U_EQ_788U(...) \, +#define Z_IS_789_EQ_789(...) \, +#define Z_IS_789U_EQ_789(...) \, +#define Z_IS_789_EQ_789U(...) \, +#define Z_IS_789U_EQ_789U(...) \, +#define Z_IS_790_EQ_790(...) \, +#define Z_IS_790U_EQ_790(...) \, +#define Z_IS_790_EQ_790U(...) \, +#define Z_IS_790U_EQ_790U(...) \, +#define Z_IS_791_EQ_791(...) \, +#define Z_IS_791U_EQ_791(...) \, +#define Z_IS_791_EQ_791U(...) \, +#define Z_IS_791U_EQ_791U(...) \, +#define Z_IS_792_EQ_792(...) \, +#define Z_IS_792U_EQ_792(...) \, +#define Z_IS_792_EQ_792U(...) \, +#define Z_IS_792U_EQ_792U(...) \, +#define Z_IS_793_EQ_793(...) \, +#define Z_IS_793U_EQ_793(...) \, +#define Z_IS_793_EQ_793U(...) \, +#define Z_IS_793U_EQ_793U(...) \, +#define Z_IS_794_EQ_794(...) \, +#define Z_IS_794U_EQ_794(...) \, +#define Z_IS_794_EQ_794U(...) \, +#define Z_IS_794U_EQ_794U(...) \, +#define Z_IS_795_EQ_795(...) \, +#define Z_IS_795U_EQ_795(...) \, +#define Z_IS_795_EQ_795U(...) \, +#define Z_IS_795U_EQ_795U(...) \, +#define Z_IS_796_EQ_796(...) \, +#define Z_IS_796U_EQ_796(...) \, +#define Z_IS_796_EQ_796U(...) \, +#define Z_IS_796U_EQ_796U(...) \, +#define Z_IS_797_EQ_797(...) \, +#define Z_IS_797U_EQ_797(...) \, +#define Z_IS_797_EQ_797U(...) \, +#define Z_IS_797U_EQ_797U(...) \, +#define Z_IS_798_EQ_798(...) \, +#define Z_IS_798U_EQ_798(...) \, +#define Z_IS_798_EQ_798U(...) \, +#define Z_IS_798U_EQ_798U(...) \, +#define Z_IS_799_EQ_799(...) \, +#define Z_IS_799U_EQ_799(...) \, +#define Z_IS_799_EQ_799U(...) \, +#define Z_IS_799U_EQ_799U(...) \, +#define Z_IS_800_EQ_800(...) \, +#define Z_IS_800U_EQ_800(...) \, +#define Z_IS_800_EQ_800U(...) \, +#define Z_IS_800U_EQ_800U(...) \, +#define Z_IS_801_EQ_801(...) \, +#define Z_IS_801U_EQ_801(...) \, +#define Z_IS_801_EQ_801U(...) \, +#define Z_IS_801U_EQ_801U(...) \, +#define Z_IS_802_EQ_802(...) \, +#define Z_IS_802U_EQ_802(...) \, +#define Z_IS_802_EQ_802U(...) \, +#define Z_IS_802U_EQ_802U(...) \, +#define Z_IS_803_EQ_803(...) \, +#define Z_IS_803U_EQ_803(...) \, +#define Z_IS_803_EQ_803U(...) \, +#define Z_IS_803U_EQ_803U(...) \, +#define Z_IS_804_EQ_804(...) \, +#define Z_IS_804U_EQ_804(...) \, +#define Z_IS_804_EQ_804U(...) \, +#define Z_IS_804U_EQ_804U(...) \, +#define Z_IS_805_EQ_805(...) \, +#define Z_IS_805U_EQ_805(...) \, +#define Z_IS_805_EQ_805U(...) \, +#define Z_IS_805U_EQ_805U(...) \, +#define Z_IS_806_EQ_806(...) \, +#define Z_IS_806U_EQ_806(...) \, +#define Z_IS_806_EQ_806U(...) \, +#define Z_IS_806U_EQ_806U(...) \, +#define Z_IS_807_EQ_807(...) \, +#define Z_IS_807U_EQ_807(...) \, +#define Z_IS_807_EQ_807U(...) \, +#define Z_IS_807U_EQ_807U(...) \, +#define Z_IS_808_EQ_808(...) \, +#define Z_IS_808U_EQ_808(...) \, +#define Z_IS_808_EQ_808U(...) \, +#define Z_IS_808U_EQ_808U(...) \, +#define Z_IS_809_EQ_809(...) \, +#define Z_IS_809U_EQ_809(...) \, +#define Z_IS_809_EQ_809U(...) \, +#define Z_IS_809U_EQ_809U(...) \, +#define Z_IS_810_EQ_810(...) \, +#define Z_IS_810U_EQ_810(...) \, +#define Z_IS_810_EQ_810U(...) \, +#define Z_IS_810U_EQ_810U(...) \, +#define Z_IS_811_EQ_811(...) \, +#define Z_IS_811U_EQ_811(...) \, +#define Z_IS_811_EQ_811U(...) \, +#define Z_IS_811U_EQ_811U(...) \, +#define Z_IS_812_EQ_812(...) \, +#define Z_IS_812U_EQ_812(...) \, +#define Z_IS_812_EQ_812U(...) \, +#define Z_IS_812U_EQ_812U(...) \, +#define Z_IS_813_EQ_813(...) \, +#define Z_IS_813U_EQ_813(...) \, +#define Z_IS_813_EQ_813U(...) \, +#define Z_IS_813U_EQ_813U(...) \, +#define Z_IS_814_EQ_814(...) \, +#define Z_IS_814U_EQ_814(...) \, +#define Z_IS_814_EQ_814U(...) \, +#define Z_IS_814U_EQ_814U(...) \, +#define Z_IS_815_EQ_815(...) \, +#define Z_IS_815U_EQ_815(...) \, +#define Z_IS_815_EQ_815U(...) \, +#define Z_IS_815U_EQ_815U(...) \, +#define Z_IS_816_EQ_816(...) \, +#define Z_IS_816U_EQ_816(...) \, +#define Z_IS_816_EQ_816U(...) \, +#define Z_IS_816U_EQ_816U(...) \, +#define Z_IS_817_EQ_817(...) \, +#define Z_IS_817U_EQ_817(...) \, +#define Z_IS_817_EQ_817U(...) \, +#define Z_IS_817U_EQ_817U(...) \, +#define Z_IS_818_EQ_818(...) \, +#define Z_IS_818U_EQ_818(...) \, +#define Z_IS_818_EQ_818U(...) \, +#define Z_IS_818U_EQ_818U(...) \, +#define Z_IS_819_EQ_819(...) \, +#define Z_IS_819U_EQ_819(...) \, +#define Z_IS_819_EQ_819U(...) \, +#define Z_IS_819U_EQ_819U(...) \, +#define Z_IS_820_EQ_820(...) \, +#define Z_IS_820U_EQ_820(...) \, +#define Z_IS_820_EQ_820U(...) \, +#define Z_IS_820U_EQ_820U(...) \, +#define Z_IS_821_EQ_821(...) \, +#define Z_IS_821U_EQ_821(...) \, +#define Z_IS_821_EQ_821U(...) \, +#define Z_IS_821U_EQ_821U(...) \, +#define Z_IS_822_EQ_822(...) \, +#define Z_IS_822U_EQ_822(...) \, +#define Z_IS_822_EQ_822U(...) \, +#define Z_IS_822U_EQ_822U(...) \, +#define Z_IS_823_EQ_823(...) \, +#define Z_IS_823U_EQ_823(...) \, +#define Z_IS_823_EQ_823U(...) \, +#define Z_IS_823U_EQ_823U(...) \, +#define Z_IS_824_EQ_824(...) \, +#define Z_IS_824U_EQ_824(...) \, +#define Z_IS_824_EQ_824U(...) \, +#define Z_IS_824U_EQ_824U(...) \, +#define Z_IS_825_EQ_825(...) \, +#define Z_IS_825U_EQ_825(...) \, +#define Z_IS_825_EQ_825U(...) \, +#define Z_IS_825U_EQ_825U(...) \, +#define Z_IS_826_EQ_826(...) \, +#define Z_IS_826U_EQ_826(...) \, +#define Z_IS_826_EQ_826U(...) \, +#define Z_IS_826U_EQ_826U(...) \, +#define Z_IS_827_EQ_827(...) \, +#define Z_IS_827U_EQ_827(...) \, +#define Z_IS_827_EQ_827U(...) \, +#define Z_IS_827U_EQ_827U(...) \, +#define Z_IS_828_EQ_828(...) \, +#define Z_IS_828U_EQ_828(...) \, +#define Z_IS_828_EQ_828U(...) \, +#define Z_IS_828U_EQ_828U(...) \, +#define Z_IS_829_EQ_829(...) \, +#define Z_IS_829U_EQ_829(...) \, +#define Z_IS_829_EQ_829U(...) \, +#define Z_IS_829U_EQ_829U(...) \, +#define Z_IS_830_EQ_830(...) \, +#define Z_IS_830U_EQ_830(...) \, +#define Z_IS_830_EQ_830U(...) \, +#define Z_IS_830U_EQ_830U(...) \, +#define Z_IS_831_EQ_831(...) \, +#define Z_IS_831U_EQ_831(...) \, +#define Z_IS_831_EQ_831U(...) \, +#define Z_IS_831U_EQ_831U(...) \, +#define Z_IS_832_EQ_832(...) \, +#define Z_IS_832U_EQ_832(...) \, +#define Z_IS_832_EQ_832U(...) \, +#define Z_IS_832U_EQ_832U(...) \, +#define Z_IS_833_EQ_833(...) \, +#define Z_IS_833U_EQ_833(...) \, +#define Z_IS_833_EQ_833U(...) \, +#define Z_IS_833U_EQ_833U(...) \, +#define Z_IS_834_EQ_834(...) \, +#define Z_IS_834U_EQ_834(...) \, +#define Z_IS_834_EQ_834U(...) \, +#define Z_IS_834U_EQ_834U(...) \, +#define Z_IS_835_EQ_835(...) \, +#define Z_IS_835U_EQ_835(...) \, +#define Z_IS_835_EQ_835U(...) \, +#define Z_IS_835U_EQ_835U(...) \, +#define Z_IS_836_EQ_836(...) \, +#define Z_IS_836U_EQ_836(...) \, +#define Z_IS_836_EQ_836U(...) \, +#define Z_IS_836U_EQ_836U(...) \, +#define Z_IS_837_EQ_837(...) \, +#define Z_IS_837U_EQ_837(...) \, +#define Z_IS_837_EQ_837U(...) \, +#define Z_IS_837U_EQ_837U(...) \, +#define Z_IS_838_EQ_838(...) \, +#define Z_IS_838U_EQ_838(...) \, +#define Z_IS_838_EQ_838U(...) \, +#define Z_IS_838U_EQ_838U(...) \, +#define Z_IS_839_EQ_839(...) \, +#define Z_IS_839U_EQ_839(...) \, +#define Z_IS_839_EQ_839U(...) \, +#define Z_IS_839U_EQ_839U(...) \, +#define Z_IS_840_EQ_840(...) \, +#define Z_IS_840U_EQ_840(...) \, +#define Z_IS_840_EQ_840U(...) \, +#define Z_IS_840U_EQ_840U(...) \, +#define Z_IS_841_EQ_841(...) \, +#define Z_IS_841U_EQ_841(...) \, +#define Z_IS_841_EQ_841U(...) \, +#define Z_IS_841U_EQ_841U(...) \, +#define Z_IS_842_EQ_842(...) \, +#define Z_IS_842U_EQ_842(...) \, +#define Z_IS_842_EQ_842U(...) \, +#define Z_IS_842U_EQ_842U(...) \, +#define Z_IS_843_EQ_843(...) \, +#define Z_IS_843U_EQ_843(...) \, +#define Z_IS_843_EQ_843U(...) \, +#define Z_IS_843U_EQ_843U(...) \, +#define Z_IS_844_EQ_844(...) \, +#define Z_IS_844U_EQ_844(...) \, +#define Z_IS_844_EQ_844U(...) \, +#define Z_IS_844U_EQ_844U(...) \, +#define Z_IS_845_EQ_845(...) \, +#define Z_IS_845U_EQ_845(...) \, +#define Z_IS_845_EQ_845U(...) \, +#define Z_IS_845U_EQ_845U(...) \, +#define Z_IS_846_EQ_846(...) \, +#define Z_IS_846U_EQ_846(...) \, +#define Z_IS_846_EQ_846U(...) \, +#define Z_IS_846U_EQ_846U(...) \, +#define Z_IS_847_EQ_847(...) \, +#define Z_IS_847U_EQ_847(...) \, +#define Z_IS_847_EQ_847U(...) \, +#define Z_IS_847U_EQ_847U(...) \, +#define Z_IS_848_EQ_848(...) \, +#define Z_IS_848U_EQ_848(...) \, +#define Z_IS_848_EQ_848U(...) \, +#define Z_IS_848U_EQ_848U(...) \, +#define Z_IS_849_EQ_849(...) \, +#define Z_IS_849U_EQ_849(...) \, +#define Z_IS_849_EQ_849U(...) \, +#define Z_IS_849U_EQ_849U(...) \, +#define Z_IS_850_EQ_850(...) \, +#define Z_IS_850U_EQ_850(...) \, +#define Z_IS_850_EQ_850U(...) \, +#define Z_IS_850U_EQ_850U(...) \, +#define Z_IS_851_EQ_851(...) \, +#define Z_IS_851U_EQ_851(...) \, +#define Z_IS_851_EQ_851U(...) \, +#define Z_IS_851U_EQ_851U(...) \, +#define Z_IS_852_EQ_852(...) \, +#define Z_IS_852U_EQ_852(...) \, +#define Z_IS_852_EQ_852U(...) \, +#define Z_IS_852U_EQ_852U(...) \, +#define Z_IS_853_EQ_853(...) \, +#define Z_IS_853U_EQ_853(...) \, +#define Z_IS_853_EQ_853U(...) \, +#define Z_IS_853U_EQ_853U(...) \, +#define Z_IS_854_EQ_854(...) \, +#define Z_IS_854U_EQ_854(...) \, +#define Z_IS_854_EQ_854U(...) \, +#define Z_IS_854U_EQ_854U(...) \, +#define Z_IS_855_EQ_855(...) \, +#define Z_IS_855U_EQ_855(...) \, +#define Z_IS_855_EQ_855U(...) \, +#define Z_IS_855U_EQ_855U(...) \, +#define Z_IS_856_EQ_856(...) \, +#define Z_IS_856U_EQ_856(...) \, +#define Z_IS_856_EQ_856U(...) \, +#define Z_IS_856U_EQ_856U(...) \, +#define Z_IS_857_EQ_857(...) \, +#define Z_IS_857U_EQ_857(...) \, +#define Z_IS_857_EQ_857U(...) \, +#define Z_IS_857U_EQ_857U(...) \, +#define Z_IS_858_EQ_858(...) \, +#define Z_IS_858U_EQ_858(...) \, +#define Z_IS_858_EQ_858U(...) \, +#define Z_IS_858U_EQ_858U(...) \, +#define Z_IS_859_EQ_859(...) \, +#define Z_IS_859U_EQ_859(...) \, +#define Z_IS_859_EQ_859U(...) \, +#define Z_IS_859U_EQ_859U(...) \, +#define Z_IS_860_EQ_860(...) \, +#define Z_IS_860U_EQ_860(...) \, +#define Z_IS_860_EQ_860U(...) \, +#define Z_IS_860U_EQ_860U(...) \, +#define Z_IS_861_EQ_861(...) \, +#define Z_IS_861U_EQ_861(...) \, +#define Z_IS_861_EQ_861U(...) \, +#define Z_IS_861U_EQ_861U(...) \, +#define Z_IS_862_EQ_862(...) \, +#define Z_IS_862U_EQ_862(...) \, +#define Z_IS_862_EQ_862U(...) \, +#define Z_IS_862U_EQ_862U(...) \, +#define Z_IS_863_EQ_863(...) \, +#define Z_IS_863U_EQ_863(...) \, +#define Z_IS_863_EQ_863U(...) \, +#define Z_IS_863U_EQ_863U(...) \, +#define Z_IS_864_EQ_864(...) \, +#define Z_IS_864U_EQ_864(...) \, +#define Z_IS_864_EQ_864U(...) \, +#define Z_IS_864U_EQ_864U(...) \, +#define Z_IS_865_EQ_865(...) \, +#define Z_IS_865U_EQ_865(...) \, +#define Z_IS_865_EQ_865U(...) \, +#define Z_IS_865U_EQ_865U(...) \, +#define Z_IS_866_EQ_866(...) \, +#define Z_IS_866U_EQ_866(...) \, +#define Z_IS_866_EQ_866U(...) \, +#define Z_IS_866U_EQ_866U(...) \, +#define Z_IS_867_EQ_867(...) \, +#define Z_IS_867U_EQ_867(...) \, +#define Z_IS_867_EQ_867U(...) \, +#define Z_IS_867U_EQ_867U(...) \, +#define Z_IS_868_EQ_868(...) \, +#define Z_IS_868U_EQ_868(...) \, +#define Z_IS_868_EQ_868U(...) \, +#define Z_IS_868U_EQ_868U(...) \, +#define Z_IS_869_EQ_869(...) \, +#define Z_IS_869U_EQ_869(...) \, +#define Z_IS_869_EQ_869U(...) \, +#define Z_IS_869U_EQ_869U(...) \, +#define Z_IS_870_EQ_870(...) \, +#define Z_IS_870U_EQ_870(...) \, +#define Z_IS_870_EQ_870U(...) \, +#define Z_IS_870U_EQ_870U(...) \, +#define Z_IS_871_EQ_871(...) \, +#define Z_IS_871U_EQ_871(...) \, +#define Z_IS_871_EQ_871U(...) \, +#define Z_IS_871U_EQ_871U(...) \, +#define Z_IS_872_EQ_872(...) \, +#define Z_IS_872U_EQ_872(...) \, +#define Z_IS_872_EQ_872U(...) \, +#define Z_IS_872U_EQ_872U(...) \, +#define Z_IS_873_EQ_873(...) \, +#define Z_IS_873U_EQ_873(...) \, +#define Z_IS_873_EQ_873U(...) \, +#define Z_IS_873U_EQ_873U(...) \, +#define Z_IS_874_EQ_874(...) \, +#define Z_IS_874U_EQ_874(...) \, +#define Z_IS_874_EQ_874U(...) \, +#define Z_IS_874U_EQ_874U(...) \, +#define Z_IS_875_EQ_875(...) \, +#define Z_IS_875U_EQ_875(...) \, +#define Z_IS_875_EQ_875U(...) \, +#define Z_IS_875U_EQ_875U(...) \, +#define Z_IS_876_EQ_876(...) \, +#define Z_IS_876U_EQ_876(...) \, +#define Z_IS_876_EQ_876U(...) \, +#define Z_IS_876U_EQ_876U(...) \, +#define Z_IS_877_EQ_877(...) \, +#define Z_IS_877U_EQ_877(...) \, +#define Z_IS_877_EQ_877U(...) \, +#define Z_IS_877U_EQ_877U(...) \, +#define Z_IS_878_EQ_878(...) \, +#define Z_IS_878U_EQ_878(...) \, +#define Z_IS_878_EQ_878U(...) \, +#define Z_IS_878U_EQ_878U(...) \, +#define Z_IS_879_EQ_879(...) \, +#define Z_IS_879U_EQ_879(...) \, +#define Z_IS_879_EQ_879U(...) \, +#define Z_IS_879U_EQ_879U(...) \, +#define Z_IS_880_EQ_880(...) \, +#define Z_IS_880U_EQ_880(...) \, +#define Z_IS_880_EQ_880U(...) \, +#define Z_IS_880U_EQ_880U(...) \, +#define Z_IS_881_EQ_881(...) \, +#define Z_IS_881U_EQ_881(...) \, +#define Z_IS_881_EQ_881U(...) \, +#define Z_IS_881U_EQ_881U(...) \, +#define Z_IS_882_EQ_882(...) \, +#define Z_IS_882U_EQ_882(...) \, +#define Z_IS_882_EQ_882U(...) \, +#define Z_IS_882U_EQ_882U(...) \, +#define Z_IS_883_EQ_883(...) \, +#define Z_IS_883U_EQ_883(...) \, +#define Z_IS_883_EQ_883U(...) \, +#define Z_IS_883U_EQ_883U(...) \, +#define Z_IS_884_EQ_884(...) \, +#define Z_IS_884U_EQ_884(...) \, +#define Z_IS_884_EQ_884U(...) \, +#define Z_IS_884U_EQ_884U(...) \, +#define Z_IS_885_EQ_885(...) \, +#define Z_IS_885U_EQ_885(...) \, +#define Z_IS_885_EQ_885U(...) \, +#define Z_IS_885U_EQ_885U(...) \, +#define Z_IS_886_EQ_886(...) \, +#define Z_IS_886U_EQ_886(...) \, +#define Z_IS_886_EQ_886U(...) \, +#define Z_IS_886U_EQ_886U(...) \, +#define Z_IS_887_EQ_887(...) \, +#define Z_IS_887U_EQ_887(...) \, +#define Z_IS_887_EQ_887U(...) \, +#define Z_IS_887U_EQ_887U(...) \, +#define Z_IS_888_EQ_888(...) \, +#define Z_IS_888U_EQ_888(...) \, +#define Z_IS_888_EQ_888U(...) \, +#define Z_IS_888U_EQ_888U(...) \, +#define Z_IS_889_EQ_889(...) \, +#define Z_IS_889U_EQ_889(...) \, +#define Z_IS_889_EQ_889U(...) \, +#define Z_IS_889U_EQ_889U(...) \, +#define Z_IS_890_EQ_890(...) \, +#define Z_IS_890U_EQ_890(...) \, +#define Z_IS_890_EQ_890U(...) \, +#define Z_IS_890U_EQ_890U(...) \, +#define Z_IS_891_EQ_891(...) \, +#define Z_IS_891U_EQ_891(...) \, +#define Z_IS_891_EQ_891U(...) \, +#define Z_IS_891U_EQ_891U(...) \, +#define Z_IS_892_EQ_892(...) \, +#define Z_IS_892U_EQ_892(...) \, +#define Z_IS_892_EQ_892U(...) \, +#define Z_IS_892U_EQ_892U(...) \, +#define Z_IS_893_EQ_893(...) \, +#define Z_IS_893U_EQ_893(...) \, +#define Z_IS_893_EQ_893U(...) \, +#define Z_IS_893U_EQ_893U(...) \, +#define Z_IS_894_EQ_894(...) \, +#define Z_IS_894U_EQ_894(...) \, +#define Z_IS_894_EQ_894U(...) \, +#define Z_IS_894U_EQ_894U(...) \, +#define Z_IS_895_EQ_895(...) \, +#define Z_IS_895U_EQ_895(...) \, +#define Z_IS_895_EQ_895U(...) \, +#define Z_IS_895U_EQ_895U(...) \, +#define Z_IS_896_EQ_896(...) \, +#define Z_IS_896U_EQ_896(...) \, +#define Z_IS_896_EQ_896U(...) \, +#define Z_IS_896U_EQ_896U(...) \, +#define Z_IS_897_EQ_897(...) \, +#define Z_IS_897U_EQ_897(...) \, +#define Z_IS_897_EQ_897U(...) \, +#define Z_IS_897U_EQ_897U(...) \, +#define Z_IS_898_EQ_898(...) \, +#define Z_IS_898U_EQ_898(...) \, +#define Z_IS_898_EQ_898U(...) \, +#define Z_IS_898U_EQ_898U(...) \, +#define Z_IS_899_EQ_899(...) \, +#define Z_IS_899U_EQ_899(...) \, +#define Z_IS_899_EQ_899U(...) \, +#define Z_IS_899U_EQ_899U(...) \, +#define Z_IS_900_EQ_900(...) \, +#define Z_IS_900U_EQ_900(...) \, +#define Z_IS_900_EQ_900U(...) \, +#define Z_IS_900U_EQ_900U(...) \, +#define Z_IS_901_EQ_901(...) \, +#define Z_IS_901U_EQ_901(...) \, +#define Z_IS_901_EQ_901U(...) \, +#define Z_IS_901U_EQ_901U(...) \, +#define Z_IS_902_EQ_902(...) \, +#define Z_IS_902U_EQ_902(...) \, +#define Z_IS_902_EQ_902U(...) \, +#define Z_IS_902U_EQ_902U(...) \, +#define Z_IS_903_EQ_903(...) \, +#define Z_IS_903U_EQ_903(...) \, +#define Z_IS_903_EQ_903U(...) \, +#define Z_IS_903U_EQ_903U(...) \, +#define Z_IS_904_EQ_904(...) \, +#define Z_IS_904U_EQ_904(...) \, +#define Z_IS_904_EQ_904U(...) \, +#define Z_IS_904U_EQ_904U(...) \, +#define Z_IS_905_EQ_905(...) \, +#define Z_IS_905U_EQ_905(...) \, +#define Z_IS_905_EQ_905U(...) \, +#define Z_IS_905U_EQ_905U(...) \, +#define Z_IS_906_EQ_906(...) \, +#define Z_IS_906U_EQ_906(...) \, +#define Z_IS_906_EQ_906U(...) \, +#define Z_IS_906U_EQ_906U(...) \, +#define Z_IS_907_EQ_907(...) \, +#define Z_IS_907U_EQ_907(...) \, +#define Z_IS_907_EQ_907U(...) \, +#define Z_IS_907U_EQ_907U(...) \, +#define Z_IS_908_EQ_908(...) \, +#define Z_IS_908U_EQ_908(...) \, +#define Z_IS_908_EQ_908U(...) \, +#define Z_IS_908U_EQ_908U(...) \, +#define Z_IS_909_EQ_909(...) \, +#define Z_IS_909U_EQ_909(...) \, +#define Z_IS_909_EQ_909U(...) \, +#define Z_IS_909U_EQ_909U(...) \, +#define Z_IS_910_EQ_910(...) \, +#define Z_IS_910U_EQ_910(...) \, +#define Z_IS_910_EQ_910U(...) \, +#define Z_IS_910U_EQ_910U(...) \, +#define Z_IS_911_EQ_911(...) \, +#define Z_IS_911U_EQ_911(...) \, +#define Z_IS_911_EQ_911U(...) \, +#define Z_IS_911U_EQ_911U(...) \, +#define Z_IS_912_EQ_912(...) \, +#define Z_IS_912U_EQ_912(...) \, +#define Z_IS_912_EQ_912U(...) \, +#define Z_IS_912U_EQ_912U(...) \, +#define Z_IS_913_EQ_913(...) \, +#define Z_IS_913U_EQ_913(...) \, +#define Z_IS_913_EQ_913U(...) \, +#define Z_IS_913U_EQ_913U(...) \, +#define Z_IS_914_EQ_914(...) \, +#define Z_IS_914U_EQ_914(...) \, +#define Z_IS_914_EQ_914U(...) \, +#define Z_IS_914U_EQ_914U(...) \, +#define Z_IS_915_EQ_915(...) \, +#define Z_IS_915U_EQ_915(...) \, +#define Z_IS_915_EQ_915U(...) \, +#define Z_IS_915U_EQ_915U(...) \, +#define Z_IS_916_EQ_916(...) \, +#define Z_IS_916U_EQ_916(...) \, +#define Z_IS_916_EQ_916U(...) \, +#define Z_IS_916U_EQ_916U(...) \, +#define Z_IS_917_EQ_917(...) \, +#define Z_IS_917U_EQ_917(...) \, +#define Z_IS_917_EQ_917U(...) \, +#define Z_IS_917U_EQ_917U(...) \, +#define Z_IS_918_EQ_918(...) \, +#define Z_IS_918U_EQ_918(...) \, +#define Z_IS_918_EQ_918U(...) \, +#define Z_IS_918U_EQ_918U(...) \, +#define Z_IS_919_EQ_919(...) \, +#define Z_IS_919U_EQ_919(...) \, +#define Z_IS_919_EQ_919U(...) \, +#define Z_IS_919U_EQ_919U(...) \, +#define Z_IS_920_EQ_920(...) \, +#define Z_IS_920U_EQ_920(...) \, +#define Z_IS_920_EQ_920U(...) \, +#define Z_IS_920U_EQ_920U(...) \, +#define Z_IS_921_EQ_921(...) \, +#define Z_IS_921U_EQ_921(...) \, +#define Z_IS_921_EQ_921U(...) \, +#define Z_IS_921U_EQ_921U(...) \, +#define Z_IS_922_EQ_922(...) \, +#define Z_IS_922U_EQ_922(...) \, +#define Z_IS_922_EQ_922U(...) \, +#define Z_IS_922U_EQ_922U(...) \, +#define Z_IS_923_EQ_923(...) \, +#define Z_IS_923U_EQ_923(...) \, +#define Z_IS_923_EQ_923U(...) \, +#define Z_IS_923U_EQ_923U(...) \, +#define Z_IS_924_EQ_924(...) \, +#define Z_IS_924U_EQ_924(...) \, +#define Z_IS_924_EQ_924U(...) \, +#define Z_IS_924U_EQ_924U(...) \, +#define Z_IS_925_EQ_925(...) \, +#define Z_IS_925U_EQ_925(...) \, +#define Z_IS_925_EQ_925U(...) \, +#define Z_IS_925U_EQ_925U(...) \, +#define Z_IS_926_EQ_926(...) \, +#define Z_IS_926U_EQ_926(...) \, +#define Z_IS_926_EQ_926U(...) \, +#define Z_IS_926U_EQ_926U(...) \, +#define Z_IS_927_EQ_927(...) \, +#define Z_IS_927U_EQ_927(...) \, +#define Z_IS_927_EQ_927U(...) \, +#define Z_IS_927U_EQ_927U(...) \, +#define Z_IS_928_EQ_928(...) \, +#define Z_IS_928U_EQ_928(...) \, +#define Z_IS_928_EQ_928U(...) \, +#define Z_IS_928U_EQ_928U(...) \, +#define Z_IS_929_EQ_929(...) \, +#define Z_IS_929U_EQ_929(...) \, +#define Z_IS_929_EQ_929U(...) \, +#define Z_IS_929U_EQ_929U(...) \, +#define Z_IS_930_EQ_930(...) \, +#define Z_IS_930U_EQ_930(...) \, +#define Z_IS_930_EQ_930U(...) \, +#define Z_IS_930U_EQ_930U(...) \, +#define Z_IS_931_EQ_931(...) \, +#define Z_IS_931U_EQ_931(...) \, +#define Z_IS_931_EQ_931U(...) \, +#define Z_IS_931U_EQ_931U(...) \, +#define Z_IS_932_EQ_932(...) \, +#define Z_IS_932U_EQ_932(...) \, +#define Z_IS_932_EQ_932U(...) \, +#define Z_IS_932U_EQ_932U(...) \, +#define Z_IS_933_EQ_933(...) \, +#define Z_IS_933U_EQ_933(...) \, +#define Z_IS_933_EQ_933U(...) \, +#define Z_IS_933U_EQ_933U(...) \, +#define Z_IS_934_EQ_934(...) \, +#define Z_IS_934U_EQ_934(...) \, +#define Z_IS_934_EQ_934U(...) \, +#define Z_IS_934U_EQ_934U(...) \, +#define Z_IS_935_EQ_935(...) \, +#define Z_IS_935U_EQ_935(...) \, +#define Z_IS_935_EQ_935U(...) \, +#define Z_IS_935U_EQ_935U(...) \, +#define Z_IS_936_EQ_936(...) \, +#define Z_IS_936U_EQ_936(...) \, +#define Z_IS_936_EQ_936U(...) \, +#define Z_IS_936U_EQ_936U(...) \, +#define Z_IS_937_EQ_937(...) \, +#define Z_IS_937U_EQ_937(...) \, +#define Z_IS_937_EQ_937U(...) \, +#define Z_IS_937U_EQ_937U(...) \, +#define Z_IS_938_EQ_938(...) \, +#define Z_IS_938U_EQ_938(...) \, +#define Z_IS_938_EQ_938U(...) \, +#define Z_IS_938U_EQ_938U(...) \, +#define Z_IS_939_EQ_939(...) \, +#define Z_IS_939U_EQ_939(...) \, +#define Z_IS_939_EQ_939U(...) \, +#define Z_IS_939U_EQ_939U(...) \, +#define Z_IS_940_EQ_940(...) \, +#define Z_IS_940U_EQ_940(...) \, +#define Z_IS_940_EQ_940U(...) \, +#define Z_IS_940U_EQ_940U(...) \, +#define Z_IS_941_EQ_941(...) \, +#define Z_IS_941U_EQ_941(...) \, +#define Z_IS_941_EQ_941U(...) \, +#define Z_IS_941U_EQ_941U(...) \, +#define Z_IS_942_EQ_942(...) \, +#define Z_IS_942U_EQ_942(...) \, +#define Z_IS_942_EQ_942U(...) \, +#define Z_IS_942U_EQ_942U(...) \, +#define Z_IS_943_EQ_943(...) \, +#define Z_IS_943U_EQ_943(...) \, +#define Z_IS_943_EQ_943U(...) \, +#define Z_IS_943U_EQ_943U(...) \, +#define Z_IS_944_EQ_944(...) \, +#define Z_IS_944U_EQ_944(...) \, +#define Z_IS_944_EQ_944U(...) \, +#define Z_IS_944U_EQ_944U(...) \, +#define Z_IS_945_EQ_945(...) \, +#define Z_IS_945U_EQ_945(...) \, +#define Z_IS_945_EQ_945U(...) \, +#define Z_IS_945U_EQ_945U(...) \, +#define Z_IS_946_EQ_946(...) \, +#define Z_IS_946U_EQ_946(...) \, +#define Z_IS_946_EQ_946U(...) \, +#define Z_IS_946U_EQ_946U(...) \, +#define Z_IS_947_EQ_947(...) \, +#define Z_IS_947U_EQ_947(...) \, +#define Z_IS_947_EQ_947U(...) \, +#define Z_IS_947U_EQ_947U(...) \, +#define Z_IS_948_EQ_948(...) \, +#define Z_IS_948U_EQ_948(...) \, +#define Z_IS_948_EQ_948U(...) \, +#define Z_IS_948U_EQ_948U(...) \, +#define Z_IS_949_EQ_949(...) \, +#define Z_IS_949U_EQ_949(...) \, +#define Z_IS_949_EQ_949U(...) \, +#define Z_IS_949U_EQ_949U(...) \, +#define Z_IS_950_EQ_950(...) \, +#define Z_IS_950U_EQ_950(...) \, +#define Z_IS_950_EQ_950U(...) \, +#define Z_IS_950U_EQ_950U(...) \, +#define Z_IS_951_EQ_951(...) \, +#define Z_IS_951U_EQ_951(...) \, +#define Z_IS_951_EQ_951U(...) \, +#define Z_IS_951U_EQ_951U(...) \, +#define Z_IS_952_EQ_952(...) \, +#define Z_IS_952U_EQ_952(...) \, +#define Z_IS_952_EQ_952U(...) \, +#define Z_IS_952U_EQ_952U(...) \, +#define Z_IS_953_EQ_953(...) \, +#define Z_IS_953U_EQ_953(...) \, +#define Z_IS_953_EQ_953U(...) \, +#define Z_IS_953U_EQ_953U(...) \, +#define Z_IS_954_EQ_954(...) \, +#define Z_IS_954U_EQ_954(...) \, +#define Z_IS_954_EQ_954U(...) \, +#define Z_IS_954U_EQ_954U(...) \, +#define Z_IS_955_EQ_955(...) \, +#define Z_IS_955U_EQ_955(...) \, +#define Z_IS_955_EQ_955U(...) \, +#define Z_IS_955U_EQ_955U(...) \, +#define Z_IS_956_EQ_956(...) \, +#define Z_IS_956U_EQ_956(...) \, +#define Z_IS_956_EQ_956U(...) \, +#define Z_IS_956U_EQ_956U(...) \, +#define Z_IS_957_EQ_957(...) \, +#define Z_IS_957U_EQ_957(...) \, +#define Z_IS_957_EQ_957U(...) \, +#define Z_IS_957U_EQ_957U(...) \, +#define Z_IS_958_EQ_958(...) \, +#define Z_IS_958U_EQ_958(...) \, +#define Z_IS_958_EQ_958U(...) \, +#define Z_IS_958U_EQ_958U(...) \, +#define Z_IS_959_EQ_959(...) \, +#define Z_IS_959U_EQ_959(...) \, +#define Z_IS_959_EQ_959U(...) \, +#define Z_IS_959U_EQ_959U(...) \, +#define Z_IS_960_EQ_960(...) \, +#define Z_IS_960U_EQ_960(...) \, +#define Z_IS_960_EQ_960U(...) \, +#define Z_IS_960U_EQ_960U(...) \, +#define Z_IS_961_EQ_961(...) \, +#define Z_IS_961U_EQ_961(...) \, +#define Z_IS_961_EQ_961U(...) \, +#define Z_IS_961U_EQ_961U(...) \, +#define Z_IS_962_EQ_962(...) \, +#define Z_IS_962U_EQ_962(...) \, +#define Z_IS_962_EQ_962U(...) \, +#define Z_IS_962U_EQ_962U(...) \, +#define Z_IS_963_EQ_963(...) \, +#define Z_IS_963U_EQ_963(...) \, +#define Z_IS_963_EQ_963U(...) \, +#define Z_IS_963U_EQ_963U(...) \, +#define Z_IS_964_EQ_964(...) \, +#define Z_IS_964U_EQ_964(...) \, +#define Z_IS_964_EQ_964U(...) \, +#define Z_IS_964U_EQ_964U(...) \, +#define Z_IS_965_EQ_965(...) \, +#define Z_IS_965U_EQ_965(...) \, +#define Z_IS_965_EQ_965U(...) \, +#define Z_IS_965U_EQ_965U(...) \, +#define Z_IS_966_EQ_966(...) \, +#define Z_IS_966U_EQ_966(...) \, +#define Z_IS_966_EQ_966U(...) \, +#define Z_IS_966U_EQ_966U(...) \, +#define Z_IS_967_EQ_967(...) \, +#define Z_IS_967U_EQ_967(...) \, +#define Z_IS_967_EQ_967U(...) \, +#define Z_IS_967U_EQ_967U(...) \, +#define Z_IS_968_EQ_968(...) \, +#define Z_IS_968U_EQ_968(...) \, +#define Z_IS_968_EQ_968U(...) \, +#define Z_IS_968U_EQ_968U(...) \, +#define Z_IS_969_EQ_969(...) \, +#define Z_IS_969U_EQ_969(...) \, +#define Z_IS_969_EQ_969U(...) \, +#define Z_IS_969U_EQ_969U(...) \, +#define Z_IS_970_EQ_970(...) \, +#define Z_IS_970U_EQ_970(...) \, +#define Z_IS_970_EQ_970U(...) \, +#define Z_IS_970U_EQ_970U(...) \, +#define Z_IS_971_EQ_971(...) \, +#define Z_IS_971U_EQ_971(...) \, +#define Z_IS_971_EQ_971U(...) \, +#define Z_IS_971U_EQ_971U(...) \, +#define Z_IS_972_EQ_972(...) \, +#define Z_IS_972U_EQ_972(...) \, +#define Z_IS_972_EQ_972U(...) \, +#define Z_IS_972U_EQ_972U(...) \, +#define Z_IS_973_EQ_973(...) \, +#define Z_IS_973U_EQ_973(...) \, +#define Z_IS_973_EQ_973U(...) \, +#define Z_IS_973U_EQ_973U(...) \, +#define Z_IS_974_EQ_974(...) \, +#define Z_IS_974U_EQ_974(...) \, +#define Z_IS_974_EQ_974U(...) \, +#define Z_IS_974U_EQ_974U(...) \, +#define Z_IS_975_EQ_975(...) \, +#define Z_IS_975U_EQ_975(...) \, +#define Z_IS_975_EQ_975U(...) \, +#define Z_IS_975U_EQ_975U(...) \, +#define Z_IS_976_EQ_976(...) \, +#define Z_IS_976U_EQ_976(...) \, +#define Z_IS_976_EQ_976U(...) \, +#define Z_IS_976U_EQ_976U(...) \, +#define Z_IS_977_EQ_977(...) \, +#define Z_IS_977U_EQ_977(...) \, +#define Z_IS_977_EQ_977U(...) \, +#define Z_IS_977U_EQ_977U(...) \, +#define Z_IS_978_EQ_978(...) \, +#define Z_IS_978U_EQ_978(...) \, +#define Z_IS_978_EQ_978U(...) \, +#define Z_IS_978U_EQ_978U(...) \, +#define Z_IS_979_EQ_979(...) \, +#define Z_IS_979U_EQ_979(...) \, +#define Z_IS_979_EQ_979U(...) \, +#define Z_IS_979U_EQ_979U(...) \, +#define Z_IS_980_EQ_980(...) \, +#define Z_IS_980U_EQ_980(...) \, +#define Z_IS_980_EQ_980U(...) \, +#define Z_IS_980U_EQ_980U(...) \, +#define Z_IS_981_EQ_981(...) \, +#define Z_IS_981U_EQ_981(...) \, +#define Z_IS_981_EQ_981U(...) \, +#define Z_IS_981U_EQ_981U(...) \, +#define Z_IS_982_EQ_982(...) \, +#define Z_IS_982U_EQ_982(...) \, +#define Z_IS_982_EQ_982U(...) \, +#define Z_IS_982U_EQ_982U(...) \, +#define Z_IS_983_EQ_983(...) \, +#define Z_IS_983U_EQ_983(...) \, +#define Z_IS_983_EQ_983U(...) \, +#define Z_IS_983U_EQ_983U(...) \, +#define Z_IS_984_EQ_984(...) \, +#define Z_IS_984U_EQ_984(...) \, +#define Z_IS_984_EQ_984U(...) \, +#define Z_IS_984U_EQ_984U(...) \, +#define Z_IS_985_EQ_985(...) \, +#define Z_IS_985U_EQ_985(...) \, +#define Z_IS_985_EQ_985U(...) \, +#define Z_IS_985U_EQ_985U(...) \, +#define Z_IS_986_EQ_986(...) \, +#define Z_IS_986U_EQ_986(...) \, +#define Z_IS_986_EQ_986U(...) \, +#define Z_IS_986U_EQ_986U(...) \, +#define Z_IS_987_EQ_987(...) \, +#define Z_IS_987U_EQ_987(...) \, +#define Z_IS_987_EQ_987U(...) \, +#define Z_IS_987U_EQ_987U(...) \, +#define Z_IS_988_EQ_988(...) \, +#define Z_IS_988U_EQ_988(...) \, +#define Z_IS_988_EQ_988U(...) \, +#define Z_IS_988U_EQ_988U(...) \, +#define Z_IS_989_EQ_989(...) \, +#define Z_IS_989U_EQ_989(...) \, +#define Z_IS_989_EQ_989U(...) \, +#define Z_IS_989U_EQ_989U(...) \, +#define Z_IS_990_EQ_990(...) \, +#define Z_IS_990U_EQ_990(...) \, +#define Z_IS_990_EQ_990U(...) \, +#define Z_IS_990U_EQ_990U(...) \, +#define Z_IS_991_EQ_991(...) \, +#define Z_IS_991U_EQ_991(...) \, +#define Z_IS_991_EQ_991U(...) \, +#define Z_IS_991U_EQ_991U(...) \, +#define Z_IS_992_EQ_992(...) \, +#define Z_IS_992U_EQ_992(...) \, +#define Z_IS_992_EQ_992U(...) \, +#define Z_IS_992U_EQ_992U(...) \, +#define Z_IS_993_EQ_993(...) \, +#define Z_IS_993U_EQ_993(...) \, +#define Z_IS_993_EQ_993U(...) \, +#define Z_IS_993U_EQ_993U(...) \, +#define Z_IS_994_EQ_994(...) \, +#define Z_IS_994U_EQ_994(...) \, +#define Z_IS_994_EQ_994U(...) \, +#define Z_IS_994U_EQ_994U(...) \, +#define Z_IS_995_EQ_995(...) \, +#define Z_IS_995U_EQ_995(...) \, +#define Z_IS_995_EQ_995U(...) \, +#define Z_IS_995U_EQ_995U(...) \, +#define Z_IS_996_EQ_996(...) \, +#define Z_IS_996U_EQ_996(...) \, +#define Z_IS_996_EQ_996U(...) \, +#define Z_IS_996U_EQ_996U(...) \, +#define Z_IS_997_EQ_997(...) \, +#define Z_IS_997U_EQ_997(...) \, +#define Z_IS_997_EQ_997U(...) \, +#define Z_IS_997U_EQ_997U(...) \, +#define Z_IS_998_EQ_998(...) \, +#define Z_IS_998U_EQ_998(...) \, +#define Z_IS_998_EQ_998U(...) \, +#define Z_IS_998U_EQ_998U(...) \, +#define Z_IS_999_EQ_999(...) \, +#define Z_IS_999U_EQ_999(...) \, +#define Z_IS_999_EQ_999U(...) \, +#define Z_IS_999U_EQ_999U(...) \, +#define Z_IS_1000_EQ_1000(...) \, +#define Z_IS_1000U_EQ_1000(...) \, +#define Z_IS_1000_EQ_1000U(...) \, +#define Z_IS_1000U_EQ_1000U(...) \, +#define Z_IS_1001_EQ_1001(...) \, +#define Z_IS_1001U_EQ_1001(...) \, +#define Z_IS_1001_EQ_1001U(...) \, +#define Z_IS_1001U_EQ_1001U(...) \, +#define Z_IS_1002_EQ_1002(...) \, +#define Z_IS_1002U_EQ_1002(...) \, +#define Z_IS_1002_EQ_1002U(...) \, +#define Z_IS_1002U_EQ_1002U(...) \, +#define Z_IS_1003_EQ_1003(...) \, +#define Z_IS_1003U_EQ_1003(...) \, +#define Z_IS_1003_EQ_1003U(...) \, +#define Z_IS_1003U_EQ_1003U(...) \, +#define Z_IS_1004_EQ_1004(...) \, +#define Z_IS_1004U_EQ_1004(...) \, +#define Z_IS_1004_EQ_1004U(...) \, +#define Z_IS_1004U_EQ_1004U(...) \, +#define Z_IS_1005_EQ_1005(...) \, +#define Z_IS_1005U_EQ_1005(...) \, +#define Z_IS_1005_EQ_1005U(...) \, +#define Z_IS_1005U_EQ_1005U(...) \, +#define Z_IS_1006_EQ_1006(...) \, +#define Z_IS_1006U_EQ_1006(...) \, +#define Z_IS_1006_EQ_1006U(...) \, +#define Z_IS_1006U_EQ_1006U(...) \, +#define Z_IS_1007_EQ_1007(...) \, +#define Z_IS_1007U_EQ_1007(...) \, +#define Z_IS_1007_EQ_1007U(...) \, +#define Z_IS_1007U_EQ_1007U(...) \, +#define Z_IS_1008_EQ_1008(...) \, +#define Z_IS_1008U_EQ_1008(...) \, +#define Z_IS_1008_EQ_1008U(...) \, +#define Z_IS_1008U_EQ_1008U(...) \, +#define Z_IS_1009_EQ_1009(...) \, +#define Z_IS_1009U_EQ_1009(...) \, +#define Z_IS_1009_EQ_1009U(...) \, +#define Z_IS_1009U_EQ_1009U(...) \, +#define Z_IS_1010_EQ_1010(...) \, +#define Z_IS_1010U_EQ_1010(...) \, +#define Z_IS_1010_EQ_1010U(...) \, +#define Z_IS_1010U_EQ_1010U(...) \, +#define Z_IS_1011_EQ_1011(...) \, +#define Z_IS_1011U_EQ_1011(...) \, +#define Z_IS_1011_EQ_1011U(...) \, +#define Z_IS_1011U_EQ_1011U(...) \, +#define Z_IS_1012_EQ_1012(...) \, +#define Z_IS_1012U_EQ_1012(...) \, +#define Z_IS_1012_EQ_1012U(...) \, +#define Z_IS_1012U_EQ_1012U(...) \, +#define Z_IS_1013_EQ_1013(...) \, +#define Z_IS_1013U_EQ_1013(...) \, +#define Z_IS_1013_EQ_1013U(...) \, +#define Z_IS_1013U_EQ_1013U(...) \, +#define Z_IS_1014_EQ_1014(...) \, +#define Z_IS_1014U_EQ_1014(...) \, +#define Z_IS_1014_EQ_1014U(...) \, +#define Z_IS_1014U_EQ_1014U(...) \, +#define Z_IS_1015_EQ_1015(...) \, +#define Z_IS_1015U_EQ_1015(...) \, +#define Z_IS_1015_EQ_1015U(...) \, +#define Z_IS_1015U_EQ_1015U(...) \, +#define Z_IS_1016_EQ_1016(...) \, +#define Z_IS_1016U_EQ_1016(...) \, +#define Z_IS_1016_EQ_1016U(...) \, +#define Z_IS_1016U_EQ_1016U(...) \, +#define Z_IS_1017_EQ_1017(...) \, +#define Z_IS_1017U_EQ_1017(...) \, +#define Z_IS_1017_EQ_1017U(...) \, +#define Z_IS_1017U_EQ_1017U(...) \, +#define Z_IS_1018_EQ_1018(...) \, +#define Z_IS_1018U_EQ_1018(...) \, +#define Z_IS_1018_EQ_1018U(...) \, +#define Z_IS_1018U_EQ_1018U(...) \, +#define Z_IS_1019_EQ_1019(...) \, +#define Z_IS_1019U_EQ_1019(...) \, +#define Z_IS_1019_EQ_1019U(...) \, +#define Z_IS_1019U_EQ_1019U(...) \, +#define Z_IS_1020_EQ_1020(...) \, +#define Z_IS_1020U_EQ_1020(...) \, +#define Z_IS_1020_EQ_1020U(...) \, +#define Z_IS_1020U_EQ_1020U(...) \, +#define Z_IS_1021_EQ_1021(...) \, +#define Z_IS_1021U_EQ_1021(...) \, +#define Z_IS_1021_EQ_1021U(...) \, +#define Z_IS_1021U_EQ_1021U(...) \, +#define Z_IS_1022_EQ_1022(...) \, +#define Z_IS_1022U_EQ_1022(...) \, +#define Z_IS_1022_EQ_1022U(...) \, +#define Z_IS_1022U_EQ_1022U(...) \, +#define Z_IS_1023_EQ_1023(...) \, +#define Z_IS_1023U_EQ_1023(...) \, +#define Z_IS_1023_EQ_1023U(...) \, +#define Z_IS_1023U_EQ_1023U(...) \, +#define Z_IS_1024_EQ_1024(...) \, +#define Z_IS_1024U_EQ_1024(...) \, +#define Z_IS_1024_EQ_1024U(...) \, +#define Z_IS_1024U_EQ_1024U(...) \, +#define Z_IS_1025_EQ_1025(...) \, +#define Z_IS_1025U_EQ_1025(...) \, +#define Z_IS_1025_EQ_1025U(...) \, +#define Z_IS_1025U_EQ_1025U(...) \, +#define Z_IS_1026_EQ_1026(...) \, +#define Z_IS_1026U_EQ_1026(...) \, +#define Z_IS_1026_EQ_1026U(...) \, +#define Z_IS_1026U_EQ_1026U(...) \, +#define Z_IS_1027_EQ_1027(...) \, +#define Z_IS_1027U_EQ_1027(...) \, +#define Z_IS_1027_EQ_1027U(...) \, +#define Z_IS_1027U_EQ_1027U(...) \, +#define Z_IS_1028_EQ_1028(...) \, +#define Z_IS_1028U_EQ_1028(...) \, +#define Z_IS_1028_EQ_1028U(...) \, +#define Z_IS_1028U_EQ_1028U(...) \, +#define Z_IS_1029_EQ_1029(...) \, +#define Z_IS_1029U_EQ_1029(...) \, +#define Z_IS_1029_EQ_1029U(...) \, +#define Z_IS_1029U_EQ_1029U(...) \, +#define Z_IS_1030_EQ_1030(...) \, +#define Z_IS_1030U_EQ_1030(...) \, +#define Z_IS_1030_EQ_1030U(...) \, +#define Z_IS_1030U_EQ_1030U(...) \, +#define Z_IS_1031_EQ_1031(...) \, +#define Z_IS_1031U_EQ_1031(...) \, +#define Z_IS_1031_EQ_1031U(...) \, +#define Z_IS_1031U_EQ_1031U(...) \, +#define Z_IS_1032_EQ_1032(...) \, +#define Z_IS_1032U_EQ_1032(...) \, +#define Z_IS_1032_EQ_1032U(...) \, +#define Z_IS_1032U_EQ_1032U(...) \, +#define Z_IS_1033_EQ_1033(...) \, +#define Z_IS_1033U_EQ_1033(...) \, +#define Z_IS_1033_EQ_1033U(...) \, +#define Z_IS_1033U_EQ_1033U(...) \, +#define Z_IS_1034_EQ_1034(...) \, +#define Z_IS_1034U_EQ_1034(...) \, +#define Z_IS_1034_EQ_1034U(...) \, +#define Z_IS_1034U_EQ_1034U(...) \, +#define Z_IS_1035_EQ_1035(...) \, +#define Z_IS_1035U_EQ_1035(...) \, +#define Z_IS_1035_EQ_1035U(...) \, +#define Z_IS_1035U_EQ_1035U(...) \, +#define Z_IS_1036_EQ_1036(...) \, +#define Z_IS_1036U_EQ_1036(...) \, +#define Z_IS_1036_EQ_1036U(...) \, +#define Z_IS_1036U_EQ_1036U(...) \, +#define Z_IS_1037_EQ_1037(...) \, +#define Z_IS_1037U_EQ_1037(...) \, +#define Z_IS_1037_EQ_1037U(...) \, +#define Z_IS_1037U_EQ_1037U(...) \, +#define Z_IS_1038_EQ_1038(...) \, +#define Z_IS_1038U_EQ_1038(...) \, +#define Z_IS_1038_EQ_1038U(...) \, +#define Z_IS_1038U_EQ_1038U(...) \, +#define Z_IS_1039_EQ_1039(...) \, +#define Z_IS_1039U_EQ_1039(...) \, +#define Z_IS_1039_EQ_1039U(...) \, +#define Z_IS_1039U_EQ_1039U(...) \, +#define Z_IS_1040_EQ_1040(...) \, +#define Z_IS_1040U_EQ_1040(...) \, +#define Z_IS_1040_EQ_1040U(...) \, +#define Z_IS_1040U_EQ_1040U(...) \, +#define Z_IS_1041_EQ_1041(...) \, +#define Z_IS_1041U_EQ_1041(...) \, +#define Z_IS_1041_EQ_1041U(...) \, +#define Z_IS_1041U_EQ_1041U(...) \, +#define Z_IS_1042_EQ_1042(...) \, +#define Z_IS_1042U_EQ_1042(...) \, +#define Z_IS_1042_EQ_1042U(...) \, +#define Z_IS_1042U_EQ_1042U(...) \, +#define Z_IS_1043_EQ_1043(...) \, +#define Z_IS_1043U_EQ_1043(...) \, +#define Z_IS_1043_EQ_1043U(...) \, +#define Z_IS_1043U_EQ_1043U(...) \, +#define Z_IS_1044_EQ_1044(...) \, +#define Z_IS_1044U_EQ_1044(...) \, +#define Z_IS_1044_EQ_1044U(...) \, +#define Z_IS_1044U_EQ_1044U(...) \, +#define Z_IS_1045_EQ_1045(...) \, +#define Z_IS_1045U_EQ_1045(...) \, +#define Z_IS_1045_EQ_1045U(...) \, +#define Z_IS_1045U_EQ_1045U(...) \, +#define Z_IS_1046_EQ_1046(...) \, +#define Z_IS_1046U_EQ_1046(...) \, +#define Z_IS_1046_EQ_1046U(...) \, +#define Z_IS_1046U_EQ_1046U(...) \, +#define Z_IS_1047_EQ_1047(...) \, +#define Z_IS_1047U_EQ_1047(...) \, +#define Z_IS_1047_EQ_1047U(...) \, +#define Z_IS_1047U_EQ_1047U(...) \, +#define Z_IS_1048_EQ_1048(...) \, +#define Z_IS_1048U_EQ_1048(...) \, +#define Z_IS_1048_EQ_1048U(...) \, +#define Z_IS_1048U_EQ_1048U(...) \, +#define Z_IS_1049_EQ_1049(...) \, +#define Z_IS_1049U_EQ_1049(...) \, +#define Z_IS_1049_EQ_1049U(...) \, +#define Z_IS_1049U_EQ_1049U(...) \, +#define Z_IS_1050_EQ_1050(...) \, +#define Z_IS_1050U_EQ_1050(...) \, +#define Z_IS_1050_EQ_1050U(...) \, +#define Z_IS_1050U_EQ_1050U(...) \, +#define Z_IS_1051_EQ_1051(...) \, +#define Z_IS_1051U_EQ_1051(...) \, +#define Z_IS_1051_EQ_1051U(...) \, +#define Z_IS_1051U_EQ_1051U(...) \, +#define Z_IS_1052_EQ_1052(...) \, +#define Z_IS_1052U_EQ_1052(...) \, +#define Z_IS_1052_EQ_1052U(...) \, +#define Z_IS_1052U_EQ_1052U(...) \, +#define Z_IS_1053_EQ_1053(...) \, +#define Z_IS_1053U_EQ_1053(...) \, +#define Z_IS_1053_EQ_1053U(...) \, +#define Z_IS_1053U_EQ_1053U(...) \, +#define Z_IS_1054_EQ_1054(...) \, +#define Z_IS_1054U_EQ_1054(...) \, +#define Z_IS_1054_EQ_1054U(...) \, +#define Z_IS_1054U_EQ_1054U(...) \, +#define Z_IS_1055_EQ_1055(...) \, +#define Z_IS_1055U_EQ_1055(...) \, +#define Z_IS_1055_EQ_1055U(...) \, +#define Z_IS_1055U_EQ_1055U(...) \, +#define Z_IS_1056_EQ_1056(...) \, +#define Z_IS_1056U_EQ_1056(...) \, +#define Z_IS_1056_EQ_1056U(...) \, +#define Z_IS_1056U_EQ_1056U(...) \, +#define Z_IS_1057_EQ_1057(...) \, +#define Z_IS_1057U_EQ_1057(...) \, +#define Z_IS_1057_EQ_1057U(...) \, +#define Z_IS_1057U_EQ_1057U(...) \, +#define Z_IS_1058_EQ_1058(...) \, +#define Z_IS_1058U_EQ_1058(...) \, +#define Z_IS_1058_EQ_1058U(...) \, +#define Z_IS_1058U_EQ_1058U(...) \, +#define Z_IS_1059_EQ_1059(...) \, +#define Z_IS_1059U_EQ_1059(...) \, +#define Z_IS_1059_EQ_1059U(...) \, +#define Z_IS_1059U_EQ_1059U(...) \, +#define Z_IS_1060_EQ_1060(...) \, +#define Z_IS_1060U_EQ_1060(...) \, +#define Z_IS_1060_EQ_1060U(...) \, +#define Z_IS_1060U_EQ_1060U(...) \, +#define Z_IS_1061_EQ_1061(...) \, +#define Z_IS_1061U_EQ_1061(...) \, +#define Z_IS_1061_EQ_1061U(...) \, +#define Z_IS_1061U_EQ_1061U(...) \, +#define Z_IS_1062_EQ_1062(...) \, +#define Z_IS_1062U_EQ_1062(...) \, +#define Z_IS_1062_EQ_1062U(...) \, +#define Z_IS_1062U_EQ_1062U(...) \, +#define Z_IS_1063_EQ_1063(...) \, +#define Z_IS_1063U_EQ_1063(...) \, +#define Z_IS_1063_EQ_1063U(...) \, +#define Z_IS_1063U_EQ_1063U(...) \, +#define Z_IS_1064_EQ_1064(...) \, +#define Z_IS_1064U_EQ_1064(...) \, +#define Z_IS_1064_EQ_1064U(...) \, +#define Z_IS_1064U_EQ_1064U(...) \, +#define Z_IS_1065_EQ_1065(...) \, +#define Z_IS_1065U_EQ_1065(...) \, +#define Z_IS_1065_EQ_1065U(...) \, +#define Z_IS_1065U_EQ_1065U(...) \, +#define Z_IS_1066_EQ_1066(...) \, +#define Z_IS_1066U_EQ_1066(...) \, +#define Z_IS_1066_EQ_1066U(...) \, +#define Z_IS_1066U_EQ_1066U(...) \, +#define Z_IS_1067_EQ_1067(...) \, +#define Z_IS_1067U_EQ_1067(...) \, +#define Z_IS_1067_EQ_1067U(...) \, +#define Z_IS_1067U_EQ_1067U(...) \, +#define Z_IS_1068_EQ_1068(...) \, +#define Z_IS_1068U_EQ_1068(...) \, +#define Z_IS_1068_EQ_1068U(...) \, +#define Z_IS_1068U_EQ_1068U(...) \, +#define Z_IS_1069_EQ_1069(...) \, +#define Z_IS_1069U_EQ_1069(...) \, +#define Z_IS_1069_EQ_1069U(...) \, +#define Z_IS_1069U_EQ_1069U(...) \, +#define Z_IS_1070_EQ_1070(...) \, +#define Z_IS_1070U_EQ_1070(...) \, +#define Z_IS_1070_EQ_1070U(...) \, +#define Z_IS_1070U_EQ_1070U(...) \, +#define Z_IS_1071_EQ_1071(...) \, +#define Z_IS_1071U_EQ_1071(...) \, +#define Z_IS_1071_EQ_1071U(...) \, +#define Z_IS_1071U_EQ_1071U(...) \, +#define Z_IS_1072_EQ_1072(...) \, +#define Z_IS_1072U_EQ_1072(...) \, +#define Z_IS_1072_EQ_1072U(...) \, +#define Z_IS_1072U_EQ_1072U(...) \, +#define Z_IS_1073_EQ_1073(...) \, +#define Z_IS_1073U_EQ_1073(...) \, +#define Z_IS_1073_EQ_1073U(...) \, +#define Z_IS_1073U_EQ_1073U(...) \, +#define Z_IS_1074_EQ_1074(...) \, +#define Z_IS_1074U_EQ_1074(...) \, +#define Z_IS_1074_EQ_1074U(...) \, +#define Z_IS_1074U_EQ_1074U(...) \, +#define Z_IS_1075_EQ_1075(...) \, +#define Z_IS_1075U_EQ_1075(...) \, +#define Z_IS_1075_EQ_1075U(...) \, +#define Z_IS_1075U_EQ_1075U(...) \, +#define Z_IS_1076_EQ_1076(...) \, +#define Z_IS_1076U_EQ_1076(...) \, +#define Z_IS_1076_EQ_1076U(...) \, +#define Z_IS_1076U_EQ_1076U(...) \, +#define Z_IS_1077_EQ_1077(...) \, +#define Z_IS_1077U_EQ_1077(...) \, +#define Z_IS_1077_EQ_1077U(...) \, +#define Z_IS_1077U_EQ_1077U(...) \, +#define Z_IS_1078_EQ_1078(...) \, +#define Z_IS_1078U_EQ_1078(...) \, +#define Z_IS_1078_EQ_1078U(...) \, +#define Z_IS_1078U_EQ_1078U(...) \, +#define Z_IS_1079_EQ_1079(...) \, +#define Z_IS_1079U_EQ_1079(...) \, +#define Z_IS_1079_EQ_1079U(...) \, +#define Z_IS_1079U_EQ_1079U(...) \, +#define Z_IS_1080_EQ_1080(...) \, +#define Z_IS_1080U_EQ_1080(...) \, +#define Z_IS_1080_EQ_1080U(...) \, +#define Z_IS_1080U_EQ_1080U(...) \, +#define Z_IS_1081_EQ_1081(...) \, +#define Z_IS_1081U_EQ_1081(...) \, +#define Z_IS_1081_EQ_1081U(...) \, +#define Z_IS_1081U_EQ_1081U(...) \, +#define Z_IS_1082_EQ_1082(...) \, +#define Z_IS_1082U_EQ_1082(...) \, +#define Z_IS_1082_EQ_1082U(...) \, +#define Z_IS_1082U_EQ_1082U(...) \, +#define Z_IS_1083_EQ_1083(...) \, +#define Z_IS_1083U_EQ_1083(...) \, +#define Z_IS_1083_EQ_1083U(...) \, +#define Z_IS_1083U_EQ_1083U(...) \, +#define Z_IS_1084_EQ_1084(...) \, +#define Z_IS_1084U_EQ_1084(...) \, +#define Z_IS_1084_EQ_1084U(...) \, +#define Z_IS_1084U_EQ_1084U(...) \, +#define Z_IS_1085_EQ_1085(...) \, +#define Z_IS_1085U_EQ_1085(...) \, +#define Z_IS_1085_EQ_1085U(...) \, +#define Z_IS_1085U_EQ_1085U(...) \, +#define Z_IS_1086_EQ_1086(...) \, +#define Z_IS_1086U_EQ_1086(...) \, +#define Z_IS_1086_EQ_1086U(...) \, +#define Z_IS_1086U_EQ_1086U(...) \, +#define Z_IS_1087_EQ_1087(...) \, +#define Z_IS_1087U_EQ_1087(...) \, +#define Z_IS_1087_EQ_1087U(...) \, +#define Z_IS_1087U_EQ_1087U(...) \, +#define Z_IS_1088_EQ_1088(...) \, +#define Z_IS_1088U_EQ_1088(...) \, +#define Z_IS_1088_EQ_1088U(...) \, +#define Z_IS_1088U_EQ_1088U(...) \, +#define Z_IS_1089_EQ_1089(...) \, +#define Z_IS_1089U_EQ_1089(...) \, +#define Z_IS_1089_EQ_1089U(...) \, +#define Z_IS_1089U_EQ_1089U(...) \, +#define Z_IS_1090_EQ_1090(...) \, +#define Z_IS_1090U_EQ_1090(...) \, +#define Z_IS_1090_EQ_1090U(...) \, +#define Z_IS_1090U_EQ_1090U(...) \, +#define Z_IS_1091_EQ_1091(...) \, +#define Z_IS_1091U_EQ_1091(...) \, +#define Z_IS_1091_EQ_1091U(...) \, +#define Z_IS_1091U_EQ_1091U(...) \, +#define Z_IS_1092_EQ_1092(...) \, +#define Z_IS_1092U_EQ_1092(...) \, +#define Z_IS_1092_EQ_1092U(...) \, +#define Z_IS_1092U_EQ_1092U(...) \, +#define Z_IS_1093_EQ_1093(...) \, +#define Z_IS_1093U_EQ_1093(...) \, +#define Z_IS_1093_EQ_1093U(...) \, +#define Z_IS_1093U_EQ_1093U(...) \, +#define Z_IS_1094_EQ_1094(...) \, +#define Z_IS_1094U_EQ_1094(...) \, +#define Z_IS_1094_EQ_1094U(...) \, +#define Z_IS_1094U_EQ_1094U(...) \, +#define Z_IS_1095_EQ_1095(...) \, +#define Z_IS_1095U_EQ_1095(...) \, +#define Z_IS_1095_EQ_1095U(...) \, +#define Z_IS_1095U_EQ_1095U(...) \, +#define Z_IS_1096_EQ_1096(...) \, +#define Z_IS_1096U_EQ_1096(...) \, +#define Z_IS_1096_EQ_1096U(...) \, +#define Z_IS_1096U_EQ_1096U(...) \, +#define Z_IS_1097_EQ_1097(...) \, +#define Z_IS_1097U_EQ_1097(...) \, +#define Z_IS_1097_EQ_1097U(...) \, +#define Z_IS_1097U_EQ_1097U(...) \, +#define Z_IS_1098_EQ_1098(...) \, +#define Z_IS_1098U_EQ_1098(...) \, +#define Z_IS_1098_EQ_1098U(...) \, +#define Z_IS_1098U_EQ_1098U(...) \, +#define Z_IS_1099_EQ_1099(...) \, +#define Z_IS_1099U_EQ_1099(...) \, +#define Z_IS_1099_EQ_1099U(...) \, +#define Z_IS_1099U_EQ_1099U(...) \, +#define Z_IS_1100_EQ_1100(...) \, +#define Z_IS_1100U_EQ_1100(...) \, +#define Z_IS_1100_EQ_1100U(...) \, +#define Z_IS_1100U_EQ_1100U(...) \, +#define Z_IS_1101_EQ_1101(...) \, +#define Z_IS_1101U_EQ_1101(...) \, +#define Z_IS_1101_EQ_1101U(...) \, +#define Z_IS_1101U_EQ_1101U(...) \, +#define Z_IS_1102_EQ_1102(...) \, +#define Z_IS_1102U_EQ_1102(...) \, +#define Z_IS_1102_EQ_1102U(...) \, +#define Z_IS_1102U_EQ_1102U(...) \, +#define Z_IS_1103_EQ_1103(...) \, +#define Z_IS_1103U_EQ_1103(...) \, +#define Z_IS_1103_EQ_1103U(...) \, +#define Z_IS_1103U_EQ_1103U(...) \, +#define Z_IS_1104_EQ_1104(...) \, +#define Z_IS_1104U_EQ_1104(...) \, +#define Z_IS_1104_EQ_1104U(...) \, +#define Z_IS_1104U_EQ_1104U(...) \, +#define Z_IS_1105_EQ_1105(...) \, +#define Z_IS_1105U_EQ_1105(...) \, +#define Z_IS_1105_EQ_1105U(...) \, +#define Z_IS_1105U_EQ_1105U(...) \, +#define Z_IS_1106_EQ_1106(...) \, +#define Z_IS_1106U_EQ_1106(...) \, +#define Z_IS_1106_EQ_1106U(...) \, +#define Z_IS_1106U_EQ_1106U(...) \, +#define Z_IS_1107_EQ_1107(...) \, +#define Z_IS_1107U_EQ_1107(...) \, +#define Z_IS_1107_EQ_1107U(...) \, +#define Z_IS_1107U_EQ_1107U(...) \, +#define Z_IS_1108_EQ_1108(...) \, +#define Z_IS_1108U_EQ_1108(...) \, +#define Z_IS_1108_EQ_1108U(...) \, +#define Z_IS_1108U_EQ_1108U(...) \, +#define Z_IS_1109_EQ_1109(...) \, +#define Z_IS_1109U_EQ_1109(...) \, +#define Z_IS_1109_EQ_1109U(...) \, +#define Z_IS_1109U_EQ_1109U(...) \, +#define Z_IS_1110_EQ_1110(...) \, +#define Z_IS_1110U_EQ_1110(...) \, +#define Z_IS_1110_EQ_1110U(...) \, +#define Z_IS_1110U_EQ_1110U(...) \, +#define Z_IS_1111_EQ_1111(...) \, +#define Z_IS_1111U_EQ_1111(...) \, +#define Z_IS_1111_EQ_1111U(...) \, +#define Z_IS_1111U_EQ_1111U(...) \, +#define Z_IS_1112_EQ_1112(...) \, +#define Z_IS_1112U_EQ_1112(...) \, +#define Z_IS_1112_EQ_1112U(...) \, +#define Z_IS_1112U_EQ_1112U(...) \, +#define Z_IS_1113_EQ_1113(...) \, +#define Z_IS_1113U_EQ_1113(...) \, +#define Z_IS_1113_EQ_1113U(...) \, +#define Z_IS_1113U_EQ_1113U(...) \, +#define Z_IS_1114_EQ_1114(...) \, +#define Z_IS_1114U_EQ_1114(...) \, +#define Z_IS_1114_EQ_1114U(...) \, +#define Z_IS_1114U_EQ_1114U(...) \, +#define Z_IS_1115_EQ_1115(...) \, +#define Z_IS_1115U_EQ_1115(...) \, +#define Z_IS_1115_EQ_1115U(...) \, +#define Z_IS_1115U_EQ_1115U(...) \, +#define Z_IS_1116_EQ_1116(...) \, +#define Z_IS_1116U_EQ_1116(...) \, +#define Z_IS_1116_EQ_1116U(...) \, +#define Z_IS_1116U_EQ_1116U(...) \, +#define Z_IS_1117_EQ_1117(...) \, +#define Z_IS_1117U_EQ_1117(...) \, +#define Z_IS_1117_EQ_1117U(...) \, +#define Z_IS_1117U_EQ_1117U(...) \, +#define Z_IS_1118_EQ_1118(...) \, +#define Z_IS_1118U_EQ_1118(...) \, +#define Z_IS_1118_EQ_1118U(...) \, +#define Z_IS_1118U_EQ_1118U(...) \, +#define Z_IS_1119_EQ_1119(...) \, +#define Z_IS_1119U_EQ_1119(...) \, +#define Z_IS_1119_EQ_1119U(...) \, +#define Z_IS_1119U_EQ_1119U(...) \, +#define Z_IS_1120_EQ_1120(...) \, +#define Z_IS_1120U_EQ_1120(...) \, +#define Z_IS_1120_EQ_1120U(...) \, +#define Z_IS_1120U_EQ_1120U(...) \, +#define Z_IS_1121_EQ_1121(...) \, +#define Z_IS_1121U_EQ_1121(...) \, +#define Z_IS_1121_EQ_1121U(...) \, +#define Z_IS_1121U_EQ_1121U(...) \, +#define Z_IS_1122_EQ_1122(...) \, +#define Z_IS_1122U_EQ_1122(...) \, +#define Z_IS_1122_EQ_1122U(...) \, +#define Z_IS_1122U_EQ_1122U(...) \, +#define Z_IS_1123_EQ_1123(...) \, +#define Z_IS_1123U_EQ_1123(...) \, +#define Z_IS_1123_EQ_1123U(...) \, +#define Z_IS_1123U_EQ_1123U(...) \, +#define Z_IS_1124_EQ_1124(...) \, +#define Z_IS_1124U_EQ_1124(...) \, +#define Z_IS_1124_EQ_1124U(...) \, +#define Z_IS_1124U_EQ_1124U(...) \, +#define Z_IS_1125_EQ_1125(...) \, +#define Z_IS_1125U_EQ_1125(...) \, +#define Z_IS_1125_EQ_1125U(...) \, +#define Z_IS_1125U_EQ_1125U(...) \, +#define Z_IS_1126_EQ_1126(...) \, +#define Z_IS_1126U_EQ_1126(...) \, +#define Z_IS_1126_EQ_1126U(...) \, +#define Z_IS_1126U_EQ_1126U(...) \, +#define Z_IS_1127_EQ_1127(...) \, +#define Z_IS_1127U_EQ_1127(...) \, +#define Z_IS_1127_EQ_1127U(...) \, +#define Z_IS_1127U_EQ_1127U(...) \, +#define Z_IS_1128_EQ_1128(...) \, +#define Z_IS_1128U_EQ_1128(...) \, +#define Z_IS_1128_EQ_1128U(...) \, +#define Z_IS_1128U_EQ_1128U(...) \, +#define Z_IS_1129_EQ_1129(...) \, +#define Z_IS_1129U_EQ_1129(...) \, +#define Z_IS_1129_EQ_1129U(...) \, +#define Z_IS_1129U_EQ_1129U(...) \, +#define Z_IS_1130_EQ_1130(...) \, +#define Z_IS_1130U_EQ_1130(...) \, +#define Z_IS_1130_EQ_1130U(...) \, +#define Z_IS_1130U_EQ_1130U(...) \, +#define Z_IS_1131_EQ_1131(...) \, +#define Z_IS_1131U_EQ_1131(...) \, +#define Z_IS_1131_EQ_1131U(...) \, +#define Z_IS_1131U_EQ_1131U(...) \, +#define Z_IS_1132_EQ_1132(...) \, +#define Z_IS_1132U_EQ_1132(...) \, +#define Z_IS_1132_EQ_1132U(...) \, +#define Z_IS_1132U_EQ_1132U(...) \, +#define Z_IS_1133_EQ_1133(...) \, +#define Z_IS_1133U_EQ_1133(...) \, +#define Z_IS_1133_EQ_1133U(...) \, +#define Z_IS_1133U_EQ_1133U(...) \, +#define Z_IS_1134_EQ_1134(...) \, +#define Z_IS_1134U_EQ_1134(...) \, +#define Z_IS_1134_EQ_1134U(...) \, +#define Z_IS_1134U_EQ_1134U(...) \, +#define Z_IS_1135_EQ_1135(...) \, +#define Z_IS_1135U_EQ_1135(...) \, +#define Z_IS_1135_EQ_1135U(...) \, +#define Z_IS_1135U_EQ_1135U(...) \, +#define Z_IS_1136_EQ_1136(...) \, +#define Z_IS_1136U_EQ_1136(...) \, +#define Z_IS_1136_EQ_1136U(...) \, +#define Z_IS_1136U_EQ_1136U(...) \, +#define Z_IS_1137_EQ_1137(...) \, +#define Z_IS_1137U_EQ_1137(...) \, +#define Z_IS_1137_EQ_1137U(...) \, +#define Z_IS_1137U_EQ_1137U(...) \, +#define Z_IS_1138_EQ_1138(...) \, +#define Z_IS_1138U_EQ_1138(...) \, +#define Z_IS_1138_EQ_1138U(...) \, +#define Z_IS_1138U_EQ_1138U(...) \, +#define Z_IS_1139_EQ_1139(...) \, +#define Z_IS_1139U_EQ_1139(...) \, +#define Z_IS_1139_EQ_1139U(...) \, +#define Z_IS_1139U_EQ_1139U(...) \, +#define Z_IS_1140_EQ_1140(...) \, +#define Z_IS_1140U_EQ_1140(...) \, +#define Z_IS_1140_EQ_1140U(...) \, +#define Z_IS_1140U_EQ_1140U(...) \, +#define Z_IS_1141_EQ_1141(...) \, +#define Z_IS_1141U_EQ_1141(...) \, +#define Z_IS_1141_EQ_1141U(...) \, +#define Z_IS_1141U_EQ_1141U(...) \, +#define Z_IS_1142_EQ_1142(...) \, +#define Z_IS_1142U_EQ_1142(...) \, +#define Z_IS_1142_EQ_1142U(...) \, +#define Z_IS_1142U_EQ_1142U(...) \, +#define Z_IS_1143_EQ_1143(...) \, +#define Z_IS_1143U_EQ_1143(...) \, +#define Z_IS_1143_EQ_1143U(...) \, +#define Z_IS_1143U_EQ_1143U(...) \, +#define Z_IS_1144_EQ_1144(...) \, +#define Z_IS_1144U_EQ_1144(...) \, +#define Z_IS_1144_EQ_1144U(...) \, +#define Z_IS_1144U_EQ_1144U(...) \, +#define Z_IS_1145_EQ_1145(...) \, +#define Z_IS_1145U_EQ_1145(...) \, +#define Z_IS_1145_EQ_1145U(...) \, +#define Z_IS_1145U_EQ_1145U(...) \, +#define Z_IS_1146_EQ_1146(...) \, +#define Z_IS_1146U_EQ_1146(...) \, +#define Z_IS_1146_EQ_1146U(...) \, +#define Z_IS_1146U_EQ_1146U(...) \, +#define Z_IS_1147_EQ_1147(...) \, +#define Z_IS_1147U_EQ_1147(...) \, +#define Z_IS_1147_EQ_1147U(...) \, +#define Z_IS_1147U_EQ_1147U(...) \, +#define Z_IS_1148_EQ_1148(...) \, +#define Z_IS_1148U_EQ_1148(...) \, +#define Z_IS_1148_EQ_1148U(...) \, +#define Z_IS_1148U_EQ_1148U(...) \, +#define Z_IS_1149_EQ_1149(...) \, +#define Z_IS_1149U_EQ_1149(...) \, +#define Z_IS_1149_EQ_1149U(...) \, +#define Z_IS_1149U_EQ_1149U(...) \, +#define Z_IS_1150_EQ_1150(...) \, +#define Z_IS_1150U_EQ_1150(...) \, +#define Z_IS_1150_EQ_1150U(...) \, +#define Z_IS_1150U_EQ_1150U(...) \, +#define Z_IS_1151_EQ_1151(...) \, +#define Z_IS_1151U_EQ_1151(...) \, +#define Z_IS_1151_EQ_1151U(...) \, +#define Z_IS_1151U_EQ_1151U(...) \, +#define Z_IS_1152_EQ_1152(...) \, +#define Z_IS_1152U_EQ_1152(...) \, +#define Z_IS_1152_EQ_1152U(...) \, +#define Z_IS_1152U_EQ_1152U(...) \, +#define Z_IS_1153_EQ_1153(...) \, +#define Z_IS_1153U_EQ_1153(...) \, +#define Z_IS_1153_EQ_1153U(...) \, +#define Z_IS_1153U_EQ_1153U(...) \, +#define Z_IS_1154_EQ_1154(...) \, +#define Z_IS_1154U_EQ_1154(...) \, +#define Z_IS_1154_EQ_1154U(...) \, +#define Z_IS_1154U_EQ_1154U(...) \, +#define Z_IS_1155_EQ_1155(...) \, +#define Z_IS_1155U_EQ_1155(...) \, +#define Z_IS_1155_EQ_1155U(...) \, +#define Z_IS_1155U_EQ_1155U(...) \, +#define Z_IS_1156_EQ_1156(...) \, +#define Z_IS_1156U_EQ_1156(...) \, +#define Z_IS_1156_EQ_1156U(...) \, +#define Z_IS_1156U_EQ_1156U(...) \, +#define Z_IS_1157_EQ_1157(...) \, +#define Z_IS_1157U_EQ_1157(...) \, +#define Z_IS_1157_EQ_1157U(...) \, +#define Z_IS_1157U_EQ_1157U(...) \, +#define Z_IS_1158_EQ_1158(...) \, +#define Z_IS_1158U_EQ_1158(...) \, +#define Z_IS_1158_EQ_1158U(...) \, +#define Z_IS_1158U_EQ_1158U(...) \, +#define Z_IS_1159_EQ_1159(...) \, +#define Z_IS_1159U_EQ_1159(...) \, +#define Z_IS_1159_EQ_1159U(...) \, +#define Z_IS_1159U_EQ_1159U(...) \, +#define Z_IS_1160_EQ_1160(...) \, +#define Z_IS_1160U_EQ_1160(...) \, +#define Z_IS_1160_EQ_1160U(...) \, +#define Z_IS_1160U_EQ_1160U(...) \, +#define Z_IS_1161_EQ_1161(...) \, +#define Z_IS_1161U_EQ_1161(...) \, +#define Z_IS_1161_EQ_1161U(...) \, +#define Z_IS_1161U_EQ_1161U(...) \, +#define Z_IS_1162_EQ_1162(...) \, +#define Z_IS_1162U_EQ_1162(...) \, +#define Z_IS_1162_EQ_1162U(...) \, +#define Z_IS_1162U_EQ_1162U(...) \, +#define Z_IS_1163_EQ_1163(...) \, +#define Z_IS_1163U_EQ_1163(...) \, +#define Z_IS_1163_EQ_1163U(...) \, +#define Z_IS_1163U_EQ_1163U(...) \, +#define Z_IS_1164_EQ_1164(...) \, +#define Z_IS_1164U_EQ_1164(...) \, +#define Z_IS_1164_EQ_1164U(...) \, +#define Z_IS_1164U_EQ_1164U(...) \, +#define Z_IS_1165_EQ_1165(...) \, +#define Z_IS_1165U_EQ_1165(...) \, +#define Z_IS_1165_EQ_1165U(...) \, +#define Z_IS_1165U_EQ_1165U(...) \, +#define Z_IS_1166_EQ_1166(...) \, +#define Z_IS_1166U_EQ_1166(...) \, +#define Z_IS_1166_EQ_1166U(...) \, +#define Z_IS_1166U_EQ_1166U(...) \, +#define Z_IS_1167_EQ_1167(...) \, +#define Z_IS_1167U_EQ_1167(...) \, +#define Z_IS_1167_EQ_1167U(...) \, +#define Z_IS_1167U_EQ_1167U(...) \, +#define Z_IS_1168_EQ_1168(...) \, +#define Z_IS_1168U_EQ_1168(...) \, +#define Z_IS_1168_EQ_1168U(...) \, +#define Z_IS_1168U_EQ_1168U(...) \, +#define Z_IS_1169_EQ_1169(...) \, +#define Z_IS_1169U_EQ_1169(...) \, +#define Z_IS_1169_EQ_1169U(...) \, +#define Z_IS_1169U_EQ_1169U(...) \, +#define Z_IS_1170_EQ_1170(...) \, +#define Z_IS_1170U_EQ_1170(...) \, +#define Z_IS_1170_EQ_1170U(...) \, +#define Z_IS_1170U_EQ_1170U(...) \, +#define Z_IS_1171_EQ_1171(...) \, +#define Z_IS_1171U_EQ_1171(...) \, +#define Z_IS_1171_EQ_1171U(...) \, +#define Z_IS_1171U_EQ_1171U(...) \, +#define Z_IS_1172_EQ_1172(...) \, +#define Z_IS_1172U_EQ_1172(...) \, +#define Z_IS_1172_EQ_1172U(...) \, +#define Z_IS_1172U_EQ_1172U(...) \, +#define Z_IS_1173_EQ_1173(...) \, +#define Z_IS_1173U_EQ_1173(...) \, +#define Z_IS_1173_EQ_1173U(...) \, +#define Z_IS_1173U_EQ_1173U(...) \, +#define Z_IS_1174_EQ_1174(...) \, +#define Z_IS_1174U_EQ_1174(...) \, +#define Z_IS_1174_EQ_1174U(...) \, +#define Z_IS_1174U_EQ_1174U(...) \, +#define Z_IS_1175_EQ_1175(...) \, +#define Z_IS_1175U_EQ_1175(...) \, +#define Z_IS_1175_EQ_1175U(...) \, +#define Z_IS_1175U_EQ_1175U(...) \, +#define Z_IS_1176_EQ_1176(...) \, +#define Z_IS_1176U_EQ_1176(...) \, +#define Z_IS_1176_EQ_1176U(...) \, +#define Z_IS_1176U_EQ_1176U(...) \, +#define Z_IS_1177_EQ_1177(...) \, +#define Z_IS_1177U_EQ_1177(...) \, +#define Z_IS_1177_EQ_1177U(...) \, +#define Z_IS_1177U_EQ_1177U(...) \, +#define Z_IS_1178_EQ_1178(...) \, +#define Z_IS_1178U_EQ_1178(...) \, +#define Z_IS_1178_EQ_1178U(...) \, +#define Z_IS_1178U_EQ_1178U(...) \, +#define Z_IS_1179_EQ_1179(...) \, +#define Z_IS_1179U_EQ_1179(...) \, +#define Z_IS_1179_EQ_1179U(...) \, +#define Z_IS_1179U_EQ_1179U(...) \, +#define Z_IS_1180_EQ_1180(...) \, +#define Z_IS_1180U_EQ_1180(...) \, +#define Z_IS_1180_EQ_1180U(...) \, +#define Z_IS_1180U_EQ_1180U(...) \, +#define Z_IS_1181_EQ_1181(...) \, +#define Z_IS_1181U_EQ_1181(...) \, +#define Z_IS_1181_EQ_1181U(...) \, +#define Z_IS_1181U_EQ_1181U(...) \, +#define Z_IS_1182_EQ_1182(...) \, +#define Z_IS_1182U_EQ_1182(...) \, +#define Z_IS_1182_EQ_1182U(...) \, +#define Z_IS_1182U_EQ_1182U(...) \, +#define Z_IS_1183_EQ_1183(...) \, +#define Z_IS_1183U_EQ_1183(...) \, +#define Z_IS_1183_EQ_1183U(...) \, +#define Z_IS_1183U_EQ_1183U(...) \, +#define Z_IS_1184_EQ_1184(...) \, +#define Z_IS_1184U_EQ_1184(...) \, +#define Z_IS_1184_EQ_1184U(...) \, +#define Z_IS_1184U_EQ_1184U(...) \, +#define Z_IS_1185_EQ_1185(...) \, +#define Z_IS_1185U_EQ_1185(...) \, +#define Z_IS_1185_EQ_1185U(...) \, +#define Z_IS_1185U_EQ_1185U(...) \, +#define Z_IS_1186_EQ_1186(...) \, +#define Z_IS_1186U_EQ_1186(...) \, +#define Z_IS_1186_EQ_1186U(...) \, +#define Z_IS_1186U_EQ_1186U(...) \, +#define Z_IS_1187_EQ_1187(...) \, +#define Z_IS_1187U_EQ_1187(...) \, +#define Z_IS_1187_EQ_1187U(...) \, +#define Z_IS_1187U_EQ_1187U(...) \, +#define Z_IS_1188_EQ_1188(...) \, +#define Z_IS_1188U_EQ_1188(...) \, +#define Z_IS_1188_EQ_1188U(...) \, +#define Z_IS_1188U_EQ_1188U(...) \, +#define Z_IS_1189_EQ_1189(...) \, +#define Z_IS_1189U_EQ_1189(...) \, +#define Z_IS_1189_EQ_1189U(...) \, +#define Z_IS_1189U_EQ_1189U(...) \, +#define Z_IS_1190_EQ_1190(...) \, +#define Z_IS_1190U_EQ_1190(...) \, +#define Z_IS_1190_EQ_1190U(...) \, +#define Z_IS_1190U_EQ_1190U(...) \, +#define Z_IS_1191_EQ_1191(...) \, +#define Z_IS_1191U_EQ_1191(...) \, +#define Z_IS_1191_EQ_1191U(...) \, +#define Z_IS_1191U_EQ_1191U(...) \, +#define Z_IS_1192_EQ_1192(...) \, +#define Z_IS_1192U_EQ_1192(...) \, +#define Z_IS_1192_EQ_1192U(...) \, +#define Z_IS_1192U_EQ_1192U(...) \, +#define Z_IS_1193_EQ_1193(...) \, +#define Z_IS_1193U_EQ_1193(...) \, +#define Z_IS_1193_EQ_1193U(...) \, +#define Z_IS_1193U_EQ_1193U(...) \, +#define Z_IS_1194_EQ_1194(...) \, +#define Z_IS_1194U_EQ_1194(...) \, +#define Z_IS_1194_EQ_1194U(...) \, +#define Z_IS_1194U_EQ_1194U(...) \, +#define Z_IS_1195_EQ_1195(...) \, +#define Z_IS_1195U_EQ_1195(...) \, +#define Z_IS_1195_EQ_1195U(...) \, +#define Z_IS_1195U_EQ_1195U(...) \, +#define Z_IS_1196_EQ_1196(...) \, +#define Z_IS_1196U_EQ_1196(...) \, +#define Z_IS_1196_EQ_1196U(...) \, +#define Z_IS_1196U_EQ_1196U(...) \, +#define Z_IS_1197_EQ_1197(...) \, +#define Z_IS_1197U_EQ_1197(...) \, +#define Z_IS_1197_EQ_1197U(...) \, +#define Z_IS_1197U_EQ_1197U(...) \, +#define Z_IS_1198_EQ_1198(...) \, +#define Z_IS_1198U_EQ_1198(...) \, +#define Z_IS_1198_EQ_1198U(...) \, +#define Z_IS_1198U_EQ_1198U(...) \, +#define Z_IS_1199_EQ_1199(...) \, +#define Z_IS_1199U_EQ_1199(...) \, +#define Z_IS_1199_EQ_1199U(...) \, +#define Z_IS_1199U_EQ_1199U(...) \, +#define Z_IS_1200_EQ_1200(...) \, +#define Z_IS_1200U_EQ_1200(...) \, +#define Z_IS_1200_EQ_1200U(...) \, +#define Z_IS_1200U_EQ_1200U(...) \, +#define Z_IS_1201_EQ_1201(...) \, +#define Z_IS_1201U_EQ_1201(...) \, +#define Z_IS_1201_EQ_1201U(...) \, +#define Z_IS_1201U_EQ_1201U(...) \, +#define Z_IS_1202_EQ_1202(...) \, +#define Z_IS_1202U_EQ_1202(...) \, +#define Z_IS_1202_EQ_1202U(...) \, +#define Z_IS_1202U_EQ_1202U(...) \, +#define Z_IS_1203_EQ_1203(...) \, +#define Z_IS_1203U_EQ_1203(...) \, +#define Z_IS_1203_EQ_1203U(...) \, +#define Z_IS_1203U_EQ_1203U(...) \, +#define Z_IS_1204_EQ_1204(...) \, +#define Z_IS_1204U_EQ_1204(...) \, +#define Z_IS_1204_EQ_1204U(...) \, +#define Z_IS_1204U_EQ_1204U(...) \, +#define Z_IS_1205_EQ_1205(...) \, +#define Z_IS_1205U_EQ_1205(...) \, +#define Z_IS_1205_EQ_1205U(...) \, +#define Z_IS_1205U_EQ_1205U(...) \, +#define Z_IS_1206_EQ_1206(...) \, +#define Z_IS_1206U_EQ_1206(...) \, +#define Z_IS_1206_EQ_1206U(...) \, +#define Z_IS_1206U_EQ_1206U(...) \, +#define Z_IS_1207_EQ_1207(...) \, +#define Z_IS_1207U_EQ_1207(...) \, +#define Z_IS_1207_EQ_1207U(...) \, +#define Z_IS_1207U_EQ_1207U(...) \, +#define Z_IS_1208_EQ_1208(...) \, +#define Z_IS_1208U_EQ_1208(...) \, +#define Z_IS_1208_EQ_1208U(...) \, +#define Z_IS_1208U_EQ_1208U(...) \, +#define Z_IS_1209_EQ_1209(...) \, +#define Z_IS_1209U_EQ_1209(...) \, +#define Z_IS_1209_EQ_1209U(...) \, +#define Z_IS_1209U_EQ_1209U(...) \, +#define Z_IS_1210_EQ_1210(...) \, +#define Z_IS_1210U_EQ_1210(...) \, +#define Z_IS_1210_EQ_1210U(...) \, +#define Z_IS_1210U_EQ_1210U(...) \, +#define Z_IS_1211_EQ_1211(...) \, +#define Z_IS_1211U_EQ_1211(...) \, +#define Z_IS_1211_EQ_1211U(...) \, +#define Z_IS_1211U_EQ_1211U(...) \, +#define Z_IS_1212_EQ_1212(...) \, +#define Z_IS_1212U_EQ_1212(...) \, +#define Z_IS_1212_EQ_1212U(...) \, +#define Z_IS_1212U_EQ_1212U(...) \, +#define Z_IS_1213_EQ_1213(...) \, +#define Z_IS_1213U_EQ_1213(...) \, +#define Z_IS_1213_EQ_1213U(...) \, +#define Z_IS_1213U_EQ_1213U(...) \, +#define Z_IS_1214_EQ_1214(...) \, +#define Z_IS_1214U_EQ_1214(...) \, +#define Z_IS_1214_EQ_1214U(...) \, +#define Z_IS_1214U_EQ_1214U(...) \, +#define Z_IS_1215_EQ_1215(...) \, +#define Z_IS_1215U_EQ_1215(...) \, +#define Z_IS_1215_EQ_1215U(...) \, +#define Z_IS_1215U_EQ_1215U(...) \, +#define Z_IS_1216_EQ_1216(...) \, +#define Z_IS_1216U_EQ_1216(...) \, +#define Z_IS_1216_EQ_1216U(...) \, +#define Z_IS_1216U_EQ_1216U(...) \, +#define Z_IS_1217_EQ_1217(...) \, +#define Z_IS_1217U_EQ_1217(...) \, +#define Z_IS_1217_EQ_1217U(...) \, +#define Z_IS_1217U_EQ_1217U(...) \, +#define Z_IS_1218_EQ_1218(...) \, +#define Z_IS_1218U_EQ_1218(...) \, +#define Z_IS_1218_EQ_1218U(...) \, +#define Z_IS_1218U_EQ_1218U(...) \, +#define Z_IS_1219_EQ_1219(...) \, +#define Z_IS_1219U_EQ_1219(...) \, +#define Z_IS_1219_EQ_1219U(...) \, +#define Z_IS_1219U_EQ_1219U(...) \, +#define Z_IS_1220_EQ_1220(...) \, +#define Z_IS_1220U_EQ_1220(...) \, +#define Z_IS_1220_EQ_1220U(...) \, +#define Z_IS_1220U_EQ_1220U(...) \, +#define Z_IS_1221_EQ_1221(...) \, +#define Z_IS_1221U_EQ_1221(...) \, +#define Z_IS_1221_EQ_1221U(...) \, +#define Z_IS_1221U_EQ_1221U(...) \, +#define Z_IS_1222_EQ_1222(...) \, +#define Z_IS_1222U_EQ_1222(...) \, +#define Z_IS_1222_EQ_1222U(...) \, +#define Z_IS_1222U_EQ_1222U(...) \, +#define Z_IS_1223_EQ_1223(...) \, +#define Z_IS_1223U_EQ_1223(...) \, +#define Z_IS_1223_EQ_1223U(...) \, +#define Z_IS_1223U_EQ_1223U(...) \, +#define Z_IS_1224_EQ_1224(...) \, +#define Z_IS_1224U_EQ_1224(...) \, +#define Z_IS_1224_EQ_1224U(...) \, +#define Z_IS_1224U_EQ_1224U(...) \, +#define Z_IS_1225_EQ_1225(...) \, +#define Z_IS_1225U_EQ_1225(...) \, +#define Z_IS_1225_EQ_1225U(...) \, +#define Z_IS_1225U_EQ_1225U(...) \, +#define Z_IS_1226_EQ_1226(...) \, +#define Z_IS_1226U_EQ_1226(...) \, +#define Z_IS_1226_EQ_1226U(...) \, +#define Z_IS_1226U_EQ_1226U(...) \, +#define Z_IS_1227_EQ_1227(...) \, +#define Z_IS_1227U_EQ_1227(...) \, +#define Z_IS_1227_EQ_1227U(...) \, +#define Z_IS_1227U_EQ_1227U(...) \, +#define Z_IS_1228_EQ_1228(...) \, +#define Z_IS_1228U_EQ_1228(...) \, +#define Z_IS_1228_EQ_1228U(...) \, +#define Z_IS_1228U_EQ_1228U(...) \, +#define Z_IS_1229_EQ_1229(...) \, +#define Z_IS_1229U_EQ_1229(...) \, +#define Z_IS_1229_EQ_1229U(...) \, +#define Z_IS_1229U_EQ_1229U(...) \, +#define Z_IS_1230_EQ_1230(...) \, +#define Z_IS_1230U_EQ_1230(...) \, +#define Z_IS_1230_EQ_1230U(...) \, +#define Z_IS_1230U_EQ_1230U(...) \, +#define Z_IS_1231_EQ_1231(...) \, +#define Z_IS_1231U_EQ_1231(...) \, +#define Z_IS_1231_EQ_1231U(...) \, +#define Z_IS_1231U_EQ_1231U(...) \, +#define Z_IS_1232_EQ_1232(...) \, +#define Z_IS_1232U_EQ_1232(...) \, +#define Z_IS_1232_EQ_1232U(...) \, +#define Z_IS_1232U_EQ_1232U(...) \, +#define Z_IS_1233_EQ_1233(...) \, +#define Z_IS_1233U_EQ_1233(...) \, +#define Z_IS_1233_EQ_1233U(...) \, +#define Z_IS_1233U_EQ_1233U(...) \, +#define Z_IS_1234_EQ_1234(...) \, +#define Z_IS_1234U_EQ_1234(...) \, +#define Z_IS_1234_EQ_1234U(...) \, +#define Z_IS_1234U_EQ_1234U(...) \, +#define Z_IS_1235_EQ_1235(...) \, +#define Z_IS_1235U_EQ_1235(...) \, +#define Z_IS_1235_EQ_1235U(...) \, +#define Z_IS_1235U_EQ_1235U(...) \, +#define Z_IS_1236_EQ_1236(...) \, +#define Z_IS_1236U_EQ_1236(...) \, +#define Z_IS_1236_EQ_1236U(...) \, +#define Z_IS_1236U_EQ_1236U(...) \, +#define Z_IS_1237_EQ_1237(...) \, +#define Z_IS_1237U_EQ_1237(...) \, +#define Z_IS_1237_EQ_1237U(...) \, +#define Z_IS_1237U_EQ_1237U(...) \, +#define Z_IS_1238_EQ_1238(...) \, +#define Z_IS_1238U_EQ_1238(...) \, +#define Z_IS_1238_EQ_1238U(...) \, +#define Z_IS_1238U_EQ_1238U(...) \, +#define Z_IS_1239_EQ_1239(...) \, +#define Z_IS_1239U_EQ_1239(...) \, +#define Z_IS_1239_EQ_1239U(...) \, +#define Z_IS_1239U_EQ_1239U(...) \, +#define Z_IS_1240_EQ_1240(...) \, +#define Z_IS_1240U_EQ_1240(...) \, +#define Z_IS_1240_EQ_1240U(...) \, +#define Z_IS_1240U_EQ_1240U(...) \, +#define Z_IS_1241_EQ_1241(...) \, +#define Z_IS_1241U_EQ_1241(...) \, +#define Z_IS_1241_EQ_1241U(...) \, +#define Z_IS_1241U_EQ_1241U(...) \, +#define Z_IS_1242_EQ_1242(...) \, +#define Z_IS_1242U_EQ_1242(...) \, +#define Z_IS_1242_EQ_1242U(...) \, +#define Z_IS_1242U_EQ_1242U(...) \, +#define Z_IS_1243_EQ_1243(...) \, +#define Z_IS_1243U_EQ_1243(...) \, +#define Z_IS_1243_EQ_1243U(...) \, +#define Z_IS_1243U_EQ_1243U(...) \, +#define Z_IS_1244_EQ_1244(...) \, +#define Z_IS_1244U_EQ_1244(...) \, +#define Z_IS_1244_EQ_1244U(...) \, +#define Z_IS_1244U_EQ_1244U(...) \, +#define Z_IS_1245_EQ_1245(...) \, +#define Z_IS_1245U_EQ_1245(...) \, +#define Z_IS_1245_EQ_1245U(...) \, +#define Z_IS_1245U_EQ_1245U(...) \, +#define Z_IS_1246_EQ_1246(...) \, +#define Z_IS_1246U_EQ_1246(...) \, +#define Z_IS_1246_EQ_1246U(...) \, +#define Z_IS_1246U_EQ_1246U(...) \, +#define Z_IS_1247_EQ_1247(...) \, +#define Z_IS_1247U_EQ_1247(...) \, +#define Z_IS_1247_EQ_1247U(...) \, +#define Z_IS_1247U_EQ_1247U(...) \, +#define Z_IS_1248_EQ_1248(...) \, +#define Z_IS_1248U_EQ_1248(...) \, +#define Z_IS_1248_EQ_1248U(...) \, +#define Z_IS_1248U_EQ_1248U(...) \, +#define Z_IS_1249_EQ_1249(...) \, +#define Z_IS_1249U_EQ_1249(...) \, +#define Z_IS_1249_EQ_1249U(...) \, +#define Z_IS_1249U_EQ_1249U(...) \, +#define Z_IS_1250_EQ_1250(...) \, +#define Z_IS_1250U_EQ_1250(...) \, +#define Z_IS_1250_EQ_1250U(...) \, +#define Z_IS_1250U_EQ_1250U(...) \, +#define Z_IS_1251_EQ_1251(...) \, +#define Z_IS_1251U_EQ_1251(...) \, +#define Z_IS_1251_EQ_1251U(...) \, +#define Z_IS_1251U_EQ_1251U(...) \, +#define Z_IS_1252_EQ_1252(...) \, +#define Z_IS_1252U_EQ_1252(...) \, +#define Z_IS_1252_EQ_1252U(...) \, +#define Z_IS_1252U_EQ_1252U(...) \, +#define Z_IS_1253_EQ_1253(...) \, +#define Z_IS_1253U_EQ_1253(...) \, +#define Z_IS_1253_EQ_1253U(...) \, +#define Z_IS_1253U_EQ_1253U(...) \, +#define Z_IS_1254_EQ_1254(...) \, +#define Z_IS_1254U_EQ_1254(...) \, +#define Z_IS_1254_EQ_1254U(...) \, +#define Z_IS_1254U_EQ_1254U(...) \, +#define Z_IS_1255_EQ_1255(...) \, +#define Z_IS_1255U_EQ_1255(...) \, +#define Z_IS_1255_EQ_1255U(...) \, +#define Z_IS_1255U_EQ_1255U(...) \, +#define Z_IS_1256_EQ_1256(...) \, +#define Z_IS_1256U_EQ_1256(...) \, +#define Z_IS_1256_EQ_1256U(...) \, +#define Z_IS_1256U_EQ_1256U(...) \, +#define Z_IS_1257_EQ_1257(...) \, +#define Z_IS_1257U_EQ_1257(...) \, +#define Z_IS_1257_EQ_1257U(...) \, +#define Z_IS_1257U_EQ_1257U(...) \, +#define Z_IS_1258_EQ_1258(...) \, +#define Z_IS_1258U_EQ_1258(...) \, +#define Z_IS_1258_EQ_1258U(...) \, +#define Z_IS_1258U_EQ_1258U(...) \, +#define Z_IS_1259_EQ_1259(...) \, +#define Z_IS_1259U_EQ_1259(...) \, +#define Z_IS_1259_EQ_1259U(...) \, +#define Z_IS_1259U_EQ_1259U(...) \, +#define Z_IS_1260_EQ_1260(...) \, +#define Z_IS_1260U_EQ_1260(...) \, +#define Z_IS_1260_EQ_1260U(...) \, +#define Z_IS_1260U_EQ_1260U(...) \, +#define Z_IS_1261_EQ_1261(...) \, +#define Z_IS_1261U_EQ_1261(...) \, +#define Z_IS_1261_EQ_1261U(...) \, +#define Z_IS_1261U_EQ_1261U(...) \, +#define Z_IS_1262_EQ_1262(...) \, +#define Z_IS_1262U_EQ_1262(...) \, +#define Z_IS_1262_EQ_1262U(...) \, +#define Z_IS_1262U_EQ_1262U(...) \, +#define Z_IS_1263_EQ_1263(...) \, +#define Z_IS_1263U_EQ_1263(...) \, +#define Z_IS_1263_EQ_1263U(...) \, +#define Z_IS_1263U_EQ_1263U(...) \, +#define Z_IS_1264_EQ_1264(...) \, +#define Z_IS_1264U_EQ_1264(...) \, +#define Z_IS_1264_EQ_1264U(...) \, +#define Z_IS_1264U_EQ_1264U(...) \, +#define Z_IS_1265_EQ_1265(...) \, +#define Z_IS_1265U_EQ_1265(...) \, +#define Z_IS_1265_EQ_1265U(...) \, +#define Z_IS_1265U_EQ_1265U(...) \, +#define Z_IS_1266_EQ_1266(...) \, +#define Z_IS_1266U_EQ_1266(...) \, +#define Z_IS_1266_EQ_1266U(...) \, +#define Z_IS_1266U_EQ_1266U(...) \, +#define Z_IS_1267_EQ_1267(...) \, +#define Z_IS_1267U_EQ_1267(...) \, +#define Z_IS_1267_EQ_1267U(...) \, +#define Z_IS_1267U_EQ_1267U(...) \, +#define Z_IS_1268_EQ_1268(...) \, +#define Z_IS_1268U_EQ_1268(...) \, +#define Z_IS_1268_EQ_1268U(...) \, +#define Z_IS_1268U_EQ_1268U(...) \, +#define Z_IS_1269_EQ_1269(...) \, +#define Z_IS_1269U_EQ_1269(...) \, +#define Z_IS_1269_EQ_1269U(...) \, +#define Z_IS_1269U_EQ_1269U(...) \, +#define Z_IS_1270_EQ_1270(...) \, +#define Z_IS_1270U_EQ_1270(...) \, +#define Z_IS_1270_EQ_1270U(...) \, +#define Z_IS_1270U_EQ_1270U(...) \, +#define Z_IS_1271_EQ_1271(...) \, +#define Z_IS_1271U_EQ_1271(...) \, +#define Z_IS_1271_EQ_1271U(...) \, +#define Z_IS_1271U_EQ_1271U(...) \, +#define Z_IS_1272_EQ_1272(...) \, +#define Z_IS_1272U_EQ_1272(...) \, +#define Z_IS_1272_EQ_1272U(...) \, +#define Z_IS_1272U_EQ_1272U(...) \, +#define Z_IS_1273_EQ_1273(...) \, +#define Z_IS_1273U_EQ_1273(...) \, +#define Z_IS_1273_EQ_1273U(...) \, +#define Z_IS_1273U_EQ_1273U(...) \, +#define Z_IS_1274_EQ_1274(...) \, +#define Z_IS_1274U_EQ_1274(...) \, +#define Z_IS_1274_EQ_1274U(...) \, +#define Z_IS_1274U_EQ_1274U(...) \, +#define Z_IS_1275_EQ_1275(...) \, +#define Z_IS_1275U_EQ_1275(...) \, +#define Z_IS_1275_EQ_1275U(...) \, +#define Z_IS_1275U_EQ_1275U(...) \, +#define Z_IS_1276_EQ_1276(...) \, +#define Z_IS_1276U_EQ_1276(...) \, +#define Z_IS_1276_EQ_1276U(...) \, +#define Z_IS_1276U_EQ_1276U(...) \, +#define Z_IS_1277_EQ_1277(...) \, +#define Z_IS_1277U_EQ_1277(...) \, +#define Z_IS_1277_EQ_1277U(...) \, +#define Z_IS_1277U_EQ_1277U(...) \, +#define Z_IS_1278_EQ_1278(...) \, +#define Z_IS_1278U_EQ_1278(...) \, +#define Z_IS_1278_EQ_1278U(...) \, +#define Z_IS_1278U_EQ_1278U(...) \, +#define Z_IS_1279_EQ_1279(...) \, +#define Z_IS_1279U_EQ_1279(...) \, +#define Z_IS_1279_EQ_1279U(...) \, +#define Z_IS_1279U_EQ_1279U(...) \, +#define Z_IS_1280_EQ_1280(...) \, +#define Z_IS_1280U_EQ_1280(...) \, +#define Z_IS_1280_EQ_1280U(...) \, +#define Z_IS_1280U_EQ_1280U(...) \, +#define Z_IS_1281_EQ_1281(...) \, +#define Z_IS_1281U_EQ_1281(...) \, +#define Z_IS_1281_EQ_1281U(...) \, +#define Z_IS_1281U_EQ_1281U(...) \, +#define Z_IS_1282_EQ_1282(...) \, +#define Z_IS_1282U_EQ_1282(...) \, +#define Z_IS_1282_EQ_1282U(...) \, +#define Z_IS_1282U_EQ_1282U(...) \, +#define Z_IS_1283_EQ_1283(...) \, +#define Z_IS_1283U_EQ_1283(...) \, +#define Z_IS_1283_EQ_1283U(...) \, +#define Z_IS_1283U_EQ_1283U(...) \, +#define Z_IS_1284_EQ_1284(...) \, +#define Z_IS_1284U_EQ_1284(...) \, +#define Z_IS_1284_EQ_1284U(...) \, +#define Z_IS_1284U_EQ_1284U(...) \, +#define Z_IS_1285_EQ_1285(...) \, +#define Z_IS_1285U_EQ_1285(...) \, +#define Z_IS_1285_EQ_1285U(...) \, +#define Z_IS_1285U_EQ_1285U(...) \, +#define Z_IS_1286_EQ_1286(...) \, +#define Z_IS_1286U_EQ_1286(...) \, +#define Z_IS_1286_EQ_1286U(...) \, +#define Z_IS_1286U_EQ_1286U(...) \, +#define Z_IS_1287_EQ_1287(...) \, +#define Z_IS_1287U_EQ_1287(...) \, +#define Z_IS_1287_EQ_1287U(...) \, +#define Z_IS_1287U_EQ_1287U(...) \, +#define Z_IS_1288_EQ_1288(...) \, +#define Z_IS_1288U_EQ_1288(...) \, +#define Z_IS_1288_EQ_1288U(...) \, +#define Z_IS_1288U_EQ_1288U(...) \, +#define Z_IS_1289_EQ_1289(...) \, +#define Z_IS_1289U_EQ_1289(...) \, +#define Z_IS_1289_EQ_1289U(...) \, +#define Z_IS_1289U_EQ_1289U(...) \, +#define Z_IS_1290_EQ_1290(...) \, +#define Z_IS_1290U_EQ_1290(...) \, +#define Z_IS_1290_EQ_1290U(...) \, +#define Z_IS_1290U_EQ_1290U(...) \, +#define Z_IS_1291_EQ_1291(...) \, +#define Z_IS_1291U_EQ_1291(...) \, +#define Z_IS_1291_EQ_1291U(...) \, +#define Z_IS_1291U_EQ_1291U(...) \, +#define Z_IS_1292_EQ_1292(...) \, +#define Z_IS_1292U_EQ_1292(...) \, +#define Z_IS_1292_EQ_1292U(...) \, +#define Z_IS_1292U_EQ_1292U(...) \, +#define Z_IS_1293_EQ_1293(...) \, +#define Z_IS_1293U_EQ_1293(...) \, +#define Z_IS_1293_EQ_1293U(...) \, +#define Z_IS_1293U_EQ_1293U(...) \, +#define Z_IS_1294_EQ_1294(...) \, +#define Z_IS_1294U_EQ_1294(...) \, +#define Z_IS_1294_EQ_1294U(...) \, +#define Z_IS_1294U_EQ_1294U(...) \, +#define Z_IS_1295_EQ_1295(...) \, +#define Z_IS_1295U_EQ_1295(...) \, +#define Z_IS_1295_EQ_1295U(...) \, +#define Z_IS_1295U_EQ_1295U(...) \, +#define Z_IS_1296_EQ_1296(...) \, +#define Z_IS_1296U_EQ_1296(...) \, +#define Z_IS_1296_EQ_1296U(...) \, +#define Z_IS_1296U_EQ_1296U(...) \, +#define Z_IS_1297_EQ_1297(...) \, +#define Z_IS_1297U_EQ_1297(...) \, +#define Z_IS_1297_EQ_1297U(...) \, +#define Z_IS_1297U_EQ_1297U(...) \, +#define Z_IS_1298_EQ_1298(...) \, +#define Z_IS_1298U_EQ_1298(...) \, +#define Z_IS_1298_EQ_1298U(...) \, +#define Z_IS_1298U_EQ_1298U(...) \, +#define Z_IS_1299_EQ_1299(...) \, +#define Z_IS_1299U_EQ_1299(...) \, +#define Z_IS_1299_EQ_1299U(...) \, +#define Z_IS_1299U_EQ_1299U(...) \, +#define Z_IS_1300_EQ_1300(...) \, +#define Z_IS_1300U_EQ_1300(...) \, +#define Z_IS_1300_EQ_1300U(...) \, +#define Z_IS_1300U_EQ_1300U(...) \, +#define Z_IS_1301_EQ_1301(...) \, +#define Z_IS_1301U_EQ_1301(...) \, +#define Z_IS_1301_EQ_1301U(...) \, +#define Z_IS_1301U_EQ_1301U(...) \, +#define Z_IS_1302_EQ_1302(...) \, +#define Z_IS_1302U_EQ_1302(...) \, +#define Z_IS_1302_EQ_1302U(...) \, +#define Z_IS_1302U_EQ_1302U(...) \, +#define Z_IS_1303_EQ_1303(...) \, +#define Z_IS_1303U_EQ_1303(...) \, +#define Z_IS_1303_EQ_1303U(...) \, +#define Z_IS_1303U_EQ_1303U(...) \, +#define Z_IS_1304_EQ_1304(...) \, +#define Z_IS_1304U_EQ_1304(...) \, +#define Z_IS_1304_EQ_1304U(...) \, +#define Z_IS_1304U_EQ_1304U(...) \, +#define Z_IS_1305_EQ_1305(...) \, +#define Z_IS_1305U_EQ_1305(...) \, +#define Z_IS_1305_EQ_1305U(...) \, +#define Z_IS_1305U_EQ_1305U(...) \, +#define Z_IS_1306_EQ_1306(...) \, +#define Z_IS_1306U_EQ_1306(...) \, +#define Z_IS_1306_EQ_1306U(...) \, +#define Z_IS_1306U_EQ_1306U(...) \, +#define Z_IS_1307_EQ_1307(...) \, +#define Z_IS_1307U_EQ_1307(...) \, +#define Z_IS_1307_EQ_1307U(...) \, +#define Z_IS_1307U_EQ_1307U(...) \, +#define Z_IS_1308_EQ_1308(...) \, +#define Z_IS_1308U_EQ_1308(...) \, +#define Z_IS_1308_EQ_1308U(...) \, +#define Z_IS_1308U_EQ_1308U(...) \, +#define Z_IS_1309_EQ_1309(...) \, +#define Z_IS_1309U_EQ_1309(...) \, +#define Z_IS_1309_EQ_1309U(...) \, +#define Z_IS_1309U_EQ_1309U(...) \, +#define Z_IS_1310_EQ_1310(...) \, +#define Z_IS_1310U_EQ_1310(...) \, +#define Z_IS_1310_EQ_1310U(...) \, +#define Z_IS_1310U_EQ_1310U(...) \, +#define Z_IS_1311_EQ_1311(...) \, +#define Z_IS_1311U_EQ_1311(...) \, +#define Z_IS_1311_EQ_1311U(...) \, +#define Z_IS_1311U_EQ_1311U(...) \, +#define Z_IS_1312_EQ_1312(...) \, +#define Z_IS_1312U_EQ_1312(...) \, +#define Z_IS_1312_EQ_1312U(...) \, +#define Z_IS_1312U_EQ_1312U(...) \, +#define Z_IS_1313_EQ_1313(...) \, +#define Z_IS_1313U_EQ_1313(...) \, +#define Z_IS_1313_EQ_1313U(...) \, +#define Z_IS_1313U_EQ_1313U(...) \, +#define Z_IS_1314_EQ_1314(...) \, +#define Z_IS_1314U_EQ_1314(...) \, +#define Z_IS_1314_EQ_1314U(...) \, +#define Z_IS_1314U_EQ_1314U(...) \, +#define Z_IS_1315_EQ_1315(...) \, +#define Z_IS_1315U_EQ_1315(...) \, +#define Z_IS_1315_EQ_1315U(...) \, +#define Z_IS_1315U_EQ_1315U(...) \, +#define Z_IS_1316_EQ_1316(...) \, +#define Z_IS_1316U_EQ_1316(...) \, +#define Z_IS_1316_EQ_1316U(...) \, +#define Z_IS_1316U_EQ_1316U(...) \, +#define Z_IS_1317_EQ_1317(...) \, +#define Z_IS_1317U_EQ_1317(...) \, +#define Z_IS_1317_EQ_1317U(...) \, +#define Z_IS_1317U_EQ_1317U(...) \, +#define Z_IS_1318_EQ_1318(...) \, +#define Z_IS_1318U_EQ_1318(...) \, +#define Z_IS_1318_EQ_1318U(...) \, +#define Z_IS_1318U_EQ_1318U(...) \, +#define Z_IS_1319_EQ_1319(...) \, +#define Z_IS_1319U_EQ_1319(...) \, +#define Z_IS_1319_EQ_1319U(...) \, +#define Z_IS_1319U_EQ_1319U(...) \, +#define Z_IS_1320_EQ_1320(...) \, +#define Z_IS_1320U_EQ_1320(...) \, +#define Z_IS_1320_EQ_1320U(...) \, +#define Z_IS_1320U_EQ_1320U(...) \, +#define Z_IS_1321_EQ_1321(...) \, +#define Z_IS_1321U_EQ_1321(...) \, +#define Z_IS_1321_EQ_1321U(...) \, +#define Z_IS_1321U_EQ_1321U(...) \, +#define Z_IS_1322_EQ_1322(...) \, +#define Z_IS_1322U_EQ_1322(...) \, +#define Z_IS_1322_EQ_1322U(...) \, +#define Z_IS_1322U_EQ_1322U(...) \, +#define Z_IS_1323_EQ_1323(...) \, +#define Z_IS_1323U_EQ_1323(...) \, +#define Z_IS_1323_EQ_1323U(...) \, +#define Z_IS_1323U_EQ_1323U(...) \, +#define Z_IS_1324_EQ_1324(...) \, +#define Z_IS_1324U_EQ_1324(...) \, +#define Z_IS_1324_EQ_1324U(...) \, +#define Z_IS_1324U_EQ_1324U(...) \, +#define Z_IS_1325_EQ_1325(...) \, +#define Z_IS_1325U_EQ_1325(...) \, +#define Z_IS_1325_EQ_1325U(...) \, +#define Z_IS_1325U_EQ_1325U(...) \, +#define Z_IS_1326_EQ_1326(...) \, +#define Z_IS_1326U_EQ_1326(...) \, +#define Z_IS_1326_EQ_1326U(...) \, +#define Z_IS_1326U_EQ_1326U(...) \, +#define Z_IS_1327_EQ_1327(...) \, +#define Z_IS_1327U_EQ_1327(...) \, +#define Z_IS_1327_EQ_1327U(...) \, +#define Z_IS_1327U_EQ_1327U(...) \, +#define Z_IS_1328_EQ_1328(...) \, +#define Z_IS_1328U_EQ_1328(...) \, +#define Z_IS_1328_EQ_1328U(...) \, +#define Z_IS_1328U_EQ_1328U(...) \, +#define Z_IS_1329_EQ_1329(...) \, +#define Z_IS_1329U_EQ_1329(...) \, +#define Z_IS_1329_EQ_1329U(...) \, +#define Z_IS_1329U_EQ_1329U(...) \, +#define Z_IS_1330_EQ_1330(...) \, +#define Z_IS_1330U_EQ_1330(...) \, +#define Z_IS_1330_EQ_1330U(...) \, +#define Z_IS_1330U_EQ_1330U(...) \, +#define Z_IS_1331_EQ_1331(...) \, +#define Z_IS_1331U_EQ_1331(...) \, +#define Z_IS_1331_EQ_1331U(...) \, +#define Z_IS_1331U_EQ_1331U(...) \, +#define Z_IS_1332_EQ_1332(...) \, +#define Z_IS_1332U_EQ_1332(...) \, +#define Z_IS_1332_EQ_1332U(...) \, +#define Z_IS_1332U_EQ_1332U(...) \, +#define Z_IS_1333_EQ_1333(...) \, +#define Z_IS_1333U_EQ_1333(...) \, +#define Z_IS_1333_EQ_1333U(...) \, +#define Z_IS_1333U_EQ_1333U(...) \, +#define Z_IS_1334_EQ_1334(...) \, +#define Z_IS_1334U_EQ_1334(...) \, +#define Z_IS_1334_EQ_1334U(...) \, +#define Z_IS_1334U_EQ_1334U(...) \, +#define Z_IS_1335_EQ_1335(...) \, +#define Z_IS_1335U_EQ_1335(...) \, +#define Z_IS_1335_EQ_1335U(...) \, +#define Z_IS_1335U_EQ_1335U(...) \, +#define Z_IS_1336_EQ_1336(...) \, +#define Z_IS_1336U_EQ_1336(...) \, +#define Z_IS_1336_EQ_1336U(...) \, +#define Z_IS_1336U_EQ_1336U(...) \, +#define Z_IS_1337_EQ_1337(...) \, +#define Z_IS_1337U_EQ_1337(...) \, +#define Z_IS_1337_EQ_1337U(...) \, +#define Z_IS_1337U_EQ_1337U(...) \, +#define Z_IS_1338_EQ_1338(...) \, +#define Z_IS_1338U_EQ_1338(...) \, +#define Z_IS_1338_EQ_1338U(...) \, +#define Z_IS_1338U_EQ_1338U(...) \, +#define Z_IS_1339_EQ_1339(...) \, +#define Z_IS_1339U_EQ_1339(...) \, +#define Z_IS_1339_EQ_1339U(...) \, +#define Z_IS_1339U_EQ_1339U(...) \, +#define Z_IS_1340_EQ_1340(...) \, +#define Z_IS_1340U_EQ_1340(...) \, +#define Z_IS_1340_EQ_1340U(...) \, +#define Z_IS_1340U_EQ_1340U(...) \, +#define Z_IS_1341_EQ_1341(...) \, +#define Z_IS_1341U_EQ_1341(...) \, +#define Z_IS_1341_EQ_1341U(...) \, +#define Z_IS_1341U_EQ_1341U(...) \, +#define Z_IS_1342_EQ_1342(...) \, +#define Z_IS_1342U_EQ_1342(...) \, +#define Z_IS_1342_EQ_1342U(...) \, +#define Z_IS_1342U_EQ_1342U(...) \, +#define Z_IS_1343_EQ_1343(...) \, +#define Z_IS_1343U_EQ_1343(...) \, +#define Z_IS_1343_EQ_1343U(...) \, +#define Z_IS_1343U_EQ_1343U(...) \, +#define Z_IS_1344_EQ_1344(...) \, +#define Z_IS_1344U_EQ_1344(...) \, +#define Z_IS_1344_EQ_1344U(...) \, +#define Z_IS_1344U_EQ_1344U(...) \, +#define Z_IS_1345_EQ_1345(...) \, +#define Z_IS_1345U_EQ_1345(...) \, +#define Z_IS_1345_EQ_1345U(...) \, +#define Z_IS_1345U_EQ_1345U(...) \, +#define Z_IS_1346_EQ_1346(...) \, +#define Z_IS_1346U_EQ_1346(...) \, +#define Z_IS_1346_EQ_1346U(...) \, +#define Z_IS_1346U_EQ_1346U(...) \, +#define Z_IS_1347_EQ_1347(...) \, +#define Z_IS_1347U_EQ_1347(...) \, +#define Z_IS_1347_EQ_1347U(...) \, +#define Z_IS_1347U_EQ_1347U(...) \, +#define Z_IS_1348_EQ_1348(...) \, +#define Z_IS_1348U_EQ_1348(...) \, +#define Z_IS_1348_EQ_1348U(...) \, +#define Z_IS_1348U_EQ_1348U(...) \, +#define Z_IS_1349_EQ_1349(...) \, +#define Z_IS_1349U_EQ_1349(...) \, +#define Z_IS_1349_EQ_1349U(...) \, +#define Z_IS_1349U_EQ_1349U(...) \, +#define Z_IS_1350_EQ_1350(...) \, +#define Z_IS_1350U_EQ_1350(...) \, +#define Z_IS_1350_EQ_1350U(...) \, +#define Z_IS_1350U_EQ_1350U(...) \, +#define Z_IS_1351_EQ_1351(...) \, +#define Z_IS_1351U_EQ_1351(...) \, +#define Z_IS_1351_EQ_1351U(...) \, +#define Z_IS_1351U_EQ_1351U(...) \, +#define Z_IS_1352_EQ_1352(...) \, +#define Z_IS_1352U_EQ_1352(...) \, +#define Z_IS_1352_EQ_1352U(...) \, +#define Z_IS_1352U_EQ_1352U(...) \, +#define Z_IS_1353_EQ_1353(...) \, +#define Z_IS_1353U_EQ_1353(...) \, +#define Z_IS_1353_EQ_1353U(...) \, +#define Z_IS_1353U_EQ_1353U(...) \, +#define Z_IS_1354_EQ_1354(...) \, +#define Z_IS_1354U_EQ_1354(...) \, +#define Z_IS_1354_EQ_1354U(...) \, +#define Z_IS_1354U_EQ_1354U(...) \, +#define Z_IS_1355_EQ_1355(...) \, +#define Z_IS_1355U_EQ_1355(...) \, +#define Z_IS_1355_EQ_1355U(...) \, +#define Z_IS_1355U_EQ_1355U(...) \, +#define Z_IS_1356_EQ_1356(...) \, +#define Z_IS_1356U_EQ_1356(...) \, +#define Z_IS_1356_EQ_1356U(...) \, +#define Z_IS_1356U_EQ_1356U(...) \, +#define Z_IS_1357_EQ_1357(...) \, +#define Z_IS_1357U_EQ_1357(...) \, +#define Z_IS_1357_EQ_1357U(...) \, +#define Z_IS_1357U_EQ_1357U(...) \, +#define Z_IS_1358_EQ_1358(...) \, +#define Z_IS_1358U_EQ_1358(...) \, +#define Z_IS_1358_EQ_1358U(...) \, +#define Z_IS_1358U_EQ_1358U(...) \, +#define Z_IS_1359_EQ_1359(...) \, +#define Z_IS_1359U_EQ_1359(...) \, +#define Z_IS_1359_EQ_1359U(...) \, +#define Z_IS_1359U_EQ_1359U(...) \, +#define Z_IS_1360_EQ_1360(...) \, +#define Z_IS_1360U_EQ_1360(...) \, +#define Z_IS_1360_EQ_1360U(...) \, +#define Z_IS_1360U_EQ_1360U(...) \, +#define Z_IS_1361_EQ_1361(...) \, +#define Z_IS_1361U_EQ_1361(...) \, +#define Z_IS_1361_EQ_1361U(...) \, +#define Z_IS_1361U_EQ_1361U(...) \, +#define Z_IS_1362_EQ_1362(...) \, +#define Z_IS_1362U_EQ_1362(...) \, +#define Z_IS_1362_EQ_1362U(...) \, +#define Z_IS_1362U_EQ_1362U(...) \, +#define Z_IS_1363_EQ_1363(...) \, +#define Z_IS_1363U_EQ_1363(...) \, +#define Z_IS_1363_EQ_1363U(...) \, +#define Z_IS_1363U_EQ_1363U(...) \, +#define Z_IS_1364_EQ_1364(...) \, +#define Z_IS_1364U_EQ_1364(...) \, +#define Z_IS_1364_EQ_1364U(...) \, +#define Z_IS_1364U_EQ_1364U(...) \, +#define Z_IS_1365_EQ_1365(...) \, +#define Z_IS_1365U_EQ_1365(...) \, +#define Z_IS_1365_EQ_1365U(...) \, +#define Z_IS_1365U_EQ_1365U(...) \, +#define Z_IS_1366_EQ_1366(...) \, +#define Z_IS_1366U_EQ_1366(...) \, +#define Z_IS_1366_EQ_1366U(...) \, +#define Z_IS_1366U_EQ_1366U(...) \, +#define Z_IS_1367_EQ_1367(...) \, +#define Z_IS_1367U_EQ_1367(...) \, +#define Z_IS_1367_EQ_1367U(...) \, +#define Z_IS_1367U_EQ_1367U(...) \, +#define Z_IS_1368_EQ_1368(...) \, +#define Z_IS_1368U_EQ_1368(...) \, +#define Z_IS_1368_EQ_1368U(...) \, +#define Z_IS_1368U_EQ_1368U(...) \, +#define Z_IS_1369_EQ_1369(...) \, +#define Z_IS_1369U_EQ_1369(...) \, +#define Z_IS_1369_EQ_1369U(...) \, +#define Z_IS_1369U_EQ_1369U(...) \, +#define Z_IS_1370_EQ_1370(...) \, +#define Z_IS_1370U_EQ_1370(...) \, +#define Z_IS_1370_EQ_1370U(...) \, +#define Z_IS_1370U_EQ_1370U(...) \, +#define Z_IS_1371_EQ_1371(...) \, +#define Z_IS_1371U_EQ_1371(...) \, +#define Z_IS_1371_EQ_1371U(...) \, +#define Z_IS_1371U_EQ_1371U(...) \, +#define Z_IS_1372_EQ_1372(...) \, +#define Z_IS_1372U_EQ_1372(...) \, +#define Z_IS_1372_EQ_1372U(...) \, +#define Z_IS_1372U_EQ_1372U(...) \, +#define Z_IS_1373_EQ_1373(...) \, +#define Z_IS_1373U_EQ_1373(...) \, +#define Z_IS_1373_EQ_1373U(...) \, +#define Z_IS_1373U_EQ_1373U(...) \, +#define Z_IS_1374_EQ_1374(...) \, +#define Z_IS_1374U_EQ_1374(...) \, +#define Z_IS_1374_EQ_1374U(...) \, +#define Z_IS_1374U_EQ_1374U(...) \, +#define Z_IS_1375_EQ_1375(...) \, +#define Z_IS_1375U_EQ_1375(...) \, +#define Z_IS_1375_EQ_1375U(...) \, +#define Z_IS_1375U_EQ_1375U(...) \, +#define Z_IS_1376_EQ_1376(...) \, +#define Z_IS_1376U_EQ_1376(...) \, +#define Z_IS_1376_EQ_1376U(...) \, +#define Z_IS_1376U_EQ_1376U(...) \, +#define Z_IS_1377_EQ_1377(...) \, +#define Z_IS_1377U_EQ_1377(...) \, +#define Z_IS_1377_EQ_1377U(...) \, +#define Z_IS_1377U_EQ_1377U(...) \, +#define Z_IS_1378_EQ_1378(...) \, +#define Z_IS_1378U_EQ_1378(...) \, +#define Z_IS_1378_EQ_1378U(...) \, +#define Z_IS_1378U_EQ_1378U(...) \, +#define Z_IS_1379_EQ_1379(...) \, +#define Z_IS_1379U_EQ_1379(...) \, +#define Z_IS_1379_EQ_1379U(...) \, +#define Z_IS_1379U_EQ_1379U(...) \, +#define Z_IS_1380_EQ_1380(...) \, +#define Z_IS_1380U_EQ_1380(...) \, +#define Z_IS_1380_EQ_1380U(...) \, +#define Z_IS_1380U_EQ_1380U(...) \, +#define Z_IS_1381_EQ_1381(...) \, +#define Z_IS_1381U_EQ_1381(...) \, +#define Z_IS_1381_EQ_1381U(...) \, +#define Z_IS_1381U_EQ_1381U(...) \, +#define Z_IS_1382_EQ_1382(...) \, +#define Z_IS_1382U_EQ_1382(...) \, +#define Z_IS_1382_EQ_1382U(...) \, +#define Z_IS_1382U_EQ_1382U(...) \, +#define Z_IS_1383_EQ_1383(...) \, +#define Z_IS_1383U_EQ_1383(...) \, +#define Z_IS_1383_EQ_1383U(...) \, +#define Z_IS_1383U_EQ_1383U(...) \, +#define Z_IS_1384_EQ_1384(...) \, +#define Z_IS_1384U_EQ_1384(...) \, +#define Z_IS_1384_EQ_1384U(...) \, +#define Z_IS_1384U_EQ_1384U(...) \, +#define Z_IS_1385_EQ_1385(...) \, +#define Z_IS_1385U_EQ_1385(...) \, +#define Z_IS_1385_EQ_1385U(...) \, +#define Z_IS_1385U_EQ_1385U(...) \, +#define Z_IS_1386_EQ_1386(...) \, +#define Z_IS_1386U_EQ_1386(...) \, +#define Z_IS_1386_EQ_1386U(...) \, +#define Z_IS_1386U_EQ_1386U(...) \, +#define Z_IS_1387_EQ_1387(...) \, +#define Z_IS_1387U_EQ_1387(...) \, +#define Z_IS_1387_EQ_1387U(...) \, +#define Z_IS_1387U_EQ_1387U(...) \, +#define Z_IS_1388_EQ_1388(...) \, +#define Z_IS_1388U_EQ_1388(...) \, +#define Z_IS_1388_EQ_1388U(...) \, +#define Z_IS_1388U_EQ_1388U(...) \, +#define Z_IS_1389_EQ_1389(...) \, +#define Z_IS_1389U_EQ_1389(...) \, +#define Z_IS_1389_EQ_1389U(...) \, +#define Z_IS_1389U_EQ_1389U(...) \, +#define Z_IS_1390_EQ_1390(...) \, +#define Z_IS_1390U_EQ_1390(...) \, +#define Z_IS_1390_EQ_1390U(...) \, +#define Z_IS_1390U_EQ_1390U(...) \, +#define Z_IS_1391_EQ_1391(...) \, +#define Z_IS_1391U_EQ_1391(...) \, +#define Z_IS_1391_EQ_1391U(...) \, +#define Z_IS_1391U_EQ_1391U(...) \, +#define Z_IS_1392_EQ_1392(...) \, +#define Z_IS_1392U_EQ_1392(...) \, +#define Z_IS_1392_EQ_1392U(...) \, +#define Z_IS_1392U_EQ_1392U(...) \, +#define Z_IS_1393_EQ_1393(...) \, +#define Z_IS_1393U_EQ_1393(...) \, +#define Z_IS_1393_EQ_1393U(...) \, +#define Z_IS_1393U_EQ_1393U(...) \, +#define Z_IS_1394_EQ_1394(...) \, +#define Z_IS_1394U_EQ_1394(...) \, +#define Z_IS_1394_EQ_1394U(...) \, +#define Z_IS_1394U_EQ_1394U(...) \, +#define Z_IS_1395_EQ_1395(...) \, +#define Z_IS_1395U_EQ_1395(...) \, +#define Z_IS_1395_EQ_1395U(...) \, +#define Z_IS_1395U_EQ_1395U(...) \, +#define Z_IS_1396_EQ_1396(...) \, +#define Z_IS_1396U_EQ_1396(...) \, +#define Z_IS_1396_EQ_1396U(...) \, +#define Z_IS_1396U_EQ_1396U(...) \, +#define Z_IS_1397_EQ_1397(...) \, +#define Z_IS_1397U_EQ_1397(...) \, +#define Z_IS_1397_EQ_1397U(...) \, +#define Z_IS_1397U_EQ_1397U(...) \, +#define Z_IS_1398_EQ_1398(...) \, +#define Z_IS_1398U_EQ_1398(...) \, +#define Z_IS_1398_EQ_1398U(...) \, +#define Z_IS_1398U_EQ_1398U(...) \, +#define Z_IS_1399_EQ_1399(...) \, +#define Z_IS_1399U_EQ_1399(...) \, +#define Z_IS_1399_EQ_1399U(...) \, +#define Z_IS_1399U_EQ_1399U(...) \, +#define Z_IS_1400_EQ_1400(...) \, +#define Z_IS_1400U_EQ_1400(...) \, +#define Z_IS_1400_EQ_1400U(...) \, +#define Z_IS_1400U_EQ_1400U(...) \, +#define Z_IS_1401_EQ_1401(...) \, +#define Z_IS_1401U_EQ_1401(...) \, +#define Z_IS_1401_EQ_1401U(...) \, +#define Z_IS_1401U_EQ_1401U(...) \, +#define Z_IS_1402_EQ_1402(...) \, +#define Z_IS_1402U_EQ_1402(...) \, +#define Z_IS_1402_EQ_1402U(...) \, +#define Z_IS_1402U_EQ_1402U(...) \, +#define Z_IS_1403_EQ_1403(...) \, +#define Z_IS_1403U_EQ_1403(...) \, +#define Z_IS_1403_EQ_1403U(...) \, +#define Z_IS_1403U_EQ_1403U(...) \, +#define Z_IS_1404_EQ_1404(...) \, +#define Z_IS_1404U_EQ_1404(...) \, +#define Z_IS_1404_EQ_1404U(...) \, +#define Z_IS_1404U_EQ_1404U(...) \, +#define Z_IS_1405_EQ_1405(...) \, +#define Z_IS_1405U_EQ_1405(...) \, +#define Z_IS_1405_EQ_1405U(...) \, +#define Z_IS_1405U_EQ_1405U(...) \, +#define Z_IS_1406_EQ_1406(...) \, +#define Z_IS_1406U_EQ_1406(...) \, +#define Z_IS_1406_EQ_1406U(...) \, +#define Z_IS_1406U_EQ_1406U(...) \, +#define Z_IS_1407_EQ_1407(...) \, +#define Z_IS_1407U_EQ_1407(...) \, +#define Z_IS_1407_EQ_1407U(...) \, +#define Z_IS_1407U_EQ_1407U(...) \, +#define Z_IS_1408_EQ_1408(...) \, +#define Z_IS_1408U_EQ_1408(...) \, +#define Z_IS_1408_EQ_1408U(...) \, +#define Z_IS_1408U_EQ_1408U(...) \, +#define Z_IS_1409_EQ_1409(...) \, +#define Z_IS_1409U_EQ_1409(...) \, +#define Z_IS_1409_EQ_1409U(...) \, +#define Z_IS_1409U_EQ_1409U(...) \, +#define Z_IS_1410_EQ_1410(...) \, +#define Z_IS_1410U_EQ_1410(...) \, +#define Z_IS_1410_EQ_1410U(...) \, +#define Z_IS_1410U_EQ_1410U(...) \, +#define Z_IS_1411_EQ_1411(...) \, +#define Z_IS_1411U_EQ_1411(...) \, +#define Z_IS_1411_EQ_1411U(...) \, +#define Z_IS_1411U_EQ_1411U(...) \, +#define Z_IS_1412_EQ_1412(...) \, +#define Z_IS_1412U_EQ_1412(...) \, +#define Z_IS_1412_EQ_1412U(...) \, +#define Z_IS_1412U_EQ_1412U(...) \, +#define Z_IS_1413_EQ_1413(...) \, +#define Z_IS_1413U_EQ_1413(...) \, +#define Z_IS_1413_EQ_1413U(...) \, +#define Z_IS_1413U_EQ_1413U(...) \, +#define Z_IS_1414_EQ_1414(...) \, +#define Z_IS_1414U_EQ_1414(...) \, +#define Z_IS_1414_EQ_1414U(...) \, +#define Z_IS_1414U_EQ_1414U(...) \, +#define Z_IS_1415_EQ_1415(...) \, +#define Z_IS_1415U_EQ_1415(...) \, +#define Z_IS_1415_EQ_1415U(...) \, +#define Z_IS_1415U_EQ_1415U(...) \, +#define Z_IS_1416_EQ_1416(...) \, +#define Z_IS_1416U_EQ_1416(...) \, +#define Z_IS_1416_EQ_1416U(...) \, +#define Z_IS_1416U_EQ_1416U(...) \, +#define Z_IS_1417_EQ_1417(...) \, +#define Z_IS_1417U_EQ_1417(...) \, +#define Z_IS_1417_EQ_1417U(...) \, +#define Z_IS_1417U_EQ_1417U(...) \, +#define Z_IS_1418_EQ_1418(...) \, +#define Z_IS_1418U_EQ_1418(...) \, +#define Z_IS_1418_EQ_1418U(...) \, +#define Z_IS_1418U_EQ_1418U(...) \, +#define Z_IS_1419_EQ_1419(...) \, +#define Z_IS_1419U_EQ_1419(...) \, +#define Z_IS_1419_EQ_1419U(...) \, +#define Z_IS_1419U_EQ_1419U(...) \, +#define Z_IS_1420_EQ_1420(...) \, +#define Z_IS_1420U_EQ_1420(...) \, +#define Z_IS_1420_EQ_1420U(...) \, +#define Z_IS_1420U_EQ_1420U(...) \, +#define Z_IS_1421_EQ_1421(...) \, +#define Z_IS_1421U_EQ_1421(...) \, +#define Z_IS_1421_EQ_1421U(...) \, +#define Z_IS_1421U_EQ_1421U(...) \, +#define Z_IS_1422_EQ_1422(...) \, +#define Z_IS_1422U_EQ_1422(...) \, +#define Z_IS_1422_EQ_1422U(...) \, +#define Z_IS_1422U_EQ_1422U(...) \, +#define Z_IS_1423_EQ_1423(...) \, +#define Z_IS_1423U_EQ_1423(...) \, +#define Z_IS_1423_EQ_1423U(...) \, +#define Z_IS_1423U_EQ_1423U(...) \, +#define Z_IS_1424_EQ_1424(...) \, +#define Z_IS_1424U_EQ_1424(...) \, +#define Z_IS_1424_EQ_1424U(...) \, +#define Z_IS_1424U_EQ_1424U(...) \, +#define Z_IS_1425_EQ_1425(...) \, +#define Z_IS_1425U_EQ_1425(...) \, +#define Z_IS_1425_EQ_1425U(...) \, +#define Z_IS_1425U_EQ_1425U(...) \, +#define Z_IS_1426_EQ_1426(...) \, +#define Z_IS_1426U_EQ_1426(...) \, +#define Z_IS_1426_EQ_1426U(...) \, +#define Z_IS_1426U_EQ_1426U(...) \, +#define Z_IS_1427_EQ_1427(...) \, +#define Z_IS_1427U_EQ_1427(...) \, +#define Z_IS_1427_EQ_1427U(...) \, +#define Z_IS_1427U_EQ_1427U(...) \, +#define Z_IS_1428_EQ_1428(...) \, +#define Z_IS_1428U_EQ_1428(...) \, +#define Z_IS_1428_EQ_1428U(...) \, +#define Z_IS_1428U_EQ_1428U(...) \, +#define Z_IS_1429_EQ_1429(...) \, +#define Z_IS_1429U_EQ_1429(...) \, +#define Z_IS_1429_EQ_1429U(...) \, +#define Z_IS_1429U_EQ_1429U(...) \, +#define Z_IS_1430_EQ_1430(...) \, +#define Z_IS_1430U_EQ_1430(...) \, +#define Z_IS_1430_EQ_1430U(...) \, +#define Z_IS_1430U_EQ_1430U(...) \, +#define Z_IS_1431_EQ_1431(...) \, +#define Z_IS_1431U_EQ_1431(...) \, +#define Z_IS_1431_EQ_1431U(...) \, +#define Z_IS_1431U_EQ_1431U(...) \, +#define Z_IS_1432_EQ_1432(...) \, +#define Z_IS_1432U_EQ_1432(...) \, +#define Z_IS_1432_EQ_1432U(...) \, +#define Z_IS_1432U_EQ_1432U(...) \, +#define Z_IS_1433_EQ_1433(...) \, +#define Z_IS_1433U_EQ_1433(...) \, +#define Z_IS_1433_EQ_1433U(...) \, +#define Z_IS_1433U_EQ_1433U(...) \, +#define Z_IS_1434_EQ_1434(...) \, +#define Z_IS_1434U_EQ_1434(...) \, +#define Z_IS_1434_EQ_1434U(...) \, +#define Z_IS_1434U_EQ_1434U(...) \, +#define Z_IS_1435_EQ_1435(...) \, +#define Z_IS_1435U_EQ_1435(...) \, +#define Z_IS_1435_EQ_1435U(...) \, +#define Z_IS_1435U_EQ_1435U(...) \, +#define Z_IS_1436_EQ_1436(...) \, +#define Z_IS_1436U_EQ_1436(...) \, +#define Z_IS_1436_EQ_1436U(...) \, +#define Z_IS_1436U_EQ_1436U(...) \, +#define Z_IS_1437_EQ_1437(...) \, +#define Z_IS_1437U_EQ_1437(...) \, +#define Z_IS_1437_EQ_1437U(...) \, +#define Z_IS_1437U_EQ_1437U(...) \, +#define Z_IS_1438_EQ_1438(...) \, +#define Z_IS_1438U_EQ_1438(...) \, +#define Z_IS_1438_EQ_1438U(...) \, +#define Z_IS_1438U_EQ_1438U(...) \, +#define Z_IS_1439_EQ_1439(...) \, +#define Z_IS_1439U_EQ_1439(...) \, +#define Z_IS_1439_EQ_1439U(...) \, +#define Z_IS_1439U_EQ_1439U(...) \, +#define Z_IS_1440_EQ_1440(...) \, +#define Z_IS_1440U_EQ_1440(...) \, +#define Z_IS_1440_EQ_1440U(...) \, +#define Z_IS_1440U_EQ_1440U(...) \, +#define Z_IS_1441_EQ_1441(...) \, +#define Z_IS_1441U_EQ_1441(...) \, +#define Z_IS_1441_EQ_1441U(...) \, +#define Z_IS_1441U_EQ_1441U(...) \, +#define Z_IS_1442_EQ_1442(...) \, +#define Z_IS_1442U_EQ_1442(...) \, +#define Z_IS_1442_EQ_1442U(...) \, +#define Z_IS_1442U_EQ_1442U(...) \, +#define Z_IS_1443_EQ_1443(...) \, +#define Z_IS_1443U_EQ_1443(...) \, +#define Z_IS_1443_EQ_1443U(...) \, +#define Z_IS_1443U_EQ_1443U(...) \, +#define Z_IS_1444_EQ_1444(...) \, +#define Z_IS_1444U_EQ_1444(...) \, +#define Z_IS_1444_EQ_1444U(...) \, +#define Z_IS_1444U_EQ_1444U(...) \, +#define Z_IS_1445_EQ_1445(...) \, +#define Z_IS_1445U_EQ_1445(...) \, +#define Z_IS_1445_EQ_1445U(...) \, +#define Z_IS_1445U_EQ_1445U(...) \, +#define Z_IS_1446_EQ_1446(...) \, +#define Z_IS_1446U_EQ_1446(...) \, +#define Z_IS_1446_EQ_1446U(...) \, +#define Z_IS_1446U_EQ_1446U(...) \, +#define Z_IS_1447_EQ_1447(...) \, +#define Z_IS_1447U_EQ_1447(...) \, +#define Z_IS_1447_EQ_1447U(...) \, +#define Z_IS_1447U_EQ_1447U(...) \, +#define Z_IS_1448_EQ_1448(...) \, +#define Z_IS_1448U_EQ_1448(...) \, +#define Z_IS_1448_EQ_1448U(...) \, +#define Z_IS_1448U_EQ_1448U(...) \, +#define Z_IS_1449_EQ_1449(...) \, +#define Z_IS_1449U_EQ_1449(...) \, +#define Z_IS_1449_EQ_1449U(...) \, +#define Z_IS_1449U_EQ_1449U(...) \, +#define Z_IS_1450_EQ_1450(...) \, +#define Z_IS_1450U_EQ_1450(...) \, +#define Z_IS_1450_EQ_1450U(...) \, +#define Z_IS_1450U_EQ_1450U(...) \, +#define Z_IS_1451_EQ_1451(...) \, +#define Z_IS_1451U_EQ_1451(...) \, +#define Z_IS_1451_EQ_1451U(...) \, +#define Z_IS_1451U_EQ_1451U(...) \, +#define Z_IS_1452_EQ_1452(...) \, +#define Z_IS_1452U_EQ_1452(...) \, +#define Z_IS_1452_EQ_1452U(...) \, +#define Z_IS_1452U_EQ_1452U(...) \, +#define Z_IS_1453_EQ_1453(...) \, +#define Z_IS_1453U_EQ_1453(...) \, +#define Z_IS_1453_EQ_1453U(...) \, +#define Z_IS_1453U_EQ_1453U(...) \, +#define Z_IS_1454_EQ_1454(...) \, +#define Z_IS_1454U_EQ_1454(...) \, +#define Z_IS_1454_EQ_1454U(...) \, +#define Z_IS_1454U_EQ_1454U(...) \, +#define Z_IS_1455_EQ_1455(...) \, +#define Z_IS_1455U_EQ_1455(...) \, +#define Z_IS_1455_EQ_1455U(...) \, +#define Z_IS_1455U_EQ_1455U(...) \, +#define Z_IS_1456_EQ_1456(...) \, +#define Z_IS_1456U_EQ_1456(...) \, +#define Z_IS_1456_EQ_1456U(...) \, +#define Z_IS_1456U_EQ_1456U(...) \, +#define Z_IS_1457_EQ_1457(...) \, +#define Z_IS_1457U_EQ_1457(...) \, +#define Z_IS_1457_EQ_1457U(...) \, +#define Z_IS_1457U_EQ_1457U(...) \, +#define Z_IS_1458_EQ_1458(...) \, +#define Z_IS_1458U_EQ_1458(...) \, +#define Z_IS_1458_EQ_1458U(...) \, +#define Z_IS_1458U_EQ_1458U(...) \, +#define Z_IS_1459_EQ_1459(...) \, +#define Z_IS_1459U_EQ_1459(...) \, +#define Z_IS_1459_EQ_1459U(...) \, +#define Z_IS_1459U_EQ_1459U(...) \, +#define Z_IS_1460_EQ_1460(...) \, +#define Z_IS_1460U_EQ_1460(...) \, +#define Z_IS_1460_EQ_1460U(...) \, +#define Z_IS_1460U_EQ_1460U(...) \, +#define Z_IS_1461_EQ_1461(...) \, +#define Z_IS_1461U_EQ_1461(...) \, +#define Z_IS_1461_EQ_1461U(...) \, +#define Z_IS_1461U_EQ_1461U(...) \, +#define Z_IS_1462_EQ_1462(...) \, +#define Z_IS_1462U_EQ_1462(...) \, +#define Z_IS_1462_EQ_1462U(...) \, +#define Z_IS_1462U_EQ_1462U(...) \, +#define Z_IS_1463_EQ_1463(...) \, +#define Z_IS_1463U_EQ_1463(...) \, +#define Z_IS_1463_EQ_1463U(...) \, +#define Z_IS_1463U_EQ_1463U(...) \, +#define Z_IS_1464_EQ_1464(...) \, +#define Z_IS_1464U_EQ_1464(...) \, +#define Z_IS_1464_EQ_1464U(...) \, +#define Z_IS_1464U_EQ_1464U(...) \, +#define Z_IS_1465_EQ_1465(...) \, +#define Z_IS_1465U_EQ_1465(...) \, +#define Z_IS_1465_EQ_1465U(...) \, +#define Z_IS_1465U_EQ_1465U(...) \, +#define Z_IS_1466_EQ_1466(...) \, +#define Z_IS_1466U_EQ_1466(...) \, +#define Z_IS_1466_EQ_1466U(...) \, +#define Z_IS_1466U_EQ_1466U(...) \, +#define Z_IS_1467_EQ_1467(...) \, +#define Z_IS_1467U_EQ_1467(...) \, +#define Z_IS_1467_EQ_1467U(...) \, +#define Z_IS_1467U_EQ_1467U(...) \, +#define Z_IS_1468_EQ_1468(...) \, +#define Z_IS_1468U_EQ_1468(...) \, +#define Z_IS_1468_EQ_1468U(...) \, +#define Z_IS_1468U_EQ_1468U(...) \, +#define Z_IS_1469_EQ_1469(...) \, +#define Z_IS_1469U_EQ_1469(...) \, +#define Z_IS_1469_EQ_1469U(...) \, +#define Z_IS_1469U_EQ_1469U(...) \, +#define Z_IS_1470_EQ_1470(...) \, +#define Z_IS_1470U_EQ_1470(...) \, +#define Z_IS_1470_EQ_1470U(...) \, +#define Z_IS_1470U_EQ_1470U(...) \, +#define Z_IS_1471_EQ_1471(...) \, +#define Z_IS_1471U_EQ_1471(...) \, +#define Z_IS_1471_EQ_1471U(...) \, +#define Z_IS_1471U_EQ_1471U(...) \, +#define Z_IS_1472_EQ_1472(...) \, +#define Z_IS_1472U_EQ_1472(...) \, +#define Z_IS_1472_EQ_1472U(...) \, +#define Z_IS_1472U_EQ_1472U(...) \, +#define Z_IS_1473_EQ_1473(...) \, +#define Z_IS_1473U_EQ_1473(...) \, +#define Z_IS_1473_EQ_1473U(...) \, +#define Z_IS_1473U_EQ_1473U(...) \, +#define Z_IS_1474_EQ_1474(...) \, +#define Z_IS_1474U_EQ_1474(...) \, +#define Z_IS_1474_EQ_1474U(...) \, +#define Z_IS_1474U_EQ_1474U(...) \, +#define Z_IS_1475_EQ_1475(...) \, +#define Z_IS_1475U_EQ_1475(...) \, +#define Z_IS_1475_EQ_1475U(...) \, +#define Z_IS_1475U_EQ_1475U(...) \, +#define Z_IS_1476_EQ_1476(...) \, +#define Z_IS_1476U_EQ_1476(...) \, +#define Z_IS_1476_EQ_1476U(...) \, +#define Z_IS_1476U_EQ_1476U(...) \, +#define Z_IS_1477_EQ_1477(...) \, +#define Z_IS_1477U_EQ_1477(...) \, +#define Z_IS_1477_EQ_1477U(...) \, +#define Z_IS_1477U_EQ_1477U(...) \, +#define Z_IS_1478_EQ_1478(...) \, +#define Z_IS_1478U_EQ_1478(...) \, +#define Z_IS_1478_EQ_1478U(...) \, +#define Z_IS_1478U_EQ_1478U(...) \, +#define Z_IS_1479_EQ_1479(...) \, +#define Z_IS_1479U_EQ_1479(...) \, +#define Z_IS_1479_EQ_1479U(...) \, +#define Z_IS_1479U_EQ_1479U(...) \, +#define Z_IS_1480_EQ_1480(...) \, +#define Z_IS_1480U_EQ_1480(...) \, +#define Z_IS_1480_EQ_1480U(...) \, +#define Z_IS_1480U_EQ_1480U(...) \, +#define Z_IS_1481_EQ_1481(...) \, +#define Z_IS_1481U_EQ_1481(...) \, +#define Z_IS_1481_EQ_1481U(...) \, +#define Z_IS_1481U_EQ_1481U(...) \, +#define Z_IS_1482_EQ_1482(...) \, +#define Z_IS_1482U_EQ_1482(...) \, +#define Z_IS_1482_EQ_1482U(...) \, +#define Z_IS_1482U_EQ_1482U(...) \, +#define Z_IS_1483_EQ_1483(...) \, +#define Z_IS_1483U_EQ_1483(...) \, +#define Z_IS_1483_EQ_1483U(...) \, +#define Z_IS_1483U_EQ_1483U(...) \, +#define Z_IS_1484_EQ_1484(...) \, +#define Z_IS_1484U_EQ_1484(...) \, +#define Z_IS_1484_EQ_1484U(...) \, +#define Z_IS_1484U_EQ_1484U(...) \, +#define Z_IS_1485_EQ_1485(...) \, +#define Z_IS_1485U_EQ_1485(...) \, +#define Z_IS_1485_EQ_1485U(...) \, +#define Z_IS_1485U_EQ_1485U(...) \, +#define Z_IS_1486_EQ_1486(...) \, +#define Z_IS_1486U_EQ_1486(...) \, +#define Z_IS_1486_EQ_1486U(...) \, +#define Z_IS_1486U_EQ_1486U(...) \, +#define Z_IS_1487_EQ_1487(...) \, +#define Z_IS_1487U_EQ_1487(...) \, +#define Z_IS_1487_EQ_1487U(...) \, +#define Z_IS_1487U_EQ_1487U(...) \, +#define Z_IS_1488_EQ_1488(...) \, +#define Z_IS_1488U_EQ_1488(...) \, +#define Z_IS_1488_EQ_1488U(...) \, +#define Z_IS_1488U_EQ_1488U(...) \, +#define Z_IS_1489_EQ_1489(...) \, +#define Z_IS_1489U_EQ_1489(...) \, +#define Z_IS_1489_EQ_1489U(...) \, +#define Z_IS_1489U_EQ_1489U(...) \, +#define Z_IS_1490_EQ_1490(...) \, +#define Z_IS_1490U_EQ_1490(...) \, +#define Z_IS_1490_EQ_1490U(...) \, +#define Z_IS_1490U_EQ_1490U(...) \, +#define Z_IS_1491_EQ_1491(...) \, +#define Z_IS_1491U_EQ_1491(...) \, +#define Z_IS_1491_EQ_1491U(...) \, +#define Z_IS_1491U_EQ_1491U(...) \, +#define Z_IS_1492_EQ_1492(...) \, +#define Z_IS_1492U_EQ_1492(...) \, +#define Z_IS_1492_EQ_1492U(...) \, +#define Z_IS_1492U_EQ_1492U(...) \, +#define Z_IS_1493_EQ_1493(...) \, +#define Z_IS_1493U_EQ_1493(...) \, +#define Z_IS_1493_EQ_1493U(...) \, +#define Z_IS_1493U_EQ_1493U(...) \, +#define Z_IS_1494_EQ_1494(...) \, +#define Z_IS_1494U_EQ_1494(...) \, +#define Z_IS_1494_EQ_1494U(...) \, +#define Z_IS_1494U_EQ_1494U(...) \, +#define Z_IS_1495_EQ_1495(...) \, +#define Z_IS_1495U_EQ_1495(...) \, +#define Z_IS_1495_EQ_1495U(...) \, +#define Z_IS_1495U_EQ_1495U(...) \, +#define Z_IS_1496_EQ_1496(...) \, +#define Z_IS_1496U_EQ_1496(...) \, +#define Z_IS_1496_EQ_1496U(...) \, +#define Z_IS_1496U_EQ_1496U(...) \, +#define Z_IS_1497_EQ_1497(...) \, +#define Z_IS_1497U_EQ_1497(...) \, +#define Z_IS_1497_EQ_1497U(...) \, +#define Z_IS_1497U_EQ_1497U(...) \, +#define Z_IS_1498_EQ_1498(...) \, +#define Z_IS_1498U_EQ_1498(...) \, +#define Z_IS_1498_EQ_1498U(...) \, +#define Z_IS_1498U_EQ_1498U(...) \, +#define Z_IS_1499_EQ_1499(...) \, +#define Z_IS_1499U_EQ_1499(...) \, +#define Z_IS_1499_EQ_1499U(...) \, +#define Z_IS_1499U_EQ_1499U(...) \, +#define Z_IS_1500_EQ_1500(...) \, +#define Z_IS_1500U_EQ_1500(...) \, +#define Z_IS_1500_EQ_1500U(...) \, +#define Z_IS_1500U_EQ_1500U(...) \, +#define Z_IS_1501_EQ_1501(...) \, +#define Z_IS_1501U_EQ_1501(...) \, +#define Z_IS_1501_EQ_1501U(...) \, +#define Z_IS_1501U_EQ_1501U(...) \, +#define Z_IS_1502_EQ_1502(...) \, +#define Z_IS_1502U_EQ_1502(...) \, +#define Z_IS_1502_EQ_1502U(...) \, +#define Z_IS_1502U_EQ_1502U(...) \, +#define Z_IS_1503_EQ_1503(...) \, +#define Z_IS_1503U_EQ_1503(...) \, +#define Z_IS_1503_EQ_1503U(...) \, +#define Z_IS_1503U_EQ_1503U(...) \, +#define Z_IS_1504_EQ_1504(...) \, +#define Z_IS_1504U_EQ_1504(...) \, +#define Z_IS_1504_EQ_1504U(...) \, +#define Z_IS_1504U_EQ_1504U(...) \, +#define Z_IS_1505_EQ_1505(...) \, +#define Z_IS_1505U_EQ_1505(...) \, +#define Z_IS_1505_EQ_1505U(...) \, +#define Z_IS_1505U_EQ_1505U(...) \, +#define Z_IS_1506_EQ_1506(...) \, +#define Z_IS_1506U_EQ_1506(...) \, +#define Z_IS_1506_EQ_1506U(...) \, +#define Z_IS_1506U_EQ_1506U(...) \, +#define Z_IS_1507_EQ_1507(...) \, +#define Z_IS_1507U_EQ_1507(...) \, +#define Z_IS_1507_EQ_1507U(...) \, +#define Z_IS_1507U_EQ_1507U(...) \, +#define Z_IS_1508_EQ_1508(...) \, +#define Z_IS_1508U_EQ_1508(...) \, +#define Z_IS_1508_EQ_1508U(...) \, +#define Z_IS_1508U_EQ_1508U(...) \, +#define Z_IS_1509_EQ_1509(...) \, +#define Z_IS_1509U_EQ_1509(...) \, +#define Z_IS_1509_EQ_1509U(...) \, +#define Z_IS_1509U_EQ_1509U(...) \, +#define Z_IS_1510_EQ_1510(...) \, +#define Z_IS_1510U_EQ_1510(...) \, +#define Z_IS_1510_EQ_1510U(...) \, +#define Z_IS_1510U_EQ_1510U(...) \, +#define Z_IS_1511_EQ_1511(...) \, +#define Z_IS_1511U_EQ_1511(...) \, +#define Z_IS_1511_EQ_1511U(...) \, +#define Z_IS_1511U_EQ_1511U(...) \, +#define Z_IS_1512_EQ_1512(...) \, +#define Z_IS_1512U_EQ_1512(...) \, +#define Z_IS_1512_EQ_1512U(...) \, +#define Z_IS_1512U_EQ_1512U(...) \, +#define Z_IS_1513_EQ_1513(...) \, +#define Z_IS_1513U_EQ_1513(...) \, +#define Z_IS_1513_EQ_1513U(...) \, +#define Z_IS_1513U_EQ_1513U(...) \, +#define Z_IS_1514_EQ_1514(...) \, +#define Z_IS_1514U_EQ_1514(...) \, +#define Z_IS_1514_EQ_1514U(...) \, +#define Z_IS_1514U_EQ_1514U(...) \, +#define Z_IS_1515_EQ_1515(...) \, +#define Z_IS_1515U_EQ_1515(...) \, +#define Z_IS_1515_EQ_1515U(...) \, +#define Z_IS_1515U_EQ_1515U(...) \, +#define Z_IS_1516_EQ_1516(...) \, +#define Z_IS_1516U_EQ_1516(...) \, +#define Z_IS_1516_EQ_1516U(...) \, +#define Z_IS_1516U_EQ_1516U(...) \, +#define Z_IS_1517_EQ_1517(...) \, +#define Z_IS_1517U_EQ_1517(...) \, +#define Z_IS_1517_EQ_1517U(...) \, +#define Z_IS_1517U_EQ_1517U(...) \, +#define Z_IS_1518_EQ_1518(...) \, +#define Z_IS_1518U_EQ_1518(...) \, +#define Z_IS_1518_EQ_1518U(...) \, +#define Z_IS_1518U_EQ_1518U(...) \, +#define Z_IS_1519_EQ_1519(...) \, +#define Z_IS_1519U_EQ_1519(...) \, +#define Z_IS_1519_EQ_1519U(...) \, +#define Z_IS_1519U_EQ_1519U(...) \, +#define Z_IS_1520_EQ_1520(...) \, +#define Z_IS_1520U_EQ_1520(...) \, +#define Z_IS_1520_EQ_1520U(...) \, +#define Z_IS_1520U_EQ_1520U(...) \, +#define Z_IS_1521_EQ_1521(...) \, +#define Z_IS_1521U_EQ_1521(...) \, +#define Z_IS_1521_EQ_1521U(...) \, +#define Z_IS_1521U_EQ_1521U(...) \, +#define Z_IS_1522_EQ_1522(...) \, +#define Z_IS_1522U_EQ_1522(...) \, +#define Z_IS_1522_EQ_1522U(...) \, +#define Z_IS_1522U_EQ_1522U(...) \, +#define Z_IS_1523_EQ_1523(...) \, +#define Z_IS_1523U_EQ_1523(...) \, +#define Z_IS_1523_EQ_1523U(...) \, +#define Z_IS_1523U_EQ_1523U(...) \, +#define Z_IS_1524_EQ_1524(...) \, +#define Z_IS_1524U_EQ_1524(...) \, +#define Z_IS_1524_EQ_1524U(...) \, +#define Z_IS_1524U_EQ_1524U(...) \, +#define Z_IS_1525_EQ_1525(...) \, +#define Z_IS_1525U_EQ_1525(...) \, +#define Z_IS_1525_EQ_1525U(...) \, +#define Z_IS_1525U_EQ_1525U(...) \, +#define Z_IS_1526_EQ_1526(...) \, +#define Z_IS_1526U_EQ_1526(...) \, +#define Z_IS_1526_EQ_1526U(...) \, +#define Z_IS_1526U_EQ_1526U(...) \, +#define Z_IS_1527_EQ_1527(...) \, +#define Z_IS_1527U_EQ_1527(...) \, +#define Z_IS_1527_EQ_1527U(...) \, +#define Z_IS_1527U_EQ_1527U(...) \, +#define Z_IS_1528_EQ_1528(...) \, +#define Z_IS_1528U_EQ_1528(...) \, +#define Z_IS_1528_EQ_1528U(...) \, +#define Z_IS_1528U_EQ_1528U(...) \, +#define Z_IS_1529_EQ_1529(...) \, +#define Z_IS_1529U_EQ_1529(...) \, +#define Z_IS_1529_EQ_1529U(...) \, +#define Z_IS_1529U_EQ_1529U(...) \, +#define Z_IS_1530_EQ_1530(...) \, +#define Z_IS_1530U_EQ_1530(...) \, +#define Z_IS_1530_EQ_1530U(...) \, +#define Z_IS_1530U_EQ_1530U(...) \, +#define Z_IS_1531_EQ_1531(...) \, +#define Z_IS_1531U_EQ_1531(...) \, +#define Z_IS_1531_EQ_1531U(...) \, +#define Z_IS_1531U_EQ_1531U(...) \, +#define Z_IS_1532_EQ_1532(...) \, +#define Z_IS_1532U_EQ_1532(...) \, +#define Z_IS_1532_EQ_1532U(...) \, +#define Z_IS_1532U_EQ_1532U(...) \, +#define Z_IS_1533_EQ_1533(...) \, +#define Z_IS_1533U_EQ_1533(...) \, +#define Z_IS_1533_EQ_1533U(...) \, +#define Z_IS_1533U_EQ_1533U(...) \, +#define Z_IS_1534_EQ_1534(...) \, +#define Z_IS_1534U_EQ_1534(...) \, +#define Z_IS_1534_EQ_1534U(...) \, +#define Z_IS_1534U_EQ_1534U(...) \, +#define Z_IS_1535_EQ_1535(...) \, +#define Z_IS_1535U_EQ_1535(...) \, +#define Z_IS_1535_EQ_1535U(...) \, +#define Z_IS_1535U_EQ_1535U(...) \, +#define Z_IS_1536_EQ_1536(...) \, +#define Z_IS_1536U_EQ_1536(...) \, +#define Z_IS_1536_EQ_1536U(...) \, +#define Z_IS_1536U_EQ_1536U(...) \, +#define Z_IS_1537_EQ_1537(...) \, +#define Z_IS_1537U_EQ_1537(...) \, +#define Z_IS_1537_EQ_1537U(...) \, +#define Z_IS_1537U_EQ_1537U(...) \, +#define Z_IS_1538_EQ_1538(...) \, +#define Z_IS_1538U_EQ_1538(...) \, +#define Z_IS_1538_EQ_1538U(...) \, +#define Z_IS_1538U_EQ_1538U(...) \, +#define Z_IS_1539_EQ_1539(...) \, +#define Z_IS_1539U_EQ_1539(...) \, +#define Z_IS_1539_EQ_1539U(...) \, +#define Z_IS_1539U_EQ_1539U(...) \, +#define Z_IS_1540_EQ_1540(...) \, +#define Z_IS_1540U_EQ_1540(...) \, +#define Z_IS_1540_EQ_1540U(...) \, +#define Z_IS_1540U_EQ_1540U(...) \, +#define Z_IS_1541_EQ_1541(...) \, +#define Z_IS_1541U_EQ_1541(...) \, +#define Z_IS_1541_EQ_1541U(...) \, +#define Z_IS_1541U_EQ_1541U(...) \, +#define Z_IS_1542_EQ_1542(...) \, +#define Z_IS_1542U_EQ_1542(...) \, +#define Z_IS_1542_EQ_1542U(...) \, +#define Z_IS_1542U_EQ_1542U(...) \, +#define Z_IS_1543_EQ_1543(...) \, +#define Z_IS_1543U_EQ_1543(...) \, +#define Z_IS_1543_EQ_1543U(...) \, +#define Z_IS_1543U_EQ_1543U(...) \, +#define Z_IS_1544_EQ_1544(...) \, +#define Z_IS_1544U_EQ_1544(...) \, +#define Z_IS_1544_EQ_1544U(...) \, +#define Z_IS_1544U_EQ_1544U(...) \, +#define Z_IS_1545_EQ_1545(...) \, +#define Z_IS_1545U_EQ_1545(...) \, +#define Z_IS_1545_EQ_1545U(...) \, +#define Z_IS_1545U_EQ_1545U(...) \, +#define Z_IS_1546_EQ_1546(...) \, +#define Z_IS_1546U_EQ_1546(...) \, +#define Z_IS_1546_EQ_1546U(...) \, +#define Z_IS_1546U_EQ_1546U(...) \, +#define Z_IS_1547_EQ_1547(...) \, +#define Z_IS_1547U_EQ_1547(...) \, +#define Z_IS_1547_EQ_1547U(...) \, +#define Z_IS_1547U_EQ_1547U(...) \, +#define Z_IS_1548_EQ_1548(...) \, +#define Z_IS_1548U_EQ_1548(...) \, +#define Z_IS_1548_EQ_1548U(...) \, +#define Z_IS_1548U_EQ_1548U(...) \, +#define Z_IS_1549_EQ_1549(...) \, +#define Z_IS_1549U_EQ_1549(...) \, +#define Z_IS_1549_EQ_1549U(...) \, +#define Z_IS_1549U_EQ_1549U(...) \, +#define Z_IS_1550_EQ_1550(...) \, +#define Z_IS_1550U_EQ_1550(...) \, +#define Z_IS_1550_EQ_1550U(...) \, +#define Z_IS_1550U_EQ_1550U(...) \, +#define Z_IS_1551_EQ_1551(...) \, +#define Z_IS_1551U_EQ_1551(...) \, +#define Z_IS_1551_EQ_1551U(...) \, +#define Z_IS_1551U_EQ_1551U(...) \, +#define Z_IS_1552_EQ_1552(...) \, +#define Z_IS_1552U_EQ_1552(...) \, +#define Z_IS_1552_EQ_1552U(...) \, +#define Z_IS_1552U_EQ_1552U(...) \, +#define Z_IS_1553_EQ_1553(...) \, +#define Z_IS_1553U_EQ_1553(...) \, +#define Z_IS_1553_EQ_1553U(...) \, +#define Z_IS_1553U_EQ_1553U(...) \, +#define Z_IS_1554_EQ_1554(...) \, +#define Z_IS_1554U_EQ_1554(...) \, +#define Z_IS_1554_EQ_1554U(...) \, +#define Z_IS_1554U_EQ_1554U(...) \, +#define Z_IS_1555_EQ_1555(...) \, +#define Z_IS_1555U_EQ_1555(...) \, +#define Z_IS_1555_EQ_1555U(...) \, +#define Z_IS_1555U_EQ_1555U(...) \, +#define Z_IS_1556_EQ_1556(...) \, +#define Z_IS_1556U_EQ_1556(...) \, +#define Z_IS_1556_EQ_1556U(...) \, +#define Z_IS_1556U_EQ_1556U(...) \, +#define Z_IS_1557_EQ_1557(...) \, +#define Z_IS_1557U_EQ_1557(...) \, +#define Z_IS_1557_EQ_1557U(...) \, +#define Z_IS_1557U_EQ_1557U(...) \, +#define Z_IS_1558_EQ_1558(...) \, +#define Z_IS_1558U_EQ_1558(...) \, +#define Z_IS_1558_EQ_1558U(...) \, +#define Z_IS_1558U_EQ_1558U(...) \, +#define Z_IS_1559_EQ_1559(...) \, +#define Z_IS_1559U_EQ_1559(...) \, +#define Z_IS_1559_EQ_1559U(...) \, +#define Z_IS_1559U_EQ_1559U(...) \, +#define Z_IS_1560_EQ_1560(...) \, +#define Z_IS_1560U_EQ_1560(...) \, +#define Z_IS_1560_EQ_1560U(...) \, +#define Z_IS_1560U_EQ_1560U(...) \, +#define Z_IS_1561_EQ_1561(...) \, +#define Z_IS_1561U_EQ_1561(...) \, +#define Z_IS_1561_EQ_1561U(...) \, +#define Z_IS_1561U_EQ_1561U(...) \, +#define Z_IS_1562_EQ_1562(...) \, +#define Z_IS_1562U_EQ_1562(...) \, +#define Z_IS_1562_EQ_1562U(...) \, +#define Z_IS_1562U_EQ_1562U(...) \, +#define Z_IS_1563_EQ_1563(...) \, +#define Z_IS_1563U_EQ_1563(...) \, +#define Z_IS_1563_EQ_1563U(...) \, +#define Z_IS_1563U_EQ_1563U(...) \, +#define Z_IS_1564_EQ_1564(...) \, +#define Z_IS_1564U_EQ_1564(...) \, +#define Z_IS_1564_EQ_1564U(...) \, +#define Z_IS_1564U_EQ_1564U(...) \, +#define Z_IS_1565_EQ_1565(...) \, +#define Z_IS_1565U_EQ_1565(...) \, +#define Z_IS_1565_EQ_1565U(...) \, +#define Z_IS_1565U_EQ_1565U(...) \, +#define Z_IS_1566_EQ_1566(...) \, +#define Z_IS_1566U_EQ_1566(...) \, +#define Z_IS_1566_EQ_1566U(...) \, +#define Z_IS_1566U_EQ_1566U(...) \, +#define Z_IS_1567_EQ_1567(...) \, +#define Z_IS_1567U_EQ_1567(...) \, +#define Z_IS_1567_EQ_1567U(...) \, +#define Z_IS_1567U_EQ_1567U(...) \, +#define Z_IS_1568_EQ_1568(...) \, +#define Z_IS_1568U_EQ_1568(...) \, +#define Z_IS_1568_EQ_1568U(...) \, +#define Z_IS_1568U_EQ_1568U(...) \, +#define Z_IS_1569_EQ_1569(...) \, +#define Z_IS_1569U_EQ_1569(...) \, +#define Z_IS_1569_EQ_1569U(...) \, +#define Z_IS_1569U_EQ_1569U(...) \, +#define Z_IS_1570_EQ_1570(...) \, +#define Z_IS_1570U_EQ_1570(...) \, +#define Z_IS_1570_EQ_1570U(...) \, +#define Z_IS_1570U_EQ_1570U(...) \, +#define Z_IS_1571_EQ_1571(...) \, +#define Z_IS_1571U_EQ_1571(...) \, +#define Z_IS_1571_EQ_1571U(...) \, +#define Z_IS_1571U_EQ_1571U(...) \, +#define Z_IS_1572_EQ_1572(...) \, +#define Z_IS_1572U_EQ_1572(...) \, +#define Z_IS_1572_EQ_1572U(...) \, +#define Z_IS_1572U_EQ_1572U(...) \, +#define Z_IS_1573_EQ_1573(...) \, +#define Z_IS_1573U_EQ_1573(...) \, +#define Z_IS_1573_EQ_1573U(...) \, +#define Z_IS_1573U_EQ_1573U(...) \, +#define Z_IS_1574_EQ_1574(...) \, +#define Z_IS_1574U_EQ_1574(...) \, +#define Z_IS_1574_EQ_1574U(...) \, +#define Z_IS_1574U_EQ_1574U(...) \, +#define Z_IS_1575_EQ_1575(...) \, +#define Z_IS_1575U_EQ_1575(...) \, +#define Z_IS_1575_EQ_1575U(...) \, +#define Z_IS_1575U_EQ_1575U(...) \, +#define Z_IS_1576_EQ_1576(...) \, +#define Z_IS_1576U_EQ_1576(...) \, +#define Z_IS_1576_EQ_1576U(...) \, +#define Z_IS_1576U_EQ_1576U(...) \, +#define Z_IS_1577_EQ_1577(...) \, +#define Z_IS_1577U_EQ_1577(...) \, +#define Z_IS_1577_EQ_1577U(...) \, +#define Z_IS_1577U_EQ_1577U(...) \, +#define Z_IS_1578_EQ_1578(...) \, +#define Z_IS_1578U_EQ_1578(...) \, +#define Z_IS_1578_EQ_1578U(...) \, +#define Z_IS_1578U_EQ_1578U(...) \, +#define Z_IS_1579_EQ_1579(...) \, +#define Z_IS_1579U_EQ_1579(...) \, +#define Z_IS_1579_EQ_1579U(...) \, +#define Z_IS_1579U_EQ_1579U(...) \, +#define Z_IS_1580_EQ_1580(...) \, +#define Z_IS_1580U_EQ_1580(...) \, +#define Z_IS_1580_EQ_1580U(...) \, +#define Z_IS_1580U_EQ_1580U(...) \, +#define Z_IS_1581_EQ_1581(...) \, +#define Z_IS_1581U_EQ_1581(...) \, +#define Z_IS_1581_EQ_1581U(...) \, +#define Z_IS_1581U_EQ_1581U(...) \, +#define Z_IS_1582_EQ_1582(...) \, +#define Z_IS_1582U_EQ_1582(...) \, +#define Z_IS_1582_EQ_1582U(...) \, +#define Z_IS_1582U_EQ_1582U(...) \, +#define Z_IS_1583_EQ_1583(...) \, +#define Z_IS_1583U_EQ_1583(...) \, +#define Z_IS_1583_EQ_1583U(...) \, +#define Z_IS_1583U_EQ_1583U(...) \, +#define Z_IS_1584_EQ_1584(...) \, +#define Z_IS_1584U_EQ_1584(...) \, +#define Z_IS_1584_EQ_1584U(...) \, +#define Z_IS_1584U_EQ_1584U(...) \, +#define Z_IS_1585_EQ_1585(...) \, +#define Z_IS_1585U_EQ_1585(...) \, +#define Z_IS_1585_EQ_1585U(...) \, +#define Z_IS_1585U_EQ_1585U(...) \, +#define Z_IS_1586_EQ_1586(...) \, +#define Z_IS_1586U_EQ_1586(...) \, +#define Z_IS_1586_EQ_1586U(...) \, +#define Z_IS_1586U_EQ_1586U(...) \, +#define Z_IS_1587_EQ_1587(...) \, +#define Z_IS_1587U_EQ_1587(...) \, +#define Z_IS_1587_EQ_1587U(...) \, +#define Z_IS_1587U_EQ_1587U(...) \, +#define Z_IS_1588_EQ_1588(...) \, +#define Z_IS_1588U_EQ_1588(...) \, +#define Z_IS_1588_EQ_1588U(...) \, +#define Z_IS_1588U_EQ_1588U(...) \, +#define Z_IS_1589_EQ_1589(...) \, +#define Z_IS_1589U_EQ_1589(...) \, +#define Z_IS_1589_EQ_1589U(...) \, +#define Z_IS_1589U_EQ_1589U(...) \, +#define Z_IS_1590_EQ_1590(...) \, +#define Z_IS_1590U_EQ_1590(...) \, +#define Z_IS_1590_EQ_1590U(...) \, +#define Z_IS_1590U_EQ_1590U(...) \, +#define Z_IS_1591_EQ_1591(...) \, +#define Z_IS_1591U_EQ_1591(...) \, +#define Z_IS_1591_EQ_1591U(...) \, +#define Z_IS_1591U_EQ_1591U(...) \, +#define Z_IS_1592_EQ_1592(...) \, +#define Z_IS_1592U_EQ_1592(...) \, +#define Z_IS_1592_EQ_1592U(...) \, +#define Z_IS_1592U_EQ_1592U(...) \, +#define Z_IS_1593_EQ_1593(...) \, +#define Z_IS_1593U_EQ_1593(...) \, +#define Z_IS_1593_EQ_1593U(...) \, +#define Z_IS_1593U_EQ_1593U(...) \, +#define Z_IS_1594_EQ_1594(...) \, +#define Z_IS_1594U_EQ_1594(...) \, +#define Z_IS_1594_EQ_1594U(...) \, +#define Z_IS_1594U_EQ_1594U(...) \, +#define Z_IS_1595_EQ_1595(...) \, +#define Z_IS_1595U_EQ_1595(...) \, +#define Z_IS_1595_EQ_1595U(...) \, +#define Z_IS_1595U_EQ_1595U(...) \, +#define Z_IS_1596_EQ_1596(...) \, +#define Z_IS_1596U_EQ_1596(...) \, +#define Z_IS_1596_EQ_1596U(...) \, +#define Z_IS_1596U_EQ_1596U(...) \, +#define Z_IS_1597_EQ_1597(...) \, +#define Z_IS_1597U_EQ_1597(...) \, +#define Z_IS_1597_EQ_1597U(...) \, +#define Z_IS_1597U_EQ_1597U(...) \, +#define Z_IS_1598_EQ_1598(...) \, +#define Z_IS_1598U_EQ_1598(...) \, +#define Z_IS_1598_EQ_1598U(...) \, +#define Z_IS_1598U_EQ_1598U(...) \, +#define Z_IS_1599_EQ_1599(...) \, +#define Z_IS_1599U_EQ_1599(...) \, +#define Z_IS_1599_EQ_1599U(...) \, +#define Z_IS_1599U_EQ_1599U(...) \, +#define Z_IS_1600_EQ_1600(...) \, +#define Z_IS_1600U_EQ_1600(...) \, +#define Z_IS_1600_EQ_1600U(...) \, +#define Z_IS_1600U_EQ_1600U(...) \, +#define Z_IS_1601_EQ_1601(...) \, +#define Z_IS_1601U_EQ_1601(...) \, +#define Z_IS_1601_EQ_1601U(...) \, +#define Z_IS_1601U_EQ_1601U(...) \, +#define Z_IS_1602_EQ_1602(...) \, +#define Z_IS_1602U_EQ_1602(...) \, +#define Z_IS_1602_EQ_1602U(...) \, +#define Z_IS_1602U_EQ_1602U(...) \, +#define Z_IS_1603_EQ_1603(...) \, +#define Z_IS_1603U_EQ_1603(...) \, +#define Z_IS_1603_EQ_1603U(...) \, +#define Z_IS_1603U_EQ_1603U(...) \, +#define Z_IS_1604_EQ_1604(...) \, +#define Z_IS_1604U_EQ_1604(...) \, +#define Z_IS_1604_EQ_1604U(...) \, +#define Z_IS_1604U_EQ_1604U(...) \, +#define Z_IS_1605_EQ_1605(...) \, +#define Z_IS_1605U_EQ_1605(...) \, +#define Z_IS_1605_EQ_1605U(...) \, +#define Z_IS_1605U_EQ_1605U(...) \, +#define Z_IS_1606_EQ_1606(...) \, +#define Z_IS_1606U_EQ_1606(...) \, +#define Z_IS_1606_EQ_1606U(...) \, +#define Z_IS_1606U_EQ_1606U(...) \, +#define Z_IS_1607_EQ_1607(...) \, +#define Z_IS_1607U_EQ_1607(...) \, +#define Z_IS_1607_EQ_1607U(...) \, +#define Z_IS_1607U_EQ_1607U(...) \, +#define Z_IS_1608_EQ_1608(...) \, +#define Z_IS_1608U_EQ_1608(...) \, +#define Z_IS_1608_EQ_1608U(...) \, +#define Z_IS_1608U_EQ_1608U(...) \, +#define Z_IS_1609_EQ_1609(...) \, +#define Z_IS_1609U_EQ_1609(...) \, +#define Z_IS_1609_EQ_1609U(...) \, +#define Z_IS_1609U_EQ_1609U(...) \, +#define Z_IS_1610_EQ_1610(...) \, +#define Z_IS_1610U_EQ_1610(...) \, +#define Z_IS_1610_EQ_1610U(...) \, +#define Z_IS_1610U_EQ_1610U(...) \, +#define Z_IS_1611_EQ_1611(...) \, +#define Z_IS_1611U_EQ_1611(...) \, +#define Z_IS_1611_EQ_1611U(...) \, +#define Z_IS_1611U_EQ_1611U(...) \, +#define Z_IS_1612_EQ_1612(...) \, +#define Z_IS_1612U_EQ_1612(...) \, +#define Z_IS_1612_EQ_1612U(...) \, +#define Z_IS_1612U_EQ_1612U(...) \, +#define Z_IS_1613_EQ_1613(...) \, +#define Z_IS_1613U_EQ_1613(...) \, +#define Z_IS_1613_EQ_1613U(...) \, +#define Z_IS_1613U_EQ_1613U(...) \, +#define Z_IS_1614_EQ_1614(...) \, +#define Z_IS_1614U_EQ_1614(...) \, +#define Z_IS_1614_EQ_1614U(...) \, +#define Z_IS_1614U_EQ_1614U(...) \, +#define Z_IS_1615_EQ_1615(...) \, +#define Z_IS_1615U_EQ_1615(...) \, +#define Z_IS_1615_EQ_1615U(...) \, +#define Z_IS_1615U_EQ_1615U(...) \, +#define Z_IS_1616_EQ_1616(...) \, +#define Z_IS_1616U_EQ_1616(...) \, +#define Z_IS_1616_EQ_1616U(...) \, +#define Z_IS_1616U_EQ_1616U(...) \, +#define Z_IS_1617_EQ_1617(...) \, +#define Z_IS_1617U_EQ_1617(...) \, +#define Z_IS_1617_EQ_1617U(...) \, +#define Z_IS_1617U_EQ_1617U(...) \, +#define Z_IS_1618_EQ_1618(...) \, +#define Z_IS_1618U_EQ_1618(...) \, +#define Z_IS_1618_EQ_1618U(...) \, +#define Z_IS_1618U_EQ_1618U(...) \, +#define Z_IS_1619_EQ_1619(...) \, +#define Z_IS_1619U_EQ_1619(...) \, +#define Z_IS_1619_EQ_1619U(...) \, +#define Z_IS_1619U_EQ_1619U(...) \, +#define Z_IS_1620_EQ_1620(...) \, +#define Z_IS_1620U_EQ_1620(...) \, +#define Z_IS_1620_EQ_1620U(...) \, +#define Z_IS_1620U_EQ_1620U(...) \, +#define Z_IS_1621_EQ_1621(...) \, +#define Z_IS_1621U_EQ_1621(...) \, +#define Z_IS_1621_EQ_1621U(...) \, +#define Z_IS_1621U_EQ_1621U(...) \, +#define Z_IS_1622_EQ_1622(...) \, +#define Z_IS_1622U_EQ_1622(...) \, +#define Z_IS_1622_EQ_1622U(...) \, +#define Z_IS_1622U_EQ_1622U(...) \, +#define Z_IS_1623_EQ_1623(...) \, +#define Z_IS_1623U_EQ_1623(...) \, +#define Z_IS_1623_EQ_1623U(...) \, +#define Z_IS_1623U_EQ_1623U(...) \, +#define Z_IS_1624_EQ_1624(...) \, +#define Z_IS_1624U_EQ_1624(...) \, +#define Z_IS_1624_EQ_1624U(...) \, +#define Z_IS_1624U_EQ_1624U(...) \, +#define Z_IS_1625_EQ_1625(...) \, +#define Z_IS_1625U_EQ_1625(...) \, +#define Z_IS_1625_EQ_1625U(...) \, +#define Z_IS_1625U_EQ_1625U(...) \, +#define Z_IS_1626_EQ_1626(...) \, +#define Z_IS_1626U_EQ_1626(...) \, +#define Z_IS_1626_EQ_1626U(...) \, +#define Z_IS_1626U_EQ_1626U(...) \, +#define Z_IS_1627_EQ_1627(...) \, +#define Z_IS_1627U_EQ_1627(...) \, +#define Z_IS_1627_EQ_1627U(...) \, +#define Z_IS_1627U_EQ_1627U(...) \, +#define Z_IS_1628_EQ_1628(...) \, +#define Z_IS_1628U_EQ_1628(...) \, +#define Z_IS_1628_EQ_1628U(...) \, +#define Z_IS_1628U_EQ_1628U(...) \, +#define Z_IS_1629_EQ_1629(...) \, +#define Z_IS_1629U_EQ_1629(...) \, +#define Z_IS_1629_EQ_1629U(...) \, +#define Z_IS_1629U_EQ_1629U(...) \, +#define Z_IS_1630_EQ_1630(...) \, +#define Z_IS_1630U_EQ_1630(...) \, +#define Z_IS_1630_EQ_1630U(...) \, +#define Z_IS_1630U_EQ_1630U(...) \, +#define Z_IS_1631_EQ_1631(...) \, +#define Z_IS_1631U_EQ_1631(...) \, +#define Z_IS_1631_EQ_1631U(...) \, +#define Z_IS_1631U_EQ_1631U(...) \, +#define Z_IS_1632_EQ_1632(...) \, +#define Z_IS_1632U_EQ_1632(...) \, +#define Z_IS_1632_EQ_1632U(...) \, +#define Z_IS_1632U_EQ_1632U(...) \, +#define Z_IS_1633_EQ_1633(...) \, +#define Z_IS_1633U_EQ_1633(...) \, +#define Z_IS_1633_EQ_1633U(...) \, +#define Z_IS_1633U_EQ_1633U(...) \, +#define Z_IS_1634_EQ_1634(...) \, +#define Z_IS_1634U_EQ_1634(...) \, +#define Z_IS_1634_EQ_1634U(...) \, +#define Z_IS_1634U_EQ_1634U(...) \, +#define Z_IS_1635_EQ_1635(...) \, +#define Z_IS_1635U_EQ_1635(...) \, +#define Z_IS_1635_EQ_1635U(...) \, +#define Z_IS_1635U_EQ_1635U(...) \, +#define Z_IS_1636_EQ_1636(...) \, +#define Z_IS_1636U_EQ_1636(...) \, +#define Z_IS_1636_EQ_1636U(...) \, +#define Z_IS_1636U_EQ_1636U(...) \, +#define Z_IS_1637_EQ_1637(...) \, +#define Z_IS_1637U_EQ_1637(...) \, +#define Z_IS_1637_EQ_1637U(...) \, +#define Z_IS_1637U_EQ_1637U(...) \, +#define Z_IS_1638_EQ_1638(...) \, +#define Z_IS_1638U_EQ_1638(...) \, +#define Z_IS_1638_EQ_1638U(...) \, +#define Z_IS_1638U_EQ_1638U(...) \, +#define Z_IS_1639_EQ_1639(...) \, +#define Z_IS_1639U_EQ_1639(...) \, +#define Z_IS_1639_EQ_1639U(...) \, +#define Z_IS_1639U_EQ_1639U(...) \, +#define Z_IS_1640_EQ_1640(...) \, +#define Z_IS_1640U_EQ_1640(...) \, +#define Z_IS_1640_EQ_1640U(...) \, +#define Z_IS_1640U_EQ_1640U(...) \, +#define Z_IS_1641_EQ_1641(...) \, +#define Z_IS_1641U_EQ_1641(...) \, +#define Z_IS_1641_EQ_1641U(...) \, +#define Z_IS_1641U_EQ_1641U(...) \, +#define Z_IS_1642_EQ_1642(...) \, +#define Z_IS_1642U_EQ_1642(...) \, +#define Z_IS_1642_EQ_1642U(...) \, +#define Z_IS_1642U_EQ_1642U(...) \, +#define Z_IS_1643_EQ_1643(...) \, +#define Z_IS_1643U_EQ_1643(...) \, +#define Z_IS_1643_EQ_1643U(...) \, +#define Z_IS_1643U_EQ_1643U(...) \, +#define Z_IS_1644_EQ_1644(...) \, +#define Z_IS_1644U_EQ_1644(...) \, +#define Z_IS_1644_EQ_1644U(...) \, +#define Z_IS_1644U_EQ_1644U(...) \, +#define Z_IS_1645_EQ_1645(...) \, +#define Z_IS_1645U_EQ_1645(...) \, +#define Z_IS_1645_EQ_1645U(...) \, +#define Z_IS_1645U_EQ_1645U(...) \, +#define Z_IS_1646_EQ_1646(...) \, +#define Z_IS_1646U_EQ_1646(...) \, +#define Z_IS_1646_EQ_1646U(...) \, +#define Z_IS_1646U_EQ_1646U(...) \, +#define Z_IS_1647_EQ_1647(...) \, +#define Z_IS_1647U_EQ_1647(...) \, +#define Z_IS_1647_EQ_1647U(...) \, +#define Z_IS_1647U_EQ_1647U(...) \, +#define Z_IS_1648_EQ_1648(...) \, +#define Z_IS_1648U_EQ_1648(...) \, +#define Z_IS_1648_EQ_1648U(...) \, +#define Z_IS_1648U_EQ_1648U(...) \, +#define Z_IS_1649_EQ_1649(...) \, +#define Z_IS_1649U_EQ_1649(...) \, +#define Z_IS_1649_EQ_1649U(...) \, +#define Z_IS_1649U_EQ_1649U(...) \, +#define Z_IS_1650_EQ_1650(...) \, +#define Z_IS_1650U_EQ_1650(...) \, +#define Z_IS_1650_EQ_1650U(...) \, +#define Z_IS_1650U_EQ_1650U(...) \, +#define Z_IS_1651_EQ_1651(...) \, +#define Z_IS_1651U_EQ_1651(...) \, +#define Z_IS_1651_EQ_1651U(...) \, +#define Z_IS_1651U_EQ_1651U(...) \, +#define Z_IS_1652_EQ_1652(...) \, +#define Z_IS_1652U_EQ_1652(...) \, +#define Z_IS_1652_EQ_1652U(...) \, +#define Z_IS_1652U_EQ_1652U(...) \, +#define Z_IS_1653_EQ_1653(...) \, +#define Z_IS_1653U_EQ_1653(...) \, +#define Z_IS_1653_EQ_1653U(...) \, +#define Z_IS_1653U_EQ_1653U(...) \, +#define Z_IS_1654_EQ_1654(...) \, +#define Z_IS_1654U_EQ_1654(...) \, +#define Z_IS_1654_EQ_1654U(...) \, +#define Z_IS_1654U_EQ_1654U(...) \, +#define Z_IS_1655_EQ_1655(...) \, +#define Z_IS_1655U_EQ_1655(...) \, +#define Z_IS_1655_EQ_1655U(...) \, +#define Z_IS_1655U_EQ_1655U(...) \, +#define Z_IS_1656_EQ_1656(...) \, +#define Z_IS_1656U_EQ_1656(...) \, +#define Z_IS_1656_EQ_1656U(...) \, +#define Z_IS_1656U_EQ_1656U(...) \, +#define Z_IS_1657_EQ_1657(...) \, +#define Z_IS_1657U_EQ_1657(...) \, +#define Z_IS_1657_EQ_1657U(...) \, +#define Z_IS_1657U_EQ_1657U(...) \, +#define Z_IS_1658_EQ_1658(...) \, +#define Z_IS_1658U_EQ_1658(...) \, +#define Z_IS_1658_EQ_1658U(...) \, +#define Z_IS_1658U_EQ_1658U(...) \, +#define Z_IS_1659_EQ_1659(...) \, +#define Z_IS_1659U_EQ_1659(...) \, +#define Z_IS_1659_EQ_1659U(...) \, +#define Z_IS_1659U_EQ_1659U(...) \, +#define Z_IS_1660_EQ_1660(...) \, +#define Z_IS_1660U_EQ_1660(...) \, +#define Z_IS_1660_EQ_1660U(...) \, +#define Z_IS_1660U_EQ_1660U(...) \, +#define Z_IS_1661_EQ_1661(...) \, +#define Z_IS_1661U_EQ_1661(...) \, +#define Z_IS_1661_EQ_1661U(...) \, +#define Z_IS_1661U_EQ_1661U(...) \, +#define Z_IS_1662_EQ_1662(...) \, +#define Z_IS_1662U_EQ_1662(...) \, +#define Z_IS_1662_EQ_1662U(...) \, +#define Z_IS_1662U_EQ_1662U(...) \, +#define Z_IS_1663_EQ_1663(...) \, +#define Z_IS_1663U_EQ_1663(...) \, +#define Z_IS_1663_EQ_1663U(...) \, +#define Z_IS_1663U_EQ_1663U(...) \, +#define Z_IS_1664_EQ_1664(...) \, +#define Z_IS_1664U_EQ_1664(...) \, +#define Z_IS_1664_EQ_1664U(...) \, +#define Z_IS_1664U_EQ_1664U(...) \, +#define Z_IS_1665_EQ_1665(...) \, +#define Z_IS_1665U_EQ_1665(...) \, +#define Z_IS_1665_EQ_1665U(...) \, +#define Z_IS_1665U_EQ_1665U(...) \, +#define Z_IS_1666_EQ_1666(...) \, +#define Z_IS_1666U_EQ_1666(...) \, +#define Z_IS_1666_EQ_1666U(...) \, +#define Z_IS_1666U_EQ_1666U(...) \, +#define Z_IS_1667_EQ_1667(...) \, +#define Z_IS_1667U_EQ_1667(...) \, +#define Z_IS_1667_EQ_1667U(...) \, +#define Z_IS_1667U_EQ_1667U(...) \, +#define Z_IS_1668_EQ_1668(...) \, +#define Z_IS_1668U_EQ_1668(...) \, +#define Z_IS_1668_EQ_1668U(...) \, +#define Z_IS_1668U_EQ_1668U(...) \, +#define Z_IS_1669_EQ_1669(...) \, +#define Z_IS_1669U_EQ_1669(...) \, +#define Z_IS_1669_EQ_1669U(...) \, +#define Z_IS_1669U_EQ_1669U(...) \, +#define Z_IS_1670_EQ_1670(...) \, +#define Z_IS_1670U_EQ_1670(...) \, +#define Z_IS_1670_EQ_1670U(...) \, +#define Z_IS_1670U_EQ_1670U(...) \, +#define Z_IS_1671_EQ_1671(...) \, +#define Z_IS_1671U_EQ_1671(...) \, +#define Z_IS_1671_EQ_1671U(...) \, +#define Z_IS_1671U_EQ_1671U(...) \, +#define Z_IS_1672_EQ_1672(...) \, +#define Z_IS_1672U_EQ_1672(...) \, +#define Z_IS_1672_EQ_1672U(...) \, +#define Z_IS_1672U_EQ_1672U(...) \, +#define Z_IS_1673_EQ_1673(...) \, +#define Z_IS_1673U_EQ_1673(...) \, +#define Z_IS_1673_EQ_1673U(...) \, +#define Z_IS_1673U_EQ_1673U(...) \, +#define Z_IS_1674_EQ_1674(...) \, +#define Z_IS_1674U_EQ_1674(...) \, +#define Z_IS_1674_EQ_1674U(...) \, +#define Z_IS_1674U_EQ_1674U(...) \, +#define Z_IS_1675_EQ_1675(...) \, +#define Z_IS_1675U_EQ_1675(...) \, +#define Z_IS_1675_EQ_1675U(...) \, +#define Z_IS_1675U_EQ_1675U(...) \, +#define Z_IS_1676_EQ_1676(...) \, +#define Z_IS_1676U_EQ_1676(...) \, +#define Z_IS_1676_EQ_1676U(...) \, +#define Z_IS_1676U_EQ_1676U(...) \, +#define Z_IS_1677_EQ_1677(...) \, +#define Z_IS_1677U_EQ_1677(...) \, +#define Z_IS_1677_EQ_1677U(...) \, +#define Z_IS_1677U_EQ_1677U(...) \, +#define Z_IS_1678_EQ_1678(...) \, +#define Z_IS_1678U_EQ_1678(...) \, +#define Z_IS_1678_EQ_1678U(...) \, +#define Z_IS_1678U_EQ_1678U(...) \, +#define Z_IS_1679_EQ_1679(...) \, +#define Z_IS_1679U_EQ_1679(...) \, +#define Z_IS_1679_EQ_1679U(...) \, +#define Z_IS_1679U_EQ_1679U(...) \, +#define Z_IS_1680_EQ_1680(...) \, +#define Z_IS_1680U_EQ_1680(...) \, +#define Z_IS_1680_EQ_1680U(...) \, +#define Z_IS_1680U_EQ_1680U(...) \, +#define Z_IS_1681_EQ_1681(...) \, +#define Z_IS_1681U_EQ_1681(...) \, +#define Z_IS_1681_EQ_1681U(...) \, +#define Z_IS_1681U_EQ_1681U(...) \, +#define Z_IS_1682_EQ_1682(...) \, +#define Z_IS_1682U_EQ_1682(...) \, +#define Z_IS_1682_EQ_1682U(...) \, +#define Z_IS_1682U_EQ_1682U(...) \, +#define Z_IS_1683_EQ_1683(...) \, +#define Z_IS_1683U_EQ_1683(...) \, +#define Z_IS_1683_EQ_1683U(...) \, +#define Z_IS_1683U_EQ_1683U(...) \, +#define Z_IS_1684_EQ_1684(...) \, +#define Z_IS_1684U_EQ_1684(...) \, +#define Z_IS_1684_EQ_1684U(...) \, +#define Z_IS_1684U_EQ_1684U(...) \, +#define Z_IS_1685_EQ_1685(...) \, +#define Z_IS_1685U_EQ_1685(...) \, +#define Z_IS_1685_EQ_1685U(...) \, +#define Z_IS_1685U_EQ_1685U(...) \, +#define Z_IS_1686_EQ_1686(...) \, +#define Z_IS_1686U_EQ_1686(...) \, +#define Z_IS_1686_EQ_1686U(...) \, +#define Z_IS_1686U_EQ_1686U(...) \, +#define Z_IS_1687_EQ_1687(...) \, +#define Z_IS_1687U_EQ_1687(...) \, +#define Z_IS_1687_EQ_1687U(...) \, +#define Z_IS_1687U_EQ_1687U(...) \, +#define Z_IS_1688_EQ_1688(...) \, +#define Z_IS_1688U_EQ_1688(...) \, +#define Z_IS_1688_EQ_1688U(...) \, +#define Z_IS_1688U_EQ_1688U(...) \, +#define Z_IS_1689_EQ_1689(...) \, +#define Z_IS_1689U_EQ_1689(...) \, +#define Z_IS_1689_EQ_1689U(...) \, +#define Z_IS_1689U_EQ_1689U(...) \, +#define Z_IS_1690_EQ_1690(...) \, +#define Z_IS_1690U_EQ_1690(...) \, +#define Z_IS_1690_EQ_1690U(...) \, +#define Z_IS_1690U_EQ_1690U(...) \, +#define Z_IS_1691_EQ_1691(...) \, +#define Z_IS_1691U_EQ_1691(...) \, +#define Z_IS_1691_EQ_1691U(...) \, +#define Z_IS_1691U_EQ_1691U(...) \, +#define Z_IS_1692_EQ_1692(...) \, +#define Z_IS_1692U_EQ_1692(...) \, +#define Z_IS_1692_EQ_1692U(...) \, +#define Z_IS_1692U_EQ_1692U(...) \, +#define Z_IS_1693_EQ_1693(...) \, +#define Z_IS_1693U_EQ_1693(...) \, +#define Z_IS_1693_EQ_1693U(...) \, +#define Z_IS_1693U_EQ_1693U(...) \, +#define Z_IS_1694_EQ_1694(...) \, +#define Z_IS_1694U_EQ_1694(...) \, +#define Z_IS_1694_EQ_1694U(...) \, +#define Z_IS_1694U_EQ_1694U(...) \, +#define Z_IS_1695_EQ_1695(...) \, +#define Z_IS_1695U_EQ_1695(...) \, +#define Z_IS_1695_EQ_1695U(...) \, +#define Z_IS_1695U_EQ_1695U(...) \, +#define Z_IS_1696_EQ_1696(...) \, +#define Z_IS_1696U_EQ_1696(...) \, +#define Z_IS_1696_EQ_1696U(...) \, +#define Z_IS_1696U_EQ_1696U(...) \, +#define Z_IS_1697_EQ_1697(...) \, +#define Z_IS_1697U_EQ_1697(...) \, +#define Z_IS_1697_EQ_1697U(...) \, +#define Z_IS_1697U_EQ_1697U(...) \, +#define Z_IS_1698_EQ_1698(...) \, +#define Z_IS_1698U_EQ_1698(...) \, +#define Z_IS_1698_EQ_1698U(...) \, +#define Z_IS_1698U_EQ_1698U(...) \, +#define Z_IS_1699_EQ_1699(...) \, +#define Z_IS_1699U_EQ_1699(...) \, +#define Z_IS_1699_EQ_1699U(...) \, +#define Z_IS_1699U_EQ_1699U(...) \, +#define Z_IS_1700_EQ_1700(...) \, +#define Z_IS_1700U_EQ_1700(...) \, +#define Z_IS_1700_EQ_1700U(...) \, +#define Z_IS_1700U_EQ_1700U(...) \, +#define Z_IS_1701_EQ_1701(...) \, +#define Z_IS_1701U_EQ_1701(...) \, +#define Z_IS_1701_EQ_1701U(...) \, +#define Z_IS_1701U_EQ_1701U(...) \, +#define Z_IS_1702_EQ_1702(...) \, +#define Z_IS_1702U_EQ_1702(...) \, +#define Z_IS_1702_EQ_1702U(...) \, +#define Z_IS_1702U_EQ_1702U(...) \, +#define Z_IS_1703_EQ_1703(...) \, +#define Z_IS_1703U_EQ_1703(...) \, +#define Z_IS_1703_EQ_1703U(...) \, +#define Z_IS_1703U_EQ_1703U(...) \, +#define Z_IS_1704_EQ_1704(...) \, +#define Z_IS_1704U_EQ_1704(...) \, +#define Z_IS_1704_EQ_1704U(...) \, +#define Z_IS_1704U_EQ_1704U(...) \, +#define Z_IS_1705_EQ_1705(...) \, +#define Z_IS_1705U_EQ_1705(...) \, +#define Z_IS_1705_EQ_1705U(...) \, +#define Z_IS_1705U_EQ_1705U(...) \, +#define Z_IS_1706_EQ_1706(...) \, +#define Z_IS_1706U_EQ_1706(...) \, +#define Z_IS_1706_EQ_1706U(...) \, +#define Z_IS_1706U_EQ_1706U(...) \, +#define Z_IS_1707_EQ_1707(...) \, +#define Z_IS_1707U_EQ_1707(...) \, +#define Z_IS_1707_EQ_1707U(...) \, +#define Z_IS_1707U_EQ_1707U(...) \, +#define Z_IS_1708_EQ_1708(...) \, +#define Z_IS_1708U_EQ_1708(...) \, +#define Z_IS_1708_EQ_1708U(...) \, +#define Z_IS_1708U_EQ_1708U(...) \, +#define Z_IS_1709_EQ_1709(...) \, +#define Z_IS_1709U_EQ_1709(...) \, +#define Z_IS_1709_EQ_1709U(...) \, +#define Z_IS_1709U_EQ_1709U(...) \, +#define Z_IS_1710_EQ_1710(...) \, +#define Z_IS_1710U_EQ_1710(...) \, +#define Z_IS_1710_EQ_1710U(...) \, +#define Z_IS_1710U_EQ_1710U(...) \, +#define Z_IS_1711_EQ_1711(...) \, +#define Z_IS_1711U_EQ_1711(...) \, +#define Z_IS_1711_EQ_1711U(...) \, +#define Z_IS_1711U_EQ_1711U(...) \, +#define Z_IS_1712_EQ_1712(...) \, +#define Z_IS_1712U_EQ_1712(...) \, +#define Z_IS_1712_EQ_1712U(...) \, +#define Z_IS_1712U_EQ_1712U(...) \, +#define Z_IS_1713_EQ_1713(...) \, +#define Z_IS_1713U_EQ_1713(...) \, +#define Z_IS_1713_EQ_1713U(...) \, +#define Z_IS_1713U_EQ_1713U(...) \, +#define Z_IS_1714_EQ_1714(...) \, +#define Z_IS_1714U_EQ_1714(...) \, +#define Z_IS_1714_EQ_1714U(...) \, +#define Z_IS_1714U_EQ_1714U(...) \, +#define Z_IS_1715_EQ_1715(...) \, +#define Z_IS_1715U_EQ_1715(...) \, +#define Z_IS_1715_EQ_1715U(...) \, +#define Z_IS_1715U_EQ_1715U(...) \, +#define Z_IS_1716_EQ_1716(...) \, +#define Z_IS_1716U_EQ_1716(...) \, +#define Z_IS_1716_EQ_1716U(...) \, +#define Z_IS_1716U_EQ_1716U(...) \, +#define Z_IS_1717_EQ_1717(...) \, +#define Z_IS_1717U_EQ_1717(...) \, +#define Z_IS_1717_EQ_1717U(...) \, +#define Z_IS_1717U_EQ_1717U(...) \, +#define Z_IS_1718_EQ_1718(...) \, +#define Z_IS_1718U_EQ_1718(...) \, +#define Z_IS_1718_EQ_1718U(...) \, +#define Z_IS_1718U_EQ_1718U(...) \, +#define Z_IS_1719_EQ_1719(...) \, +#define Z_IS_1719U_EQ_1719(...) \, +#define Z_IS_1719_EQ_1719U(...) \, +#define Z_IS_1719U_EQ_1719U(...) \, +#define Z_IS_1720_EQ_1720(...) \, +#define Z_IS_1720U_EQ_1720(...) \, +#define Z_IS_1720_EQ_1720U(...) \, +#define Z_IS_1720U_EQ_1720U(...) \, +#define Z_IS_1721_EQ_1721(...) \, +#define Z_IS_1721U_EQ_1721(...) \, +#define Z_IS_1721_EQ_1721U(...) \, +#define Z_IS_1721U_EQ_1721U(...) \, +#define Z_IS_1722_EQ_1722(...) \, +#define Z_IS_1722U_EQ_1722(...) \, +#define Z_IS_1722_EQ_1722U(...) \, +#define Z_IS_1722U_EQ_1722U(...) \, +#define Z_IS_1723_EQ_1723(...) \, +#define Z_IS_1723U_EQ_1723(...) \, +#define Z_IS_1723_EQ_1723U(...) \, +#define Z_IS_1723U_EQ_1723U(...) \, +#define Z_IS_1724_EQ_1724(...) \, +#define Z_IS_1724U_EQ_1724(...) \, +#define Z_IS_1724_EQ_1724U(...) \, +#define Z_IS_1724U_EQ_1724U(...) \, +#define Z_IS_1725_EQ_1725(...) \, +#define Z_IS_1725U_EQ_1725(...) \, +#define Z_IS_1725_EQ_1725U(...) \, +#define Z_IS_1725U_EQ_1725U(...) \, +#define Z_IS_1726_EQ_1726(...) \, +#define Z_IS_1726U_EQ_1726(...) \, +#define Z_IS_1726_EQ_1726U(...) \, +#define Z_IS_1726U_EQ_1726U(...) \, +#define Z_IS_1727_EQ_1727(...) \, +#define Z_IS_1727U_EQ_1727(...) \, +#define Z_IS_1727_EQ_1727U(...) \, +#define Z_IS_1727U_EQ_1727U(...) \, +#define Z_IS_1728_EQ_1728(...) \, +#define Z_IS_1728U_EQ_1728(...) \, +#define Z_IS_1728_EQ_1728U(...) \, +#define Z_IS_1728U_EQ_1728U(...) \, +#define Z_IS_1729_EQ_1729(...) \, +#define Z_IS_1729U_EQ_1729(...) \, +#define Z_IS_1729_EQ_1729U(...) \, +#define Z_IS_1729U_EQ_1729U(...) \, +#define Z_IS_1730_EQ_1730(...) \, +#define Z_IS_1730U_EQ_1730(...) \, +#define Z_IS_1730_EQ_1730U(...) \, +#define Z_IS_1730U_EQ_1730U(...) \, +#define Z_IS_1731_EQ_1731(...) \, +#define Z_IS_1731U_EQ_1731(...) \, +#define Z_IS_1731_EQ_1731U(...) \, +#define Z_IS_1731U_EQ_1731U(...) \, +#define Z_IS_1732_EQ_1732(...) \, +#define Z_IS_1732U_EQ_1732(...) \, +#define Z_IS_1732_EQ_1732U(...) \, +#define Z_IS_1732U_EQ_1732U(...) \, +#define Z_IS_1733_EQ_1733(...) \, +#define Z_IS_1733U_EQ_1733(...) \, +#define Z_IS_1733_EQ_1733U(...) \, +#define Z_IS_1733U_EQ_1733U(...) \, +#define Z_IS_1734_EQ_1734(...) \, +#define Z_IS_1734U_EQ_1734(...) \, +#define Z_IS_1734_EQ_1734U(...) \, +#define Z_IS_1734U_EQ_1734U(...) \, +#define Z_IS_1735_EQ_1735(...) \, +#define Z_IS_1735U_EQ_1735(...) \, +#define Z_IS_1735_EQ_1735U(...) \, +#define Z_IS_1735U_EQ_1735U(...) \, +#define Z_IS_1736_EQ_1736(...) \, +#define Z_IS_1736U_EQ_1736(...) \, +#define Z_IS_1736_EQ_1736U(...) \, +#define Z_IS_1736U_EQ_1736U(...) \, +#define Z_IS_1737_EQ_1737(...) \, +#define Z_IS_1737U_EQ_1737(...) \, +#define Z_IS_1737_EQ_1737U(...) \, +#define Z_IS_1737U_EQ_1737U(...) \, +#define Z_IS_1738_EQ_1738(...) \, +#define Z_IS_1738U_EQ_1738(...) \, +#define Z_IS_1738_EQ_1738U(...) \, +#define Z_IS_1738U_EQ_1738U(...) \, +#define Z_IS_1739_EQ_1739(...) \, +#define Z_IS_1739U_EQ_1739(...) \, +#define Z_IS_1739_EQ_1739U(...) \, +#define Z_IS_1739U_EQ_1739U(...) \, +#define Z_IS_1740_EQ_1740(...) \, +#define Z_IS_1740U_EQ_1740(...) \, +#define Z_IS_1740_EQ_1740U(...) \, +#define Z_IS_1740U_EQ_1740U(...) \, +#define Z_IS_1741_EQ_1741(...) \, +#define Z_IS_1741U_EQ_1741(...) \, +#define Z_IS_1741_EQ_1741U(...) \, +#define Z_IS_1741U_EQ_1741U(...) \, +#define Z_IS_1742_EQ_1742(...) \, +#define Z_IS_1742U_EQ_1742(...) \, +#define Z_IS_1742_EQ_1742U(...) \, +#define Z_IS_1742U_EQ_1742U(...) \, +#define Z_IS_1743_EQ_1743(...) \, +#define Z_IS_1743U_EQ_1743(...) \, +#define Z_IS_1743_EQ_1743U(...) \, +#define Z_IS_1743U_EQ_1743U(...) \, +#define Z_IS_1744_EQ_1744(...) \, +#define Z_IS_1744U_EQ_1744(...) \, +#define Z_IS_1744_EQ_1744U(...) \, +#define Z_IS_1744U_EQ_1744U(...) \, +#define Z_IS_1745_EQ_1745(...) \, +#define Z_IS_1745U_EQ_1745(...) \, +#define Z_IS_1745_EQ_1745U(...) \, +#define Z_IS_1745U_EQ_1745U(...) \, +#define Z_IS_1746_EQ_1746(...) \, +#define Z_IS_1746U_EQ_1746(...) \, +#define Z_IS_1746_EQ_1746U(...) \, +#define Z_IS_1746U_EQ_1746U(...) \, +#define Z_IS_1747_EQ_1747(...) \, +#define Z_IS_1747U_EQ_1747(...) \, +#define Z_IS_1747_EQ_1747U(...) \, +#define Z_IS_1747U_EQ_1747U(...) \, +#define Z_IS_1748_EQ_1748(...) \, +#define Z_IS_1748U_EQ_1748(...) \, +#define Z_IS_1748_EQ_1748U(...) \, +#define Z_IS_1748U_EQ_1748U(...) \, +#define Z_IS_1749_EQ_1749(...) \, +#define Z_IS_1749U_EQ_1749(...) \, +#define Z_IS_1749_EQ_1749U(...) \, +#define Z_IS_1749U_EQ_1749U(...) \, +#define Z_IS_1750_EQ_1750(...) \, +#define Z_IS_1750U_EQ_1750(...) \, +#define Z_IS_1750_EQ_1750U(...) \, +#define Z_IS_1750U_EQ_1750U(...) \, +#define Z_IS_1751_EQ_1751(...) \, +#define Z_IS_1751U_EQ_1751(...) \, +#define Z_IS_1751_EQ_1751U(...) \, +#define Z_IS_1751U_EQ_1751U(...) \, +#define Z_IS_1752_EQ_1752(...) \, +#define Z_IS_1752U_EQ_1752(...) \, +#define Z_IS_1752_EQ_1752U(...) \, +#define Z_IS_1752U_EQ_1752U(...) \, +#define Z_IS_1753_EQ_1753(...) \, +#define Z_IS_1753U_EQ_1753(...) \, +#define Z_IS_1753_EQ_1753U(...) \, +#define Z_IS_1753U_EQ_1753U(...) \, +#define Z_IS_1754_EQ_1754(...) \, +#define Z_IS_1754U_EQ_1754(...) \, +#define Z_IS_1754_EQ_1754U(...) \, +#define Z_IS_1754U_EQ_1754U(...) \, +#define Z_IS_1755_EQ_1755(...) \, +#define Z_IS_1755U_EQ_1755(...) \, +#define Z_IS_1755_EQ_1755U(...) \, +#define Z_IS_1755U_EQ_1755U(...) \, +#define Z_IS_1756_EQ_1756(...) \, +#define Z_IS_1756U_EQ_1756(...) \, +#define Z_IS_1756_EQ_1756U(...) \, +#define Z_IS_1756U_EQ_1756U(...) \, +#define Z_IS_1757_EQ_1757(...) \, +#define Z_IS_1757U_EQ_1757(...) \, +#define Z_IS_1757_EQ_1757U(...) \, +#define Z_IS_1757U_EQ_1757U(...) \, +#define Z_IS_1758_EQ_1758(...) \, +#define Z_IS_1758U_EQ_1758(...) \, +#define Z_IS_1758_EQ_1758U(...) \, +#define Z_IS_1758U_EQ_1758U(...) \, +#define Z_IS_1759_EQ_1759(...) \, +#define Z_IS_1759U_EQ_1759(...) \, +#define Z_IS_1759_EQ_1759U(...) \, +#define Z_IS_1759U_EQ_1759U(...) \, +#define Z_IS_1760_EQ_1760(...) \, +#define Z_IS_1760U_EQ_1760(...) \, +#define Z_IS_1760_EQ_1760U(...) \, +#define Z_IS_1760U_EQ_1760U(...) \, +#define Z_IS_1761_EQ_1761(...) \, +#define Z_IS_1761U_EQ_1761(...) \, +#define Z_IS_1761_EQ_1761U(...) \, +#define Z_IS_1761U_EQ_1761U(...) \, +#define Z_IS_1762_EQ_1762(...) \, +#define Z_IS_1762U_EQ_1762(...) \, +#define Z_IS_1762_EQ_1762U(...) \, +#define Z_IS_1762U_EQ_1762U(...) \, +#define Z_IS_1763_EQ_1763(...) \, +#define Z_IS_1763U_EQ_1763(...) \, +#define Z_IS_1763_EQ_1763U(...) \, +#define Z_IS_1763U_EQ_1763U(...) \, +#define Z_IS_1764_EQ_1764(...) \, +#define Z_IS_1764U_EQ_1764(...) \, +#define Z_IS_1764_EQ_1764U(...) \, +#define Z_IS_1764U_EQ_1764U(...) \, +#define Z_IS_1765_EQ_1765(...) \, +#define Z_IS_1765U_EQ_1765(...) \, +#define Z_IS_1765_EQ_1765U(...) \, +#define Z_IS_1765U_EQ_1765U(...) \, +#define Z_IS_1766_EQ_1766(...) \, +#define Z_IS_1766U_EQ_1766(...) \, +#define Z_IS_1766_EQ_1766U(...) \, +#define Z_IS_1766U_EQ_1766U(...) \, +#define Z_IS_1767_EQ_1767(...) \, +#define Z_IS_1767U_EQ_1767(...) \, +#define Z_IS_1767_EQ_1767U(...) \, +#define Z_IS_1767U_EQ_1767U(...) \, +#define Z_IS_1768_EQ_1768(...) \, +#define Z_IS_1768U_EQ_1768(...) \, +#define Z_IS_1768_EQ_1768U(...) \, +#define Z_IS_1768U_EQ_1768U(...) \, +#define Z_IS_1769_EQ_1769(...) \, +#define Z_IS_1769U_EQ_1769(...) \, +#define Z_IS_1769_EQ_1769U(...) \, +#define Z_IS_1769U_EQ_1769U(...) \, +#define Z_IS_1770_EQ_1770(...) \, +#define Z_IS_1770U_EQ_1770(...) \, +#define Z_IS_1770_EQ_1770U(...) \, +#define Z_IS_1770U_EQ_1770U(...) \, +#define Z_IS_1771_EQ_1771(...) \, +#define Z_IS_1771U_EQ_1771(...) \, +#define Z_IS_1771_EQ_1771U(...) \, +#define Z_IS_1771U_EQ_1771U(...) \, +#define Z_IS_1772_EQ_1772(...) \, +#define Z_IS_1772U_EQ_1772(...) \, +#define Z_IS_1772_EQ_1772U(...) \, +#define Z_IS_1772U_EQ_1772U(...) \, +#define Z_IS_1773_EQ_1773(...) \, +#define Z_IS_1773U_EQ_1773(...) \, +#define Z_IS_1773_EQ_1773U(...) \, +#define Z_IS_1773U_EQ_1773U(...) \, +#define Z_IS_1774_EQ_1774(...) \, +#define Z_IS_1774U_EQ_1774(...) \, +#define Z_IS_1774_EQ_1774U(...) \, +#define Z_IS_1774U_EQ_1774U(...) \, +#define Z_IS_1775_EQ_1775(...) \, +#define Z_IS_1775U_EQ_1775(...) \, +#define Z_IS_1775_EQ_1775U(...) \, +#define Z_IS_1775U_EQ_1775U(...) \, +#define Z_IS_1776_EQ_1776(...) \, +#define Z_IS_1776U_EQ_1776(...) \, +#define Z_IS_1776_EQ_1776U(...) \, +#define Z_IS_1776U_EQ_1776U(...) \, +#define Z_IS_1777_EQ_1777(...) \, +#define Z_IS_1777U_EQ_1777(...) \, +#define Z_IS_1777_EQ_1777U(...) \, +#define Z_IS_1777U_EQ_1777U(...) \, +#define Z_IS_1778_EQ_1778(...) \, +#define Z_IS_1778U_EQ_1778(...) \, +#define Z_IS_1778_EQ_1778U(...) \, +#define Z_IS_1778U_EQ_1778U(...) \, +#define Z_IS_1779_EQ_1779(...) \, +#define Z_IS_1779U_EQ_1779(...) \, +#define Z_IS_1779_EQ_1779U(...) \, +#define Z_IS_1779U_EQ_1779U(...) \, +#define Z_IS_1780_EQ_1780(...) \, +#define Z_IS_1780U_EQ_1780(...) \, +#define Z_IS_1780_EQ_1780U(...) \, +#define Z_IS_1780U_EQ_1780U(...) \, +#define Z_IS_1781_EQ_1781(...) \, +#define Z_IS_1781U_EQ_1781(...) \, +#define Z_IS_1781_EQ_1781U(...) \, +#define Z_IS_1781U_EQ_1781U(...) \, +#define Z_IS_1782_EQ_1782(...) \, +#define Z_IS_1782U_EQ_1782(...) \, +#define Z_IS_1782_EQ_1782U(...) \, +#define Z_IS_1782U_EQ_1782U(...) \, +#define Z_IS_1783_EQ_1783(...) \, +#define Z_IS_1783U_EQ_1783(...) \, +#define Z_IS_1783_EQ_1783U(...) \, +#define Z_IS_1783U_EQ_1783U(...) \, +#define Z_IS_1784_EQ_1784(...) \, +#define Z_IS_1784U_EQ_1784(...) \, +#define Z_IS_1784_EQ_1784U(...) \, +#define Z_IS_1784U_EQ_1784U(...) \, +#define Z_IS_1785_EQ_1785(...) \, +#define Z_IS_1785U_EQ_1785(...) \, +#define Z_IS_1785_EQ_1785U(...) \, +#define Z_IS_1785U_EQ_1785U(...) \, +#define Z_IS_1786_EQ_1786(...) \, +#define Z_IS_1786U_EQ_1786(...) \, +#define Z_IS_1786_EQ_1786U(...) \, +#define Z_IS_1786U_EQ_1786U(...) \, +#define Z_IS_1787_EQ_1787(...) \, +#define Z_IS_1787U_EQ_1787(...) \, +#define Z_IS_1787_EQ_1787U(...) \, +#define Z_IS_1787U_EQ_1787U(...) \, +#define Z_IS_1788_EQ_1788(...) \, +#define Z_IS_1788U_EQ_1788(...) \, +#define Z_IS_1788_EQ_1788U(...) \, +#define Z_IS_1788U_EQ_1788U(...) \, +#define Z_IS_1789_EQ_1789(...) \, +#define Z_IS_1789U_EQ_1789(...) \, +#define Z_IS_1789_EQ_1789U(...) \, +#define Z_IS_1789U_EQ_1789U(...) \, +#define Z_IS_1790_EQ_1790(...) \, +#define Z_IS_1790U_EQ_1790(...) \, +#define Z_IS_1790_EQ_1790U(...) \, +#define Z_IS_1790U_EQ_1790U(...) \, +#define Z_IS_1791_EQ_1791(...) \, +#define Z_IS_1791U_EQ_1791(...) \, +#define Z_IS_1791_EQ_1791U(...) \, +#define Z_IS_1791U_EQ_1791U(...) \, +#define Z_IS_1792_EQ_1792(...) \, +#define Z_IS_1792U_EQ_1792(...) \, +#define Z_IS_1792_EQ_1792U(...) \, +#define Z_IS_1792U_EQ_1792U(...) \, +#define Z_IS_1793_EQ_1793(...) \, +#define Z_IS_1793U_EQ_1793(...) \, +#define Z_IS_1793_EQ_1793U(...) \, +#define Z_IS_1793U_EQ_1793U(...) \, +#define Z_IS_1794_EQ_1794(...) \, +#define Z_IS_1794U_EQ_1794(...) \, +#define Z_IS_1794_EQ_1794U(...) \, +#define Z_IS_1794U_EQ_1794U(...) \, +#define Z_IS_1795_EQ_1795(...) \, +#define Z_IS_1795U_EQ_1795(...) \, +#define Z_IS_1795_EQ_1795U(...) \, +#define Z_IS_1795U_EQ_1795U(...) \, +#define Z_IS_1796_EQ_1796(...) \, +#define Z_IS_1796U_EQ_1796(...) \, +#define Z_IS_1796_EQ_1796U(...) \, +#define Z_IS_1796U_EQ_1796U(...) \, +#define Z_IS_1797_EQ_1797(...) \, +#define Z_IS_1797U_EQ_1797(...) \, +#define Z_IS_1797_EQ_1797U(...) \, +#define Z_IS_1797U_EQ_1797U(...) \, +#define Z_IS_1798_EQ_1798(...) \, +#define Z_IS_1798U_EQ_1798(...) \, +#define Z_IS_1798_EQ_1798U(...) \, +#define Z_IS_1798U_EQ_1798U(...) \, +#define Z_IS_1799_EQ_1799(...) \, +#define Z_IS_1799U_EQ_1799(...) \, +#define Z_IS_1799_EQ_1799U(...) \, +#define Z_IS_1799U_EQ_1799U(...) \, +#define Z_IS_1800_EQ_1800(...) \, +#define Z_IS_1800U_EQ_1800(...) \, +#define Z_IS_1800_EQ_1800U(...) \, +#define Z_IS_1800U_EQ_1800U(...) \, +#define Z_IS_1801_EQ_1801(...) \, +#define Z_IS_1801U_EQ_1801(...) \, +#define Z_IS_1801_EQ_1801U(...) \, +#define Z_IS_1801U_EQ_1801U(...) \, +#define Z_IS_1802_EQ_1802(...) \, +#define Z_IS_1802U_EQ_1802(...) \, +#define Z_IS_1802_EQ_1802U(...) \, +#define Z_IS_1802U_EQ_1802U(...) \, +#define Z_IS_1803_EQ_1803(...) \, +#define Z_IS_1803U_EQ_1803(...) \, +#define Z_IS_1803_EQ_1803U(...) \, +#define Z_IS_1803U_EQ_1803U(...) \, +#define Z_IS_1804_EQ_1804(...) \, +#define Z_IS_1804U_EQ_1804(...) \, +#define Z_IS_1804_EQ_1804U(...) \, +#define Z_IS_1804U_EQ_1804U(...) \, +#define Z_IS_1805_EQ_1805(...) \, +#define Z_IS_1805U_EQ_1805(...) \, +#define Z_IS_1805_EQ_1805U(...) \, +#define Z_IS_1805U_EQ_1805U(...) \, +#define Z_IS_1806_EQ_1806(...) \, +#define Z_IS_1806U_EQ_1806(...) \, +#define Z_IS_1806_EQ_1806U(...) \, +#define Z_IS_1806U_EQ_1806U(...) \, +#define Z_IS_1807_EQ_1807(...) \, +#define Z_IS_1807U_EQ_1807(...) \, +#define Z_IS_1807_EQ_1807U(...) \, +#define Z_IS_1807U_EQ_1807U(...) \, +#define Z_IS_1808_EQ_1808(...) \, +#define Z_IS_1808U_EQ_1808(...) \, +#define Z_IS_1808_EQ_1808U(...) \, +#define Z_IS_1808U_EQ_1808U(...) \, +#define Z_IS_1809_EQ_1809(...) \, +#define Z_IS_1809U_EQ_1809(...) \, +#define Z_IS_1809_EQ_1809U(...) \, +#define Z_IS_1809U_EQ_1809U(...) \, +#define Z_IS_1810_EQ_1810(...) \, +#define Z_IS_1810U_EQ_1810(...) \, +#define Z_IS_1810_EQ_1810U(...) \, +#define Z_IS_1810U_EQ_1810U(...) \, +#define Z_IS_1811_EQ_1811(...) \, +#define Z_IS_1811U_EQ_1811(...) \, +#define Z_IS_1811_EQ_1811U(...) \, +#define Z_IS_1811U_EQ_1811U(...) \, +#define Z_IS_1812_EQ_1812(...) \, +#define Z_IS_1812U_EQ_1812(...) \, +#define Z_IS_1812_EQ_1812U(...) \, +#define Z_IS_1812U_EQ_1812U(...) \, +#define Z_IS_1813_EQ_1813(...) \, +#define Z_IS_1813U_EQ_1813(...) \, +#define Z_IS_1813_EQ_1813U(...) \, +#define Z_IS_1813U_EQ_1813U(...) \, +#define Z_IS_1814_EQ_1814(...) \, +#define Z_IS_1814U_EQ_1814(...) \, +#define Z_IS_1814_EQ_1814U(...) \, +#define Z_IS_1814U_EQ_1814U(...) \, +#define Z_IS_1815_EQ_1815(...) \, +#define Z_IS_1815U_EQ_1815(...) \, +#define Z_IS_1815_EQ_1815U(...) \, +#define Z_IS_1815U_EQ_1815U(...) \, +#define Z_IS_1816_EQ_1816(...) \, +#define Z_IS_1816U_EQ_1816(...) \, +#define Z_IS_1816_EQ_1816U(...) \, +#define Z_IS_1816U_EQ_1816U(...) \, +#define Z_IS_1817_EQ_1817(...) \, +#define Z_IS_1817U_EQ_1817(...) \, +#define Z_IS_1817_EQ_1817U(...) \, +#define Z_IS_1817U_EQ_1817U(...) \, +#define Z_IS_1818_EQ_1818(...) \, +#define Z_IS_1818U_EQ_1818(...) \, +#define Z_IS_1818_EQ_1818U(...) \, +#define Z_IS_1818U_EQ_1818U(...) \, +#define Z_IS_1819_EQ_1819(...) \, +#define Z_IS_1819U_EQ_1819(...) \, +#define Z_IS_1819_EQ_1819U(...) \, +#define Z_IS_1819U_EQ_1819U(...) \, +#define Z_IS_1820_EQ_1820(...) \, +#define Z_IS_1820U_EQ_1820(...) \, +#define Z_IS_1820_EQ_1820U(...) \, +#define Z_IS_1820U_EQ_1820U(...) \, +#define Z_IS_1821_EQ_1821(...) \, +#define Z_IS_1821U_EQ_1821(...) \, +#define Z_IS_1821_EQ_1821U(...) \, +#define Z_IS_1821U_EQ_1821U(...) \, +#define Z_IS_1822_EQ_1822(...) \, +#define Z_IS_1822U_EQ_1822(...) \, +#define Z_IS_1822_EQ_1822U(...) \, +#define Z_IS_1822U_EQ_1822U(...) \, +#define Z_IS_1823_EQ_1823(...) \, +#define Z_IS_1823U_EQ_1823(...) \, +#define Z_IS_1823_EQ_1823U(...) \, +#define Z_IS_1823U_EQ_1823U(...) \, +#define Z_IS_1824_EQ_1824(...) \, +#define Z_IS_1824U_EQ_1824(...) \, +#define Z_IS_1824_EQ_1824U(...) \, +#define Z_IS_1824U_EQ_1824U(...) \, +#define Z_IS_1825_EQ_1825(...) \, +#define Z_IS_1825U_EQ_1825(...) \, +#define Z_IS_1825_EQ_1825U(...) \, +#define Z_IS_1825U_EQ_1825U(...) \, +#define Z_IS_1826_EQ_1826(...) \, +#define Z_IS_1826U_EQ_1826(...) \, +#define Z_IS_1826_EQ_1826U(...) \, +#define Z_IS_1826U_EQ_1826U(...) \, +#define Z_IS_1827_EQ_1827(...) \, +#define Z_IS_1827U_EQ_1827(...) \, +#define Z_IS_1827_EQ_1827U(...) \, +#define Z_IS_1827U_EQ_1827U(...) \, +#define Z_IS_1828_EQ_1828(...) \, +#define Z_IS_1828U_EQ_1828(...) \, +#define Z_IS_1828_EQ_1828U(...) \, +#define Z_IS_1828U_EQ_1828U(...) \, +#define Z_IS_1829_EQ_1829(...) \, +#define Z_IS_1829U_EQ_1829(...) \, +#define Z_IS_1829_EQ_1829U(...) \, +#define Z_IS_1829U_EQ_1829U(...) \, +#define Z_IS_1830_EQ_1830(...) \, +#define Z_IS_1830U_EQ_1830(...) \, +#define Z_IS_1830_EQ_1830U(...) \, +#define Z_IS_1830U_EQ_1830U(...) \, +#define Z_IS_1831_EQ_1831(...) \, +#define Z_IS_1831U_EQ_1831(...) \, +#define Z_IS_1831_EQ_1831U(...) \, +#define Z_IS_1831U_EQ_1831U(...) \, +#define Z_IS_1832_EQ_1832(...) \, +#define Z_IS_1832U_EQ_1832(...) \, +#define Z_IS_1832_EQ_1832U(...) \, +#define Z_IS_1832U_EQ_1832U(...) \, +#define Z_IS_1833_EQ_1833(...) \, +#define Z_IS_1833U_EQ_1833(...) \, +#define Z_IS_1833_EQ_1833U(...) \, +#define Z_IS_1833U_EQ_1833U(...) \, +#define Z_IS_1834_EQ_1834(...) \, +#define Z_IS_1834U_EQ_1834(...) \, +#define Z_IS_1834_EQ_1834U(...) \, +#define Z_IS_1834U_EQ_1834U(...) \, +#define Z_IS_1835_EQ_1835(...) \, +#define Z_IS_1835U_EQ_1835(...) \, +#define Z_IS_1835_EQ_1835U(...) \, +#define Z_IS_1835U_EQ_1835U(...) \, +#define Z_IS_1836_EQ_1836(...) \, +#define Z_IS_1836U_EQ_1836(...) \, +#define Z_IS_1836_EQ_1836U(...) \, +#define Z_IS_1836U_EQ_1836U(...) \, +#define Z_IS_1837_EQ_1837(...) \, +#define Z_IS_1837U_EQ_1837(...) \, +#define Z_IS_1837_EQ_1837U(...) \, +#define Z_IS_1837U_EQ_1837U(...) \, +#define Z_IS_1838_EQ_1838(...) \, +#define Z_IS_1838U_EQ_1838(...) \, +#define Z_IS_1838_EQ_1838U(...) \, +#define Z_IS_1838U_EQ_1838U(...) \, +#define Z_IS_1839_EQ_1839(...) \, +#define Z_IS_1839U_EQ_1839(...) \, +#define Z_IS_1839_EQ_1839U(...) \, +#define Z_IS_1839U_EQ_1839U(...) \, +#define Z_IS_1840_EQ_1840(...) \, +#define Z_IS_1840U_EQ_1840(...) \, +#define Z_IS_1840_EQ_1840U(...) \, +#define Z_IS_1840U_EQ_1840U(...) \, +#define Z_IS_1841_EQ_1841(...) \, +#define Z_IS_1841U_EQ_1841(...) \, +#define Z_IS_1841_EQ_1841U(...) \, +#define Z_IS_1841U_EQ_1841U(...) \, +#define Z_IS_1842_EQ_1842(...) \, +#define Z_IS_1842U_EQ_1842(...) \, +#define Z_IS_1842_EQ_1842U(...) \, +#define Z_IS_1842U_EQ_1842U(...) \, +#define Z_IS_1843_EQ_1843(...) \, +#define Z_IS_1843U_EQ_1843(...) \, +#define Z_IS_1843_EQ_1843U(...) \, +#define Z_IS_1843U_EQ_1843U(...) \, +#define Z_IS_1844_EQ_1844(...) \, +#define Z_IS_1844U_EQ_1844(...) \, +#define Z_IS_1844_EQ_1844U(...) \, +#define Z_IS_1844U_EQ_1844U(...) \, +#define Z_IS_1845_EQ_1845(...) \, +#define Z_IS_1845U_EQ_1845(...) \, +#define Z_IS_1845_EQ_1845U(...) \, +#define Z_IS_1845U_EQ_1845U(...) \, +#define Z_IS_1846_EQ_1846(...) \, +#define Z_IS_1846U_EQ_1846(...) \, +#define Z_IS_1846_EQ_1846U(...) \, +#define Z_IS_1846U_EQ_1846U(...) \, +#define Z_IS_1847_EQ_1847(...) \, +#define Z_IS_1847U_EQ_1847(...) \, +#define Z_IS_1847_EQ_1847U(...) \, +#define Z_IS_1847U_EQ_1847U(...) \, +#define Z_IS_1848_EQ_1848(...) \, +#define Z_IS_1848U_EQ_1848(...) \, +#define Z_IS_1848_EQ_1848U(...) \, +#define Z_IS_1848U_EQ_1848U(...) \, +#define Z_IS_1849_EQ_1849(...) \, +#define Z_IS_1849U_EQ_1849(...) \, +#define Z_IS_1849_EQ_1849U(...) \, +#define Z_IS_1849U_EQ_1849U(...) \, +#define Z_IS_1850_EQ_1850(...) \, +#define Z_IS_1850U_EQ_1850(...) \, +#define Z_IS_1850_EQ_1850U(...) \, +#define Z_IS_1850U_EQ_1850U(...) \, +#define Z_IS_1851_EQ_1851(...) \, +#define Z_IS_1851U_EQ_1851(...) \, +#define Z_IS_1851_EQ_1851U(...) \, +#define Z_IS_1851U_EQ_1851U(...) \, +#define Z_IS_1852_EQ_1852(...) \, +#define Z_IS_1852U_EQ_1852(...) \, +#define Z_IS_1852_EQ_1852U(...) \, +#define Z_IS_1852U_EQ_1852U(...) \, +#define Z_IS_1853_EQ_1853(...) \, +#define Z_IS_1853U_EQ_1853(...) \, +#define Z_IS_1853_EQ_1853U(...) \, +#define Z_IS_1853U_EQ_1853U(...) \, +#define Z_IS_1854_EQ_1854(...) \, +#define Z_IS_1854U_EQ_1854(...) \, +#define Z_IS_1854_EQ_1854U(...) \, +#define Z_IS_1854U_EQ_1854U(...) \, +#define Z_IS_1855_EQ_1855(...) \, +#define Z_IS_1855U_EQ_1855(...) \, +#define Z_IS_1855_EQ_1855U(...) \, +#define Z_IS_1855U_EQ_1855U(...) \, +#define Z_IS_1856_EQ_1856(...) \, +#define Z_IS_1856U_EQ_1856(...) \, +#define Z_IS_1856_EQ_1856U(...) \, +#define Z_IS_1856U_EQ_1856U(...) \, +#define Z_IS_1857_EQ_1857(...) \, +#define Z_IS_1857U_EQ_1857(...) \, +#define Z_IS_1857_EQ_1857U(...) \, +#define Z_IS_1857U_EQ_1857U(...) \, +#define Z_IS_1858_EQ_1858(...) \, +#define Z_IS_1858U_EQ_1858(...) \, +#define Z_IS_1858_EQ_1858U(...) \, +#define Z_IS_1858U_EQ_1858U(...) \, +#define Z_IS_1859_EQ_1859(...) \, +#define Z_IS_1859U_EQ_1859(...) \, +#define Z_IS_1859_EQ_1859U(...) \, +#define Z_IS_1859U_EQ_1859U(...) \, +#define Z_IS_1860_EQ_1860(...) \, +#define Z_IS_1860U_EQ_1860(...) \, +#define Z_IS_1860_EQ_1860U(...) \, +#define Z_IS_1860U_EQ_1860U(...) \, +#define Z_IS_1861_EQ_1861(...) \, +#define Z_IS_1861U_EQ_1861(...) \, +#define Z_IS_1861_EQ_1861U(...) \, +#define Z_IS_1861U_EQ_1861U(...) \, +#define Z_IS_1862_EQ_1862(...) \, +#define Z_IS_1862U_EQ_1862(...) \, +#define Z_IS_1862_EQ_1862U(...) \, +#define Z_IS_1862U_EQ_1862U(...) \, +#define Z_IS_1863_EQ_1863(...) \, +#define Z_IS_1863U_EQ_1863(...) \, +#define Z_IS_1863_EQ_1863U(...) \, +#define Z_IS_1863U_EQ_1863U(...) \, +#define Z_IS_1864_EQ_1864(...) \, +#define Z_IS_1864U_EQ_1864(...) \, +#define Z_IS_1864_EQ_1864U(...) \, +#define Z_IS_1864U_EQ_1864U(...) \, +#define Z_IS_1865_EQ_1865(...) \, +#define Z_IS_1865U_EQ_1865(...) \, +#define Z_IS_1865_EQ_1865U(...) \, +#define Z_IS_1865U_EQ_1865U(...) \, +#define Z_IS_1866_EQ_1866(...) \, +#define Z_IS_1866U_EQ_1866(...) \, +#define Z_IS_1866_EQ_1866U(...) \, +#define Z_IS_1866U_EQ_1866U(...) \, +#define Z_IS_1867_EQ_1867(...) \, +#define Z_IS_1867U_EQ_1867(...) \, +#define Z_IS_1867_EQ_1867U(...) \, +#define Z_IS_1867U_EQ_1867U(...) \, +#define Z_IS_1868_EQ_1868(...) \, +#define Z_IS_1868U_EQ_1868(...) \, +#define Z_IS_1868_EQ_1868U(...) \, +#define Z_IS_1868U_EQ_1868U(...) \, +#define Z_IS_1869_EQ_1869(...) \, +#define Z_IS_1869U_EQ_1869(...) \, +#define Z_IS_1869_EQ_1869U(...) \, +#define Z_IS_1869U_EQ_1869U(...) \, +#define Z_IS_1870_EQ_1870(...) \, +#define Z_IS_1870U_EQ_1870(...) \, +#define Z_IS_1870_EQ_1870U(...) \, +#define Z_IS_1870U_EQ_1870U(...) \, +#define Z_IS_1871_EQ_1871(...) \, +#define Z_IS_1871U_EQ_1871(...) \, +#define Z_IS_1871_EQ_1871U(...) \, +#define Z_IS_1871U_EQ_1871U(...) \, +#define Z_IS_1872_EQ_1872(...) \, +#define Z_IS_1872U_EQ_1872(...) \, +#define Z_IS_1872_EQ_1872U(...) \, +#define Z_IS_1872U_EQ_1872U(...) \, +#define Z_IS_1873_EQ_1873(...) \, +#define Z_IS_1873U_EQ_1873(...) \, +#define Z_IS_1873_EQ_1873U(...) \, +#define Z_IS_1873U_EQ_1873U(...) \, +#define Z_IS_1874_EQ_1874(...) \, +#define Z_IS_1874U_EQ_1874(...) \, +#define Z_IS_1874_EQ_1874U(...) \, +#define Z_IS_1874U_EQ_1874U(...) \, +#define Z_IS_1875_EQ_1875(...) \, +#define Z_IS_1875U_EQ_1875(...) \, +#define Z_IS_1875_EQ_1875U(...) \, +#define Z_IS_1875U_EQ_1875U(...) \, +#define Z_IS_1876_EQ_1876(...) \, +#define Z_IS_1876U_EQ_1876(...) \, +#define Z_IS_1876_EQ_1876U(...) \, +#define Z_IS_1876U_EQ_1876U(...) \, +#define Z_IS_1877_EQ_1877(...) \, +#define Z_IS_1877U_EQ_1877(...) \, +#define Z_IS_1877_EQ_1877U(...) \, +#define Z_IS_1877U_EQ_1877U(...) \, +#define Z_IS_1878_EQ_1878(...) \, +#define Z_IS_1878U_EQ_1878(...) \, +#define Z_IS_1878_EQ_1878U(...) \, +#define Z_IS_1878U_EQ_1878U(...) \, +#define Z_IS_1879_EQ_1879(...) \, +#define Z_IS_1879U_EQ_1879(...) \, +#define Z_IS_1879_EQ_1879U(...) \, +#define Z_IS_1879U_EQ_1879U(...) \, +#define Z_IS_1880_EQ_1880(...) \, +#define Z_IS_1880U_EQ_1880(...) \, +#define Z_IS_1880_EQ_1880U(...) \, +#define Z_IS_1880U_EQ_1880U(...) \, +#define Z_IS_1881_EQ_1881(...) \, +#define Z_IS_1881U_EQ_1881(...) \, +#define Z_IS_1881_EQ_1881U(...) \, +#define Z_IS_1881U_EQ_1881U(...) \, +#define Z_IS_1882_EQ_1882(...) \, +#define Z_IS_1882U_EQ_1882(...) \, +#define Z_IS_1882_EQ_1882U(...) \, +#define Z_IS_1882U_EQ_1882U(...) \, +#define Z_IS_1883_EQ_1883(...) \, +#define Z_IS_1883U_EQ_1883(...) \, +#define Z_IS_1883_EQ_1883U(...) \, +#define Z_IS_1883U_EQ_1883U(...) \, +#define Z_IS_1884_EQ_1884(...) \, +#define Z_IS_1884U_EQ_1884(...) \, +#define Z_IS_1884_EQ_1884U(...) \, +#define Z_IS_1884U_EQ_1884U(...) \, +#define Z_IS_1885_EQ_1885(...) \, +#define Z_IS_1885U_EQ_1885(...) \, +#define Z_IS_1885_EQ_1885U(...) \, +#define Z_IS_1885U_EQ_1885U(...) \, +#define Z_IS_1886_EQ_1886(...) \, +#define Z_IS_1886U_EQ_1886(...) \, +#define Z_IS_1886_EQ_1886U(...) \, +#define Z_IS_1886U_EQ_1886U(...) \, +#define Z_IS_1887_EQ_1887(...) \, +#define Z_IS_1887U_EQ_1887(...) \, +#define Z_IS_1887_EQ_1887U(...) \, +#define Z_IS_1887U_EQ_1887U(...) \, +#define Z_IS_1888_EQ_1888(...) \, +#define Z_IS_1888U_EQ_1888(...) \, +#define Z_IS_1888_EQ_1888U(...) \, +#define Z_IS_1888U_EQ_1888U(...) \, +#define Z_IS_1889_EQ_1889(...) \, +#define Z_IS_1889U_EQ_1889(...) \, +#define Z_IS_1889_EQ_1889U(...) \, +#define Z_IS_1889U_EQ_1889U(...) \, +#define Z_IS_1890_EQ_1890(...) \, +#define Z_IS_1890U_EQ_1890(...) \, +#define Z_IS_1890_EQ_1890U(...) \, +#define Z_IS_1890U_EQ_1890U(...) \, +#define Z_IS_1891_EQ_1891(...) \, +#define Z_IS_1891U_EQ_1891(...) \, +#define Z_IS_1891_EQ_1891U(...) \, +#define Z_IS_1891U_EQ_1891U(...) \, +#define Z_IS_1892_EQ_1892(...) \, +#define Z_IS_1892U_EQ_1892(...) \, +#define Z_IS_1892_EQ_1892U(...) \, +#define Z_IS_1892U_EQ_1892U(...) \, +#define Z_IS_1893_EQ_1893(...) \, +#define Z_IS_1893U_EQ_1893(...) \, +#define Z_IS_1893_EQ_1893U(...) \, +#define Z_IS_1893U_EQ_1893U(...) \, +#define Z_IS_1894_EQ_1894(...) \, +#define Z_IS_1894U_EQ_1894(...) \, +#define Z_IS_1894_EQ_1894U(...) \, +#define Z_IS_1894U_EQ_1894U(...) \, +#define Z_IS_1895_EQ_1895(...) \, +#define Z_IS_1895U_EQ_1895(...) \, +#define Z_IS_1895_EQ_1895U(...) \, +#define Z_IS_1895U_EQ_1895U(...) \, +#define Z_IS_1896_EQ_1896(...) \, +#define Z_IS_1896U_EQ_1896(...) \, +#define Z_IS_1896_EQ_1896U(...) \, +#define Z_IS_1896U_EQ_1896U(...) \, +#define Z_IS_1897_EQ_1897(...) \, +#define Z_IS_1897U_EQ_1897(...) \, +#define Z_IS_1897_EQ_1897U(...) \, +#define Z_IS_1897U_EQ_1897U(...) \, +#define Z_IS_1898_EQ_1898(...) \, +#define Z_IS_1898U_EQ_1898(...) \, +#define Z_IS_1898_EQ_1898U(...) \, +#define Z_IS_1898U_EQ_1898U(...) \, +#define Z_IS_1899_EQ_1899(...) \, +#define Z_IS_1899U_EQ_1899(...) \, +#define Z_IS_1899_EQ_1899U(...) \, +#define Z_IS_1899U_EQ_1899U(...) \, +#define Z_IS_1900_EQ_1900(...) \, +#define Z_IS_1900U_EQ_1900(...) \, +#define Z_IS_1900_EQ_1900U(...) \, +#define Z_IS_1900U_EQ_1900U(...) \, +#define Z_IS_1901_EQ_1901(...) \, +#define Z_IS_1901U_EQ_1901(...) \, +#define Z_IS_1901_EQ_1901U(...) \, +#define Z_IS_1901U_EQ_1901U(...) \, +#define Z_IS_1902_EQ_1902(...) \, +#define Z_IS_1902U_EQ_1902(...) \, +#define Z_IS_1902_EQ_1902U(...) \, +#define Z_IS_1902U_EQ_1902U(...) \, +#define Z_IS_1903_EQ_1903(...) \, +#define Z_IS_1903U_EQ_1903(...) \, +#define Z_IS_1903_EQ_1903U(...) \, +#define Z_IS_1903U_EQ_1903U(...) \, +#define Z_IS_1904_EQ_1904(...) \, +#define Z_IS_1904U_EQ_1904(...) \, +#define Z_IS_1904_EQ_1904U(...) \, +#define Z_IS_1904U_EQ_1904U(...) \, +#define Z_IS_1905_EQ_1905(...) \, +#define Z_IS_1905U_EQ_1905(...) \, +#define Z_IS_1905_EQ_1905U(...) \, +#define Z_IS_1905U_EQ_1905U(...) \, +#define Z_IS_1906_EQ_1906(...) \, +#define Z_IS_1906U_EQ_1906(...) \, +#define Z_IS_1906_EQ_1906U(...) \, +#define Z_IS_1906U_EQ_1906U(...) \, +#define Z_IS_1907_EQ_1907(...) \, +#define Z_IS_1907U_EQ_1907(...) \, +#define Z_IS_1907_EQ_1907U(...) \, +#define Z_IS_1907U_EQ_1907U(...) \, +#define Z_IS_1908_EQ_1908(...) \, +#define Z_IS_1908U_EQ_1908(...) \, +#define Z_IS_1908_EQ_1908U(...) \, +#define Z_IS_1908U_EQ_1908U(...) \, +#define Z_IS_1909_EQ_1909(...) \, +#define Z_IS_1909U_EQ_1909(...) \, +#define Z_IS_1909_EQ_1909U(...) \, +#define Z_IS_1909U_EQ_1909U(...) \, +#define Z_IS_1910_EQ_1910(...) \, +#define Z_IS_1910U_EQ_1910(...) \, +#define Z_IS_1910_EQ_1910U(...) \, +#define Z_IS_1910U_EQ_1910U(...) \, +#define Z_IS_1911_EQ_1911(...) \, +#define Z_IS_1911U_EQ_1911(...) \, +#define Z_IS_1911_EQ_1911U(...) \, +#define Z_IS_1911U_EQ_1911U(...) \, +#define Z_IS_1912_EQ_1912(...) \, +#define Z_IS_1912U_EQ_1912(...) \, +#define Z_IS_1912_EQ_1912U(...) \, +#define Z_IS_1912U_EQ_1912U(...) \, +#define Z_IS_1913_EQ_1913(...) \, +#define Z_IS_1913U_EQ_1913(...) \, +#define Z_IS_1913_EQ_1913U(...) \, +#define Z_IS_1913U_EQ_1913U(...) \, +#define Z_IS_1914_EQ_1914(...) \, +#define Z_IS_1914U_EQ_1914(...) \, +#define Z_IS_1914_EQ_1914U(...) \, +#define Z_IS_1914U_EQ_1914U(...) \, +#define Z_IS_1915_EQ_1915(...) \, +#define Z_IS_1915U_EQ_1915(...) \, +#define Z_IS_1915_EQ_1915U(...) \, +#define Z_IS_1915U_EQ_1915U(...) \, +#define Z_IS_1916_EQ_1916(...) \, +#define Z_IS_1916U_EQ_1916(...) \, +#define Z_IS_1916_EQ_1916U(...) \, +#define Z_IS_1916U_EQ_1916U(...) \, +#define Z_IS_1917_EQ_1917(...) \, +#define Z_IS_1917U_EQ_1917(...) \, +#define Z_IS_1917_EQ_1917U(...) \, +#define Z_IS_1917U_EQ_1917U(...) \, +#define Z_IS_1918_EQ_1918(...) \, +#define Z_IS_1918U_EQ_1918(...) \, +#define Z_IS_1918_EQ_1918U(...) \, +#define Z_IS_1918U_EQ_1918U(...) \, +#define Z_IS_1919_EQ_1919(...) \, +#define Z_IS_1919U_EQ_1919(...) \, +#define Z_IS_1919_EQ_1919U(...) \, +#define Z_IS_1919U_EQ_1919U(...) \, +#define Z_IS_1920_EQ_1920(...) \, +#define Z_IS_1920U_EQ_1920(...) \, +#define Z_IS_1920_EQ_1920U(...) \, +#define Z_IS_1920U_EQ_1920U(...) \, +#define Z_IS_1921_EQ_1921(...) \, +#define Z_IS_1921U_EQ_1921(...) \, +#define Z_IS_1921_EQ_1921U(...) \, +#define Z_IS_1921U_EQ_1921U(...) \, +#define Z_IS_1922_EQ_1922(...) \, +#define Z_IS_1922U_EQ_1922(...) \, +#define Z_IS_1922_EQ_1922U(...) \, +#define Z_IS_1922U_EQ_1922U(...) \, +#define Z_IS_1923_EQ_1923(...) \, +#define Z_IS_1923U_EQ_1923(...) \, +#define Z_IS_1923_EQ_1923U(...) \, +#define Z_IS_1923U_EQ_1923U(...) \, +#define Z_IS_1924_EQ_1924(...) \, +#define Z_IS_1924U_EQ_1924(...) \, +#define Z_IS_1924_EQ_1924U(...) \, +#define Z_IS_1924U_EQ_1924U(...) \, +#define Z_IS_1925_EQ_1925(...) \, +#define Z_IS_1925U_EQ_1925(...) \, +#define Z_IS_1925_EQ_1925U(...) \, +#define Z_IS_1925U_EQ_1925U(...) \, +#define Z_IS_1926_EQ_1926(...) \, +#define Z_IS_1926U_EQ_1926(...) \, +#define Z_IS_1926_EQ_1926U(...) \, +#define Z_IS_1926U_EQ_1926U(...) \, +#define Z_IS_1927_EQ_1927(...) \, +#define Z_IS_1927U_EQ_1927(...) \, +#define Z_IS_1927_EQ_1927U(...) \, +#define Z_IS_1927U_EQ_1927U(...) \, +#define Z_IS_1928_EQ_1928(...) \, +#define Z_IS_1928U_EQ_1928(...) \, +#define Z_IS_1928_EQ_1928U(...) \, +#define Z_IS_1928U_EQ_1928U(...) \, +#define Z_IS_1929_EQ_1929(...) \, +#define Z_IS_1929U_EQ_1929(...) \, +#define Z_IS_1929_EQ_1929U(...) \, +#define Z_IS_1929U_EQ_1929U(...) \, +#define Z_IS_1930_EQ_1930(...) \, +#define Z_IS_1930U_EQ_1930(...) \, +#define Z_IS_1930_EQ_1930U(...) \, +#define Z_IS_1930U_EQ_1930U(...) \, +#define Z_IS_1931_EQ_1931(...) \, +#define Z_IS_1931U_EQ_1931(...) \, +#define Z_IS_1931_EQ_1931U(...) \, +#define Z_IS_1931U_EQ_1931U(...) \, +#define Z_IS_1932_EQ_1932(...) \, +#define Z_IS_1932U_EQ_1932(...) \, +#define Z_IS_1932_EQ_1932U(...) \, +#define Z_IS_1932U_EQ_1932U(...) \, +#define Z_IS_1933_EQ_1933(...) \, +#define Z_IS_1933U_EQ_1933(...) \, +#define Z_IS_1933_EQ_1933U(...) \, +#define Z_IS_1933U_EQ_1933U(...) \, +#define Z_IS_1934_EQ_1934(...) \, +#define Z_IS_1934U_EQ_1934(...) \, +#define Z_IS_1934_EQ_1934U(...) \, +#define Z_IS_1934U_EQ_1934U(...) \, +#define Z_IS_1935_EQ_1935(...) \, +#define Z_IS_1935U_EQ_1935(...) \, +#define Z_IS_1935_EQ_1935U(...) \, +#define Z_IS_1935U_EQ_1935U(...) \, +#define Z_IS_1936_EQ_1936(...) \, +#define Z_IS_1936U_EQ_1936(...) \, +#define Z_IS_1936_EQ_1936U(...) \, +#define Z_IS_1936U_EQ_1936U(...) \, +#define Z_IS_1937_EQ_1937(...) \, +#define Z_IS_1937U_EQ_1937(...) \, +#define Z_IS_1937_EQ_1937U(...) \, +#define Z_IS_1937U_EQ_1937U(...) \, +#define Z_IS_1938_EQ_1938(...) \, +#define Z_IS_1938U_EQ_1938(...) \, +#define Z_IS_1938_EQ_1938U(...) \, +#define Z_IS_1938U_EQ_1938U(...) \, +#define Z_IS_1939_EQ_1939(...) \, +#define Z_IS_1939U_EQ_1939(...) \, +#define Z_IS_1939_EQ_1939U(...) \, +#define Z_IS_1939U_EQ_1939U(...) \, +#define Z_IS_1940_EQ_1940(...) \, +#define Z_IS_1940U_EQ_1940(...) \, +#define Z_IS_1940_EQ_1940U(...) \, +#define Z_IS_1940U_EQ_1940U(...) \, +#define Z_IS_1941_EQ_1941(...) \, +#define Z_IS_1941U_EQ_1941(...) \, +#define Z_IS_1941_EQ_1941U(...) \, +#define Z_IS_1941U_EQ_1941U(...) \, +#define Z_IS_1942_EQ_1942(...) \, +#define Z_IS_1942U_EQ_1942(...) \, +#define Z_IS_1942_EQ_1942U(...) \, +#define Z_IS_1942U_EQ_1942U(...) \, +#define Z_IS_1943_EQ_1943(...) \, +#define Z_IS_1943U_EQ_1943(...) \, +#define Z_IS_1943_EQ_1943U(...) \, +#define Z_IS_1943U_EQ_1943U(...) \, +#define Z_IS_1944_EQ_1944(...) \, +#define Z_IS_1944U_EQ_1944(...) \, +#define Z_IS_1944_EQ_1944U(...) \, +#define Z_IS_1944U_EQ_1944U(...) \, +#define Z_IS_1945_EQ_1945(...) \, +#define Z_IS_1945U_EQ_1945(...) \, +#define Z_IS_1945_EQ_1945U(...) \, +#define Z_IS_1945U_EQ_1945U(...) \, +#define Z_IS_1946_EQ_1946(...) \, +#define Z_IS_1946U_EQ_1946(...) \, +#define Z_IS_1946_EQ_1946U(...) \, +#define Z_IS_1946U_EQ_1946U(...) \, +#define Z_IS_1947_EQ_1947(...) \, +#define Z_IS_1947U_EQ_1947(...) \, +#define Z_IS_1947_EQ_1947U(...) \, +#define Z_IS_1947U_EQ_1947U(...) \, +#define Z_IS_1948_EQ_1948(...) \, +#define Z_IS_1948U_EQ_1948(...) \, +#define Z_IS_1948_EQ_1948U(...) \, +#define Z_IS_1948U_EQ_1948U(...) \, +#define Z_IS_1949_EQ_1949(...) \, +#define Z_IS_1949U_EQ_1949(...) \, +#define Z_IS_1949_EQ_1949U(...) \, +#define Z_IS_1949U_EQ_1949U(...) \, +#define Z_IS_1950_EQ_1950(...) \, +#define Z_IS_1950U_EQ_1950(...) \, +#define Z_IS_1950_EQ_1950U(...) \, +#define Z_IS_1950U_EQ_1950U(...) \, +#define Z_IS_1951_EQ_1951(...) \, +#define Z_IS_1951U_EQ_1951(...) \, +#define Z_IS_1951_EQ_1951U(...) \, +#define Z_IS_1951U_EQ_1951U(...) \, +#define Z_IS_1952_EQ_1952(...) \, +#define Z_IS_1952U_EQ_1952(...) \, +#define Z_IS_1952_EQ_1952U(...) \, +#define Z_IS_1952U_EQ_1952U(...) \, +#define Z_IS_1953_EQ_1953(...) \, +#define Z_IS_1953U_EQ_1953(...) \, +#define Z_IS_1953_EQ_1953U(...) \, +#define Z_IS_1953U_EQ_1953U(...) \, +#define Z_IS_1954_EQ_1954(...) \, +#define Z_IS_1954U_EQ_1954(...) \, +#define Z_IS_1954_EQ_1954U(...) \, +#define Z_IS_1954U_EQ_1954U(...) \, +#define Z_IS_1955_EQ_1955(...) \, +#define Z_IS_1955U_EQ_1955(...) \, +#define Z_IS_1955_EQ_1955U(...) \, +#define Z_IS_1955U_EQ_1955U(...) \, +#define Z_IS_1956_EQ_1956(...) \, +#define Z_IS_1956U_EQ_1956(...) \, +#define Z_IS_1956_EQ_1956U(...) \, +#define Z_IS_1956U_EQ_1956U(...) \, +#define Z_IS_1957_EQ_1957(...) \, +#define Z_IS_1957U_EQ_1957(...) \, +#define Z_IS_1957_EQ_1957U(...) \, +#define Z_IS_1957U_EQ_1957U(...) \, +#define Z_IS_1958_EQ_1958(...) \, +#define Z_IS_1958U_EQ_1958(...) \, +#define Z_IS_1958_EQ_1958U(...) \, +#define Z_IS_1958U_EQ_1958U(...) \, +#define Z_IS_1959_EQ_1959(...) \, +#define Z_IS_1959U_EQ_1959(...) \, +#define Z_IS_1959_EQ_1959U(...) \, +#define Z_IS_1959U_EQ_1959U(...) \, +#define Z_IS_1960_EQ_1960(...) \, +#define Z_IS_1960U_EQ_1960(...) \, +#define Z_IS_1960_EQ_1960U(...) \, +#define Z_IS_1960U_EQ_1960U(...) \, +#define Z_IS_1961_EQ_1961(...) \, +#define Z_IS_1961U_EQ_1961(...) \, +#define Z_IS_1961_EQ_1961U(...) \, +#define Z_IS_1961U_EQ_1961U(...) \, +#define Z_IS_1962_EQ_1962(...) \, +#define Z_IS_1962U_EQ_1962(...) \, +#define Z_IS_1962_EQ_1962U(...) \, +#define Z_IS_1962U_EQ_1962U(...) \, +#define Z_IS_1963_EQ_1963(...) \, +#define Z_IS_1963U_EQ_1963(...) \, +#define Z_IS_1963_EQ_1963U(...) \, +#define Z_IS_1963U_EQ_1963U(...) \, +#define Z_IS_1964_EQ_1964(...) \, +#define Z_IS_1964U_EQ_1964(...) \, +#define Z_IS_1964_EQ_1964U(...) \, +#define Z_IS_1964U_EQ_1964U(...) \, +#define Z_IS_1965_EQ_1965(...) \, +#define Z_IS_1965U_EQ_1965(...) \, +#define Z_IS_1965_EQ_1965U(...) \, +#define Z_IS_1965U_EQ_1965U(...) \, +#define Z_IS_1966_EQ_1966(...) \, +#define Z_IS_1966U_EQ_1966(...) \, +#define Z_IS_1966_EQ_1966U(...) \, +#define Z_IS_1966U_EQ_1966U(...) \, +#define Z_IS_1967_EQ_1967(...) \, +#define Z_IS_1967U_EQ_1967(...) \, +#define Z_IS_1967_EQ_1967U(...) \, +#define Z_IS_1967U_EQ_1967U(...) \, +#define Z_IS_1968_EQ_1968(...) \, +#define Z_IS_1968U_EQ_1968(...) \, +#define Z_IS_1968_EQ_1968U(...) \, +#define Z_IS_1968U_EQ_1968U(...) \, +#define Z_IS_1969_EQ_1969(...) \, +#define Z_IS_1969U_EQ_1969(...) \, +#define Z_IS_1969_EQ_1969U(...) \, +#define Z_IS_1969U_EQ_1969U(...) \, +#define Z_IS_1970_EQ_1970(...) \, +#define Z_IS_1970U_EQ_1970(...) \, +#define Z_IS_1970_EQ_1970U(...) \, +#define Z_IS_1970U_EQ_1970U(...) \, +#define Z_IS_1971_EQ_1971(...) \, +#define Z_IS_1971U_EQ_1971(...) \, +#define Z_IS_1971_EQ_1971U(...) \, +#define Z_IS_1971U_EQ_1971U(...) \, +#define Z_IS_1972_EQ_1972(...) \, +#define Z_IS_1972U_EQ_1972(...) \, +#define Z_IS_1972_EQ_1972U(...) \, +#define Z_IS_1972U_EQ_1972U(...) \, +#define Z_IS_1973_EQ_1973(...) \, +#define Z_IS_1973U_EQ_1973(...) \, +#define Z_IS_1973_EQ_1973U(...) \, +#define Z_IS_1973U_EQ_1973U(...) \, +#define Z_IS_1974_EQ_1974(...) \, +#define Z_IS_1974U_EQ_1974(...) \, +#define Z_IS_1974_EQ_1974U(...) \, +#define Z_IS_1974U_EQ_1974U(...) \, +#define Z_IS_1975_EQ_1975(...) \, +#define Z_IS_1975U_EQ_1975(...) \, +#define Z_IS_1975_EQ_1975U(...) \, +#define Z_IS_1975U_EQ_1975U(...) \, +#define Z_IS_1976_EQ_1976(...) \, +#define Z_IS_1976U_EQ_1976(...) \, +#define Z_IS_1976_EQ_1976U(...) \, +#define Z_IS_1976U_EQ_1976U(...) \, +#define Z_IS_1977_EQ_1977(...) \, +#define Z_IS_1977U_EQ_1977(...) \, +#define Z_IS_1977_EQ_1977U(...) \, +#define Z_IS_1977U_EQ_1977U(...) \, +#define Z_IS_1978_EQ_1978(...) \, +#define Z_IS_1978U_EQ_1978(...) \, +#define Z_IS_1978_EQ_1978U(...) \, +#define Z_IS_1978U_EQ_1978U(...) \, +#define Z_IS_1979_EQ_1979(...) \, +#define Z_IS_1979U_EQ_1979(...) \, +#define Z_IS_1979_EQ_1979U(...) \, +#define Z_IS_1979U_EQ_1979U(...) \, +#define Z_IS_1980_EQ_1980(...) \, +#define Z_IS_1980U_EQ_1980(...) \, +#define Z_IS_1980_EQ_1980U(...) \, +#define Z_IS_1980U_EQ_1980U(...) \, +#define Z_IS_1981_EQ_1981(...) \, +#define Z_IS_1981U_EQ_1981(...) \, +#define Z_IS_1981_EQ_1981U(...) \, +#define Z_IS_1981U_EQ_1981U(...) \, +#define Z_IS_1982_EQ_1982(...) \, +#define Z_IS_1982U_EQ_1982(...) \, +#define Z_IS_1982_EQ_1982U(...) \, +#define Z_IS_1982U_EQ_1982U(...) \, +#define Z_IS_1983_EQ_1983(...) \, +#define Z_IS_1983U_EQ_1983(...) \, +#define Z_IS_1983_EQ_1983U(...) \, +#define Z_IS_1983U_EQ_1983U(...) \, +#define Z_IS_1984_EQ_1984(...) \, +#define Z_IS_1984U_EQ_1984(...) \, +#define Z_IS_1984_EQ_1984U(...) \, +#define Z_IS_1984U_EQ_1984U(...) \, +#define Z_IS_1985_EQ_1985(...) \, +#define Z_IS_1985U_EQ_1985(...) \, +#define Z_IS_1985_EQ_1985U(...) \, +#define Z_IS_1985U_EQ_1985U(...) \, +#define Z_IS_1986_EQ_1986(...) \, +#define Z_IS_1986U_EQ_1986(...) \, +#define Z_IS_1986_EQ_1986U(...) \, +#define Z_IS_1986U_EQ_1986U(...) \, +#define Z_IS_1987_EQ_1987(...) \, +#define Z_IS_1987U_EQ_1987(...) \, +#define Z_IS_1987_EQ_1987U(...) \, +#define Z_IS_1987U_EQ_1987U(...) \, +#define Z_IS_1988_EQ_1988(...) \, +#define Z_IS_1988U_EQ_1988(...) \, +#define Z_IS_1988_EQ_1988U(...) \, +#define Z_IS_1988U_EQ_1988U(...) \, +#define Z_IS_1989_EQ_1989(...) \, +#define Z_IS_1989U_EQ_1989(...) \, +#define Z_IS_1989_EQ_1989U(...) \, +#define Z_IS_1989U_EQ_1989U(...) \, +#define Z_IS_1990_EQ_1990(...) \, +#define Z_IS_1990U_EQ_1990(...) \, +#define Z_IS_1990_EQ_1990U(...) \, +#define Z_IS_1990U_EQ_1990U(...) \, +#define Z_IS_1991_EQ_1991(...) \, +#define Z_IS_1991U_EQ_1991(...) \, +#define Z_IS_1991_EQ_1991U(...) \, +#define Z_IS_1991U_EQ_1991U(...) \, +#define Z_IS_1992_EQ_1992(...) \, +#define Z_IS_1992U_EQ_1992(...) \, +#define Z_IS_1992_EQ_1992U(...) \, +#define Z_IS_1992U_EQ_1992U(...) \, +#define Z_IS_1993_EQ_1993(...) \, +#define Z_IS_1993U_EQ_1993(...) \, +#define Z_IS_1993_EQ_1993U(...) \, +#define Z_IS_1993U_EQ_1993U(...) \, +#define Z_IS_1994_EQ_1994(...) \, +#define Z_IS_1994U_EQ_1994(...) \, +#define Z_IS_1994_EQ_1994U(...) \, +#define Z_IS_1994U_EQ_1994U(...) \, +#define Z_IS_1995_EQ_1995(...) \, +#define Z_IS_1995U_EQ_1995(...) \, +#define Z_IS_1995_EQ_1995U(...) \, +#define Z_IS_1995U_EQ_1995U(...) \, +#define Z_IS_1996_EQ_1996(...) \, +#define Z_IS_1996U_EQ_1996(...) \, +#define Z_IS_1996_EQ_1996U(...) \, +#define Z_IS_1996U_EQ_1996U(...) \, +#define Z_IS_1997_EQ_1997(...) \, +#define Z_IS_1997U_EQ_1997(...) \, +#define Z_IS_1997_EQ_1997U(...) \, +#define Z_IS_1997U_EQ_1997U(...) \, +#define Z_IS_1998_EQ_1998(...) \, +#define Z_IS_1998U_EQ_1998(...) \, +#define Z_IS_1998_EQ_1998U(...) \, +#define Z_IS_1998U_EQ_1998U(...) \, +#define Z_IS_1999_EQ_1999(...) \, +#define Z_IS_1999U_EQ_1999(...) \, +#define Z_IS_1999_EQ_1999U(...) \, +#define Z_IS_1999U_EQ_1999U(...) \, +#define Z_IS_2000_EQ_2000(...) \, +#define Z_IS_2000U_EQ_2000(...) \, +#define Z_IS_2000_EQ_2000U(...) \, +#define Z_IS_2000U_EQ_2000U(...) \, +#define Z_IS_2001_EQ_2001(...) \, +#define Z_IS_2001U_EQ_2001(...) \, +#define Z_IS_2001_EQ_2001U(...) \, +#define Z_IS_2001U_EQ_2001U(...) \, +#define Z_IS_2002_EQ_2002(...) \, +#define Z_IS_2002U_EQ_2002(...) \, +#define Z_IS_2002_EQ_2002U(...) \, +#define Z_IS_2002U_EQ_2002U(...) \, +#define Z_IS_2003_EQ_2003(...) \, +#define Z_IS_2003U_EQ_2003(...) \, +#define Z_IS_2003_EQ_2003U(...) \, +#define Z_IS_2003U_EQ_2003U(...) \, +#define Z_IS_2004_EQ_2004(...) \, +#define Z_IS_2004U_EQ_2004(...) \, +#define Z_IS_2004_EQ_2004U(...) \, +#define Z_IS_2004U_EQ_2004U(...) \, +#define Z_IS_2005_EQ_2005(...) \, +#define Z_IS_2005U_EQ_2005(...) \, +#define Z_IS_2005_EQ_2005U(...) \, +#define Z_IS_2005U_EQ_2005U(...) \, +#define Z_IS_2006_EQ_2006(...) \, +#define Z_IS_2006U_EQ_2006(...) \, +#define Z_IS_2006_EQ_2006U(...) \, +#define Z_IS_2006U_EQ_2006U(...) \, +#define Z_IS_2007_EQ_2007(...) \, +#define Z_IS_2007U_EQ_2007(...) \, +#define Z_IS_2007_EQ_2007U(...) \, +#define Z_IS_2007U_EQ_2007U(...) \, +#define Z_IS_2008_EQ_2008(...) \, +#define Z_IS_2008U_EQ_2008(...) \, +#define Z_IS_2008_EQ_2008U(...) \, +#define Z_IS_2008U_EQ_2008U(...) \, +#define Z_IS_2009_EQ_2009(...) \, +#define Z_IS_2009U_EQ_2009(...) \, +#define Z_IS_2009_EQ_2009U(...) \, +#define Z_IS_2009U_EQ_2009U(...) \, +#define Z_IS_2010_EQ_2010(...) \, +#define Z_IS_2010U_EQ_2010(...) \, +#define Z_IS_2010_EQ_2010U(...) \, +#define Z_IS_2010U_EQ_2010U(...) \, +#define Z_IS_2011_EQ_2011(...) \, +#define Z_IS_2011U_EQ_2011(...) \, +#define Z_IS_2011_EQ_2011U(...) \, +#define Z_IS_2011U_EQ_2011U(...) \, +#define Z_IS_2012_EQ_2012(...) \, +#define Z_IS_2012U_EQ_2012(...) \, +#define Z_IS_2012_EQ_2012U(...) \, +#define Z_IS_2012U_EQ_2012U(...) \, +#define Z_IS_2013_EQ_2013(...) \, +#define Z_IS_2013U_EQ_2013(...) \, +#define Z_IS_2013_EQ_2013U(...) \, +#define Z_IS_2013U_EQ_2013U(...) \, +#define Z_IS_2014_EQ_2014(...) \, +#define Z_IS_2014U_EQ_2014(...) \, +#define Z_IS_2014_EQ_2014U(...) \, +#define Z_IS_2014U_EQ_2014U(...) \, +#define Z_IS_2015_EQ_2015(...) \, +#define Z_IS_2015U_EQ_2015(...) \, +#define Z_IS_2015_EQ_2015U(...) \, +#define Z_IS_2015U_EQ_2015U(...) \, +#define Z_IS_2016_EQ_2016(...) \, +#define Z_IS_2016U_EQ_2016(...) \, +#define Z_IS_2016_EQ_2016U(...) \, +#define Z_IS_2016U_EQ_2016U(...) \, +#define Z_IS_2017_EQ_2017(...) \, +#define Z_IS_2017U_EQ_2017(...) \, +#define Z_IS_2017_EQ_2017U(...) \, +#define Z_IS_2017U_EQ_2017U(...) \, +#define Z_IS_2018_EQ_2018(...) \, +#define Z_IS_2018U_EQ_2018(...) \, +#define Z_IS_2018_EQ_2018U(...) \, +#define Z_IS_2018U_EQ_2018U(...) \, +#define Z_IS_2019_EQ_2019(...) \, +#define Z_IS_2019U_EQ_2019(...) \, +#define Z_IS_2019_EQ_2019U(...) \, +#define Z_IS_2019U_EQ_2019U(...) \, +#define Z_IS_2020_EQ_2020(...) \, +#define Z_IS_2020U_EQ_2020(...) \, +#define Z_IS_2020_EQ_2020U(...) \, +#define Z_IS_2020U_EQ_2020U(...) \, +#define Z_IS_2021_EQ_2021(...) \, +#define Z_IS_2021U_EQ_2021(...) \, +#define Z_IS_2021_EQ_2021U(...) \, +#define Z_IS_2021U_EQ_2021U(...) \, +#define Z_IS_2022_EQ_2022(...) \, +#define Z_IS_2022U_EQ_2022(...) \, +#define Z_IS_2022_EQ_2022U(...) \, +#define Z_IS_2022U_EQ_2022U(...) \, +#define Z_IS_2023_EQ_2023(...) \, +#define Z_IS_2023U_EQ_2023(...) \, +#define Z_IS_2023_EQ_2023U(...) \, +#define Z_IS_2023U_EQ_2023U(...) \, +#define Z_IS_2024_EQ_2024(...) \, +#define Z_IS_2024U_EQ_2024(...) \, +#define Z_IS_2024_EQ_2024U(...) \, +#define Z_IS_2024U_EQ_2024U(...) \, +#define Z_IS_2025_EQ_2025(...) \, +#define Z_IS_2025U_EQ_2025(...) \, +#define Z_IS_2025_EQ_2025U(...) \, +#define Z_IS_2025U_EQ_2025U(...) \, +#define Z_IS_2026_EQ_2026(...) \, +#define Z_IS_2026U_EQ_2026(...) \, +#define Z_IS_2026_EQ_2026U(...) \, +#define Z_IS_2026U_EQ_2026U(...) \, +#define Z_IS_2027_EQ_2027(...) \, +#define Z_IS_2027U_EQ_2027(...) \, +#define Z_IS_2027_EQ_2027U(...) \, +#define Z_IS_2027U_EQ_2027U(...) \, +#define Z_IS_2028_EQ_2028(...) \, +#define Z_IS_2028U_EQ_2028(...) \, +#define Z_IS_2028_EQ_2028U(...) \, +#define Z_IS_2028U_EQ_2028U(...) \, +#define Z_IS_2029_EQ_2029(...) \, +#define Z_IS_2029U_EQ_2029(...) \, +#define Z_IS_2029_EQ_2029U(...) \, +#define Z_IS_2029U_EQ_2029U(...) \, +#define Z_IS_2030_EQ_2030(...) \, +#define Z_IS_2030U_EQ_2030(...) \, +#define Z_IS_2030_EQ_2030U(...) \, +#define Z_IS_2030U_EQ_2030U(...) \, +#define Z_IS_2031_EQ_2031(...) \, +#define Z_IS_2031U_EQ_2031(...) \, +#define Z_IS_2031_EQ_2031U(...) \, +#define Z_IS_2031U_EQ_2031U(...) \, +#define Z_IS_2032_EQ_2032(...) \, +#define Z_IS_2032U_EQ_2032(...) \, +#define Z_IS_2032_EQ_2032U(...) \, +#define Z_IS_2032U_EQ_2032U(...) \, +#define Z_IS_2033_EQ_2033(...) \, +#define Z_IS_2033U_EQ_2033(...) \, +#define Z_IS_2033_EQ_2033U(...) \, +#define Z_IS_2033U_EQ_2033U(...) \, +#define Z_IS_2034_EQ_2034(...) \, +#define Z_IS_2034U_EQ_2034(...) \, +#define Z_IS_2034_EQ_2034U(...) \, +#define Z_IS_2034U_EQ_2034U(...) \, +#define Z_IS_2035_EQ_2035(...) \, +#define Z_IS_2035U_EQ_2035(...) \, +#define Z_IS_2035_EQ_2035U(...) \, +#define Z_IS_2035U_EQ_2035U(...) \, +#define Z_IS_2036_EQ_2036(...) \, +#define Z_IS_2036U_EQ_2036(...) \, +#define Z_IS_2036_EQ_2036U(...) \, +#define Z_IS_2036U_EQ_2036U(...) \, +#define Z_IS_2037_EQ_2037(...) \, +#define Z_IS_2037U_EQ_2037(...) \, +#define Z_IS_2037_EQ_2037U(...) \, +#define Z_IS_2037U_EQ_2037U(...) \, +#define Z_IS_2038_EQ_2038(...) \, +#define Z_IS_2038U_EQ_2038(...) \, +#define Z_IS_2038_EQ_2038U(...) \, +#define Z_IS_2038U_EQ_2038U(...) \, +#define Z_IS_2039_EQ_2039(...) \, +#define Z_IS_2039U_EQ_2039(...) \, +#define Z_IS_2039_EQ_2039U(...) \, +#define Z_IS_2039U_EQ_2039U(...) \, +#define Z_IS_2040_EQ_2040(...) \, +#define Z_IS_2040U_EQ_2040(...) \, +#define Z_IS_2040_EQ_2040U(...) \, +#define Z_IS_2040U_EQ_2040U(...) \, +#define Z_IS_2041_EQ_2041(...) \, +#define Z_IS_2041U_EQ_2041(...) \, +#define Z_IS_2041_EQ_2041U(...) \, +#define Z_IS_2041U_EQ_2041U(...) \, +#define Z_IS_2042_EQ_2042(...) \, +#define Z_IS_2042U_EQ_2042(...) \, +#define Z_IS_2042_EQ_2042U(...) \, +#define Z_IS_2042U_EQ_2042U(...) \, +#define Z_IS_2043_EQ_2043(...) \, +#define Z_IS_2043U_EQ_2043(...) \, +#define Z_IS_2043_EQ_2043U(...) \, +#define Z_IS_2043U_EQ_2043U(...) \, +#define Z_IS_2044_EQ_2044(...) \, +#define Z_IS_2044U_EQ_2044(...) \, +#define Z_IS_2044_EQ_2044U(...) \, +#define Z_IS_2044U_EQ_2044U(...) \, +#define Z_IS_2045_EQ_2045(...) \, +#define Z_IS_2045U_EQ_2045(...) \, +#define Z_IS_2045_EQ_2045U(...) \, +#define Z_IS_2045U_EQ_2045U(...) \, +#define Z_IS_2046_EQ_2046(...) \, +#define Z_IS_2046U_EQ_2046(...) \, +#define Z_IS_2046_EQ_2046U(...) \, +#define Z_IS_2046U_EQ_2046U(...) \, +#define Z_IS_2047_EQ_2047(...) \, +#define Z_IS_2047U_EQ_2047(...) \, +#define Z_IS_2047_EQ_2047U(...) \, +#define Z_IS_2047U_EQ_2047U(...) \, +#define Z_IS_2048_EQ_2048(...) \, +#define Z_IS_2048U_EQ_2048(...) \, +#define Z_IS_2048_EQ_2048U(...) \, +#define Z_IS_2048U_EQ_2048U(...) \, +#define Z_IS_2049_EQ_2049(...) \, +#define Z_IS_2049U_EQ_2049(...) \, +#define Z_IS_2049_EQ_2049U(...) \, +#define Z_IS_2049U_EQ_2049U(...) \, +#define Z_IS_2050_EQ_2050(...) \, +#define Z_IS_2050U_EQ_2050(...) \, +#define Z_IS_2050_EQ_2050U(...) \, +#define Z_IS_2050U_EQ_2050U(...) \, +#define Z_IS_2051_EQ_2051(...) \, +#define Z_IS_2051U_EQ_2051(...) \, +#define Z_IS_2051_EQ_2051U(...) \, +#define Z_IS_2051U_EQ_2051U(...) \, +#define Z_IS_2052_EQ_2052(...) \, +#define Z_IS_2052U_EQ_2052(...) \, +#define Z_IS_2052_EQ_2052U(...) \, +#define Z_IS_2052U_EQ_2052U(...) \, +#define Z_IS_2053_EQ_2053(...) \, +#define Z_IS_2053U_EQ_2053(...) \, +#define Z_IS_2053_EQ_2053U(...) \, +#define Z_IS_2053U_EQ_2053U(...) \, +#define Z_IS_2054_EQ_2054(...) \, +#define Z_IS_2054U_EQ_2054(...) \, +#define Z_IS_2054_EQ_2054U(...) \, +#define Z_IS_2054U_EQ_2054U(...) \, +#define Z_IS_2055_EQ_2055(...) \, +#define Z_IS_2055U_EQ_2055(...) \, +#define Z_IS_2055_EQ_2055U(...) \, +#define Z_IS_2055U_EQ_2055U(...) \, +#define Z_IS_2056_EQ_2056(...) \, +#define Z_IS_2056U_EQ_2056(...) \, +#define Z_IS_2056_EQ_2056U(...) \, +#define Z_IS_2056U_EQ_2056U(...) \, +#define Z_IS_2057_EQ_2057(...) \, +#define Z_IS_2057U_EQ_2057(...) \, +#define Z_IS_2057_EQ_2057U(...) \, +#define Z_IS_2057U_EQ_2057U(...) \, +#define Z_IS_2058_EQ_2058(...) \, +#define Z_IS_2058U_EQ_2058(...) \, +#define Z_IS_2058_EQ_2058U(...) \, +#define Z_IS_2058U_EQ_2058U(...) \, +#define Z_IS_2059_EQ_2059(...) \, +#define Z_IS_2059U_EQ_2059(...) \, +#define Z_IS_2059_EQ_2059U(...) \, +#define Z_IS_2059U_EQ_2059U(...) \, +#define Z_IS_2060_EQ_2060(...) \, +#define Z_IS_2060U_EQ_2060(...) \, +#define Z_IS_2060_EQ_2060U(...) \, +#define Z_IS_2060U_EQ_2060U(...) \, +#define Z_IS_2061_EQ_2061(...) \, +#define Z_IS_2061U_EQ_2061(...) \, +#define Z_IS_2061_EQ_2061U(...) \, +#define Z_IS_2061U_EQ_2061U(...) \, +#define Z_IS_2062_EQ_2062(...) \, +#define Z_IS_2062U_EQ_2062(...) \, +#define Z_IS_2062_EQ_2062U(...) \, +#define Z_IS_2062U_EQ_2062U(...) \, +#define Z_IS_2063_EQ_2063(...) \, +#define Z_IS_2063U_EQ_2063(...) \, +#define Z_IS_2063_EQ_2063U(...) \, +#define Z_IS_2063U_EQ_2063U(...) \, +#define Z_IS_2064_EQ_2064(...) \, +#define Z_IS_2064U_EQ_2064(...) \, +#define Z_IS_2064_EQ_2064U(...) \, +#define Z_IS_2064U_EQ_2064U(...) \, +#define Z_IS_2065_EQ_2065(...) \, +#define Z_IS_2065U_EQ_2065(...) \, +#define Z_IS_2065_EQ_2065U(...) \, +#define Z_IS_2065U_EQ_2065U(...) \, +#define Z_IS_2066_EQ_2066(...) \, +#define Z_IS_2066U_EQ_2066(...) \, +#define Z_IS_2066_EQ_2066U(...) \, +#define Z_IS_2066U_EQ_2066U(...) \, +#define Z_IS_2067_EQ_2067(...) \, +#define Z_IS_2067U_EQ_2067(...) \, +#define Z_IS_2067_EQ_2067U(...) \, +#define Z_IS_2067U_EQ_2067U(...) \, +#define Z_IS_2068_EQ_2068(...) \, +#define Z_IS_2068U_EQ_2068(...) \, +#define Z_IS_2068_EQ_2068U(...) \, +#define Z_IS_2068U_EQ_2068U(...) \, +#define Z_IS_2069_EQ_2069(...) \, +#define Z_IS_2069U_EQ_2069(...) \, +#define Z_IS_2069_EQ_2069U(...) \, +#define Z_IS_2069U_EQ_2069U(...) \, +#define Z_IS_2070_EQ_2070(...) \, +#define Z_IS_2070U_EQ_2070(...) \, +#define Z_IS_2070_EQ_2070U(...) \, +#define Z_IS_2070U_EQ_2070U(...) \, +#define Z_IS_2071_EQ_2071(...) \, +#define Z_IS_2071U_EQ_2071(...) \, +#define Z_IS_2071_EQ_2071U(...) \, +#define Z_IS_2071U_EQ_2071U(...) \, +#define Z_IS_2072_EQ_2072(...) \, +#define Z_IS_2072U_EQ_2072(...) \, +#define Z_IS_2072_EQ_2072U(...) \, +#define Z_IS_2072U_EQ_2072U(...) \, +#define Z_IS_2073_EQ_2073(...) \, +#define Z_IS_2073U_EQ_2073(...) \, +#define Z_IS_2073_EQ_2073U(...) \, +#define Z_IS_2073U_EQ_2073U(...) \, +#define Z_IS_2074_EQ_2074(...) \, +#define Z_IS_2074U_EQ_2074(...) \, +#define Z_IS_2074_EQ_2074U(...) \, +#define Z_IS_2074U_EQ_2074U(...) \, +#define Z_IS_2075_EQ_2075(...) \, +#define Z_IS_2075U_EQ_2075(...) \, +#define Z_IS_2075_EQ_2075U(...) \, +#define Z_IS_2075U_EQ_2075U(...) \, +#define Z_IS_2076_EQ_2076(...) \, +#define Z_IS_2076U_EQ_2076(...) \, +#define Z_IS_2076_EQ_2076U(...) \, +#define Z_IS_2076U_EQ_2076U(...) \, +#define Z_IS_2077_EQ_2077(...) \, +#define Z_IS_2077U_EQ_2077(...) \, +#define Z_IS_2077_EQ_2077U(...) \, +#define Z_IS_2077U_EQ_2077U(...) \, +#define Z_IS_2078_EQ_2078(...) \, +#define Z_IS_2078U_EQ_2078(...) \, +#define Z_IS_2078_EQ_2078U(...) \, +#define Z_IS_2078U_EQ_2078U(...) \, +#define Z_IS_2079_EQ_2079(...) \, +#define Z_IS_2079U_EQ_2079(...) \, +#define Z_IS_2079_EQ_2079U(...) \, +#define Z_IS_2079U_EQ_2079U(...) \, +#define Z_IS_2080_EQ_2080(...) \, +#define Z_IS_2080U_EQ_2080(...) \, +#define Z_IS_2080_EQ_2080U(...) \, +#define Z_IS_2080U_EQ_2080U(...) \, +#define Z_IS_2081_EQ_2081(...) \, +#define Z_IS_2081U_EQ_2081(...) \, +#define Z_IS_2081_EQ_2081U(...) \, +#define Z_IS_2081U_EQ_2081U(...) \, +#define Z_IS_2082_EQ_2082(...) \, +#define Z_IS_2082U_EQ_2082(...) \, +#define Z_IS_2082_EQ_2082U(...) \, +#define Z_IS_2082U_EQ_2082U(...) \, +#define Z_IS_2083_EQ_2083(...) \, +#define Z_IS_2083U_EQ_2083(...) \, +#define Z_IS_2083_EQ_2083U(...) \, +#define Z_IS_2083U_EQ_2083U(...) \, +#define Z_IS_2084_EQ_2084(...) \, +#define Z_IS_2084U_EQ_2084(...) \, +#define Z_IS_2084_EQ_2084U(...) \, +#define Z_IS_2084U_EQ_2084U(...) \, +#define Z_IS_2085_EQ_2085(...) \, +#define Z_IS_2085U_EQ_2085(...) \, +#define Z_IS_2085_EQ_2085U(...) \, +#define Z_IS_2085U_EQ_2085U(...) \, +#define Z_IS_2086_EQ_2086(...) \, +#define Z_IS_2086U_EQ_2086(...) \, +#define Z_IS_2086_EQ_2086U(...) \, +#define Z_IS_2086U_EQ_2086U(...) \, +#define Z_IS_2087_EQ_2087(...) \, +#define Z_IS_2087U_EQ_2087(...) \, +#define Z_IS_2087_EQ_2087U(...) \, +#define Z_IS_2087U_EQ_2087U(...) \, +#define Z_IS_2088_EQ_2088(...) \, +#define Z_IS_2088U_EQ_2088(...) \, +#define Z_IS_2088_EQ_2088U(...) \, +#define Z_IS_2088U_EQ_2088U(...) \, +#define Z_IS_2089_EQ_2089(...) \, +#define Z_IS_2089U_EQ_2089(...) \, +#define Z_IS_2089_EQ_2089U(...) \, +#define Z_IS_2089U_EQ_2089U(...) \, +#define Z_IS_2090_EQ_2090(...) \, +#define Z_IS_2090U_EQ_2090(...) \, +#define Z_IS_2090_EQ_2090U(...) \, +#define Z_IS_2090U_EQ_2090U(...) \, +#define Z_IS_2091_EQ_2091(...) \, +#define Z_IS_2091U_EQ_2091(...) \, +#define Z_IS_2091_EQ_2091U(...) \, +#define Z_IS_2091U_EQ_2091U(...) \, +#define Z_IS_2092_EQ_2092(...) \, +#define Z_IS_2092U_EQ_2092(...) \, +#define Z_IS_2092_EQ_2092U(...) \, +#define Z_IS_2092U_EQ_2092U(...) \, +#define Z_IS_2093_EQ_2093(...) \, +#define Z_IS_2093U_EQ_2093(...) \, +#define Z_IS_2093_EQ_2093U(...) \, +#define Z_IS_2093U_EQ_2093U(...) \, +#define Z_IS_2094_EQ_2094(...) \, +#define Z_IS_2094U_EQ_2094(...) \, +#define Z_IS_2094_EQ_2094U(...) \, +#define Z_IS_2094U_EQ_2094U(...) \, +#define Z_IS_2095_EQ_2095(...) \, +#define Z_IS_2095U_EQ_2095(...) \, +#define Z_IS_2095_EQ_2095U(...) \, +#define Z_IS_2095U_EQ_2095U(...) \, +#define Z_IS_2096_EQ_2096(...) \, +#define Z_IS_2096U_EQ_2096(...) \, +#define Z_IS_2096_EQ_2096U(...) \, +#define Z_IS_2096U_EQ_2096U(...) \, +#define Z_IS_2097_EQ_2097(...) \, +#define Z_IS_2097U_EQ_2097(...) \, +#define Z_IS_2097_EQ_2097U(...) \, +#define Z_IS_2097U_EQ_2097U(...) \, +#define Z_IS_2098_EQ_2098(...) \, +#define Z_IS_2098U_EQ_2098(...) \, +#define Z_IS_2098_EQ_2098U(...) \, +#define Z_IS_2098U_EQ_2098U(...) \, +#define Z_IS_2099_EQ_2099(...) \, +#define Z_IS_2099U_EQ_2099(...) \, +#define Z_IS_2099_EQ_2099U(...) \, +#define Z_IS_2099U_EQ_2099U(...) \, +#define Z_IS_2100_EQ_2100(...) \, +#define Z_IS_2100U_EQ_2100(...) \, +#define Z_IS_2100_EQ_2100U(...) \, +#define Z_IS_2100U_EQ_2100U(...) \, +#define Z_IS_2101_EQ_2101(...) \, +#define Z_IS_2101U_EQ_2101(...) \, +#define Z_IS_2101_EQ_2101U(...) \, +#define Z_IS_2101U_EQ_2101U(...) \, +#define Z_IS_2102_EQ_2102(...) \, +#define Z_IS_2102U_EQ_2102(...) \, +#define Z_IS_2102_EQ_2102U(...) \, +#define Z_IS_2102U_EQ_2102U(...) \, +#define Z_IS_2103_EQ_2103(...) \, +#define Z_IS_2103U_EQ_2103(...) \, +#define Z_IS_2103_EQ_2103U(...) \, +#define Z_IS_2103U_EQ_2103U(...) \, +#define Z_IS_2104_EQ_2104(...) \, +#define Z_IS_2104U_EQ_2104(...) \, +#define Z_IS_2104_EQ_2104U(...) \, +#define Z_IS_2104U_EQ_2104U(...) \, +#define Z_IS_2105_EQ_2105(...) \, +#define Z_IS_2105U_EQ_2105(...) \, +#define Z_IS_2105_EQ_2105U(...) \, +#define Z_IS_2105U_EQ_2105U(...) \, +#define Z_IS_2106_EQ_2106(...) \, +#define Z_IS_2106U_EQ_2106(...) \, +#define Z_IS_2106_EQ_2106U(...) \, +#define Z_IS_2106U_EQ_2106U(...) \, +#define Z_IS_2107_EQ_2107(...) \, +#define Z_IS_2107U_EQ_2107(...) \, +#define Z_IS_2107_EQ_2107U(...) \, +#define Z_IS_2107U_EQ_2107U(...) \, +#define Z_IS_2108_EQ_2108(...) \, +#define Z_IS_2108U_EQ_2108(...) \, +#define Z_IS_2108_EQ_2108U(...) \, +#define Z_IS_2108U_EQ_2108U(...) \, +#define Z_IS_2109_EQ_2109(...) \, +#define Z_IS_2109U_EQ_2109(...) \, +#define Z_IS_2109_EQ_2109U(...) \, +#define Z_IS_2109U_EQ_2109U(...) \, +#define Z_IS_2110_EQ_2110(...) \, +#define Z_IS_2110U_EQ_2110(...) \, +#define Z_IS_2110_EQ_2110U(...) \, +#define Z_IS_2110U_EQ_2110U(...) \, +#define Z_IS_2111_EQ_2111(...) \, +#define Z_IS_2111U_EQ_2111(...) \, +#define Z_IS_2111_EQ_2111U(...) \, +#define Z_IS_2111U_EQ_2111U(...) \, +#define Z_IS_2112_EQ_2112(...) \, +#define Z_IS_2112U_EQ_2112(...) \, +#define Z_IS_2112_EQ_2112U(...) \, +#define Z_IS_2112U_EQ_2112U(...) \, +#define Z_IS_2113_EQ_2113(...) \, +#define Z_IS_2113U_EQ_2113(...) \, +#define Z_IS_2113_EQ_2113U(...) \, +#define Z_IS_2113U_EQ_2113U(...) \, +#define Z_IS_2114_EQ_2114(...) \, +#define Z_IS_2114U_EQ_2114(...) \, +#define Z_IS_2114_EQ_2114U(...) \, +#define Z_IS_2114U_EQ_2114U(...) \, +#define Z_IS_2115_EQ_2115(...) \, +#define Z_IS_2115U_EQ_2115(...) \, +#define Z_IS_2115_EQ_2115U(...) \, +#define Z_IS_2115U_EQ_2115U(...) \, +#define Z_IS_2116_EQ_2116(...) \, +#define Z_IS_2116U_EQ_2116(...) \, +#define Z_IS_2116_EQ_2116U(...) \, +#define Z_IS_2116U_EQ_2116U(...) \, +#define Z_IS_2117_EQ_2117(...) \, +#define Z_IS_2117U_EQ_2117(...) \, +#define Z_IS_2117_EQ_2117U(...) \, +#define Z_IS_2117U_EQ_2117U(...) \, +#define Z_IS_2118_EQ_2118(...) \, +#define Z_IS_2118U_EQ_2118(...) \, +#define Z_IS_2118_EQ_2118U(...) \, +#define Z_IS_2118U_EQ_2118U(...) \, +#define Z_IS_2119_EQ_2119(...) \, +#define Z_IS_2119U_EQ_2119(...) \, +#define Z_IS_2119_EQ_2119U(...) \, +#define Z_IS_2119U_EQ_2119U(...) \, +#define Z_IS_2120_EQ_2120(...) \, +#define Z_IS_2120U_EQ_2120(...) \, +#define Z_IS_2120_EQ_2120U(...) \, +#define Z_IS_2120U_EQ_2120U(...) \, +#define Z_IS_2121_EQ_2121(...) \, +#define Z_IS_2121U_EQ_2121(...) \, +#define Z_IS_2121_EQ_2121U(...) \, +#define Z_IS_2121U_EQ_2121U(...) \, +#define Z_IS_2122_EQ_2122(...) \, +#define Z_IS_2122U_EQ_2122(...) \, +#define Z_IS_2122_EQ_2122U(...) \, +#define Z_IS_2122U_EQ_2122U(...) \, +#define Z_IS_2123_EQ_2123(...) \, +#define Z_IS_2123U_EQ_2123(...) \, +#define Z_IS_2123_EQ_2123U(...) \, +#define Z_IS_2123U_EQ_2123U(...) \, +#define Z_IS_2124_EQ_2124(...) \, +#define Z_IS_2124U_EQ_2124(...) \, +#define Z_IS_2124_EQ_2124U(...) \, +#define Z_IS_2124U_EQ_2124U(...) \, +#define Z_IS_2125_EQ_2125(...) \, +#define Z_IS_2125U_EQ_2125(...) \, +#define Z_IS_2125_EQ_2125U(...) \, +#define Z_IS_2125U_EQ_2125U(...) \, +#define Z_IS_2126_EQ_2126(...) \, +#define Z_IS_2126U_EQ_2126(...) \, +#define Z_IS_2126_EQ_2126U(...) \, +#define Z_IS_2126U_EQ_2126U(...) \, +#define Z_IS_2127_EQ_2127(...) \, +#define Z_IS_2127U_EQ_2127(...) \, +#define Z_IS_2127_EQ_2127U(...) \, +#define Z_IS_2127U_EQ_2127U(...) \, +#define Z_IS_2128_EQ_2128(...) \, +#define Z_IS_2128U_EQ_2128(...) \, +#define Z_IS_2128_EQ_2128U(...) \, +#define Z_IS_2128U_EQ_2128U(...) \, +#define Z_IS_2129_EQ_2129(...) \, +#define Z_IS_2129U_EQ_2129(...) \, +#define Z_IS_2129_EQ_2129U(...) \, +#define Z_IS_2129U_EQ_2129U(...) \, +#define Z_IS_2130_EQ_2130(...) \, +#define Z_IS_2130U_EQ_2130(...) \, +#define Z_IS_2130_EQ_2130U(...) \, +#define Z_IS_2130U_EQ_2130U(...) \, +#define Z_IS_2131_EQ_2131(...) \, +#define Z_IS_2131U_EQ_2131(...) \, +#define Z_IS_2131_EQ_2131U(...) \, +#define Z_IS_2131U_EQ_2131U(...) \, +#define Z_IS_2132_EQ_2132(...) \, +#define Z_IS_2132U_EQ_2132(...) \, +#define Z_IS_2132_EQ_2132U(...) \, +#define Z_IS_2132U_EQ_2132U(...) \, +#define Z_IS_2133_EQ_2133(...) \, +#define Z_IS_2133U_EQ_2133(...) \, +#define Z_IS_2133_EQ_2133U(...) \, +#define Z_IS_2133U_EQ_2133U(...) \, +#define Z_IS_2134_EQ_2134(...) \, +#define Z_IS_2134U_EQ_2134(...) \, +#define Z_IS_2134_EQ_2134U(...) \, +#define Z_IS_2134U_EQ_2134U(...) \, +#define Z_IS_2135_EQ_2135(...) \, +#define Z_IS_2135U_EQ_2135(...) \, +#define Z_IS_2135_EQ_2135U(...) \, +#define Z_IS_2135U_EQ_2135U(...) \, +#define Z_IS_2136_EQ_2136(...) \, +#define Z_IS_2136U_EQ_2136(...) \, +#define Z_IS_2136_EQ_2136U(...) \, +#define Z_IS_2136U_EQ_2136U(...) \, +#define Z_IS_2137_EQ_2137(...) \, +#define Z_IS_2137U_EQ_2137(...) \, +#define Z_IS_2137_EQ_2137U(...) \, +#define Z_IS_2137U_EQ_2137U(...) \, +#define Z_IS_2138_EQ_2138(...) \, +#define Z_IS_2138U_EQ_2138(...) \, +#define Z_IS_2138_EQ_2138U(...) \, +#define Z_IS_2138U_EQ_2138U(...) \, +#define Z_IS_2139_EQ_2139(...) \, +#define Z_IS_2139U_EQ_2139(...) \, +#define Z_IS_2139_EQ_2139U(...) \, +#define Z_IS_2139U_EQ_2139U(...) \, +#define Z_IS_2140_EQ_2140(...) \, +#define Z_IS_2140U_EQ_2140(...) \, +#define Z_IS_2140_EQ_2140U(...) \, +#define Z_IS_2140U_EQ_2140U(...) \, +#define Z_IS_2141_EQ_2141(...) \, +#define Z_IS_2141U_EQ_2141(...) \, +#define Z_IS_2141_EQ_2141U(...) \, +#define Z_IS_2141U_EQ_2141U(...) \, +#define Z_IS_2142_EQ_2142(...) \, +#define Z_IS_2142U_EQ_2142(...) \, +#define Z_IS_2142_EQ_2142U(...) \, +#define Z_IS_2142U_EQ_2142U(...) \, +#define Z_IS_2143_EQ_2143(...) \, +#define Z_IS_2143U_EQ_2143(...) \, +#define Z_IS_2143_EQ_2143U(...) \, +#define Z_IS_2143U_EQ_2143U(...) \, +#define Z_IS_2144_EQ_2144(...) \, +#define Z_IS_2144U_EQ_2144(...) \, +#define Z_IS_2144_EQ_2144U(...) \, +#define Z_IS_2144U_EQ_2144U(...) \, +#define Z_IS_2145_EQ_2145(...) \, +#define Z_IS_2145U_EQ_2145(...) \, +#define Z_IS_2145_EQ_2145U(...) \, +#define Z_IS_2145U_EQ_2145U(...) \, +#define Z_IS_2146_EQ_2146(...) \, +#define Z_IS_2146U_EQ_2146(...) \, +#define Z_IS_2146_EQ_2146U(...) \, +#define Z_IS_2146U_EQ_2146U(...) \, +#define Z_IS_2147_EQ_2147(...) \, +#define Z_IS_2147U_EQ_2147(...) \, +#define Z_IS_2147_EQ_2147U(...) \, +#define Z_IS_2147U_EQ_2147U(...) \, +#define Z_IS_2148_EQ_2148(...) \, +#define Z_IS_2148U_EQ_2148(...) \, +#define Z_IS_2148_EQ_2148U(...) \, +#define Z_IS_2148U_EQ_2148U(...) \, +#define Z_IS_2149_EQ_2149(...) \, +#define Z_IS_2149U_EQ_2149(...) \, +#define Z_IS_2149_EQ_2149U(...) \, +#define Z_IS_2149U_EQ_2149U(...) \, +#define Z_IS_2150_EQ_2150(...) \, +#define Z_IS_2150U_EQ_2150(...) \, +#define Z_IS_2150_EQ_2150U(...) \, +#define Z_IS_2150U_EQ_2150U(...) \, +#define Z_IS_2151_EQ_2151(...) \, +#define Z_IS_2151U_EQ_2151(...) \, +#define Z_IS_2151_EQ_2151U(...) \, +#define Z_IS_2151U_EQ_2151U(...) \, +#define Z_IS_2152_EQ_2152(...) \, +#define Z_IS_2152U_EQ_2152(...) \, +#define Z_IS_2152_EQ_2152U(...) \, +#define Z_IS_2152U_EQ_2152U(...) \, +#define Z_IS_2153_EQ_2153(...) \, +#define Z_IS_2153U_EQ_2153(...) \, +#define Z_IS_2153_EQ_2153U(...) \, +#define Z_IS_2153U_EQ_2153U(...) \, +#define Z_IS_2154_EQ_2154(...) \, +#define Z_IS_2154U_EQ_2154(...) \, +#define Z_IS_2154_EQ_2154U(...) \, +#define Z_IS_2154U_EQ_2154U(...) \, +#define Z_IS_2155_EQ_2155(...) \, +#define Z_IS_2155U_EQ_2155(...) \, +#define Z_IS_2155_EQ_2155U(...) \, +#define Z_IS_2155U_EQ_2155U(...) \, +#define Z_IS_2156_EQ_2156(...) \, +#define Z_IS_2156U_EQ_2156(...) \, +#define Z_IS_2156_EQ_2156U(...) \, +#define Z_IS_2156U_EQ_2156U(...) \, +#define Z_IS_2157_EQ_2157(...) \, +#define Z_IS_2157U_EQ_2157(...) \, +#define Z_IS_2157_EQ_2157U(...) \, +#define Z_IS_2157U_EQ_2157U(...) \, +#define Z_IS_2158_EQ_2158(...) \, +#define Z_IS_2158U_EQ_2158(...) \, +#define Z_IS_2158_EQ_2158U(...) \, +#define Z_IS_2158U_EQ_2158U(...) \, +#define Z_IS_2159_EQ_2159(...) \, +#define Z_IS_2159U_EQ_2159(...) \, +#define Z_IS_2159_EQ_2159U(...) \, +#define Z_IS_2159U_EQ_2159U(...) \, +#define Z_IS_2160_EQ_2160(...) \, +#define Z_IS_2160U_EQ_2160(...) \, +#define Z_IS_2160_EQ_2160U(...) \, +#define Z_IS_2160U_EQ_2160U(...) \, +#define Z_IS_2161_EQ_2161(...) \, +#define Z_IS_2161U_EQ_2161(...) \, +#define Z_IS_2161_EQ_2161U(...) \, +#define Z_IS_2161U_EQ_2161U(...) \, +#define Z_IS_2162_EQ_2162(...) \, +#define Z_IS_2162U_EQ_2162(...) \, +#define Z_IS_2162_EQ_2162U(...) \, +#define Z_IS_2162U_EQ_2162U(...) \, +#define Z_IS_2163_EQ_2163(...) \, +#define Z_IS_2163U_EQ_2163(...) \, +#define Z_IS_2163_EQ_2163U(...) \, +#define Z_IS_2163U_EQ_2163U(...) \, +#define Z_IS_2164_EQ_2164(...) \, +#define Z_IS_2164U_EQ_2164(...) \, +#define Z_IS_2164_EQ_2164U(...) \, +#define Z_IS_2164U_EQ_2164U(...) \, +#define Z_IS_2165_EQ_2165(...) \, +#define Z_IS_2165U_EQ_2165(...) \, +#define Z_IS_2165_EQ_2165U(...) \, +#define Z_IS_2165U_EQ_2165U(...) \, +#define Z_IS_2166_EQ_2166(...) \, +#define Z_IS_2166U_EQ_2166(...) \, +#define Z_IS_2166_EQ_2166U(...) \, +#define Z_IS_2166U_EQ_2166U(...) \, +#define Z_IS_2167_EQ_2167(...) \, +#define Z_IS_2167U_EQ_2167(...) \, +#define Z_IS_2167_EQ_2167U(...) \, +#define Z_IS_2167U_EQ_2167U(...) \, +#define Z_IS_2168_EQ_2168(...) \, +#define Z_IS_2168U_EQ_2168(...) \, +#define Z_IS_2168_EQ_2168U(...) \, +#define Z_IS_2168U_EQ_2168U(...) \, +#define Z_IS_2169_EQ_2169(...) \, +#define Z_IS_2169U_EQ_2169(...) \, +#define Z_IS_2169_EQ_2169U(...) \, +#define Z_IS_2169U_EQ_2169U(...) \, +#define Z_IS_2170_EQ_2170(...) \, +#define Z_IS_2170U_EQ_2170(...) \, +#define Z_IS_2170_EQ_2170U(...) \, +#define Z_IS_2170U_EQ_2170U(...) \, +#define Z_IS_2171_EQ_2171(...) \, +#define Z_IS_2171U_EQ_2171(...) \, +#define Z_IS_2171_EQ_2171U(...) \, +#define Z_IS_2171U_EQ_2171U(...) \, +#define Z_IS_2172_EQ_2172(...) \, +#define Z_IS_2172U_EQ_2172(...) \, +#define Z_IS_2172_EQ_2172U(...) \, +#define Z_IS_2172U_EQ_2172U(...) \, +#define Z_IS_2173_EQ_2173(...) \, +#define Z_IS_2173U_EQ_2173(...) \, +#define Z_IS_2173_EQ_2173U(...) \, +#define Z_IS_2173U_EQ_2173U(...) \, +#define Z_IS_2174_EQ_2174(...) \, +#define Z_IS_2174U_EQ_2174(...) \, +#define Z_IS_2174_EQ_2174U(...) \, +#define Z_IS_2174U_EQ_2174U(...) \, +#define Z_IS_2175_EQ_2175(...) \, +#define Z_IS_2175U_EQ_2175(...) \, +#define Z_IS_2175_EQ_2175U(...) \, +#define Z_IS_2175U_EQ_2175U(...) \, +#define Z_IS_2176_EQ_2176(...) \, +#define Z_IS_2176U_EQ_2176(...) \, +#define Z_IS_2176_EQ_2176U(...) \, +#define Z_IS_2176U_EQ_2176U(...) \, +#define Z_IS_2177_EQ_2177(...) \, +#define Z_IS_2177U_EQ_2177(...) \, +#define Z_IS_2177_EQ_2177U(...) \, +#define Z_IS_2177U_EQ_2177U(...) \, +#define Z_IS_2178_EQ_2178(...) \, +#define Z_IS_2178U_EQ_2178(...) \, +#define Z_IS_2178_EQ_2178U(...) \, +#define Z_IS_2178U_EQ_2178U(...) \, +#define Z_IS_2179_EQ_2179(...) \, +#define Z_IS_2179U_EQ_2179(...) \, +#define Z_IS_2179_EQ_2179U(...) \, +#define Z_IS_2179U_EQ_2179U(...) \, +#define Z_IS_2180_EQ_2180(...) \, +#define Z_IS_2180U_EQ_2180(...) \, +#define Z_IS_2180_EQ_2180U(...) \, +#define Z_IS_2180U_EQ_2180U(...) \, +#define Z_IS_2181_EQ_2181(...) \, +#define Z_IS_2181U_EQ_2181(...) \, +#define Z_IS_2181_EQ_2181U(...) \, +#define Z_IS_2181U_EQ_2181U(...) \, +#define Z_IS_2182_EQ_2182(...) \, +#define Z_IS_2182U_EQ_2182(...) \, +#define Z_IS_2182_EQ_2182U(...) \, +#define Z_IS_2182U_EQ_2182U(...) \, +#define Z_IS_2183_EQ_2183(...) \, +#define Z_IS_2183U_EQ_2183(...) \, +#define Z_IS_2183_EQ_2183U(...) \, +#define Z_IS_2183U_EQ_2183U(...) \, +#define Z_IS_2184_EQ_2184(...) \, +#define Z_IS_2184U_EQ_2184(...) \, +#define Z_IS_2184_EQ_2184U(...) \, +#define Z_IS_2184U_EQ_2184U(...) \, +#define Z_IS_2185_EQ_2185(...) \, +#define Z_IS_2185U_EQ_2185(...) \, +#define Z_IS_2185_EQ_2185U(...) \, +#define Z_IS_2185U_EQ_2185U(...) \, +#define Z_IS_2186_EQ_2186(...) \, +#define Z_IS_2186U_EQ_2186(...) \, +#define Z_IS_2186_EQ_2186U(...) \, +#define Z_IS_2186U_EQ_2186U(...) \, +#define Z_IS_2187_EQ_2187(...) \, +#define Z_IS_2187U_EQ_2187(...) \, +#define Z_IS_2187_EQ_2187U(...) \, +#define Z_IS_2187U_EQ_2187U(...) \, +#define Z_IS_2188_EQ_2188(...) \, +#define Z_IS_2188U_EQ_2188(...) \, +#define Z_IS_2188_EQ_2188U(...) \, +#define Z_IS_2188U_EQ_2188U(...) \, +#define Z_IS_2189_EQ_2189(...) \, +#define Z_IS_2189U_EQ_2189(...) \, +#define Z_IS_2189_EQ_2189U(...) \, +#define Z_IS_2189U_EQ_2189U(...) \, +#define Z_IS_2190_EQ_2190(...) \, +#define Z_IS_2190U_EQ_2190(...) \, +#define Z_IS_2190_EQ_2190U(...) \, +#define Z_IS_2190U_EQ_2190U(...) \, +#define Z_IS_2191_EQ_2191(...) \, +#define Z_IS_2191U_EQ_2191(...) \, +#define Z_IS_2191_EQ_2191U(...) \, +#define Z_IS_2191U_EQ_2191U(...) \, +#define Z_IS_2192_EQ_2192(...) \, +#define Z_IS_2192U_EQ_2192(...) \, +#define Z_IS_2192_EQ_2192U(...) \, +#define Z_IS_2192U_EQ_2192U(...) \, +#define Z_IS_2193_EQ_2193(...) \, +#define Z_IS_2193U_EQ_2193(...) \, +#define Z_IS_2193_EQ_2193U(...) \, +#define Z_IS_2193U_EQ_2193U(...) \, +#define Z_IS_2194_EQ_2194(...) \, +#define Z_IS_2194U_EQ_2194(...) \, +#define Z_IS_2194_EQ_2194U(...) \, +#define Z_IS_2194U_EQ_2194U(...) \, +#define Z_IS_2195_EQ_2195(...) \, +#define Z_IS_2195U_EQ_2195(...) \, +#define Z_IS_2195_EQ_2195U(...) \, +#define Z_IS_2195U_EQ_2195U(...) \, +#define Z_IS_2196_EQ_2196(...) \, +#define Z_IS_2196U_EQ_2196(...) \, +#define Z_IS_2196_EQ_2196U(...) \, +#define Z_IS_2196U_EQ_2196U(...) \, +#define Z_IS_2197_EQ_2197(...) \, +#define Z_IS_2197U_EQ_2197(...) \, +#define Z_IS_2197_EQ_2197U(...) \, +#define Z_IS_2197U_EQ_2197U(...) \, +#define Z_IS_2198_EQ_2198(...) \, +#define Z_IS_2198U_EQ_2198(...) \, +#define Z_IS_2198_EQ_2198U(...) \, +#define Z_IS_2198U_EQ_2198U(...) \, +#define Z_IS_2199_EQ_2199(...) \, +#define Z_IS_2199U_EQ_2199(...) \, +#define Z_IS_2199_EQ_2199U(...) \, +#define Z_IS_2199U_EQ_2199U(...) \, +#define Z_IS_2200_EQ_2200(...) \, +#define Z_IS_2200U_EQ_2200(...) \, +#define Z_IS_2200_EQ_2200U(...) \, +#define Z_IS_2200U_EQ_2200U(...) \, +#define Z_IS_2201_EQ_2201(...) \, +#define Z_IS_2201U_EQ_2201(...) \, +#define Z_IS_2201_EQ_2201U(...) \, +#define Z_IS_2201U_EQ_2201U(...) \, +#define Z_IS_2202_EQ_2202(...) \, +#define Z_IS_2202U_EQ_2202(...) \, +#define Z_IS_2202_EQ_2202U(...) \, +#define Z_IS_2202U_EQ_2202U(...) \, +#define Z_IS_2203_EQ_2203(...) \, +#define Z_IS_2203U_EQ_2203(...) \, +#define Z_IS_2203_EQ_2203U(...) \, +#define Z_IS_2203U_EQ_2203U(...) \, +#define Z_IS_2204_EQ_2204(...) \, +#define Z_IS_2204U_EQ_2204(...) \, +#define Z_IS_2204_EQ_2204U(...) \, +#define Z_IS_2204U_EQ_2204U(...) \, +#define Z_IS_2205_EQ_2205(...) \, +#define Z_IS_2205U_EQ_2205(...) \, +#define Z_IS_2205_EQ_2205U(...) \, +#define Z_IS_2205U_EQ_2205U(...) \, +#define Z_IS_2206_EQ_2206(...) \, +#define Z_IS_2206U_EQ_2206(...) \, +#define Z_IS_2206_EQ_2206U(...) \, +#define Z_IS_2206U_EQ_2206U(...) \, +#define Z_IS_2207_EQ_2207(...) \, +#define Z_IS_2207U_EQ_2207(...) \, +#define Z_IS_2207_EQ_2207U(...) \, +#define Z_IS_2207U_EQ_2207U(...) \, +#define Z_IS_2208_EQ_2208(...) \, +#define Z_IS_2208U_EQ_2208(...) \, +#define Z_IS_2208_EQ_2208U(...) \, +#define Z_IS_2208U_EQ_2208U(...) \, +#define Z_IS_2209_EQ_2209(...) \, +#define Z_IS_2209U_EQ_2209(...) \, +#define Z_IS_2209_EQ_2209U(...) \, +#define Z_IS_2209U_EQ_2209U(...) \, +#define Z_IS_2210_EQ_2210(...) \, +#define Z_IS_2210U_EQ_2210(...) \, +#define Z_IS_2210_EQ_2210U(...) \, +#define Z_IS_2210U_EQ_2210U(...) \, +#define Z_IS_2211_EQ_2211(...) \, +#define Z_IS_2211U_EQ_2211(...) \, +#define Z_IS_2211_EQ_2211U(...) \, +#define Z_IS_2211U_EQ_2211U(...) \, +#define Z_IS_2212_EQ_2212(...) \, +#define Z_IS_2212U_EQ_2212(...) \, +#define Z_IS_2212_EQ_2212U(...) \, +#define Z_IS_2212U_EQ_2212U(...) \, +#define Z_IS_2213_EQ_2213(...) \, +#define Z_IS_2213U_EQ_2213(...) \, +#define Z_IS_2213_EQ_2213U(...) \, +#define Z_IS_2213U_EQ_2213U(...) \, +#define Z_IS_2214_EQ_2214(...) \, +#define Z_IS_2214U_EQ_2214(...) \, +#define Z_IS_2214_EQ_2214U(...) \, +#define Z_IS_2214U_EQ_2214U(...) \, +#define Z_IS_2215_EQ_2215(...) \, +#define Z_IS_2215U_EQ_2215(...) \, +#define Z_IS_2215_EQ_2215U(...) \, +#define Z_IS_2215U_EQ_2215U(...) \, +#define Z_IS_2216_EQ_2216(...) \, +#define Z_IS_2216U_EQ_2216(...) \, +#define Z_IS_2216_EQ_2216U(...) \, +#define Z_IS_2216U_EQ_2216U(...) \, +#define Z_IS_2217_EQ_2217(...) \, +#define Z_IS_2217U_EQ_2217(...) \, +#define Z_IS_2217_EQ_2217U(...) \, +#define Z_IS_2217U_EQ_2217U(...) \, +#define Z_IS_2218_EQ_2218(...) \, +#define Z_IS_2218U_EQ_2218(...) \, +#define Z_IS_2218_EQ_2218U(...) \, +#define Z_IS_2218U_EQ_2218U(...) \, +#define Z_IS_2219_EQ_2219(...) \, +#define Z_IS_2219U_EQ_2219(...) \, +#define Z_IS_2219_EQ_2219U(...) \, +#define Z_IS_2219U_EQ_2219U(...) \, +#define Z_IS_2220_EQ_2220(...) \, +#define Z_IS_2220U_EQ_2220(...) \, +#define Z_IS_2220_EQ_2220U(...) \, +#define Z_IS_2220U_EQ_2220U(...) \, +#define Z_IS_2221_EQ_2221(...) \, +#define Z_IS_2221U_EQ_2221(...) \, +#define Z_IS_2221_EQ_2221U(...) \, +#define Z_IS_2221U_EQ_2221U(...) \, +#define Z_IS_2222_EQ_2222(...) \, +#define Z_IS_2222U_EQ_2222(...) \, +#define Z_IS_2222_EQ_2222U(...) \, +#define Z_IS_2222U_EQ_2222U(...) \, +#define Z_IS_2223_EQ_2223(...) \, +#define Z_IS_2223U_EQ_2223(...) \, +#define Z_IS_2223_EQ_2223U(...) \, +#define Z_IS_2223U_EQ_2223U(...) \, +#define Z_IS_2224_EQ_2224(...) \, +#define Z_IS_2224U_EQ_2224(...) \, +#define Z_IS_2224_EQ_2224U(...) \, +#define Z_IS_2224U_EQ_2224U(...) \, +#define Z_IS_2225_EQ_2225(...) \, +#define Z_IS_2225U_EQ_2225(...) \, +#define Z_IS_2225_EQ_2225U(...) \, +#define Z_IS_2225U_EQ_2225U(...) \, +#define Z_IS_2226_EQ_2226(...) \, +#define Z_IS_2226U_EQ_2226(...) \, +#define Z_IS_2226_EQ_2226U(...) \, +#define Z_IS_2226U_EQ_2226U(...) \, +#define Z_IS_2227_EQ_2227(...) \, +#define Z_IS_2227U_EQ_2227(...) \, +#define Z_IS_2227_EQ_2227U(...) \, +#define Z_IS_2227U_EQ_2227U(...) \, +#define Z_IS_2228_EQ_2228(...) \, +#define Z_IS_2228U_EQ_2228(...) \, +#define Z_IS_2228_EQ_2228U(...) \, +#define Z_IS_2228U_EQ_2228U(...) \, +#define Z_IS_2229_EQ_2229(...) \, +#define Z_IS_2229U_EQ_2229(...) \, +#define Z_IS_2229_EQ_2229U(...) \, +#define Z_IS_2229U_EQ_2229U(...) \, +#define Z_IS_2230_EQ_2230(...) \, +#define Z_IS_2230U_EQ_2230(...) \, +#define Z_IS_2230_EQ_2230U(...) \, +#define Z_IS_2230U_EQ_2230U(...) \, +#define Z_IS_2231_EQ_2231(...) \, +#define Z_IS_2231U_EQ_2231(...) \, +#define Z_IS_2231_EQ_2231U(...) \, +#define Z_IS_2231U_EQ_2231U(...) \, +#define Z_IS_2232_EQ_2232(...) \, +#define Z_IS_2232U_EQ_2232(...) \, +#define Z_IS_2232_EQ_2232U(...) \, +#define Z_IS_2232U_EQ_2232U(...) \, +#define Z_IS_2233_EQ_2233(...) \, +#define Z_IS_2233U_EQ_2233(...) \, +#define Z_IS_2233_EQ_2233U(...) \, +#define Z_IS_2233U_EQ_2233U(...) \, +#define Z_IS_2234_EQ_2234(...) \, +#define Z_IS_2234U_EQ_2234(...) \, +#define Z_IS_2234_EQ_2234U(...) \, +#define Z_IS_2234U_EQ_2234U(...) \, +#define Z_IS_2235_EQ_2235(...) \, +#define Z_IS_2235U_EQ_2235(...) \, +#define Z_IS_2235_EQ_2235U(...) \, +#define Z_IS_2235U_EQ_2235U(...) \, +#define Z_IS_2236_EQ_2236(...) \, +#define Z_IS_2236U_EQ_2236(...) \, +#define Z_IS_2236_EQ_2236U(...) \, +#define Z_IS_2236U_EQ_2236U(...) \, +#define Z_IS_2237_EQ_2237(...) \, +#define Z_IS_2237U_EQ_2237(...) \, +#define Z_IS_2237_EQ_2237U(...) \, +#define Z_IS_2237U_EQ_2237U(...) \, +#define Z_IS_2238_EQ_2238(...) \, +#define Z_IS_2238U_EQ_2238(...) \, +#define Z_IS_2238_EQ_2238U(...) \, +#define Z_IS_2238U_EQ_2238U(...) \, +#define Z_IS_2239_EQ_2239(...) \, +#define Z_IS_2239U_EQ_2239(...) \, +#define Z_IS_2239_EQ_2239U(...) \, +#define Z_IS_2239U_EQ_2239U(...) \, +#define Z_IS_2240_EQ_2240(...) \, +#define Z_IS_2240U_EQ_2240(...) \, +#define Z_IS_2240_EQ_2240U(...) \, +#define Z_IS_2240U_EQ_2240U(...) \, +#define Z_IS_2241_EQ_2241(...) \, +#define Z_IS_2241U_EQ_2241(...) \, +#define Z_IS_2241_EQ_2241U(...) \, +#define Z_IS_2241U_EQ_2241U(...) \, +#define Z_IS_2242_EQ_2242(...) \, +#define Z_IS_2242U_EQ_2242(...) \, +#define Z_IS_2242_EQ_2242U(...) \, +#define Z_IS_2242U_EQ_2242U(...) \, +#define Z_IS_2243_EQ_2243(...) \, +#define Z_IS_2243U_EQ_2243(...) \, +#define Z_IS_2243_EQ_2243U(...) \, +#define Z_IS_2243U_EQ_2243U(...) \, +#define Z_IS_2244_EQ_2244(...) \, +#define Z_IS_2244U_EQ_2244(...) \, +#define Z_IS_2244_EQ_2244U(...) \, +#define Z_IS_2244U_EQ_2244U(...) \, +#define Z_IS_2245_EQ_2245(...) \, +#define Z_IS_2245U_EQ_2245(...) \, +#define Z_IS_2245_EQ_2245U(...) \, +#define Z_IS_2245U_EQ_2245U(...) \, +#define Z_IS_2246_EQ_2246(...) \, +#define Z_IS_2246U_EQ_2246(...) \, +#define Z_IS_2246_EQ_2246U(...) \, +#define Z_IS_2246U_EQ_2246U(...) \, +#define Z_IS_2247_EQ_2247(...) \, +#define Z_IS_2247U_EQ_2247(...) \, +#define Z_IS_2247_EQ_2247U(...) \, +#define Z_IS_2247U_EQ_2247U(...) \, +#define Z_IS_2248_EQ_2248(...) \, +#define Z_IS_2248U_EQ_2248(...) \, +#define Z_IS_2248_EQ_2248U(...) \, +#define Z_IS_2248U_EQ_2248U(...) \, +#define Z_IS_2249_EQ_2249(...) \, +#define Z_IS_2249U_EQ_2249(...) \, +#define Z_IS_2249_EQ_2249U(...) \, +#define Z_IS_2249U_EQ_2249U(...) \, +#define Z_IS_2250_EQ_2250(...) \, +#define Z_IS_2250U_EQ_2250(...) \, +#define Z_IS_2250_EQ_2250U(...) \, +#define Z_IS_2250U_EQ_2250U(...) \, +#define Z_IS_2251_EQ_2251(...) \, +#define Z_IS_2251U_EQ_2251(...) \, +#define Z_IS_2251_EQ_2251U(...) \, +#define Z_IS_2251U_EQ_2251U(...) \, +#define Z_IS_2252_EQ_2252(...) \, +#define Z_IS_2252U_EQ_2252(...) \, +#define Z_IS_2252_EQ_2252U(...) \, +#define Z_IS_2252U_EQ_2252U(...) \, +#define Z_IS_2253_EQ_2253(...) \, +#define Z_IS_2253U_EQ_2253(...) \, +#define Z_IS_2253_EQ_2253U(...) \, +#define Z_IS_2253U_EQ_2253U(...) \, +#define Z_IS_2254_EQ_2254(...) \, +#define Z_IS_2254U_EQ_2254(...) \, +#define Z_IS_2254_EQ_2254U(...) \, +#define Z_IS_2254U_EQ_2254U(...) \, +#define Z_IS_2255_EQ_2255(...) \, +#define Z_IS_2255U_EQ_2255(...) \, +#define Z_IS_2255_EQ_2255U(...) \, +#define Z_IS_2255U_EQ_2255U(...) \, +#define Z_IS_2256_EQ_2256(...) \, +#define Z_IS_2256U_EQ_2256(...) \, +#define Z_IS_2256_EQ_2256U(...) \, +#define Z_IS_2256U_EQ_2256U(...) \, +#define Z_IS_2257_EQ_2257(...) \, +#define Z_IS_2257U_EQ_2257(...) \, +#define Z_IS_2257_EQ_2257U(...) \, +#define Z_IS_2257U_EQ_2257U(...) \, +#define Z_IS_2258_EQ_2258(...) \, +#define Z_IS_2258U_EQ_2258(...) \, +#define Z_IS_2258_EQ_2258U(...) \, +#define Z_IS_2258U_EQ_2258U(...) \, +#define Z_IS_2259_EQ_2259(...) \, +#define Z_IS_2259U_EQ_2259(...) \, +#define Z_IS_2259_EQ_2259U(...) \, +#define Z_IS_2259U_EQ_2259U(...) \, +#define Z_IS_2260_EQ_2260(...) \, +#define Z_IS_2260U_EQ_2260(...) \, +#define Z_IS_2260_EQ_2260U(...) \, +#define Z_IS_2260U_EQ_2260U(...) \, +#define Z_IS_2261_EQ_2261(...) \, +#define Z_IS_2261U_EQ_2261(...) \, +#define Z_IS_2261_EQ_2261U(...) \, +#define Z_IS_2261U_EQ_2261U(...) \, +#define Z_IS_2262_EQ_2262(...) \, +#define Z_IS_2262U_EQ_2262(...) \, +#define Z_IS_2262_EQ_2262U(...) \, +#define Z_IS_2262U_EQ_2262U(...) \, +#define Z_IS_2263_EQ_2263(...) \, +#define Z_IS_2263U_EQ_2263(...) \, +#define Z_IS_2263_EQ_2263U(...) \, +#define Z_IS_2263U_EQ_2263U(...) \, +#define Z_IS_2264_EQ_2264(...) \, +#define Z_IS_2264U_EQ_2264(...) \, +#define Z_IS_2264_EQ_2264U(...) \, +#define Z_IS_2264U_EQ_2264U(...) \, +#define Z_IS_2265_EQ_2265(...) \, +#define Z_IS_2265U_EQ_2265(...) \, +#define Z_IS_2265_EQ_2265U(...) \, +#define Z_IS_2265U_EQ_2265U(...) \, +#define Z_IS_2266_EQ_2266(...) \, +#define Z_IS_2266U_EQ_2266(...) \, +#define Z_IS_2266_EQ_2266U(...) \, +#define Z_IS_2266U_EQ_2266U(...) \, +#define Z_IS_2267_EQ_2267(...) \, +#define Z_IS_2267U_EQ_2267(...) \, +#define Z_IS_2267_EQ_2267U(...) \, +#define Z_IS_2267U_EQ_2267U(...) \, +#define Z_IS_2268_EQ_2268(...) \, +#define Z_IS_2268U_EQ_2268(...) \, +#define Z_IS_2268_EQ_2268U(...) \, +#define Z_IS_2268U_EQ_2268U(...) \, +#define Z_IS_2269_EQ_2269(...) \, +#define Z_IS_2269U_EQ_2269(...) \, +#define Z_IS_2269_EQ_2269U(...) \, +#define Z_IS_2269U_EQ_2269U(...) \, +#define Z_IS_2270_EQ_2270(...) \, +#define Z_IS_2270U_EQ_2270(...) \, +#define Z_IS_2270_EQ_2270U(...) \, +#define Z_IS_2270U_EQ_2270U(...) \, +#define Z_IS_2271_EQ_2271(...) \, +#define Z_IS_2271U_EQ_2271(...) \, +#define Z_IS_2271_EQ_2271U(...) \, +#define Z_IS_2271U_EQ_2271U(...) \, +#define Z_IS_2272_EQ_2272(...) \, +#define Z_IS_2272U_EQ_2272(...) \, +#define Z_IS_2272_EQ_2272U(...) \, +#define Z_IS_2272U_EQ_2272U(...) \, +#define Z_IS_2273_EQ_2273(...) \, +#define Z_IS_2273U_EQ_2273(...) \, +#define Z_IS_2273_EQ_2273U(...) \, +#define Z_IS_2273U_EQ_2273U(...) \, +#define Z_IS_2274_EQ_2274(...) \, +#define Z_IS_2274U_EQ_2274(...) \, +#define Z_IS_2274_EQ_2274U(...) \, +#define Z_IS_2274U_EQ_2274U(...) \, +#define Z_IS_2275_EQ_2275(...) \, +#define Z_IS_2275U_EQ_2275(...) \, +#define Z_IS_2275_EQ_2275U(...) \, +#define Z_IS_2275U_EQ_2275U(...) \, +#define Z_IS_2276_EQ_2276(...) \, +#define Z_IS_2276U_EQ_2276(...) \, +#define Z_IS_2276_EQ_2276U(...) \, +#define Z_IS_2276U_EQ_2276U(...) \, +#define Z_IS_2277_EQ_2277(...) \, +#define Z_IS_2277U_EQ_2277(...) \, +#define Z_IS_2277_EQ_2277U(...) \, +#define Z_IS_2277U_EQ_2277U(...) \, +#define Z_IS_2278_EQ_2278(...) \, +#define Z_IS_2278U_EQ_2278(...) \, +#define Z_IS_2278_EQ_2278U(...) \, +#define Z_IS_2278U_EQ_2278U(...) \, +#define Z_IS_2279_EQ_2279(...) \, +#define Z_IS_2279U_EQ_2279(...) \, +#define Z_IS_2279_EQ_2279U(...) \, +#define Z_IS_2279U_EQ_2279U(...) \, +#define Z_IS_2280_EQ_2280(...) \, +#define Z_IS_2280U_EQ_2280(...) \, +#define Z_IS_2280_EQ_2280U(...) \, +#define Z_IS_2280U_EQ_2280U(...) \, +#define Z_IS_2281_EQ_2281(...) \, +#define Z_IS_2281U_EQ_2281(...) \, +#define Z_IS_2281_EQ_2281U(...) \, +#define Z_IS_2281U_EQ_2281U(...) \, +#define Z_IS_2282_EQ_2282(...) \, +#define Z_IS_2282U_EQ_2282(...) \, +#define Z_IS_2282_EQ_2282U(...) \, +#define Z_IS_2282U_EQ_2282U(...) \, +#define Z_IS_2283_EQ_2283(...) \, +#define Z_IS_2283U_EQ_2283(...) \, +#define Z_IS_2283_EQ_2283U(...) \, +#define Z_IS_2283U_EQ_2283U(...) \, +#define Z_IS_2284_EQ_2284(...) \, +#define Z_IS_2284U_EQ_2284(...) \, +#define Z_IS_2284_EQ_2284U(...) \, +#define Z_IS_2284U_EQ_2284U(...) \, +#define Z_IS_2285_EQ_2285(...) \, +#define Z_IS_2285U_EQ_2285(...) \, +#define Z_IS_2285_EQ_2285U(...) \, +#define Z_IS_2285U_EQ_2285U(...) \, +#define Z_IS_2286_EQ_2286(...) \, +#define Z_IS_2286U_EQ_2286(...) \, +#define Z_IS_2286_EQ_2286U(...) \, +#define Z_IS_2286U_EQ_2286U(...) \, +#define Z_IS_2287_EQ_2287(...) \, +#define Z_IS_2287U_EQ_2287(...) \, +#define Z_IS_2287_EQ_2287U(...) \, +#define Z_IS_2287U_EQ_2287U(...) \, +#define Z_IS_2288_EQ_2288(...) \, +#define Z_IS_2288U_EQ_2288(...) \, +#define Z_IS_2288_EQ_2288U(...) \, +#define Z_IS_2288U_EQ_2288U(...) \, +#define Z_IS_2289_EQ_2289(...) \, +#define Z_IS_2289U_EQ_2289(...) \, +#define Z_IS_2289_EQ_2289U(...) \, +#define Z_IS_2289U_EQ_2289U(...) \, +#define Z_IS_2290_EQ_2290(...) \, +#define Z_IS_2290U_EQ_2290(...) \, +#define Z_IS_2290_EQ_2290U(...) \, +#define Z_IS_2290U_EQ_2290U(...) \, +#define Z_IS_2291_EQ_2291(...) \, +#define Z_IS_2291U_EQ_2291(...) \, +#define Z_IS_2291_EQ_2291U(...) \, +#define Z_IS_2291U_EQ_2291U(...) \, +#define Z_IS_2292_EQ_2292(...) \, +#define Z_IS_2292U_EQ_2292(...) \, +#define Z_IS_2292_EQ_2292U(...) \, +#define Z_IS_2292U_EQ_2292U(...) \, +#define Z_IS_2293_EQ_2293(...) \, +#define Z_IS_2293U_EQ_2293(...) \, +#define Z_IS_2293_EQ_2293U(...) \, +#define Z_IS_2293U_EQ_2293U(...) \, +#define Z_IS_2294_EQ_2294(...) \, +#define Z_IS_2294U_EQ_2294(...) \, +#define Z_IS_2294_EQ_2294U(...) \, +#define Z_IS_2294U_EQ_2294U(...) \, +#define Z_IS_2295_EQ_2295(...) \, +#define Z_IS_2295U_EQ_2295(...) \, +#define Z_IS_2295_EQ_2295U(...) \, +#define Z_IS_2295U_EQ_2295U(...) \, +#define Z_IS_2296_EQ_2296(...) \, +#define Z_IS_2296U_EQ_2296(...) \, +#define Z_IS_2296_EQ_2296U(...) \, +#define Z_IS_2296U_EQ_2296U(...) \, +#define Z_IS_2297_EQ_2297(...) \, +#define Z_IS_2297U_EQ_2297(...) \, +#define Z_IS_2297_EQ_2297U(...) \, +#define Z_IS_2297U_EQ_2297U(...) \, +#define Z_IS_2298_EQ_2298(...) \, +#define Z_IS_2298U_EQ_2298(...) \, +#define Z_IS_2298_EQ_2298U(...) \, +#define Z_IS_2298U_EQ_2298U(...) \, +#define Z_IS_2299_EQ_2299(...) \, +#define Z_IS_2299U_EQ_2299(...) \, +#define Z_IS_2299_EQ_2299U(...) \, +#define Z_IS_2299U_EQ_2299U(...) \, +#define Z_IS_2300_EQ_2300(...) \, +#define Z_IS_2300U_EQ_2300(...) \, +#define Z_IS_2300_EQ_2300U(...) \, +#define Z_IS_2300U_EQ_2300U(...) \, +#define Z_IS_2301_EQ_2301(...) \, +#define Z_IS_2301U_EQ_2301(...) \, +#define Z_IS_2301_EQ_2301U(...) \, +#define Z_IS_2301U_EQ_2301U(...) \, +#define Z_IS_2302_EQ_2302(...) \, +#define Z_IS_2302U_EQ_2302(...) \, +#define Z_IS_2302_EQ_2302U(...) \, +#define Z_IS_2302U_EQ_2302U(...) \, +#define Z_IS_2303_EQ_2303(...) \, +#define Z_IS_2303U_EQ_2303(...) \, +#define Z_IS_2303_EQ_2303U(...) \, +#define Z_IS_2303U_EQ_2303U(...) \, +#define Z_IS_2304_EQ_2304(...) \, +#define Z_IS_2304U_EQ_2304(...) \, +#define Z_IS_2304_EQ_2304U(...) \, +#define Z_IS_2304U_EQ_2304U(...) \, +#define Z_IS_2305_EQ_2305(...) \, +#define Z_IS_2305U_EQ_2305(...) \, +#define Z_IS_2305_EQ_2305U(...) \, +#define Z_IS_2305U_EQ_2305U(...) \, +#define Z_IS_2306_EQ_2306(...) \, +#define Z_IS_2306U_EQ_2306(...) \, +#define Z_IS_2306_EQ_2306U(...) \, +#define Z_IS_2306U_EQ_2306U(...) \, +#define Z_IS_2307_EQ_2307(...) \, +#define Z_IS_2307U_EQ_2307(...) \, +#define Z_IS_2307_EQ_2307U(...) \, +#define Z_IS_2307U_EQ_2307U(...) \, +#define Z_IS_2308_EQ_2308(...) \, +#define Z_IS_2308U_EQ_2308(...) \, +#define Z_IS_2308_EQ_2308U(...) \, +#define Z_IS_2308U_EQ_2308U(...) \, +#define Z_IS_2309_EQ_2309(...) \, +#define Z_IS_2309U_EQ_2309(...) \, +#define Z_IS_2309_EQ_2309U(...) \, +#define Z_IS_2309U_EQ_2309U(...) \, +#define Z_IS_2310_EQ_2310(...) \, +#define Z_IS_2310U_EQ_2310(...) \, +#define Z_IS_2310_EQ_2310U(...) \, +#define Z_IS_2310U_EQ_2310U(...) \, +#define Z_IS_2311_EQ_2311(...) \, +#define Z_IS_2311U_EQ_2311(...) \, +#define Z_IS_2311_EQ_2311U(...) \, +#define Z_IS_2311U_EQ_2311U(...) \, +#define Z_IS_2312_EQ_2312(...) \, +#define Z_IS_2312U_EQ_2312(...) \, +#define Z_IS_2312_EQ_2312U(...) \, +#define Z_IS_2312U_EQ_2312U(...) \, +#define Z_IS_2313_EQ_2313(...) \, +#define Z_IS_2313U_EQ_2313(...) \, +#define Z_IS_2313_EQ_2313U(...) \, +#define Z_IS_2313U_EQ_2313U(...) \, +#define Z_IS_2314_EQ_2314(...) \, +#define Z_IS_2314U_EQ_2314(...) \, +#define Z_IS_2314_EQ_2314U(...) \, +#define Z_IS_2314U_EQ_2314U(...) \, +#define Z_IS_2315_EQ_2315(...) \, +#define Z_IS_2315U_EQ_2315(...) \, +#define Z_IS_2315_EQ_2315U(...) \, +#define Z_IS_2315U_EQ_2315U(...) \, +#define Z_IS_2316_EQ_2316(...) \, +#define Z_IS_2316U_EQ_2316(...) \, +#define Z_IS_2316_EQ_2316U(...) \, +#define Z_IS_2316U_EQ_2316U(...) \, +#define Z_IS_2317_EQ_2317(...) \, +#define Z_IS_2317U_EQ_2317(...) \, +#define Z_IS_2317_EQ_2317U(...) \, +#define Z_IS_2317U_EQ_2317U(...) \, +#define Z_IS_2318_EQ_2318(...) \, +#define Z_IS_2318U_EQ_2318(...) \, +#define Z_IS_2318_EQ_2318U(...) \, +#define Z_IS_2318U_EQ_2318U(...) \, +#define Z_IS_2319_EQ_2319(...) \, +#define Z_IS_2319U_EQ_2319(...) \, +#define Z_IS_2319_EQ_2319U(...) \, +#define Z_IS_2319U_EQ_2319U(...) \, +#define Z_IS_2320_EQ_2320(...) \, +#define Z_IS_2320U_EQ_2320(...) \, +#define Z_IS_2320_EQ_2320U(...) \, +#define Z_IS_2320U_EQ_2320U(...) \, +#define Z_IS_2321_EQ_2321(...) \, +#define Z_IS_2321U_EQ_2321(...) \, +#define Z_IS_2321_EQ_2321U(...) \, +#define Z_IS_2321U_EQ_2321U(...) \, +#define Z_IS_2322_EQ_2322(...) \, +#define Z_IS_2322U_EQ_2322(...) \, +#define Z_IS_2322_EQ_2322U(...) \, +#define Z_IS_2322U_EQ_2322U(...) \, +#define Z_IS_2323_EQ_2323(...) \, +#define Z_IS_2323U_EQ_2323(...) \, +#define Z_IS_2323_EQ_2323U(...) \, +#define Z_IS_2323U_EQ_2323U(...) \, +#define Z_IS_2324_EQ_2324(...) \, +#define Z_IS_2324U_EQ_2324(...) \, +#define Z_IS_2324_EQ_2324U(...) \, +#define Z_IS_2324U_EQ_2324U(...) \, +#define Z_IS_2325_EQ_2325(...) \, +#define Z_IS_2325U_EQ_2325(...) \, +#define Z_IS_2325_EQ_2325U(...) \, +#define Z_IS_2325U_EQ_2325U(...) \, +#define Z_IS_2326_EQ_2326(...) \, +#define Z_IS_2326U_EQ_2326(...) \, +#define Z_IS_2326_EQ_2326U(...) \, +#define Z_IS_2326U_EQ_2326U(...) \, +#define Z_IS_2327_EQ_2327(...) \, +#define Z_IS_2327U_EQ_2327(...) \, +#define Z_IS_2327_EQ_2327U(...) \, +#define Z_IS_2327U_EQ_2327U(...) \, +#define Z_IS_2328_EQ_2328(...) \, +#define Z_IS_2328U_EQ_2328(...) \, +#define Z_IS_2328_EQ_2328U(...) \, +#define Z_IS_2328U_EQ_2328U(...) \, +#define Z_IS_2329_EQ_2329(...) \, +#define Z_IS_2329U_EQ_2329(...) \, +#define Z_IS_2329_EQ_2329U(...) \, +#define Z_IS_2329U_EQ_2329U(...) \, +#define Z_IS_2330_EQ_2330(...) \, +#define Z_IS_2330U_EQ_2330(...) \, +#define Z_IS_2330_EQ_2330U(...) \, +#define Z_IS_2330U_EQ_2330U(...) \, +#define Z_IS_2331_EQ_2331(...) \, +#define Z_IS_2331U_EQ_2331(...) \, +#define Z_IS_2331_EQ_2331U(...) \, +#define Z_IS_2331U_EQ_2331U(...) \, +#define Z_IS_2332_EQ_2332(...) \, +#define Z_IS_2332U_EQ_2332(...) \, +#define Z_IS_2332_EQ_2332U(...) \, +#define Z_IS_2332U_EQ_2332U(...) \, +#define Z_IS_2333_EQ_2333(...) \, +#define Z_IS_2333U_EQ_2333(...) \, +#define Z_IS_2333_EQ_2333U(...) \, +#define Z_IS_2333U_EQ_2333U(...) \, +#define Z_IS_2334_EQ_2334(...) \, +#define Z_IS_2334U_EQ_2334(...) \, +#define Z_IS_2334_EQ_2334U(...) \, +#define Z_IS_2334U_EQ_2334U(...) \, +#define Z_IS_2335_EQ_2335(...) \, +#define Z_IS_2335U_EQ_2335(...) \, +#define Z_IS_2335_EQ_2335U(...) \, +#define Z_IS_2335U_EQ_2335U(...) \, +#define Z_IS_2336_EQ_2336(...) \, +#define Z_IS_2336U_EQ_2336(...) \, +#define Z_IS_2336_EQ_2336U(...) \, +#define Z_IS_2336U_EQ_2336U(...) \, +#define Z_IS_2337_EQ_2337(...) \, +#define Z_IS_2337U_EQ_2337(...) \, +#define Z_IS_2337_EQ_2337U(...) \, +#define Z_IS_2337U_EQ_2337U(...) \, +#define Z_IS_2338_EQ_2338(...) \, +#define Z_IS_2338U_EQ_2338(...) \, +#define Z_IS_2338_EQ_2338U(...) \, +#define Z_IS_2338U_EQ_2338U(...) \, +#define Z_IS_2339_EQ_2339(...) \, +#define Z_IS_2339U_EQ_2339(...) \, +#define Z_IS_2339_EQ_2339U(...) \, +#define Z_IS_2339U_EQ_2339U(...) \, +#define Z_IS_2340_EQ_2340(...) \, +#define Z_IS_2340U_EQ_2340(...) \, +#define Z_IS_2340_EQ_2340U(...) \, +#define Z_IS_2340U_EQ_2340U(...) \, +#define Z_IS_2341_EQ_2341(...) \, +#define Z_IS_2341U_EQ_2341(...) \, +#define Z_IS_2341_EQ_2341U(...) \, +#define Z_IS_2341U_EQ_2341U(...) \, +#define Z_IS_2342_EQ_2342(...) \, +#define Z_IS_2342U_EQ_2342(...) \, +#define Z_IS_2342_EQ_2342U(...) \, +#define Z_IS_2342U_EQ_2342U(...) \, +#define Z_IS_2343_EQ_2343(...) \, +#define Z_IS_2343U_EQ_2343(...) \, +#define Z_IS_2343_EQ_2343U(...) \, +#define Z_IS_2343U_EQ_2343U(...) \, +#define Z_IS_2344_EQ_2344(...) \, +#define Z_IS_2344U_EQ_2344(...) \, +#define Z_IS_2344_EQ_2344U(...) \, +#define Z_IS_2344U_EQ_2344U(...) \, +#define Z_IS_2345_EQ_2345(...) \, +#define Z_IS_2345U_EQ_2345(...) \, +#define Z_IS_2345_EQ_2345U(...) \, +#define Z_IS_2345U_EQ_2345U(...) \, +#define Z_IS_2346_EQ_2346(...) \, +#define Z_IS_2346U_EQ_2346(...) \, +#define Z_IS_2346_EQ_2346U(...) \, +#define Z_IS_2346U_EQ_2346U(...) \, +#define Z_IS_2347_EQ_2347(...) \, +#define Z_IS_2347U_EQ_2347(...) \, +#define Z_IS_2347_EQ_2347U(...) \, +#define Z_IS_2347U_EQ_2347U(...) \, +#define Z_IS_2348_EQ_2348(...) \, +#define Z_IS_2348U_EQ_2348(...) \, +#define Z_IS_2348_EQ_2348U(...) \, +#define Z_IS_2348U_EQ_2348U(...) \, +#define Z_IS_2349_EQ_2349(...) \, +#define Z_IS_2349U_EQ_2349(...) \, +#define Z_IS_2349_EQ_2349U(...) \, +#define Z_IS_2349U_EQ_2349U(...) \, +#define Z_IS_2350_EQ_2350(...) \, +#define Z_IS_2350U_EQ_2350(...) \, +#define Z_IS_2350_EQ_2350U(...) \, +#define Z_IS_2350U_EQ_2350U(...) \, +#define Z_IS_2351_EQ_2351(...) \, +#define Z_IS_2351U_EQ_2351(...) \, +#define Z_IS_2351_EQ_2351U(...) \, +#define Z_IS_2351U_EQ_2351U(...) \, +#define Z_IS_2352_EQ_2352(...) \, +#define Z_IS_2352U_EQ_2352(...) \, +#define Z_IS_2352_EQ_2352U(...) \, +#define Z_IS_2352U_EQ_2352U(...) \, +#define Z_IS_2353_EQ_2353(...) \, +#define Z_IS_2353U_EQ_2353(...) \, +#define Z_IS_2353_EQ_2353U(...) \, +#define Z_IS_2353U_EQ_2353U(...) \, +#define Z_IS_2354_EQ_2354(...) \, +#define Z_IS_2354U_EQ_2354(...) \, +#define Z_IS_2354_EQ_2354U(...) \, +#define Z_IS_2354U_EQ_2354U(...) \, +#define Z_IS_2355_EQ_2355(...) \, +#define Z_IS_2355U_EQ_2355(...) \, +#define Z_IS_2355_EQ_2355U(...) \, +#define Z_IS_2355U_EQ_2355U(...) \, +#define Z_IS_2356_EQ_2356(...) \, +#define Z_IS_2356U_EQ_2356(...) \, +#define Z_IS_2356_EQ_2356U(...) \, +#define Z_IS_2356U_EQ_2356U(...) \, +#define Z_IS_2357_EQ_2357(...) \, +#define Z_IS_2357U_EQ_2357(...) \, +#define Z_IS_2357_EQ_2357U(...) \, +#define Z_IS_2357U_EQ_2357U(...) \, +#define Z_IS_2358_EQ_2358(...) \, +#define Z_IS_2358U_EQ_2358(...) \, +#define Z_IS_2358_EQ_2358U(...) \, +#define Z_IS_2358U_EQ_2358U(...) \, +#define Z_IS_2359_EQ_2359(...) \, +#define Z_IS_2359U_EQ_2359(...) \, +#define Z_IS_2359_EQ_2359U(...) \, +#define Z_IS_2359U_EQ_2359U(...) \, +#define Z_IS_2360_EQ_2360(...) \, +#define Z_IS_2360U_EQ_2360(...) \, +#define Z_IS_2360_EQ_2360U(...) \, +#define Z_IS_2360U_EQ_2360U(...) \, +#define Z_IS_2361_EQ_2361(...) \, +#define Z_IS_2361U_EQ_2361(...) \, +#define Z_IS_2361_EQ_2361U(...) \, +#define Z_IS_2361U_EQ_2361U(...) \, +#define Z_IS_2362_EQ_2362(...) \, +#define Z_IS_2362U_EQ_2362(...) \, +#define Z_IS_2362_EQ_2362U(...) \, +#define Z_IS_2362U_EQ_2362U(...) \, +#define Z_IS_2363_EQ_2363(...) \, +#define Z_IS_2363U_EQ_2363(...) \, +#define Z_IS_2363_EQ_2363U(...) \, +#define Z_IS_2363U_EQ_2363U(...) \, +#define Z_IS_2364_EQ_2364(...) \, +#define Z_IS_2364U_EQ_2364(...) \, +#define Z_IS_2364_EQ_2364U(...) \, +#define Z_IS_2364U_EQ_2364U(...) \, +#define Z_IS_2365_EQ_2365(...) \, +#define Z_IS_2365U_EQ_2365(...) \, +#define Z_IS_2365_EQ_2365U(...) \, +#define Z_IS_2365U_EQ_2365U(...) \, +#define Z_IS_2366_EQ_2366(...) \, +#define Z_IS_2366U_EQ_2366(...) \, +#define Z_IS_2366_EQ_2366U(...) \, +#define Z_IS_2366U_EQ_2366U(...) \, +#define Z_IS_2367_EQ_2367(...) \, +#define Z_IS_2367U_EQ_2367(...) \, +#define Z_IS_2367_EQ_2367U(...) \, +#define Z_IS_2367U_EQ_2367U(...) \, +#define Z_IS_2368_EQ_2368(...) \, +#define Z_IS_2368U_EQ_2368(...) \, +#define Z_IS_2368_EQ_2368U(...) \, +#define Z_IS_2368U_EQ_2368U(...) \, +#define Z_IS_2369_EQ_2369(...) \, +#define Z_IS_2369U_EQ_2369(...) \, +#define Z_IS_2369_EQ_2369U(...) \, +#define Z_IS_2369U_EQ_2369U(...) \, +#define Z_IS_2370_EQ_2370(...) \, +#define Z_IS_2370U_EQ_2370(...) \, +#define Z_IS_2370_EQ_2370U(...) \, +#define Z_IS_2370U_EQ_2370U(...) \, +#define Z_IS_2371_EQ_2371(...) \, +#define Z_IS_2371U_EQ_2371(...) \, +#define Z_IS_2371_EQ_2371U(...) \, +#define Z_IS_2371U_EQ_2371U(...) \, +#define Z_IS_2372_EQ_2372(...) \, +#define Z_IS_2372U_EQ_2372(...) \, +#define Z_IS_2372_EQ_2372U(...) \, +#define Z_IS_2372U_EQ_2372U(...) \, +#define Z_IS_2373_EQ_2373(...) \, +#define Z_IS_2373U_EQ_2373(...) \, +#define Z_IS_2373_EQ_2373U(...) \, +#define Z_IS_2373U_EQ_2373U(...) \, +#define Z_IS_2374_EQ_2374(...) \, +#define Z_IS_2374U_EQ_2374(...) \, +#define Z_IS_2374_EQ_2374U(...) \, +#define Z_IS_2374U_EQ_2374U(...) \, +#define Z_IS_2375_EQ_2375(...) \, +#define Z_IS_2375U_EQ_2375(...) \, +#define Z_IS_2375_EQ_2375U(...) \, +#define Z_IS_2375U_EQ_2375U(...) \, +#define Z_IS_2376_EQ_2376(...) \, +#define Z_IS_2376U_EQ_2376(...) \, +#define Z_IS_2376_EQ_2376U(...) \, +#define Z_IS_2376U_EQ_2376U(...) \, +#define Z_IS_2377_EQ_2377(...) \, +#define Z_IS_2377U_EQ_2377(...) \, +#define Z_IS_2377_EQ_2377U(...) \, +#define Z_IS_2377U_EQ_2377U(...) \, +#define Z_IS_2378_EQ_2378(...) \, +#define Z_IS_2378U_EQ_2378(...) \, +#define Z_IS_2378_EQ_2378U(...) \, +#define Z_IS_2378U_EQ_2378U(...) \, +#define Z_IS_2379_EQ_2379(...) \, +#define Z_IS_2379U_EQ_2379(...) \, +#define Z_IS_2379_EQ_2379U(...) \, +#define Z_IS_2379U_EQ_2379U(...) \, +#define Z_IS_2380_EQ_2380(...) \, +#define Z_IS_2380U_EQ_2380(...) \, +#define Z_IS_2380_EQ_2380U(...) \, +#define Z_IS_2380U_EQ_2380U(...) \, +#define Z_IS_2381_EQ_2381(...) \, +#define Z_IS_2381U_EQ_2381(...) \, +#define Z_IS_2381_EQ_2381U(...) \, +#define Z_IS_2381U_EQ_2381U(...) \, +#define Z_IS_2382_EQ_2382(...) \, +#define Z_IS_2382U_EQ_2382(...) \, +#define Z_IS_2382_EQ_2382U(...) \, +#define Z_IS_2382U_EQ_2382U(...) \, +#define Z_IS_2383_EQ_2383(...) \, +#define Z_IS_2383U_EQ_2383(...) \, +#define Z_IS_2383_EQ_2383U(...) \, +#define Z_IS_2383U_EQ_2383U(...) \, +#define Z_IS_2384_EQ_2384(...) \, +#define Z_IS_2384U_EQ_2384(...) \, +#define Z_IS_2384_EQ_2384U(...) \, +#define Z_IS_2384U_EQ_2384U(...) \, +#define Z_IS_2385_EQ_2385(...) \, +#define Z_IS_2385U_EQ_2385(...) \, +#define Z_IS_2385_EQ_2385U(...) \, +#define Z_IS_2385U_EQ_2385U(...) \, +#define Z_IS_2386_EQ_2386(...) \, +#define Z_IS_2386U_EQ_2386(...) \, +#define Z_IS_2386_EQ_2386U(...) \, +#define Z_IS_2386U_EQ_2386U(...) \, +#define Z_IS_2387_EQ_2387(...) \, +#define Z_IS_2387U_EQ_2387(...) \, +#define Z_IS_2387_EQ_2387U(...) \, +#define Z_IS_2387U_EQ_2387U(...) \, +#define Z_IS_2388_EQ_2388(...) \, +#define Z_IS_2388U_EQ_2388(...) \, +#define Z_IS_2388_EQ_2388U(...) \, +#define Z_IS_2388U_EQ_2388U(...) \, +#define Z_IS_2389_EQ_2389(...) \, +#define Z_IS_2389U_EQ_2389(...) \, +#define Z_IS_2389_EQ_2389U(...) \, +#define Z_IS_2389U_EQ_2389U(...) \, +#define Z_IS_2390_EQ_2390(...) \, +#define Z_IS_2390U_EQ_2390(...) \, +#define Z_IS_2390_EQ_2390U(...) \, +#define Z_IS_2390U_EQ_2390U(...) \, +#define Z_IS_2391_EQ_2391(...) \, +#define Z_IS_2391U_EQ_2391(...) \, +#define Z_IS_2391_EQ_2391U(...) \, +#define Z_IS_2391U_EQ_2391U(...) \, +#define Z_IS_2392_EQ_2392(...) \, +#define Z_IS_2392U_EQ_2392(...) \, +#define Z_IS_2392_EQ_2392U(...) \, +#define Z_IS_2392U_EQ_2392U(...) \, +#define Z_IS_2393_EQ_2393(...) \, +#define Z_IS_2393U_EQ_2393(...) \, +#define Z_IS_2393_EQ_2393U(...) \, +#define Z_IS_2393U_EQ_2393U(...) \, +#define Z_IS_2394_EQ_2394(...) \, +#define Z_IS_2394U_EQ_2394(...) \, +#define Z_IS_2394_EQ_2394U(...) \, +#define Z_IS_2394U_EQ_2394U(...) \, +#define Z_IS_2395_EQ_2395(...) \, +#define Z_IS_2395U_EQ_2395(...) \, +#define Z_IS_2395_EQ_2395U(...) \, +#define Z_IS_2395U_EQ_2395U(...) \, +#define Z_IS_2396_EQ_2396(...) \, +#define Z_IS_2396U_EQ_2396(...) \, +#define Z_IS_2396_EQ_2396U(...) \, +#define Z_IS_2396U_EQ_2396U(...) \, +#define Z_IS_2397_EQ_2397(...) \, +#define Z_IS_2397U_EQ_2397(...) \, +#define Z_IS_2397_EQ_2397U(...) \, +#define Z_IS_2397U_EQ_2397U(...) \, +#define Z_IS_2398_EQ_2398(...) \, +#define Z_IS_2398U_EQ_2398(...) \, +#define Z_IS_2398_EQ_2398U(...) \, +#define Z_IS_2398U_EQ_2398U(...) \, +#define Z_IS_2399_EQ_2399(...) \, +#define Z_IS_2399U_EQ_2399(...) \, +#define Z_IS_2399_EQ_2399U(...) \, +#define Z_IS_2399U_EQ_2399U(...) \, +#define Z_IS_2400_EQ_2400(...) \, +#define Z_IS_2400U_EQ_2400(...) \, +#define Z_IS_2400_EQ_2400U(...) \, +#define Z_IS_2400U_EQ_2400U(...) \, +#define Z_IS_2401_EQ_2401(...) \, +#define Z_IS_2401U_EQ_2401(...) \, +#define Z_IS_2401_EQ_2401U(...) \, +#define Z_IS_2401U_EQ_2401U(...) \, +#define Z_IS_2402_EQ_2402(...) \, +#define Z_IS_2402U_EQ_2402(...) \, +#define Z_IS_2402_EQ_2402U(...) \, +#define Z_IS_2402U_EQ_2402U(...) \, +#define Z_IS_2403_EQ_2403(...) \, +#define Z_IS_2403U_EQ_2403(...) \, +#define Z_IS_2403_EQ_2403U(...) \, +#define Z_IS_2403U_EQ_2403U(...) \, +#define Z_IS_2404_EQ_2404(...) \, +#define Z_IS_2404U_EQ_2404(...) \, +#define Z_IS_2404_EQ_2404U(...) \, +#define Z_IS_2404U_EQ_2404U(...) \, +#define Z_IS_2405_EQ_2405(...) \, +#define Z_IS_2405U_EQ_2405(...) \, +#define Z_IS_2405_EQ_2405U(...) \, +#define Z_IS_2405U_EQ_2405U(...) \, +#define Z_IS_2406_EQ_2406(...) \, +#define Z_IS_2406U_EQ_2406(...) \, +#define Z_IS_2406_EQ_2406U(...) \, +#define Z_IS_2406U_EQ_2406U(...) \, +#define Z_IS_2407_EQ_2407(...) \, +#define Z_IS_2407U_EQ_2407(...) \, +#define Z_IS_2407_EQ_2407U(...) \, +#define Z_IS_2407U_EQ_2407U(...) \, +#define Z_IS_2408_EQ_2408(...) \, +#define Z_IS_2408U_EQ_2408(...) \, +#define Z_IS_2408_EQ_2408U(...) \, +#define Z_IS_2408U_EQ_2408U(...) \, +#define Z_IS_2409_EQ_2409(...) \, +#define Z_IS_2409U_EQ_2409(...) \, +#define Z_IS_2409_EQ_2409U(...) \, +#define Z_IS_2409U_EQ_2409U(...) \, +#define Z_IS_2410_EQ_2410(...) \, +#define Z_IS_2410U_EQ_2410(...) \, +#define Z_IS_2410_EQ_2410U(...) \, +#define Z_IS_2410U_EQ_2410U(...) \, +#define Z_IS_2411_EQ_2411(...) \, +#define Z_IS_2411U_EQ_2411(...) \, +#define Z_IS_2411_EQ_2411U(...) \, +#define Z_IS_2411U_EQ_2411U(...) \, +#define Z_IS_2412_EQ_2412(...) \, +#define Z_IS_2412U_EQ_2412(...) \, +#define Z_IS_2412_EQ_2412U(...) \, +#define Z_IS_2412U_EQ_2412U(...) \, +#define Z_IS_2413_EQ_2413(...) \, +#define Z_IS_2413U_EQ_2413(...) \, +#define Z_IS_2413_EQ_2413U(...) \, +#define Z_IS_2413U_EQ_2413U(...) \, +#define Z_IS_2414_EQ_2414(...) \, +#define Z_IS_2414U_EQ_2414(...) \, +#define Z_IS_2414_EQ_2414U(...) \, +#define Z_IS_2414U_EQ_2414U(...) \, +#define Z_IS_2415_EQ_2415(...) \, +#define Z_IS_2415U_EQ_2415(...) \, +#define Z_IS_2415_EQ_2415U(...) \, +#define Z_IS_2415U_EQ_2415U(...) \, +#define Z_IS_2416_EQ_2416(...) \, +#define Z_IS_2416U_EQ_2416(...) \, +#define Z_IS_2416_EQ_2416U(...) \, +#define Z_IS_2416U_EQ_2416U(...) \, +#define Z_IS_2417_EQ_2417(...) \, +#define Z_IS_2417U_EQ_2417(...) \, +#define Z_IS_2417_EQ_2417U(...) \, +#define Z_IS_2417U_EQ_2417U(...) \, +#define Z_IS_2418_EQ_2418(...) \, +#define Z_IS_2418U_EQ_2418(...) \, +#define Z_IS_2418_EQ_2418U(...) \, +#define Z_IS_2418U_EQ_2418U(...) \, +#define Z_IS_2419_EQ_2419(...) \, +#define Z_IS_2419U_EQ_2419(...) \, +#define Z_IS_2419_EQ_2419U(...) \, +#define Z_IS_2419U_EQ_2419U(...) \, +#define Z_IS_2420_EQ_2420(...) \, +#define Z_IS_2420U_EQ_2420(...) \, +#define Z_IS_2420_EQ_2420U(...) \, +#define Z_IS_2420U_EQ_2420U(...) \, +#define Z_IS_2421_EQ_2421(...) \, +#define Z_IS_2421U_EQ_2421(...) \, +#define Z_IS_2421_EQ_2421U(...) \, +#define Z_IS_2421U_EQ_2421U(...) \, +#define Z_IS_2422_EQ_2422(...) \, +#define Z_IS_2422U_EQ_2422(...) \, +#define Z_IS_2422_EQ_2422U(...) \, +#define Z_IS_2422U_EQ_2422U(...) \, +#define Z_IS_2423_EQ_2423(...) \, +#define Z_IS_2423U_EQ_2423(...) \, +#define Z_IS_2423_EQ_2423U(...) \, +#define Z_IS_2423U_EQ_2423U(...) \, +#define Z_IS_2424_EQ_2424(...) \, +#define Z_IS_2424U_EQ_2424(...) \, +#define Z_IS_2424_EQ_2424U(...) \, +#define Z_IS_2424U_EQ_2424U(...) \, +#define Z_IS_2425_EQ_2425(...) \, +#define Z_IS_2425U_EQ_2425(...) \, +#define Z_IS_2425_EQ_2425U(...) \, +#define Z_IS_2425U_EQ_2425U(...) \, +#define Z_IS_2426_EQ_2426(...) \, +#define Z_IS_2426U_EQ_2426(...) \, +#define Z_IS_2426_EQ_2426U(...) \, +#define Z_IS_2426U_EQ_2426U(...) \, +#define Z_IS_2427_EQ_2427(...) \, +#define Z_IS_2427U_EQ_2427(...) \, +#define Z_IS_2427_EQ_2427U(...) \, +#define Z_IS_2427U_EQ_2427U(...) \, +#define Z_IS_2428_EQ_2428(...) \, +#define Z_IS_2428U_EQ_2428(...) \, +#define Z_IS_2428_EQ_2428U(...) \, +#define Z_IS_2428U_EQ_2428U(...) \, +#define Z_IS_2429_EQ_2429(...) \, +#define Z_IS_2429U_EQ_2429(...) \, +#define Z_IS_2429_EQ_2429U(...) \, +#define Z_IS_2429U_EQ_2429U(...) \, +#define Z_IS_2430_EQ_2430(...) \, +#define Z_IS_2430U_EQ_2430(...) \, +#define Z_IS_2430_EQ_2430U(...) \, +#define Z_IS_2430U_EQ_2430U(...) \, +#define Z_IS_2431_EQ_2431(...) \, +#define Z_IS_2431U_EQ_2431(...) \, +#define Z_IS_2431_EQ_2431U(...) \, +#define Z_IS_2431U_EQ_2431U(...) \, +#define Z_IS_2432_EQ_2432(...) \, +#define Z_IS_2432U_EQ_2432(...) \, +#define Z_IS_2432_EQ_2432U(...) \, +#define Z_IS_2432U_EQ_2432U(...) \, +#define Z_IS_2433_EQ_2433(...) \, +#define Z_IS_2433U_EQ_2433(...) \, +#define Z_IS_2433_EQ_2433U(...) \, +#define Z_IS_2433U_EQ_2433U(...) \, +#define Z_IS_2434_EQ_2434(...) \, +#define Z_IS_2434U_EQ_2434(...) \, +#define Z_IS_2434_EQ_2434U(...) \, +#define Z_IS_2434U_EQ_2434U(...) \, +#define Z_IS_2435_EQ_2435(...) \, +#define Z_IS_2435U_EQ_2435(...) \, +#define Z_IS_2435_EQ_2435U(...) \, +#define Z_IS_2435U_EQ_2435U(...) \, +#define Z_IS_2436_EQ_2436(...) \, +#define Z_IS_2436U_EQ_2436(...) \, +#define Z_IS_2436_EQ_2436U(...) \, +#define Z_IS_2436U_EQ_2436U(...) \, +#define Z_IS_2437_EQ_2437(...) \, +#define Z_IS_2437U_EQ_2437(...) \, +#define Z_IS_2437_EQ_2437U(...) \, +#define Z_IS_2437U_EQ_2437U(...) \, +#define Z_IS_2438_EQ_2438(...) \, +#define Z_IS_2438U_EQ_2438(...) \, +#define Z_IS_2438_EQ_2438U(...) \, +#define Z_IS_2438U_EQ_2438U(...) \, +#define Z_IS_2439_EQ_2439(...) \, +#define Z_IS_2439U_EQ_2439(...) \, +#define Z_IS_2439_EQ_2439U(...) \, +#define Z_IS_2439U_EQ_2439U(...) \, +#define Z_IS_2440_EQ_2440(...) \, +#define Z_IS_2440U_EQ_2440(...) \, +#define Z_IS_2440_EQ_2440U(...) \, +#define Z_IS_2440U_EQ_2440U(...) \, +#define Z_IS_2441_EQ_2441(...) \, +#define Z_IS_2441U_EQ_2441(...) \, +#define Z_IS_2441_EQ_2441U(...) \, +#define Z_IS_2441U_EQ_2441U(...) \, +#define Z_IS_2442_EQ_2442(...) \, +#define Z_IS_2442U_EQ_2442(...) \, +#define Z_IS_2442_EQ_2442U(...) \, +#define Z_IS_2442U_EQ_2442U(...) \, +#define Z_IS_2443_EQ_2443(...) \, +#define Z_IS_2443U_EQ_2443(...) \, +#define Z_IS_2443_EQ_2443U(...) \, +#define Z_IS_2443U_EQ_2443U(...) \, +#define Z_IS_2444_EQ_2444(...) \, +#define Z_IS_2444U_EQ_2444(...) \, +#define Z_IS_2444_EQ_2444U(...) \, +#define Z_IS_2444U_EQ_2444U(...) \, +#define Z_IS_2445_EQ_2445(...) \, +#define Z_IS_2445U_EQ_2445(...) \, +#define Z_IS_2445_EQ_2445U(...) \, +#define Z_IS_2445U_EQ_2445U(...) \, +#define Z_IS_2446_EQ_2446(...) \, +#define Z_IS_2446U_EQ_2446(...) \, +#define Z_IS_2446_EQ_2446U(...) \, +#define Z_IS_2446U_EQ_2446U(...) \, +#define Z_IS_2447_EQ_2447(...) \, +#define Z_IS_2447U_EQ_2447(...) \, +#define Z_IS_2447_EQ_2447U(...) \, +#define Z_IS_2447U_EQ_2447U(...) \, +#define Z_IS_2448_EQ_2448(...) \, +#define Z_IS_2448U_EQ_2448(...) \, +#define Z_IS_2448_EQ_2448U(...) \, +#define Z_IS_2448U_EQ_2448U(...) \, +#define Z_IS_2449_EQ_2449(...) \, +#define Z_IS_2449U_EQ_2449(...) \, +#define Z_IS_2449_EQ_2449U(...) \, +#define Z_IS_2449U_EQ_2449U(...) \, +#define Z_IS_2450_EQ_2450(...) \, +#define Z_IS_2450U_EQ_2450(...) \, +#define Z_IS_2450_EQ_2450U(...) \, +#define Z_IS_2450U_EQ_2450U(...) \, +#define Z_IS_2451_EQ_2451(...) \, +#define Z_IS_2451U_EQ_2451(...) \, +#define Z_IS_2451_EQ_2451U(...) \, +#define Z_IS_2451U_EQ_2451U(...) \, +#define Z_IS_2452_EQ_2452(...) \, +#define Z_IS_2452U_EQ_2452(...) \, +#define Z_IS_2452_EQ_2452U(...) \, +#define Z_IS_2452U_EQ_2452U(...) \, +#define Z_IS_2453_EQ_2453(...) \, +#define Z_IS_2453U_EQ_2453(...) \, +#define Z_IS_2453_EQ_2453U(...) \, +#define Z_IS_2453U_EQ_2453U(...) \, +#define Z_IS_2454_EQ_2454(...) \, +#define Z_IS_2454U_EQ_2454(...) \, +#define Z_IS_2454_EQ_2454U(...) \, +#define Z_IS_2454U_EQ_2454U(...) \, +#define Z_IS_2455_EQ_2455(...) \, +#define Z_IS_2455U_EQ_2455(...) \, +#define Z_IS_2455_EQ_2455U(...) \, +#define Z_IS_2455U_EQ_2455U(...) \, +#define Z_IS_2456_EQ_2456(...) \, +#define Z_IS_2456U_EQ_2456(...) \, +#define Z_IS_2456_EQ_2456U(...) \, +#define Z_IS_2456U_EQ_2456U(...) \, +#define Z_IS_2457_EQ_2457(...) \, +#define Z_IS_2457U_EQ_2457(...) \, +#define Z_IS_2457_EQ_2457U(...) \, +#define Z_IS_2457U_EQ_2457U(...) \, +#define Z_IS_2458_EQ_2458(...) \, +#define Z_IS_2458U_EQ_2458(...) \, +#define Z_IS_2458_EQ_2458U(...) \, +#define Z_IS_2458U_EQ_2458U(...) \, +#define Z_IS_2459_EQ_2459(...) \, +#define Z_IS_2459U_EQ_2459(...) \, +#define Z_IS_2459_EQ_2459U(...) \, +#define Z_IS_2459U_EQ_2459U(...) \, +#define Z_IS_2460_EQ_2460(...) \, +#define Z_IS_2460U_EQ_2460(...) \, +#define Z_IS_2460_EQ_2460U(...) \, +#define Z_IS_2460U_EQ_2460U(...) \, +#define Z_IS_2461_EQ_2461(...) \, +#define Z_IS_2461U_EQ_2461(...) \, +#define Z_IS_2461_EQ_2461U(...) \, +#define Z_IS_2461U_EQ_2461U(...) \, +#define Z_IS_2462_EQ_2462(...) \, +#define Z_IS_2462U_EQ_2462(...) \, +#define Z_IS_2462_EQ_2462U(...) \, +#define Z_IS_2462U_EQ_2462U(...) \, +#define Z_IS_2463_EQ_2463(...) \, +#define Z_IS_2463U_EQ_2463(...) \, +#define Z_IS_2463_EQ_2463U(...) \, +#define Z_IS_2463U_EQ_2463U(...) \, +#define Z_IS_2464_EQ_2464(...) \, +#define Z_IS_2464U_EQ_2464(...) \, +#define Z_IS_2464_EQ_2464U(...) \, +#define Z_IS_2464U_EQ_2464U(...) \, +#define Z_IS_2465_EQ_2465(...) \, +#define Z_IS_2465U_EQ_2465(...) \, +#define Z_IS_2465_EQ_2465U(...) \, +#define Z_IS_2465U_EQ_2465U(...) \, +#define Z_IS_2466_EQ_2466(...) \, +#define Z_IS_2466U_EQ_2466(...) \, +#define Z_IS_2466_EQ_2466U(...) \, +#define Z_IS_2466U_EQ_2466U(...) \, +#define Z_IS_2467_EQ_2467(...) \, +#define Z_IS_2467U_EQ_2467(...) \, +#define Z_IS_2467_EQ_2467U(...) \, +#define Z_IS_2467U_EQ_2467U(...) \, +#define Z_IS_2468_EQ_2468(...) \, +#define Z_IS_2468U_EQ_2468(...) \, +#define Z_IS_2468_EQ_2468U(...) \, +#define Z_IS_2468U_EQ_2468U(...) \, +#define Z_IS_2469_EQ_2469(...) \, +#define Z_IS_2469U_EQ_2469(...) \, +#define Z_IS_2469_EQ_2469U(...) \, +#define Z_IS_2469U_EQ_2469U(...) \, +#define Z_IS_2470_EQ_2470(...) \, +#define Z_IS_2470U_EQ_2470(...) \, +#define Z_IS_2470_EQ_2470U(...) \, +#define Z_IS_2470U_EQ_2470U(...) \, +#define Z_IS_2471_EQ_2471(...) \, +#define Z_IS_2471U_EQ_2471(...) \, +#define Z_IS_2471_EQ_2471U(...) \, +#define Z_IS_2471U_EQ_2471U(...) \, +#define Z_IS_2472_EQ_2472(...) \, +#define Z_IS_2472U_EQ_2472(...) \, +#define Z_IS_2472_EQ_2472U(...) \, +#define Z_IS_2472U_EQ_2472U(...) \, +#define Z_IS_2473_EQ_2473(...) \, +#define Z_IS_2473U_EQ_2473(...) \, +#define Z_IS_2473_EQ_2473U(...) \, +#define Z_IS_2473U_EQ_2473U(...) \, +#define Z_IS_2474_EQ_2474(...) \, +#define Z_IS_2474U_EQ_2474(...) \, +#define Z_IS_2474_EQ_2474U(...) \, +#define Z_IS_2474U_EQ_2474U(...) \, +#define Z_IS_2475_EQ_2475(...) \, +#define Z_IS_2475U_EQ_2475(...) \, +#define Z_IS_2475_EQ_2475U(...) \, +#define Z_IS_2475U_EQ_2475U(...) \, +#define Z_IS_2476_EQ_2476(...) \, +#define Z_IS_2476U_EQ_2476(...) \, +#define Z_IS_2476_EQ_2476U(...) \, +#define Z_IS_2476U_EQ_2476U(...) \, +#define Z_IS_2477_EQ_2477(...) \, +#define Z_IS_2477U_EQ_2477(...) \, +#define Z_IS_2477_EQ_2477U(...) \, +#define Z_IS_2477U_EQ_2477U(...) \, +#define Z_IS_2478_EQ_2478(...) \, +#define Z_IS_2478U_EQ_2478(...) \, +#define Z_IS_2478_EQ_2478U(...) \, +#define Z_IS_2478U_EQ_2478U(...) \, +#define Z_IS_2479_EQ_2479(...) \, +#define Z_IS_2479U_EQ_2479(...) \, +#define Z_IS_2479_EQ_2479U(...) \, +#define Z_IS_2479U_EQ_2479U(...) \, +#define Z_IS_2480_EQ_2480(...) \, +#define Z_IS_2480U_EQ_2480(...) \, +#define Z_IS_2480_EQ_2480U(...) \, +#define Z_IS_2480U_EQ_2480U(...) \, +#define Z_IS_2481_EQ_2481(...) \, +#define Z_IS_2481U_EQ_2481(...) \, +#define Z_IS_2481_EQ_2481U(...) \, +#define Z_IS_2481U_EQ_2481U(...) \, +#define Z_IS_2482_EQ_2482(...) \, +#define Z_IS_2482U_EQ_2482(...) \, +#define Z_IS_2482_EQ_2482U(...) \, +#define Z_IS_2482U_EQ_2482U(...) \, +#define Z_IS_2483_EQ_2483(...) \, +#define Z_IS_2483U_EQ_2483(...) \, +#define Z_IS_2483_EQ_2483U(...) \, +#define Z_IS_2483U_EQ_2483U(...) \, +#define Z_IS_2484_EQ_2484(...) \, +#define Z_IS_2484U_EQ_2484(...) \, +#define Z_IS_2484_EQ_2484U(...) \, +#define Z_IS_2484U_EQ_2484U(...) \, +#define Z_IS_2485_EQ_2485(...) \, +#define Z_IS_2485U_EQ_2485(...) \, +#define Z_IS_2485_EQ_2485U(...) \, +#define Z_IS_2485U_EQ_2485U(...) \, +#define Z_IS_2486_EQ_2486(...) \, +#define Z_IS_2486U_EQ_2486(...) \, +#define Z_IS_2486_EQ_2486U(...) \, +#define Z_IS_2486U_EQ_2486U(...) \, +#define Z_IS_2487_EQ_2487(...) \, +#define Z_IS_2487U_EQ_2487(...) \, +#define Z_IS_2487_EQ_2487U(...) \, +#define Z_IS_2487U_EQ_2487U(...) \, +#define Z_IS_2488_EQ_2488(...) \, +#define Z_IS_2488U_EQ_2488(...) \, +#define Z_IS_2488_EQ_2488U(...) \, +#define Z_IS_2488U_EQ_2488U(...) \, +#define Z_IS_2489_EQ_2489(...) \, +#define Z_IS_2489U_EQ_2489(...) \, +#define Z_IS_2489_EQ_2489U(...) \, +#define Z_IS_2489U_EQ_2489U(...) \, +#define Z_IS_2490_EQ_2490(...) \, +#define Z_IS_2490U_EQ_2490(...) \, +#define Z_IS_2490_EQ_2490U(...) \, +#define Z_IS_2490U_EQ_2490U(...) \, +#define Z_IS_2491_EQ_2491(...) \, +#define Z_IS_2491U_EQ_2491(...) \, +#define Z_IS_2491_EQ_2491U(...) \, +#define Z_IS_2491U_EQ_2491U(...) \, +#define Z_IS_2492_EQ_2492(...) \, +#define Z_IS_2492U_EQ_2492(...) \, +#define Z_IS_2492_EQ_2492U(...) \, +#define Z_IS_2492U_EQ_2492U(...) \, +#define Z_IS_2493_EQ_2493(...) \, +#define Z_IS_2493U_EQ_2493(...) \, +#define Z_IS_2493_EQ_2493U(...) \, +#define Z_IS_2493U_EQ_2493U(...) \, +#define Z_IS_2494_EQ_2494(...) \, +#define Z_IS_2494U_EQ_2494(...) \, +#define Z_IS_2494_EQ_2494U(...) \, +#define Z_IS_2494U_EQ_2494U(...) \, +#define Z_IS_2495_EQ_2495(...) \, +#define Z_IS_2495U_EQ_2495(...) \, +#define Z_IS_2495_EQ_2495U(...) \, +#define Z_IS_2495U_EQ_2495U(...) \, +#define Z_IS_2496_EQ_2496(...) \, +#define Z_IS_2496U_EQ_2496(...) \, +#define Z_IS_2496_EQ_2496U(...) \, +#define Z_IS_2496U_EQ_2496U(...) \, +#define Z_IS_2497_EQ_2497(...) \, +#define Z_IS_2497U_EQ_2497(...) \, +#define Z_IS_2497_EQ_2497U(...) \, +#define Z_IS_2497U_EQ_2497U(...) \, +#define Z_IS_2498_EQ_2498(...) \, +#define Z_IS_2498U_EQ_2498(...) \, +#define Z_IS_2498_EQ_2498U(...) \, +#define Z_IS_2498U_EQ_2498U(...) \, +#define Z_IS_2499_EQ_2499(...) \, +#define Z_IS_2499U_EQ_2499(...) \, +#define Z_IS_2499_EQ_2499U(...) \, +#define Z_IS_2499U_EQ_2499U(...) \, +#define Z_IS_2500_EQ_2500(...) \, +#define Z_IS_2500U_EQ_2500(...) \, +#define Z_IS_2500_EQ_2500U(...) \, +#define Z_IS_2500U_EQ_2500U(...) \, +#define Z_IS_2501_EQ_2501(...) \, +#define Z_IS_2501U_EQ_2501(...) \, +#define Z_IS_2501_EQ_2501U(...) \, +#define Z_IS_2501U_EQ_2501U(...) \, +#define Z_IS_2502_EQ_2502(...) \, +#define Z_IS_2502U_EQ_2502(...) \, +#define Z_IS_2502_EQ_2502U(...) \, +#define Z_IS_2502U_EQ_2502U(...) \, +#define Z_IS_2503_EQ_2503(...) \, +#define Z_IS_2503U_EQ_2503(...) \, +#define Z_IS_2503_EQ_2503U(...) \, +#define Z_IS_2503U_EQ_2503U(...) \, +#define Z_IS_2504_EQ_2504(...) \, +#define Z_IS_2504U_EQ_2504(...) \, +#define Z_IS_2504_EQ_2504U(...) \, +#define Z_IS_2504U_EQ_2504U(...) \, +#define Z_IS_2505_EQ_2505(...) \, +#define Z_IS_2505U_EQ_2505(...) \, +#define Z_IS_2505_EQ_2505U(...) \, +#define Z_IS_2505U_EQ_2505U(...) \, +#define Z_IS_2506_EQ_2506(...) \, +#define Z_IS_2506U_EQ_2506(...) \, +#define Z_IS_2506_EQ_2506U(...) \, +#define Z_IS_2506U_EQ_2506U(...) \, +#define Z_IS_2507_EQ_2507(...) \, +#define Z_IS_2507U_EQ_2507(...) \, +#define Z_IS_2507_EQ_2507U(...) \, +#define Z_IS_2507U_EQ_2507U(...) \, +#define Z_IS_2508_EQ_2508(...) \, +#define Z_IS_2508U_EQ_2508(...) \, +#define Z_IS_2508_EQ_2508U(...) \, +#define Z_IS_2508U_EQ_2508U(...) \, +#define Z_IS_2509_EQ_2509(...) \, +#define Z_IS_2509U_EQ_2509(...) \, +#define Z_IS_2509_EQ_2509U(...) \, +#define Z_IS_2509U_EQ_2509U(...) \, +#define Z_IS_2510_EQ_2510(...) \, +#define Z_IS_2510U_EQ_2510(...) \, +#define Z_IS_2510_EQ_2510U(...) \, +#define Z_IS_2510U_EQ_2510U(...) \, +#define Z_IS_2511_EQ_2511(...) \, +#define Z_IS_2511U_EQ_2511(...) \, +#define Z_IS_2511_EQ_2511U(...) \, +#define Z_IS_2511U_EQ_2511U(...) \, +#define Z_IS_2512_EQ_2512(...) \, +#define Z_IS_2512U_EQ_2512(...) \, +#define Z_IS_2512_EQ_2512U(...) \, +#define Z_IS_2512U_EQ_2512U(...) \, +#define Z_IS_2513_EQ_2513(...) \, +#define Z_IS_2513U_EQ_2513(...) \, +#define Z_IS_2513_EQ_2513U(...) \, +#define Z_IS_2513U_EQ_2513U(...) \, +#define Z_IS_2514_EQ_2514(...) \, +#define Z_IS_2514U_EQ_2514(...) \, +#define Z_IS_2514_EQ_2514U(...) \, +#define Z_IS_2514U_EQ_2514U(...) \, +#define Z_IS_2515_EQ_2515(...) \, +#define Z_IS_2515U_EQ_2515(...) \, +#define Z_IS_2515_EQ_2515U(...) \, +#define Z_IS_2515U_EQ_2515U(...) \, +#define Z_IS_2516_EQ_2516(...) \, +#define Z_IS_2516U_EQ_2516(...) \, +#define Z_IS_2516_EQ_2516U(...) \, +#define Z_IS_2516U_EQ_2516U(...) \, +#define Z_IS_2517_EQ_2517(...) \, +#define Z_IS_2517U_EQ_2517(...) \, +#define Z_IS_2517_EQ_2517U(...) \, +#define Z_IS_2517U_EQ_2517U(...) \, +#define Z_IS_2518_EQ_2518(...) \, +#define Z_IS_2518U_EQ_2518(...) \, +#define Z_IS_2518_EQ_2518U(...) \, +#define Z_IS_2518U_EQ_2518U(...) \, +#define Z_IS_2519_EQ_2519(...) \, +#define Z_IS_2519U_EQ_2519(...) \, +#define Z_IS_2519_EQ_2519U(...) \, +#define Z_IS_2519U_EQ_2519U(...) \, +#define Z_IS_2520_EQ_2520(...) \, +#define Z_IS_2520U_EQ_2520(...) \, +#define Z_IS_2520_EQ_2520U(...) \, +#define Z_IS_2520U_EQ_2520U(...) \, +#define Z_IS_2521_EQ_2521(...) \, +#define Z_IS_2521U_EQ_2521(...) \, +#define Z_IS_2521_EQ_2521U(...) \, +#define Z_IS_2521U_EQ_2521U(...) \, +#define Z_IS_2522_EQ_2522(...) \, +#define Z_IS_2522U_EQ_2522(...) \, +#define Z_IS_2522_EQ_2522U(...) \, +#define Z_IS_2522U_EQ_2522U(...) \, +#define Z_IS_2523_EQ_2523(...) \, +#define Z_IS_2523U_EQ_2523(...) \, +#define Z_IS_2523_EQ_2523U(...) \, +#define Z_IS_2523U_EQ_2523U(...) \, +#define Z_IS_2524_EQ_2524(...) \, +#define Z_IS_2524U_EQ_2524(...) \, +#define Z_IS_2524_EQ_2524U(...) \, +#define Z_IS_2524U_EQ_2524U(...) \, +#define Z_IS_2525_EQ_2525(...) \, +#define Z_IS_2525U_EQ_2525(...) \, +#define Z_IS_2525_EQ_2525U(...) \, +#define Z_IS_2525U_EQ_2525U(...) \, +#define Z_IS_2526_EQ_2526(...) \, +#define Z_IS_2526U_EQ_2526(...) \, +#define Z_IS_2526_EQ_2526U(...) \, +#define Z_IS_2526U_EQ_2526U(...) \, +#define Z_IS_2527_EQ_2527(...) \, +#define Z_IS_2527U_EQ_2527(...) \, +#define Z_IS_2527_EQ_2527U(...) \, +#define Z_IS_2527U_EQ_2527U(...) \, +#define Z_IS_2528_EQ_2528(...) \, +#define Z_IS_2528U_EQ_2528(...) \, +#define Z_IS_2528_EQ_2528U(...) \, +#define Z_IS_2528U_EQ_2528U(...) \, +#define Z_IS_2529_EQ_2529(...) \, +#define Z_IS_2529U_EQ_2529(...) \, +#define Z_IS_2529_EQ_2529U(...) \, +#define Z_IS_2529U_EQ_2529U(...) \, +#define Z_IS_2530_EQ_2530(...) \, +#define Z_IS_2530U_EQ_2530(...) \, +#define Z_IS_2530_EQ_2530U(...) \, +#define Z_IS_2530U_EQ_2530U(...) \, +#define Z_IS_2531_EQ_2531(...) \, +#define Z_IS_2531U_EQ_2531(...) \, +#define Z_IS_2531_EQ_2531U(...) \, +#define Z_IS_2531U_EQ_2531U(...) \, +#define Z_IS_2532_EQ_2532(...) \, +#define Z_IS_2532U_EQ_2532(...) \, +#define Z_IS_2532_EQ_2532U(...) \, +#define Z_IS_2532U_EQ_2532U(...) \, +#define Z_IS_2533_EQ_2533(...) \, +#define Z_IS_2533U_EQ_2533(...) \, +#define Z_IS_2533_EQ_2533U(...) \, +#define Z_IS_2533U_EQ_2533U(...) \, +#define Z_IS_2534_EQ_2534(...) \, +#define Z_IS_2534U_EQ_2534(...) \, +#define Z_IS_2534_EQ_2534U(...) \, +#define Z_IS_2534U_EQ_2534U(...) \, +#define Z_IS_2535_EQ_2535(...) \, +#define Z_IS_2535U_EQ_2535(...) \, +#define Z_IS_2535_EQ_2535U(...) \, +#define Z_IS_2535U_EQ_2535U(...) \, +#define Z_IS_2536_EQ_2536(...) \, +#define Z_IS_2536U_EQ_2536(...) \, +#define Z_IS_2536_EQ_2536U(...) \, +#define Z_IS_2536U_EQ_2536U(...) \, +#define Z_IS_2537_EQ_2537(...) \, +#define Z_IS_2537U_EQ_2537(...) \, +#define Z_IS_2537_EQ_2537U(...) \, +#define Z_IS_2537U_EQ_2537U(...) \, +#define Z_IS_2538_EQ_2538(...) \, +#define Z_IS_2538U_EQ_2538(...) \, +#define Z_IS_2538_EQ_2538U(...) \, +#define Z_IS_2538U_EQ_2538U(...) \, +#define Z_IS_2539_EQ_2539(...) \, +#define Z_IS_2539U_EQ_2539(...) \, +#define Z_IS_2539_EQ_2539U(...) \, +#define Z_IS_2539U_EQ_2539U(...) \, +#define Z_IS_2540_EQ_2540(...) \, +#define Z_IS_2540U_EQ_2540(...) \, +#define Z_IS_2540_EQ_2540U(...) \, +#define Z_IS_2540U_EQ_2540U(...) \, +#define Z_IS_2541_EQ_2541(...) \, +#define Z_IS_2541U_EQ_2541(...) \, +#define Z_IS_2541_EQ_2541U(...) \, +#define Z_IS_2541U_EQ_2541U(...) \, +#define Z_IS_2542_EQ_2542(...) \, +#define Z_IS_2542U_EQ_2542(...) \, +#define Z_IS_2542_EQ_2542U(...) \, +#define Z_IS_2542U_EQ_2542U(...) \, +#define Z_IS_2543_EQ_2543(...) \, +#define Z_IS_2543U_EQ_2543(...) \, +#define Z_IS_2543_EQ_2543U(...) \, +#define Z_IS_2543U_EQ_2543U(...) \, +#define Z_IS_2544_EQ_2544(...) \, +#define Z_IS_2544U_EQ_2544(...) \, +#define Z_IS_2544_EQ_2544U(...) \, +#define Z_IS_2544U_EQ_2544U(...) \, +#define Z_IS_2545_EQ_2545(...) \, +#define Z_IS_2545U_EQ_2545(...) \, +#define Z_IS_2545_EQ_2545U(...) \, +#define Z_IS_2545U_EQ_2545U(...) \, +#define Z_IS_2546_EQ_2546(...) \, +#define Z_IS_2546U_EQ_2546(...) \, +#define Z_IS_2546_EQ_2546U(...) \, +#define Z_IS_2546U_EQ_2546U(...) \, +#define Z_IS_2547_EQ_2547(...) \, +#define Z_IS_2547U_EQ_2547(...) \, +#define Z_IS_2547_EQ_2547U(...) \, +#define Z_IS_2547U_EQ_2547U(...) \, +#define Z_IS_2548_EQ_2548(...) \, +#define Z_IS_2548U_EQ_2548(...) \, +#define Z_IS_2548_EQ_2548U(...) \, +#define Z_IS_2548U_EQ_2548U(...) \, +#define Z_IS_2549_EQ_2549(...) \, +#define Z_IS_2549U_EQ_2549(...) \, +#define Z_IS_2549_EQ_2549U(...) \, +#define Z_IS_2549U_EQ_2549U(...) \, +#define Z_IS_2550_EQ_2550(...) \, +#define Z_IS_2550U_EQ_2550(...) \, +#define Z_IS_2550_EQ_2550U(...) \, +#define Z_IS_2550U_EQ_2550U(...) \, +#define Z_IS_2551_EQ_2551(...) \, +#define Z_IS_2551U_EQ_2551(...) \, +#define Z_IS_2551_EQ_2551U(...) \, +#define Z_IS_2551U_EQ_2551U(...) \, +#define Z_IS_2552_EQ_2552(...) \, +#define Z_IS_2552U_EQ_2552(...) \, +#define Z_IS_2552_EQ_2552U(...) \, +#define Z_IS_2552U_EQ_2552U(...) \, +#define Z_IS_2553_EQ_2553(...) \, +#define Z_IS_2553U_EQ_2553(...) \, +#define Z_IS_2553_EQ_2553U(...) \, +#define Z_IS_2553U_EQ_2553U(...) \, +#define Z_IS_2554_EQ_2554(...) \, +#define Z_IS_2554U_EQ_2554(...) \, +#define Z_IS_2554_EQ_2554U(...) \, +#define Z_IS_2554U_EQ_2554U(...) \, +#define Z_IS_2555_EQ_2555(...) \, +#define Z_IS_2555U_EQ_2555(...) \, +#define Z_IS_2555_EQ_2555U(...) \, +#define Z_IS_2555U_EQ_2555U(...) \, +#define Z_IS_2556_EQ_2556(...) \, +#define Z_IS_2556U_EQ_2556(...) \, +#define Z_IS_2556_EQ_2556U(...) \, +#define Z_IS_2556U_EQ_2556U(...) \, +#define Z_IS_2557_EQ_2557(...) \, +#define Z_IS_2557U_EQ_2557(...) \, +#define Z_IS_2557_EQ_2557U(...) \, +#define Z_IS_2557U_EQ_2557U(...) \, +#define Z_IS_2558_EQ_2558(...) \, +#define Z_IS_2558U_EQ_2558(...) \, +#define Z_IS_2558_EQ_2558U(...) \, +#define Z_IS_2558U_EQ_2558U(...) \, +#define Z_IS_2559_EQ_2559(...) \, +#define Z_IS_2559U_EQ_2559(...) \, +#define Z_IS_2559_EQ_2559U(...) \, +#define Z_IS_2559U_EQ_2559U(...) \, +#define Z_IS_2560_EQ_2560(...) \, +#define Z_IS_2560U_EQ_2560(...) \, +#define Z_IS_2560_EQ_2560U(...) \, +#define Z_IS_2560U_EQ_2560U(...) \, +#define Z_IS_2561_EQ_2561(...) \, +#define Z_IS_2561U_EQ_2561(...) \, +#define Z_IS_2561_EQ_2561U(...) \, +#define Z_IS_2561U_EQ_2561U(...) \, +#define Z_IS_2562_EQ_2562(...) \, +#define Z_IS_2562U_EQ_2562(...) \, +#define Z_IS_2562_EQ_2562U(...) \, +#define Z_IS_2562U_EQ_2562U(...) \, +#define Z_IS_2563_EQ_2563(...) \, +#define Z_IS_2563U_EQ_2563(...) \, +#define Z_IS_2563_EQ_2563U(...) \, +#define Z_IS_2563U_EQ_2563U(...) \, +#define Z_IS_2564_EQ_2564(...) \, +#define Z_IS_2564U_EQ_2564(...) \, +#define Z_IS_2564_EQ_2564U(...) \, +#define Z_IS_2564U_EQ_2564U(...) \, +#define Z_IS_2565_EQ_2565(...) \, +#define Z_IS_2565U_EQ_2565(...) \, +#define Z_IS_2565_EQ_2565U(...) \, +#define Z_IS_2565U_EQ_2565U(...) \, +#define Z_IS_2566_EQ_2566(...) \, +#define Z_IS_2566U_EQ_2566(...) \, +#define Z_IS_2566_EQ_2566U(...) \, +#define Z_IS_2566U_EQ_2566U(...) \, +#define Z_IS_2567_EQ_2567(...) \, +#define Z_IS_2567U_EQ_2567(...) \, +#define Z_IS_2567_EQ_2567U(...) \, +#define Z_IS_2567U_EQ_2567U(...) \, +#define Z_IS_2568_EQ_2568(...) \, +#define Z_IS_2568U_EQ_2568(...) \, +#define Z_IS_2568_EQ_2568U(...) \, +#define Z_IS_2568U_EQ_2568U(...) \, +#define Z_IS_2569_EQ_2569(...) \, +#define Z_IS_2569U_EQ_2569(...) \, +#define Z_IS_2569_EQ_2569U(...) \, +#define Z_IS_2569U_EQ_2569U(...) \, +#define Z_IS_2570_EQ_2570(...) \, +#define Z_IS_2570U_EQ_2570(...) \, +#define Z_IS_2570_EQ_2570U(...) \, +#define Z_IS_2570U_EQ_2570U(...) \, +#define Z_IS_2571_EQ_2571(...) \, +#define Z_IS_2571U_EQ_2571(...) \, +#define Z_IS_2571_EQ_2571U(...) \, +#define Z_IS_2571U_EQ_2571U(...) \, +#define Z_IS_2572_EQ_2572(...) \, +#define Z_IS_2572U_EQ_2572(...) \, +#define Z_IS_2572_EQ_2572U(...) \, +#define Z_IS_2572U_EQ_2572U(...) \, +#define Z_IS_2573_EQ_2573(...) \, +#define Z_IS_2573U_EQ_2573(...) \, +#define Z_IS_2573_EQ_2573U(...) \, +#define Z_IS_2573U_EQ_2573U(...) \, +#define Z_IS_2574_EQ_2574(...) \, +#define Z_IS_2574U_EQ_2574(...) \, +#define Z_IS_2574_EQ_2574U(...) \, +#define Z_IS_2574U_EQ_2574U(...) \, +#define Z_IS_2575_EQ_2575(...) \, +#define Z_IS_2575U_EQ_2575(...) \, +#define Z_IS_2575_EQ_2575U(...) \, +#define Z_IS_2575U_EQ_2575U(...) \, +#define Z_IS_2576_EQ_2576(...) \, +#define Z_IS_2576U_EQ_2576(...) \, +#define Z_IS_2576_EQ_2576U(...) \, +#define Z_IS_2576U_EQ_2576U(...) \, +#define Z_IS_2577_EQ_2577(...) \, +#define Z_IS_2577U_EQ_2577(...) \, +#define Z_IS_2577_EQ_2577U(...) \, +#define Z_IS_2577U_EQ_2577U(...) \, +#define Z_IS_2578_EQ_2578(...) \, +#define Z_IS_2578U_EQ_2578(...) \, +#define Z_IS_2578_EQ_2578U(...) \, +#define Z_IS_2578U_EQ_2578U(...) \, +#define Z_IS_2579_EQ_2579(...) \, +#define Z_IS_2579U_EQ_2579(...) \, +#define Z_IS_2579_EQ_2579U(...) \, +#define Z_IS_2579U_EQ_2579U(...) \, +#define Z_IS_2580_EQ_2580(...) \, +#define Z_IS_2580U_EQ_2580(...) \, +#define Z_IS_2580_EQ_2580U(...) \, +#define Z_IS_2580U_EQ_2580U(...) \, +#define Z_IS_2581_EQ_2581(...) \, +#define Z_IS_2581U_EQ_2581(...) \, +#define Z_IS_2581_EQ_2581U(...) \, +#define Z_IS_2581U_EQ_2581U(...) \, +#define Z_IS_2582_EQ_2582(...) \, +#define Z_IS_2582U_EQ_2582(...) \, +#define Z_IS_2582_EQ_2582U(...) \, +#define Z_IS_2582U_EQ_2582U(...) \, +#define Z_IS_2583_EQ_2583(...) \, +#define Z_IS_2583U_EQ_2583(...) \, +#define Z_IS_2583_EQ_2583U(...) \, +#define Z_IS_2583U_EQ_2583U(...) \, +#define Z_IS_2584_EQ_2584(...) \, +#define Z_IS_2584U_EQ_2584(...) \, +#define Z_IS_2584_EQ_2584U(...) \, +#define Z_IS_2584U_EQ_2584U(...) \, +#define Z_IS_2585_EQ_2585(...) \, +#define Z_IS_2585U_EQ_2585(...) \, +#define Z_IS_2585_EQ_2585U(...) \, +#define Z_IS_2585U_EQ_2585U(...) \, +#define Z_IS_2586_EQ_2586(...) \, +#define Z_IS_2586U_EQ_2586(...) \, +#define Z_IS_2586_EQ_2586U(...) \, +#define Z_IS_2586U_EQ_2586U(...) \, +#define Z_IS_2587_EQ_2587(...) \, +#define Z_IS_2587U_EQ_2587(...) \, +#define Z_IS_2587_EQ_2587U(...) \, +#define Z_IS_2587U_EQ_2587U(...) \, +#define Z_IS_2588_EQ_2588(...) \, +#define Z_IS_2588U_EQ_2588(...) \, +#define Z_IS_2588_EQ_2588U(...) \, +#define Z_IS_2588U_EQ_2588U(...) \, +#define Z_IS_2589_EQ_2589(...) \, +#define Z_IS_2589U_EQ_2589(...) \, +#define Z_IS_2589_EQ_2589U(...) \, +#define Z_IS_2589U_EQ_2589U(...) \, +#define Z_IS_2590_EQ_2590(...) \, +#define Z_IS_2590U_EQ_2590(...) \, +#define Z_IS_2590_EQ_2590U(...) \, +#define Z_IS_2590U_EQ_2590U(...) \, +#define Z_IS_2591_EQ_2591(...) \, +#define Z_IS_2591U_EQ_2591(...) \, +#define Z_IS_2591_EQ_2591U(...) \, +#define Z_IS_2591U_EQ_2591U(...) \, +#define Z_IS_2592_EQ_2592(...) \, +#define Z_IS_2592U_EQ_2592(...) \, +#define Z_IS_2592_EQ_2592U(...) \, +#define Z_IS_2592U_EQ_2592U(...) \, +#define Z_IS_2593_EQ_2593(...) \, +#define Z_IS_2593U_EQ_2593(...) \, +#define Z_IS_2593_EQ_2593U(...) \, +#define Z_IS_2593U_EQ_2593U(...) \, +#define Z_IS_2594_EQ_2594(...) \, +#define Z_IS_2594U_EQ_2594(...) \, +#define Z_IS_2594_EQ_2594U(...) \, +#define Z_IS_2594U_EQ_2594U(...) \, +#define Z_IS_2595_EQ_2595(...) \, +#define Z_IS_2595U_EQ_2595(...) \, +#define Z_IS_2595_EQ_2595U(...) \, +#define Z_IS_2595U_EQ_2595U(...) \, +#define Z_IS_2596_EQ_2596(...) \, +#define Z_IS_2596U_EQ_2596(...) \, +#define Z_IS_2596_EQ_2596U(...) \, +#define Z_IS_2596U_EQ_2596U(...) \, +#define Z_IS_2597_EQ_2597(...) \, +#define Z_IS_2597U_EQ_2597(...) \, +#define Z_IS_2597_EQ_2597U(...) \, +#define Z_IS_2597U_EQ_2597U(...) \, +#define Z_IS_2598_EQ_2598(...) \, +#define Z_IS_2598U_EQ_2598(...) \, +#define Z_IS_2598_EQ_2598U(...) \, +#define Z_IS_2598U_EQ_2598U(...) \, +#define Z_IS_2599_EQ_2599(...) \, +#define Z_IS_2599U_EQ_2599(...) \, +#define Z_IS_2599_EQ_2599U(...) \, +#define Z_IS_2599U_EQ_2599U(...) \, +#define Z_IS_2600_EQ_2600(...) \, +#define Z_IS_2600U_EQ_2600(...) \, +#define Z_IS_2600_EQ_2600U(...) \, +#define Z_IS_2600U_EQ_2600U(...) \, +#define Z_IS_2601_EQ_2601(...) \, +#define Z_IS_2601U_EQ_2601(...) \, +#define Z_IS_2601_EQ_2601U(...) \, +#define Z_IS_2601U_EQ_2601U(...) \, +#define Z_IS_2602_EQ_2602(...) \, +#define Z_IS_2602U_EQ_2602(...) \, +#define Z_IS_2602_EQ_2602U(...) \, +#define Z_IS_2602U_EQ_2602U(...) \, +#define Z_IS_2603_EQ_2603(...) \, +#define Z_IS_2603U_EQ_2603(...) \, +#define Z_IS_2603_EQ_2603U(...) \, +#define Z_IS_2603U_EQ_2603U(...) \, +#define Z_IS_2604_EQ_2604(...) \, +#define Z_IS_2604U_EQ_2604(...) \, +#define Z_IS_2604_EQ_2604U(...) \, +#define Z_IS_2604U_EQ_2604U(...) \, +#define Z_IS_2605_EQ_2605(...) \, +#define Z_IS_2605U_EQ_2605(...) \, +#define Z_IS_2605_EQ_2605U(...) \, +#define Z_IS_2605U_EQ_2605U(...) \, +#define Z_IS_2606_EQ_2606(...) \, +#define Z_IS_2606U_EQ_2606(...) \, +#define Z_IS_2606_EQ_2606U(...) \, +#define Z_IS_2606U_EQ_2606U(...) \, +#define Z_IS_2607_EQ_2607(...) \, +#define Z_IS_2607U_EQ_2607(...) \, +#define Z_IS_2607_EQ_2607U(...) \, +#define Z_IS_2607U_EQ_2607U(...) \, +#define Z_IS_2608_EQ_2608(...) \, +#define Z_IS_2608U_EQ_2608(...) \, +#define Z_IS_2608_EQ_2608U(...) \, +#define Z_IS_2608U_EQ_2608U(...) \, +#define Z_IS_2609_EQ_2609(...) \, +#define Z_IS_2609U_EQ_2609(...) \, +#define Z_IS_2609_EQ_2609U(...) \, +#define Z_IS_2609U_EQ_2609U(...) \, +#define Z_IS_2610_EQ_2610(...) \, +#define Z_IS_2610U_EQ_2610(...) \, +#define Z_IS_2610_EQ_2610U(...) \, +#define Z_IS_2610U_EQ_2610U(...) \, +#define Z_IS_2611_EQ_2611(...) \, +#define Z_IS_2611U_EQ_2611(...) \, +#define Z_IS_2611_EQ_2611U(...) \, +#define Z_IS_2611U_EQ_2611U(...) \, +#define Z_IS_2612_EQ_2612(...) \, +#define Z_IS_2612U_EQ_2612(...) \, +#define Z_IS_2612_EQ_2612U(...) \, +#define Z_IS_2612U_EQ_2612U(...) \, +#define Z_IS_2613_EQ_2613(...) \, +#define Z_IS_2613U_EQ_2613(...) \, +#define Z_IS_2613_EQ_2613U(...) \, +#define Z_IS_2613U_EQ_2613U(...) \, +#define Z_IS_2614_EQ_2614(...) \, +#define Z_IS_2614U_EQ_2614(...) \, +#define Z_IS_2614_EQ_2614U(...) \, +#define Z_IS_2614U_EQ_2614U(...) \, +#define Z_IS_2615_EQ_2615(...) \, +#define Z_IS_2615U_EQ_2615(...) \, +#define Z_IS_2615_EQ_2615U(...) \, +#define Z_IS_2615U_EQ_2615U(...) \, +#define Z_IS_2616_EQ_2616(...) \, +#define Z_IS_2616U_EQ_2616(...) \, +#define Z_IS_2616_EQ_2616U(...) \, +#define Z_IS_2616U_EQ_2616U(...) \, +#define Z_IS_2617_EQ_2617(...) \, +#define Z_IS_2617U_EQ_2617(...) \, +#define Z_IS_2617_EQ_2617U(...) \, +#define Z_IS_2617U_EQ_2617U(...) \, +#define Z_IS_2618_EQ_2618(...) \, +#define Z_IS_2618U_EQ_2618(...) \, +#define Z_IS_2618_EQ_2618U(...) \, +#define Z_IS_2618U_EQ_2618U(...) \, +#define Z_IS_2619_EQ_2619(...) \, +#define Z_IS_2619U_EQ_2619(...) \, +#define Z_IS_2619_EQ_2619U(...) \, +#define Z_IS_2619U_EQ_2619U(...) \, +#define Z_IS_2620_EQ_2620(...) \, +#define Z_IS_2620U_EQ_2620(...) \, +#define Z_IS_2620_EQ_2620U(...) \, +#define Z_IS_2620U_EQ_2620U(...) \, +#define Z_IS_2621_EQ_2621(...) \, +#define Z_IS_2621U_EQ_2621(...) \, +#define Z_IS_2621_EQ_2621U(...) \, +#define Z_IS_2621U_EQ_2621U(...) \, +#define Z_IS_2622_EQ_2622(...) \, +#define Z_IS_2622U_EQ_2622(...) \, +#define Z_IS_2622_EQ_2622U(...) \, +#define Z_IS_2622U_EQ_2622U(...) \, +#define Z_IS_2623_EQ_2623(...) \, +#define Z_IS_2623U_EQ_2623(...) \, +#define Z_IS_2623_EQ_2623U(...) \, +#define Z_IS_2623U_EQ_2623U(...) \, +#define Z_IS_2624_EQ_2624(...) \, +#define Z_IS_2624U_EQ_2624(...) \, +#define Z_IS_2624_EQ_2624U(...) \, +#define Z_IS_2624U_EQ_2624U(...) \, +#define Z_IS_2625_EQ_2625(...) \, +#define Z_IS_2625U_EQ_2625(...) \, +#define Z_IS_2625_EQ_2625U(...) \, +#define Z_IS_2625U_EQ_2625U(...) \, +#define Z_IS_2626_EQ_2626(...) \, +#define Z_IS_2626U_EQ_2626(...) \, +#define Z_IS_2626_EQ_2626U(...) \, +#define Z_IS_2626U_EQ_2626U(...) \, +#define Z_IS_2627_EQ_2627(...) \, +#define Z_IS_2627U_EQ_2627(...) \, +#define Z_IS_2627_EQ_2627U(...) \, +#define Z_IS_2627U_EQ_2627U(...) \, +#define Z_IS_2628_EQ_2628(...) \, +#define Z_IS_2628U_EQ_2628(...) \, +#define Z_IS_2628_EQ_2628U(...) \, +#define Z_IS_2628U_EQ_2628U(...) \, +#define Z_IS_2629_EQ_2629(...) \, +#define Z_IS_2629U_EQ_2629(...) \, +#define Z_IS_2629_EQ_2629U(...) \, +#define Z_IS_2629U_EQ_2629U(...) \, +#define Z_IS_2630_EQ_2630(...) \, +#define Z_IS_2630U_EQ_2630(...) \, +#define Z_IS_2630_EQ_2630U(...) \, +#define Z_IS_2630U_EQ_2630U(...) \, +#define Z_IS_2631_EQ_2631(...) \, +#define Z_IS_2631U_EQ_2631(...) \, +#define Z_IS_2631_EQ_2631U(...) \, +#define Z_IS_2631U_EQ_2631U(...) \, +#define Z_IS_2632_EQ_2632(...) \, +#define Z_IS_2632U_EQ_2632(...) \, +#define Z_IS_2632_EQ_2632U(...) \, +#define Z_IS_2632U_EQ_2632U(...) \, +#define Z_IS_2633_EQ_2633(...) \, +#define Z_IS_2633U_EQ_2633(...) \, +#define Z_IS_2633_EQ_2633U(...) \, +#define Z_IS_2633U_EQ_2633U(...) \, +#define Z_IS_2634_EQ_2634(...) \, +#define Z_IS_2634U_EQ_2634(...) \, +#define Z_IS_2634_EQ_2634U(...) \, +#define Z_IS_2634U_EQ_2634U(...) \, +#define Z_IS_2635_EQ_2635(...) \, +#define Z_IS_2635U_EQ_2635(...) \, +#define Z_IS_2635_EQ_2635U(...) \, +#define Z_IS_2635U_EQ_2635U(...) \, +#define Z_IS_2636_EQ_2636(...) \, +#define Z_IS_2636U_EQ_2636(...) \, +#define Z_IS_2636_EQ_2636U(...) \, +#define Z_IS_2636U_EQ_2636U(...) \, +#define Z_IS_2637_EQ_2637(...) \, +#define Z_IS_2637U_EQ_2637(...) \, +#define Z_IS_2637_EQ_2637U(...) \, +#define Z_IS_2637U_EQ_2637U(...) \, +#define Z_IS_2638_EQ_2638(...) \, +#define Z_IS_2638U_EQ_2638(...) \, +#define Z_IS_2638_EQ_2638U(...) \, +#define Z_IS_2638U_EQ_2638U(...) \, +#define Z_IS_2639_EQ_2639(...) \, +#define Z_IS_2639U_EQ_2639(...) \, +#define Z_IS_2639_EQ_2639U(...) \, +#define Z_IS_2639U_EQ_2639U(...) \, +#define Z_IS_2640_EQ_2640(...) \, +#define Z_IS_2640U_EQ_2640(...) \, +#define Z_IS_2640_EQ_2640U(...) \, +#define Z_IS_2640U_EQ_2640U(...) \, +#define Z_IS_2641_EQ_2641(...) \, +#define Z_IS_2641U_EQ_2641(...) \, +#define Z_IS_2641_EQ_2641U(...) \, +#define Z_IS_2641U_EQ_2641U(...) \, +#define Z_IS_2642_EQ_2642(...) \, +#define Z_IS_2642U_EQ_2642(...) \, +#define Z_IS_2642_EQ_2642U(...) \, +#define Z_IS_2642U_EQ_2642U(...) \, +#define Z_IS_2643_EQ_2643(...) \, +#define Z_IS_2643U_EQ_2643(...) \, +#define Z_IS_2643_EQ_2643U(...) \, +#define Z_IS_2643U_EQ_2643U(...) \, +#define Z_IS_2644_EQ_2644(...) \, +#define Z_IS_2644U_EQ_2644(...) \, +#define Z_IS_2644_EQ_2644U(...) \, +#define Z_IS_2644U_EQ_2644U(...) \, +#define Z_IS_2645_EQ_2645(...) \, +#define Z_IS_2645U_EQ_2645(...) \, +#define Z_IS_2645_EQ_2645U(...) \, +#define Z_IS_2645U_EQ_2645U(...) \, +#define Z_IS_2646_EQ_2646(...) \, +#define Z_IS_2646U_EQ_2646(...) \, +#define Z_IS_2646_EQ_2646U(...) \, +#define Z_IS_2646U_EQ_2646U(...) \, +#define Z_IS_2647_EQ_2647(...) \, +#define Z_IS_2647U_EQ_2647(...) \, +#define Z_IS_2647_EQ_2647U(...) \, +#define Z_IS_2647U_EQ_2647U(...) \, +#define Z_IS_2648_EQ_2648(...) \, +#define Z_IS_2648U_EQ_2648(...) \, +#define Z_IS_2648_EQ_2648U(...) \, +#define Z_IS_2648U_EQ_2648U(...) \, +#define Z_IS_2649_EQ_2649(...) \, +#define Z_IS_2649U_EQ_2649(...) \, +#define Z_IS_2649_EQ_2649U(...) \, +#define Z_IS_2649U_EQ_2649U(...) \, +#define Z_IS_2650_EQ_2650(...) \, +#define Z_IS_2650U_EQ_2650(...) \, +#define Z_IS_2650_EQ_2650U(...) \, +#define Z_IS_2650U_EQ_2650U(...) \, +#define Z_IS_2651_EQ_2651(...) \, +#define Z_IS_2651U_EQ_2651(...) \, +#define Z_IS_2651_EQ_2651U(...) \, +#define Z_IS_2651U_EQ_2651U(...) \, +#define Z_IS_2652_EQ_2652(...) \, +#define Z_IS_2652U_EQ_2652(...) \, +#define Z_IS_2652_EQ_2652U(...) \, +#define Z_IS_2652U_EQ_2652U(...) \, +#define Z_IS_2653_EQ_2653(...) \, +#define Z_IS_2653U_EQ_2653(...) \, +#define Z_IS_2653_EQ_2653U(...) \, +#define Z_IS_2653U_EQ_2653U(...) \, +#define Z_IS_2654_EQ_2654(...) \, +#define Z_IS_2654U_EQ_2654(...) \, +#define Z_IS_2654_EQ_2654U(...) \, +#define Z_IS_2654U_EQ_2654U(...) \, +#define Z_IS_2655_EQ_2655(...) \, +#define Z_IS_2655U_EQ_2655(...) \, +#define Z_IS_2655_EQ_2655U(...) \, +#define Z_IS_2655U_EQ_2655U(...) \, +#define Z_IS_2656_EQ_2656(...) \, +#define Z_IS_2656U_EQ_2656(...) \, +#define Z_IS_2656_EQ_2656U(...) \, +#define Z_IS_2656U_EQ_2656U(...) \, +#define Z_IS_2657_EQ_2657(...) \, +#define Z_IS_2657U_EQ_2657(...) \, +#define Z_IS_2657_EQ_2657U(...) \, +#define Z_IS_2657U_EQ_2657U(...) \, +#define Z_IS_2658_EQ_2658(...) \, +#define Z_IS_2658U_EQ_2658(...) \, +#define Z_IS_2658_EQ_2658U(...) \, +#define Z_IS_2658U_EQ_2658U(...) \, +#define Z_IS_2659_EQ_2659(...) \, +#define Z_IS_2659U_EQ_2659(...) \, +#define Z_IS_2659_EQ_2659U(...) \, +#define Z_IS_2659U_EQ_2659U(...) \, +#define Z_IS_2660_EQ_2660(...) \, +#define Z_IS_2660U_EQ_2660(...) \, +#define Z_IS_2660_EQ_2660U(...) \, +#define Z_IS_2660U_EQ_2660U(...) \, +#define Z_IS_2661_EQ_2661(...) \, +#define Z_IS_2661U_EQ_2661(...) \, +#define Z_IS_2661_EQ_2661U(...) \, +#define Z_IS_2661U_EQ_2661U(...) \, +#define Z_IS_2662_EQ_2662(...) \, +#define Z_IS_2662U_EQ_2662(...) \, +#define Z_IS_2662_EQ_2662U(...) \, +#define Z_IS_2662U_EQ_2662U(...) \, +#define Z_IS_2663_EQ_2663(...) \, +#define Z_IS_2663U_EQ_2663(...) \, +#define Z_IS_2663_EQ_2663U(...) \, +#define Z_IS_2663U_EQ_2663U(...) \, +#define Z_IS_2664_EQ_2664(...) \, +#define Z_IS_2664U_EQ_2664(...) \, +#define Z_IS_2664_EQ_2664U(...) \, +#define Z_IS_2664U_EQ_2664U(...) \, +#define Z_IS_2665_EQ_2665(...) \, +#define Z_IS_2665U_EQ_2665(...) \, +#define Z_IS_2665_EQ_2665U(...) \, +#define Z_IS_2665U_EQ_2665U(...) \, +#define Z_IS_2666_EQ_2666(...) \, +#define Z_IS_2666U_EQ_2666(...) \, +#define Z_IS_2666_EQ_2666U(...) \, +#define Z_IS_2666U_EQ_2666U(...) \, +#define Z_IS_2667_EQ_2667(...) \, +#define Z_IS_2667U_EQ_2667(...) \, +#define Z_IS_2667_EQ_2667U(...) \, +#define Z_IS_2667U_EQ_2667U(...) \, +#define Z_IS_2668_EQ_2668(...) \, +#define Z_IS_2668U_EQ_2668(...) \, +#define Z_IS_2668_EQ_2668U(...) \, +#define Z_IS_2668U_EQ_2668U(...) \, +#define Z_IS_2669_EQ_2669(...) \, +#define Z_IS_2669U_EQ_2669(...) \, +#define Z_IS_2669_EQ_2669U(...) \, +#define Z_IS_2669U_EQ_2669U(...) \, +#define Z_IS_2670_EQ_2670(...) \, +#define Z_IS_2670U_EQ_2670(...) \, +#define Z_IS_2670_EQ_2670U(...) \, +#define Z_IS_2670U_EQ_2670U(...) \, +#define Z_IS_2671_EQ_2671(...) \, +#define Z_IS_2671U_EQ_2671(...) \, +#define Z_IS_2671_EQ_2671U(...) \, +#define Z_IS_2671U_EQ_2671U(...) \, +#define Z_IS_2672_EQ_2672(...) \, +#define Z_IS_2672U_EQ_2672(...) \, +#define Z_IS_2672_EQ_2672U(...) \, +#define Z_IS_2672U_EQ_2672U(...) \, +#define Z_IS_2673_EQ_2673(...) \, +#define Z_IS_2673U_EQ_2673(...) \, +#define Z_IS_2673_EQ_2673U(...) \, +#define Z_IS_2673U_EQ_2673U(...) \, +#define Z_IS_2674_EQ_2674(...) \, +#define Z_IS_2674U_EQ_2674(...) \, +#define Z_IS_2674_EQ_2674U(...) \, +#define Z_IS_2674U_EQ_2674U(...) \, +#define Z_IS_2675_EQ_2675(...) \, +#define Z_IS_2675U_EQ_2675(...) \, +#define Z_IS_2675_EQ_2675U(...) \, +#define Z_IS_2675U_EQ_2675U(...) \, +#define Z_IS_2676_EQ_2676(...) \, +#define Z_IS_2676U_EQ_2676(...) \, +#define Z_IS_2676_EQ_2676U(...) \, +#define Z_IS_2676U_EQ_2676U(...) \, +#define Z_IS_2677_EQ_2677(...) \, +#define Z_IS_2677U_EQ_2677(...) \, +#define Z_IS_2677_EQ_2677U(...) \, +#define Z_IS_2677U_EQ_2677U(...) \, +#define Z_IS_2678_EQ_2678(...) \, +#define Z_IS_2678U_EQ_2678(...) \, +#define Z_IS_2678_EQ_2678U(...) \, +#define Z_IS_2678U_EQ_2678U(...) \, +#define Z_IS_2679_EQ_2679(...) \, +#define Z_IS_2679U_EQ_2679(...) \, +#define Z_IS_2679_EQ_2679U(...) \, +#define Z_IS_2679U_EQ_2679U(...) \, +#define Z_IS_2680_EQ_2680(...) \, +#define Z_IS_2680U_EQ_2680(...) \, +#define Z_IS_2680_EQ_2680U(...) \, +#define Z_IS_2680U_EQ_2680U(...) \, +#define Z_IS_2681_EQ_2681(...) \, +#define Z_IS_2681U_EQ_2681(...) \, +#define Z_IS_2681_EQ_2681U(...) \, +#define Z_IS_2681U_EQ_2681U(...) \, +#define Z_IS_2682_EQ_2682(...) \, +#define Z_IS_2682U_EQ_2682(...) \, +#define Z_IS_2682_EQ_2682U(...) \, +#define Z_IS_2682U_EQ_2682U(...) \, +#define Z_IS_2683_EQ_2683(...) \, +#define Z_IS_2683U_EQ_2683(...) \, +#define Z_IS_2683_EQ_2683U(...) \, +#define Z_IS_2683U_EQ_2683U(...) \, +#define Z_IS_2684_EQ_2684(...) \, +#define Z_IS_2684U_EQ_2684(...) \, +#define Z_IS_2684_EQ_2684U(...) \, +#define Z_IS_2684U_EQ_2684U(...) \, +#define Z_IS_2685_EQ_2685(...) \, +#define Z_IS_2685U_EQ_2685(...) \, +#define Z_IS_2685_EQ_2685U(...) \, +#define Z_IS_2685U_EQ_2685U(...) \, +#define Z_IS_2686_EQ_2686(...) \, +#define Z_IS_2686U_EQ_2686(...) \, +#define Z_IS_2686_EQ_2686U(...) \, +#define Z_IS_2686U_EQ_2686U(...) \, +#define Z_IS_2687_EQ_2687(...) \, +#define Z_IS_2687U_EQ_2687(...) \, +#define Z_IS_2687_EQ_2687U(...) \, +#define Z_IS_2687U_EQ_2687U(...) \, +#define Z_IS_2688_EQ_2688(...) \, +#define Z_IS_2688U_EQ_2688(...) \, +#define Z_IS_2688_EQ_2688U(...) \, +#define Z_IS_2688U_EQ_2688U(...) \, +#define Z_IS_2689_EQ_2689(...) \, +#define Z_IS_2689U_EQ_2689(...) \, +#define Z_IS_2689_EQ_2689U(...) \, +#define Z_IS_2689U_EQ_2689U(...) \, +#define Z_IS_2690_EQ_2690(...) \, +#define Z_IS_2690U_EQ_2690(...) \, +#define Z_IS_2690_EQ_2690U(...) \, +#define Z_IS_2690U_EQ_2690U(...) \, +#define Z_IS_2691_EQ_2691(...) \, +#define Z_IS_2691U_EQ_2691(...) \, +#define Z_IS_2691_EQ_2691U(...) \, +#define Z_IS_2691U_EQ_2691U(...) \, +#define Z_IS_2692_EQ_2692(...) \, +#define Z_IS_2692U_EQ_2692(...) \, +#define Z_IS_2692_EQ_2692U(...) \, +#define Z_IS_2692U_EQ_2692U(...) \, +#define Z_IS_2693_EQ_2693(...) \, +#define Z_IS_2693U_EQ_2693(...) \, +#define Z_IS_2693_EQ_2693U(...) \, +#define Z_IS_2693U_EQ_2693U(...) \, +#define Z_IS_2694_EQ_2694(...) \, +#define Z_IS_2694U_EQ_2694(...) \, +#define Z_IS_2694_EQ_2694U(...) \, +#define Z_IS_2694U_EQ_2694U(...) \, +#define Z_IS_2695_EQ_2695(...) \, +#define Z_IS_2695U_EQ_2695(...) \, +#define Z_IS_2695_EQ_2695U(...) \, +#define Z_IS_2695U_EQ_2695U(...) \, +#define Z_IS_2696_EQ_2696(...) \, +#define Z_IS_2696U_EQ_2696(...) \, +#define Z_IS_2696_EQ_2696U(...) \, +#define Z_IS_2696U_EQ_2696U(...) \, +#define Z_IS_2697_EQ_2697(...) \, +#define Z_IS_2697U_EQ_2697(...) \, +#define Z_IS_2697_EQ_2697U(...) \, +#define Z_IS_2697U_EQ_2697U(...) \, +#define Z_IS_2698_EQ_2698(...) \, +#define Z_IS_2698U_EQ_2698(...) \, +#define Z_IS_2698_EQ_2698U(...) \, +#define Z_IS_2698U_EQ_2698U(...) \, +#define Z_IS_2699_EQ_2699(...) \, +#define Z_IS_2699U_EQ_2699(...) \, +#define Z_IS_2699_EQ_2699U(...) \, +#define Z_IS_2699U_EQ_2699U(...) \, +#define Z_IS_2700_EQ_2700(...) \, +#define Z_IS_2700U_EQ_2700(...) \, +#define Z_IS_2700_EQ_2700U(...) \, +#define Z_IS_2700U_EQ_2700U(...) \, +#define Z_IS_2701_EQ_2701(...) \, +#define Z_IS_2701U_EQ_2701(...) \, +#define Z_IS_2701_EQ_2701U(...) \, +#define Z_IS_2701U_EQ_2701U(...) \, +#define Z_IS_2702_EQ_2702(...) \, +#define Z_IS_2702U_EQ_2702(...) \, +#define Z_IS_2702_EQ_2702U(...) \, +#define Z_IS_2702U_EQ_2702U(...) \, +#define Z_IS_2703_EQ_2703(...) \, +#define Z_IS_2703U_EQ_2703(...) \, +#define Z_IS_2703_EQ_2703U(...) \, +#define Z_IS_2703U_EQ_2703U(...) \, +#define Z_IS_2704_EQ_2704(...) \, +#define Z_IS_2704U_EQ_2704(...) \, +#define Z_IS_2704_EQ_2704U(...) \, +#define Z_IS_2704U_EQ_2704U(...) \, +#define Z_IS_2705_EQ_2705(...) \, +#define Z_IS_2705U_EQ_2705(...) \, +#define Z_IS_2705_EQ_2705U(...) \, +#define Z_IS_2705U_EQ_2705U(...) \, +#define Z_IS_2706_EQ_2706(...) \, +#define Z_IS_2706U_EQ_2706(...) \, +#define Z_IS_2706_EQ_2706U(...) \, +#define Z_IS_2706U_EQ_2706U(...) \, +#define Z_IS_2707_EQ_2707(...) \, +#define Z_IS_2707U_EQ_2707(...) \, +#define Z_IS_2707_EQ_2707U(...) \, +#define Z_IS_2707U_EQ_2707U(...) \, +#define Z_IS_2708_EQ_2708(...) \, +#define Z_IS_2708U_EQ_2708(...) \, +#define Z_IS_2708_EQ_2708U(...) \, +#define Z_IS_2708U_EQ_2708U(...) \, +#define Z_IS_2709_EQ_2709(...) \, +#define Z_IS_2709U_EQ_2709(...) \, +#define Z_IS_2709_EQ_2709U(...) \, +#define Z_IS_2709U_EQ_2709U(...) \, +#define Z_IS_2710_EQ_2710(...) \, +#define Z_IS_2710U_EQ_2710(...) \, +#define Z_IS_2710_EQ_2710U(...) \, +#define Z_IS_2710U_EQ_2710U(...) \, +#define Z_IS_2711_EQ_2711(...) \, +#define Z_IS_2711U_EQ_2711(...) \, +#define Z_IS_2711_EQ_2711U(...) \, +#define Z_IS_2711U_EQ_2711U(...) \, +#define Z_IS_2712_EQ_2712(...) \, +#define Z_IS_2712U_EQ_2712(...) \, +#define Z_IS_2712_EQ_2712U(...) \, +#define Z_IS_2712U_EQ_2712U(...) \, +#define Z_IS_2713_EQ_2713(...) \, +#define Z_IS_2713U_EQ_2713(...) \, +#define Z_IS_2713_EQ_2713U(...) \, +#define Z_IS_2713U_EQ_2713U(...) \, +#define Z_IS_2714_EQ_2714(...) \, +#define Z_IS_2714U_EQ_2714(...) \, +#define Z_IS_2714_EQ_2714U(...) \, +#define Z_IS_2714U_EQ_2714U(...) \, +#define Z_IS_2715_EQ_2715(...) \, +#define Z_IS_2715U_EQ_2715(...) \, +#define Z_IS_2715_EQ_2715U(...) \, +#define Z_IS_2715U_EQ_2715U(...) \, +#define Z_IS_2716_EQ_2716(...) \, +#define Z_IS_2716U_EQ_2716(...) \, +#define Z_IS_2716_EQ_2716U(...) \, +#define Z_IS_2716U_EQ_2716U(...) \, +#define Z_IS_2717_EQ_2717(...) \, +#define Z_IS_2717U_EQ_2717(...) \, +#define Z_IS_2717_EQ_2717U(...) \, +#define Z_IS_2717U_EQ_2717U(...) \, +#define Z_IS_2718_EQ_2718(...) \, +#define Z_IS_2718U_EQ_2718(...) \, +#define Z_IS_2718_EQ_2718U(...) \, +#define Z_IS_2718U_EQ_2718U(...) \, +#define Z_IS_2719_EQ_2719(...) \, +#define Z_IS_2719U_EQ_2719(...) \, +#define Z_IS_2719_EQ_2719U(...) \, +#define Z_IS_2719U_EQ_2719U(...) \, +#define Z_IS_2720_EQ_2720(...) \, +#define Z_IS_2720U_EQ_2720(...) \, +#define Z_IS_2720_EQ_2720U(...) \, +#define Z_IS_2720U_EQ_2720U(...) \, +#define Z_IS_2721_EQ_2721(...) \, +#define Z_IS_2721U_EQ_2721(...) \, +#define Z_IS_2721_EQ_2721U(...) \, +#define Z_IS_2721U_EQ_2721U(...) \, +#define Z_IS_2722_EQ_2722(...) \, +#define Z_IS_2722U_EQ_2722(...) \, +#define Z_IS_2722_EQ_2722U(...) \, +#define Z_IS_2722U_EQ_2722U(...) \, +#define Z_IS_2723_EQ_2723(...) \, +#define Z_IS_2723U_EQ_2723(...) \, +#define Z_IS_2723_EQ_2723U(...) \, +#define Z_IS_2723U_EQ_2723U(...) \, +#define Z_IS_2724_EQ_2724(...) \, +#define Z_IS_2724U_EQ_2724(...) \, +#define Z_IS_2724_EQ_2724U(...) \, +#define Z_IS_2724U_EQ_2724U(...) \, +#define Z_IS_2725_EQ_2725(...) \, +#define Z_IS_2725U_EQ_2725(...) \, +#define Z_IS_2725_EQ_2725U(...) \, +#define Z_IS_2725U_EQ_2725U(...) \, +#define Z_IS_2726_EQ_2726(...) \, +#define Z_IS_2726U_EQ_2726(...) \, +#define Z_IS_2726_EQ_2726U(...) \, +#define Z_IS_2726U_EQ_2726U(...) \, +#define Z_IS_2727_EQ_2727(...) \, +#define Z_IS_2727U_EQ_2727(...) \, +#define Z_IS_2727_EQ_2727U(...) \, +#define Z_IS_2727U_EQ_2727U(...) \, +#define Z_IS_2728_EQ_2728(...) \, +#define Z_IS_2728U_EQ_2728(...) \, +#define Z_IS_2728_EQ_2728U(...) \, +#define Z_IS_2728U_EQ_2728U(...) \, +#define Z_IS_2729_EQ_2729(...) \, +#define Z_IS_2729U_EQ_2729(...) \, +#define Z_IS_2729_EQ_2729U(...) \, +#define Z_IS_2729U_EQ_2729U(...) \, +#define Z_IS_2730_EQ_2730(...) \, +#define Z_IS_2730U_EQ_2730(...) \, +#define Z_IS_2730_EQ_2730U(...) \, +#define Z_IS_2730U_EQ_2730U(...) \, +#define Z_IS_2731_EQ_2731(...) \, +#define Z_IS_2731U_EQ_2731(...) \, +#define Z_IS_2731_EQ_2731U(...) \, +#define Z_IS_2731U_EQ_2731U(...) \, +#define Z_IS_2732_EQ_2732(...) \, +#define Z_IS_2732U_EQ_2732(...) \, +#define Z_IS_2732_EQ_2732U(...) \, +#define Z_IS_2732U_EQ_2732U(...) \, +#define Z_IS_2733_EQ_2733(...) \, +#define Z_IS_2733U_EQ_2733(...) \, +#define Z_IS_2733_EQ_2733U(...) \, +#define Z_IS_2733U_EQ_2733U(...) \, +#define Z_IS_2734_EQ_2734(...) \, +#define Z_IS_2734U_EQ_2734(...) \, +#define Z_IS_2734_EQ_2734U(...) \, +#define Z_IS_2734U_EQ_2734U(...) \, +#define Z_IS_2735_EQ_2735(...) \, +#define Z_IS_2735U_EQ_2735(...) \, +#define Z_IS_2735_EQ_2735U(...) \, +#define Z_IS_2735U_EQ_2735U(...) \, +#define Z_IS_2736_EQ_2736(...) \, +#define Z_IS_2736U_EQ_2736(...) \, +#define Z_IS_2736_EQ_2736U(...) \, +#define Z_IS_2736U_EQ_2736U(...) \, +#define Z_IS_2737_EQ_2737(...) \, +#define Z_IS_2737U_EQ_2737(...) \, +#define Z_IS_2737_EQ_2737U(...) \, +#define Z_IS_2737U_EQ_2737U(...) \, +#define Z_IS_2738_EQ_2738(...) \, +#define Z_IS_2738U_EQ_2738(...) \, +#define Z_IS_2738_EQ_2738U(...) \, +#define Z_IS_2738U_EQ_2738U(...) \, +#define Z_IS_2739_EQ_2739(...) \, +#define Z_IS_2739U_EQ_2739(...) \, +#define Z_IS_2739_EQ_2739U(...) \, +#define Z_IS_2739U_EQ_2739U(...) \, +#define Z_IS_2740_EQ_2740(...) \, +#define Z_IS_2740U_EQ_2740(...) \, +#define Z_IS_2740_EQ_2740U(...) \, +#define Z_IS_2740U_EQ_2740U(...) \, +#define Z_IS_2741_EQ_2741(...) \, +#define Z_IS_2741U_EQ_2741(...) \, +#define Z_IS_2741_EQ_2741U(...) \, +#define Z_IS_2741U_EQ_2741U(...) \, +#define Z_IS_2742_EQ_2742(...) \, +#define Z_IS_2742U_EQ_2742(...) \, +#define Z_IS_2742_EQ_2742U(...) \, +#define Z_IS_2742U_EQ_2742U(...) \, +#define Z_IS_2743_EQ_2743(...) \, +#define Z_IS_2743U_EQ_2743(...) \, +#define Z_IS_2743_EQ_2743U(...) \, +#define Z_IS_2743U_EQ_2743U(...) \, +#define Z_IS_2744_EQ_2744(...) \, +#define Z_IS_2744U_EQ_2744(...) \, +#define Z_IS_2744_EQ_2744U(...) \, +#define Z_IS_2744U_EQ_2744U(...) \, +#define Z_IS_2745_EQ_2745(...) \, +#define Z_IS_2745U_EQ_2745(...) \, +#define Z_IS_2745_EQ_2745U(...) \, +#define Z_IS_2745U_EQ_2745U(...) \, +#define Z_IS_2746_EQ_2746(...) \, +#define Z_IS_2746U_EQ_2746(...) \, +#define Z_IS_2746_EQ_2746U(...) \, +#define Z_IS_2746U_EQ_2746U(...) \, +#define Z_IS_2747_EQ_2747(...) \, +#define Z_IS_2747U_EQ_2747(...) \, +#define Z_IS_2747_EQ_2747U(...) \, +#define Z_IS_2747U_EQ_2747U(...) \, +#define Z_IS_2748_EQ_2748(...) \, +#define Z_IS_2748U_EQ_2748(...) \, +#define Z_IS_2748_EQ_2748U(...) \, +#define Z_IS_2748U_EQ_2748U(...) \, +#define Z_IS_2749_EQ_2749(...) \, +#define Z_IS_2749U_EQ_2749(...) \, +#define Z_IS_2749_EQ_2749U(...) \, +#define Z_IS_2749U_EQ_2749U(...) \, +#define Z_IS_2750_EQ_2750(...) \, +#define Z_IS_2750U_EQ_2750(...) \, +#define Z_IS_2750_EQ_2750U(...) \, +#define Z_IS_2750U_EQ_2750U(...) \, +#define Z_IS_2751_EQ_2751(...) \, +#define Z_IS_2751U_EQ_2751(...) \, +#define Z_IS_2751_EQ_2751U(...) \, +#define Z_IS_2751U_EQ_2751U(...) \, +#define Z_IS_2752_EQ_2752(...) \, +#define Z_IS_2752U_EQ_2752(...) \, +#define Z_IS_2752_EQ_2752U(...) \, +#define Z_IS_2752U_EQ_2752U(...) \, +#define Z_IS_2753_EQ_2753(...) \, +#define Z_IS_2753U_EQ_2753(...) \, +#define Z_IS_2753_EQ_2753U(...) \, +#define Z_IS_2753U_EQ_2753U(...) \, +#define Z_IS_2754_EQ_2754(...) \, +#define Z_IS_2754U_EQ_2754(...) \, +#define Z_IS_2754_EQ_2754U(...) \, +#define Z_IS_2754U_EQ_2754U(...) \, +#define Z_IS_2755_EQ_2755(...) \, +#define Z_IS_2755U_EQ_2755(...) \, +#define Z_IS_2755_EQ_2755U(...) \, +#define Z_IS_2755U_EQ_2755U(...) \, +#define Z_IS_2756_EQ_2756(...) \, +#define Z_IS_2756U_EQ_2756(...) \, +#define Z_IS_2756_EQ_2756U(...) \, +#define Z_IS_2756U_EQ_2756U(...) \, +#define Z_IS_2757_EQ_2757(...) \, +#define Z_IS_2757U_EQ_2757(...) \, +#define Z_IS_2757_EQ_2757U(...) \, +#define Z_IS_2757U_EQ_2757U(...) \, +#define Z_IS_2758_EQ_2758(...) \, +#define Z_IS_2758U_EQ_2758(...) \, +#define Z_IS_2758_EQ_2758U(...) \, +#define Z_IS_2758U_EQ_2758U(...) \, +#define Z_IS_2759_EQ_2759(...) \, +#define Z_IS_2759U_EQ_2759(...) \, +#define Z_IS_2759_EQ_2759U(...) \, +#define Z_IS_2759U_EQ_2759U(...) \, +#define Z_IS_2760_EQ_2760(...) \, +#define Z_IS_2760U_EQ_2760(...) \, +#define Z_IS_2760_EQ_2760U(...) \, +#define Z_IS_2760U_EQ_2760U(...) \, +#define Z_IS_2761_EQ_2761(...) \, +#define Z_IS_2761U_EQ_2761(...) \, +#define Z_IS_2761_EQ_2761U(...) \, +#define Z_IS_2761U_EQ_2761U(...) \, +#define Z_IS_2762_EQ_2762(...) \, +#define Z_IS_2762U_EQ_2762(...) \, +#define Z_IS_2762_EQ_2762U(...) \, +#define Z_IS_2762U_EQ_2762U(...) \, +#define Z_IS_2763_EQ_2763(...) \, +#define Z_IS_2763U_EQ_2763(...) \, +#define Z_IS_2763_EQ_2763U(...) \, +#define Z_IS_2763U_EQ_2763U(...) \, +#define Z_IS_2764_EQ_2764(...) \, +#define Z_IS_2764U_EQ_2764(...) \, +#define Z_IS_2764_EQ_2764U(...) \, +#define Z_IS_2764U_EQ_2764U(...) \, +#define Z_IS_2765_EQ_2765(...) \, +#define Z_IS_2765U_EQ_2765(...) \, +#define Z_IS_2765_EQ_2765U(...) \, +#define Z_IS_2765U_EQ_2765U(...) \, +#define Z_IS_2766_EQ_2766(...) \, +#define Z_IS_2766U_EQ_2766(...) \, +#define Z_IS_2766_EQ_2766U(...) \, +#define Z_IS_2766U_EQ_2766U(...) \, +#define Z_IS_2767_EQ_2767(...) \, +#define Z_IS_2767U_EQ_2767(...) \, +#define Z_IS_2767_EQ_2767U(...) \, +#define Z_IS_2767U_EQ_2767U(...) \, +#define Z_IS_2768_EQ_2768(...) \, +#define Z_IS_2768U_EQ_2768(...) \, +#define Z_IS_2768_EQ_2768U(...) \, +#define Z_IS_2768U_EQ_2768U(...) \, +#define Z_IS_2769_EQ_2769(...) \, +#define Z_IS_2769U_EQ_2769(...) \, +#define Z_IS_2769_EQ_2769U(...) \, +#define Z_IS_2769U_EQ_2769U(...) \, +#define Z_IS_2770_EQ_2770(...) \, +#define Z_IS_2770U_EQ_2770(...) \, +#define Z_IS_2770_EQ_2770U(...) \, +#define Z_IS_2770U_EQ_2770U(...) \, +#define Z_IS_2771_EQ_2771(...) \, +#define Z_IS_2771U_EQ_2771(...) \, +#define Z_IS_2771_EQ_2771U(...) \, +#define Z_IS_2771U_EQ_2771U(...) \, +#define Z_IS_2772_EQ_2772(...) \, +#define Z_IS_2772U_EQ_2772(...) \, +#define Z_IS_2772_EQ_2772U(...) \, +#define Z_IS_2772U_EQ_2772U(...) \, +#define Z_IS_2773_EQ_2773(...) \, +#define Z_IS_2773U_EQ_2773(...) \, +#define Z_IS_2773_EQ_2773U(...) \, +#define Z_IS_2773U_EQ_2773U(...) \, +#define Z_IS_2774_EQ_2774(...) \, +#define Z_IS_2774U_EQ_2774(...) \, +#define Z_IS_2774_EQ_2774U(...) \, +#define Z_IS_2774U_EQ_2774U(...) \, +#define Z_IS_2775_EQ_2775(...) \, +#define Z_IS_2775U_EQ_2775(...) \, +#define Z_IS_2775_EQ_2775U(...) \, +#define Z_IS_2775U_EQ_2775U(...) \, +#define Z_IS_2776_EQ_2776(...) \, +#define Z_IS_2776U_EQ_2776(...) \, +#define Z_IS_2776_EQ_2776U(...) \, +#define Z_IS_2776U_EQ_2776U(...) \, +#define Z_IS_2777_EQ_2777(...) \, +#define Z_IS_2777U_EQ_2777(...) \, +#define Z_IS_2777_EQ_2777U(...) \, +#define Z_IS_2777U_EQ_2777U(...) \, +#define Z_IS_2778_EQ_2778(...) \, +#define Z_IS_2778U_EQ_2778(...) \, +#define Z_IS_2778_EQ_2778U(...) \, +#define Z_IS_2778U_EQ_2778U(...) \, +#define Z_IS_2779_EQ_2779(...) \, +#define Z_IS_2779U_EQ_2779(...) \, +#define Z_IS_2779_EQ_2779U(...) \, +#define Z_IS_2779U_EQ_2779U(...) \, +#define Z_IS_2780_EQ_2780(...) \, +#define Z_IS_2780U_EQ_2780(...) \, +#define Z_IS_2780_EQ_2780U(...) \, +#define Z_IS_2780U_EQ_2780U(...) \, +#define Z_IS_2781_EQ_2781(...) \, +#define Z_IS_2781U_EQ_2781(...) \, +#define Z_IS_2781_EQ_2781U(...) \, +#define Z_IS_2781U_EQ_2781U(...) \, +#define Z_IS_2782_EQ_2782(...) \, +#define Z_IS_2782U_EQ_2782(...) \, +#define Z_IS_2782_EQ_2782U(...) \, +#define Z_IS_2782U_EQ_2782U(...) \, +#define Z_IS_2783_EQ_2783(...) \, +#define Z_IS_2783U_EQ_2783(...) \, +#define Z_IS_2783_EQ_2783U(...) \, +#define Z_IS_2783U_EQ_2783U(...) \, +#define Z_IS_2784_EQ_2784(...) \, +#define Z_IS_2784U_EQ_2784(...) \, +#define Z_IS_2784_EQ_2784U(...) \, +#define Z_IS_2784U_EQ_2784U(...) \, +#define Z_IS_2785_EQ_2785(...) \, +#define Z_IS_2785U_EQ_2785(...) \, +#define Z_IS_2785_EQ_2785U(...) \, +#define Z_IS_2785U_EQ_2785U(...) \, +#define Z_IS_2786_EQ_2786(...) \, +#define Z_IS_2786U_EQ_2786(...) \, +#define Z_IS_2786_EQ_2786U(...) \, +#define Z_IS_2786U_EQ_2786U(...) \, +#define Z_IS_2787_EQ_2787(...) \, +#define Z_IS_2787U_EQ_2787(...) \, +#define Z_IS_2787_EQ_2787U(...) \, +#define Z_IS_2787U_EQ_2787U(...) \, +#define Z_IS_2788_EQ_2788(...) \, +#define Z_IS_2788U_EQ_2788(...) \, +#define Z_IS_2788_EQ_2788U(...) \, +#define Z_IS_2788U_EQ_2788U(...) \, +#define Z_IS_2789_EQ_2789(...) \, +#define Z_IS_2789U_EQ_2789(...) \, +#define Z_IS_2789_EQ_2789U(...) \, +#define Z_IS_2789U_EQ_2789U(...) \, +#define Z_IS_2790_EQ_2790(...) \, +#define Z_IS_2790U_EQ_2790(...) \, +#define Z_IS_2790_EQ_2790U(...) \, +#define Z_IS_2790U_EQ_2790U(...) \, +#define Z_IS_2791_EQ_2791(...) \, +#define Z_IS_2791U_EQ_2791(...) \, +#define Z_IS_2791_EQ_2791U(...) \, +#define Z_IS_2791U_EQ_2791U(...) \, +#define Z_IS_2792_EQ_2792(...) \, +#define Z_IS_2792U_EQ_2792(...) \, +#define Z_IS_2792_EQ_2792U(...) \, +#define Z_IS_2792U_EQ_2792U(...) \, +#define Z_IS_2793_EQ_2793(...) \, +#define Z_IS_2793U_EQ_2793(...) \, +#define Z_IS_2793_EQ_2793U(...) \, +#define Z_IS_2793U_EQ_2793U(...) \, +#define Z_IS_2794_EQ_2794(...) \, +#define Z_IS_2794U_EQ_2794(...) \, +#define Z_IS_2794_EQ_2794U(...) \, +#define Z_IS_2794U_EQ_2794U(...) \, +#define Z_IS_2795_EQ_2795(...) \, +#define Z_IS_2795U_EQ_2795(...) \, +#define Z_IS_2795_EQ_2795U(...) \, +#define Z_IS_2795U_EQ_2795U(...) \, +#define Z_IS_2796_EQ_2796(...) \, +#define Z_IS_2796U_EQ_2796(...) \, +#define Z_IS_2796_EQ_2796U(...) \, +#define Z_IS_2796U_EQ_2796U(...) \, +#define Z_IS_2797_EQ_2797(...) \, +#define Z_IS_2797U_EQ_2797(...) \, +#define Z_IS_2797_EQ_2797U(...) \, +#define Z_IS_2797U_EQ_2797U(...) \, +#define Z_IS_2798_EQ_2798(...) \, +#define Z_IS_2798U_EQ_2798(...) \, +#define Z_IS_2798_EQ_2798U(...) \, +#define Z_IS_2798U_EQ_2798U(...) \, +#define Z_IS_2799_EQ_2799(...) \, +#define Z_IS_2799U_EQ_2799(...) \, +#define Z_IS_2799_EQ_2799U(...) \, +#define Z_IS_2799U_EQ_2799U(...) \, +#define Z_IS_2800_EQ_2800(...) \, +#define Z_IS_2800U_EQ_2800(...) \, +#define Z_IS_2800_EQ_2800U(...) \, +#define Z_IS_2800U_EQ_2800U(...) \, +#define Z_IS_2801_EQ_2801(...) \, +#define Z_IS_2801U_EQ_2801(...) \, +#define Z_IS_2801_EQ_2801U(...) \, +#define Z_IS_2801U_EQ_2801U(...) \, +#define Z_IS_2802_EQ_2802(...) \, +#define Z_IS_2802U_EQ_2802(...) \, +#define Z_IS_2802_EQ_2802U(...) \, +#define Z_IS_2802U_EQ_2802U(...) \, +#define Z_IS_2803_EQ_2803(...) \, +#define Z_IS_2803U_EQ_2803(...) \, +#define Z_IS_2803_EQ_2803U(...) \, +#define Z_IS_2803U_EQ_2803U(...) \, +#define Z_IS_2804_EQ_2804(...) \, +#define Z_IS_2804U_EQ_2804(...) \, +#define Z_IS_2804_EQ_2804U(...) \, +#define Z_IS_2804U_EQ_2804U(...) \, +#define Z_IS_2805_EQ_2805(...) \, +#define Z_IS_2805U_EQ_2805(...) \, +#define Z_IS_2805_EQ_2805U(...) \, +#define Z_IS_2805U_EQ_2805U(...) \, +#define Z_IS_2806_EQ_2806(...) \, +#define Z_IS_2806U_EQ_2806(...) \, +#define Z_IS_2806_EQ_2806U(...) \, +#define Z_IS_2806U_EQ_2806U(...) \, +#define Z_IS_2807_EQ_2807(...) \, +#define Z_IS_2807U_EQ_2807(...) \, +#define Z_IS_2807_EQ_2807U(...) \, +#define Z_IS_2807U_EQ_2807U(...) \, +#define Z_IS_2808_EQ_2808(...) \, +#define Z_IS_2808U_EQ_2808(...) \, +#define Z_IS_2808_EQ_2808U(...) \, +#define Z_IS_2808U_EQ_2808U(...) \, +#define Z_IS_2809_EQ_2809(...) \, +#define Z_IS_2809U_EQ_2809(...) \, +#define Z_IS_2809_EQ_2809U(...) \, +#define Z_IS_2809U_EQ_2809U(...) \, +#define Z_IS_2810_EQ_2810(...) \, +#define Z_IS_2810U_EQ_2810(...) \, +#define Z_IS_2810_EQ_2810U(...) \, +#define Z_IS_2810U_EQ_2810U(...) \, +#define Z_IS_2811_EQ_2811(...) \, +#define Z_IS_2811U_EQ_2811(...) \, +#define Z_IS_2811_EQ_2811U(...) \, +#define Z_IS_2811U_EQ_2811U(...) \, +#define Z_IS_2812_EQ_2812(...) \, +#define Z_IS_2812U_EQ_2812(...) \, +#define Z_IS_2812_EQ_2812U(...) \, +#define Z_IS_2812U_EQ_2812U(...) \, +#define Z_IS_2813_EQ_2813(...) \, +#define Z_IS_2813U_EQ_2813(...) \, +#define Z_IS_2813_EQ_2813U(...) \, +#define Z_IS_2813U_EQ_2813U(...) \, +#define Z_IS_2814_EQ_2814(...) \, +#define Z_IS_2814U_EQ_2814(...) \, +#define Z_IS_2814_EQ_2814U(...) \, +#define Z_IS_2814U_EQ_2814U(...) \, +#define Z_IS_2815_EQ_2815(...) \, +#define Z_IS_2815U_EQ_2815(...) \, +#define Z_IS_2815_EQ_2815U(...) \, +#define Z_IS_2815U_EQ_2815U(...) \, +#define Z_IS_2816_EQ_2816(...) \, +#define Z_IS_2816U_EQ_2816(...) \, +#define Z_IS_2816_EQ_2816U(...) \, +#define Z_IS_2816U_EQ_2816U(...) \, +#define Z_IS_2817_EQ_2817(...) \, +#define Z_IS_2817U_EQ_2817(...) \, +#define Z_IS_2817_EQ_2817U(...) \, +#define Z_IS_2817U_EQ_2817U(...) \, +#define Z_IS_2818_EQ_2818(...) \, +#define Z_IS_2818U_EQ_2818(...) \, +#define Z_IS_2818_EQ_2818U(...) \, +#define Z_IS_2818U_EQ_2818U(...) \, +#define Z_IS_2819_EQ_2819(...) \, +#define Z_IS_2819U_EQ_2819(...) \, +#define Z_IS_2819_EQ_2819U(...) \, +#define Z_IS_2819U_EQ_2819U(...) \, +#define Z_IS_2820_EQ_2820(...) \, +#define Z_IS_2820U_EQ_2820(...) \, +#define Z_IS_2820_EQ_2820U(...) \, +#define Z_IS_2820U_EQ_2820U(...) \, +#define Z_IS_2821_EQ_2821(...) \, +#define Z_IS_2821U_EQ_2821(...) \, +#define Z_IS_2821_EQ_2821U(...) \, +#define Z_IS_2821U_EQ_2821U(...) \, +#define Z_IS_2822_EQ_2822(...) \, +#define Z_IS_2822U_EQ_2822(...) \, +#define Z_IS_2822_EQ_2822U(...) \, +#define Z_IS_2822U_EQ_2822U(...) \, +#define Z_IS_2823_EQ_2823(...) \, +#define Z_IS_2823U_EQ_2823(...) \, +#define Z_IS_2823_EQ_2823U(...) \, +#define Z_IS_2823U_EQ_2823U(...) \, +#define Z_IS_2824_EQ_2824(...) \, +#define Z_IS_2824U_EQ_2824(...) \, +#define Z_IS_2824_EQ_2824U(...) \, +#define Z_IS_2824U_EQ_2824U(...) \, +#define Z_IS_2825_EQ_2825(...) \, +#define Z_IS_2825U_EQ_2825(...) \, +#define Z_IS_2825_EQ_2825U(...) \, +#define Z_IS_2825U_EQ_2825U(...) \, +#define Z_IS_2826_EQ_2826(...) \, +#define Z_IS_2826U_EQ_2826(...) \, +#define Z_IS_2826_EQ_2826U(...) \, +#define Z_IS_2826U_EQ_2826U(...) \, +#define Z_IS_2827_EQ_2827(...) \, +#define Z_IS_2827U_EQ_2827(...) \, +#define Z_IS_2827_EQ_2827U(...) \, +#define Z_IS_2827U_EQ_2827U(...) \, +#define Z_IS_2828_EQ_2828(...) \, +#define Z_IS_2828U_EQ_2828(...) \, +#define Z_IS_2828_EQ_2828U(...) \, +#define Z_IS_2828U_EQ_2828U(...) \, +#define Z_IS_2829_EQ_2829(...) \, +#define Z_IS_2829U_EQ_2829(...) \, +#define Z_IS_2829_EQ_2829U(...) \, +#define Z_IS_2829U_EQ_2829U(...) \, +#define Z_IS_2830_EQ_2830(...) \, +#define Z_IS_2830U_EQ_2830(...) \, +#define Z_IS_2830_EQ_2830U(...) \, +#define Z_IS_2830U_EQ_2830U(...) \, +#define Z_IS_2831_EQ_2831(...) \, +#define Z_IS_2831U_EQ_2831(...) \, +#define Z_IS_2831_EQ_2831U(...) \, +#define Z_IS_2831U_EQ_2831U(...) \, +#define Z_IS_2832_EQ_2832(...) \, +#define Z_IS_2832U_EQ_2832(...) \, +#define Z_IS_2832_EQ_2832U(...) \, +#define Z_IS_2832U_EQ_2832U(...) \, +#define Z_IS_2833_EQ_2833(...) \, +#define Z_IS_2833U_EQ_2833(...) \, +#define Z_IS_2833_EQ_2833U(...) \, +#define Z_IS_2833U_EQ_2833U(...) \, +#define Z_IS_2834_EQ_2834(...) \, +#define Z_IS_2834U_EQ_2834(...) \, +#define Z_IS_2834_EQ_2834U(...) \, +#define Z_IS_2834U_EQ_2834U(...) \, +#define Z_IS_2835_EQ_2835(...) \, +#define Z_IS_2835U_EQ_2835(...) \, +#define Z_IS_2835_EQ_2835U(...) \, +#define Z_IS_2835U_EQ_2835U(...) \, +#define Z_IS_2836_EQ_2836(...) \, +#define Z_IS_2836U_EQ_2836(...) \, +#define Z_IS_2836_EQ_2836U(...) \, +#define Z_IS_2836U_EQ_2836U(...) \, +#define Z_IS_2837_EQ_2837(...) \, +#define Z_IS_2837U_EQ_2837(...) \, +#define Z_IS_2837_EQ_2837U(...) \, +#define Z_IS_2837U_EQ_2837U(...) \, +#define Z_IS_2838_EQ_2838(...) \, +#define Z_IS_2838U_EQ_2838(...) \, +#define Z_IS_2838_EQ_2838U(...) \, +#define Z_IS_2838U_EQ_2838U(...) \, +#define Z_IS_2839_EQ_2839(...) \, +#define Z_IS_2839U_EQ_2839(...) \, +#define Z_IS_2839_EQ_2839U(...) \, +#define Z_IS_2839U_EQ_2839U(...) \, +#define Z_IS_2840_EQ_2840(...) \, +#define Z_IS_2840U_EQ_2840(...) \, +#define Z_IS_2840_EQ_2840U(...) \, +#define Z_IS_2840U_EQ_2840U(...) \, +#define Z_IS_2841_EQ_2841(...) \, +#define Z_IS_2841U_EQ_2841(...) \, +#define Z_IS_2841_EQ_2841U(...) \, +#define Z_IS_2841U_EQ_2841U(...) \, +#define Z_IS_2842_EQ_2842(...) \, +#define Z_IS_2842U_EQ_2842(...) \, +#define Z_IS_2842_EQ_2842U(...) \, +#define Z_IS_2842U_EQ_2842U(...) \, +#define Z_IS_2843_EQ_2843(...) \, +#define Z_IS_2843U_EQ_2843(...) \, +#define Z_IS_2843_EQ_2843U(...) \, +#define Z_IS_2843U_EQ_2843U(...) \, +#define Z_IS_2844_EQ_2844(...) \, +#define Z_IS_2844U_EQ_2844(...) \, +#define Z_IS_2844_EQ_2844U(...) \, +#define Z_IS_2844U_EQ_2844U(...) \, +#define Z_IS_2845_EQ_2845(...) \, +#define Z_IS_2845U_EQ_2845(...) \, +#define Z_IS_2845_EQ_2845U(...) \, +#define Z_IS_2845U_EQ_2845U(...) \, +#define Z_IS_2846_EQ_2846(...) \, +#define Z_IS_2846U_EQ_2846(...) \, +#define Z_IS_2846_EQ_2846U(...) \, +#define Z_IS_2846U_EQ_2846U(...) \, +#define Z_IS_2847_EQ_2847(...) \, +#define Z_IS_2847U_EQ_2847(...) \, +#define Z_IS_2847_EQ_2847U(...) \, +#define Z_IS_2847U_EQ_2847U(...) \, +#define Z_IS_2848_EQ_2848(...) \, +#define Z_IS_2848U_EQ_2848(...) \, +#define Z_IS_2848_EQ_2848U(...) \, +#define Z_IS_2848U_EQ_2848U(...) \, +#define Z_IS_2849_EQ_2849(...) \, +#define Z_IS_2849U_EQ_2849(...) \, +#define Z_IS_2849_EQ_2849U(...) \, +#define Z_IS_2849U_EQ_2849U(...) \, +#define Z_IS_2850_EQ_2850(...) \, +#define Z_IS_2850U_EQ_2850(...) \, +#define Z_IS_2850_EQ_2850U(...) \, +#define Z_IS_2850U_EQ_2850U(...) \, +#define Z_IS_2851_EQ_2851(...) \, +#define Z_IS_2851U_EQ_2851(...) \, +#define Z_IS_2851_EQ_2851U(...) \, +#define Z_IS_2851U_EQ_2851U(...) \, +#define Z_IS_2852_EQ_2852(...) \, +#define Z_IS_2852U_EQ_2852(...) \, +#define Z_IS_2852_EQ_2852U(...) \, +#define Z_IS_2852U_EQ_2852U(...) \, +#define Z_IS_2853_EQ_2853(...) \, +#define Z_IS_2853U_EQ_2853(...) \, +#define Z_IS_2853_EQ_2853U(...) \, +#define Z_IS_2853U_EQ_2853U(...) \, +#define Z_IS_2854_EQ_2854(...) \, +#define Z_IS_2854U_EQ_2854(...) \, +#define Z_IS_2854_EQ_2854U(...) \, +#define Z_IS_2854U_EQ_2854U(...) \, +#define Z_IS_2855_EQ_2855(...) \, +#define Z_IS_2855U_EQ_2855(...) \, +#define Z_IS_2855_EQ_2855U(...) \, +#define Z_IS_2855U_EQ_2855U(...) \, +#define Z_IS_2856_EQ_2856(...) \, +#define Z_IS_2856U_EQ_2856(...) \, +#define Z_IS_2856_EQ_2856U(...) \, +#define Z_IS_2856U_EQ_2856U(...) \, +#define Z_IS_2857_EQ_2857(...) \, +#define Z_IS_2857U_EQ_2857(...) \, +#define Z_IS_2857_EQ_2857U(...) \, +#define Z_IS_2857U_EQ_2857U(...) \, +#define Z_IS_2858_EQ_2858(...) \, +#define Z_IS_2858U_EQ_2858(...) \, +#define Z_IS_2858_EQ_2858U(...) \, +#define Z_IS_2858U_EQ_2858U(...) \, +#define Z_IS_2859_EQ_2859(...) \, +#define Z_IS_2859U_EQ_2859(...) \, +#define Z_IS_2859_EQ_2859U(...) \, +#define Z_IS_2859U_EQ_2859U(...) \, +#define Z_IS_2860_EQ_2860(...) \, +#define Z_IS_2860U_EQ_2860(...) \, +#define Z_IS_2860_EQ_2860U(...) \, +#define Z_IS_2860U_EQ_2860U(...) \, +#define Z_IS_2861_EQ_2861(...) \, +#define Z_IS_2861U_EQ_2861(...) \, +#define Z_IS_2861_EQ_2861U(...) \, +#define Z_IS_2861U_EQ_2861U(...) \, +#define Z_IS_2862_EQ_2862(...) \, +#define Z_IS_2862U_EQ_2862(...) \, +#define Z_IS_2862_EQ_2862U(...) \, +#define Z_IS_2862U_EQ_2862U(...) \, +#define Z_IS_2863_EQ_2863(...) \, +#define Z_IS_2863U_EQ_2863(...) \, +#define Z_IS_2863_EQ_2863U(...) \, +#define Z_IS_2863U_EQ_2863U(...) \, +#define Z_IS_2864_EQ_2864(...) \, +#define Z_IS_2864U_EQ_2864(...) \, +#define Z_IS_2864_EQ_2864U(...) \, +#define Z_IS_2864U_EQ_2864U(...) \, +#define Z_IS_2865_EQ_2865(...) \, +#define Z_IS_2865U_EQ_2865(...) \, +#define Z_IS_2865_EQ_2865U(...) \, +#define Z_IS_2865U_EQ_2865U(...) \, +#define Z_IS_2866_EQ_2866(...) \, +#define Z_IS_2866U_EQ_2866(...) \, +#define Z_IS_2866_EQ_2866U(...) \, +#define Z_IS_2866U_EQ_2866U(...) \, +#define Z_IS_2867_EQ_2867(...) \, +#define Z_IS_2867U_EQ_2867(...) \, +#define Z_IS_2867_EQ_2867U(...) \, +#define Z_IS_2867U_EQ_2867U(...) \, +#define Z_IS_2868_EQ_2868(...) \, +#define Z_IS_2868U_EQ_2868(...) \, +#define Z_IS_2868_EQ_2868U(...) \, +#define Z_IS_2868U_EQ_2868U(...) \, +#define Z_IS_2869_EQ_2869(...) \, +#define Z_IS_2869U_EQ_2869(...) \, +#define Z_IS_2869_EQ_2869U(...) \, +#define Z_IS_2869U_EQ_2869U(...) \, +#define Z_IS_2870_EQ_2870(...) \, +#define Z_IS_2870U_EQ_2870(...) \, +#define Z_IS_2870_EQ_2870U(...) \, +#define Z_IS_2870U_EQ_2870U(...) \, +#define Z_IS_2871_EQ_2871(...) \, +#define Z_IS_2871U_EQ_2871(...) \, +#define Z_IS_2871_EQ_2871U(...) \, +#define Z_IS_2871U_EQ_2871U(...) \, +#define Z_IS_2872_EQ_2872(...) \, +#define Z_IS_2872U_EQ_2872(...) \, +#define Z_IS_2872_EQ_2872U(...) \, +#define Z_IS_2872U_EQ_2872U(...) \, +#define Z_IS_2873_EQ_2873(...) \, +#define Z_IS_2873U_EQ_2873(...) \, +#define Z_IS_2873_EQ_2873U(...) \, +#define Z_IS_2873U_EQ_2873U(...) \, +#define Z_IS_2874_EQ_2874(...) \, +#define Z_IS_2874U_EQ_2874(...) \, +#define Z_IS_2874_EQ_2874U(...) \, +#define Z_IS_2874U_EQ_2874U(...) \, +#define Z_IS_2875_EQ_2875(...) \, +#define Z_IS_2875U_EQ_2875(...) \, +#define Z_IS_2875_EQ_2875U(...) \, +#define Z_IS_2875U_EQ_2875U(...) \, +#define Z_IS_2876_EQ_2876(...) \, +#define Z_IS_2876U_EQ_2876(...) \, +#define Z_IS_2876_EQ_2876U(...) \, +#define Z_IS_2876U_EQ_2876U(...) \, +#define Z_IS_2877_EQ_2877(...) \, +#define Z_IS_2877U_EQ_2877(...) \, +#define Z_IS_2877_EQ_2877U(...) \, +#define Z_IS_2877U_EQ_2877U(...) \, +#define Z_IS_2878_EQ_2878(...) \, +#define Z_IS_2878U_EQ_2878(...) \, +#define Z_IS_2878_EQ_2878U(...) \, +#define Z_IS_2878U_EQ_2878U(...) \, +#define Z_IS_2879_EQ_2879(...) \, +#define Z_IS_2879U_EQ_2879(...) \, +#define Z_IS_2879_EQ_2879U(...) \, +#define Z_IS_2879U_EQ_2879U(...) \, +#define Z_IS_2880_EQ_2880(...) \, +#define Z_IS_2880U_EQ_2880(...) \, +#define Z_IS_2880_EQ_2880U(...) \, +#define Z_IS_2880U_EQ_2880U(...) \, +#define Z_IS_2881_EQ_2881(...) \, +#define Z_IS_2881U_EQ_2881(...) \, +#define Z_IS_2881_EQ_2881U(...) \, +#define Z_IS_2881U_EQ_2881U(...) \, +#define Z_IS_2882_EQ_2882(...) \, +#define Z_IS_2882U_EQ_2882(...) \, +#define Z_IS_2882_EQ_2882U(...) \, +#define Z_IS_2882U_EQ_2882U(...) \, +#define Z_IS_2883_EQ_2883(...) \, +#define Z_IS_2883U_EQ_2883(...) \, +#define Z_IS_2883_EQ_2883U(...) \, +#define Z_IS_2883U_EQ_2883U(...) \, +#define Z_IS_2884_EQ_2884(...) \, +#define Z_IS_2884U_EQ_2884(...) \, +#define Z_IS_2884_EQ_2884U(...) \, +#define Z_IS_2884U_EQ_2884U(...) \, +#define Z_IS_2885_EQ_2885(...) \, +#define Z_IS_2885U_EQ_2885(...) \, +#define Z_IS_2885_EQ_2885U(...) \, +#define Z_IS_2885U_EQ_2885U(...) \, +#define Z_IS_2886_EQ_2886(...) \, +#define Z_IS_2886U_EQ_2886(...) \, +#define Z_IS_2886_EQ_2886U(...) \, +#define Z_IS_2886U_EQ_2886U(...) \, +#define Z_IS_2887_EQ_2887(...) \, +#define Z_IS_2887U_EQ_2887(...) \, +#define Z_IS_2887_EQ_2887U(...) \, +#define Z_IS_2887U_EQ_2887U(...) \, +#define Z_IS_2888_EQ_2888(...) \, +#define Z_IS_2888U_EQ_2888(...) \, +#define Z_IS_2888_EQ_2888U(...) \, +#define Z_IS_2888U_EQ_2888U(...) \, +#define Z_IS_2889_EQ_2889(...) \, +#define Z_IS_2889U_EQ_2889(...) \, +#define Z_IS_2889_EQ_2889U(...) \, +#define Z_IS_2889U_EQ_2889U(...) \, +#define Z_IS_2890_EQ_2890(...) \, +#define Z_IS_2890U_EQ_2890(...) \, +#define Z_IS_2890_EQ_2890U(...) \, +#define Z_IS_2890U_EQ_2890U(...) \, +#define Z_IS_2891_EQ_2891(...) \, +#define Z_IS_2891U_EQ_2891(...) \, +#define Z_IS_2891_EQ_2891U(...) \, +#define Z_IS_2891U_EQ_2891U(...) \, +#define Z_IS_2892_EQ_2892(...) \, +#define Z_IS_2892U_EQ_2892(...) \, +#define Z_IS_2892_EQ_2892U(...) \, +#define Z_IS_2892U_EQ_2892U(...) \, +#define Z_IS_2893_EQ_2893(...) \, +#define Z_IS_2893U_EQ_2893(...) \, +#define Z_IS_2893_EQ_2893U(...) \, +#define Z_IS_2893U_EQ_2893U(...) \, +#define Z_IS_2894_EQ_2894(...) \, +#define Z_IS_2894U_EQ_2894(...) \, +#define Z_IS_2894_EQ_2894U(...) \, +#define Z_IS_2894U_EQ_2894U(...) \, +#define Z_IS_2895_EQ_2895(...) \, +#define Z_IS_2895U_EQ_2895(...) \, +#define Z_IS_2895_EQ_2895U(...) \, +#define Z_IS_2895U_EQ_2895U(...) \, +#define Z_IS_2896_EQ_2896(...) \, +#define Z_IS_2896U_EQ_2896(...) \, +#define Z_IS_2896_EQ_2896U(...) \, +#define Z_IS_2896U_EQ_2896U(...) \, +#define Z_IS_2897_EQ_2897(...) \, +#define Z_IS_2897U_EQ_2897(...) \, +#define Z_IS_2897_EQ_2897U(...) \, +#define Z_IS_2897U_EQ_2897U(...) \, +#define Z_IS_2898_EQ_2898(...) \, +#define Z_IS_2898U_EQ_2898(...) \, +#define Z_IS_2898_EQ_2898U(...) \, +#define Z_IS_2898U_EQ_2898U(...) \, +#define Z_IS_2899_EQ_2899(...) \, +#define Z_IS_2899U_EQ_2899(...) \, +#define Z_IS_2899_EQ_2899U(...) \, +#define Z_IS_2899U_EQ_2899U(...) \, +#define Z_IS_2900_EQ_2900(...) \, +#define Z_IS_2900U_EQ_2900(...) \, +#define Z_IS_2900_EQ_2900U(...) \, +#define Z_IS_2900U_EQ_2900U(...) \, +#define Z_IS_2901_EQ_2901(...) \, +#define Z_IS_2901U_EQ_2901(...) \, +#define Z_IS_2901_EQ_2901U(...) \, +#define Z_IS_2901U_EQ_2901U(...) \, +#define Z_IS_2902_EQ_2902(...) \, +#define Z_IS_2902U_EQ_2902(...) \, +#define Z_IS_2902_EQ_2902U(...) \, +#define Z_IS_2902U_EQ_2902U(...) \, +#define Z_IS_2903_EQ_2903(...) \, +#define Z_IS_2903U_EQ_2903(...) \, +#define Z_IS_2903_EQ_2903U(...) \, +#define Z_IS_2903U_EQ_2903U(...) \, +#define Z_IS_2904_EQ_2904(...) \, +#define Z_IS_2904U_EQ_2904(...) \, +#define Z_IS_2904_EQ_2904U(...) \, +#define Z_IS_2904U_EQ_2904U(...) \, +#define Z_IS_2905_EQ_2905(...) \, +#define Z_IS_2905U_EQ_2905(...) \, +#define Z_IS_2905_EQ_2905U(...) \, +#define Z_IS_2905U_EQ_2905U(...) \, +#define Z_IS_2906_EQ_2906(...) \, +#define Z_IS_2906U_EQ_2906(...) \, +#define Z_IS_2906_EQ_2906U(...) \, +#define Z_IS_2906U_EQ_2906U(...) \, +#define Z_IS_2907_EQ_2907(...) \, +#define Z_IS_2907U_EQ_2907(...) \, +#define Z_IS_2907_EQ_2907U(...) \, +#define Z_IS_2907U_EQ_2907U(...) \, +#define Z_IS_2908_EQ_2908(...) \, +#define Z_IS_2908U_EQ_2908(...) \, +#define Z_IS_2908_EQ_2908U(...) \, +#define Z_IS_2908U_EQ_2908U(...) \, +#define Z_IS_2909_EQ_2909(...) \, +#define Z_IS_2909U_EQ_2909(...) \, +#define Z_IS_2909_EQ_2909U(...) \, +#define Z_IS_2909U_EQ_2909U(...) \, +#define Z_IS_2910_EQ_2910(...) \, +#define Z_IS_2910U_EQ_2910(...) \, +#define Z_IS_2910_EQ_2910U(...) \, +#define Z_IS_2910U_EQ_2910U(...) \, +#define Z_IS_2911_EQ_2911(...) \, +#define Z_IS_2911U_EQ_2911(...) \, +#define Z_IS_2911_EQ_2911U(...) \, +#define Z_IS_2911U_EQ_2911U(...) \, +#define Z_IS_2912_EQ_2912(...) \, +#define Z_IS_2912U_EQ_2912(...) \, +#define Z_IS_2912_EQ_2912U(...) \, +#define Z_IS_2912U_EQ_2912U(...) \, +#define Z_IS_2913_EQ_2913(...) \, +#define Z_IS_2913U_EQ_2913(...) \, +#define Z_IS_2913_EQ_2913U(...) \, +#define Z_IS_2913U_EQ_2913U(...) \, +#define Z_IS_2914_EQ_2914(...) \, +#define Z_IS_2914U_EQ_2914(...) \, +#define Z_IS_2914_EQ_2914U(...) \, +#define Z_IS_2914U_EQ_2914U(...) \, +#define Z_IS_2915_EQ_2915(...) \, +#define Z_IS_2915U_EQ_2915(...) \, +#define Z_IS_2915_EQ_2915U(...) \, +#define Z_IS_2915U_EQ_2915U(...) \, +#define Z_IS_2916_EQ_2916(...) \, +#define Z_IS_2916U_EQ_2916(...) \, +#define Z_IS_2916_EQ_2916U(...) \, +#define Z_IS_2916U_EQ_2916U(...) \, +#define Z_IS_2917_EQ_2917(...) \, +#define Z_IS_2917U_EQ_2917(...) \, +#define Z_IS_2917_EQ_2917U(...) \, +#define Z_IS_2917U_EQ_2917U(...) \, +#define Z_IS_2918_EQ_2918(...) \, +#define Z_IS_2918U_EQ_2918(...) \, +#define Z_IS_2918_EQ_2918U(...) \, +#define Z_IS_2918U_EQ_2918U(...) \, +#define Z_IS_2919_EQ_2919(...) \, +#define Z_IS_2919U_EQ_2919(...) \, +#define Z_IS_2919_EQ_2919U(...) \, +#define Z_IS_2919U_EQ_2919U(...) \, +#define Z_IS_2920_EQ_2920(...) \, +#define Z_IS_2920U_EQ_2920(...) \, +#define Z_IS_2920_EQ_2920U(...) \, +#define Z_IS_2920U_EQ_2920U(...) \, +#define Z_IS_2921_EQ_2921(...) \, +#define Z_IS_2921U_EQ_2921(...) \, +#define Z_IS_2921_EQ_2921U(...) \, +#define Z_IS_2921U_EQ_2921U(...) \, +#define Z_IS_2922_EQ_2922(...) \, +#define Z_IS_2922U_EQ_2922(...) \, +#define Z_IS_2922_EQ_2922U(...) \, +#define Z_IS_2922U_EQ_2922U(...) \, +#define Z_IS_2923_EQ_2923(...) \, +#define Z_IS_2923U_EQ_2923(...) \, +#define Z_IS_2923_EQ_2923U(...) \, +#define Z_IS_2923U_EQ_2923U(...) \, +#define Z_IS_2924_EQ_2924(...) \, +#define Z_IS_2924U_EQ_2924(...) \, +#define Z_IS_2924_EQ_2924U(...) \, +#define Z_IS_2924U_EQ_2924U(...) \, +#define Z_IS_2925_EQ_2925(...) \, +#define Z_IS_2925U_EQ_2925(...) \, +#define Z_IS_2925_EQ_2925U(...) \, +#define Z_IS_2925U_EQ_2925U(...) \, +#define Z_IS_2926_EQ_2926(...) \, +#define Z_IS_2926U_EQ_2926(...) \, +#define Z_IS_2926_EQ_2926U(...) \, +#define Z_IS_2926U_EQ_2926U(...) \, +#define Z_IS_2927_EQ_2927(...) \, +#define Z_IS_2927U_EQ_2927(...) \, +#define Z_IS_2927_EQ_2927U(...) \, +#define Z_IS_2927U_EQ_2927U(...) \, +#define Z_IS_2928_EQ_2928(...) \, +#define Z_IS_2928U_EQ_2928(...) \, +#define Z_IS_2928_EQ_2928U(...) \, +#define Z_IS_2928U_EQ_2928U(...) \, +#define Z_IS_2929_EQ_2929(...) \, +#define Z_IS_2929U_EQ_2929(...) \, +#define Z_IS_2929_EQ_2929U(...) \, +#define Z_IS_2929U_EQ_2929U(...) \, +#define Z_IS_2930_EQ_2930(...) \, +#define Z_IS_2930U_EQ_2930(...) \, +#define Z_IS_2930_EQ_2930U(...) \, +#define Z_IS_2930U_EQ_2930U(...) \, +#define Z_IS_2931_EQ_2931(...) \, +#define Z_IS_2931U_EQ_2931(...) \, +#define Z_IS_2931_EQ_2931U(...) \, +#define Z_IS_2931U_EQ_2931U(...) \, +#define Z_IS_2932_EQ_2932(...) \, +#define Z_IS_2932U_EQ_2932(...) \, +#define Z_IS_2932_EQ_2932U(...) \, +#define Z_IS_2932U_EQ_2932U(...) \, +#define Z_IS_2933_EQ_2933(...) \, +#define Z_IS_2933U_EQ_2933(...) \, +#define Z_IS_2933_EQ_2933U(...) \, +#define Z_IS_2933U_EQ_2933U(...) \, +#define Z_IS_2934_EQ_2934(...) \, +#define Z_IS_2934U_EQ_2934(...) \, +#define Z_IS_2934_EQ_2934U(...) \, +#define Z_IS_2934U_EQ_2934U(...) \, +#define Z_IS_2935_EQ_2935(...) \, +#define Z_IS_2935U_EQ_2935(...) \, +#define Z_IS_2935_EQ_2935U(...) \, +#define Z_IS_2935U_EQ_2935U(...) \, +#define Z_IS_2936_EQ_2936(...) \, +#define Z_IS_2936U_EQ_2936(...) \, +#define Z_IS_2936_EQ_2936U(...) \, +#define Z_IS_2936U_EQ_2936U(...) \, +#define Z_IS_2937_EQ_2937(...) \, +#define Z_IS_2937U_EQ_2937(...) \, +#define Z_IS_2937_EQ_2937U(...) \, +#define Z_IS_2937U_EQ_2937U(...) \, +#define Z_IS_2938_EQ_2938(...) \, +#define Z_IS_2938U_EQ_2938(...) \, +#define Z_IS_2938_EQ_2938U(...) \, +#define Z_IS_2938U_EQ_2938U(...) \, +#define Z_IS_2939_EQ_2939(...) \, +#define Z_IS_2939U_EQ_2939(...) \, +#define Z_IS_2939_EQ_2939U(...) \, +#define Z_IS_2939U_EQ_2939U(...) \, +#define Z_IS_2940_EQ_2940(...) \, +#define Z_IS_2940U_EQ_2940(...) \, +#define Z_IS_2940_EQ_2940U(...) \, +#define Z_IS_2940U_EQ_2940U(...) \, +#define Z_IS_2941_EQ_2941(...) \, +#define Z_IS_2941U_EQ_2941(...) \, +#define Z_IS_2941_EQ_2941U(...) \, +#define Z_IS_2941U_EQ_2941U(...) \, +#define Z_IS_2942_EQ_2942(...) \, +#define Z_IS_2942U_EQ_2942(...) \, +#define Z_IS_2942_EQ_2942U(...) \, +#define Z_IS_2942U_EQ_2942U(...) \, +#define Z_IS_2943_EQ_2943(...) \, +#define Z_IS_2943U_EQ_2943(...) \, +#define Z_IS_2943_EQ_2943U(...) \, +#define Z_IS_2943U_EQ_2943U(...) \, +#define Z_IS_2944_EQ_2944(...) \, +#define Z_IS_2944U_EQ_2944(...) \, +#define Z_IS_2944_EQ_2944U(...) \, +#define Z_IS_2944U_EQ_2944U(...) \, +#define Z_IS_2945_EQ_2945(...) \, +#define Z_IS_2945U_EQ_2945(...) \, +#define Z_IS_2945_EQ_2945U(...) \, +#define Z_IS_2945U_EQ_2945U(...) \, +#define Z_IS_2946_EQ_2946(...) \, +#define Z_IS_2946U_EQ_2946(...) \, +#define Z_IS_2946_EQ_2946U(...) \, +#define Z_IS_2946U_EQ_2946U(...) \, +#define Z_IS_2947_EQ_2947(...) \, +#define Z_IS_2947U_EQ_2947(...) \, +#define Z_IS_2947_EQ_2947U(...) \, +#define Z_IS_2947U_EQ_2947U(...) \, +#define Z_IS_2948_EQ_2948(...) \, +#define Z_IS_2948U_EQ_2948(...) \, +#define Z_IS_2948_EQ_2948U(...) \, +#define Z_IS_2948U_EQ_2948U(...) \, +#define Z_IS_2949_EQ_2949(...) \, +#define Z_IS_2949U_EQ_2949(...) \, +#define Z_IS_2949_EQ_2949U(...) \, +#define Z_IS_2949U_EQ_2949U(...) \, +#define Z_IS_2950_EQ_2950(...) \, +#define Z_IS_2950U_EQ_2950(...) \, +#define Z_IS_2950_EQ_2950U(...) \, +#define Z_IS_2950U_EQ_2950U(...) \, +#define Z_IS_2951_EQ_2951(...) \, +#define Z_IS_2951U_EQ_2951(...) \, +#define Z_IS_2951_EQ_2951U(...) \, +#define Z_IS_2951U_EQ_2951U(...) \, +#define Z_IS_2952_EQ_2952(...) \, +#define Z_IS_2952U_EQ_2952(...) \, +#define Z_IS_2952_EQ_2952U(...) \, +#define Z_IS_2952U_EQ_2952U(...) \, +#define Z_IS_2953_EQ_2953(...) \, +#define Z_IS_2953U_EQ_2953(...) \, +#define Z_IS_2953_EQ_2953U(...) \, +#define Z_IS_2953U_EQ_2953U(...) \, +#define Z_IS_2954_EQ_2954(...) \, +#define Z_IS_2954U_EQ_2954(...) \, +#define Z_IS_2954_EQ_2954U(...) \, +#define Z_IS_2954U_EQ_2954U(...) \, +#define Z_IS_2955_EQ_2955(...) \, +#define Z_IS_2955U_EQ_2955(...) \, +#define Z_IS_2955_EQ_2955U(...) \, +#define Z_IS_2955U_EQ_2955U(...) \, +#define Z_IS_2956_EQ_2956(...) \, +#define Z_IS_2956U_EQ_2956(...) \, +#define Z_IS_2956_EQ_2956U(...) \, +#define Z_IS_2956U_EQ_2956U(...) \, +#define Z_IS_2957_EQ_2957(...) \, +#define Z_IS_2957U_EQ_2957(...) \, +#define Z_IS_2957_EQ_2957U(...) \, +#define Z_IS_2957U_EQ_2957U(...) \, +#define Z_IS_2958_EQ_2958(...) \, +#define Z_IS_2958U_EQ_2958(...) \, +#define Z_IS_2958_EQ_2958U(...) \, +#define Z_IS_2958U_EQ_2958U(...) \, +#define Z_IS_2959_EQ_2959(...) \, +#define Z_IS_2959U_EQ_2959(...) \, +#define Z_IS_2959_EQ_2959U(...) \, +#define Z_IS_2959U_EQ_2959U(...) \, +#define Z_IS_2960_EQ_2960(...) \, +#define Z_IS_2960U_EQ_2960(...) \, +#define Z_IS_2960_EQ_2960U(...) \, +#define Z_IS_2960U_EQ_2960U(...) \, +#define Z_IS_2961_EQ_2961(...) \, +#define Z_IS_2961U_EQ_2961(...) \, +#define Z_IS_2961_EQ_2961U(...) \, +#define Z_IS_2961U_EQ_2961U(...) \, +#define Z_IS_2962_EQ_2962(...) \, +#define Z_IS_2962U_EQ_2962(...) \, +#define Z_IS_2962_EQ_2962U(...) \, +#define Z_IS_2962U_EQ_2962U(...) \, +#define Z_IS_2963_EQ_2963(...) \, +#define Z_IS_2963U_EQ_2963(...) \, +#define Z_IS_2963_EQ_2963U(...) \, +#define Z_IS_2963U_EQ_2963U(...) \, +#define Z_IS_2964_EQ_2964(...) \, +#define Z_IS_2964U_EQ_2964(...) \, +#define Z_IS_2964_EQ_2964U(...) \, +#define Z_IS_2964U_EQ_2964U(...) \, +#define Z_IS_2965_EQ_2965(...) \, +#define Z_IS_2965U_EQ_2965(...) \, +#define Z_IS_2965_EQ_2965U(...) \, +#define Z_IS_2965U_EQ_2965U(...) \, +#define Z_IS_2966_EQ_2966(...) \, +#define Z_IS_2966U_EQ_2966(...) \, +#define Z_IS_2966_EQ_2966U(...) \, +#define Z_IS_2966U_EQ_2966U(...) \, +#define Z_IS_2967_EQ_2967(...) \, +#define Z_IS_2967U_EQ_2967(...) \, +#define Z_IS_2967_EQ_2967U(...) \, +#define Z_IS_2967U_EQ_2967U(...) \, +#define Z_IS_2968_EQ_2968(...) \, +#define Z_IS_2968U_EQ_2968(...) \, +#define Z_IS_2968_EQ_2968U(...) \, +#define Z_IS_2968U_EQ_2968U(...) \, +#define Z_IS_2969_EQ_2969(...) \, +#define Z_IS_2969U_EQ_2969(...) \, +#define Z_IS_2969_EQ_2969U(...) \, +#define Z_IS_2969U_EQ_2969U(...) \, +#define Z_IS_2970_EQ_2970(...) \, +#define Z_IS_2970U_EQ_2970(...) \, +#define Z_IS_2970_EQ_2970U(...) \, +#define Z_IS_2970U_EQ_2970U(...) \, +#define Z_IS_2971_EQ_2971(...) \, +#define Z_IS_2971U_EQ_2971(...) \, +#define Z_IS_2971_EQ_2971U(...) \, +#define Z_IS_2971U_EQ_2971U(...) \, +#define Z_IS_2972_EQ_2972(...) \, +#define Z_IS_2972U_EQ_2972(...) \, +#define Z_IS_2972_EQ_2972U(...) \, +#define Z_IS_2972U_EQ_2972U(...) \, +#define Z_IS_2973_EQ_2973(...) \, +#define Z_IS_2973U_EQ_2973(...) \, +#define Z_IS_2973_EQ_2973U(...) \, +#define Z_IS_2973U_EQ_2973U(...) \, +#define Z_IS_2974_EQ_2974(...) \, +#define Z_IS_2974U_EQ_2974(...) \, +#define Z_IS_2974_EQ_2974U(...) \, +#define Z_IS_2974U_EQ_2974U(...) \, +#define Z_IS_2975_EQ_2975(...) \, +#define Z_IS_2975U_EQ_2975(...) \, +#define Z_IS_2975_EQ_2975U(...) \, +#define Z_IS_2975U_EQ_2975U(...) \, +#define Z_IS_2976_EQ_2976(...) \, +#define Z_IS_2976U_EQ_2976(...) \, +#define Z_IS_2976_EQ_2976U(...) \, +#define Z_IS_2976U_EQ_2976U(...) \, +#define Z_IS_2977_EQ_2977(...) \, +#define Z_IS_2977U_EQ_2977(...) \, +#define Z_IS_2977_EQ_2977U(...) \, +#define Z_IS_2977U_EQ_2977U(...) \, +#define Z_IS_2978_EQ_2978(...) \, +#define Z_IS_2978U_EQ_2978(...) \, +#define Z_IS_2978_EQ_2978U(...) \, +#define Z_IS_2978U_EQ_2978U(...) \, +#define Z_IS_2979_EQ_2979(...) \, +#define Z_IS_2979U_EQ_2979(...) \, +#define Z_IS_2979_EQ_2979U(...) \, +#define Z_IS_2979U_EQ_2979U(...) \, +#define Z_IS_2980_EQ_2980(...) \, +#define Z_IS_2980U_EQ_2980(...) \, +#define Z_IS_2980_EQ_2980U(...) \, +#define Z_IS_2980U_EQ_2980U(...) \, +#define Z_IS_2981_EQ_2981(...) \, +#define Z_IS_2981U_EQ_2981(...) \, +#define Z_IS_2981_EQ_2981U(...) \, +#define Z_IS_2981U_EQ_2981U(...) \, +#define Z_IS_2982_EQ_2982(...) \, +#define Z_IS_2982U_EQ_2982(...) \, +#define Z_IS_2982_EQ_2982U(...) \, +#define Z_IS_2982U_EQ_2982U(...) \, +#define Z_IS_2983_EQ_2983(...) \, +#define Z_IS_2983U_EQ_2983(...) \, +#define Z_IS_2983_EQ_2983U(...) \, +#define Z_IS_2983U_EQ_2983U(...) \, +#define Z_IS_2984_EQ_2984(...) \, +#define Z_IS_2984U_EQ_2984(...) \, +#define Z_IS_2984_EQ_2984U(...) \, +#define Z_IS_2984U_EQ_2984U(...) \, +#define Z_IS_2985_EQ_2985(...) \, +#define Z_IS_2985U_EQ_2985(...) \, +#define Z_IS_2985_EQ_2985U(...) \, +#define Z_IS_2985U_EQ_2985U(...) \, +#define Z_IS_2986_EQ_2986(...) \, +#define Z_IS_2986U_EQ_2986(...) \, +#define Z_IS_2986_EQ_2986U(...) \, +#define Z_IS_2986U_EQ_2986U(...) \, +#define Z_IS_2987_EQ_2987(...) \, +#define Z_IS_2987U_EQ_2987(...) \, +#define Z_IS_2987_EQ_2987U(...) \, +#define Z_IS_2987U_EQ_2987U(...) \, +#define Z_IS_2988_EQ_2988(...) \, +#define Z_IS_2988U_EQ_2988(...) \, +#define Z_IS_2988_EQ_2988U(...) \, +#define Z_IS_2988U_EQ_2988U(...) \, +#define Z_IS_2989_EQ_2989(...) \, +#define Z_IS_2989U_EQ_2989(...) \, +#define Z_IS_2989_EQ_2989U(...) \, +#define Z_IS_2989U_EQ_2989U(...) \, +#define Z_IS_2990_EQ_2990(...) \, +#define Z_IS_2990U_EQ_2990(...) \, +#define Z_IS_2990_EQ_2990U(...) \, +#define Z_IS_2990U_EQ_2990U(...) \, +#define Z_IS_2991_EQ_2991(...) \, +#define Z_IS_2991U_EQ_2991(...) \, +#define Z_IS_2991_EQ_2991U(...) \, +#define Z_IS_2991U_EQ_2991U(...) \, +#define Z_IS_2992_EQ_2992(...) \, +#define Z_IS_2992U_EQ_2992(...) \, +#define Z_IS_2992_EQ_2992U(...) \, +#define Z_IS_2992U_EQ_2992U(...) \, +#define Z_IS_2993_EQ_2993(...) \, +#define Z_IS_2993U_EQ_2993(...) \, +#define Z_IS_2993_EQ_2993U(...) \, +#define Z_IS_2993U_EQ_2993U(...) \, +#define Z_IS_2994_EQ_2994(...) \, +#define Z_IS_2994U_EQ_2994(...) \, +#define Z_IS_2994_EQ_2994U(...) \, +#define Z_IS_2994U_EQ_2994U(...) \, +#define Z_IS_2995_EQ_2995(...) \, +#define Z_IS_2995U_EQ_2995(...) \, +#define Z_IS_2995_EQ_2995U(...) \, +#define Z_IS_2995U_EQ_2995U(...) \, +#define Z_IS_2996_EQ_2996(...) \, +#define Z_IS_2996U_EQ_2996(...) \, +#define Z_IS_2996_EQ_2996U(...) \, +#define Z_IS_2996U_EQ_2996U(...) \, +#define Z_IS_2997_EQ_2997(...) \, +#define Z_IS_2997U_EQ_2997(...) \, +#define Z_IS_2997_EQ_2997U(...) \, +#define Z_IS_2997U_EQ_2997U(...) \, +#define Z_IS_2998_EQ_2998(...) \, +#define Z_IS_2998U_EQ_2998(...) \, +#define Z_IS_2998_EQ_2998U(...) \, +#define Z_IS_2998U_EQ_2998U(...) \, +#define Z_IS_2999_EQ_2999(...) \, +#define Z_IS_2999U_EQ_2999(...) \, +#define Z_IS_2999_EQ_2999U(...) \, +#define Z_IS_2999U_EQ_2999U(...) \, +#define Z_IS_3000_EQ_3000(...) \, +#define Z_IS_3000U_EQ_3000(...) \, +#define Z_IS_3000_EQ_3000U(...) \, +#define Z_IS_3000U_EQ_3000U(...) \, +#define Z_IS_3001_EQ_3001(...) \, +#define Z_IS_3001U_EQ_3001(...) \, +#define Z_IS_3001_EQ_3001U(...) \, +#define Z_IS_3001U_EQ_3001U(...) \, +#define Z_IS_3002_EQ_3002(...) \, +#define Z_IS_3002U_EQ_3002(...) \, +#define Z_IS_3002_EQ_3002U(...) \, +#define Z_IS_3002U_EQ_3002U(...) \, +#define Z_IS_3003_EQ_3003(...) \, +#define Z_IS_3003U_EQ_3003(...) \, +#define Z_IS_3003_EQ_3003U(...) \, +#define Z_IS_3003U_EQ_3003U(...) \, +#define Z_IS_3004_EQ_3004(...) \, +#define Z_IS_3004U_EQ_3004(...) \, +#define Z_IS_3004_EQ_3004U(...) \, +#define Z_IS_3004U_EQ_3004U(...) \, +#define Z_IS_3005_EQ_3005(...) \, +#define Z_IS_3005U_EQ_3005(...) \, +#define Z_IS_3005_EQ_3005U(...) \, +#define Z_IS_3005U_EQ_3005U(...) \, +#define Z_IS_3006_EQ_3006(...) \, +#define Z_IS_3006U_EQ_3006(...) \, +#define Z_IS_3006_EQ_3006U(...) \, +#define Z_IS_3006U_EQ_3006U(...) \, +#define Z_IS_3007_EQ_3007(...) \, +#define Z_IS_3007U_EQ_3007(...) \, +#define Z_IS_3007_EQ_3007U(...) \, +#define Z_IS_3007U_EQ_3007U(...) \, +#define Z_IS_3008_EQ_3008(...) \, +#define Z_IS_3008U_EQ_3008(...) \, +#define Z_IS_3008_EQ_3008U(...) \, +#define Z_IS_3008U_EQ_3008U(...) \, +#define Z_IS_3009_EQ_3009(...) \, +#define Z_IS_3009U_EQ_3009(...) \, +#define Z_IS_3009_EQ_3009U(...) \, +#define Z_IS_3009U_EQ_3009U(...) \, +#define Z_IS_3010_EQ_3010(...) \, +#define Z_IS_3010U_EQ_3010(...) \, +#define Z_IS_3010_EQ_3010U(...) \, +#define Z_IS_3010U_EQ_3010U(...) \, +#define Z_IS_3011_EQ_3011(...) \, +#define Z_IS_3011U_EQ_3011(...) \, +#define Z_IS_3011_EQ_3011U(...) \, +#define Z_IS_3011U_EQ_3011U(...) \, +#define Z_IS_3012_EQ_3012(...) \, +#define Z_IS_3012U_EQ_3012(...) \, +#define Z_IS_3012_EQ_3012U(...) \, +#define Z_IS_3012U_EQ_3012U(...) \, +#define Z_IS_3013_EQ_3013(...) \, +#define Z_IS_3013U_EQ_3013(...) \, +#define Z_IS_3013_EQ_3013U(...) \, +#define Z_IS_3013U_EQ_3013U(...) \, +#define Z_IS_3014_EQ_3014(...) \, +#define Z_IS_3014U_EQ_3014(...) \, +#define Z_IS_3014_EQ_3014U(...) \, +#define Z_IS_3014U_EQ_3014U(...) \, +#define Z_IS_3015_EQ_3015(...) \, +#define Z_IS_3015U_EQ_3015(...) \, +#define Z_IS_3015_EQ_3015U(...) \, +#define Z_IS_3015U_EQ_3015U(...) \, +#define Z_IS_3016_EQ_3016(...) \, +#define Z_IS_3016U_EQ_3016(...) \, +#define Z_IS_3016_EQ_3016U(...) \, +#define Z_IS_3016U_EQ_3016U(...) \, +#define Z_IS_3017_EQ_3017(...) \, +#define Z_IS_3017U_EQ_3017(...) \, +#define Z_IS_3017_EQ_3017U(...) \, +#define Z_IS_3017U_EQ_3017U(...) \, +#define Z_IS_3018_EQ_3018(...) \, +#define Z_IS_3018U_EQ_3018(...) \, +#define Z_IS_3018_EQ_3018U(...) \, +#define Z_IS_3018U_EQ_3018U(...) \, +#define Z_IS_3019_EQ_3019(...) \, +#define Z_IS_3019U_EQ_3019(...) \, +#define Z_IS_3019_EQ_3019U(...) \, +#define Z_IS_3019U_EQ_3019U(...) \, +#define Z_IS_3020_EQ_3020(...) \, +#define Z_IS_3020U_EQ_3020(...) \, +#define Z_IS_3020_EQ_3020U(...) \, +#define Z_IS_3020U_EQ_3020U(...) \, +#define Z_IS_3021_EQ_3021(...) \, +#define Z_IS_3021U_EQ_3021(...) \, +#define Z_IS_3021_EQ_3021U(...) \, +#define Z_IS_3021U_EQ_3021U(...) \, +#define Z_IS_3022_EQ_3022(...) \, +#define Z_IS_3022U_EQ_3022(...) \, +#define Z_IS_3022_EQ_3022U(...) \, +#define Z_IS_3022U_EQ_3022U(...) \, +#define Z_IS_3023_EQ_3023(...) \, +#define Z_IS_3023U_EQ_3023(...) \, +#define Z_IS_3023_EQ_3023U(...) \, +#define Z_IS_3023U_EQ_3023U(...) \, +#define Z_IS_3024_EQ_3024(...) \, +#define Z_IS_3024U_EQ_3024(...) \, +#define Z_IS_3024_EQ_3024U(...) \, +#define Z_IS_3024U_EQ_3024U(...) \, +#define Z_IS_3025_EQ_3025(...) \, +#define Z_IS_3025U_EQ_3025(...) \, +#define Z_IS_3025_EQ_3025U(...) \, +#define Z_IS_3025U_EQ_3025U(...) \, +#define Z_IS_3026_EQ_3026(...) \, +#define Z_IS_3026U_EQ_3026(...) \, +#define Z_IS_3026_EQ_3026U(...) \, +#define Z_IS_3026U_EQ_3026U(...) \, +#define Z_IS_3027_EQ_3027(...) \, +#define Z_IS_3027U_EQ_3027(...) \, +#define Z_IS_3027_EQ_3027U(...) \, +#define Z_IS_3027U_EQ_3027U(...) \, +#define Z_IS_3028_EQ_3028(...) \, +#define Z_IS_3028U_EQ_3028(...) \, +#define Z_IS_3028_EQ_3028U(...) \, +#define Z_IS_3028U_EQ_3028U(...) \, +#define Z_IS_3029_EQ_3029(...) \, +#define Z_IS_3029U_EQ_3029(...) \, +#define Z_IS_3029_EQ_3029U(...) \, +#define Z_IS_3029U_EQ_3029U(...) \, +#define Z_IS_3030_EQ_3030(...) \, +#define Z_IS_3030U_EQ_3030(...) \, +#define Z_IS_3030_EQ_3030U(...) \, +#define Z_IS_3030U_EQ_3030U(...) \, +#define Z_IS_3031_EQ_3031(...) \, +#define Z_IS_3031U_EQ_3031(...) \, +#define Z_IS_3031_EQ_3031U(...) \, +#define Z_IS_3031U_EQ_3031U(...) \, +#define Z_IS_3032_EQ_3032(...) \, +#define Z_IS_3032U_EQ_3032(...) \, +#define Z_IS_3032_EQ_3032U(...) \, +#define Z_IS_3032U_EQ_3032U(...) \, +#define Z_IS_3033_EQ_3033(...) \, +#define Z_IS_3033U_EQ_3033(...) \, +#define Z_IS_3033_EQ_3033U(...) \, +#define Z_IS_3033U_EQ_3033U(...) \, +#define Z_IS_3034_EQ_3034(...) \, +#define Z_IS_3034U_EQ_3034(...) \, +#define Z_IS_3034_EQ_3034U(...) \, +#define Z_IS_3034U_EQ_3034U(...) \, +#define Z_IS_3035_EQ_3035(...) \, +#define Z_IS_3035U_EQ_3035(...) \, +#define Z_IS_3035_EQ_3035U(...) \, +#define Z_IS_3035U_EQ_3035U(...) \, +#define Z_IS_3036_EQ_3036(...) \, +#define Z_IS_3036U_EQ_3036(...) \, +#define Z_IS_3036_EQ_3036U(...) \, +#define Z_IS_3036U_EQ_3036U(...) \, +#define Z_IS_3037_EQ_3037(...) \, +#define Z_IS_3037U_EQ_3037(...) \, +#define Z_IS_3037_EQ_3037U(...) \, +#define Z_IS_3037U_EQ_3037U(...) \, +#define Z_IS_3038_EQ_3038(...) \, +#define Z_IS_3038U_EQ_3038(...) \, +#define Z_IS_3038_EQ_3038U(...) \, +#define Z_IS_3038U_EQ_3038U(...) \, +#define Z_IS_3039_EQ_3039(...) \, +#define Z_IS_3039U_EQ_3039(...) \, +#define Z_IS_3039_EQ_3039U(...) \, +#define Z_IS_3039U_EQ_3039U(...) \, +#define Z_IS_3040_EQ_3040(...) \, +#define Z_IS_3040U_EQ_3040(...) \, +#define Z_IS_3040_EQ_3040U(...) \, +#define Z_IS_3040U_EQ_3040U(...) \, +#define Z_IS_3041_EQ_3041(...) \, +#define Z_IS_3041U_EQ_3041(...) \, +#define Z_IS_3041_EQ_3041U(...) \, +#define Z_IS_3041U_EQ_3041U(...) \, +#define Z_IS_3042_EQ_3042(...) \, +#define Z_IS_3042U_EQ_3042(...) \, +#define Z_IS_3042_EQ_3042U(...) \, +#define Z_IS_3042U_EQ_3042U(...) \, +#define Z_IS_3043_EQ_3043(...) \, +#define Z_IS_3043U_EQ_3043(...) \, +#define Z_IS_3043_EQ_3043U(...) \, +#define Z_IS_3043U_EQ_3043U(...) \, +#define Z_IS_3044_EQ_3044(...) \, +#define Z_IS_3044U_EQ_3044(...) \, +#define Z_IS_3044_EQ_3044U(...) \, +#define Z_IS_3044U_EQ_3044U(...) \, +#define Z_IS_3045_EQ_3045(...) \, +#define Z_IS_3045U_EQ_3045(...) \, +#define Z_IS_3045_EQ_3045U(...) \, +#define Z_IS_3045U_EQ_3045U(...) \, +#define Z_IS_3046_EQ_3046(...) \, +#define Z_IS_3046U_EQ_3046(...) \, +#define Z_IS_3046_EQ_3046U(...) \, +#define Z_IS_3046U_EQ_3046U(...) \, +#define Z_IS_3047_EQ_3047(...) \, +#define Z_IS_3047U_EQ_3047(...) \, +#define Z_IS_3047_EQ_3047U(...) \, +#define Z_IS_3047U_EQ_3047U(...) \, +#define Z_IS_3048_EQ_3048(...) \, +#define Z_IS_3048U_EQ_3048(...) \, +#define Z_IS_3048_EQ_3048U(...) \, +#define Z_IS_3048U_EQ_3048U(...) \, +#define Z_IS_3049_EQ_3049(...) \, +#define Z_IS_3049U_EQ_3049(...) \, +#define Z_IS_3049_EQ_3049U(...) \, +#define Z_IS_3049U_EQ_3049U(...) \, +#define Z_IS_3050_EQ_3050(...) \, +#define Z_IS_3050U_EQ_3050(...) \, +#define Z_IS_3050_EQ_3050U(...) \, +#define Z_IS_3050U_EQ_3050U(...) \, +#define Z_IS_3051_EQ_3051(...) \, +#define Z_IS_3051U_EQ_3051(...) \, +#define Z_IS_3051_EQ_3051U(...) \, +#define Z_IS_3051U_EQ_3051U(...) \, +#define Z_IS_3052_EQ_3052(...) \, +#define Z_IS_3052U_EQ_3052(...) \, +#define Z_IS_3052_EQ_3052U(...) \, +#define Z_IS_3052U_EQ_3052U(...) \, +#define Z_IS_3053_EQ_3053(...) \, +#define Z_IS_3053U_EQ_3053(...) \, +#define Z_IS_3053_EQ_3053U(...) \, +#define Z_IS_3053U_EQ_3053U(...) \, +#define Z_IS_3054_EQ_3054(...) \, +#define Z_IS_3054U_EQ_3054(...) \, +#define Z_IS_3054_EQ_3054U(...) \, +#define Z_IS_3054U_EQ_3054U(...) \, +#define Z_IS_3055_EQ_3055(...) \, +#define Z_IS_3055U_EQ_3055(...) \, +#define Z_IS_3055_EQ_3055U(...) \, +#define Z_IS_3055U_EQ_3055U(...) \, +#define Z_IS_3056_EQ_3056(...) \, +#define Z_IS_3056U_EQ_3056(...) \, +#define Z_IS_3056_EQ_3056U(...) \, +#define Z_IS_3056U_EQ_3056U(...) \, +#define Z_IS_3057_EQ_3057(...) \, +#define Z_IS_3057U_EQ_3057(...) \, +#define Z_IS_3057_EQ_3057U(...) \, +#define Z_IS_3057U_EQ_3057U(...) \, +#define Z_IS_3058_EQ_3058(...) \, +#define Z_IS_3058U_EQ_3058(...) \, +#define Z_IS_3058_EQ_3058U(...) \, +#define Z_IS_3058U_EQ_3058U(...) \, +#define Z_IS_3059_EQ_3059(...) \, +#define Z_IS_3059U_EQ_3059(...) \, +#define Z_IS_3059_EQ_3059U(...) \, +#define Z_IS_3059U_EQ_3059U(...) \, +#define Z_IS_3060_EQ_3060(...) \, +#define Z_IS_3060U_EQ_3060(...) \, +#define Z_IS_3060_EQ_3060U(...) \, +#define Z_IS_3060U_EQ_3060U(...) \, +#define Z_IS_3061_EQ_3061(...) \, +#define Z_IS_3061U_EQ_3061(...) \, +#define Z_IS_3061_EQ_3061U(...) \, +#define Z_IS_3061U_EQ_3061U(...) \, +#define Z_IS_3062_EQ_3062(...) \, +#define Z_IS_3062U_EQ_3062(...) \, +#define Z_IS_3062_EQ_3062U(...) \, +#define Z_IS_3062U_EQ_3062U(...) \, +#define Z_IS_3063_EQ_3063(...) \, +#define Z_IS_3063U_EQ_3063(...) \, +#define Z_IS_3063_EQ_3063U(...) \, +#define Z_IS_3063U_EQ_3063U(...) \, +#define Z_IS_3064_EQ_3064(...) \, +#define Z_IS_3064U_EQ_3064(...) \, +#define Z_IS_3064_EQ_3064U(...) \, +#define Z_IS_3064U_EQ_3064U(...) \, +#define Z_IS_3065_EQ_3065(...) \, +#define Z_IS_3065U_EQ_3065(...) \, +#define Z_IS_3065_EQ_3065U(...) \, +#define Z_IS_3065U_EQ_3065U(...) \, +#define Z_IS_3066_EQ_3066(...) \, +#define Z_IS_3066U_EQ_3066(...) \, +#define Z_IS_3066_EQ_3066U(...) \, +#define Z_IS_3066U_EQ_3066U(...) \, +#define Z_IS_3067_EQ_3067(...) \, +#define Z_IS_3067U_EQ_3067(...) \, +#define Z_IS_3067_EQ_3067U(...) \, +#define Z_IS_3067U_EQ_3067U(...) \, +#define Z_IS_3068_EQ_3068(...) \, +#define Z_IS_3068U_EQ_3068(...) \, +#define Z_IS_3068_EQ_3068U(...) \, +#define Z_IS_3068U_EQ_3068U(...) \, +#define Z_IS_3069_EQ_3069(...) \, +#define Z_IS_3069U_EQ_3069(...) \, +#define Z_IS_3069_EQ_3069U(...) \, +#define Z_IS_3069U_EQ_3069U(...) \, +#define Z_IS_3070_EQ_3070(...) \, +#define Z_IS_3070U_EQ_3070(...) \, +#define Z_IS_3070_EQ_3070U(...) \, +#define Z_IS_3070U_EQ_3070U(...) \, +#define Z_IS_3071_EQ_3071(...) \, +#define Z_IS_3071U_EQ_3071(...) \, +#define Z_IS_3071_EQ_3071U(...) \, +#define Z_IS_3071U_EQ_3071U(...) \, +#define Z_IS_3072_EQ_3072(...) \, +#define Z_IS_3072U_EQ_3072(...) \, +#define Z_IS_3072_EQ_3072U(...) \, +#define Z_IS_3072U_EQ_3072U(...) \, +#define Z_IS_3073_EQ_3073(...) \, +#define Z_IS_3073U_EQ_3073(...) \, +#define Z_IS_3073_EQ_3073U(...) \, +#define Z_IS_3073U_EQ_3073U(...) \, +#define Z_IS_3074_EQ_3074(...) \, +#define Z_IS_3074U_EQ_3074(...) \, +#define Z_IS_3074_EQ_3074U(...) \, +#define Z_IS_3074U_EQ_3074U(...) \, +#define Z_IS_3075_EQ_3075(...) \, +#define Z_IS_3075U_EQ_3075(...) \, +#define Z_IS_3075_EQ_3075U(...) \, +#define Z_IS_3075U_EQ_3075U(...) \, +#define Z_IS_3076_EQ_3076(...) \, +#define Z_IS_3076U_EQ_3076(...) \, +#define Z_IS_3076_EQ_3076U(...) \, +#define Z_IS_3076U_EQ_3076U(...) \, +#define Z_IS_3077_EQ_3077(...) \, +#define Z_IS_3077U_EQ_3077(...) \, +#define Z_IS_3077_EQ_3077U(...) \, +#define Z_IS_3077U_EQ_3077U(...) \, +#define Z_IS_3078_EQ_3078(...) \, +#define Z_IS_3078U_EQ_3078(...) \, +#define Z_IS_3078_EQ_3078U(...) \, +#define Z_IS_3078U_EQ_3078U(...) \, +#define Z_IS_3079_EQ_3079(...) \, +#define Z_IS_3079U_EQ_3079(...) \, +#define Z_IS_3079_EQ_3079U(...) \, +#define Z_IS_3079U_EQ_3079U(...) \, +#define Z_IS_3080_EQ_3080(...) \, +#define Z_IS_3080U_EQ_3080(...) \, +#define Z_IS_3080_EQ_3080U(...) \, +#define Z_IS_3080U_EQ_3080U(...) \, +#define Z_IS_3081_EQ_3081(...) \, +#define Z_IS_3081U_EQ_3081(...) \, +#define Z_IS_3081_EQ_3081U(...) \, +#define Z_IS_3081U_EQ_3081U(...) \, +#define Z_IS_3082_EQ_3082(...) \, +#define Z_IS_3082U_EQ_3082(...) \, +#define Z_IS_3082_EQ_3082U(...) \, +#define Z_IS_3082U_EQ_3082U(...) \, +#define Z_IS_3083_EQ_3083(...) \, +#define Z_IS_3083U_EQ_3083(...) \, +#define Z_IS_3083_EQ_3083U(...) \, +#define Z_IS_3083U_EQ_3083U(...) \, +#define Z_IS_3084_EQ_3084(...) \, +#define Z_IS_3084U_EQ_3084(...) \, +#define Z_IS_3084_EQ_3084U(...) \, +#define Z_IS_3084U_EQ_3084U(...) \, +#define Z_IS_3085_EQ_3085(...) \, +#define Z_IS_3085U_EQ_3085(...) \, +#define Z_IS_3085_EQ_3085U(...) \, +#define Z_IS_3085U_EQ_3085U(...) \, +#define Z_IS_3086_EQ_3086(...) \, +#define Z_IS_3086U_EQ_3086(...) \, +#define Z_IS_3086_EQ_3086U(...) \, +#define Z_IS_3086U_EQ_3086U(...) \, +#define Z_IS_3087_EQ_3087(...) \, +#define Z_IS_3087U_EQ_3087(...) \, +#define Z_IS_3087_EQ_3087U(...) \, +#define Z_IS_3087U_EQ_3087U(...) \, +#define Z_IS_3088_EQ_3088(...) \, +#define Z_IS_3088U_EQ_3088(...) \, +#define Z_IS_3088_EQ_3088U(...) \, +#define Z_IS_3088U_EQ_3088U(...) \, +#define Z_IS_3089_EQ_3089(...) \, +#define Z_IS_3089U_EQ_3089(...) \, +#define Z_IS_3089_EQ_3089U(...) \, +#define Z_IS_3089U_EQ_3089U(...) \, +#define Z_IS_3090_EQ_3090(...) \, +#define Z_IS_3090U_EQ_3090(...) \, +#define Z_IS_3090_EQ_3090U(...) \, +#define Z_IS_3090U_EQ_3090U(...) \, +#define Z_IS_3091_EQ_3091(...) \, +#define Z_IS_3091U_EQ_3091(...) \, +#define Z_IS_3091_EQ_3091U(...) \, +#define Z_IS_3091U_EQ_3091U(...) \, +#define Z_IS_3092_EQ_3092(...) \, +#define Z_IS_3092U_EQ_3092(...) \, +#define Z_IS_3092_EQ_3092U(...) \, +#define Z_IS_3092U_EQ_3092U(...) \, +#define Z_IS_3093_EQ_3093(...) \, +#define Z_IS_3093U_EQ_3093(...) \, +#define Z_IS_3093_EQ_3093U(...) \, +#define Z_IS_3093U_EQ_3093U(...) \, +#define Z_IS_3094_EQ_3094(...) \, +#define Z_IS_3094U_EQ_3094(...) \, +#define Z_IS_3094_EQ_3094U(...) \, +#define Z_IS_3094U_EQ_3094U(...) \, +#define Z_IS_3095_EQ_3095(...) \, +#define Z_IS_3095U_EQ_3095(...) \, +#define Z_IS_3095_EQ_3095U(...) \, +#define Z_IS_3095U_EQ_3095U(...) \, +#define Z_IS_3096_EQ_3096(...) \, +#define Z_IS_3096U_EQ_3096(...) \, +#define Z_IS_3096_EQ_3096U(...) \, +#define Z_IS_3096U_EQ_3096U(...) \, +#define Z_IS_3097_EQ_3097(...) \, +#define Z_IS_3097U_EQ_3097(...) \, +#define Z_IS_3097_EQ_3097U(...) \, +#define Z_IS_3097U_EQ_3097U(...) \, +#define Z_IS_3098_EQ_3098(...) \, +#define Z_IS_3098U_EQ_3098(...) \, +#define Z_IS_3098_EQ_3098U(...) \, +#define Z_IS_3098U_EQ_3098U(...) \, +#define Z_IS_3099_EQ_3099(...) \, +#define Z_IS_3099U_EQ_3099(...) \, +#define Z_IS_3099_EQ_3099U(...) \, +#define Z_IS_3099U_EQ_3099U(...) \, +#define Z_IS_3100_EQ_3100(...) \, +#define Z_IS_3100U_EQ_3100(...) \, +#define Z_IS_3100_EQ_3100U(...) \, +#define Z_IS_3100U_EQ_3100U(...) \, +#define Z_IS_3101_EQ_3101(...) \, +#define Z_IS_3101U_EQ_3101(...) \, +#define Z_IS_3101_EQ_3101U(...) \, +#define Z_IS_3101U_EQ_3101U(...) \, +#define Z_IS_3102_EQ_3102(...) \, +#define Z_IS_3102U_EQ_3102(...) \, +#define Z_IS_3102_EQ_3102U(...) \, +#define Z_IS_3102U_EQ_3102U(...) \, +#define Z_IS_3103_EQ_3103(...) \, +#define Z_IS_3103U_EQ_3103(...) \, +#define Z_IS_3103_EQ_3103U(...) \, +#define Z_IS_3103U_EQ_3103U(...) \, +#define Z_IS_3104_EQ_3104(...) \, +#define Z_IS_3104U_EQ_3104(...) \, +#define Z_IS_3104_EQ_3104U(...) \, +#define Z_IS_3104U_EQ_3104U(...) \, +#define Z_IS_3105_EQ_3105(...) \, +#define Z_IS_3105U_EQ_3105(...) \, +#define Z_IS_3105_EQ_3105U(...) \, +#define Z_IS_3105U_EQ_3105U(...) \, +#define Z_IS_3106_EQ_3106(...) \, +#define Z_IS_3106U_EQ_3106(...) \, +#define Z_IS_3106_EQ_3106U(...) \, +#define Z_IS_3106U_EQ_3106U(...) \, +#define Z_IS_3107_EQ_3107(...) \, +#define Z_IS_3107U_EQ_3107(...) \, +#define Z_IS_3107_EQ_3107U(...) \, +#define Z_IS_3107U_EQ_3107U(...) \, +#define Z_IS_3108_EQ_3108(...) \, +#define Z_IS_3108U_EQ_3108(...) \, +#define Z_IS_3108_EQ_3108U(...) \, +#define Z_IS_3108U_EQ_3108U(...) \, +#define Z_IS_3109_EQ_3109(...) \, +#define Z_IS_3109U_EQ_3109(...) \, +#define Z_IS_3109_EQ_3109U(...) \, +#define Z_IS_3109U_EQ_3109U(...) \, +#define Z_IS_3110_EQ_3110(...) \, +#define Z_IS_3110U_EQ_3110(...) \, +#define Z_IS_3110_EQ_3110U(...) \, +#define Z_IS_3110U_EQ_3110U(...) \, +#define Z_IS_3111_EQ_3111(...) \, +#define Z_IS_3111U_EQ_3111(...) \, +#define Z_IS_3111_EQ_3111U(...) \, +#define Z_IS_3111U_EQ_3111U(...) \, +#define Z_IS_3112_EQ_3112(...) \, +#define Z_IS_3112U_EQ_3112(...) \, +#define Z_IS_3112_EQ_3112U(...) \, +#define Z_IS_3112U_EQ_3112U(...) \, +#define Z_IS_3113_EQ_3113(...) \, +#define Z_IS_3113U_EQ_3113(...) \, +#define Z_IS_3113_EQ_3113U(...) \, +#define Z_IS_3113U_EQ_3113U(...) \, +#define Z_IS_3114_EQ_3114(...) \, +#define Z_IS_3114U_EQ_3114(...) \, +#define Z_IS_3114_EQ_3114U(...) \, +#define Z_IS_3114U_EQ_3114U(...) \, +#define Z_IS_3115_EQ_3115(...) \, +#define Z_IS_3115U_EQ_3115(...) \, +#define Z_IS_3115_EQ_3115U(...) \, +#define Z_IS_3115U_EQ_3115U(...) \, +#define Z_IS_3116_EQ_3116(...) \, +#define Z_IS_3116U_EQ_3116(...) \, +#define Z_IS_3116_EQ_3116U(...) \, +#define Z_IS_3116U_EQ_3116U(...) \, +#define Z_IS_3117_EQ_3117(...) \, +#define Z_IS_3117U_EQ_3117(...) \, +#define Z_IS_3117_EQ_3117U(...) \, +#define Z_IS_3117U_EQ_3117U(...) \, +#define Z_IS_3118_EQ_3118(...) \, +#define Z_IS_3118U_EQ_3118(...) \, +#define Z_IS_3118_EQ_3118U(...) \, +#define Z_IS_3118U_EQ_3118U(...) \, +#define Z_IS_3119_EQ_3119(...) \, +#define Z_IS_3119U_EQ_3119(...) \, +#define Z_IS_3119_EQ_3119U(...) \, +#define Z_IS_3119U_EQ_3119U(...) \, +#define Z_IS_3120_EQ_3120(...) \, +#define Z_IS_3120U_EQ_3120(...) \, +#define Z_IS_3120_EQ_3120U(...) \, +#define Z_IS_3120U_EQ_3120U(...) \, +#define Z_IS_3121_EQ_3121(...) \, +#define Z_IS_3121U_EQ_3121(...) \, +#define Z_IS_3121_EQ_3121U(...) \, +#define Z_IS_3121U_EQ_3121U(...) \, +#define Z_IS_3122_EQ_3122(...) \, +#define Z_IS_3122U_EQ_3122(...) \, +#define Z_IS_3122_EQ_3122U(...) \, +#define Z_IS_3122U_EQ_3122U(...) \, +#define Z_IS_3123_EQ_3123(...) \, +#define Z_IS_3123U_EQ_3123(...) \, +#define Z_IS_3123_EQ_3123U(...) \, +#define Z_IS_3123U_EQ_3123U(...) \, +#define Z_IS_3124_EQ_3124(...) \, +#define Z_IS_3124U_EQ_3124(...) \, +#define Z_IS_3124_EQ_3124U(...) \, +#define Z_IS_3124U_EQ_3124U(...) \, +#define Z_IS_3125_EQ_3125(...) \, +#define Z_IS_3125U_EQ_3125(...) \, +#define Z_IS_3125_EQ_3125U(...) \, +#define Z_IS_3125U_EQ_3125U(...) \, +#define Z_IS_3126_EQ_3126(...) \, +#define Z_IS_3126U_EQ_3126(...) \, +#define Z_IS_3126_EQ_3126U(...) \, +#define Z_IS_3126U_EQ_3126U(...) \, +#define Z_IS_3127_EQ_3127(...) \, +#define Z_IS_3127U_EQ_3127(...) \, +#define Z_IS_3127_EQ_3127U(...) \, +#define Z_IS_3127U_EQ_3127U(...) \, +#define Z_IS_3128_EQ_3128(...) \, +#define Z_IS_3128U_EQ_3128(...) \, +#define Z_IS_3128_EQ_3128U(...) \, +#define Z_IS_3128U_EQ_3128U(...) \, +#define Z_IS_3129_EQ_3129(...) \, +#define Z_IS_3129U_EQ_3129(...) \, +#define Z_IS_3129_EQ_3129U(...) \, +#define Z_IS_3129U_EQ_3129U(...) \, +#define Z_IS_3130_EQ_3130(...) \, +#define Z_IS_3130U_EQ_3130(...) \, +#define Z_IS_3130_EQ_3130U(...) \, +#define Z_IS_3130U_EQ_3130U(...) \, +#define Z_IS_3131_EQ_3131(...) \, +#define Z_IS_3131U_EQ_3131(...) \, +#define Z_IS_3131_EQ_3131U(...) \, +#define Z_IS_3131U_EQ_3131U(...) \, +#define Z_IS_3132_EQ_3132(...) \, +#define Z_IS_3132U_EQ_3132(...) \, +#define Z_IS_3132_EQ_3132U(...) \, +#define Z_IS_3132U_EQ_3132U(...) \, +#define Z_IS_3133_EQ_3133(...) \, +#define Z_IS_3133U_EQ_3133(...) \, +#define Z_IS_3133_EQ_3133U(...) \, +#define Z_IS_3133U_EQ_3133U(...) \, +#define Z_IS_3134_EQ_3134(...) \, +#define Z_IS_3134U_EQ_3134(...) \, +#define Z_IS_3134_EQ_3134U(...) \, +#define Z_IS_3134U_EQ_3134U(...) \, +#define Z_IS_3135_EQ_3135(...) \, +#define Z_IS_3135U_EQ_3135(...) \, +#define Z_IS_3135_EQ_3135U(...) \, +#define Z_IS_3135U_EQ_3135U(...) \, +#define Z_IS_3136_EQ_3136(...) \, +#define Z_IS_3136U_EQ_3136(...) \, +#define Z_IS_3136_EQ_3136U(...) \, +#define Z_IS_3136U_EQ_3136U(...) \, +#define Z_IS_3137_EQ_3137(...) \, +#define Z_IS_3137U_EQ_3137(...) \, +#define Z_IS_3137_EQ_3137U(...) \, +#define Z_IS_3137U_EQ_3137U(...) \, +#define Z_IS_3138_EQ_3138(...) \, +#define Z_IS_3138U_EQ_3138(...) \, +#define Z_IS_3138_EQ_3138U(...) \, +#define Z_IS_3138U_EQ_3138U(...) \, +#define Z_IS_3139_EQ_3139(...) \, +#define Z_IS_3139U_EQ_3139(...) \, +#define Z_IS_3139_EQ_3139U(...) \, +#define Z_IS_3139U_EQ_3139U(...) \, +#define Z_IS_3140_EQ_3140(...) \, +#define Z_IS_3140U_EQ_3140(...) \, +#define Z_IS_3140_EQ_3140U(...) \, +#define Z_IS_3140U_EQ_3140U(...) \, +#define Z_IS_3141_EQ_3141(...) \, +#define Z_IS_3141U_EQ_3141(...) \, +#define Z_IS_3141_EQ_3141U(...) \, +#define Z_IS_3141U_EQ_3141U(...) \, +#define Z_IS_3142_EQ_3142(...) \, +#define Z_IS_3142U_EQ_3142(...) \, +#define Z_IS_3142_EQ_3142U(...) \, +#define Z_IS_3142U_EQ_3142U(...) \, +#define Z_IS_3143_EQ_3143(...) \, +#define Z_IS_3143U_EQ_3143(...) \, +#define Z_IS_3143_EQ_3143U(...) \, +#define Z_IS_3143U_EQ_3143U(...) \, +#define Z_IS_3144_EQ_3144(...) \, +#define Z_IS_3144U_EQ_3144(...) \, +#define Z_IS_3144_EQ_3144U(...) \, +#define Z_IS_3144U_EQ_3144U(...) \, +#define Z_IS_3145_EQ_3145(...) \, +#define Z_IS_3145U_EQ_3145(...) \, +#define Z_IS_3145_EQ_3145U(...) \, +#define Z_IS_3145U_EQ_3145U(...) \, +#define Z_IS_3146_EQ_3146(...) \, +#define Z_IS_3146U_EQ_3146(...) \, +#define Z_IS_3146_EQ_3146U(...) \, +#define Z_IS_3146U_EQ_3146U(...) \, +#define Z_IS_3147_EQ_3147(...) \, +#define Z_IS_3147U_EQ_3147(...) \, +#define Z_IS_3147_EQ_3147U(...) \, +#define Z_IS_3147U_EQ_3147U(...) \, +#define Z_IS_3148_EQ_3148(...) \, +#define Z_IS_3148U_EQ_3148(...) \, +#define Z_IS_3148_EQ_3148U(...) \, +#define Z_IS_3148U_EQ_3148U(...) \, +#define Z_IS_3149_EQ_3149(...) \, +#define Z_IS_3149U_EQ_3149(...) \, +#define Z_IS_3149_EQ_3149U(...) \, +#define Z_IS_3149U_EQ_3149U(...) \, +#define Z_IS_3150_EQ_3150(...) \, +#define Z_IS_3150U_EQ_3150(...) \, +#define Z_IS_3150_EQ_3150U(...) \, +#define Z_IS_3150U_EQ_3150U(...) \, +#define Z_IS_3151_EQ_3151(...) \, +#define Z_IS_3151U_EQ_3151(...) \, +#define Z_IS_3151_EQ_3151U(...) \, +#define Z_IS_3151U_EQ_3151U(...) \, +#define Z_IS_3152_EQ_3152(...) \, +#define Z_IS_3152U_EQ_3152(...) \, +#define Z_IS_3152_EQ_3152U(...) \, +#define Z_IS_3152U_EQ_3152U(...) \, +#define Z_IS_3153_EQ_3153(...) \, +#define Z_IS_3153U_EQ_3153(...) \, +#define Z_IS_3153_EQ_3153U(...) \, +#define Z_IS_3153U_EQ_3153U(...) \, +#define Z_IS_3154_EQ_3154(...) \, +#define Z_IS_3154U_EQ_3154(...) \, +#define Z_IS_3154_EQ_3154U(...) \, +#define Z_IS_3154U_EQ_3154U(...) \, +#define Z_IS_3155_EQ_3155(...) \, +#define Z_IS_3155U_EQ_3155(...) \, +#define Z_IS_3155_EQ_3155U(...) \, +#define Z_IS_3155U_EQ_3155U(...) \, +#define Z_IS_3156_EQ_3156(...) \, +#define Z_IS_3156U_EQ_3156(...) \, +#define Z_IS_3156_EQ_3156U(...) \, +#define Z_IS_3156U_EQ_3156U(...) \, +#define Z_IS_3157_EQ_3157(...) \, +#define Z_IS_3157U_EQ_3157(...) \, +#define Z_IS_3157_EQ_3157U(...) \, +#define Z_IS_3157U_EQ_3157U(...) \, +#define Z_IS_3158_EQ_3158(...) \, +#define Z_IS_3158U_EQ_3158(...) \, +#define Z_IS_3158_EQ_3158U(...) \, +#define Z_IS_3158U_EQ_3158U(...) \, +#define Z_IS_3159_EQ_3159(...) \, +#define Z_IS_3159U_EQ_3159(...) \, +#define Z_IS_3159_EQ_3159U(...) \, +#define Z_IS_3159U_EQ_3159U(...) \, +#define Z_IS_3160_EQ_3160(...) \, +#define Z_IS_3160U_EQ_3160(...) \, +#define Z_IS_3160_EQ_3160U(...) \, +#define Z_IS_3160U_EQ_3160U(...) \, +#define Z_IS_3161_EQ_3161(...) \, +#define Z_IS_3161U_EQ_3161(...) \, +#define Z_IS_3161_EQ_3161U(...) \, +#define Z_IS_3161U_EQ_3161U(...) \, +#define Z_IS_3162_EQ_3162(...) \, +#define Z_IS_3162U_EQ_3162(...) \, +#define Z_IS_3162_EQ_3162U(...) \, +#define Z_IS_3162U_EQ_3162U(...) \, +#define Z_IS_3163_EQ_3163(...) \, +#define Z_IS_3163U_EQ_3163(...) \, +#define Z_IS_3163_EQ_3163U(...) \, +#define Z_IS_3163U_EQ_3163U(...) \, +#define Z_IS_3164_EQ_3164(...) \, +#define Z_IS_3164U_EQ_3164(...) \, +#define Z_IS_3164_EQ_3164U(...) \, +#define Z_IS_3164U_EQ_3164U(...) \, +#define Z_IS_3165_EQ_3165(...) \, +#define Z_IS_3165U_EQ_3165(...) \, +#define Z_IS_3165_EQ_3165U(...) \, +#define Z_IS_3165U_EQ_3165U(...) \, +#define Z_IS_3166_EQ_3166(...) \, +#define Z_IS_3166U_EQ_3166(...) \, +#define Z_IS_3166_EQ_3166U(...) \, +#define Z_IS_3166U_EQ_3166U(...) \, +#define Z_IS_3167_EQ_3167(...) \, +#define Z_IS_3167U_EQ_3167(...) \, +#define Z_IS_3167_EQ_3167U(...) \, +#define Z_IS_3167U_EQ_3167U(...) \, +#define Z_IS_3168_EQ_3168(...) \, +#define Z_IS_3168U_EQ_3168(...) \, +#define Z_IS_3168_EQ_3168U(...) \, +#define Z_IS_3168U_EQ_3168U(...) \, +#define Z_IS_3169_EQ_3169(...) \, +#define Z_IS_3169U_EQ_3169(...) \, +#define Z_IS_3169_EQ_3169U(...) \, +#define Z_IS_3169U_EQ_3169U(...) \, +#define Z_IS_3170_EQ_3170(...) \, +#define Z_IS_3170U_EQ_3170(...) \, +#define Z_IS_3170_EQ_3170U(...) \, +#define Z_IS_3170U_EQ_3170U(...) \, +#define Z_IS_3171_EQ_3171(...) \, +#define Z_IS_3171U_EQ_3171(...) \, +#define Z_IS_3171_EQ_3171U(...) \, +#define Z_IS_3171U_EQ_3171U(...) \, +#define Z_IS_3172_EQ_3172(...) \, +#define Z_IS_3172U_EQ_3172(...) \, +#define Z_IS_3172_EQ_3172U(...) \, +#define Z_IS_3172U_EQ_3172U(...) \, +#define Z_IS_3173_EQ_3173(...) \, +#define Z_IS_3173U_EQ_3173(...) \, +#define Z_IS_3173_EQ_3173U(...) \, +#define Z_IS_3173U_EQ_3173U(...) \, +#define Z_IS_3174_EQ_3174(...) \, +#define Z_IS_3174U_EQ_3174(...) \, +#define Z_IS_3174_EQ_3174U(...) \, +#define Z_IS_3174U_EQ_3174U(...) \, +#define Z_IS_3175_EQ_3175(...) \, +#define Z_IS_3175U_EQ_3175(...) \, +#define Z_IS_3175_EQ_3175U(...) \, +#define Z_IS_3175U_EQ_3175U(...) \, +#define Z_IS_3176_EQ_3176(...) \, +#define Z_IS_3176U_EQ_3176(...) \, +#define Z_IS_3176_EQ_3176U(...) \, +#define Z_IS_3176U_EQ_3176U(...) \, +#define Z_IS_3177_EQ_3177(...) \, +#define Z_IS_3177U_EQ_3177(...) \, +#define Z_IS_3177_EQ_3177U(...) \, +#define Z_IS_3177U_EQ_3177U(...) \, +#define Z_IS_3178_EQ_3178(...) \, +#define Z_IS_3178U_EQ_3178(...) \, +#define Z_IS_3178_EQ_3178U(...) \, +#define Z_IS_3178U_EQ_3178U(...) \, +#define Z_IS_3179_EQ_3179(...) \, +#define Z_IS_3179U_EQ_3179(...) \, +#define Z_IS_3179_EQ_3179U(...) \, +#define Z_IS_3179U_EQ_3179U(...) \, +#define Z_IS_3180_EQ_3180(...) \, +#define Z_IS_3180U_EQ_3180(...) \, +#define Z_IS_3180_EQ_3180U(...) \, +#define Z_IS_3180U_EQ_3180U(...) \, +#define Z_IS_3181_EQ_3181(...) \, +#define Z_IS_3181U_EQ_3181(...) \, +#define Z_IS_3181_EQ_3181U(...) \, +#define Z_IS_3181U_EQ_3181U(...) \, +#define Z_IS_3182_EQ_3182(...) \, +#define Z_IS_3182U_EQ_3182(...) \, +#define Z_IS_3182_EQ_3182U(...) \, +#define Z_IS_3182U_EQ_3182U(...) \, +#define Z_IS_3183_EQ_3183(...) \, +#define Z_IS_3183U_EQ_3183(...) \, +#define Z_IS_3183_EQ_3183U(...) \, +#define Z_IS_3183U_EQ_3183U(...) \, +#define Z_IS_3184_EQ_3184(...) \, +#define Z_IS_3184U_EQ_3184(...) \, +#define Z_IS_3184_EQ_3184U(...) \, +#define Z_IS_3184U_EQ_3184U(...) \, +#define Z_IS_3185_EQ_3185(...) \, +#define Z_IS_3185U_EQ_3185(...) \, +#define Z_IS_3185_EQ_3185U(...) \, +#define Z_IS_3185U_EQ_3185U(...) \, +#define Z_IS_3186_EQ_3186(...) \, +#define Z_IS_3186U_EQ_3186(...) \, +#define Z_IS_3186_EQ_3186U(...) \, +#define Z_IS_3186U_EQ_3186U(...) \, +#define Z_IS_3187_EQ_3187(...) \, +#define Z_IS_3187U_EQ_3187(...) \, +#define Z_IS_3187_EQ_3187U(...) \, +#define Z_IS_3187U_EQ_3187U(...) \, +#define Z_IS_3188_EQ_3188(...) \, +#define Z_IS_3188U_EQ_3188(...) \, +#define Z_IS_3188_EQ_3188U(...) \, +#define Z_IS_3188U_EQ_3188U(...) \, +#define Z_IS_3189_EQ_3189(...) \, +#define Z_IS_3189U_EQ_3189(...) \, +#define Z_IS_3189_EQ_3189U(...) \, +#define Z_IS_3189U_EQ_3189U(...) \, +#define Z_IS_3190_EQ_3190(...) \, +#define Z_IS_3190U_EQ_3190(...) \, +#define Z_IS_3190_EQ_3190U(...) \, +#define Z_IS_3190U_EQ_3190U(...) \, +#define Z_IS_3191_EQ_3191(...) \, +#define Z_IS_3191U_EQ_3191(...) \, +#define Z_IS_3191_EQ_3191U(...) \, +#define Z_IS_3191U_EQ_3191U(...) \, +#define Z_IS_3192_EQ_3192(...) \, +#define Z_IS_3192U_EQ_3192(...) \, +#define Z_IS_3192_EQ_3192U(...) \, +#define Z_IS_3192U_EQ_3192U(...) \, +#define Z_IS_3193_EQ_3193(...) \, +#define Z_IS_3193U_EQ_3193(...) \, +#define Z_IS_3193_EQ_3193U(...) \, +#define Z_IS_3193U_EQ_3193U(...) \, +#define Z_IS_3194_EQ_3194(...) \, +#define Z_IS_3194U_EQ_3194(...) \, +#define Z_IS_3194_EQ_3194U(...) \, +#define Z_IS_3194U_EQ_3194U(...) \, +#define Z_IS_3195_EQ_3195(...) \, +#define Z_IS_3195U_EQ_3195(...) \, +#define Z_IS_3195_EQ_3195U(...) \, +#define Z_IS_3195U_EQ_3195U(...) \, +#define Z_IS_3196_EQ_3196(...) \, +#define Z_IS_3196U_EQ_3196(...) \, +#define Z_IS_3196_EQ_3196U(...) \, +#define Z_IS_3196U_EQ_3196U(...) \, +#define Z_IS_3197_EQ_3197(...) \, +#define Z_IS_3197U_EQ_3197(...) \, +#define Z_IS_3197_EQ_3197U(...) \, +#define Z_IS_3197U_EQ_3197U(...) \, +#define Z_IS_3198_EQ_3198(...) \, +#define Z_IS_3198U_EQ_3198(...) \, +#define Z_IS_3198_EQ_3198U(...) \, +#define Z_IS_3198U_EQ_3198U(...) \, +#define Z_IS_3199_EQ_3199(...) \, +#define Z_IS_3199U_EQ_3199(...) \, +#define Z_IS_3199_EQ_3199U(...) \, +#define Z_IS_3199U_EQ_3199U(...) \, +#define Z_IS_3200_EQ_3200(...) \, +#define Z_IS_3200U_EQ_3200(...) \, +#define Z_IS_3200_EQ_3200U(...) \, +#define Z_IS_3200U_EQ_3200U(...) \, +#define Z_IS_3201_EQ_3201(...) \, +#define Z_IS_3201U_EQ_3201(...) \, +#define Z_IS_3201_EQ_3201U(...) \, +#define Z_IS_3201U_EQ_3201U(...) \, +#define Z_IS_3202_EQ_3202(...) \, +#define Z_IS_3202U_EQ_3202(...) \, +#define Z_IS_3202_EQ_3202U(...) \, +#define Z_IS_3202U_EQ_3202U(...) \, +#define Z_IS_3203_EQ_3203(...) \, +#define Z_IS_3203U_EQ_3203(...) \, +#define Z_IS_3203_EQ_3203U(...) \, +#define Z_IS_3203U_EQ_3203U(...) \, +#define Z_IS_3204_EQ_3204(...) \, +#define Z_IS_3204U_EQ_3204(...) \, +#define Z_IS_3204_EQ_3204U(...) \, +#define Z_IS_3204U_EQ_3204U(...) \, +#define Z_IS_3205_EQ_3205(...) \, +#define Z_IS_3205U_EQ_3205(...) \, +#define Z_IS_3205_EQ_3205U(...) \, +#define Z_IS_3205U_EQ_3205U(...) \, +#define Z_IS_3206_EQ_3206(...) \, +#define Z_IS_3206U_EQ_3206(...) \, +#define Z_IS_3206_EQ_3206U(...) \, +#define Z_IS_3206U_EQ_3206U(...) \, +#define Z_IS_3207_EQ_3207(...) \, +#define Z_IS_3207U_EQ_3207(...) \, +#define Z_IS_3207_EQ_3207U(...) \, +#define Z_IS_3207U_EQ_3207U(...) \, +#define Z_IS_3208_EQ_3208(...) \, +#define Z_IS_3208U_EQ_3208(...) \, +#define Z_IS_3208_EQ_3208U(...) \, +#define Z_IS_3208U_EQ_3208U(...) \, +#define Z_IS_3209_EQ_3209(...) \, +#define Z_IS_3209U_EQ_3209(...) \, +#define Z_IS_3209_EQ_3209U(...) \, +#define Z_IS_3209U_EQ_3209U(...) \, +#define Z_IS_3210_EQ_3210(...) \, +#define Z_IS_3210U_EQ_3210(...) \, +#define Z_IS_3210_EQ_3210U(...) \, +#define Z_IS_3210U_EQ_3210U(...) \, +#define Z_IS_3211_EQ_3211(...) \, +#define Z_IS_3211U_EQ_3211(...) \, +#define Z_IS_3211_EQ_3211U(...) \, +#define Z_IS_3211U_EQ_3211U(...) \, +#define Z_IS_3212_EQ_3212(...) \, +#define Z_IS_3212U_EQ_3212(...) \, +#define Z_IS_3212_EQ_3212U(...) \, +#define Z_IS_3212U_EQ_3212U(...) \, +#define Z_IS_3213_EQ_3213(...) \, +#define Z_IS_3213U_EQ_3213(...) \, +#define Z_IS_3213_EQ_3213U(...) \, +#define Z_IS_3213U_EQ_3213U(...) \, +#define Z_IS_3214_EQ_3214(...) \, +#define Z_IS_3214U_EQ_3214(...) \, +#define Z_IS_3214_EQ_3214U(...) \, +#define Z_IS_3214U_EQ_3214U(...) \, +#define Z_IS_3215_EQ_3215(...) \, +#define Z_IS_3215U_EQ_3215(...) \, +#define Z_IS_3215_EQ_3215U(...) \, +#define Z_IS_3215U_EQ_3215U(...) \, +#define Z_IS_3216_EQ_3216(...) \, +#define Z_IS_3216U_EQ_3216(...) \, +#define Z_IS_3216_EQ_3216U(...) \, +#define Z_IS_3216U_EQ_3216U(...) \, +#define Z_IS_3217_EQ_3217(...) \, +#define Z_IS_3217U_EQ_3217(...) \, +#define Z_IS_3217_EQ_3217U(...) \, +#define Z_IS_3217U_EQ_3217U(...) \, +#define Z_IS_3218_EQ_3218(...) \, +#define Z_IS_3218U_EQ_3218(...) \, +#define Z_IS_3218_EQ_3218U(...) \, +#define Z_IS_3218U_EQ_3218U(...) \, +#define Z_IS_3219_EQ_3219(...) \, +#define Z_IS_3219U_EQ_3219(...) \, +#define Z_IS_3219_EQ_3219U(...) \, +#define Z_IS_3219U_EQ_3219U(...) \, +#define Z_IS_3220_EQ_3220(...) \, +#define Z_IS_3220U_EQ_3220(...) \, +#define Z_IS_3220_EQ_3220U(...) \, +#define Z_IS_3220U_EQ_3220U(...) \, +#define Z_IS_3221_EQ_3221(...) \, +#define Z_IS_3221U_EQ_3221(...) \, +#define Z_IS_3221_EQ_3221U(...) \, +#define Z_IS_3221U_EQ_3221U(...) \, +#define Z_IS_3222_EQ_3222(...) \, +#define Z_IS_3222U_EQ_3222(...) \, +#define Z_IS_3222_EQ_3222U(...) \, +#define Z_IS_3222U_EQ_3222U(...) \, +#define Z_IS_3223_EQ_3223(...) \, +#define Z_IS_3223U_EQ_3223(...) \, +#define Z_IS_3223_EQ_3223U(...) \, +#define Z_IS_3223U_EQ_3223U(...) \, +#define Z_IS_3224_EQ_3224(...) \, +#define Z_IS_3224U_EQ_3224(...) \, +#define Z_IS_3224_EQ_3224U(...) \, +#define Z_IS_3224U_EQ_3224U(...) \, +#define Z_IS_3225_EQ_3225(...) \, +#define Z_IS_3225U_EQ_3225(...) \, +#define Z_IS_3225_EQ_3225U(...) \, +#define Z_IS_3225U_EQ_3225U(...) \, +#define Z_IS_3226_EQ_3226(...) \, +#define Z_IS_3226U_EQ_3226(...) \, +#define Z_IS_3226_EQ_3226U(...) \, +#define Z_IS_3226U_EQ_3226U(...) \, +#define Z_IS_3227_EQ_3227(...) \, +#define Z_IS_3227U_EQ_3227(...) \, +#define Z_IS_3227_EQ_3227U(...) \, +#define Z_IS_3227U_EQ_3227U(...) \, +#define Z_IS_3228_EQ_3228(...) \, +#define Z_IS_3228U_EQ_3228(...) \, +#define Z_IS_3228_EQ_3228U(...) \, +#define Z_IS_3228U_EQ_3228U(...) \, +#define Z_IS_3229_EQ_3229(...) \, +#define Z_IS_3229U_EQ_3229(...) \, +#define Z_IS_3229_EQ_3229U(...) \, +#define Z_IS_3229U_EQ_3229U(...) \, +#define Z_IS_3230_EQ_3230(...) \, +#define Z_IS_3230U_EQ_3230(...) \, +#define Z_IS_3230_EQ_3230U(...) \, +#define Z_IS_3230U_EQ_3230U(...) \, +#define Z_IS_3231_EQ_3231(...) \, +#define Z_IS_3231U_EQ_3231(...) \, +#define Z_IS_3231_EQ_3231U(...) \, +#define Z_IS_3231U_EQ_3231U(...) \, +#define Z_IS_3232_EQ_3232(...) \, +#define Z_IS_3232U_EQ_3232(...) \, +#define Z_IS_3232_EQ_3232U(...) \, +#define Z_IS_3232U_EQ_3232U(...) \, +#define Z_IS_3233_EQ_3233(...) \, +#define Z_IS_3233U_EQ_3233(...) \, +#define Z_IS_3233_EQ_3233U(...) \, +#define Z_IS_3233U_EQ_3233U(...) \, +#define Z_IS_3234_EQ_3234(...) \, +#define Z_IS_3234U_EQ_3234(...) \, +#define Z_IS_3234_EQ_3234U(...) \, +#define Z_IS_3234U_EQ_3234U(...) \, +#define Z_IS_3235_EQ_3235(...) \, +#define Z_IS_3235U_EQ_3235(...) \, +#define Z_IS_3235_EQ_3235U(...) \, +#define Z_IS_3235U_EQ_3235U(...) \, +#define Z_IS_3236_EQ_3236(...) \, +#define Z_IS_3236U_EQ_3236(...) \, +#define Z_IS_3236_EQ_3236U(...) \, +#define Z_IS_3236U_EQ_3236U(...) \, +#define Z_IS_3237_EQ_3237(...) \, +#define Z_IS_3237U_EQ_3237(...) \, +#define Z_IS_3237_EQ_3237U(...) \, +#define Z_IS_3237U_EQ_3237U(...) \, +#define Z_IS_3238_EQ_3238(...) \, +#define Z_IS_3238U_EQ_3238(...) \, +#define Z_IS_3238_EQ_3238U(...) \, +#define Z_IS_3238U_EQ_3238U(...) \, +#define Z_IS_3239_EQ_3239(...) \, +#define Z_IS_3239U_EQ_3239(...) \, +#define Z_IS_3239_EQ_3239U(...) \, +#define Z_IS_3239U_EQ_3239U(...) \, +#define Z_IS_3240_EQ_3240(...) \, +#define Z_IS_3240U_EQ_3240(...) \, +#define Z_IS_3240_EQ_3240U(...) \, +#define Z_IS_3240U_EQ_3240U(...) \, +#define Z_IS_3241_EQ_3241(...) \, +#define Z_IS_3241U_EQ_3241(...) \, +#define Z_IS_3241_EQ_3241U(...) \, +#define Z_IS_3241U_EQ_3241U(...) \, +#define Z_IS_3242_EQ_3242(...) \, +#define Z_IS_3242U_EQ_3242(...) \, +#define Z_IS_3242_EQ_3242U(...) \, +#define Z_IS_3242U_EQ_3242U(...) \, +#define Z_IS_3243_EQ_3243(...) \, +#define Z_IS_3243U_EQ_3243(...) \, +#define Z_IS_3243_EQ_3243U(...) \, +#define Z_IS_3243U_EQ_3243U(...) \, +#define Z_IS_3244_EQ_3244(...) \, +#define Z_IS_3244U_EQ_3244(...) \, +#define Z_IS_3244_EQ_3244U(...) \, +#define Z_IS_3244U_EQ_3244U(...) \, +#define Z_IS_3245_EQ_3245(...) \, +#define Z_IS_3245U_EQ_3245(...) \, +#define Z_IS_3245_EQ_3245U(...) \, +#define Z_IS_3245U_EQ_3245U(...) \, +#define Z_IS_3246_EQ_3246(...) \, +#define Z_IS_3246U_EQ_3246(...) \, +#define Z_IS_3246_EQ_3246U(...) \, +#define Z_IS_3246U_EQ_3246U(...) \, +#define Z_IS_3247_EQ_3247(...) \, +#define Z_IS_3247U_EQ_3247(...) \, +#define Z_IS_3247_EQ_3247U(...) \, +#define Z_IS_3247U_EQ_3247U(...) \, +#define Z_IS_3248_EQ_3248(...) \, +#define Z_IS_3248U_EQ_3248(...) \, +#define Z_IS_3248_EQ_3248U(...) \, +#define Z_IS_3248U_EQ_3248U(...) \, +#define Z_IS_3249_EQ_3249(...) \, +#define Z_IS_3249U_EQ_3249(...) \, +#define Z_IS_3249_EQ_3249U(...) \, +#define Z_IS_3249U_EQ_3249U(...) \, +#define Z_IS_3250_EQ_3250(...) \, +#define Z_IS_3250U_EQ_3250(...) \, +#define Z_IS_3250_EQ_3250U(...) \, +#define Z_IS_3250U_EQ_3250U(...) \, +#define Z_IS_3251_EQ_3251(...) \, +#define Z_IS_3251U_EQ_3251(...) \, +#define Z_IS_3251_EQ_3251U(...) \, +#define Z_IS_3251U_EQ_3251U(...) \, +#define Z_IS_3252_EQ_3252(...) \, +#define Z_IS_3252U_EQ_3252(...) \, +#define Z_IS_3252_EQ_3252U(...) \, +#define Z_IS_3252U_EQ_3252U(...) \, +#define Z_IS_3253_EQ_3253(...) \, +#define Z_IS_3253U_EQ_3253(...) \, +#define Z_IS_3253_EQ_3253U(...) \, +#define Z_IS_3253U_EQ_3253U(...) \, +#define Z_IS_3254_EQ_3254(...) \, +#define Z_IS_3254U_EQ_3254(...) \, +#define Z_IS_3254_EQ_3254U(...) \, +#define Z_IS_3254U_EQ_3254U(...) \, +#define Z_IS_3255_EQ_3255(...) \, +#define Z_IS_3255U_EQ_3255(...) \, +#define Z_IS_3255_EQ_3255U(...) \, +#define Z_IS_3255U_EQ_3255U(...) \, +#define Z_IS_3256_EQ_3256(...) \, +#define Z_IS_3256U_EQ_3256(...) \, +#define Z_IS_3256_EQ_3256U(...) \, +#define Z_IS_3256U_EQ_3256U(...) \, +#define Z_IS_3257_EQ_3257(...) \, +#define Z_IS_3257U_EQ_3257(...) \, +#define Z_IS_3257_EQ_3257U(...) \, +#define Z_IS_3257U_EQ_3257U(...) \, +#define Z_IS_3258_EQ_3258(...) \, +#define Z_IS_3258U_EQ_3258(...) \, +#define Z_IS_3258_EQ_3258U(...) \, +#define Z_IS_3258U_EQ_3258U(...) \, +#define Z_IS_3259_EQ_3259(...) \, +#define Z_IS_3259U_EQ_3259(...) \, +#define Z_IS_3259_EQ_3259U(...) \, +#define Z_IS_3259U_EQ_3259U(...) \, +#define Z_IS_3260_EQ_3260(...) \, +#define Z_IS_3260U_EQ_3260(...) \, +#define Z_IS_3260_EQ_3260U(...) \, +#define Z_IS_3260U_EQ_3260U(...) \, +#define Z_IS_3261_EQ_3261(...) \, +#define Z_IS_3261U_EQ_3261(...) \, +#define Z_IS_3261_EQ_3261U(...) \, +#define Z_IS_3261U_EQ_3261U(...) \, +#define Z_IS_3262_EQ_3262(...) \, +#define Z_IS_3262U_EQ_3262(...) \, +#define Z_IS_3262_EQ_3262U(...) \, +#define Z_IS_3262U_EQ_3262U(...) \, +#define Z_IS_3263_EQ_3263(...) \, +#define Z_IS_3263U_EQ_3263(...) \, +#define Z_IS_3263_EQ_3263U(...) \, +#define Z_IS_3263U_EQ_3263U(...) \, +#define Z_IS_3264_EQ_3264(...) \, +#define Z_IS_3264U_EQ_3264(...) \, +#define Z_IS_3264_EQ_3264U(...) \, +#define Z_IS_3264U_EQ_3264U(...) \, +#define Z_IS_3265_EQ_3265(...) \, +#define Z_IS_3265U_EQ_3265(...) \, +#define Z_IS_3265_EQ_3265U(...) \, +#define Z_IS_3265U_EQ_3265U(...) \, +#define Z_IS_3266_EQ_3266(...) \, +#define Z_IS_3266U_EQ_3266(...) \, +#define Z_IS_3266_EQ_3266U(...) \, +#define Z_IS_3266U_EQ_3266U(...) \, +#define Z_IS_3267_EQ_3267(...) \, +#define Z_IS_3267U_EQ_3267(...) \, +#define Z_IS_3267_EQ_3267U(...) \, +#define Z_IS_3267U_EQ_3267U(...) \, +#define Z_IS_3268_EQ_3268(...) \, +#define Z_IS_3268U_EQ_3268(...) \, +#define Z_IS_3268_EQ_3268U(...) \, +#define Z_IS_3268U_EQ_3268U(...) \, +#define Z_IS_3269_EQ_3269(...) \, +#define Z_IS_3269U_EQ_3269(...) \, +#define Z_IS_3269_EQ_3269U(...) \, +#define Z_IS_3269U_EQ_3269U(...) \, +#define Z_IS_3270_EQ_3270(...) \, +#define Z_IS_3270U_EQ_3270(...) \, +#define Z_IS_3270_EQ_3270U(...) \, +#define Z_IS_3270U_EQ_3270U(...) \, +#define Z_IS_3271_EQ_3271(...) \, +#define Z_IS_3271U_EQ_3271(...) \, +#define Z_IS_3271_EQ_3271U(...) \, +#define Z_IS_3271U_EQ_3271U(...) \, +#define Z_IS_3272_EQ_3272(...) \, +#define Z_IS_3272U_EQ_3272(...) \, +#define Z_IS_3272_EQ_3272U(...) \, +#define Z_IS_3272U_EQ_3272U(...) \, +#define Z_IS_3273_EQ_3273(...) \, +#define Z_IS_3273U_EQ_3273(...) \, +#define Z_IS_3273_EQ_3273U(...) \, +#define Z_IS_3273U_EQ_3273U(...) \, +#define Z_IS_3274_EQ_3274(...) \, +#define Z_IS_3274U_EQ_3274(...) \, +#define Z_IS_3274_EQ_3274U(...) \, +#define Z_IS_3274U_EQ_3274U(...) \, +#define Z_IS_3275_EQ_3275(...) \, +#define Z_IS_3275U_EQ_3275(...) \, +#define Z_IS_3275_EQ_3275U(...) \, +#define Z_IS_3275U_EQ_3275U(...) \, +#define Z_IS_3276_EQ_3276(...) \, +#define Z_IS_3276U_EQ_3276(...) \, +#define Z_IS_3276_EQ_3276U(...) \, +#define Z_IS_3276U_EQ_3276U(...) \, +#define Z_IS_3277_EQ_3277(...) \, +#define Z_IS_3277U_EQ_3277(...) \, +#define Z_IS_3277_EQ_3277U(...) \, +#define Z_IS_3277U_EQ_3277U(...) \, +#define Z_IS_3278_EQ_3278(...) \, +#define Z_IS_3278U_EQ_3278(...) \, +#define Z_IS_3278_EQ_3278U(...) \, +#define Z_IS_3278U_EQ_3278U(...) \, +#define Z_IS_3279_EQ_3279(...) \, +#define Z_IS_3279U_EQ_3279(...) \, +#define Z_IS_3279_EQ_3279U(...) \, +#define Z_IS_3279U_EQ_3279U(...) \, +#define Z_IS_3280_EQ_3280(...) \, +#define Z_IS_3280U_EQ_3280(...) \, +#define Z_IS_3280_EQ_3280U(...) \, +#define Z_IS_3280U_EQ_3280U(...) \, +#define Z_IS_3281_EQ_3281(...) \, +#define Z_IS_3281U_EQ_3281(...) \, +#define Z_IS_3281_EQ_3281U(...) \, +#define Z_IS_3281U_EQ_3281U(...) \, +#define Z_IS_3282_EQ_3282(...) \, +#define Z_IS_3282U_EQ_3282(...) \, +#define Z_IS_3282_EQ_3282U(...) \, +#define Z_IS_3282U_EQ_3282U(...) \, +#define Z_IS_3283_EQ_3283(...) \, +#define Z_IS_3283U_EQ_3283(...) \, +#define Z_IS_3283_EQ_3283U(...) \, +#define Z_IS_3283U_EQ_3283U(...) \, +#define Z_IS_3284_EQ_3284(...) \, +#define Z_IS_3284U_EQ_3284(...) \, +#define Z_IS_3284_EQ_3284U(...) \, +#define Z_IS_3284U_EQ_3284U(...) \, +#define Z_IS_3285_EQ_3285(...) \, +#define Z_IS_3285U_EQ_3285(...) \, +#define Z_IS_3285_EQ_3285U(...) \, +#define Z_IS_3285U_EQ_3285U(...) \, +#define Z_IS_3286_EQ_3286(...) \, +#define Z_IS_3286U_EQ_3286(...) \, +#define Z_IS_3286_EQ_3286U(...) \, +#define Z_IS_3286U_EQ_3286U(...) \, +#define Z_IS_3287_EQ_3287(...) \, +#define Z_IS_3287U_EQ_3287(...) \, +#define Z_IS_3287_EQ_3287U(...) \, +#define Z_IS_3287U_EQ_3287U(...) \, +#define Z_IS_3288_EQ_3288(...) \, +#define Z_IS_3288U_EQ_3288(...) \, +#define Z_IS_3288_EQ_3288U(...) \, +#define Z_IS_3288U_EQ_3288U(...) \, +#define Z_IS_3289_EQ_3289(...) \, +#define Z_IS_3289U_EQ_3289(...) \, +#define Z_IS_3289_EQ_3289U(...) \, +#define Z_IS_3289U_EQ_3289U(...) \, +#define Z_IS_3290_EQ_3290(...) \, +#define Z_IS_3290U_EQ_3290(...) \, +#define Z_IS_3290_EQ_3290U(...) \, +#define Z_IS_3290U_EQ_3290U(...) \, +#define Z_IS_3291_EQ_3291(...) \, +#define Z_IS_3291U_EQ_3291(...) \, +#define Z_IS_3291_EQ_3291U(...) \, +#define Z_IS_3291U_EQ_3291U(...) \, +#define Z_IS_3292_EQ_3292(...) \, +#define Z_IS_3292U_EQ_3292(...) \, +#define Z_IS_3292_EQ_3292U(...) \, +#define Z_IS_3292U_EQ_3292U(...) \, +#define Z_IS_3293_EQ_3293(...) \, +#define Z_IS_3293U_EQ_3293(...) \, +#define Z_IS_3293_EQ_3293U(...) \, +#define Z_IS_3293U_EQ_3293U(...) \, +#define Z_IS_3294_EQ_3294(...) \, +#define Z_IS_3294U_EQ_3294(...) \, +#define Z_IS_3294_EQ_3294U(...) \, +#define Z_IS_3294U_EQ_3294U(...) \, +#define Z_IS_3295_EQ_3295(...) \, +#define Z_IS_3295U_EQ_3295(...) \, +#define Z_IS_3295_EQ_3295U(...) \, +#define Z_IS_3295U_EQ_3295U(...) \, +#define Z_IS_3296_EQ_3296(...) \, +#define Z_IS_3296U_EQ_3296(...) \, +#define Z_IS_3296_EQ_3296U(...) \, +#define Z_IS_3296U_EQ_3296U(...) \, +#define Z_IS_3297_EQ_3297(...) \, +#define Z_IS_3297U_EQ_3297(...) \, +#define Z_IS_3297_EQ_3297U(...) \, +#define Z_IS_3297U_EQ_3297U(...) \, +#define Z_IS_3298_EQ_3298(...) \, +#define Z_IS_3298U_EQ_3298(...) \, +#define Z_IS_3298_EQ_3298U(...) \, +#define Z_IS_3298U_EQ_3298U(...) \, +#define Z_IS_3299_EQ_3299(...) \, +#define Z_IS_3299U_EQ_3299(...) \, +#define Z_IS_3299_EQ_3299U(...) \, +#define Z_IS_3299U_EQ_3299U(...) \, +#define Z_IS_3300_EQ_3300(...) \, +#define Z_IS_3300U_EQ_3300(...) \, +#define Z_IS_3300_EQ_3300U(...) \, +#define Z_IS_3300U_EQ_3300U(...) \, +#define Z_IS_3301_EQ_3301(...) \, +#define Z_IS_3301U_EQ_3301(...) \, +#define Z_IS_3301_EQ_3301U(...) \, +#define Z_IS_3301U_EQ_3301U(...) \, +#define Z_IS_3302_EQ_3302(...) \, +#define Z_IS_3302U_EQ_3302(...) \, +#define Z_IS_3302_EQ_3302U(...) \, +#define Z_IS_3302U_EQ_3302U(...) \, +#define Z_IS_3303_EQ_3303(...) \, +#define Z_IS_3303U_EQ_3303(...) \, +#define Z_IS_3303_EQ_3303U(...) \, +#define Z_IS_3303U_EQ_3303U(...) \, +#define Z_IS_3304_EQ_3304(...) \, +#define Z_IS_3304U_EQ_3304(...) \, +#define Z_IS_3304_EQ_3304U(...) \, +#define Z_IS_3304U_EQ_3304U(...) \, +#define Z_IS_3305_EQ_3305(...) \, +#define Z_IS_3305U_EQ_3305(...) \, +#define Z_IS_3305_EQ_3305U(...) \, +#define Z_IS_3305U_EQ_3305U(...) \, +#define Z_IS_3306_EQ_3306(...) \, +#define Z_IS_3306U_EQ_3306(...) \, +#define Z_IS_3306_EQ_3306U(...) \, +#define Z_IS_3306U_EQ_3306U(...) \, +#define Z_IS_3307_EQ_3307(...) \, +#define Z_IS_3307U_EQ_3307(...) \, +#define Z_IS_3307_EQ_3307U(...) \, +#define Z_IS_3307U_EQ_3307U(...) \, +#define Z_IS_3308_EQ_3308(...) \, +#define Z_IS_3308U_EQ_3308(...) \, +#define Z_IS_3308_EQ_3308U(...) \, +#define Z_IS_3308U_EQ_3308U(...) \, +#define Z_IS_3309_EQ_3309(...) \, +#define Z_IS_3309U_EQ_3309(...) \, +#define Z_IS_3309_EQ_3309U(...) \, +#define Z_IS_3309U_EQ_3309U(...) \, +#define Z_IS_3310_EQ_3310(...) \, +#define Z_IS_3310U_EQ_3310(...) \, +#define Z_IS_3310_EQ_3310U(...) \, +#define Z_IS_3310U_EQ_3310U(...) \, +#define Z_IS_3311_EQ_3311(...) \, +#define Z_IS_3311U_EQ_3311(...) \, +#define Z_IS_3311_EQ_3311U(...) \, +#define Z_IS_3311U_EQ_3311U(...) \, +#define Z_IS_3312_EQ_3312(...) \, +#define Z_IS_3312U_EQ_3312(...) \, +#define Z_IS_3312_EQ_3312U(...) \, +#define Z_IS_3312U_EQ_3312U(...) \, +#define Z_IS_3313_EQ_3313(...) \, +#define Z_IS_3313U_EQ_3313(...) \, +#define Z_IS_3313_EQ_3313U(...) \, +#define Z_IS_3313U_EQ_3313U(...) \, +#define Z_IS_3314_EQ_3314(...) \, +#define Z_IS_3314U_EQ_3314(...) \, +#define Z_IS_3314_EQ_3314U(...) \, +#define Z_IS_3314U_EQ_3314U(...) \, +#define Z_IS_3315_EQ_3315(...) \, +#define Z_IS_3315U_EQ_3315(...) \, +#define Z_IS_3315_EQ_3315U(...) \, +#define Z_IS_3315U_EQ_3315U(...) \, +#define Z_IS_3316_EQ_3316(...) \, +#define Z_IS_3316U_EQ_3316(...) \, +#define Z_IS_3316_EQ_3316U(...) \, +#define Z_IS_3316U_EQ_3316U(...) \, +#define Z_IS_3317_EQ_3317(...) \, +#define Z_IS_3317U_EQ_3317(...) \, +#define Z_IS_3317_EQ_3317U(...) \, +#define Z_IS_3317U_EQ_3317U(...) \, +#define Z_IS_3318_EQ_3318(...) \, +#define Z_IS_3318U_EQ_3318(...) \, +#define Z_IS_3318_EQ_3318U(...) \, +#define Z_IS_3318U_EQ_3318U(...) \, +#define Z_IS_3319_EQ_3319(...) \, +#define Z_IS_3319U_EQ_3319(...) \, +#define Z_IS_3319_EQ_3319U(...) \, +#define Z_IS_3319U_EQ_3319U(...) \, +#define Z_IS_3320_EQ_3320(...) \, +#define Z_IS_3320U_EQ_3320(...) \, +#define Z_IS_3320_EQ_3320U(...) \, +#define Z_IS_3320U_EQ_3320U(...) \, +#define Z_IS_3321_EQ_3321(...) \, +#define Z_IS_3321U_EQ_3321(...) \, +#define Z_IS_3321_EQ_3321U(...) \, +#define Z_IS_3321U_EQ_3321U(...) \, +#define Z_IS_3322_EQ_3322(...) \, +#define Z_IS_3322U_EQ_3322(...) \, +#define Z_IS_3322_EQ_3322U(...) \, +#define Z_IS_3322U_EQ_3322U(...) \, +#define Z_IS_3323_EQ_3323(...) \, +#define Z_IS_3323U_EQ_3323(...) \, +#define Z_IS_3323_EQ_3323U(...) \, +#define Z_IS_3323U_EQ_3323U(...) \, +#define Z_IS_3324_EQ_3324(...) \, +#define Z_IS_3324U_EQ_3324(...) \, +#define Z_IS_3324_EQ_3324U(...) \, +#define Z_IS_3324U_EQ_3324U(...) \, +#define Z_IS_3325_EQ_3325(...) \, +#define Z_IS_3325U_EQ_3325(...) \, +#define Z_IS_3325_EQ_3325U(...) \, +#define Z_IS_3325U_EQ_3325U(...) \, +#define Z_IS_3326_EQ_3326(...) \, +#define Z_IS_3326U_EQ_3326(...) \, +#define Z_IS_3326_EQ_3326U(...) \, +#define Z_IS_3326U_EQ_3326U(...) \, +#define Z_IS_3327_EQ_3327(...) \, +#define Z_IS_3327U_EQ_3327(...) \, +#define Z_IS_3327_EQ_3327U(...) \, +#define Z_IS_3327U_EQ_3327U(...) \, +#define Z_IS_3328_EQ_3328(...) \, +#define Z_IS_3328U_EQ_3328(...) \, +#define Z_IS_3328_EQ_3328U(...) \, +#define Z_IS_3328U_EQ_3328U(...) \, +#define Z_IS_3329_EQ_3329(...) \, +#define Z_IS_3329U_EQ_3329(...) \, +#define Z_IS_3329_EQ_3329U(...) \, +#define Z_IS_3329U_EQ_3329U(...) \, +#define Z_IS_3330_EQ_3330(...) \, +#define Z_IS_3330U_EQ_3330(...) \, +#define Z_IS_3330_EQ_3330U(...) \, +#define Z_IS_3330U_EQ_3330U(...) \, +#define Z_IS_3331_EQ_3331(...) \, +#define Z_IS_3331U_EQ_3331(...) \, +#define Z_IS_3331_EQ_3331U(...) \, +#define Z_IS_3331U_EQ_3331U(...) \, +#define Z_IS_3332_EQ_3332(...) \, +#define Z_IS_3332U_EQ_3332(...) \, +#define Z_IS_3332_EQ_3332U(...) \, +#define Z_IS_3332U_EQ_3332U(...) \, +#define Z_IS_3333_EQ_3333(...) \, +#define Z_IS_3333U_EQ_3333(...) \, +#define Z_IS_3333_EQ_3333U(...) \, +#define Z_IS_3333U_EQ_3333U(...) \, +#define Z_IS_3334_EQ_3334(...) \, +#define Z_IS_3334U_EQ_3334(...) \, +#define Z_IS_3334_EQ_3334U(...) \, +#define Z_IS_3334U_EQ_3334U(...) \, +#define Z_IS_3335_EQ_3335(...) \, +#define Z_IS_3335U_EQ_3335(...) \, +#define Z_IS_3335_EQ_3335U(...) \, +#define Z_IS_3335U_EQ_3335U(...) \, +#define Z_IS_3336_EQ_3336(...) \, +#define Z_IS_3336U_EQ_3336(...) \, +#define Z_IS_3336_EQ_3336U(...) \, +#define Z_IS_3336U_EQ_3336U(...) \, +#define Z_IS_3337_EQ_3337(...) \, +#define Z_IS_3337U_EQ_3337(...) \, +#define Z_IS_3337_EQ_3337U(...) \, +#define Z_IS_3337U_EQ_3337U(...) \, +#define Z_IS_3338_EQ_3338(...) \, +#define Z_IS_3338U_EQ_3338(...) \, +#define Z_IS_3338_EQ_3338U(...) \, +#define Z_IS_3338U_EQ_3338U(...) \, +#define Z_IS_3339_EQ_3339(...) \, +#define Z_IS_3339U_EQ_3339(...) \, +#define Z_IS_3339_EQ_3339U(...) \, +#define Z_IS_3339U_EQ_3339U(...) \, +#define Z_IS_3340_EQ_3340(...) \, +#define Z_IS_3340U_EQ_3340(...) \, +#define Z_IS_3340_EQ_3340U(...) \, +#define Z_IS_3340U_EQ_3340U(...) \, +#define Z_IS_3341_EQ_3341(...) \, +#define Z_IS_3341U_EQ_3341(...) \, +#define Z_IS_3341_EQ_3341U(...) \, +#define Z_IS_3341U_EQ_3341U(...) \, +#define Z_IS_3342_EQ_3342(...) \, +#define Z_IS_3342U_EQ_3342(...) \, +#define Z_IS_3342_EQ_3342U(...) \, +#define Z_IS_3342U_EQ_3342U(...) \, +#define Z_IS_3343_EQ_3343(...) \, +#define Z_IS_3343U_EQ_3343(...) \, +#define Z_IS_3343_EQ_3343U(...) \, +#define Z_IS_3343U_EQ_3343U(...) \, +#define Z_IS_3344_EQ_3344(...) \, +#define Z_IS_3344U_EQ_3344(...) \, +#define Z_IS_3344_EQ_3344U(...) \, +#define Z_IS_3344U_EQ_3344U(...) \, +#define Z_IS_3345_EQ_3345(...) \, +#define Z_IS_3345U_EQ_3345(...) \, +#define Z_IS_3345_EQ_3345U(...) \, +#define Z_IS_3345U_EQ_3345U(...) \, +#define Z_IS_3346_EQ_3346(...) \, +#define Z_IS_3346U_EQ_3346(...) \, +#define Z_IS_3346_EQ_3346U(...) \, +#define Z_IS_3346U_EQ_3346U(...) \, +#define Z_IS_3347_EQ_3347(...) \, +#define Z_IS_3347U_EQ_3347(...) \, +#define Z_IS_3347_EQ_3347U(...) \, +#define Z_IS_3347U_EQ_3347U(...) \, +#define Z_IS_3348_EQ_3348(...) \, +#define Z_IS_3348U_EQ_3348(...) \, +#define Z_IS_3348_EQ_3348U(...) \, +#define Z_IS_3348U_EQ_3348U(...) \, +#define Z_IS_3349_EQ_3349(...) \, +#define Z_IS_3349U_EQ_3349(...) \, +#define Z_IS_3349_EQ_3349U(...) \, +#define Z_IS_3349U_EQ_3349U(...) \, +#define Z_IS_3350_EQ_3350(...) \, +#define Z_IS_3350U_EQ_3350(...) \, +#define Z_IS_3350_EQ_3350U(...) \, +#define Z_IS_3350U_EQ_3350U(...) \, +#define Z_IS_3351_EQ_3351(...) \, +#define Z_IS_3351U_EQ_3351(...) \, +#define Z_IS_3351_EQ_3351U(...) \, +#define Z_IS_3351U_EQ_3351U(...) \, +#define Z_IS_3352_EQ_3352(...) \, +#define Z_IS_3352U_EQ_3352(...) \, +#define Z_IS_3352_EQ_3352U(...) \, +#define Z_IS_3352U_EQ_3352U(...) \, +#define Z_IS_3353_EQ_3353(...) \, +#define Z_IS_3353U_EQ_3353(...) \, +#define Z_IS_3353_EQ_3353U(...) \, +#define Z_IS_3353U_EQ_3353U(...) \, +#define Z_IS_3354_EQ_3354(...) \, +#define Z_IS_3354U_EQ_3354(...) \, +#define Z_IS_3354_EQ_3354U(...) \, +#define Z_IS_3354U_EQ_3354U(...) \, +#define Z_IS_3355_EQ_3355(...) \, +#define Z_IS_3355U_EQ_3355(...) \, +#define Z_IS_3355_EQ_3355U(...) \, +#define Z_IS_3355U_EQ_3355U(...) \, +#define Z_IS_3356_EQ_3356(...) \, +#define Z_IS_3356U_EQ_3356(...) \, +#define Z_IS_3356_EQ_3356U(...) \, +#define Z_IS_3356U_EQ_3356U(...) \, +#define Z_IS_3357_EQ_3357(...) \, +#define Z_IS_3357U_EQ_3357(...) \, +#define Z_IS_3357_EQ_3357U(...) \, +#define Z_IS_3357U_EQ_3357U(...) \, +#define Z_IS_3358_EQ_3358(...) \, +#define Z_IS_3358U_EQ_3358(...) \, +#define Z_IS_3358_EQ_3358U(...) \, +#define Z_IS_3358U_EQ_3358U(...) \, +#define Z_IS_3359_EQ_3359(...) \, +#define Z_IS_3359U_EQ_3359(...) \, +#define Z_IS_3359_EQ_3359U(...) \, +#define Z_IS_3359U_EQ_3359U(...) \, +#define Z_IS_3360_EQ_3360(...) \, +#define Z_IS_3360U_EQ_3360(...) \, +#define Z_IS_3360_EQ_3360U(...) \, +#define Z_IS_3360U_EQ_3360U(...) \, +#define Z_IS_3361_EQ_3361(...) \, +#define Z_IS_3361U_EQ_3361(...) \, +#define Z_IS_3361_EQ_3361U(...) \, +#define Z_IS_3361U_EQ_3361U(...) \, +#define Z_IS_3362_EQ_3362(...) \, +#define Z_IS_3362U_EQ_3362(...) \, +#define Z_IS_3362_EQ_3362U(...) \, +#define Z_IS_3362U_EQ_3362U(...) \, +#define Z_IS_3363_EQ_3363(...) \, +#define Z_IS_3363U_EQ_3363(...) \, +#define Z_IS_3363_EQ_3363U(...) \, +#define Z_IS_3363U_EQ_3363U(...) \, +#define Z_IS_3364_EQ_3364(...) \, +#define Z_IS_3364U_EQ_3364(...) \, +#define Z_IS_3364_EQ_3364U(...) \, +#define Z_IS_3364U_EQ_3364U(...) \, +#define Z_IS_3365_EQ_3365(...) \, +#define Z_IS_3365U_EQ_3365(...) \, +#define Z_IS_3365_EQ_3365U(...) \, +#define Z_IS_3365U_EQ_3365U(...) \, +#define Z_IS_3366_EQ_3366(...) \, +#define Z_IS_3366U_EQ_3366(...) \, +#define Z_IS_3366_EQ_3366U(...) \, +#define Z_IS_3366U_EQ_3366U(...) \, +#define Z_IS_3367_EQ_3367(...) \, +#define Z_IS_3367U_EQ_3367(...) \, +#define Z_IS_3367_EQ_3367U(...) \, +#define Z_IS_3367U_EQ_3367U(...) \, +#define Z_IS_3368_EQ_3368(...) \, +#define Z_IS_3368U_EQ_3368(...) \, +#define Z_IS_3368_EQ_3368U(...) \, +#define Z_IS_3368U_EQ_3368U(...) \, +#define Z_IS_3369_EQ_3369(...) \, +#define Z_IS_3369U_EQ_3369(...) \, +#define Z_IS_3369_EQ_3369U(...) \, +#define Z_IS_3369U_EQ_3369U(...) \, +#define Z_IS_3370_EQ_3370(...) \, +#define Z_IS_3370U_EQ_3370(...) \, +#define Z_IS_3370_EQ_3370U(...) \, +#define Z_IS_3370U_EQ_3370U(...) \, +#define Z_IS_3371_EQ_3371(...) \, +#define Z_IS_3371U_EQ_3371(...) \, +#define Z_IS_3371_EQ_3371U(...) \, +#define Z_IS_3371U_EQ_3371U(...) \, +#define Z_IS_3372_EQ_3372(...) \, +#define Z_IS_3372U_EQ_3372(...) \, +#define Z_IS_3372_EQ_3372U(...) \, +#define Z_IS_3372U_EQ_3372U(...) \, +#define Z_IS_3373_EQ_3373(...) \, +#define Z_IS_3373U_EQ_3373(...) \, +#define Z_IS_3373_EQ_3373U(...) \, +#define Z_IS_3373U_EQ_3373U(...) \, +#define Z_IS_3374_EQ_3374(...) \, +#define Z_IS_3374U_EQ_3374(...) \, +#define Z_IS_3374_EQ_3374U(...) \, +#define Z_IS_3374U_EQ_3374U(...) \, +#define Z_IS_3375_EQ_3375(...) \, +#define Z_IS_3375U_EQ_3375(...) \, +#define Z_IS_3375_EQ_3375U(...) \, +#define Z_IS_3375U_EQ_3375U(...) \, +#define Z_IS_3376_EQ_3376(...) \, +#define Z_IS_3376U_EQ_3376(...) \, +#define Z_IS_3376_EQ_3376U(...) \, +#define Z_IS_3376U_EQ_3376U(...) \, +#define Z_IS_3377_EQ_3377(...) \, +#define Z_IS_3377U_EQ_3377(...) \, +#define Z_IS_3377_EQ_3377U(...) \, +#define Z_IS_3377U_EQ_3377U(...) \, +#define Z_IS_3378_EQ_3378(...) \, +#define Z_IS_3378U_EQ_3378(...) \, +#define Z_IS_3378_EQ_3378U(...) \, +#define Z_IS_3378U_EQ_3378U(...) \, +#define Z_IS_3379_EQ_3379(...) \, +#define Z_IS_3379U_EQ_3379(...) \, +#define Z_IS_3379_EQ_3379U(...) \, +#define Z_IS_3379U_EQ_3379U(...) \, +#define Z_IS_3380_EQ_3380(...) \, +#define Z_IS_3380U_EQ_3380(...) \, +#define Z_IS_3380_EQ_3380U(...) \, +#define Z_IS_3380U_EQ_3380U(...) \, +#define Z_IS_3381_EQ_3381(...) \, +#define Z_IS_3381U_EQ_3381(...) \, +#define Z_IS_3381_EQ_3381U(...) \, +#define Z_IS_3381U_EQ_3381U(...) \, +#define Z_IS_3382_EQ_3382(...) \, +#define Z_IS_3382U_EQ_3382(...) \, +#define Z_IS_3382_EQ_3382U(...) \, +#define Z_IS_3382U_EQ_3382U(...) \, +#define Z_IS_3383_EQ_3383(...) \, +#define Z_IS_3383U_EQ_3383(...) \, +#define Z_IS_3383_EQ_3383U(...) \, +#define Z_IS_3383U_EQ_3383U(...) \, +#define Z_IS_3384_EQ_3384(...) \, +#define Z_IS_3384U_EQ_3384(...) \, +#define Z_IS_3384_EQ_3384U(...) \, +#define Z_IS_3384U_EQ_3384U(...) \, +#define Z_IS_3385_EQ_3385(...) \, +#define Z_IS_3385U_EQ_3385(...) \, +#define Z_IS_3385_EQ_3385U(...) \, +#define Z_IS_3385U_EQ_3385U(...) \, +#define Z_IS_3386_EQ_3386(...) \, +#define Z_IS_3386U_EQ_3386(...) \, +#define Z_IS_3386_EQ_3386U(...) \, +#define Z_IS_3386U_EQ_3386U(...) \, +#define Z_IS_3387_EQ_3387(...) \, +#define Z_IS_3387U_EQ_3387(...) \, +#define Z_IS_3387_EQ_3387U(...) \, +#define Z_IS_3387U_EQ_3387U(...) \, +#define Z_IS_3388_EQ_3388(...) \, +#define Z_IS_3388U_EQ_3388(...) \, +#define Z_IS_3388_EQ_3388U(...) \, +#define Z_IS_3388U_EQ_3388U(...) \, +#define Z_IS_3389_EQ_3389(...) \, +#define Z_IS_3389U_EQ_3389(...) \, +#define Z_IS_3389_EQ_3389U(...) \, +#define Z_IS_3389U_EQ_3389U(...) \, +#define Z_IS_3390_EQ_3390(...) \, +#define Z_IS_3390U_EQ_3390(...) \, +#define Z_IS_3390_EQ_3390U(...) \, +#define Z_IS_3390U_EQ_3390U(...) \, +#define Z_IS_3391_EQ_3391(...) \, +#define Z_IS_3391U_EQ_3391(...) \, +#define Z_IS_3391_EQ_3391U(...) \, +#define Z_IS_3391U_EQ_3391U(...) \, +#define Z_IS_3392_EQ_3392(...) \, +#define Z_IS_3392U_EQ_3392(...) \, +#define Z_IS_3392_EQ_3392U(...) \, +#define Z_IS_3392U_EQ_3392U(...) \, +#define Z_IS_3393_EQ_3393(...) \, +#define Z_IS_3393U_EQ_3393(...) \, +#define Z_IS_3393_EQ_3393U(...) \, +#define Z_IS_3393U_EQ_3393U(...) \, +#define Z_IS_3394_EQ_3394(...) \, +#define Z_IS_3394U_EQ_3394(...) \, +#define Z_IS_3394_EQ_3394U(...) \, +#define Z_IS_3394U_EQ_3394U(...) \, +#define Z_IS_3395_EQ_3395(...) \, +#define Z_IS_3395U_EQ_3395(...) \, +#define Z_IS_3395_EQ_3395U(...) \, +#define Z_IS_3395U_EQ_3395U(...) \, +#define Z_IS_3396_EQ_3396(...) \, +#define Z_IS_3396U_EQ_3396(...) \, +#define Z_IS_3396_EQ_3396U(...) \, +#define Z_IS_3396U_EQ_3396U(...) \, +#define Z_IS_3397_EQ_3397(...) \, +#define Z_IS_3397U_EQ_3397(...) \, +#define Z_IS_3397_EQ_3397U(...) \, +#define Z_IS_3397U_EQ_3397U(...) \, +#define Z_IS_3398_EQ_3398(...) \, +#define Z_IS_3398U_EQ_3398(...) \, +#define Z_IS_3398_EQ_3398U(...) \, +#define Z_IS_3398U_EQ_3398U(...) \, +#define Z_IS_3399_EQ_3399(...) \, +#define Z_IS_3399U_EQ_3399(...) \, +#define Z_IS_3399_EQ_3399U(...) \, +#define Z_IS_3399U_EQ_3399U(...) \, +#define Z_IS_3400_EQ_3400(...) \, +#define Z_IS_3400U_EQ_3400(...) \, +#define Z_IS_3400_EQ_3400U(...) \, +#define Z_IS_3400U_EQ_3400U(...) \, +#define Z_IS_3401_EQ_3401(...) \, +#define Z_IS_3401U_EQ_3401(...) \, +#define Z_IS_3401_EQ_3401U(...) \, +#define Z_IS_3401U_EQ_3401U(...) \, +#define Z_IS_3402_EQ_3402(...) \, +#define Z_IS_3402U_EQ_3402(...) \, +#define Z_IS_3402_EQ_3402U(...) \, +#define Z_IS_3402U_EQ_3402U(...) \, +#define Z_IS_3403_EQ_3403(...) \, +#define Z_IS_3403U_EQ_3403(...) \, +#define Z_IS_3403_EQ_3403U(...) \, +#define Z_IS_3403U_EQ_3403U(...) \, +#define Z_IS_3404_EQ_3404(...) \, +#define Z_IS_3404U_EQ_3404(...) \, +#define Z_IS_3404_EQ_3404U(...) \, +#define Z_IS_3404U_EQ_3404U(...) \, +#define Z_IS_3405_EQ_3405(...) \, +#define Z_IS_3405U_EQ_3405(...) \, +#define Z_IS_3405_EQ_3405U(...) \, +#define Z_IS_3405U_EQ_3405U(...) \, +#define Z_IS_3406_EQ_3406(...) \, +#define Z_IS_3406U_EQ_3406(...) \, +#define Z_IS_3406_EQ_3406U(...) \, +#define Z_IS_3406U_EQ_3406U(...) \, +#define Z_IS_3407_EQ_3407(...) \, +#define Z_IS_3407U_EQ_3407(...) \, +#define Z_IS_3407_EQ_3407U(...) \, +#define Z_IS_3407U_EQ_3407U(...) \, +#define Z_IS_3408_EQ_3408(...) \, +#define Z_IS_3408U_EQ_3408(...) \, +#define Z_IS_3408_EQ_3408U(...) \, +#define Z_IS_3408U_EQ_3408U(...) \, +#define Z_IS_3409_EQ_3409(...) \, +#define Z_IS_3409U_EQ_3409(...) \, +#define Z_IS_3409_EQ_3409U(...) \, +#define Z_IS_3409U_EQ_3409U(...) \, +#define Z_IS_3410_EQ_3410(...) \, +#define Z_IS_3410U_EQ_3410(...) \, +#define Z_IS_3410_EQ_3410U(...) \, +#define Z_IS_3410U_EQ_3410U(...) \, +#define Z_IS_3411_EQ_3411(...) \, +#define Z_IS_3411U_EQ_3411(...) \, +#define Z_IS_3411_EQ_3411U(...) \, +#define Z_IS_3411U_EQ_3411U(...) \, +#define Z_IS_3412_EQ_3412(...) \, +#define Z_IS_3412U_EQ_3412(...) \, +#define Z_IS_3412_EQ_3412U(...) \, +#define Z_IS_3412U_EQ_3412U(...) \, +#define Z_IS_3413_EQ_3413(...) \, +#define Z_IS_3413U_EQ_3413(...) \, +#define Z_IS_3413_EQ_3413U(...) \, +#define Z_IS_3413U_EQ_3413U(...) \, +#define Z_IS_3414_EQ_3414(...) \, +#define Z_IS_3414U_EQ_3414(...) \, +#define Z_IS_3414_EQ_3414U(...) \, +#define Z_IS_3414U_EQ_3414U(...) \, +#define Z_IS_3415_EQ_3415(...) \, +#define Z_IS_3415U_EQ_3415(...) \, +#define Z_IS_3415_EQ_3415U(...) \, +#define Z_IS_3415U_EQ_3415U(...) \, +#define Z_IS_3416_EQ_3416(...) \, +#define Z_IS_3416U_EQ_3416(...) \, +#define Z_IS_3416_EQ_3416U(...) \, +#define Z_IS_3416U_EQ_3416U(...) \, +#define Z_IS_3417_EQ_3417(...) \, +#define Z_IS_3417U_EQ_3417(...) \, +#define Z_IS_3417_EQ_3417U(...) \, +#define Z_IS_3417U_EQ_3417U(...) \, +#define Z_IS_3418_EQ_3418(...) \, +#define Z_IS_3418U_EQ_3418(...) \, +#define Z_IS_3418_EQ_3418U(...) \, +#define Z_IS_3418U_EQ_3418U(...) \, +#define Z_IS_3419_EQ_3419(...) \, +#define Z_IS_3419U_EQ_3419(...) \, +#define Z_IS_3419_EQ_3419U(...) \, +#define Z_IS_3419U_EQ_3419U(...) \, +#define Z_IS_3420_EQ_3420(...) \, +#define Z_IS_3420U_EQ_3420(...) \, +#define Z_IS_3420_EQ_3420U(...) \, +#define Z_IS_3420U_EQ_3420U(...) \, +#define Z_IS_3421_EQ_3421(...) \, +#define Z_IS_3421U_EQ_3421(...) \, +#define Z_IS_3421_EQ_3421U(...) \, +#define Z_IS_3421U_EQ_3421U(...) \, +#define Z_IS_3422_EQ_3422(...) \, +#define Z_IS_3422U_EQ_3422(...) \, +#define Z_IS_3422_EQ_3422U(...) \, +#define Z_IS_3422U_EQ_3422U(...) \, +#define Z_IS_3423_EQ_3423(...) \, +#define Z_IS_3423U_EQ_3423(...) \, +#define Z_IS_3423_EQ_3423U(...) \, +#define Z_IS_3423U_EQ_3423U(...) \, +#define Z_IS_3424_EQ_3424(...) \, +#define Z_IS_3424U_EQ_3424(...) \, +#define Z_IS_3424_EQ_3424U(...) \, +#define Z_IS_3424U_EQ_3424U(...) \, +#define Z_IS_3425_EQ_3425(...) \, +#define Z_IS_3425U_EQ_3425(...) \, +#define Z_IS_3425_EQ_3425U(...) \, +#define Z_IS_3425U_EQ_3425U(...) \, +#define Z_IS_3426_EQ_3426(...) \, +#define Z_IS_3426U_EQ_3426(...) \, +#define Z_IS_3426_EQ_3426U(...) \, +#define Z_IS_3426U_EQ_3426U(...) \, +#define Z_IS_3427_EQ_3427(...) \, +#define Z_IS_3427U_EQ_3427(...) \, +#define Z_IS_3427_EQ_3427U(...) \, +#define Z_IS_3427U_EQ_3427U(...) \, +#define Z_IS_3428_EQ_3428(...) \, +#define Z_IS_3428U_EQ_3428(...) \, +#define Z_IS_3428_EQ_3428U(...) \, +#define Z_IS_3428U_EQ_3428U(...) \, +#define Z_IS_3429_EQ_3429(...) \, +#define Z_IS_3429U_EQ_3429(...) \, +#define Z_IS_3429_EQ_3429U(...) \, +#define Z_IS_3429U_EQ_3429U(...) \, +#define Z_IS_3430_EQ_3430(...) \, +#define Z_IS_3430U_EQ_3430(...) \, +#define Z_IS_3430_EQ_3430U(...) \, +#define Z_IS_3430U_EQ_3430U(...) \, +#define Z_IS_3431_EQ_3431(...) \, +#define Z_IS_3431U_EQ_3431(...) \, +#define Z_IS_3431_EQ_3431U(...) \, +#define Z_IS_3431U_EQ_3431U(...) \, +#define Z_IS_3432_EQ_3432(...) \, +#define Z_IS_3432U_EQ_3432(...) \, +#define Z_IS_3432_EQ_3432U(...) \, +#define Z_IS_3432U_EQ_3432U(...) \, +#define Z_IS_3433_EQ_3433(...) \, +#define Z_IS_3433U_EQ_3433(...) \, +#define Z_IS_3433_EQ_3433U(...) \, +#define Z_IS_3433U_EQ_3433U(...) \, +#define Z_IS_3434_EQ_3434(...) \, +#define Z_IS_3434U_EQ_3434(...) \, +#define Z_IS_3434_EQ_3434U(...) \, +#define Z_IS_3434U_EQ_3434U(...) \, +#define Z_IS_3435_EQ_3435(...) \, +#define Z_IS_3435U_EQ_3435(...) \, +#define Z_IS_3435_EQ_3435U(...) \, +#define Z_IS_3435U_EQ_3435U(...) \, +#define Z_IS_3436_EQ_3436(...) \, +#define Z_IS_3436U_EQ_3436(...) \, +#define Z_IS_3436_EQ_3436U(...) \, +#define Z_IS_3436U_EQ_3436U(...) \, +#define Z_IS_3437_EQ_3437(...) \, +#define Z_IS_3437U_EQ_3437(...) \, +#define Z_IS_3437_EQ_3437U(...) \, +#define Z_IS_3437U_EQ_3437U(...) \, +#define Z_IS_3438_EQ_3438(...) \, +#define Z_IS_3438U_EQ_3438(...) \, +#define Z_IS_3438_EQ_3438U(...) \, +#define Z_IS_3438U_EQ_3438U(...) \, +#define Z_IS_3439_EQ_3439(...) \, +#define Z_IS_3439U_EQ_3439(...) \, +#define Z_IS_3439_EQ_3439U(...) \, +#define Z_IS_3439U_EQ_3439U(...) \, +#define Z_IS_3440_EQ_3440(...) \, +#define Z_IS_3440U_EQ_3440(...) \, +#define Z_IS_3440_EQ_3440U(...) \, +#define Z_IS_3440U_EQ_3440U(...) \, +#define Z_IS_3441_EQ_3441(...) \, +#define Z_IS_3441U_EQ_3441(...) \, +#define Z_IS_3441_EQ_3441U(...) \, +#define Z_IS_3441U_EQ_3441U(...) \, +#define Z_IS_3442_EQ_3442(...) \, +#define Z_IS_3442U_EQ_3442(...) \, +#define Z_IS_3442_EQ_3442U(...) \, +#define Z_IS_3442U_EQ_3442U(...) \, +#define Z_IS_3443_EQ_3443(...) \, +#define Z_IS_3443U_EQ_3443(...) \, +#define Z_IS_3443_EQ_3443U(...) \, +#define Z_IS_3443U_EQ_3443U(...) \, +#define Z_IS_3444_EQ_3444(...) \, +#define Z_IS_3444U_EQ_3444(...) \, +#define Z_IS_3444_EQ_3444U(...) \, +#define Z_IS_3444U_EQ_3444U(...) \, +#define Z_IS_3445_EQ_3445(...) \, +#define Z_IS_3445U_EQ_3445(...) \, +#define Z_IS_3445_EQ_3445U(...) \, +#define Z_IS_3445U_EQ_3445U(...) \, +#define Z_IS_3446_EQ_3446(...) \, +#define Z_IS_3446U_EQ_3446(...) \, +#define Z_IS_3446_EQ_3446U(...) \, +#define Z_IS_3446U_EQ_3446U(...) \, +#define Z_IS_3447_EQ_3447(...) \, +#define Z_IS_3447U_EQ_3447(...) \, +#define Z_IS_3447_EQ_3447U(...) \, +#define Z_IS_3447U_EQ_3447U(...) \, +#define Z_IS_3448_EQ_3448(...) \, +#define Z_IS_3448U_EQ_3448(...) \, +#define Z_IS_3448_EQ_3448U(...) \, +#define Z_IS_3448U_EQ_3448U(...) \, +#define Z_IS_3449_EQ_3449(...) \, +#define Z_IS_3449U_EQ_3449(...) \, +#define Z_IS_3449_EQ_3449U(...) \, +#define Z_IS_3449U_EQ_3449U(...) \, +#define Z_IS_3450_EQ_3450(...) \, +#define Z_IS_3450U_EQ_3450(...) \, +#define Z_IS_3450_EQ_3450U(...) \, +#define Z_IS_3450U_EQ_3450U(...) \, +#define Z_IS_3451_EQ_3451(...) \, +#define Z_IS_3451U_EQ_3451(...) \, +#define Z_IS_3451_EQ_3451U(...) \, +#define Z_IS_3451U_EQ_3451U(...) \, +#define Z_IS_3452_EQ_3452(...) \, +#define Z_IS_3452U_EQ_3452(...) \, +#define Z_IS_3452_EQ_3452U(...) \, +#define Z_IS_3452U_EQ_3452U(...) \, +#define Z_IS_3453_EQ_3453(...) \, +#define Z_IS_3453U_EQ_3453(...) \, +#define Z_IS_3453_EQ_3453U(...) \, +#define Z_IS_3453U_EQ_3453U(...) \, +#define Z_IS_3454_EQ_3454(...) \, +#define Z_IS_3454U_EQ_3454(...) \, +#define Z_IS_3454_EQ_3454U(...) \, +#define Z_IS_3454U_EQ_3454U(...) \, +#define Z_IS_3455_EQ_3455(...) \, +#define Z_IS_3455U_EQ_3455(...) \, +#define Z_IS_3455_EQ_3455U(...) \, +#define Z_IS_3455U_EQ_3455U(...) \, +#define Z_IS_3456_EQ_3456(...) \, +#define Z_IS_3456U_EQ_3456(...) \, +#define Z_IS_3456_EQ_3456U(...) \, +#define Z_IS_3456U_EQ_3456U(...) \, +#define Z_IS_3457_EQ_3457(...) \, +#define Z_IS_3457U_EQ_3457(...) \, +#define Z_IS_3457_EQ_3457U(...) \, +#define Z_IS_3457U_EQ_3457U(...) \, +#define Z_IS_3458_EQ_3458(...) \, +#define Z_IS_3458U_EQ_3458(...) \, +#define Z_IS_3458_EQ_3458U(...) \, +#define Z_IS_3458U_EQ_3458U(...) \, +#define Z_IS_3459_EQ_3459(...) \, +#define Z_IS_3459U_EQ_3459(...) \, +#define Z_IS_3459_EQ_3459U(...) \, +#define Z_IS_3459U_EQ_3459U(...) \, +#define Z_IS_3460_EQ_3460(...) \, +#define Z_IS_3460U_EQ_3460(...) \, +#define Z_IS_3460_EQ_3460U(...) \, +#define Z_IS_3460U_EQ_3460U(...) \, +#define Z_IS_3461_EQ_3461(...) \, +#define Z_IS_3461U_EQ_3461(...) \, +#define Z_IS_3461_EQ_3461U(...) \, +#define Z_IS_3461U_EQ_3461U(...) \, +#define Z_IS_3462_EQ_3462(...) \, +#define Z_IS_3462U_EQ_3462(...) \, +#define Z_IS_3462_EQ_3462U(...) \, +#define Z_IS_3462U_EQ_3462U(...) \, +#define Z_IS_3463_EQ_3463(...) \, +#define Z_IS_3463U_EQ_3463(...) \, +#define Z_IS_3463_EQ_3463U(...) \, +#define Z_IS_3463U_EQ_3463U(...) \, +#define Z_IS_3464_EQ_3464(...) \, +#define Z_IS_3464U_EQ_3464(...) \, +#define Z_IS_3464_EQ_3464U(...) \, +#define Z_IS_3464U_EQ_3464U(...) \, +#define Z_IS_3465_EQ_3465(...) \, +#define Z_IS_3465U_EQ_3465(...) \, +#define Z_IS_3465_EQ_3465U(...) \, +#define Z_IS_3465U_EQ_3465U(...) \, +#define Z_IS_3466_EQ_3466(...) \, +#define Z_IS_3466U_EQ_3466(...) \, +#define Z_IS_3466_EQ_3466U(...) \, +#define Z_IS_3466U_EQ_3466U(...) \, +#define Z_IS_3467_EQ_3467(...) \, +#define Z_IS_3467U_EQ_3467(...) \, +#define Z_IS_3467_EQ_3467U(...) \, +#define Z_IS_3467U_EQ_3467U(...) \, +#define Z_IS_3468_EQ_3468(...) \, +#define Z_IS_3468U_EQ_3468(...) \, +#define Z_IS_3468_EQ_3468U(...) \, +#define Z_IS_3468U_EQ_3468U(...) \, +#define Z_IS_3469_EQ_3469(...) \, +#define Z_IS_3469U_EQ_3469(...) \, +#define Z_IS_3469_EQ_3469U(...) \, +#define Z_IS_3469U_EQ_3469U(...) \, +#define Z_IS_3470_EQ_3470(...) \, +#define Z_IS_3470U_EQ_3470(...) \, +#define Z_IS_3470_EQ_3470U(...) \, +#define Z_IS_3470U_EQ_3470U(...) \, +#define Z_IS_3471_EQ_3471(...) \, +#define Z_IS_3471U_EQ_3471(...) \, +#define Z_IS_3471_EQ_3471U(...) \, +#define Z_IS_3471U_EQ_3471U(...) \, +#define Z_IS_3472_EQ_3472(...) \, +#define Z_IS_3472U_EQ_3472(...) \, +#define Z_IS_3472_EQ_3472U(...) \, +#define Z_IS_3472U_EQ_3472U(...) \, +#define Z_IS_3473_EQ_3473(...) \, +#define Z_IS_3473U_EQ_3473(...) \, +#define Z_IS_3473_EQ_3473U(...) \, +#define Z_IS_3473U_EQ_3473U(...) \, +#define Z_IS_3474_EQ_3474(...) \, +#define Z_IS_3474U_EQ_3474(...) \, +#define Z_IS_3474_EQ_3474U(...) \, +#define Z_IS_3474U_EQ_3474U(...) \, +#define Z_IS_3475_EQ_3475(...) \, +#define Z_IS_3475U_EQ_3475(...) \, +#define Z_IS_3475_EQ_3475U(...) \, +#define Z_IS_3475U_EQ_3475U(...) \, +#define Z_IS_3476_EQ_3476(...) \, +#define Z_IS_3476U_EQ_3476(...) \, +#define Z_IS_3476_EQ_3476U(...) \, +#define Z_IS_3476U_EQ_3476U(...) \, +#define Z_IS_3477_EQ_3477(...) \, +#define Z_IS_3477U_EQ_3477(...) \, +#define Z_IS_3477_EQ_3477U(...) \, +#define Z_IS_3477U_EQ_3477U(...) \, +#define Z_IS_3478_EQ_3478(...) \, +#define Z_IS_3478U_EQ_3478(...) \, +#define Z_IS_3478_EQ_3478U(...) \, +#define Z_IS_3478U_EQ_3478U(...) \, +#define Z_IS_3479_EQ_3479(...) \, +#define Z_IS_3479U_EQ_3479(...) \, +#define Z_IS_3479_EQ_3479U(...) \, +#define Z_IS_3479U_EQ_3479U(...) \, +#define Z_IS_3480_EQ_3480(...) \, +#define Z_IS_3480U_EQ_3480(...) \, +#define Z_IS_3480_EQ_3480U(...) \, +#define Z_IS_3480U_EQ_3480U(...) \, +#define Z_IS_3481_EQ_3481(...) \, +#define Z_IS_3481U_EQ_3481(...) \, +#define Z_IS_3481_EQ_3481U(...) \, +#define Z_IS_3481U_EQ_3481U(...) \, +#define Z_IS_3482_EQ_3482(...) \, +#define Z_IS_3482U_EQ_3482(...) \, +#define Z_IS_3482_EQ_3482U(...) \, +#define Z_IS_3482U_EQ_3482U(...) \, +#define Z_IS_3483_EQ_3483(...) \, +#define Z_IS_3483U_EQ_3483(...) \, +#define Z_IS_3483_EQ_3483U(...) \, +#define Z_IS_3483U_EQ_3483U(...) \, +#define Z_IS_3484_EQ_3484(...) \, +#define Z_IS_3484U_EQ_3484(...) \, +#define Z_IS_3484_EQ_3484U(...) \, +#define Z_IS_3484U_EQ_3484U(...) \, +#define Z_IS_3485_EQ_3485(...) \, +#define Z_IS_3485U_EQ_3485(...) \, +#define Z_IS_3485_EQ_3485U(...) \, +#define Z_IS_3485U_EQ_3485U(...) \, +#define Z_IS_3486_EQ_3486(...) \, +#define Z_IS_3486U_EQ_3486(...) \, +#define Z_IS_3486_EQ_3486U(...) \, +#define Z_IS_3486U_EQ_3486U(...) \, +#define Z_IS_3487_EQ_3487(...) \, +#define Z_IS_3487U_EQ_3487(...) \, +#define Z_IS_3487_EQ_3487U(...) \, +#define Z_IS_3487U_EQ_3487U(...) \, +#define Z_IS_3488_EQ_3488(...) \, +#define Z_IS_3488U_EQ_3488(...) \, +#define Z_IS_3488_EQ_3488U(...) \, +#define Z_IS_3488U_EQ_3488U(...) \, +#define Z_IS_3489_EQ_3489(...) \, +#define Z_IS_3489U_EQ_3489(...) \, +#define Z_IS_3489_EQ_3489U(...) \, +#define Z_IS_3489U_EQ_3489U(...) \, +#define Z_IS_3490_EQ_3490(...) \, +#define Z_IS_3490U_EQ_3490(...) \, +#define Z_IS_3490_EQ_3490U(...) \, +#define Z_IS_3490U_EQ_3490U(...) \, +#define Z_IS_3491_EQ_3491(...) \, +#define Z_IS_3491U_EQ_3491(...) \, +#define Z_IS_3491_EQ_3491U(...) \, +#define Z_IS_3491U_EQ_3491U(...) \, +#define Z_IS_3492_EQ_3492(...) \, +#define Z_IS_3492U_EQ_3492(...) \, +#define Z_IS_3492_EQ_3492U(...) \, +#define Z_IS_3492U_EQ_3492U(...) \, +#define Z_IS_3493_EQ_3493(...) \, +#define Z_IS_3493U_EQ_3493(...) \, +#define Z_IS_3493_EQ_3493U(...) \, +#define Z_IS_3493U_EQ_3493U(...) \, +#define Z_IS_3494_EQ_3494(...) \, +#define Z_IS_3494U_EQ_3494(...) \, +#define Z_IS_3494_EQ_3494U(...) \, +#define Z_IS_3494U_EQ_3494U(...) \, +#define Z_IS_3495_EQ_3495(...) \, +#define Z_IS_3495U_EQ_3495(...) \, +#define Z_IS_3495_EQ_3495U(...) \, +#define Z_IS_3495U_EQ_3495U(...) \, +#define Z_IS_3496_EQ_3496(...) \, +#define Z_IS_3496U_EQ_3496(...) \, +#define Z_IS_3496_EQ_3496U(...) \, +#define Z_IS_3496U_EQ_3496U(...) \, +#define Z_IS_3497_EQ_3497(...) \, +#define Z_IS_3497U_EQ_3497(...) \, +#define Z_IS_3497_EQ_3497U(...) \, +#define Z_IS_3497U_EQ_3497U(...) \, +#define Z_IS_3498_EQ_3498(...) \, +#define Z_IS_3498U_EQ_3498(...) \, +#define Z_IS_3498_EQ_3498U(...) \, +#define Z_IS_3498U_EQ_3498U(...) \, +#define Z_IS_3499_EQ_3499(...) \, +#define Z_IS_3499U_EQ_3499(...) \, +#define Z_IS_3499_EQ_3499U(...) \, +#define Z_IS_3499U_EQ_3499U(...) \, +#define Z_IS_3500_EQ_3500(...) \, +#define Z_IS_3500U_EQ_3500(...) \, +#define Z_IS_3500_EQ_3500U(...) \, +#define Z_IS_3500U_EQ_3500U(...) \, +#define Z_IS_3501_EQ_3501(...) \, +#define Z_IS_3501U_EQ_3501(...) \, +#define Z_IS_3501_EQ_3501U(...) \, +#define Z_IS_3501U_EQ_3501U(...) \, +#define Z_IS_3502_EQ_3502(...) \, +#define Z_IS_3502U_EQ_3502(...) \, +#define Z_IS_3502_EQ_3502U(...) \, +#define Z_IS_3502U_EQ_3502U(...) \, +#define Z_IS_3503_EQ_3503(...) \, +#define Z_IS_3503U_EQ_3503(...) \, +#define Z_IS_3503_EQ_3503U(...) \, +#define Z_IS_3503U_EQ_3503U(...) \, +#define Z_IS_3504_EQ_3504(...) \, +#define Z_IS_3504U_EQ_3504(...) \, +#define Z_IS_3504_EQ_3504U(...) \, +#define Z_IS_3504U_EQ_3504U(...) \, +#define Z_IS_3505_EQ_3505(...) \, +#define Z_IS_3505U_EQ_3505(...) \, +#define Z_IS_3505_EQ_3505U(...) \, +#define Z_IS_3505U_EQ_3505U(...) \, +#define Z_IS_3506_EQ_3506(...) \, +#define Z_IS_3506U_EQ_3506(...) \, +#define Z_IS_3506_EQ_3506U(...) \, +#define Z_IS_3506U_EQ_3506U(...) \, +#define Z_IS_3507_EQ_3507(...) \, +#define Z_IS_3507U_EQ_3507(...) \, +#define Z_IS_3507_EQ_3507U(...) \, +#define Z_IS_3507U_EQ_3507U(...) \, +#define Z_IS_3508_EQ_3508(...) \, +#define Z_IS_3508U_EQ_3508(...) \, +#define Z_IS_3508_EQ_3508U(...) \, +#define Z_IS_3508U_EQ_3508U(...) \, +#define Z_IS_3509_EQ_3509(...) \, +#define Z_IS_3509U_EQ_3509(...) \, +#define Z_IS_3509_EQ_3509U(...) \, +#define Z_IS_3509U_EQ_3509U(...) \, +#define Z_IS_3510_EQ_3510(...) \, +#define Z_IS_3510U_EQ_3510(...) \, +#define Z_IS_3510_EQ_3510U(...) \, +#define Z_IS_3510U_EQ_3510U(...) \, +#define Z_IS_3511_EQ_3511(...) \, +#define Z_IS_3511U_EQ_3511(...) \, +#define Z_IS_3511_EQ_3511U(...) \, +#define Z_IS_3511U_EQ_3511U(...) \, +#define Z_IS_3512_EQ_3512(...) \, +#define Z_IS_3512U_EQ_3512(...) \, +#define Z_IS_3512_EQ_3512U(...) \, +#define Z_IS_3512U_EQ_3512U(...) \, +#define Z_IS_3513_EQ_3513(...) \, +#define Z_IS_3513U_EQ_3513(...) \, +#define Z_IS_3513_EQ_3513U(...) \, +#define Z_IS_3513U_EQ_3513U(...) \, +#define Z_IS_3514_EQ_3514(...) \, +#define Z_IS_3514U_EQ_3514(...) \, +#define Z_IS_3514_EQ_3514U(...) \, +#define Z_IS_3514U_EQ_3514U(...) \, +#define Z_IS_3515_EQ_3515(...) \, +#define Z_IS_3515U_EQ_3515(...) \, +#define Z_IS_3515_EQ_3515U(...) \, +#define Z_IS_3515U_EQ_3515U(...) \, +#define Z_IS_3516_EQ_3516(...) \, +#define Z_IS_3516U_EQ_3516(...) \, +#define Z_IS_3516_EQ_3516U(...) \, +#define Z_IS_3516U_EQ_3516U(...) \, +#define Z_IS_3517_EQ_3517(...) \, +#define Z_IS_3517U_EQ_3517(...) \, +#define Z_IS_3517_EQ_3517U(...) \, +#define Z_IS_3517U_EQ_3517U(...) \, +#define Z_IS_3518_EQ_3518(...) \, +#define Z_IS_3518U_EQ_3518(...) \, +#define Z_IS_3518_EQ_3518U(...) \, +#define Z_IS_3518U_EQ_3518U(...) \, +#define Z_IS_3519_EQ_3519(...) \, +#define Z_IS_3519U_EQ_3519(...) \, +#define Z_IS_3519_EQ_3519U(...) \, +#define Z_IS_3519U_EQ_3519U(...) \, +#define Z_IS_3520_EQ_3520(...) \, +#define Z_IS_3520U_EQ_3520(...) \, +#define Z_IS_3520_EQ_3520U(...) \, +#define Z_IS_3520U_EQ_3520U(...) \, +#define Z_IS_3521_EQ_3521(...) \, +#define Z_IS_3521U_EQ_3521(...) \, +#define Z_IS_3521_EQ_3521U(...) \, +#define Z_IS_3521U_EQ_3521U(...) \, +#define Z_IS_3522_EQ_3522(...) \, +#define Z_IS_3522U_EQ_3522(...) \, +#define Z_IS_3522_EQ_3522U(...) \, +#define Z_IS_3522U_EQ_3522U(...) \, +#define Z_IS_3523_EQ_3523(...) \, +#define Z_IS_3523U_EQ_3523(...) \, +#define Z_IS_3523_EQ_3523U(...) \, +#define Z_IS_3523U_EQ_3523U(...) \, +#define Z_IS_3524_EQ_3524(...) \, +#define Z_IS_3524U_EQ_3524(...) \, +#define Z_IS_3524_EQ_3524U(...) \, +#define Z_IS_3524U_EQ_3524U(...) \, +#define Z_IS_3525_EQ_3525(...) \, +#define Z_IS_3525U_EQ_3525(...) \, +#define Z_IS_3525_EQ_3525U(...) \, +#define Z_IS_3525U_EQ_3525U(...) \, +#define Z_IS_3526_EQ_3526(...) \, +#define Z_IS_3526U_EQ_3526(...) \, +#define Z_IS_3526_EQ_3526U(...) \, +#define Z_IS_3526U_EQ_3526U(...) \, +#define Z_IS_3527_EQ_3527(...) \, +#define Z_IS_3527U_EQ_3527(...) \, +#define Z_IS_3527_EQ_3527U(...) \, +#define Z_IS_3527U_EQ_3527U(...) \, +#define Z_IS_3528_EQ_3528(...) \, +#define Z_IS_3528U_EQ_3528(...) \, +#define Z_IS_3528_EQ_3528U(...) \, +#define Z_IS_3528U_EQ_3528U(...) \, +#define Z_IS_3529_EQ_3529(...) \, +#define Z_IS_3529U_EQ_3529(...) \, +#define Z_IS_3529_EQ_3529U(...) \, +#define Z_IS_3529U_EQ_3529U(...) \, +#define Z_IS_3530_EQ_3530(...) \, +#define Z_IS_3530U_EQ_3530(...) \, +#define Z_IS_3530_EQ_3530U(...) \, +#define Z_IS_3530U_EQ_3530U(...) \, +#define Z_IS_3531_EQ_3531(...) \, +#define Z_IS_3531U_EQ_3531(...) \, +#define Z_IS_3531_EQ_3531U(...) \, +#define Z_IS_3531U_EQ_3531U(...) \, +#define Z_IS_3532_EQ_3532(...) \, +#define Z_IS_3532U_EQ_3532(...) \, +#define Z_IS_3532_EQ_3532U(...) \, +#define Z_IS_3532U_EQ_3532U(...) \, +#define Z_IS_3533_EQ_3533(...) \, +#define Z_IS_3533U_EQ_3533(...) \, +#define Z_IS_3533_EQ_3533U(...) \, +#define Z_IS_3533U_EQ_3533U(...) \, +#define Z_IS_3534_EQ_3534(...) \, +#define Z_IS_3534U_EQ_3534(...) \, +#define Z_IS_3534_EQ_3534U(...) \, +#define Z_IS_3534U_EQ_3534U(...) \, +#define Z_IS_3535_EQ_3535(...) \, +#define Z_IS_3535U_EQ_3535(...) \, +#define Z_IS_3535_EQ_3535U(...) \, +#define Z_IS_3535U_EQ_3535U(...) \, +#define Z_IS_3536_EQ_3536(...) \, +#define Z_IS_3536U_EQ_3536(...) \, +#define Z_IS_3536_EQ_3536U(...) \, +#define Z_IS_3536U_EQ_3536U(...) \, +#define Z_IS_3537_EQ_3537(...) \, +#define Z_IS_3537U_EQ_3537(...) \, +#define Z_IS_3537_EQ_3537U(...) \, +#define Z_IS_3537U_EQ_3537U(...) \, +#define Z_IS_3538_EQ_3538(...) \, +#define Z_IS_3538U_EQ_3538(...) \, +#define Z_IS_3538_EQ_3538U(...) \, +#define Z_IS_3538U_EQ_3538U(...) \, +#define Z_IS_3539_EQ_3539(...) \, +#define Z_IS_3539U_EQ_3539(...) \, +#define Z_IS_3539_EQ_3539U(...) \, +#define Z_IS_3539U_EQ_3539U(...) \, +#define Z_IS_3540_EQ_3540(...) \, +#define Z_IS_3540U_EQ_3540(...) \, +#define Z_IS_3540_EQ_3540U(...) \, +#define Z_IS_3540U_EQ_3540U(...) \, +#define Z_IS_3541_EQ_3541(...) \, +#define Z_IS_3541U_EQ_3541(...) \, +#define Z_IS_3541_EQ_3541U(...) \, +#define Z_IS_3541U_EQ_3541U(...) \, +#define Z_IS_3542_EQ_3542(...) \, +#define Z_IS_3542U_EQ_3542(...) \, +#define Z_IS_3542_EQ_3542U(...) \, +#define Z_IS_3542U_EQ_3542U(...) \, +#define Z_IS_3543_EQ_3543(...) \, +#define Z_IS_3543U_EQ_3543(...) \, +#define Z_IS_3543_EQ_3543U(...) \, +#define Z_IS_3543U_EQ_3543U(...) \, +#define Z_IS_3544_EQ_3544(...) \, +#define Z_IS_3544U_EQ_3544(...) \, +#define Z_IS_3544_EQ_3544U(...) \, +#define Z_IS_3544U_EQ_3544U(...) \, +#define Z_IS_3545_EQ_3545(...) \, +#define Z_IS_3545U_EQ_3545(...) \, +#define Z_IS_3545_EQ_3545U(...) \, +#define Z_IS_3545U_EQ_3545U(...) \, +#define Z_IS_3546_EQ_3546(...) \, +#define Z_IS_3546U_EQ_3546(...) \, +#define Z_IS_3546_EQ_3546U(...) \, +#define Z_IS_3546U_EQ_3546U(...) \, +#define Z_IS_3547_EQ_3547(...) \, +#define Z_IS_3547U_EQ_3547(...) \, +#define Z_IS_3547_EQ_3547U(...) \, +#define Z_IS_3547U_EQ_3547U(...) \, +#define Z_IS_3548_EQ_3548(...) \, +#define Z_IS_3548U_EQ_3548(...) \, +#define Z_IS_3548_EQ_3548U(...) \, +#define Z_IS_3548U_EQ_3548U(...) \, +#define Z_IS_3549_EQ_3549(...) \, +#define Z_IS_3549U_EQ_3549(...) \, +#define Z_IS_3549_EQ_3549U(...) \, +#define Z_IS_3549U_EQ_3549U(...) \, +#define Z_IS_3550_EQ_3550(...) \, +#define Z_IS_3550U_EQ_3550(...) \, +#define Z_IS_3550_EQ_3550U(...) \, +#define Z_IS_3550U_EQ_3550U(...) \, +#define Z_IS_3551_EQ_3551(...) \, +#define Z_IS_3551U_EQ_3551(...) \, +#define Z_IS_3551_EQ_3551U(...) \, +#define Z_IS_3551U_EQ_3551U(...) \, +#define Z_IS_3552_EQ_3552(...) \, +#define Z_IS_3552U_EQ_3552(...) \, +#define Z_IS_3552_EQ_3552U(...) \, +#define Z_IS_3552U_EQ_3552U(...) \, +#define Z_IS_3553_EQ_3553(...) \, +#define Z_IS_3553U_EQ_3553(...) \, +#define Z_IS_3553_EQ_3553U(...) \, +#define Z_IS_3553U_EQ_3553U(...) \, +#define Z_IS_3554_EQ_3554(...) \, +#define Z_IS_3554U_EQ_3554(...) \, +#define Z_IS_3554_EQ_3554U(...) \, +#define Z_IS_3554U_EQ_3554U(...) \, +#define Z_IS_3555_EQ_3555(...) \, +#define Z_IS_3555U_EQ_3555(...) \, +#define Z_IS_3555_EQ_3555U(...) \, +#define Z_IS_3555U_EQ_3555U(...) \, +#define Z_IS_3556_EQ_3556(...) \, +#define Z_IS_3556U_EQ_3556(...) \, +#define Z_IS_3556_EQ_3556U(...) \, +#define Z_IS_3556U_EQ_3556U(...) \, +#define Z_IS_3557_EQ_3557(...) \, +#define Z_IS_3557U_EQ_3557(...) \, +#define Z_IS_3557_EQ_3557U(...) \, +#define Z_IS_3557U_EQ_3557U(...) \, +#define Z_IS_3558_EQ_3558(...) \, +#define Z_IS_3558U_EQ_3558(...) \, +#define Z_IS_3558_EQ_3558U(...) \, +#define Z_IS_3558U_EQ_3558U(...) \, +#define Z_IS_3559_EQ_3559(...) \, +#define Z_IS_3559U_EQ_3559(...) \, +#define Z_IS_3559_EQ_3559U(...) \, +#define Z_IS_3559U_EQ_3559U(...) \, +#define Z_IS_3560_EQ_3560(...) \, +#define Z_IS_3560U_EQ_3560(...) \, +#define Z_IS_3560_EQ_3560U(...) \, +#define Z_IS_3560U_EQ_3560U(...) \, +#define Z_IS_3561_EQ_3561(...) \, +#define Z_IS_3561U_EQ_3561(...) \, +#define Z_IS_3561_EQ_3561U(...) \, +#define Z_IS_3561U_EQ_3561U(...) \, +#define Z_IS_3562_EQ_3562(...) \, +#define Z_IS_3562U_EQ_3562(...) \, +#define Z_IS_3562_EQ_3562U(...) \, +#define Z_IS_3562U_EQ_3562U(...) \, +#define Z_IS_3563_EQ_3563(...) \, +#define Z_IS_3563U_EQ_3563(...) \, +#define Z_IS_3563_EQ_3563U(...) \, +#define Z_IS_3563U_EQ_3563U(...) \, +#define Z_IS_3564_EQ_3564(...) \, +#define Z_IS_3564U_EQ_3564(...) \, +#define Z_IS_3564_EQ_3564U(...) \, +#define Z_IS_3564U_EQ_3564U(...) \, +#define Z_IS_3565_EQ_3565(...) \, +#define Z_IS_3565U_EQ_3565(...) \, +#define Z_IS_3565_EQ_3565U(...) \, +#define Z_IS_3565U_EQ_3565U(...) \, +#define Z_IS_3566_EQ_3566(...) \, +#define Z_IS_3566U_EQ_3566(...) \, +#define Z_IS_3566_EQ_3566U(...) \, +#define Z_IS_3566U_EQ_3566U(...) \, +#define Z_IS_3567_EQ_3567(...) \, +#define Z_IS_3567U_EQ_3567(...) \, +#define Z_IS_3567_EQ_3567U(...) \, +#define Z_IS_3567U_EQ_3567U(...) \, +#define Z_IS_3568_EQ_3568(...) \, +#define Z_IS_3568U_EQ_3568(...) \, +#define Z_IS_3568_EQ_3568U(...) \, +#define Z_IS_3568U_EQ_3568U(...) \, +#define Z_IS_3569_EQ_3569(...) \, +#define Z_IS_3569U_EQ_3569(...) \, +#define Z_IS_3569_EQ_3569U(...) \, +#define Z_IS_3569U_EQ_3569U(...) \, +#define Z_IS_3570_EQ_3570(...) \, +#define Z_IS_3570U_EQ_3570(...) \, +#define Z_IS_3570_EQ_3570U(...) \, +#define Z_IS_3570U_EQ_3570U(...) \, +#define Z_IS_3571_EQ_3571(...) \, +#define Z_IS_3571U_EQ_3571(...) \, +#define Z_IS_3571_EQ_3571U(...) \, +#define Z_IS_3571U_EQ_3571U(...) \, +#define Z_IS_3572_EQ_3572(...) \, +#define Z_IS_3572U_EQ_3572(...) \, +#define Z_IS_3572_EQ_3572U(...) \, +#define Z_IS_3572U_EQ_3572U(...) \, +#define Z_IS_3573_EQ_3573(...) \, +#define Z_IS_3573U_EQ_3573(...) \, +#define Z_IS_3573_EQ_3573U(...) \, +#define Z_IS_3573U_EQ_3573U(...) \, +#define Z_IS_3574_EQ_3574(...) \, +#define Z_IS_3574U_EQ_3574(...) \, +#define Z_IS_3574_EQ_3574U(...) \, +#define Z_IS_3574U_EQ_3574U(...) \, +#define Z_IS_3575_EQ_3575(...) \, +#define Z_IS_3575U_EQ_3575(...) \, +#define Z_IS_3575_EQ_3575U(...) \, +#define Z_IS_3575U_EQ_3575U(...) \, +#define Z_IS_3576_EQ_3576(...) \, +#define Z_IS_3576U_EQ_3576(...) \, +#define Z_IS_3576_EQ_3576U(...) \, +#define Z_IS_3576U_EQ_3576U(...) \, +#define Z_IS_3577_EQ_3577(...) \, +#define Z_IS_3577U_EQ_3577(...) \, +#define Z_IS_3577_EQ_3577U(...) \, +#define Z_IS_3577U_EQ_3577U(...) \, +#define Z_IS_3578_EQ_3578(...) \, +#define Z_IS_3578U_EQ_3578(...) \, +#define Z_IS_3578_EQ_3578U(...) \, +#define Z_IS_3578U_EQ_3578U(...) \, +#define Z_IS_3579_EQ_3579(...) \, +#define Z_IS_3579U_EQ_3579(...) \, +#define Z_IS_3579_EQ_3579U(...) \, +#define Z_IS_3579U_EQ_3579U(...) \, +#define Z_IS_3580_EQ_3580(...) \, +#define Z_IS_3580U_EQ_3580(...) \, +#define Z_IS_3580_EQ_3580U(...) \, +#define Z_IS_3580U_EQ_3580U(...) \, +#define Z_IS_3581_EQ_3581(...) \, +#define Z_IS_3581U_EQ_3581(...) \, +#define Z_IS_3581_EQ_3581U(...) \, +#define Z_IS_3581U_EQ_3581U(...) \, +#define Z_IS_3582_EQ_3582(...) \, +#define Z_IS_3582U_EQ_3582(...) \, +#define Z_IS_3582_EQ_3582U(...) \, +#define Z_IS_3582U_EQ_3582U(...) \, +#define Z_IS_3583_EQ_3583(...) \, +#define Z_IS_3583U_EQ_3583(...) \, +#define Z_IS_3583_EQ_3583U(...) \, +#define Z_IS_3583U_EQ_3583U(...) \, +#define Z_IS_3584_EQ_3584(...) \, +#define Z_IS_3584U_EQ_3584(...) \, +#define Z_IS_3584_EQ_3584U(...) \, +#define Z_IS_3584U_EQ_3584U(...) \, +#define Z_IS_3585_EQ_3585(...) \, +#define Z_IS_3585U_EQ_3585(...) \, +#define Z_IS_3585_EQ_3585U(...) \, +#define Z_IS_3585U_EQ_3585U(...) \, +#define Z_IS_3586_EQ_3586(...) \, +#define Z_IS_3586U_EQ_3586(...) \, +#define Z_IS_3586_EQ_3586U(...) \, +#define Z_IS_3586U_EQ_3586U(...) \, +#define Z_IS_3587_EQ_3587(...) \, +#define Z_IS_3587U_EQ_3587(...) \, +#define Z_IS_3587_EQ_3587U(...) \, +#define Z_IS_3587U_EQ_3587U(...) \, +#define Z_IS_3588_EQ_3588(...) \, +#define Z_IS_3588U_EQ_3588(...) \, +#define Z_IS_3588_EQ_3588U(...) \, +#define Z_IS_3588U_EQ_3588U(...) \, +#define Z_IS_3589_EQ_3589(...) \, +#define Z_IS_3589U_EQ_3589(...) \, +#define Z_IS_3589_EQ_3589U(...) \, +#define Z_IS_3589U_EQ_3589U(...) \, +#define Z_IS_3590_EQ_3590(...) \, +#define Z_IS_3590U_EQ_3590(...) \, +#define Z_IS_3590_EQ_3590U(...) \, +#define Z_IS_3590U_EQ_3590U(...) \, +#define Z_IS_3591_EQ_3591(...) \, +#define Z_IS_3591U_EQ_3591(...) \, +#define Z_IS_3591_EQ_3591U(...) \, +#define Z_IS_3591U_EQ_3591U(...) \, +#define Z_IS_3592_EQ_3592(...) \, +#define Z_IS_3592U_EQ_3592(...) \, +#define Z_IS_3592_EQ_3592U(...) \, +#define Z_IS_3592U_EQ_3592U(...) \, +#define Z_IS_3593_EQ_3593(...) \, +#define Z_IS_3593U_EQ_3593(...) \, +#define Z_IS_3593_EQ_3593U(...) \, +#define Z_IS_3593U_EQ_3593U(...) \, +#define Z_IS_3594_EQ_3594(...) \, +#define Z_IS_3594U_EQ_3594(...) \, +#define Z_IS_3594_EQ_3594U(...) \, +#define Z_IS_3594U_EQ_3594U(...) \, +#define Z_IS_3595_EQ_3595(...) \, +#define Z_IS_3595U_EQ_3595(...) \, +#define Z_IS_3595_EQ_3595U(...) \, +#define Z_IS_3595U_EQ_3595U(...) \, +#define Z_IS_3596_EQ_3596(...) \, +#define Z_IS_3596U_EQ_3596(...) \, +#define Z_IS_3596_EQ_3596U(...) \, +#define Z_IS_3596U_EQ_3596U(...) \, +#define Z_IS_3597_EQ_3597(...) \, +#define Z_IS_3597U_EQ_3597(...) \, +#define Z_IS_3597_EQ_3597U(...) \, +#define Z_IS_3597U_EQ_3597U(...) \, +#define Z_IS_3598_EQ_3598(...) \, +#define Z_IS_3598U_EQ_3598(...) \, +#define Z_IS_3598_EQ_3598U(...) \, +#define Z_IS_3598U_EQ_3598U(...) \, +#define Z_IS_3599_EQ_3599(...) \, +#define Z_IS_3599U_EQ_3599(...) \, +#define Z_IS_3599_EQ_3599U(...) \, +#define Z_IS_3599U_EQ_3599U(...) \, +#define Z_IS_3600_EQ_3600(...) \, +#define Z_IS_3600U_EQ_3600(...) \, +#define Z_IS_3600_EQ_3600U(...) \, +#define Z_IS_3600U_EQ_3600U(...) \, +#define Z_IS_3601_EQ_3601(...) \, +#define Z_IS_3601U_EQ_3601(...) \, +#define Z_IS_3601_EQ_3601U(...) \, +#define Z_IS_3601U_EQ_3601U(...) \, +#define Z_IS_3602_EQ_3602(...) \, +#define Z_IS_3602U_EQ_3602(...) \, +#define Z_IS_3602_EQ_3602U(...) \, +#define Z_IS_3602U_EQ_3602U(...) \, +#define Z_IS_3603_EQ_3603(...) \, +#define Z_IS_3603U_EQ_3603(...) \, +#define Z_IS_3603_EQ_3603U(...) \, +#define Z_IS_3603U_EQ_3603U(...) \, +#define Z_IS_3604_EQ_3604(...) \, +#define Z_IS_3604U_EQ_3604(...) \, +#define Z_IS_3604_EQ_3604U(...) \, +#define Z_IS_3604U_EQ_3604U(...) \, +#define Z_IS_3605_EQ_3605(...) \, +#define Z_IS_3605U_EQ_3605(...) \, +#define Z_IS_3605_EQ_3605U(...) \, +#define Z_IS_3605U_EQ_3605U(...) \, +#define Z_IS_3606_EQ_3606(...) \, +#define Z_IS_3606U_EQ_3606(...) \, +#define Z_IS_3606_EQ_3606U(...) \, +#define Z_IS_3606U_EQ_3606U(...) \, +#define Z_IS_3607_EQ_3607(...) \, +#define Z_IS_3607U_EQ_3607(...) \, +#define Z_IS_3607_EQ_3607U(...) \, +#define Z_IS_3607U_EQ_3607U(...) \, +#define Z_IS_3608_EQ_3608(...) \, +#define Z_IS_3608U_EQ_3608(...) \, +#define Z_IS_3608_EQ_3608U(...) \, +#define Z_IS_3608U_EQ_3608U(...) \, +#define Z_IS_3609_EQ_3609(...) \, +#define Z_IS_3609U_EQ_3609(...) \, +#define Z_IS_3609_EQ_3609U(...) \, +#define Z_IS_3609U_EQ_3609U(...) \, +#define Z_IS_3610_EQ_3610(...) \, +#define Z_IS_3610U_EQ_3610(...) \, +#define Z_IS_3610_EQ_3610U(...) \, +#define Z_IS_3610U_EQ_3610U(...) \, +#define Z_IS_3611_EQ_3611(...) \, +#define Z_IS_3611U_EQ_3611(...) \, +#define Z_IS_3611_EQ_3611U(...) \, +#define Z_IS_3611U_EQ_3611U(...) \, +#define Z_IS_3612_EQ_3612(...) \, +#define Z_IS_3612U_EQ_3612(...) \, +#define Z_IS_3612_EQ_3612U(...) \, +#define Z_IS_3612U_EQ_3612U(...) \, +#define Z_IS_3613_EQ_3613(...) \, +#define Z_IS_3613U_EQ_3613(...) \, +#define Z_IS_3613_EQ_3613U(...) \, +#define Z_IS_3613U_EQ_3613U(...) \, +#define Z_IS_3614_EQ_3614(...) \, +#define Z_IS_3614U_EQ_3614(...) \, +#define Z_IS_3614_EQ_3614U(...) \, +#define Z_IS_3614U_EQ_3614U(...) \, +#define Z_IS_3615_EQ_3615(...) \, +#define Z_IS_3615U_EQ_3615(...) \, +#define Z_IS_3615_EQ_3615U(...) \, +#define Z_IS_3615U_EQ_3615U(...) \, +#define Z_IS_3616_EQ_3616(...) \, +#define Z_IS_3616U_EQ_3616(...) \, +#define Z_IS_3616_EQ_3616U(...) \, +#define Z_IS_3616U_EQ_3616U(...) \, +#define Z_IS_3617_EQ_3617(...) \, +#define Z_IS_3617U_EQ_3617(...) \, +#define Z_IS_3617_EQ_3617U(...) \, +#define Z_IS_3617U_EQ_3617U(...) \, +#define Z_IS_3618_EQ_3618(...) \, +#define Z_IS_3618U_EQ_3618(...) \, +#define Z_IS_3618_EQ_3618U(...) \, +#define Z_IS_3618U_EQ_3618U(...) \, +#define Z_IS_3619_EQ_3619(...) \, +#define Z_IS_3619U_EQ_3619(...) \, +#define Z_IS_3619_EQ_3619U(...) \, +#define Z_IS_3619U_EQ_3619U(...) \, +#define Z_IS_3620_EQ_3620(...) \, +#define Z_IS_3620U_EQ_3620(...) \, +#define Z_IS_3620_EQ_3620U(...) \, +#define Z_IS_3620U_EQ_3620U(...) \, +#define Z_IS_3621_EQ_3621(...) \, +#define Z_IS_3621U_EQ_3621(...) \, +#define Z_IS_3621_EQ_3621U(...) \, +#define Z_IS_3621U_EQ_3621U(...) \, +#define Z_IS_3622_EQ_3622(...) \, +#define Z_IS_3622U_EQ_3622(...) \, +#define Z_IS_3622_EQ_3622U(...) \, +#define Z_IS_3622U_EQ_3622U(...) \, +#define Z_IS_3623_EQ_3623(...) \, +#define Z_IS_3623U_EQ_3623(...) \, +#define Z_IS_3623_EQ_3623U(...) \, +#define Z_IS_3623U_EQ_3623U(...) \, +#define Z_IS_3624_EQ_3624(...) \, +#define Z_IS_3624U_EQ_3624(...) \, +#define Z_IS_3624_EQ_3624U(...) \, +#define Z_IS_3624U_EQ_3624U(...) \, +#define Z_IS_3625_EQ_3625(...) \, +#define Z_IS_3625U_EQ_3625(...) \, +#define Z_IS_3625_EQ_3625U(...) \, +#define Z_IS_3625U_EQ_3625U(...) \, +#define Z_IS_3626_EQ_3626(...) \, +#define Z_IS_3626U_EQ_3626(...) \, +#define Z_IS_3626_EQ_3626U(...) \, +#define Z_IS_3626U_EQ_3626U(...) \, +#define Z_IS_3627_EQ_3627(...) \, +#define Z_IS_3627U_EQ_3627(...) \, +#define Z_IS_3627_EQ_3627U(...) \, +#define Z_IS_3627U_EQ_3627U(...) \, +#define Z_IS_3628_EQ_3628(...) \, +#define Z_IS_3628U_EQ_3628(...) \, +#define Z_IS_3628_EQ_3628U(...) \, +#define Z_IS_3628U_EQ_3628U(...) \, +#define Z_IS_3629_EQ_3629(...) \, +#define Z_IS_3629U_EQ_3629(...) \, +#define Z_IS_3629_EQ_3629U(...) \, +#define Z_IS_3629U_EQ_3629U(...) \, +#define Z_IS_3630_EQ_3630(...) \, +#define Z_IS_3630U_EQ_3630(...) \, +#define Z_IS_3630_EQ_3630U(...) \, +#define Z_IS_3630U_EQ_3630U(...) \, +#define Z_IS_3631_EQ_3631(...) \, +#define Z_IS_3631U_EQ_3631(...) \, +#define Z_IS_3631_EQ_3631U(...) \, +#define Z_IS_3631U_EQ_3631U(...) \, +#define Z_IS_3632_EQ_3632(...) \, +#define Z_IS_3632U_EQ_3632(...) \, +#define Z_IS_3632_EQ_3632U(...) \, +#define Z_IS_3632U_EQ_3632U(...) \, +#define Z_IS_3633_EQ_3633(...) \, +#define Z_IS_3633U_EQ_3633(...) \, +#define Z_IS_3633_EQ_3633U(...) \, +#define Z_IS_3633U_EQ_3633U(...) \, +#define Z_IS_3634_EQ_3634(...) \, +#define Z_IS_3634U_EQ_3634(...) \, +#define Z_IS_3634_EQ_3634U(...) \, +#define Z_IS_3634U_EQ_3634U(...) \, +#define Z_IS_3635_EQ_3635(...) \, +#define Z_IS_3635U_EQ_3635(...) \, +#define Z_IS_3635_EQ_3635U(...) \, +#define Z_IS_3635U_EQ_3635U(...) \, +#define Z_IS_3636_EQ_3636(...) \, +#define Z_IS_3636U_EQ_3636(...) \, +#define Z_IS_3636_EQ_3636U(...) \, +#define Z_IS_3636U_EQ_3636U(...) \, +#define Z_IS_3637_EQ_3637(...) \, +#define Z_IS_3637U_EQ_3637(...) \, +#define Z_IS_3637_EQ_3637U(...) \, +#define Z_IS_3637U_EQ_3637U(...) \, +#define Z_IS_3638_EQ_3638(...) \, +#define Z_IS_3638U_EQ_3638(...) \, +#define Z_IS_3638_EQ_3638U(...) \, +#define Z_IS_3638U_EQ_3638U(...) \, +#define Z_IS_3639_EQ_3639(...) \, +#define Z_IS_3639U_EQ_3639(...) \, +#define Z_IS_3639_EQ_3639U(...) \, +#define Z_IS_3639U_EQ_3639U(...) \, +#define Z_IS_3640_EQ_3640(...) \, +#define Z_IS_3640U_EQ_3640(...) \, +#define Z_IS_3640_EQ_3640U(...) \, +#define Z_IS_3640U_EQ_3640U(...) \, +#define Z_IS_3641_EQ_3641(...) \, +#define Z_IS_3641U_EQ_3641(...) \, +#define Z_IS_3641_EQ_3641U(...) \, +#define Z_IS_3641U_EQ_3641U(...) \, +#define Z_IS_3642_EQ_3642(...) \, +#define Z_IS_3642U_EQ_3642(...) \, +#define Z_IS_3642_EQ_3642U(...) \, +#define Z_IS_3642U_EQ_3642U(...) \, +#define Z_IS_3643_EQ_3643(...) \, +#define Z_IS_3643U_EQ_3643(...) \, +#define Z_IS_3643_EQ_3643U(...) \, +#define Z_IS_3643U_EQ_3643U(...) \, +#define Z_IS_3644_EQ_3644(...) \, +#define Z_IS_3644U_EQ_3644(...) \, +#define Z_IS_3644_EQ_3644U(...) \, +#define Z_IS_3644U_EQ_3644U(...) \, +#define Z_IS_3645_EQ_3645(...) \, +#define Z_IS_3645U_EQ_3645(...) \, +#define Z_IS_3645_EQ_3645U(...) \, +#define Z_IS_3645U_EQ_3645U(...) \, +#define Z_IS_3646_EQ_3646(...) \, +#define Z_IS_3646U_EQ_3646(...) \, +#define Z_IS_3646_EQ_3646U(...) \, +#define Z_IS_3646U_EQ_3646U(...) \, +#define Z_IS_3647_EQ_3647(...) \, +#define Z_IS_3647U_EQ_3647(...) \, +#define Z_IS_3647_EQ_3647U(...) \, +#define Z_IS_3647U_EQ_3647U(...) \, +#define Z_IS_3648_EQ_3648(...) \, +#define Z_IS_3648U_EQ_3648(...) \, +#define Z_IS_3648_EQ_3648U(...) \, +#define Z_IS_3648U_EQ_3648U(...) \, +#define Z_IS_3649_EQ_3649(...) \, +#define Z_IS_3649U_EQ_3649(...) \, +#define Z_IS_3649_EQ_3649U(...) \, +#define Z_IS_3649U_EQ_3649U(...) \, +#define Z_IS_3650_EQ_3650(...) \, +#define Z_IS_3650U_EQ_3650(...) \, +#define Z_IS_3650_EQ_3650U(...) \, +#define Z_IS_3650U_EQ_3650U(...) \, +#define Z_IS_3651_EQ_3651(...) \, +#define Z_IS_3651U_EQ_3651(...) \, +#define Z_IS_3651_EQ_3651U(...) \, +#define Z_IS_3651U_EQ_3651U(...) \, +#define Z_IS_3652_EQ_3652(...) \, +#define Z_IS_3652U_EQ_3652(...) \, +#define Z_IS_3652_EQ_3652U(...) \, +#define Z_IS_3652U_EQ_3652U(...) \, +#define Z_IS_3653_EQ_3653(...) \, +#define Z_IS_3653U_EQ_3653(...) \, +#define Z_IS_3653_EQ_3653U(...) \, +#define Z_IS_3653U_EQ_3653U(...) \, +#define Z_IS_3654_EQ_3654(...) \, +#define Z_IS_3654U_EQ_3654(...) \, +#define Z_IS_3654_EQ_3654U(...) \, +#define Z_IS_3654U_EQ_3654U(...) \, +#define Z_IS_3655_EQ_3655(...) \, +#define Z_IS_3655U_EQ_3655(...) \, +#define Z_IS_3655_EQ_3655U(...) \, +#define Z_IS_3655U_EQ_3655U(...) \, +#define Z_IS_3656_EQ_3656(...) \, +#define Z_IS_3656U_EQ_3656(...) \, +#define Z_IS_3656_EQ_3656U(...) \, +#define Z_IS_3656U_EQ_3656U(...) \, +#define Z_IS_3657_EQ_3657(...) \, +#define Z_IS_3657U_EQ_3657(...) \, +#define Z_IS_3657_EQ_3657U(...) \, +#define Z_IS_3657U_EQ_3657U(...) \, +#define Z_IS_3658_EQ_3658(...) \, +#define Z_IS_3658U_EQ_3658(...) \, +#define Z_IS_3658_EQ_3658U(...) \, +#define Z_IS_3658U_EQ_3658U(...) \, +#define Z_IS_3659_EQ_3659(...) \, +#define Z_IS_3659U_EQ_3659(...) \, +#define Z_IS_3659_EQ_3659U(...) \, +#define Z_IS_3659U_EQ_3659U(...) \, +#define Z_IS_3660_EQ_3660(...) \, +#define Z_IS_3660U_EQ_3660(...) \, +#define Z_IS_3660_EQ_3660U(...) \, +#define Z_IS_3660U_EQ_3660U(...) \, +#define Z_IS_3661_EQ_3661(...) \, +#define Z_IS_3661U_EQ_3661(...) \, +#define Z_IS_3661_EQ_3661U(...) \, +#define Z_IS_3661U_EQ_3661U(...) \, +#define Z_IS_3662_EQ_3662(...) \, +#define Z_IS_3662U_EQ_3662(...) \, +#define Z_IS_3662_EQ_3662U(...) \, +#define Z_IS_3662U_EQ_3662U(...) \, +#define Z_IS_3663_EQ_3663(...) \, +#define Z_IS_3663U_EQ_3663(...) \, +#define Z_IS_3663_EQ_3663U(...) \, +#define Z_IS_3663U_EQ_3663U(...) \, +#define Z_IS_3664_EQ_3664(...) \, +#define Z_IS_3664U_EQ_3664(...) \, +#define Z_IS_3664_EQ_3664U(...) \, +#define Z_IS_3664U_EQ_3664U(...) \, +#define Z_IS_3665_EQ_3665(...) \, +#define Z_IS_3665U_EQ_3665(...) \, +#define Z_IS_3665_EQ_3665U(...) \, +#define Z_IS_3665U_EQ_3665U(...) \, +#define Z_IS_3666_EQ_3666(...) \, +#define Z_IS_3666U_EQ_3666(...) \, +#define Z_IS_3666_EQ_3666U(...) \, +#define Z_IS_3666U_EQ_3666U(...) \, +#define Z_IS_3667_EQ_3667(...) \, +#define Z_IS_3667U_EQ_3667(...) \, +#define Z_IS_3667_EQ_3667U(...) \, +#define Z_IS_3667U_EQ_3667U(...) \, +#define Z_IS_3668_EQ_3668(...) \, +#define Z_IS_3668U_EQ_3668(...) \, +#define Z_IS_3668_EQ_3668U(...) \, +#define Z_IS_3668U_EQ_3668U(...) \, +#define Z_IS_3669_EQ_3669(...) \, +#define Z_IS_3669U_EQ_3669(...) \, +#define Z_IS_3669_EQ_3669U(...) \, +#define Z_IS_3669U_EQ_3669U(...) \, +#define Z_IS_3670_EQ_3670(...) \, +#define Z_IS_3670U_EQ_3670(...) \, +#define Z_IS_3670_EQ_3670U(...) \, +#define Z_IS_3670U_EQ_3670U(...) \, +#define Z_IS_3671_EQ_3671(...) \, +#define Z_IS_3671U_EQ_3671(...) \, +#define Z_IS_3671_EQ_3671U(...) \, +#define Z_IS_3671U_EQ_3671U(...) \, +#define Z_IS_3672_EQ_3672(...) \, +#define Z_IS_3672U_EQ_3672(...) \, +#define Z_IS_3672_EQ_3672U(...) \, +#define Z_IS_3672U_EQ_3672U(...) \, +#define Z_IS_3673_EQ_3673(...) \, +#define Z_IS_3673U_EQ_3673(...) \, +#define Z_IS_3673_EQ_3673U(...) \, +#define Z_IS_3673U_EQ_3673U(...) \, +#define Z_IS_3674_EQ_3674(...) \, +#define Z_IS_3674U_EQ_3674(...) \, +#define Z_IS_3674_EQ_3674U(...) \, +#define Z_IS_3674U_EQ_3674U(...) \, +#define Z_IS_3675_EQ_3675(...) \, +#define Z_IS_3675U_EQ_3675(...) \, +#define Z_IS_3675_EQ_3675U(...) \, +#define Z_IS_3675U_EQ_3675U(...) \, +#define Z_IS_3676_EQ_3676(...) \, +#define Z_IS_3676U_EQ_3676(...) \, +#define Z_IS_3676_EQ_3676U(...) \, +#define Z_IS_3676U_EQ_3676U(...) \, +#define Z_IS_3677_EQ_3677(...) \, +#define Z_IS_3677U_EQ_3677(...) \, +#define Z_IS_3677_EQ_3677U(...) \, +#define Z_IS_3677U_EQ_3677U(...) \, +#define Z_IS_3678_EQ_3678(...) \, +#define Z_IS_3678U_EQ_3678(...) \, +#define Z_IS_3678_EQ_3678U(...) \, +#define Z_IS_3678U_EQ_3678U(...) \, +#define Z_IS_3679_EQ_3679(...) \, +#define Z_IS_3679U_EQ_3679(...) \, +#define Z_IS_3679_EQ_3679U(...) \, +#define Z_IS_3679U_EQ_3679U(...) \, +#define Z_IS_3680_EQ_3680(...) \, +#define Z_IS_3680U_EQ_3680(...) \, +#define Z_IS_3680_EQ_3680U(...) \, +#define Z_IS_3680U_EQ_3680U(...) \, +#define Z_IS_3681_EQ_3681(...) \, +#define Z_IS_3681U_EQ_3681(...) \, +#define Z_IS_3681_EQ_3681U(...) \, +#define Z_IS_3681U_EQ_3681U(...) \, +#define Z_IS_3682_EQ_3682(...) \, +#define Z_IS_3682U_EQ_3682(...) \, +#define Z_IS_3682_EQ_3682U(...) \, +#define Z_IS_3682U_EQ_3682U(...) \, +#define Z_IS_3683_EQ_3683(...) \, +#define Z_IS_3683U_EQ_3683(...) \, +#define Z_IS_3683_EQ_3683U(...) \, +#define Z_IS_3683U_EQ_3683U(...) \, +#define Z_IS_3684_EQ_3684(...) \, +#define Z_IS_3684U_EQ_3684(...) \, +#define Z_IS_3684_EQ_3684U(...) \, +#define Z_IS_3684U_EQ_3684U(...) \, +#define Z_IS_3685_EQ_3685(...) \, +#define Z_IS_3685U_EQ_3685(...) \, +#define Z_IS_3685_EQ_3685U(...) \, +#define Z_IS_3685U_EQ_3685U(...) \, +#define Z_IS_3686_EQ_3686(...) \, +#define Z_IS_3686U_EQ_3686(...) \, +#define Z_IS_3686_EQ_3686U(...) \, +#define Z_IS_3686U_EQ_3686U(...) \, +#define Z_IS_3687_EQ_3687(...) \, +#define Z_IS_3687U_EQ_3687(...) \, +#define Z_IS_3687_EQ_3687U(...) \, +#define Z_IS_3687U_EQ_3687U(...) \, +#define Z_IS_3688_EQ_3688(...) \, +#define Z_IS_3688U_EQ_3688(...) \, +#define Z_IS_3688_EQ_3688U(...) \, +#define Z_IS_3688U_EQ_3688U(...) \, +#define Z_IS_3689_EQ_3689(...) \, +#define Z_IS_3689U_EQ_3689(...) \, +#define Z_IS_3689_EQ_3689U(...) \, +#define Z_IS_3689U_EQ_3689U(...) \, +#define Z_IS_3690_EQ_3690(...) \, +#define Z_IS_3690U_EQ_3690(...) \, +#define Z_IS_3690_EQ_3690U(...) \, +#define Z_IS_3690U_EQ_3690U(...) \, +#define Z_IS_3691_EQ_3691(...) \, +#define Z_IS_3691U_EQ_3691(...) \, +#define Z_IS_3691_EQ_3691U(...) \, +#define Z_IS_3691U_EQ_3691U(...) \, +#define Z_IS_3692_EQ_3692(...) \, +#define Z_IS_3692U_EQ_3692(...) \, +#define Z_IS_3692_EQ_3692U(...) \, +#define Z_IS_3692U_EQ_3692U(...) \, +#define Z_IS_3693_EQ_3693(...) \, +#define Z_IS_3693U_EQ_3693(...) \, +#define Z_IS_3693_EQ_3693U(...) \, +#define Z_IS_3693U_EQ_3693U(...) \, +#define Z_IS_3694_EQ_3694(...) \, +#define Z_IS_3694U_EQ_3694(...) \, +#define Z_IS_3694_EQ_3694U(...) \, +#define Z_IS_3694U_EQ_3694U(...) \, +#define Z_IS_3695_EQ_3695(...) \, +#define Z_IS_3695U_EQ_3695(...) \, +#define Z_IS_3695_EQ_3695U(...) \, +#define Z_IS_3695U_EQ_3695U(...) \, +#define Z_IS_3696_EQ_3696(...) \, +#define Z_IS_3696U_EQ_3696(...) \, +#define Z_IS_3696_EQ_3696U(...) \, +#define Z_IS_3696U_EQ_3696U(...) \, +#define Z_IS_3697_EQ_3697(...) \, +#define Z_IS_3697U_EQ_3697(...) \, +#define Z_IS_3697_EQ_3697U(...) \, +#define Z_IS_3697U_EQ_3697U(...) \, +#define Z_IS_3698_EQ_3698(...) \, +#define Z_IS_3698U_EQ_3698(...) \, +#define Z_IS_3698_EQ_3698U(...) \, +#define Z_IS_3698U_EQ_3698U(...) \, +#define Z_IS_3699_EQ_3699(...) \, +#define Z_IS_3699U_EQ_3699(...) \, +#define Z_IS_3699_EQ_3699U(...) \, +#define Z_IS_3699U_EQ_3699U(...) \, +#define Z_IS_3700_EQ_3700(...) \, +#define Z_IS_3700U_EQ_3700(...) \, +#define Z_IS_3700_EQ_3700U(...) \, +#define Z_IS_3700U_EQ_3700U(...) \, +#define Z_IS_3701_EQ_3701(...) \, +#define Z_IS_3701U_EQ_3701(...) \, +#define Z_IS_3701_EQ_3701U(...) \, +#define Z_IS_3701U_EQ_3701U(...) \, +#define Z_IS_3702_EQ_3702(...) \, +#define Z_IS_3702U_EQ_3702(...) \, +#define Z_IS_3702_EQ_3702U(...) \, +#define Z_IS_3702U_EQ_3702U(...) \, +#define Z_IS_3703_EQ_3703(...) \, +#define Z_IS_3703U_EQ_3703(...) \, +#define Z_IS_3703_EQ_3703U(...) \, +#define Z_IS_3703U_EQ_3703U(...) \, +#define Z_IS_3704_EQ_3704(...) \, +#define Z_IS_3704U_EQ_3704(...) \, +#define Z_IS_3704_EQ_3704U(...) \, +#define Z_IS_3704U_EQ_3704U(...) \, +#define Z_IS_3705_EQ_3705(...) \, +#define Z_IS_3705U_EQ_3705(...) \, +#define Z_IS_3705_EQ_3705U(...) \, +#define Z_IS_3705U_EQ_3705U(...) \, +#define Z_IS_3706_EQ_3706(...) \, +#define Z_IS_3706U_EQ_3706(...) \, +#define Z_IS_3706_EQ_3706U(...) \, +#define Z_IS_3706U_EQ_3706U(...) \, +#define Z_IS_3707_EQ_3707(...) \, +#define Z_IS_3707U_EQ_3707(...) \, +#define Z_IS_3707_EQ_3707U(...) \, +#define Z_IS_3707U_EQ_3707U(...) \, +#define Z_IS_3708_EQ_3708(...) \, +#define Z_IS_3708U_EQ_3708(...) \, +#define Z_IS_3708_EQ_3708U(...) \, +#define Z_IS_3708U_EQ_3708U(...) \, +#define Z_IS_3709_EQ_3709(...) \, +#define Z_IS_3709U_EQ_3709(...) \, +#define Z_IS_3709_EQ_3709U(...) \, +#define Z_IS_3709U_EQ_3709U(...) \, +#define Z_IS_3710_EQ_3710(...) \, +#define Z_IS_3710U_EQ_3710(...) \, +#define Z_IS_3710_EQ_3710U(...) \, +#define Z_IS_3710U_EQ_3710U(...) \, +#define Z_IS_3711_EQ_3711(...) \, +#define Z_IS_3711U_EQ_3711(...) \, +#define Z_IS_3711_EQ_3711U(...) \, +#define Z_IS_3711U_EQ_3711U(...) \, +#define Z_IS_3712_EQ_3712(...) \, +#define Z_IS_3712U_EQ_3712(...) \, +#define Z_IS_3712_EQ_3712U(...) \, +#define Z_IS_3712U_EQ_3712U(...) \, +#define Z_IS_3713_EQ_3713(...) \, +#define Z_IS_3713U_EQ_3713(...) \, +#define Z_IS_3713_EQ_3713U(...) \, +#define Z_IS_3713U_EQ_3713U(...) \, +#define Z_IS_3714_EQ_3714(...) \, +#define Z_IS_3714U_EQ_3714(...) \, +#define Z_IS_3714_EQ_3714U(...) \, +#define Z_IS_3714U_EQ_3714U(...) \, +#define Z_IS_3715_EQ_3715(...) \, +#define Z_IS_3715U_EQ_3715(...) \, +#define Z_IS_3715_EQ_3715U(...) \, +#define Z_IS_3715U_EQ_3715U(...) \, +#define Z_IS_3716_EQ_3716(...) \, +#define Z_IS_3716U_EQ_3716(...) \, +#define Z_IS_3716_EQ_3716U(...) \, +#define Z_IS_3716U_EQ_3716U(...) \, +#define Z_IS_3717_EQ_3717(...) \, +#define Z_IS_3717U_EQ_3717(...) \, +#define Z_IS_3717_EQ_3717U(...) \, +#define Z_IS_3717U_EQ_3717U(...) \, +#define Z_IS_3718_EQ_3718(...) \, +#define Z_IS_3718U_EQ_3718(...) \, +#define Z_IS_3718_EQ_3718U(...) \, +#define Z_IS_3718U_EQ_3718U(...) \, +#define Z_IS_3719_EQ_3719(...) \, +#define Z_IS_3719U_EQ_3719(...) \, +#define Z_IS_3719_EQ_3719U(...) \, +#define Z_IS_3719U_EQ_3719U(...) \, +#define Z_IS_3720_EQ_3720(...) \, +#define Z_IS_3720U_EQ_3720(...) \, +#define Z_IS_3720_EQ_3720U(...) \, +#define Z_IS_3720U_EQ_3720U(...) \, +#define Z_IS_3721_EQ_3721(...) \, +#define Z_IS_3721U_EQ_3721(...) \, +#define Z_IS_3721_EQ_3721U(...) \, +#define Z_IS_3721U_EQ_3721U(...) \, +#define Z_IS_3722_EQ_3722(...) \, +#define Z_IS_3722U_EQ_3722(...) \, +#define Z_IS_3722_EQ_3722U(...) \, +#define Z_IS_3722U_EQ_3722U(...) \, +#define Z_IS_3723_EQ_3723(...) \, +#define Z_IS_3723U_EQ_3723(...) \, +#define Z_IS_3723_EQ_3723U(...) \, +#define Z_IS_3723U_EQ_3723U(...) \, +#define Z_IS_3724_EQ_3724(...) \, +#define Z_IS_3724U_EQ_3724(...) \, +#define Z_IS_3724_EQ_3724U(...) \, +#define Z_IS_3724U_EQ_3724U(...) \, +#define Z_IS_3725_EQ_3725(...) \, +#define Z_IS_3725U_EQ_3725(...) \, +#define Z_IS_3725_EQ_3725U(...) \, +#define Z_IS_3725U_EQ_3725U(...) \, +#define Z_IS_3726_EQ_3726(...) \, +#define Z_IS_3726U_EQ_3726(...) \, +#define Z_IS_3726_EQ_3726U(...) \, +#define Z_IS_3726U_EQ_3726U(...) \, +#define Z_IS_3727_EQ_3727(...) \, +#define Z_IS_3727U_EQ_3727(...) \, +#define Z_IS_3727_EQ_3727U(...) \, +#define Z_IS_3727U_EQ_3727U(...) \, +#define Z_IS_3728_EQ_3728(...) \, +#define Z_IS_3728U_EQ_3728(...) \, +#define Z_IS_3728_EQ_3728U(...) \, +#define Z_IS_3728U_EQ_3728U(...) \, +#define Z_IS_3729_EQ_3729(...) \, +#define Z_IS_3729U_EQ_3729(...) \, +#define Z_IS_3729_EQ_3729U(...) \, +#define Z_IS_3729U_EQ_3729U(...) \, +#define Z_IS_3730_EQ_3730(...) \, +#define Z_IS_3730U_EQ_3730(...) \, +#define Z_IS_3730_EQ_3730U(...) \, +#define Z_IS_3730U_EQ_3730U(...) \, +#define Z_IS_3731_EQ_3731(...) \, +#define Z_IS_3731U_EQ_3731(...) \, +#define Z_IS_3731_EQ_3731U(...) \, +#define Z_IS_3731U_EQ_3731U(...) \, +#define Z_IS_3732_EQ_3732(...) \, +#define Z_IS_3732U_EQ_3732(...) \, +#define Z_IS_3732_EQ_3732U(...) \, +#define Z_IS_3732U_EQ_3732U(...) \, +#define Z_IS_3733_EQ_3733(...) \, +#define Z_IS_3733U_EQ_3733(...) \, +#define Z_IS_3733_EQ_3733U(...) \, +#define Z_IS_3733U_EQ_3733U(...) \, +#define Z_IS_3734_EQ_3734(...) \, +#define Z_IS_3734U_EQ_3734(...) \, +#define Z_IS_3734_EQ_3734U(...) \, +#define Z_IS_3734U_EQ_3734U(...) \, +#define Z_IS_3735_EQ_3735(...) \, +#define Z_IS_3735U_EQ_3735(...) \, +#define Z_IS_3735_EQ_3735U(...) \, +#define Z_IS_3735U_EQ_3735U(...) \, +#define Z_IS_3736_EQ_3736(...) \, +#define Z_IS_3736U_EQ_3736(...) \, +#define Z_IS_3736_EQ_3736U(...) \, +#define Z_IS_3736U_EQ_3736U(...) \, +#define Z_IS_3737_EQ_3737(...) \, +#define Z_IS_3737U_EQ_3737(...) \, +#define Z_IS_3737_EQ_3737U(...) \, +#define Z_IS_3737U_EQ_3737U(...) \, +#define Z_IS_3738_EQ_3738(...) \, +#define Z_IS_3738U_EQ_3738(...) \, +#define Z_IS_3738_EQ_3738U(...) \, +#define Z_IS_3738U_EQ_3738U(...) \, +#define Z_IS_3739_EQ_3739(...) \, +#define Z_IS_3739U_EQ_3739(...) \, +#define Z_IS_3739_EQ_3739U(...) \, +#define Z_IS_3739U_EQ_3739U(...) \, +#define Z_IS_3740_EQ_3740(...) \, +#define Z_IS_3740U_EQ_3740(...) \, +#define Z_IS_3740_EQ_3740U(...) \, +#define Z_IS_3740U_EQ_3740U(...) \, +#define Z_IS_3741_EQ_3741(...) \, +#define Z_IS_3741U_EQ_3741(...) \, +#define Z_IS_3741_EQ_3741U(...) \, +#define Z_IS_3741U_EQ_3741U(...) \, +#define Z_IS_3742_EQ_3742(...) \, +#define Z_IS_3742U_EQ_3742(...) \, +#define Z_IS_3742_EQ_3742U(...) \, +#define Z_IS_3742U_EQ_3742U(...) \, +#define Z_IS_3743_EQ_3743(...) \, +#define Z_IS_3743U_EQ_3743(...) \, +#define Z_IS_3743_EQ_3743U(...) \, +#define Z_IS_3743U_EQ_3743U(...) \, +#define Z_IS_3744_EQ_3744(...) \, +#define Z_IS_3744U_EQ_3744(...) \, +#define Z_IS_3744_EQ_3744U(...) \, +#define Z_IS_3744U_EQ_3744U(...) \, +#define Z_IS_3745_EQ_3745(...) \, +#define Z_IS_3745U_EQ_3745(...) \, +#define Z_IS_3745_EQ_3745U(...) \, +#define Z_IS_3745U_EQ_3745U(...) \, +#define Z_IS_3746_EQ_3746(...) \, +#define Z_IS_3746U_EQ_3746(...) \, +#define Z_IS_3746_EQ_3746U(...) \, +#define Z_IS_3746U_EQ_3746U(...) \, +#define Z_IS_3747_EQ_3747(...) \, +#define Z_IS_3747U_EQ_3747(...) \, +#define Z_IS_3747_EQ_3747U(...) \, +#define Z_IS_3747U_EQ_3747U(...) \, +#define Z_IS_3748_EQ_3748(...) \, +#define Z_IS_3748U_EQ_3748(...) \, +#define Z_IS_3748_EQ_3748U(...) \, +#define Z_IS_3748U_EQ_3748U(...) \, +#define Z_IS_3749_EQ_3749(...) \, +#define Z_IS_3749U_EQ_3749(...) \, +#define Z_IS_3749_EQ_3749U(...) \, +#define Z_IS_3749U_EQ_3749U(...) \, +#define Z_IS_3750_EQ_3750(...) \, +#define Z_IS_3750U_EQ_3750(...) \, +#define Z_IS_3750_EQ_3750U(...) \, +#define Z_IS_3750U_EQ_3750U(...) \, +#define Z_IS_3751_EQ_3751(...) \, +#define Z_IS_3751U_EQ_3751(...) \, +#define Z_IS_3751_EQ_3751U(...) \, +#define Z_IS_3751U_EQ_3751U(...) \, +#define Z_IS_3752_EQ_3752(...) \, +#define Z_IS_3752U_EQ_3752(...) \, +#define Z_IS_3752_EQ_3752U(...) \, +#define Z_IS_3752U_EQ_3752U(...) \, +#define Z_IS_3753_EQ_3753(...) \, +#define Z_IS_3753U_EQ_3753(...) \, +#define Z_IS_3753_EQ_3753U(...) \, +#define Z_IS_3753U_EQ_3753U(...) \, +#define Z_IS_3754_EQ_3754(...) \, +#define Z_IS_3754U_EQ_3754(...) \, +#define Z_IS_3754_EQ_3754U(...) \, +#define Z_IS_3754U_EQ_3754U(...) \, +#define Z_IS_3755_EQ_3755(...) \, +#define Z_IS_3755U_EQ_3755(...) \, +#define Z_IS_3755_EQ_3755U(...) \, +#define Z_IS_3755U_EQ_3755U(...) \, +#define Z_IS_3756_EQ_3756(...) \, +#define Z_IS_3756U_EQ_3756(...) \, +#define Z_IS_3756_EQ_3756U(...) \, +#define Z_IS_3756U_EQ_3756U(...) \, +#define Z_IS_3757_EQ_3757(...) \, +#define Z_IS_3757U_EQ_3757(...) \, +#define Z_IS_3757_EQ_3757U(...) \, +#define Z_IS_3757U_EQ_3757U(...) \, +#define Z_IS_3758_EQ_3758(...) \, +#define Z_IS_3758U_EQ_3758(...) \, +#define Z_IS_3758_EQ_3758U(...) \, +#define Z_IS_3758U_EQ_3758U(...) \, +#define Z_IS_3759_EQ_3759(...) \, +#define Z_IS_3759U_EQ_3759(...) \, +#define Z_IS_3759_EQ_3759U(...) \, +#define Z_IS_3759U_EQ_3759U(...) \, +#define Z_IS_3760_EQ_3760(...) \, +#define Z_IS_3760U_EQ_3760(...) \, +#define Z_IS_3760_EQ_3760U(...) \, +#define Z_IS_3760U_EQ_3760U(...) \, +#define Z_IS_3761_EQ_3761(...) \, +#define Z_IS_3761U_EQ_3761(...) \, +#define Z_IS_3761_EQ_3761U(...) \, +#define Z_IS_3761U_EQ_3761U(...) \, +#define Z_IS_3762_EQ_3762(...) \, +#define Z_IS_3762U_EQ_3762(...) \, +#define Z_IS_3762_EQ_3762U(...) \, +#define Z_IS_3762U_EQ_3762U(...) \, +#define Z_IS_3763_EQ_3763(...) \, +#define Z_IS_3763U_EQ_3763(...) \, +#define Z_IS_3763_EQ_3763U(...) \, +#define Z_IS_3763U_EQ_3763U(...) \, +#define Z_IS_3764_EQ_3764(...) \, +#define Z_IS_3764U_EQ_3764(...) \, +#define Z_IS_3764_EQ_3764U(...) \, +#define Z_IS_3764U_EQ_3764U(...) \, +#define Z_IS_3765_EQ_3765(...) \, +#define Z_IS_3765U_EQ_3765(...) \, +#define Z_IS_3765_EQ_3765U(...) \, +#define Z_IS_3765U_EQ_3765U(...) \, +#define Z_IS_3766_EQ_3766(...) \, +#define Z_IS_3766U_EQ_3766(...) \, +#define Z_IS_3766_EQ_3766U(...) \, +#define Z_IS_3766U_EQ_3766U(...) \, +#define Z_IS_3767_EQ_3767(...) \, +#define Z_IS_3767U_EQ_3767(...) \, +#define Z_IS_3767_EQ_3767U(...) \, +#define Z_IS_3767U_EQ_3767U(...) \, +#define Z_IS_3768_EQ_3768(...) \, +#define Z_IS_3768U_EQ_3768(...) \, +#define Z_IS_3768_EQ_3768U(...) \, +#define Z_IS_3768U_EQ_3768U(...) \, +#define Z_IS_3769_EQ_3769(...) \, +#define Z_IS_3769U_EQ_3769(...) \, +#define Z_IS_3769_EQ_3769U(...) \, +#define Z_IS_3769U_EQ_3769U(...) \, +#define Z_IS_3770_EQ_3770(...) \, +#define Z_IS_3770U_EQ_3770(...) \, +#define Z_IS_3770_EQ_3770U(...) \, +#define Z_IS_3770U_EQ_3770U(...) \, +#define Z_IS_3771_EQ_3771(...) \, +#define Z_IS_3771U_EQ_3771(...) \, +#define Z_IS_3771_EQ_3771U(...) \, +#define Z_IS_3771U_EQ_3771U(...) \, +#define Z_IS_3772_EQ_3772(...) \, +#define Z_IS_3772U_EQ_3772(...) \, +#define Z_IS_3772_EQ_3772U(...) \, +#define Z_IS_3772U_EQ_3772U(...) \, +#define Z_IS_3773_EQ_3773(...) \, +#define Z_IS_3773U_EQ_3773(...) \, +#define Z_IS_3773_EQ_3773U(...) \, +#define Z_IS_3773U_EQ_3773U(...) \, +#define Z_IS_3774_EQ_3774(...) \, +#define Z_IS_3774U_EQ_3774(...) \, +#define Z_IS_3774_EQ_3774U(...) \, +#define Z_IS_3774U_EQ_3774U(...) \, +#define Z_IS_3775_EQ_3775(...) \, +#define Z_IS_3775U_EQ_3775(...) \, +#define Z_IS_3775_EQ_3775U(...) \, +#define Z_IS_3775U_EQ_3775U(...) \, +#define Z_IS_3776_EQ_3776(...) \, +#define Z_IS_3776U_EQ_3776(...) \, +#define Z_IS_3776_EQ_3776U(...) \, +#define Z_IS_3776U_EQ_3776U(...) \, +#define Z_IS_3777_EQ_3777(...) \, +#define Z_IS_3777U_EQ_3777(...) \, +#define Z_IS_3777_EQ_3777U(...) \, +#define Z_IS_3777U_EQ_3777U(...) \, +#define Z_IS_3778_EQ_3778(...) \, +#define Z_IS_3778U_EQ_3778(...) \, +#define Z_IS_3778_EQ_3778U(...) \, +#define Z_IS_3778U_EQ_3778U(...) \, +#define Z_IS_3779_EQ_3779(...) \, +#define Z_IS_3779U_EQ_3779(...) \, +#define Z_IS_3779_EQ_3779U(...) \, +#define Z_IS_3779U_EQ_3779U(...) \, +#define Z_IS_3780_EQ_3780(...) \, +#define Z_IS_3780U_EQ_3780(...) \, +#define Z_IS_3780_EQ_3780U(...) \, +#define Z_IS_3780U_EQ_3780U(...) \, +#define Z_IS_3781_EQ_3781(...) \, +#define Z_IS_3781U_EQ_3781(...) \, +#define Z_IS_3781_EQ_3781U(...) \, +#define Z_IS_3781U_EQ_3781U(...) \, +#define Z_IS_3782_EQ_3782(...) \, +#define Z_IS_3782U_EQ_3782(...) \, +#define Z_IS_3782_EQ_3782U(...) \, +#define Z_IS_3782U_EQ_3782U(...) \, +#define Z_IS_3783_EQ_3783(...) \, +#define Z_IS_3783U_EQ_3783(...) \, +#define Z_IS_3783_EQ_3783U(...) \, +#define Z_IS_3783U_EQ_3783U(...) \, +#define Z_IS_3784_EQ_3784(...) \, +#define Z_IS_3784U_EQ_3784(...) \, +#define Z_IS_3784_EQ_3784U(...) \, +#define Z_IS_3784U_EQ_3784U(...) \, +#define Z_IS_3785_EQ_3785(...) \, +#define Z_IS_3785U_EQ_3785(...) \, +#define Z_IS_3785_EQ_3785U(...) \, +#define Z_IS_3785U_EQ_3785U(...) \, +#define Z_IS_3786_EQ_3786(...) \, +#define Z_IS_3786U_EQ_3786(...) \, +#define Z_IS_3786_EQ_3786U(...) \, +#define Z_IS_3786U_EQ_3786U(...) \, +#define Z_IS_3787_EQ_3787(...) \, +#define Z_IS_3787U_EQ_3787(...) \, +#define Z_IS_3787_EQ_3787U(...) \, +#define Z_IS_3787U_EQ_3787U(...) \, +#define Z_IS_3788_EQ_3788(...) \, +#define Z_IS_3788U_EQ_3788(...) \, +#define Z_IS_3788_EQ_3788U(...) \, +#define Z_IS_3788U_EQ_3788U(...) \, +#define Z_IS_3789_EQ_3789(...) \, +#define Z_IS_3789U_EQ_3789(...) \, +#define Z_IS_3789_EQ_3789U(...) \, +#define Z_IS_3789U_EQ_3789U(...) \, +#define Z_IS_3790_EQ_3790(...) \, +#define Z_IS_3790U_EQ_3790(...) \, +#define Z_IS_3790_EQ_3790U(...) \, +#define Z_IS_3790U_EQ_3790U(...) \, +#define Z_IS_3791_EQ_3791(...) \, +#define Z_IS_3791U_EQ_3791(...) \, +#define Z_IS_3791_EQ_3791U(...) \, +#define Z_IS_3791U_EQ_3791U(...) \, +#define Z_IS_3792_EQ_3792(...) \, +#define Z_IS_3792U_EQ_3792(...) \, +#define Z_IS_3792_EQ_3792U(...) \, +#define Z_IS_3792U_EQ_3792U(...) \, +#define Z_IS_3793_EQ_3793(...) \, +#define Z_IS_3793U_EQ_3793(...) \, +#define Z_IS_3793_EQ_3793U(...) \, +#define Z_IS_3793U_EQ_3793U(...) \, +#define Z_IS_3794_EQ_3794(...) \, +#define Z_IS_3794U_EQ_3794(...) \, +#define Z_IS_3794_EQ_3794U(...) \, +#define Z_IS_3794U_EQ_3794U(...) \, +#define Z_IS_3795_EQ_3795(...) \, +#define Z_IS_3795U_EQ_3795(...) \, +#define Z_IS_3795_EQ_3795U(...) \, +#define Z_IS_3795U_EQ_3795U(...) \, +#define Z_IS_3796_EQ_3796(...) \, +#define Z_IS_3796U_EQ_3796(...) \, +#define Z_IS_3796_EQ_3796U(...) \, +#define Z_IS_3796U_EQ_3796U(...) \, +#define Z_IS_3797_EQ_3797(...) \, +#define Z_IS_3797U_EQ_3797(...) \, +#define Z_IS_3797_EQ_3797U(...) \, +#define Z_IS_3797U_EQ_3797U(...) \, +#define Z_IS_3798_EQ_3798(...) \, +#define Z_IS_3798U_EQ_3798(...) \, +#define Z_IS_3798_EQ_3798U(...) \, +#define Z_IS_3798U_EQ_3798U(...) \, +#define Z_IS_3799_EQ_3799(...) \, +#define Z_IS_3799U_EQ_3799(...) \, +#define Z_IS_3799_EQ_3799U(...) \, +#define Z_IS_3799U_EQ_3799U(...) \, +#define Z_IS_3800_EQ_3800(...) \, +#define Z_IS_3800U_EQ_3800(...) \, +#define Z_IS_3800_EQ_3800U(...) \, +#define Z_IS_3800U_EQ_3800U(...) \, +#define Z_IS_3801_EQ_3801(...) \, +#define Z_IS_3801U_EQ_3801(...) \, +#define Z_IS_3801_EQ_3801U(...) \, +#define Z_IS_3801U_EQ_3801U(...) \, +#define Z_IS_3802_EQ_3802(...) \, +#define Z_IS_3802U_EQ_3802(...) \, +#define Z_IS_3802_EQ_3802U(...) \, +#define Z_IS_3802U_EQ_3802U(...) \, +#define Z_IS_3803_EQ_3803(...) \, +#define Z_IS_3803U_EQ_3803(...) \, +#define Z_IS_3803_EQ_3803U(...) \, +#define Z_IS_3803U_EQ_3803U(...) \, +#define Z_IS_3804_EQ_3804(...) \, +#define Z_IS_3804U_EQ_3804(...) \, +#define Z_IS_3804_EQ_3804U(...) \, +#define Z_IS_3804U_EQ_3804U(...) \, +#define Z_IS_3805_EQ_3805(...) \, +#define Z_IS_3805U_EQ_3805(...) \, +#define Z_IS_3805_EQ_3805U(...) \, +#define Z_IS_3805U_EQ_3805U(...) \, +#define Z_IS_3806_EQ_3806(...) \, +#define Z_IS_3806U_EQ_3806(...) \, +#define Z_IS_3806_EQ_3806U(...) \, +#define Z_IS_3806U_EQ_3806U(...) \, +#define Z_IS_3807_EQ_3807(...) \, +#define Z_IS_3807U_EQ_3807(...) \, +#define Z_IS_3807_EQ_3807U(...) \, +#define Z_IS_3807U_EQ_3807U(...) \, +#define Z_IS_3808_EQ_3808(...) \, +#define Z_IS_3808U_EQ_3808(...) \, +#define Z_IS_3808_EQ_3808U(...) \, +#define Z_IS_3808U_EQ_3808U(...) \, +#define Z_IS_3809_EQ_3809(...) \, +#define Z_IS_3809U_EQ_3809(...) \, +#define Z_IS_3809_EQ_3809U(...) \, +#define Z_IS_3809U_EQ_3809U(...) \, +#define Z_IS_3810_EQ_3810(...) \, +#define Z_IS_3810U_EQ_3810(...) \, +#define Z_IS_3810_EQ_3810U(...) \, +#define Z_IS_3810U_EQ_3810U(...) \, +#define Z_IS_3811_EQ_3811(...) \, +#define Z_IS_3811U_EQ_3811(...) \, +#define Z_IS_3811_EQ_3811U(...) \, +#define Z_IS_3811U_EQ_3811U(...) \, +#define Z_IS_3812_EQ_3812(...) \, +#define Z_IS_3812U_EQ_3812(...) \, +#define Z_IS_3812_EQ_3812U(...) \, +#define Z_IS_3812U_EQ_3812U(...) \, +#define Z_IS_3813_EQ_3813(...) \, +#define Z_IS_3813U_EQ_3813(...) \, +#define Z_IS_3813_EQ_3813U(...) \, +#define Z_IS_3813U_EQ_3813U(...) \, +#define Z_IS_3814_EQ_3814(...) \, +#define Z_IS_3814U_EQ_3814(...) \, +#define Z_IS_3814_EQ_3814U(...) \, +#define Z_IS_3814U_EQ_3814U(...) \, +#define Z_IS_3815_EQ_3815(...) \, +#define Z_IS_3815U_EQ_3815(...) \, +#define Z_IS_3815_EQ_3815U(...) \, +#define Z_IS_3815U_EQ_3815U(...) \, +#define Z_IS_3816_EQ_3816(...) \, +#define Z_IS_3816U_EQ_3816(...) \, +#define Z_IS_3816_EQ_3816U(...) \, +#define Z_IS_3816U_EQ_3816U(...) \, +#define Z_IS_3817_EQ_3817(...) \, +#define Z_IS_3817U_EQ_3817(...) \, +#define Z_IS_3817_EQ_3817U(...) \, +#define Z_IS_3817U_EQ_3817U(...) \, +#define Z_IS_3818_EQ_3818(...) \, +#define Z_IS_3818U_EQ_3818(...) \, +#define Z_IS_3818_EQ_3818U(...) \, +#define Z_IS_3818U_EQ_3818U(...) \, +#define Z_IS_3819_EQ_3819(...) \, +#define Z_IS_3819U_EQ_3819(...) \, +#define Z_IS_3819_EQ_3819U(...) \, +#define Z_IS_3819U_EQ_3819U(...) \, +#define Z_IS_3820_EQ_3820(...) \, +#define Z_IS_3820U_EQ_3820(...) \, +#define Z_IS_3820_EQ_3820U(...) \, +#define Z_IS_3820U_EQ_3820U(...) \, +#define Z_IS_3821_EQ_3821(...) \, +#define Z_IS_3821U_EQ_3821(...) \, +#define Z_IS_3821_EQ_3821U(...) \, +#define Z_IS_3821U_EQ_3821U(...) \, +#define Z_IS_3822_EQ_3822(...) \, +#define Z_IS_3822U_EQ_3822(...) \, +#define Z_IS_3822_EQ_3822U(...) \, +#define Z_IS_3822U_EQ_3822U(...) \, +#define Z_IS_3823_EQ_3823(...) \, +#define Z_IS_3823U_EQ_3823(...) \, +#define Z_IS_3823_EQ_3823U(...) \, +#define Z_IS_3823U_EQ_3823U(...) \, +#define Z_IS_3824_EQ_3824(...) \, +#define Z_IS_3824U_EQ_3824(...) \, +#define Z_IS_3824_EQ_3824U(...) \, +#define Z_IS_3824U_EQ_3824U(...) \, +#define Z_IS_3825_EQ_3825(...) \, +#define Z_IS_3825U_EQ_3825(...) \, +#define Z_IS_3825_EQ_3825U(...) \, +#define Z_IS_3825U_EQ_3825U(...) \, +#define Z_IS_3826_EQ_3826(...) \, +#define Z_IS_3826U_EQ_3826(...) \, +#define Z_IS_3826_EQ_3826U(...) \, +#define Z_IS_3826U_EQ_3826U(...) \, +#define Z_IS_3827_EQ_3827(...) \, +#define Z_IS_3827U_EQ_3827(...) \, +#define Z_IS_3827_EQ_3827U(...) \, +#define Z_IS_3827U_EQ_3827U(...) \, +#define Z_IS_3828_EQ_3828(...) \, +#define Z_IS_3828U_EQ_3828(...) \, +#define Z_IS_3828_EQ_3828U(...) \, +#define Z_IS_3828U_EQ_3828U(...) \, +#define Z_IS_3829_EQ_3829(...) \, +#define Z_IS_3829U_EQ_3829(...) \, +#define Z_IS_3829_EQ_3829U(...) \, +#define Z_IS_3829U_EQ_3829U(...) \, +#define Z_IS_3830_EQ_3830(...) \, +#define Z_IS_3830U_EQ_3830(...) \, +#define Z_IS_3830_EQ_3830U(...) \, +#define Z_IS_3830U_EQ_3830U(...) \, +#define Z_IS_3831_EQ_3831(...) \, +#define Z_IS_3831U_EQ_3831(...) \, +#define Z_IS_3831_EQ_3831U(...) \, +#define Z_IS_3831U_EQ_3831U(...) \, +#define Z_IS_3832_EQ_3832(...) \, +#define Z_IS_3832U_EQ_3832(...) \, +#define Z_IS_3832_EQ_3832U(...) \, +#define Z_IS_3832U_EQ_3832U(...) \, +#define Z_IS_3833_EQ_3833(...) \, +#define Z_IS_3833U_EQ_3833(...) \, +#define Z_IS_3833_EQ_3833U(...) \, +#define Z_IS_3833U_EQ_3833U(...) \, +#define Z_IS_3834_EQ_3834(...) \, +#define Z_IS_3834U_EQ_3834(...) \, +#define Z_IS_3834_EQ_3834U(...) \, +#define Z_IS_3834U_EQ_3834U(...) \, +#define Z_IS_3835_EQ_3835(...) \, +#define Z_IS_3835U_EQ_3835(...) \, +#define Z_IS_3835_EQ_3835U(...) \, +#define Z_IS_3835U_EQ_3835U(...) \, +#define Z_IS_3836_EQ_3836(...) \, +#define Z_IS_3836U_EQ_3836(...) \, +#define Z_IS_3836_EQ_3836U(...) \, +#define Z_IS_3836U_EQ_3836U(...) \, +#define Z_IS_3837_EQ_3837(...) \, +#define Z_IS_3837U_EQ_3837(...) \, +#define Z_IS_3837_EQ_3837U(...) \, +#define Z_IS_3837U_EQ_3837U(...) \, +#define Z_IS_3838_EQ_3838(...) \, +#define Z_IS_3838U_EQ_3838(...) \, +#define Z_IS_3838_EQ_3838U(...) \, +#define Z_IS_3838U_EQ_3838U(...) \, +#define Z_IS_3839_EQ_3839(...) \, +#define Z_IS_3839U_EQ_3839(...) \, +#define Z_IS_3839_EQ_3839U(...) \, +#define Z_IS_3839U_EQ_3839U(...) \, +#define Z_IS_3840_EQ_3840(...) \, +#define Z_IS_3840U_EQ_3840(...) \, +#define Z_IS_3840_EQ_3840U(...) \, +#define Z_IS_3840U_EQ_3840U(...) \, +#define Z_IS_3841_EQ_3841(...) \, +#define Z_IS_3841U_EQ_3841(...) \, +#define Z_IS_3841_EQ_3841U(...) \, +#define Z_IS_3841U_EQ_3841U(...) \, +#define Z_IS_3842_EQ_3842(...) \, +#define Z_IS_3842U_EQ_3842(...) \, +#define Z_IS_3842_EQ_3842U(...) \, +#define Z_IS_3842U_EQ_3842U(...) \, +#define Z_IS_3843_EQ_3843(...) \, +#define Z_IS_3843U_EQ_3843(...) \, +#define Z_IS_3843_EQ_3843U(...) \, +#define Z_IS_3843U_EQ_3843U(...) \, +#define Z_IS_3844_EQ_3844(...) \, +#define Z_IS_3844U_EQ_3844(...) \, +#define Z_IS_3844_EQ_3844U(...) \, +#define Z_IS_3844U_EQ_3844U(...) \, +#define Z_IS_3845_EQ_3845(...) \, +#define Z_IS_3845U_EQ_3845(...) \, +#define Z_IS_3845_EQ_3845U(...) \, +#define Z_IS_3845U_EQ_3845U(...) \, +#define Z_IS_3846_EQ_3846(...) \, +#define Z_IS_3846U_EQ_3846(...) \, +#define Z_IS_3846_EQ_3846U(...) \, +#define Z_IS_3846U_EQ_3846U(...) \, +#define Z_IS_3847_EQ_3847(...) \, +#define Z_IS_3847U_EQ_3847(...) \, +#define Z_IS_3847_EQ_3847U(...) \, +#define Z_IS_3847U_EQ_3847U(...) \, +#define Z_IS_3848_EQ_3848(...) \, +#define Z_IS_3848U_EQ_3848(...) \, +#define Z_IS_3848_EQ_3848U(...) \, +#define Z_IS_3848U_EQ_3848U(...) \, +#define Z_IS_3849_EQ_3849(...) \, +#define Z_IS_3849U_EQ_3849(...) \, +#define Z_IS_3849_EQ_3849U(...) \, +#define Z_IS_3849U_EQ_3849U(...) \, +#define Z_IS_3850_EQ_3850(...) \, +#define Z_IS_3850U_EQ_3850(...) \, +#define Z_IS_3850_EQ_3850U(...) \, +#define Z_IS_3850U_EQ_3850U(...) \, +#define Z_IS_3851_EQ_3851(...) \, +#define Z_IS_3851U_EQ_3851(...) \, +#define Z_IS_3851_EQ_3851U(...) \, +#define Z_IS_3851U_EQ_3851U(...) \, +#define Z_IS_3852_EQ_3852(...) \, +#define Z_IS_3852U_EQ_3852(...) \, +#define Z_IS_3852_EQ_3852U(...) \, +#define Z_IS_3852U_EQ_3852U(...) \, +#define Z_IS_3853_EQ_3853(...) \, +#define Z_IS_3853U_EQ_3853(...) \, +#define Z_IS_3853_EQ_3853U(...) \, +#define Z_IS_3853U_EQ_3853U(...) \, +#define Z_IS_3854_EQ_3854(...) \, +#define Z_IS_3854U_EQ_3854(...) \, +#define Z_IS_3854_EQ_3854U(...) \, +#define Z_IS_3854U_EQ_3854U(...) \, +#define Z_IS_3855_EQ_3855(...) \, +#define Z_IS_3855U_EQ_3855(...) \, +#define Z_IS_3855_EQ_3855U(...) \, +#define Z_IS_3855U_EQ_3855U(...) \, +#define Z_IS_3856_EQ_3856(...) \, +#define Z_IS_3856U_EQ_3856(...) \, +#define Z_IS_3856_EQ_3856U(...) \, +#define Z_IS_3856U_EQ_3856U(...) \, +#define Z_IS_3857_EQ_3857(...) \, +#define Z_IS_3857U_EQ_3857(...) \, +#define Z_IS_3857_EQ_3857U(...) \, +#define Z_IS_3857U_EQ_3857U(...) \, +#define Z_IS_3858_EQ_3858(...) \, +#define Z_IS_3858U_EQ_3858(...) \, +#define Z_IS_3858_EQ_3858U(...) \, +#define Z_IS_3858U_EQ_3858U(...) \, +#define Z_IS_3859_EQ_3859(...) \, +#define Z_IS_3859U_EQ_3859(...) \, +#define Z_IS_3859_EQ_3859U(...) \, +#define Z_IS_3859U_EQ_3859U(...) \, +#define Z_IS_3860_EQ_3860(...) \, +#define Z_IS_3860U_EQ_3860(...) \, +#define Z_IS_3860_EQ_3860U(...) \, +#define Z_IS_3860U_EQ_3860U(...) \, +#define Z_IS_3861_EQ_3861(...) \, +#define Z_IS_3861U_EQ_3861(...) \, +#define Z_IS_3861_EQ_3861U(...) \, +#define Z_IS_3861U_EQ_3861U(...) \, +#define Z_IS_3862_EQ_3862(...) \, +#define Z_IS_3862U_EQ_3862(...) \, +#define Z_IS_3862_EQ_3862U(...) \, +#define Z_IS_3862U_EQ_3862U(...) \, +#define Z_IS_3863_EQ_3863(...) \, +#define Z_IS_3863U_EQ_3863(...) \, +#define Z_IS_3863_EQ_3863U(...) \, +#define Z_IS_3863U_EQ_3863U(...) \, +#define Z_IS_3864_EQ_3864(...) \, +#define Z_IS_3864U_EQ_3864(...) \, +#define Z_IS_3864_EQ_3864U(...) \, +#define Z_IS_3864U_EQ_3864U(...) \, +#define Z_IS_3865_EQ_3865(...) \, +#define Z_IS_3865U_EQ_3865(...) \, +#define Z_IS_3865_EQ_3865U(...) \, +#define Z_IS_3865U_EQ_3865U(...) \, +#define Z_IS_3866_EQ_3866(...) \, +#define Z_IS_3866U_EQ_3866(...) \, +#define Z_IS_3866_EQ_3866U(...) \, +#define Z_IS_3866U_EQ_3866U(...) \, +#define Z_IS_3867_EQ_3867(...) \, +#define Z_IS_3867U_EQ_3867(...) \, +#define Z_IS_3867_EQ_3867U(...) \, +#define Z_IS_3867U_EQ_3867U(...) \, +#define Z_IS_3868_EQ_3868(...) \, +#define Z_IS_3868U_EQ_3868(...) \, +#define Z_IS_3868_EQ_3868U(...) \, +#define Z_IS_3868U_EQ_3868U(...) \, +#define Z_IS_3869_EQ_3869(...) \, +#define Z_IS_3869U_EQ_3869(...) \, +#define Z_IS_3869_EQ_3869U(...) \, +#define Z_IS_3869U_EQ_3869U(...) \, +#define Z_IS_3870_EQ_3870(...) \, +#define Z_IS_3870U_EQ_3870(...) \, +#define Z_IS_3870_EQ_3870U(...) \, +#define Z_IS_3870U_EQ_3870U(...) \, +#define Z_IS_3871_EQ_3871(...) \, +#define Z_IS_3871U_EQ_3871(...) \, +#define Z_IS_3871_EQ_3871U(...) \, +#define Z_IS_3871U_EQ_3871U(...) \, +#define Z_IS_3872_EQ_3872(...) \, +#define Z_IS_3872U_EQ_3872(...) \, +#define Z_IS_3872_EQ_3872U(...) \, +#define Z_IS_3872U_EQ_3872U(...) \, +#define Z_IS_3873_EQ_3873(...) \, +#define Z_IS_3873U_EQ_3873(...) \, +#define Z_IS_3873_EQ_3873U(...) \, +#define Z_IS_3873U_EQ_3873U(...) \, +#define Z_IS_3874_EQ_3874(...) \, +#define Z_IS_3874U_EQ_3874(...) \, +#define Z_IS_3874_EQ_3874U(...) \, +#define Z_IS_3874U_EQ_3874U(...) \, +#define Z_IS_3875_EQ_3875(...) \, +#define Z_IS_3875U_EQ_3875(...) \, +#define Z_IS_3875_EQ_3875U(...) \, +#define Z_IS_3875U_EQ_3875U(...) \, +#define Z_IS_3876_EQ_3876(...) \, +#define Z_IS_3876U_EQ_3876(...) \, +#define Z_IS_3876_EQ_3876U(...) \, +#define Z_IS_3876U_EQ_3876U(...) \, +#define Z_IS_3877_EQ_3877(...) \, +#define Z_IS_3877U_EQ_3877(...) \, +#define Z_IS_3877_EQ_3877U(...) \, +#define Z_IS_3877U_EQ_3877U(...) \, +#define Z_IS_3878_EQ_3878(...) \, +#define Z_IS_3878U_EQ_3878(...) \, +#define Z_IS_3878_EQ_3878U(...) \, +#define Z_IS_3878U_EQ_3878U(...) \, +#define Z_IS_3879_EQ_3879(...) \, +#define Z_IS_3879U_EQ_3879(...) \, +#define Z_IS_3879_EQ_3879U(...) \, +#define Z_IS_3879U_EQ_3879U(...) \, +#define Z_IS_3880_EQ_3880(...) \, +#define Z_IS_3880U_EQ_3880(...) \, +#define Z_IS_3880_EQ_3880U(...) \, +#define Z_IS_3880U_EQ_3880U(...) \, +#define Z_IS_3881_EQ_3881(...) \, +#define Z_IS_3881U_EQ_3881(...) \, +#define Z_IS_3881_EQ_3881U(...) \, +#define Z_IS_3881U_EQ_3881U(...) \, +#define Z_IS_3882_EQ_3882(...) \, +#define Z_IS_3882U_EQ_3882(...) \, +#define Z_IS_3882_EQ_3882U(...) \, +#define Z_IS_3882U_EQ_3882U(...) \, +#define Z_IS_3883_EQ_3883(...) \, +#define Z_IS_3883U_EQ_3883(...) \, +#define Z_IS_3883_EQ_3883U(...) \, +#define Z_IS_3883U_EQ_3883U(...) \, +#define Z_IS_3884_EQ_3884(...) \, +#define Z_IS_3884U_EQ_3884(...) \, +#define Z_IS_3884_EQ_3884U(...) \, +#define Z_IS_3884U_EQ_3884U(...) \, +#define Z_IS_3885_EQ_3885(...) \, +#define Z_IS_3885U_EQ_3885(...) \, +#define Z_IS_3885_EQ_3885U(...) \, +#define Z_IS_3885U_EQ_3885U(...) \, +#define Z_IS_3886_EQ_3886(...) \, +#define Z_IS_3886U_EQ_3886(...) \, +#define Z_IS_3886_EQ_3886U(...) \, +#define Z_IS_3886U_EQ_3886U(...) \, +#define Z_IS_3887_EQ_3887(...) \, +#define Z_IS_3887U_EQ_3887(...) \, +#define Z_IS_3887_EQ_3887U(...) \, +#define Z_IS_3887U_EQ_3887U(...) \, +#define Z_IS_3888_EQ_3888(...) \, +#define Z_IS_3888U_EQ_3888(...) \, +#define Z_IS_3888_EQ_3888U(...) \, +#define Z_IS_3888U_EQ_3888U(...) \, +#define Z_IS_3889_EQ_3889(...) \, +#define Z_IS_3889U_EQ_3889(...) \, +#define Z_IS_3889_EQ_3889U(...) \, +#define Z_IS_3889U_EQ_3889U(...) \, +#define Z_IS_3890_EQ_3890(...) \, +#define Z_IS_3890U_EQ_3890(...) \, +#define Z_IS_3890_EQ_3890U(...) \, +#define Z_IS_3890U_EQ_3890U(...) \, +#define Z_IS_3891_EQ_3891(...) \, +#define Z_IS_3891U_EQ_3891(...) \, +#define Z_IS_3891_EQ_3891U(...) \, +#define Z_IS_3891U_EQ_3891U(...) \, +#define Z_IS_3892_EQ_3892(...) \, +#define Z_IS_3892U_EQ_3892(...) \, +#define Z_IS_3892_EQ_3892U(...) \, +#define Z_IS_3892U_EQ_3892U(...) \, +#define Z_IS_3893_EQ_3893(...) \, +#define Z_IS_3893U_EQ_3893(...) \, +#define Z_IS_3893_EQ_3893U(...) \, +#define Z_IS_3893U_EQ_3893U(...) \, +#define Z_IS_3894_EQ_3894(...) \, +#define Z_IS_3894U_EQ_3894(...) \, +#define Z_IS_3894_EQ_3894U(...) \, +#define Z_IS_3894U_EQ_3894U(...) \, +#define Z_IS_3895_EQ_3895(...) \, +#define Z_IS_3895U_EQ_3895(...) \, +#define Z_IS_3895_EQ_3895U(...) \, +#define Z_IS_3895U_EQ_3895U(...) \, +#define Z_IS_3896_EQ_3896(...) \, +#define Z_IS_3896U_EQ_3896(...) \, +#define Z_IS_3896_EQ_3896U(...) \, +#define Z_IS_3896U_EQ_3896U(...) \, +#define Z_IS_3897_EQ_3897(...) \, +#define Z_IS_3897U_EQ_3897(...) \, +#define Z_IS_3897_EQ_3897U(...) \, +#define Z_IS_3897U_EQ_3897U(...) \, +#define Z_IS_3898_EQ_3898(...) \, +#define Z_IS_3898U_EQ_3898(...) \, +#define Z_IS_3898_EQ_3898U(...) \, +#define Z_IS_3898U_EQ_3898U(...) \, +#define Z_IS_3899_EQ_3899(...) \, +#define Z_IS_3899U_EQ_3899(...) \, +#define Z_IS_3899_EQ_3899U(...) \, +#define Z_IS_3899U_EQ_3899U(...) \, +#define Z_IS_3900_EQ_3900(...) \, +#define Z_IS_3900U_EQ_3900(...) \, +#define Z_IS_3900_EQ_3900U(...) \, +#define Z_IS_3900U_EQ_3900U(...) \, +#define Z_IS_3901_EQ_3901(...) \, +#define Z_IS_3901U_EQ_3901(...) \, +#define Z_IS_3901_EQ_3901U(...) \, +#define Z_IS_3901U_EQ_3901U(...) \, +#define Z_IS_3902_EQ_3902(...) \, +#define Z_IS_3902U_EQ_3902(...) \, +#define Z_IS_3902_EQ_3902U(...) \, +#define Z_IS_3902U_EQ_3902U(...) \, +#define Z_IS_3903_EQ_3903(...) \, +#define Z_IS_3903U_EQ_3903(...) \, +#define Z_IS_3903_EQ_3903U(...) \, +#define Z_IS_3903U_EQ_3903U(...) \, +#define Z_IS_3904_EQ_3904(...) \, +#define Z_IS_3904U_EQ_3904(...) \, +#define Z_IS_3904_EQ_3904U(...) \, +#define Z_IS_3904U_EQ_3904U(...) \, +#define Z_IS_3905_EQ_3905(...) \, +#define Z_IS_3905U_EQ_3905(...) \, +#define Z_IS_3905_EQ_3905U(...) \, +#define Z_IS_3905U_EQ_3905U(...) \, +#define Z_IS_3906_EQ_3906(...) \, +#define Z_IS_3906U_EQ_3906(...) \, +#define Z_IS_3906_EQ_3906U(...) \, +#define Z_IS_3906U_EQ_3906U(...) \, +#define Z_IS_3907_EQ_3907(...) \, +#define Z_IS_3907U_EQ_3907(...) \, +#define Z_IS_3907_EQ_3907U(...) \, +#define Z_IS_3907U_EQ_3907U(...) \, +#define Z_IS_3908_EQ_3908(...) \, +#define Z_IS_3908U_EQ_3908(...) \, +#define Z_IS_3908_EQ_3908U(...) \, +#define Z_IS_3908U_EQ_3908U(...) \, +#define Z_IS_3909_EQ_3909(...) \, +#define Z_IS_3909U_EQ_3909(...) \, +#define Z_IS_3909_EQ_3909U(...) \, +#define Z_IS_3909U_EQ_3909U(...) \, +#define Z_IS_3910_EQ_3910(...) \, +#define Z_IS_3910U_EQ_3910(...) \, +#define Z_IS_3910_EQ_3910U(...) \, +#define Z_IS_3910U_EQ_3910U(...) \, +#define Z_IS_3911_EQ_3911(...) \, +#define Z_IS_3911U_EQ_3911(...) \, +#define Z_IS_3911_EQ_3911U(...) \, +#define Z_IS_3911U_EQ_3911U(...) \, +#define Z_IS_3912_EQ_3912(...) \, +#define Z_IS_3912U_EQ_3912(...) \, +#define Z_IS_3912_EQ_3912U(...) \, +#define Z_IS_3912U_EQ_3912U(...) \, +#define Z_IS_3913_EQ_3913(...) \, +#define Z_IS_3913U_EQ_3913(...) \, +#define Z_IS_3913_EQ_3913U(...) \, +#define Z_IS_3913U_EQ_3913U(...) \, +#define Z_IS_3914_EQ_3914(...) \, +#define Z_IS_3914U_EQ_3914(...) \, +#define Z_IS_3914_EQ_3914U(...) \, +#define Z_IS_3914U_EQ_3914U(...) \, +#define Z_IS_3915_EQ_3915(...) \, +#define Z_IS_3915U_EQ_3915(...) \, +#define Z_IS_3915_EQ_3915U(...) \, +#define Z_IS_3915U_EQ_3915U(...) \, +#define Z_IS_3916_EQ_3916(...) \, +#define Z_IS_3916U_EQ_3916(...) \, +#define Z_IS_3916_EQ_3916U(...) \, +#define Z_IS_3916U_EQ_3916U(...) \, +#define Z_IS_3917_EQ_3917(...) \, +#define Z_IS_3917U_EQ_3917(...) \, +#define Z_IS_3917_EQ_3917U(...) \, +#define Z_IS_3917U_EQ_3917U(...) \, +#define Z_IS_3918_EQ_3918(...) \, +#define Z_IS_3918U_EQ_3918(...) \, +#define Z_IS_3918_EQ_3918U(...) \, +#define Z_IS_3918U_EQ_3918U(...) \, +#define Z_IS_3919_EQ_3919(...) \, +#define Z_IS_3919U_EQ_3919(...) \, +#define Z_IS_3919_EQ_3919U(...) \, +#define Z_IS_3919U_EQ_3919U(...) \, +#define Z_IS_3920_EQ_3920(...) \, +#define Z_IS_3920U_EQ_3920(...) \, +#define Z_IS_3920_EQ_3920U(...) \, +#define Z_IS_3920U_EQ_3920U(...) \, +#define Z_IS_3921_EQ_3921(...) \, +#define Z_IS_3921U_EQ_3921(...) \, +#define Z_IS_3921_EQ_3921U(...) \, +#define Z_IS_3921U_EQ_3921U(...) \, +#define Z_IS_3922_EQ_3922(...) \, +#define Z_IS_3922U_EQ_3922(...) \, +#define Z_IS_3922_EQ_3922U(...) \, +#define Z_IS_3922U_EQ_3922U(...) \, +#define Z_IS_3923_EQ_3923(...) \, +#define Z_IS_3923U_EQ_3923(...) \, +#define Z_IS_3923_EQ_3923U(...) \, +#define Z_IS_3923U_EQ_3923U(...) \, +#define Z_IS_3924_EQ_3924(...) \, +#define Z_IS_3924U_EQ_3924(...) \, +#define Z_IS_3924_EQ_3924U(...) \, +#define Z_IS_3924U_EQ_3924U(...) \, +#define Z_IS_3925_EQ_3925(...) \, +#define Z_IS_3925U_EQ_3925(...) \, +#define Z_IS_3925_EQ_3925U(...) \, +#define Z_IS_3925U_EQ_3925U(...) \, +#define Z_IS_3926_EQ_3926(...) \, +#define Z_IS_3926U_EQ_3926(...) \, +#define Z_IS_3926_EQ_3926U(...) \, +#define Z_IS_3926U_EQ_3926U(...) \, +#define Z_IS_3927_EQ_3927(...) \, +#define Z_IS_3927U_EQ_3927(...) \, +#define Z_IS_3927_EQ_3927U(...) \, +#define Z_IS_3927U_EQ_3927U(...) \, +#define Z_IS_3928_EQ_3928(...) \, +#define Z_IS_3928U_EQ_3928(...) \, +#define Z_IS_3928_EQ_3928U(...) \, +#define Z_IS_3928U_EQ_3928U(...) \, +#define Z_IS_3929_EQ_3929(...) \, +#define Z_IS_3929U_EQ_3929(...) \, +#define Z_IS_3929_EQ_3929U(...) \, +#define Z_IS_3929U_EQ_3929U(...) \, +#define Z_IS_3930_EQ_3930(...) \, +#define Z_IS_3930U_EQ_3930(...) \, +#define Z_IS_3930_EQ_3930U(...) \, +#define Z_IS_3930U_EQ_3930U(...) \, +#define Z_IS_3931_EQ_3931(...) \, +#define Z_IS_3931U_EQ_3931(...) \, +#define Z_IS_3931_EQ_3931U(...) \, +#define Z_IS_3931U_EQ_3931U(...) \, +#define Z_IS_3932_EQ_3932(...) \, +#define Z_IS_3932U_EQ_3932(...) \, +#define Z_IS_3932_EQ_3932U(...) \, +#define Z_IS_3932U_EQ_3932U(...) \, +#define Z_IS_3933_EQ_3933(...) \, +#define Z_IS_3933U_EQ_3933(...) \, +#define Z_IS_3933_EQ_3933U(...) \, +#define Z_IS_3933U_EQ_3933U(...) \, +#define Z_IS_3934_EQ_3934(...) \, +#define Z_IS_3934U_EQ_3934(...) \, +#define Z_IS_3934_EQ_3934U(...) \, +#define Z_IS_3934U_EQ_3934U(...) \, +#define Z_IS_3935_EQ_3935(...) \, +#define Z_IS_3935U_EQ_3935(...) \, +#define Z_IS_3935_EQ_3935U(...) \, +#define Z_IS_3935U_EQ_3935U(...) \, +#define Z_IS_3936_EQ_3936(...) \, +#define Z_IS_3936U_EQ_3936(...) \, +#define Z_IS_3936_EQ_3936U(...) \, +#define Z_IS_3936U_EQ_3936U(...) \, +#define Z_IS_3937_EQ_3937(...) \, +#define Z_IS_3937U_EQ_3937(...) \, +#define Z_IS_3937_EQ_3937U(...) \, +#define Z_IS_3937U_EQ_3937U(...) \, +#define Z_IS_3938_EQ_3938(...) \, +#define Z_IS_3938U_EQ_3938(...) \, +#define Z_IS_3938_EQ_3938U(...) \, +#define Z_IS_3938U_EQ_3938U(...) \, +#define Z_IS_3939_EQ_3939(...) \, +#define Z_IS_3939U_EQ_3939(...) \, +#define Z_IS_3939_EQ_3939U(...) \, +#define Z_IS_3939U_EQ_3939U(...) \, +#define Z_IS_3940_EQ_3940(...) \, +#define Z_IS_3940U_EQ_3940(...) \, +#define Z_IS_3940_EQ_3940U(...) \, +#define Z_IS_3940U_EQ_3940U(...) \, +#define Z_IS_3941_EQ_3941(...) \, +#define Z_IS_3941U_EQ_3941(...) \, +#define Z_IS_3941_EQ_3941U(...) \, +#define Z_IS_3941U_EQ_3941U(...) \, +#define Z_IS_3942_EQ_3942(...) \, +#define Z_IS_3942U_EQ_3942(...) \, +#define Z_IS_3942_EQ_3942U(...) \, +#define Z_IS_3942U_EQ_3942U(...) \, +#define Z_IS_3943_EQ_3943(...) \, +#define Z_IS_3943U_EQ_3943(...) \, +#define Z_IS_3943_EQ_3943U(...) \, +#define Z_IS_3943U_EQ_3943U(...) \, +#define Z_IS_3944_EQ_3944(...) \, +#define Z_IS_3944U_EQ_3944(...) \, +#define Z_IS_3944_EQ_3944U(...) \, +#define Z_IS_3944U_EQ_3944U(...) \, +#define Z_IS_3945_EQ_3945(...) \, +#define Z_IS_3945U_EQ_3945(...) \, +#define Z_IS_3945_EQ_3945U(...) \, +#define Z_IS_3945U_EQ_3945U(...) \, +#define Z_IS_3946_EQ_3946(...) \, +#define Z_IS_3946U_EQ_3946(...) \, +#define Z_IS_3946_EQ_3946U(...) \, +#define Z_IS_3946U_EQ_3946U(...) \, +#define Z_IS_3947_EQ_3947(...) \, +#define Z_IS_3947U_EQ_3947(...) \, +#define Z_IS_3947_EQ_3947U(...) \, +#define Z_IS_3947U_EQ_3947U(...) \, +#define Z_IS_3948_EQ_3948(...) \, +#define Z_IS_3948U_EQ_3948(...) \, +#define Z_IS_3948_EQ_3948U(...) \, +#define Z_IS_3948U_EQ_3948U(...) \, +#define Z_IS_3949_EQ_3949(...) \, +#define Z_IS_3949U_EQ_3949(...) \, +#define Z_IS_3949_EQ_3949U(...) \, +#define Z_IS_3949U_EQ_3949U(...) \, +#define Z_IS_3950_EQ_3950(...) \, +#define Z_IS_3950U_EQ_3950(...) \, +#define Z_IS_3950_EQ_3950U(...) \, +#define Z_IS_3950U_EQ_3950U(...) \, +#define Z_IS_3951_EQ_3951(...) \, +#define Z_IS_3951U_EQ_3951(...) \, +#define Z_IS_3951_EQ_3951U(...) \, +#define Z_IS_3951U_EQ_3951U(...) \, +#define Z_IS_3952_EQ_3952(...) \, +#define Z_IS_3952U_EQ_3952(...) \, +#define Z_IS_3952_EQ_3952U(...) \, +#define Z_IS_3952U_EQ_3952U(...) \, +#define Z_IS_3953_EQ_3953(...) \, +#define Z_IS_3953U_EQ_3953(...) \, +#define Z_IS_3953_EQ_3953U(...) \, +#define Z_IS_3953U_EQ_3953U(...) \, +#define Z_IS_3954_EQ_3954(...) \, +#define Z_IS_3954U_EQ_3954(...) \, +#define Z_IS_3954_EQ_3954U(...) \, +#define Z_IS_3954U_EQ_3954U(...) \, +#define Z_IS_3955_EQ_3955(...) \, +#define Z_IS_3955U_EQ_3955(...) \, +#define Z_IS_3955_EQ_3955U(...) \, +#define Z_IS_3955U_EQ_3955U(...) \, +#define Z_IS_3956_EQ_3956(...) \, +#define Z_IS_3956U_EQ_3956(...) \, +#define Z_IS_3956_EQ_3956U(...) \, +#define Z_IS_3956U_EQ_3956U(...) \, +#define Z_IS_3957_EQ_3957(...) \, +#define Z_IS_3957U_EQ_3957(...) \, +#define Z_IS_3957_EQ_3957U(...) \, +#define Z_IS_3957U_EQ_3957U(...) \, +#define Z_IS_3958_EQ_3958(...) \, +#define Z_IS_3958U_EQ_3958(...) \, +#define Z_IS_3958_EQ_3958U(...) \, +#define Z_IS_3958U_EQ_3958U(...) \, +#define Z_IS_3959_EQ_3959(...) \, +#define Z_IS_3959U_EQ_3959(...) \, +#define Z_IS_3959_EQ_3959U(...) \, +#define Z_IS_3959U_EQ_3959U(...) \, +#define Z_IS_3960_EQ_3960(...) \, +#define Z_IS_3960U_EQ_3960(...) \, +#define Z_IS_3960_EQ_3960U(...) \, +#define Z_IS_3960U_EQ_3960U(...) \, +#define Z_IS_3961_EQ_3961(...) \, +#define Z_IS_3961U_EQ_3961(...) \, +#define Z_IS_3961_EQ_3961U(...) \, +#define Z_IS_3961U_EQ_3961U(...) \, +#define Z_IS_3962_EQ_3962(...) \, +#define Z_IS_3962U_EQ_3962(...) \, +#define Z_IS_3962_EQ_3962U(...) \, +#define Z_IS_3962U_EQ_3962U(...) \, +#define Z_IS_3963_EQ_3963(...) \, +#define Z_IS_3963U_EQ_3963(...) \, +#define Z_IS_3963_EQ_3963U(...) \, +#define Z_IS_3963U_EQ_3963U(...) \, +#define Z_IS_3964_EQ_3964(...) \, +#define Z_IS_3964U_EQ_3964(...) \, +#define Z_IS_3964_EQ_3964U(...) \, +#define Z_IS_3964U_EQ_3964U(...) \, +#define Z_IS_3965_EQ_3965(...) \, +#define Z_IS_3965U_EQ_3965(...) \, +#define Z_IS_3965_EQ_3965U(...) \, +#define Z_IS_3965U_EQ_3965U(...) \, +#define Z_IS_3966_EQ_3966(...) \, +#define Z_IS_3966U_EQ_3966(...) \, +#define Z_IS_3966_EQ_3966U(...) \, +#define Z_IS_3966U_EQ_3966U(...) \, +#define Z_IS_3967_EQ_3967(...) \, +#define Z_IS_3967U_EQ_3967(...) \, +#define Z_IS_3967_EQ_3967U(...) \, +#define Z_IS_3967U_EQ_3967U(...) \, +#define Z_IS_3968_EQ_3968(...) \, +#define Z_IS_3968U_EQ_3968(...) \, +#define Z_IS_3968_EQ_3968U(...) \, +#define Z_IS_3968U_EQ_3968U(...) \, +#define Z_IS_3969_EQ_3969(...) \, +#define Z_IS_3969U_EQ_3969(...) \, +#define Z_IS_3969_EQ_3969U(...) \, +#define Z_IS_3969U_EQ_3969U(...) \, +#define Z_IS_3970_EQ_3970(...) \, +#define Z_IS_3970U_EQ_3970(...) \, +#define Z_IS_3970_EQ_3970U(...) \, +#define Z_IS_3970U_EQ_3970U(...) \, +#define Z_IS_3971_EQ_3971(...) \, +#define Z_IS_3971U_EQ_3971(...) \, +#define Z_IS_3971_EQ_3971U(...) \, +#define Z_IS_3971U_EQ_3971U(...) \, +#define Z_IS_3972_EQ_3972(...) \, +#define Z_IS_3972U_EQ_3972(...) \, +#define Z_IS_3972_EQ_3972U(...) \, +#define Z_IS_3972U_EQ_3972U(...) \, +#define Z_IS_3973_EQ_3973(...) \, +#define Z_IS_3973U_EQ_3973(...) \, +#define Z_IS_3973_EQ_3973U(...) \, +#define Z_IS_3973U_EQ_3973U(...) \, +#define Z_IS_3974_EQ_3974(...) \, +#define Z_IS_3974U_EQ_3974(...) \, +#define Z_IS_3974_EQ_3974U(...) \, +#define Z_IS_3974U_EQ_3974U(...) \, +#define Z_IS_3975_EQ_3975(...) \, +#define Z_IS_3975U_EQ_3975(...) \, +#define Z_IS_3975_EQ_3975U(...) \, +#define Z_IS_3975U_EQ_3975U(...) \, +#define Z_IS_3976_EQ_3976(...) \, +#define Z_IS_3976U_EQ_3976(...) \, +#define Z_IS_3976_EQ_3976U(...) \, +#define Z_IS_3976U_EQ_3976U(...) \, +#define Z_IS_3977_EQ_3977(...) \, +#define Z_IS_3977U_EQ_3977(...) \, +#define Z_IS_3977_EQ_3977U(...) \, +#define Z_IS_3977U_EQ_3977U(...) \, +#define Z_IS_3978_EQ_3978(...) \, +#define Z_IS_3978U_EQ_3978(...) \, +#define Z_IS_3978_EQ_3978U(...) \, +#define Z_IS_3978U_EQ_3978U(...) \, +#define Z_IS_3979_EQ_3979(...) \, +#define Z_IS_3979U_EQ_3979(...) \, +#define Z_IS_3979_EQ_3979U(...) \, +#define Z_IS_3979U_EQ_3979U(...) \, +#define Z_IS_3980_EQ_3980(...) \, +#define Z_IS_3980U_EQ_3980(...) \, +#define Z_IS_3980_EQ_3980U(...) \, +#define Z_IS_3980U_EQ_3980U(...) \, +#define Z_IS_3981_EQ_3981(...) \, +#define Z_IS_3981U_EQ_3981(...) \, +#define Z_IS_3981_EQ_3981U(...) \, +#define Z_IS_3981U_EQ_3981U(...) \, +#define Z_IS_3982_EQ_3982(...) \, +#define Z_IS_3982U_EQ_3982(...) \, +#define Z_IS_3982_EQ_3982U(...) \, +#define Z_IS_3982U_EQ_3982U(...) \, +#define Z_IS_3983_EQ_3983(...) \, +#define Z_IS_3983U_EQ_3983(...) \, +#define Z_IS_3983_EQ_3983U(...) \, +#define Z_IS_3983U_EQ_3983U(...) \, +#define Z_IS_3984_EQ_3984(...) \, +#define Z_IS_3984U_EQ_3984(...) \, +#define Z_IS_3984_EQ_3984U(...) \, +#define Z_IS_3984U_EQ_3984U(...) \, +#define Z_IS_3985_EQ_3985(...) \, +#define Z_IS_3985U_EQ_3985(...) \, +#define Z_IS_3985_EQ_3985U(...) \, +#define Z_IS_3985U_EQ_3985U(...) \, +#define Z_IS_3986_EQ_3986(...) \, +#define Z_IS_3986U_EQ_3986(...) \, +#define Z_IS_3986_EQ_3986U(...) \, +#define Z_IS_3986U_EQ_3986U(...) \, +#define Z_IS_3987_EQ_3987(...) \, +#define Z_IS_3987U_EQ_3987(...) \, +#define Z_IS_3987_EQ_3987U(...) \, +#define Z_IS_3987U_EQ_3987U(...) \, +#define Z_IS_3988_EQ_3988(...) \, +#define Z_IS_3988U_EQ_3988(...) \, +#define Z_IS_3988_EQ_3988U(...) \, +#define Z_IS_3988U_EQ_3988U(...) \, +#define Z_IS_3989_EQ_3989(...) \, +#define Z_IS_3989U_EQ_3989(...) \, +#define Z_IS_3989_EQ_3989U(...) \, +#define Z_IS_3989U_EQ_3989U(...) \, +#define Z_IS_3990_EQ_3990(...) \, +#define Z_IS_3990U_EQ_3990(...) \, +#define Z_IS_3990_EQ_3990U(...) \, +#define Z_IS_3990U_EQ_3990U(...) \, +#define Z_IS_3991_EQ_3991(...) \, +#define Z_IS_3991U_EQ_3991(...) \, +#define Z_IS_3991_EQ_3991U(...) \, +#define Z_IS_3991U_EQ_3991U(...) \, +#define Z_IS_3992_EQ_3992(...) \, +#define Z_IS_3992U_EQ_3992(...) \, +#define Z_IS_3992_EQ_3992U(...) \, +#define Z_IS_3992U_EQ_3992U(...) \, +#define Z_IS_3993_EQ_3993(...) \, +#define Z_IS_3993U_EQ_3993(...) \, +#define Z_IS_3993_EQ_3993U(...) \, +#define Z_IS_3993U_EQ_3993U(...) \, +#define Z_IS_3994_EQ_3994(...) \, +#define Z_IS_3994U_EQ_3994(...) \, +#define Z_IS_3994_EQ_3994U(...) \, +#define Z_IS_3994U_EQ_3994U(...) \, +#define Z_IS_3995_EQ_3995(...) \, +#define Z_IS_3995U_EQ_3995(...) \, +#define Z_IS_3995_EQ_3995U(...) \, +#define Z_IS_3995U_EQ_3995U(...) \, +#define Z_IS_3996_EQ_3996(...) \, +#define Z_IS_3996U_EQ_3996(...) \, +#define Z_IS_3996_EQ_3996U(...) \, +#define Z_IS_3996U_EQ_3996U(...) \, +#define Z_IS_3997_EQ_3997(...) \, +#define Z_IS_3997U_EQ_3997(...) \, +#define Z_IS_3997_EQ_3997U(...) \, +#define Z_IS_3997U_EQ_3997U(...) \, +#define Z_IS_3998_EQ_3998(...) \, +#define Z_IS_3998U_EQ_3998(...) \, +#define Z_IS_3998_EQ_3998U(...) \, +#define Z_IS_3998U_EQ_3998U(...) \, +#define Z_IS_3999_EQ_3999(...) \, +#define Z_IS_3999U_EQ_3999(...) \, +#define Z_IS_3999_EQ_3999U(...) \, +#define Z_IS_3999U_EQ_3999U(...) \, +#define Z_IS_4000_EQ_4000(...) \, +#define Z_IS_4000U_EQ_4000(...) \, +#define Z_IS_4000_EQ_4000U(...) \, +#define Z_IS_4000U_EQ_4000U(...) \, +#define Z_IS_4001_EQ_4001(...) \, +#define Z_IS_4001U_EQ_4001(...) \, +#define Z_IS_4001_EQ_4001U(...) \, +#define Z_IS_4001U_EQ_4001U(...) \, +#define Z_IS_4002_EQ_4002(...) \, +#define Z_IS_4002U_EQ_4002(...) \, +#define Z_IS_4002_EQ_4002U(...) \, +#define Z_IS_4002U_EQ_4002U(...) \, +#define Z_IS_4003_EQ_4003(...) \, +#define Z_IS_4003U_EQ_4003(...) \, +#define Z_IS_4003_EQ_4003U(...) \, +#define Z_IS_4003U_EQ_4003U(...) \, +#define Z_IS_4004_EQ_4004(...) \, +#define Z_IS_4004U_EQ_4004(...) \, +#define Z_IS_4004_EQ_4004U(...) \, +#define Z_IS_4004U_EQ_4004U(...) \, +#define Z_IS_4005_EQ_4005(...) \, +#define Z_IS_4005U_EQ_4005(...) \, +#define Z_IS_4005_EQ_4005U(...) \, +#define Z_IS_4005U_EQ_4005U(...) \, +#define Z_IS_4006_EQ_4006(...) \, +#define Z_IS_4006U_EQ_4006(...) \, +#define Z_IS_4006_EQ_4006U(...) \, +#define Z_IS_4006U_EQ_4006U(...) \, +#define Z_IS_4007_EQ_4007(...) \, +#define Z_IS_4007U_EQ_4007(...) \, +#define Z_IS_4007_EQ_4007U(...) \, +#define Z_IS_4007U_EQ_4007U(...) \, +#define Z_IS_4008_EQ_4008(...) \, +#define Z_IS_4008U_EQ_4008(...) \, +#define Z_IS_4008_EQ_4008U(...) \, +#define Z_IS_4008U_EQ_4008U(...) \, +#define Z_IS_4009_EQ_4009(...) \, +#define Z_IS_4009U_EQ_4009(...) \, +#define Z_IS_4009_EQ_4009U(...) \, +#define Z_IS_4009U_EQ_4009U(...) \, +#define Z_IS_4010_EQ_4010(...) \, +#define Z_IS_4010U_EQ_4010(...) \, +#define Z_IS_4010_EQ_4010U(...) \, +#define Z_IS_4010U_EQ_4010U(...) \, +#define Z_IS_4011_EQ_4011(...) \, +#define Z_IS_4011U_EQ_4011(...) \, +#define Z_IS_4011_EQ_4011U(...) \, +#define Z_IS_4011U_EQ_4011U(...) \, +#define Z_IS_4012_EQ_4012(...) \, +#define Z_IS_4012U_EQ_4012(...) \, +#define Z_IS_4012_EQ_4012U(...) \, +#define Z_IS_4012U_EQ_4012U(...) \, +#define Z_IS_4013_EQ_4013(...) \, +#define Z_IS_4013U_EQ_4013(...) \, +#define Z_IS_4013_EQ_4013U(...) \, +#define Z_IS_4013U_EQ_4013U(...) \, +#define Z_IS_4014_EQ_4014(...) \, +#define Z_IS_4014U_EQ_4014(...) \, +#define Z_IS_4014_EQ_4014U(...) \, +#define Z_IS_4014U_EQ_4014U(...) \, +#define Z_IS_4015_EQ_4015(...) \, +#define Z_IS_4015U_EQ_4015(...) \, +#define Z_IS_4015_EQ_4015U(...) \, +#define Z_IS_4015U_EQ_4015U(...) \, +#define Z_IS_4016_EQ_4016(...) \, +#define Z_IS_4016U_EQ_4016(...) \, +#define Z_IS_4016_EQ_4016U(...) \, +#define Z_IS_4016U_EQ_4016U(...) \, +#define Z_IS_4017_EQ_4017(...) \, +#define Z_IS_4017U_EQ_4017(...) \, +#define Z_IS_4017_EQ_4017U(...) \, +#define Z_IS_4017U_EQ_4017U(...) \, +#define Z_IS_4018_EQ_4018(...) \, +#define Z_IS_4018U_EQ_4018(...) \, +#define Z_IS_4018_EQ_4018U(...) \, +#define Z_IS_4018U_EQ_4018U(...) \, +#define Z_IS_4019_EQ_4019(...) \, +#define Z_IS_4019U_EQ_4019(...) \, +#define Z_IS_4019_EQ_4019U(...) \, +#define Z_IS_4019U_EQ_4019U(...) \, +#define Z_IS_4020_EQ_4020(...) \, +#define Z_IS_4020U_EQ_4020(...) \, +#define Z_IS_4020_EQ_4020U(...) \, +#define Z_IS_4020U_EQ_4020U(...) \, +#define Z_IS_4021_EQ_4021(...) \, +#define Z_IS_4021U_EQ_4021(...) \, +#define Z_IS_4021_EQ_4021U(...) \, +#define Z_IS_4021U_EQ_4021U(...) \, +#define Z_IS_4022_EQ_4022(...) \, +#define Z_IS_4022U_EQ_4022(...) \, +#define Z_IS_4022_EQ_4022U(...) \, +#define Z_IS_4022U_EQ_4022U(...) \, +#define Z_IS_4023_EQ_4023(...) \, +#define Z_IS_4023U_EQ_4023(...) \, +#define Z_IS_4023_EQ_4023U(...) \, +#define Z_IS_4023U_EQ_4023U(...) \, +#define Z_IS_4024_EQ_4024(...) \, +#define Z_IS_4024U_EQ_4024(...) \, +#define Z_IS_4024_EQ_4024U(...) \, +#define Z_IS_4024U_EQ_4024U(...) \, +#define Z_IS_4025_EQ_4025(...) \, +#define Z_IS_4025U_EQ_4025(...) \, +#define Z_IS_4025_EQ_4025U(...) \, +#define Z_IS_4025U_EQ_4025U(...) \, +#define Z_IS_4026_EQ_4026(...) \, +#define Z_IS_4026U_EQ_4026(...) \, +#define Z_IS_4026_EQ_4026U(...) \, +#define Z_IS_4026U_EQ_4026U(...) \, +#define Z_IS_4027_EQ_4027(...) \, +#define Z_IS_4027U_EQ_4027(...) \, +#define Z_IS_4027_EQ_4027U(...) \, +#define Z_IS_4027U_EQ_4027U(...) \, +#define Z_IS_4028_EQ_4028(...) \, +#define Z_IS_4028U_EQ_4028(...) \, +#define Z_IS_4028_EQ_4028U(...) \, +#define Z_IS_4028U_EQ_4028U(...) \, +#define Z_IS_4029_EQ_4029(...) \, +#define Z_IS_4029U_EQ_4029(...) \, +#define Z_IS_4029_EQ_4029U(...) \, +#define Z_IS_4029U_EQ_4029U(...) \, +#define Z_IS_4030_EQ_4030(...) \, +#define Z_IS_4030U_EQ_4030(...) \, +#define Z_IS_4030_EQ_4030U(...) \, +#define Z_IS_4030U_EQ_4030U(...) \, +#define Z_IS_4031_EQ_4031(...) \, +#define Z_IS_4031U_EQ_4031(...) \, +#define Z_IS_4031_EQ_4031U(...) \, +#define Z_IS_4031U_EQ_4031U(...) \, +#define Z_IS_4032_EQ_4032(...) \, +#define Z_IS_4032U_EQ_4032(...) \, +#define Z_IS_4032_EQ_4032U(...) \, +#define Z_IS_4032U_EQ_4032U(...) \, +#define Z_IS_4033_EQ_4033(...) \, +#define Z_IS_4033U_EQ_4033(...) \, +#define Z_IS_4033_EQ_4033U(...) \, +#define Z_IS_4033U_EQ_4033U(...) \, +#define Z_IS_4034_EQ_4034(...) \, +#define Z_IS_4034U_EQ_4034(...) \, +#define Z_IS_4034_EQ_4034U(...) \, +#define Z_IS_4034U_EQ_4034U(...) \, +#define Z_IS_4035_EQ_4035(...) \, +#define Z_IS_4035U_EQ_4035(...) \, +#define Z_IS_4035_EQ_4035U(...) \, +#define Z_IS_4035U_EQ_4035U(...) \, +#define Z_IS_4036_EQ_4036(...) \, +#define Z_IS_4036U_EQ_4036(...) \, +#define Z_IS_4036_EQ_4036U(...) \, +#define Z_IS_4036U_EQ_4036U(...) \, +#define Z_IS_4037_EQ_4037(...) \, +#define Z_IS_4037U_EQ_4037(...) \, +#define Z_IS_4037_EQ_4037U(...) \, +#define Z_IS_4037U_EQ_4037U(...) \, +#define Z_IS_4038_EQ_4038(...) \, +#define Z_IS_4038U_EQ_4038(...) \, +#define Z_IS_4038_EQ_4038U(...) \, +#define Z_IS_4038U_EQ_4038U(...) \, +#define Z_IS_4039_EQ_4039(...) \, +#define Z_IS_4039U_EQ_4039(...) \, +#define Z_IS_4039_EQ_4039U(...) \, +#define Z_IS_4039U_EQ_4039U(...) \, +#define Z_IS_4040_EQ_4040(...) \, +#define Z_IS_4040U_EQ_4040(...) \, +#define Z_IS_4040_EQ_4040U(...) \, +#define Z_IS_4040U_EQ_4040U(...) \, +#define Z_IS_4041_EQ_4041(...) \, +#define Z_IS_4041U_EQ_4041(...) \, +#define Z_IS_4041_EQ_4041U(...) \, +#define Z_IS_4041U_EQ_4041U(...) \, +#define Z_IS_4042_EQ_4042(...) \, +#define Z_IS_4042U_EQ_4042(...) \, +#define Z_IS_4042_EQ_4042U(...) \, +#define Z_IS_4042U_EQ_4042U(...) \, +#define Z_IS_4043_EQ_4043(...) \, +#define Z_IS_4043U_EQ_4043(...) \, +#define Z_IS_4043_EQ_4043U(...) \, +#define Z_IS_4043U_EQ_4043U(...) \, +#define Z_IS_4044_EQ_4044(...) \, +#define Z_IS_4044U_EQ_4044(...) \, +#define Z_IS_4044_EQ_4044U(...) \, +#define Z_IS_4044U_EQ_4044U(...) \, +#define Z_IS_4045_EQ_4045(...) \, +#define Z_IS_4045U_EQ_4045(...) \, +#define Z_IS_4045_EQ_4045U(...) \, +#define Z_IS_4045U_EQ_4045U(...) \, +#define Z_IS_4046_EQ_4046(...) \, +#define Z_IS_4046U_EQ_4046(...) \, +#define Z_IS_4046_EQ_4046U(...) \, +#define Z_IS_4046U_EQ_4046U(...) \, +#define Z_IS_4047_EQ_4047(...) \, +#define Z_IS_4047U_EQ_4047(...) \, +#define Z_IS_4047_EQ_4047U(...) \, +#define Z_IS_4047U_EQ_4047U(...) \, +#define Z_IS_4048_EQ_4048(...) \, +#define Z_IS_4048U_EQ_4048(...) \, +#define Z_IS_4048_EQ_4048U(...) \, +#define Z_IS_4048U_EQ_4048U(...) \, +#define Z_IS_4049_EQ_4049(...) \, +#define Z_IS_4049U_EQ_4049(...) \, +#define Z_IS_4049_EQ_4049U(...) \, +#define Z_IS_4049U_EQ_4049U(...) \, +#define Z_IS_4050_EQ_4050(...) \, +#define Z_IS_4050U_EQ_4050(...) \, +#define Z_IS_4050_EQ_4050U(...) \, +#define Z_IS_4050U_EQ_4050U(...) \, +#define Z_IS_4051_EQ_4051(...) \, +#define Z_IS_4051U_EQ_4051(...) \, +#define Z_IS_4051_EQ_4051U(...) \, +#define Z_IS_4051U_EQ_4051U(...) \, +#define Z_IS_4052_EQ_4052(...) \, +#define Z_IS_4052U_EQ_4052(...) \, +#define Z_IS_4052_EQ_4052U(...) \, +#define Z_IS_4052U_EQ_4052U(...) \, +#define Z_IS_4053_EQ_4053(...) \, +#define Z_IS_4053U_EQ_4053(...) \, +#define Z_IS_4053_EQ_4053U(...) \, +#define Z_IS_4053U_EQ_4053U(...) \, +#define Z_IS_4054_EQ_4054(...) \, +#define Z_IS_4054U_EQ_4054(...) \, +#define Z_IS_4054_EQ_4054U(...) \, +#define Z_IS_4054U_EQ_4054U(...) \, +#define Z_IS_4055_EQ_4055(...) \, +#define Z_IS_4055U_EQ_4055(...) \, +#define Z_IS_4055_EQ_4055U(...) \, +#define Z_IS_4055U_EQ_4055U(...) \, +#define Z_IS_4056_EQ_4056(...) \, +#define Z_IS_4056U_EQ_4056(...) \, +#define Z_IS_4056_EQ_4056U(...) \, +#define Z_IS_4056U_EQ_4056U(...) \, +#define Z_IS_4057_EQ_4057(...) \, +#define Z_IS_4057U_EQ_4057(...) \, +#define Z_IS_4057_EQ_4057U(...) \, +#define Z_IS_4057U_EQ_4057U(...) \, +#define Z_IS_4058_EQ_4058(...) \, +#define Z_IS_4058U_EQ_4058(...) \, +#define Z_IS_4058_EQ_4058U(...) \, +#define Z_IS_4058U_EQ_4058U(...) \, +#define Z_IS_4059_EQ_4059(...) \, +#define Z_IS_4059U_EQ_4059(...) \, +#define Z_IS_4059_EQ_4059U(...) \, +#define Z_IS_4059U_EQ_4059U(...) \, +#define Z_IS_4060_EQ_4060(...) \, +#define Z_IS_4060U_EQ_4060(...) \, +#define Z_IS_4060_EQ_4060U(...) \, +#define Z_IS_4060U_EQ_4060U(...) \, +#define Z_IS_4061_EQ_4061(...) \, +#define Z_IS_4061U_EQ_4061(...) \, +#define Z_IS_4061_EQ_4061U(...) \, +#define Z_IS_4061U_EQ_4061U(...) \, +#define Z_IS_4062_EQ_4062(...) \, +#define Z_IS_4062U_EQ_4062(...) \, +#define Z_IS_4062_EQ_4062U(...) \, +#define Z_IS_4062U_EQ_4062U(...) \, +#define Z_IS_4063_EQ_4063(...) \, +#define Z_IS_4063U_EQ_4063(...) \, +#define Z_IS_4063_EQ_4063U(...) \, +#define Z_IS_4063U_EQ_4063U(...) \, +#define Z_IS_4064_EQ_4064(...) \, +#define Z_IS_4064U_EQ_4064(...) \, +#define Z_IS_4064_EQ_4064U(...) \, +#define Z_IS_4064U_EQ_4064U(...) \, +#define Z_IS_4065_EQ_4065(...) \, +#define Z_IS_4065U_EQ_4065(...) \, +#define Z_IS_4065_EQ_4065U(...) \, +#define Z_IS_4065U_EQ_4065U(...) \, +#define Z_IS_4066_EQ_4066(...) \, +#define Z_IS_4066U_EQ_4066(...) \, +#define Z_IS_4066_EQ_4066U(...) \, +#define Z_IS_4066U_EQ_4066U(...) \, +#define Z_IS_4067_EQ_4067(...) \, +#define Z_IS_4067U_EQ_4067(...) \, +#define Z_IS_4067_EQ_4067U(...) \, +#define Z_IS_4067U_EQ_4067U(...) \, +#define Z_IS_4068_EQ_4068(...) \, +#define Z_IS_4068U_EQ_4068(...) \, +#define Z_IS_4068_EQ_4068U(...) \, +#define Z_IS_4068U_EQ_4068U(...) \, +#define Z_IS_4069_EQ_4069(...) \, +#define Z_IS_4069U_EQ_4069(...) \, +#define Z_IS_4069_EQ_4069U(...) \, +#define Z_IS_4069U_EQ_4069U(...) \, +#define Z_IS_4070_EQ_4070(...) \, +#define Z_IS_4070U_EQ_4070(...) \, +#define Z_IS_4070_EQ_4070U(...) \, +#define Z_IS_4070U_EQ_4070U(...) \, +#define Z_IS_4071_EQ_4071(...) \, +#define Z_IS_4071U_EQ_4071(...) \, +#define Z_IS_4071_EQ_4071U(...) \, +#define Z_IS_4071U_EQ_4071U(...) \, +#define Z_IS_4072_EQ_4072(...) \, +#define Z_IS_4072U_EQ_4072(...) \, +#define Z_IS_4072_EQ_4072U(...) \, +#define Z_IS_4072U_EQ_4072U(...) \, +#define Z_IS_4073_EQ_4073(...) \, +#define Z_IS_4073U_EQ_4073(...) \, +#define Z_IS_4073_EQ_4073U(...) \, +#define Z_IS_4073U_EQ_4073U(...) \, +#define Z_IS_4074_EQ_4074(...) \, +#define Z_IS_4074U_EQ_4074(...) \, +#define Z_IS_4074_EQ_4074U(...) \, +#define Z_IS_4074U_EQ_4074U(...) \, +#define Z_IS_4075_EQ_4075(...) \, +#define Z_IS_4075U_EQ_4075(...) \, +#define Z_IS_4075_EQ_4075U(...) \, +#define Z_IS_4075U_EQ_4075U(...) \, +#define Z_IS_4076_EQ_4076(...) \, +#define Z_IS_4076U_EQ_4076(...) \, +#define Z_IS_4076_EQ_4076U(...) \, +#define Z_IS_4076U_EQ_4076U(...) \, +#define Z_IS_4077_EQ_4077(...) \, +#define Z_IS_4077U_EQ_4077(...) \, +#define Z_IS_4077_EQ_4077U(...) \, +#define Z_IS_4077U_EQ_4077U(...) \, +#define Z_IS_4078_EQ_4078(...) \, +#define Z_IS_4078U_EQ_4078(...) \, +#define Z_IS_4078_EQ_4078U(...) \, +#define Z_IS_4078U_EQ_4078U(...) \, +#define Z_IS_4079_EQ_4079(...) \, +#define Z_IS_4079U_EQ_4079(...) \, +#define Z_IS_4079_EQ_4079U(...) \, +#define Z_IS_4079U_EQ_4079U(...) \, +#define Z_IS_4080_EQ_4080(...) \, +#define Z_IS_4080U_EQ_4080(...) \, +#define Z_IS_4080_EQ_4080U(...) \, +#define Z_IS_4080U_EQ_4080U(...) \, +#define Z_IS_4081_EQ_4081(...) \, +#define Z_IS_4081U_EQ_4081(...) \, +#define Z_IS_4081_EQ_4081U(...) \, +#define Z_IS_4081U_EQ_4081U(...) \, +#define Z_IS_4082_EQ_4082(...) \, +#define Z_IS_4082U_EQ_4082(...) \, +#define Z_IS_4082_EQ_4082U(...) \, +#define Z_IS_4082U_EQ_4082U(...) \, +#define Z_IS_4083_EQ_4083(...) \, +#define Z_IS_4083U_EQ_4083(...) \, +#define Z_IS_4083_EQ_4083U(...) \, +#define Z_IS_4083U_EQ_4083U(...) \, +#define Z_IS_4084_EQ_4084(...) \, +#define Z_IS_4084U_EQ_4084(...) \, +#define Z_IS_4084_EQ_4084U(...) \, +#define Z_IS_4084U_EQ_4084U(...) \, +#define Z_IS_4085_EQ_4085(...) \, +#define Z_IS_4085U_EQ_4085(...) \, +#define Z_IS_4085_EQ_4085U(...) \, +#define Z_IS_4085U_EQ_4085U(...) \, +#define Z_IS_4086_EQ_4086(...) \, +#define Z_IS_4086U_EQ_4086(...) \, +#define Z_IS_4086_EQ_4086U(...) \, +#define Z_IS_4086U_EQ_4086U(...) \, +#define Z_IS_4087_EQ_4087(...) \, +#define Z_IS_4087U_EQ_4087(...) \, +#define Z_IS_4087_EQ_4087U(...) \, +#define Z_IS_4087U_EQ_4087U(...) \, +#define Z_IS_4088_EQ_4088(...) \, +#define Z_IS_4088U_EQ_4088(...) \, +#define Z_IS_4088_EQ_4088U(...) \, +#define Z_IS_4088U_EQ_4088U(...) \, +#define Z_IS_4089_EQ_4089(...) \, +#define Z_IS_4089U_EQ_4089(...) \, +#define Z_IS_4089_EQ_4089U(...) \, +#define Z_IS_4089U_EQ_4089U(...) \, +#define Z_IS_4090_EQ_4090(...) \, +#define Z_IS_4090U_EQ_4090(...) \, +#define Z_IS_4090_EQ_4090U(...) \, +#define Z_IS_4090U_EQ_4090U(...) \, +#define Z_IS_4091_EQ_4091(...) \, +#define Z_IS_4091U_EQ_4091(...) \, +#define Z_IS_4091_EQ_4091U(...) \, +#define Z_IS_4091U_EQ_4091U(...) \, +#define Z_IS_4092_EQ_4092(...) \, +#define Z_IS_4092U_EQ_4092(...) \, +#define Z_IS_4092_EQ_4092U(...) \, +#define Z_IS_4092U_EQ_4092U(...) \, +#define Z_IS_4093_EQ_4093(...) \, +#define Z_IS_4093U_EQ_4093(...) \, +#define Z_IS_4093_EQ_4093U(...) \, +#define Z_IS_4093U_EQ_4093U(...) \, +#define Z_IS_4094_EQ_4094(...) \, +#define Z_IS_4094U_EQ_4094(...) \, +#define Z_IS_4094_EQ_4094U(...) \, +#define Z_IS_4094U_EQ_4094U(...) \, +#define Z_IS_4095_EQ_4095(...) \, +#define Z_IS_4095U_EQ_4095(...) \, +#define Z_IS_4095_EQ_4095U(...) \, +#define Z_IS_4095U_EQ_4095U(...) \, +#define Z_IS_4096_EQ_4096(...) \, +#define Z_IS_4096U_EQ_4096(...) \, +#define Z_IS_4096_EQ_4096U(...) \, +#define Z_IS_4096U_EQ_4096U(...) \, #endif /* ZEPHYR_INCLUDE_SYS_UTIL_INTERNAL_IS_EQ_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util_macro.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util_macro.h index 5b3864d2..4a3767bf 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util_macro.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys/util_macro.h @@ -93,6 +93,22 @@ extern "C" { */ #define IS_BIT_MASK(m) IS_SHIFTED_BIT_MASK(m, 0) +/** @brief Extract the Least Significant Bit from @p value. */ +#define LSB_GET(value) ((value) & -(value)) + +/** + * @brief Extract a bitfield element from @p value corresponding to + * the field mask @p mask. + */ +#define FIELD_GET(mask, value) (((value) & (mask)) / LSB_GET(mask)) + +/** + * @brief Prepare a bitfield element using @p value with @p mask representing + * its field position and width. The result should be combined + * with other fields using a logical OR. + */ +#define FIELD_PREP(mask, value) (((value) * LSB_GET(mask)) & (mask)) + /** * @brief Check for macro definition in compiler-visible expressions * @@ -280,7 +296,19 @@ extern "C" { * @brief Like a == b, but does evaluation and * short-circuiting at C preprocessor time. * - * This however only works for integer literal from 0 to 4095. + * This however only works for integer literal from 0 to 4096 (literals with U suffix, + * e.g. 0U are also included). + * + * Examples: + * + * IS_EQ(1, 1) -> 1 + * IS_EQ(1U, 1U) -> 1 + * IS_EQ(1U, 1) -> 1 + * IS_EQ(1, 1U) -> 1 + * IS_EQ(1, 0) -> 0 + * + * @param a Integer literal (can be with U suffix) + * @param b Integer literal * */ #define IS_EQ(a, b) Z_IS_EQ(a, b) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys_clock.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys_clock.h index e43b539f..36abcff9 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys_clock.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/sys_clock.h @@ -94,6 +94,12 @@ typedef struct { /** number of seconds per minute */ #define SEC_PER_MIN 60U +/** number of seconds per hour */ +#define SEC_PER_HOUR 3600U + +/** number of seconds per day */ +#define SEC_PER_DAY 86400U + /** number of minutes per hour */ #define MIN_PER_HOUR 60U @@ -251,21 +257,6 @@ k_timepoint_t sys_timepoint_calc(k_timeout_t timeout); */ k_timeout_t sys_timepoint_timeout(k_timepoint_t timepoint); -/** - * @brief Provided for backward compatibility. - * - * This is deprecated. Consider `sys_timepoint_calc()` instead. - * - * @see sys_timepoint_calc() - */ -__deprecated -static inline uint64_t sys_clock_timeout_end_calc(k_timeout_t timeout) -{ - k_timepoint_t tp = sys_timepoint_calc(timeout); - - return tp.tick; -} - /** * @brief Compare two timepoint values. * diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/task_wdt/task_wdt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/task_wdt/task_wdt.h index e14ef581..91cc9798 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/task_wdt/task_wdt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/task_wdt/task_wdt.h @@ -14,8 +14,8 @@ * threads. It can be used together with a hardware watchdog as a fallback. */ -#ifndef TASK_WDT_H_ -#define TASK_WDT_H_ +#ifndef ZEPHYR_INCLUDE_TASK_WDT_H_ +#define ZEPHYR_INCLUDE_TASK_WDT_H_ #include #include @@ -110,4 +110,4 @@ int task_wdt_feed(int channel_id); * @} */ -#endif /* TASK_WDT_H_ */ +#endif /* ZEPHYR_INCLUDE_TASK_WDT_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/toolchain/gcc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/toolchain/gcc.h index 9af23fb2..bb55d50a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/toolchain/gcc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/toolchain/gcc.h @@ -186,10 +186,14 @@ do { \ "." Z_STRINGIFY(c)))) #define __in_section(a, b, c) ___in_section(a, b, c) +#ifndef __in_section_unique #define __in_section_unique(seg) ___in_section(seg, __FILE__, __COUNTER__) +#endif +#ifndef __in_section_unique_named #define __in_section_unique_named(seg, name) \ ___in_section(seg, __FILE__, name) +#endif /* When using XIP, using '__ramfunc' places a function into RAM instead * of FLASH. Make sure '__ramfunc' is defined only when @@ -225,6 +229,10 @@ do { \ #define __aligned(x) __attribute__((__aligned__(x))) #endif +#ifndef __noinline +#define __noinline __attribute__((noinline)) +#endif + #define __may_alias __attribute__((__may_alias__)) #ifndef __printf_like @@ -250,6 +258,9 @@ do { \ #ifndef __deprecated #define __deprecated __attribute__((deprecated)) +/* When adding this, remember to follow the instructions in + * https://docs.zephyrproject.org/latest/develop/api/api_lifecycle.html#deprecated + */ #endif #ifndef __attribute_const__ @@ -312,6 +323,9 @@ do { \ /* Generic message */ #ifndef __DEPRECATED_MACRO #define __DEPRECATED_MACRO __WARN("Macro is deprecated") +/* When adding this, remember to follow the instructions in + * https://docs.zephyrproject.org/latest/develop/api/api_lifecycle.html#deprecated + */ #endif /* These macros allow having ARM asm functions callable from thumb */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/toolchain/mwdt.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/toolchain/mwdt.h index 48ce1b69..715c34bd 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/toolchain/mwdt.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/toolchain/mwdt.h @@ -114,16 +114,6 @@ #else /* defined(_ASMLANGUAGE) */ -/* MWDT toolchain misses ssize_t definition which is used by Zephyr */ -#ifndef _SSIZE_T_DEFINED -#define _SSIZE_T_DEFINED -#ifdef CONFIG_64BIT - typedef long ssize_t; -#else - typedef int ssize_t; -#endif -#endif /* _SSIZE_T_DEFINED */ - #ifdef CONFIG_NEWLIB_LIBC #error "ARC MWDT doesn't support building with CONFIG_NEWLIB_LIBC as it doesn't have newlib" #endif /* CONFIG_NEWLIB_LIBC */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/toolchain/xcc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/toolchain/xcc.h index ae4bb811..4078556e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/toolchain/xcc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/toolchain/xcc.h @@ -11,6 +11,20 @@ #error Please do not include toolchain-specific headers directly, use instead #endif +/* + * XCC does not support using deprecated attribute in enum, + * so just nullify it here to avoid compilation errors. + */ +#define __deprecated + +#define __in_section_unique(seg) \ + __attribute__((section("." STRINGIFY(seg) "." STRINGIFY(__COUNTER__)))) + +#define __in_section_unique_named(seg, name) \ + __attribute__((section("." STRINGIFY(seg) \ + "." STRINGIFY(__COUNTER__) \ + "." STRINGIFY(name)))) + /* toolchain/gcc.h errors out if __BYTE_ORDER__ cannot be determined * there. However, __BYTE_ORDER__ is actually being defined later in * this file. So define __BYTE_ORDER__ to skip the check in gcc.h @@ -121,16 +135,6 @@ #define __COUNTER__ __LINE__ #endif -#undef __in_section_unique -#define __in_section_unique(seg) \ - __attribute__((section("." STRINGIFY(seg) "." STRINGIFY(__COUNTER__)))) - -#undef __in_section_unique_named -#define __in_section_unique_named(seg, name) \ - __attribute__((section("." STRINGIFY(seg) \ - "." STRINGIFY(__COUNTER__) \ - "." STRINGIFY(name)))) - #ifndef __GCC_LINKER_CMD__ #include @@ -155,13 +159,4 @@ #define __sync_synchronize() do { __asm__ __volatile__ ("" ::: "memory"); } \ while (false) -#ifdef __deprecated -/* - * XCC does not support using deprecated attribute in enum, - * so just nullify it here to avoid compilation errors. - */ -#undef __deprecated -#define __deprecated -#endif - #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/tracing/tracing.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/tracing/tracing.h index 3e1f998c..68a453a8 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/tracing/tracing.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/tracing/tracing.h @@ -427,6 +427,28 @@ */ #define sys_port_trace_k_work_queue_start_exit(queue) +/** + * @brief Trace stop of a Work Queue call entry + * @param queue Work Queue structure + * @param timeout Timeout period + */ +#define sys_port_trace_k_work_queue_stop_enter(queue, timeout) + +/** + * @brief Trace stop of a Work Queue call blocking + * @param queue Work Queue structure + * @param timeout Timeout period + */ +#define sys_port_trace_k_work_queue_stop_blocking(queue, timeout) + +/** + * @brief Trace stop of a Work Queue call exit + * @param queue Work Queue structure + * @param timeout Timeout period + * @param ret Return value + */ +#define sys_port_trace_k_work_queue_stop_exit(queue, timeout, ret) + /** * @brief Trace Work Queue drain call entry * @param queue Work Queue structure @@ -2028,6 +2050,56 @@ /** @} */ /* end of subsys_tracing_apis_pm_device_runtime */ +/** + * @brief Network Core Tracing APIs + * @defgroup subsys_tracing_apis_net Network Core Tracing APIs + * @{ + */ + +/** + * @brief Trace network data receive + * @param iface Network interface + * @param pkt Received network packet + */ +#define sys_port_trace_net_recv_data_enter(iface, pkt) + +/** + * @brief Trace network data receive attempt + * @param iface Network interface + * @param pkt Received network packet + * @param ret Return value + */ +#define sys_port_trace_net_recv_data_exit(iface, pkt, ret) + +/** + * @brief Trace network data send + * @param pkt Network packet to send + */ +#define sys_port_trace_net_send_data_enter(pkt) + +/** + * @brief Trace network data send attempt + * @param pkt Received network packet + * @param ret Return value + */ +#define sys_port_trace_net_send_data_exit(pkt, ret) + +/** + * @brief Trace network data receive time + * @param pkt Received network packet + * @param end_time When the RX processing stopped for this pkt (in ticks) + */ +#define sys_port_trace_net_rx_time(pkt, end_time) + +/** + * @brief Trace network data sent time + * @param pkt Sent network packet + * @param end_time When the TX processing stopped for this pkt (in ticks) + */ +#define sys_port_trace_net_tx_time(pkt, end_time) + +/** @} */ /* end of subsys_tracing_apis_net */ + /** * @brief Network Socket Tracing APIs * @defgroup subsys_tracing_apis_socket Network Socket Tracing APIs @@ -2326,6 +2398,237 @@ /** @} */ /* end of subsys_tracing_apis_socket */ +/** + * @brief Named Tracing APIs + * @defgroup subsys_tracing_apis_named Named tracing APIs + * @{ + */ + +/* + * @brief Called by user to generate named events + * + * @param name name of event. Tracing subsystems may place a limit on + * the length of this string + * @param arg0 arbitrary user-provided data for this event + * @param arg1 arbitrary user-provided data for this event + */ +#define sys_trace_named_event(name, arg0, arg1) + +/** @} */ /* end of subsys_tracing_apis_named */ + +/** + * @brief GPIO Tracing APIs + * @defgroup subsys_tracing_apis_gpio GPIO Tracing APIs + * @{ + */ + +/** + * @brief Trace GPIO pin interrupt configure enter call + * @param port Pointer to device structure for the driver instance + * @param pin GPIO pin number + * @param flags Interrupt configuration flags as defined by GPIO_INT_* + */ +#define sys_port_trace_gpio_pin_interrupt_configure_enter(port, pin, flags) + +/** + * @brief Trace GPIO pin interrupt configure exit call + * @param port Pointer to device structure for the driver instance + * @param pin GPIO pin number + * @param ret Return value + */ +#define sys_port_trace_gpio_pin_interrupt_configure_exit(port, pin, ret) + +/** + * @brief Trace GPIO single pin configure enter call + * @param port Pointer to device structure for the driver instance + * @param pin GPIO pin number to configure + * @param flags GPIO pin configuration flags + */ +#define sys_port_trace_gpio_pin_configure_enter(port, pin, flags) + +/** + * @brief Trace GPIO single pin configure exit call + * @param port Pointer to device structure for the driver instance + * @param pin GPIO pin number to configure + * @param ret Return value + */ +#define sys_port_trace_gpio_pin_configure_exit(port, pin, ret) + +/** + * @brief Trace GPIO port get direction enter call + * @param port Pointer to device structure for the driver instance + * @param map Bitmap of pin directions to query + * @param inputs Pointer to a variable where input directions will be stored + * @param outputs Pointer to a variable where output directions will be stored + */ +#define sys_port_trace_gpio_port_get_direction_enter(port, map, inputs, outputs) + +/** + * @brief Trace GPIO port get direction exit call + * @param port Pointer to device structure for the driver instance + * @param ret Return value + */ +#define sys_port_trace_gpio_port_get_direction_exit(port, ret) + +/** + * @brief Trace GPIO pin gent config enter call + * @param port Pointer to device structure for the driver instance + * @param pin GPIO pin number to configure + * @param flags GPIO pin configuration flags + */ +#define sys_port_trace_gpio_pin_get_config_enter(port, pin, flags) + +/** + * @brief Trace GPIO pin get config exit call + * @param port Pointer to device structure for the driver instance + * @param pin GPIO pin number to configure + * @param ret Return value + */ +#define sys_port_trace_gpio_pin_get_config_exit(port, pin, ret) + +/** + * @brief Trace GPIO port get raw enter call + * @param port Pointer to device structure for the driver instance + * @param value Pointer to a variable where the raw value will be stored + */ +#define sys_port_trace_gpio_port_get_raw_enter(port, value) + +/** + * @brief Trace GPIO port get raw exit call + * @param port Pointer to device structure for the driver instance + * @param ret Return value + */ +#define sys_port_trace_gpio_port_get_raw_exit(port, ret) + +/** + * @brief Trace GPIO port set masked raw enter call + * @param port Pointer to device structure for the driver instance + * @param mask Mask indicating which pins will be modified + * @param value Value to be written to the output pins + */ +#define sys_port_trace_gpio_port_set_masked_raw_enter(port, mask, value) + +/** + * @brief Trace GPIO port set masked raw exit call + * @param port Pointer to device structure for the driver instance + * @param ret Return value + */ +#define sys_port_trace_gpio_port_set_masked_raw_exit(port, ret) + +/** + * @brief Trace GPIO port set bits raw enter call + * @param port Pointer to device structure for the driver instance + * @param pins Value indicating which pins will be modified + */ +#define sys_port_trace_gpio_port_set_bits_raw_enter(port, pins) + +/** + * @brief Trace GPIO port set bits raw exit call + * @param port Pointer to device structure for the driver instance + * @param ret Return value + */ +#define sys_port_trace_gpio_port_set_bits_raw_exit(port, ret) + +/** + * @brief Trace GPIO port clear bits raw enter call + * @param port Pointer to device structure for the driver instance + * @param pins Value indicating which pins will be modified + */ +#define sys_port_trace_gpio_port_clear_bits_raw_enter(port, pins) + +/** + * @brief Trace GPIO port clear bits raw exit call + * @param port Pointer to device structure for the driver instance + * @param ret Return value + */ +#define sys_port_trace_gpio_port_clear_bits_raw_exit(port, ret) + +/** + * @brief Trace GPIO port toggle bits enter call + * @param port Pointer to device structure for the driver instance + * @param pins Value indicating which pins will be modified + */ +#define sys_port_trace_gpio_port_toggle_bits_enter(port, pins) + +/** + * @brief Trace GPIO port toggle bits exit call + * @param port Pointer to device structure for the driver instance + * @param ret Return value + */ +#define sys_port_trace_gpio_port_toggle_bits_exit(port, ret) + +/** + * @brief Trace GPIO init callback enter call + * @param callback A valid application's callback structure pointer + * @param handler A valid handler function pointer + * @param pin_mask A bit mask of relevant pins for the handler + */ +#define sys_port_trace_gpio_init_callback_enter(callback, handler, pin_mask) + +/** + * @brief Trace GPIO init callback exit call + * @param callback A valid application's callback structure pointer + */ +#define sys_port_trace_gpio_init_callback_exit(callback) + +/** + * @brief Trace GPIO add callback enter call + * @param port Pointer to device structure for the driver instance + * @param callback A valid application's callback structure pointer + */ +#define sys_port_trace_gpio_add_callback_enter(port, callback) + +/** + * @brief Trace GPIO add callback exit call + * @param port Pointer to device structure for the driver instance + * @param ret Return value + */ +#define sys_port_trace_gpio_add_callback_exit(port, ret) + +/** + * @brief Trace GPIO remove callback enter call + * @param port Pointer to device structure for the driver instance + * @param callback A valid application's callback structure pointer + */ +#define sys_port_trace_gpio_remove_callback_enter(port, callback) + +/** + * @brief Trace GPIO remove callback exit call + * @param port Pointer to device structure for the driver instance + * @param ret Return value + */ +#define sys_port_trace_gpio_remove_callback_exit(port, ret) + +/** + * @brief Trace GPIO get pending interrupt enter call + * @param dev Pointer to the device structure for the device instance + */ +#define sys_port_trace_gpio_get_pending_int_enter(dev) + +/** + * @brief Trace GPIO get pending interrupt exit call + * @param dev Pointer to the device structure for the device instance + * @param ret Return value + */ +#define sys_port_trace_gpio_get_pending_int_exit(dev, ret) + +/** + * @brief + * @param list @ref sys_slist_t representing gpio_callback pointers + * @param port @ref device representing the GPIO port + * @param pins @ref gpio_pin_t representing the pins + */ +#define sys_port_trace_gpio_fire_callbacks_enter(list, port, pins) + +/** + * @brief + * @param port @ref device representing the GPIO port + * @param callback @ref gpio_callback a valid Application's callback structure pointer + */ +#define sys_port_trace_gpio_fire_callback(port, callback) + +/** @} */ /* end of subsys_tracing_apis_gpio */ + #if defined(CONFIG_PERCEPIO_TRACERECORDER) #include "tracing_tracerecorder.h" #else diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/tracing/tracing_macros.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/tracing/tracing_macros.h index 80eed3d0..7e6c8d7b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/tracing/tracing_macros.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/tracing/tracing_macros.h @@ -185,12 +185,18 @@ #define sys_port_trace_pm_is_disabled 1 #endif -#if defined(CONFIG_TRACING_NETWORKING) +#if defined(CONFIG_TRACING_NET_SOCKETS) #define sys_port_trace_type_mask_socket(trace_call) trace_call #else #define sys_port_trace_type_mask_socket(trace_call) #endif +#if defined(CONFIG_TRACING_NET_CORE) + #define sys_port_trace_type_mask_net(trace_call) trace_call +#else + #define sys_port_trace_type_mask_net(trace_call) +#endif + /* * We cannot positively enumerate all traced APIs, as applications may trace * arbitrary custom APIs we know nothing about. Therefore we demand that tracing diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/types.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/types.h index 7e5e87b2..145957da 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/types.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/types.h @@ -29,6 +29,24 @@ typedef union { void (*thepfunc)(void); } z_max_align_t; +/* + * Thread local variables are declared with different keywords depending on + * which C/C++ standard that is used. C++11 and C23 uses "thread_local" whilst + * C11 uses "_Thread_local". Previously the GNU "__thread" keyword was used + * which is the same in both gcc and g++. + */ +#ifndef Z_THREAD_LOCAL +#if defined(__cplusplus) && (__cplusplus) >= 201103L /* C++11 */ +#define Z_THREAD_LOCAL thread_local +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__) >= 202311L /* C23 */ +#define Z_THREAD_LOCAL thread_local +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__) >= 201112L /* C11 */ +#define Z_THREAD_LOCAL _Thread_local +#else /* Default back to old behavior which used the GNU keyword. */ +#define Z_THREAD_LOCAL __thread +#endif +#endif /* Z_THREAD_LOCAL */ + #ifdef __cplusplus /* Zephyr requires an int main(void) signature with C linkage for the application main if present */ extern int main(void); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/bos.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/bos.h index f73e7c06..79dd802b 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/bos.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/bos.h @@ -14,6 +14,8 @@ * @brief USB Binary Device Object Store support * @defgroup usb_bos USB BOS support * @ingroup usb + * @since 1.13 + * @version 1.0.0 * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/hid.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/hid.h index b8888068..96bb8271 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/hid.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/hid.h @@ -24,6 +24,8 @@ extern "C" { * @brief hid.h API * @defgroup usb_hid_definitions USB HID common definitions * @ingroup usb + * @since 1.11 + * @version 1.0.0 * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usb_audio.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usb_audio.h index 9062af37..4c1c4db5 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usb_audio.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usb_audio.h @@ -23,7 +23,7 @@ #include #include -#include +#include #include /** Audio Interface Subclass Codes. diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usb_cdc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usb_cdc.h index e0232aa7..06b8d806 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usb_cdc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usb_cdc.h @@ -28,11 +28,13 @@ #define ACM_SUBCLASS 0x02 #define ECM_SUBCLASS 0x06 #define EEM_SUBCLASS 0x0c +#define NCM_SUBCLASS 0x0d /** Communications Class Protocol Codes */ #define AT_CMD_V250_PROTOCOL 0x01 #define EEM_PROTOCOL 0x07 #define ACM_VENDOR_PROTOCOL 0xFF +#define NCM_DATA_PROTOCOL 0x01 /** * @brief Data Class Interface Codes @@ -50,6 +52,7 @@ #define ACM_FUNC_DESC 0x02 #define UNION_FUNC_DESC 0x06 #define ETHERNET_FUNC_DESC 0x0F +#define ETHERNET_FUNC_DESC_NCM 0x1a /** * @brief PSTN Subclass Specific Requests @@ -139,6 +142,22 @@ #define SET_ETHERNET_PACKET_FILTER 0x43 #define GET_ETHERNET_STATISTIC 0x44 +/** + * @brief Class-Specific Request Codes for NCM subclass + * @note NCM100.pdf, 6.2, Table 6-2 + */ +#define GET_NTB_PARAMETERS 0x80 +#define GET_NET_ADDRESS 0x81 +#define SET_NET_ADDRESS 0x82 +#define GET_NTB_FORMAT 0x83 +#define SET_NTB_FORMAT 0x84 +#define GET_NTB_INPUT_SIZE 0x85 +#define SET_NTB_INPUT_SIZE 0x86 +#define GET_MAX_DATAGRAM_SIZE 0x87 +#define SET_MAX_DATAGRAM_SIZE 0x88 +#define GET_CRC_MODE 0x89 +#define SET_CRC_MODE 0x8A + /** Ethernet Packet Filter Bitmap */ #define PACKET_TYPE_MULTICAST 0x10 #define PACKET_TYPE_BROADCAST 0x08 @@ -210,4 +229,13 @@ struct cdc_ecm_descriptor { uint8_t bNumberPowerFilters; } __packed; +/** Ethernet Network Control Model (NCM) Descriptor */ +struct cdc_ncm_descriptor { + uint8_t bFunctionLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubtype; + uint16_t bcdNcmVersion; + uint8_t bmNetworkCapabilities; +} __packed; + #endif /* ZEPHYR_INCLUDE_USB_CLASS_USB_CDC_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usb_hid.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usb_hid.h index f15d0526..39e869fa 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usb_hid.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usb_hid.h @@ -24,6 +24,8 @@ extern "C" { * @brief usb_hid.h API * @defgroup usb_hid_class USB HID class API * @ingroup usb + * @since 1.11 + * @version 1.0.0 * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usbd_hid.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usbd_hid.h index 7e992107..db2d55b6 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usbd_hid.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usbd_hid.h @@ -24,6 +24,8 @@ extern "C" { * @brief USBD HID Device API * @defgroup usbd_hid_device USBD HID device API * @ingroup usb + * @since 3.7 + * @version 0.1.0 * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usbd_msc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usbd_msc.h index 9b0b1322..c38fc5fb 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usbd_msc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usbd_msc.h @@ -27,6 +27,8 @@ struct usbd_msc_lun { * @brief USB Mass Storage Class device API * @defgroup usbd_msc_device USB Mass Storage Class device API * @ingroup usb + * @since 3.4 + * @version 0.1.0 * @{ */ @@ -37,17 +39,18 @@ struct usbd_msc_lun { * Up to `CONFIG_USBD_MSC_LUNS_PER_INSTANCE` disks can be registered on single * USB MSC instance. Currently only one USB MSC instance is supported. * + * @param id Identifier by which the linker sorts registered LUNs * @param disk_name Disk name as used in @ref disk_access_interface * @param t10_vendor T10 Vendor Indetification * @param t10_product T10 Product Identification * @param t10_revision T10 Product Revision Level */ -#define USBD_DEFINE_MSC_LUN(disk_name, t10_vendor, t10_product, t10_revision) \ - STRUCT_SECTION_ITERABLE(usbd_msc_lun, usbd_msc_lun_##disk_name) = { \ - .disk = STRINGIFY(disk_name), \ - .vendor = t10_vendor, \ - .product = t10_product, \ - .revision = t10_revision, \ +#define USBD_DEFINE_MSC_LUN(id, disk_name, t10_vendor, t10_product, t10_revision) \ + static const STRUCT_SECTION_ITERABLE(usbd_msc_lun, usbd_msc_lun_##id) = { \ + .disk = disk_name, \ + .vendor = t10_vendor, \ + .product = t10_product, \ + .revision = t10_revision, \ } /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usbd_uac2.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usbd_uac2.h index 22b599a2..271d9dd0 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usbd_uac2.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/class/usbd_uac2.h @@ -23,6 +23,8 @@ * @brief USB Audio Class 2 device API * @defgroup uac2_device USB Audio Class 2 device API * @ingroup usb + * @since 3.6 + * @version 0.1.0 * @{ */ @@ -123,6 +125,39 @@ struct uac2_ops { */ uint32_t (*feedback_cb)(const struct device *dev, uint8_t terminal, void *user_data); + /** + * @brief Get active sample rate + * + * USB stack calls this function when the host asks for active sample + * rate if the Clock Source entity supports more than one sample rate. + * This function won't ever be called (should be NULL) if all Clock + * Source entities support only one sample rate. + * + * @param dev USB Audio 2 device + * @param clock_id Clock Source ID whose sample rate should be returned + * @param user_data Opaque user data pointer + * + * @return Active sample rate in Hz + */ + uint32_t (*get_sample_rate)(const struct device *dev, uint8_t clock_id, + void *user_data); + /** + * @brief Set active sample rate + * + * USB stack calls this function when the host sets active sample rate. + * This callback may be NULL if all Clock Source entities have only one + * sample rate. USB stack sanitizes the sample rate to closest valid + * rate for given Clock Source entity. + * + * @param dev USB Audio 2 device + * @param clock_id Clock Source ID whose sample rate should be set + * @param rate Sample rate in Hz + * @param user_data Opaque user data pointer + * + * @return 0 on success, negative value on error + */ + int (*set_sample_rate)(const struct device *dev, uint8_t clock_id, + uint32_t rate, void *user_data); }; /** diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/msos_desc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/msos_desc.h index 372c8aa5..895675db 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/msos_desc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/msos_desc.h @@ -99,4 +99,33 @@ struct msosv2_guids_property { 'a', 0x00, 'c', 0x00, 'e', 0x00, 'G', 0x00, 'U', 0x00, 'I', 0x00, \ 'D', 0x00, 's', 0x00, 0x00, 0x00 +/* Microsoft OS 2.0 minimum USB resume time descriptor */ +struct msosv2_resume_time { + uint16_t wLength; + uint16_t wDescriptorType; + uint8_t bResumeRecoveryTime; + uint8_t bResumeSignalingTime; +} __packed; + +/* Microsoft OS 2.0 model ID descriptor */ +struct msosv2_model_id { + uint16_t wLength; + uint16_t wDescriptorType; + uint8_t ModelID[16]; +} __packed; + +/* Microsoft OS 2.0 CCGP device descriptor */ +struct msosv2_ccgp_device { + uint16_t wLength; + uint16_t wDescriptorType; +} __packed; + +/* Microsoft OS 2.0 vendor revision descriptor */ +struct msosv2_vendor_revision { + uint16_t wLength; + uint16_t wDescriptorType; + uint16_t VendorRevision; +} __packed; + + #endif /* ZEPHYR_INCLUDE_USB_MSOS_DESC_H */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usb_ch9.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usb_ch9.h index dccc7445..3f1ad5b8 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usb_ch9.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usb_ch9.h @@ -283,7 +283,12 @@ struct usb_association_descriptor { /** Macro to obtain descriptor index from USB_SREQ_GET_DESCRIPTOR request */ #define USB_GET_DESCRIPTOR_INDEX(wValue) ((uint8_t)(wValue)) -/** USB Control Endpoints maximum packet size (MPS) */ +/** + * USB Control Endpoints maximum packet size (MPS) + * + * This value may not be correct for devices operating at speeds other than + * high speed. + */ #define USB_CONTROL_EP_MPS 64U /** USB endpoint direction mask */ @@ -348,6 +353,35 @@ struct usb_association_descriptor { /** Calculate high speed isochronous endpoint bInterval from a value in microseconds */ #define USB_HS_ISO_EP_INTERVAL(us) CLAMP((ilog2((us) / 125U) + 1U), 1U, 16U) +/** Get endpoint size field from Max Packet Size value */ +#define USB_MPS_EP_SIZE(mps) ((mps) & BIT_MASK(11)) + +/** Get number of additional transactions per microframe from Max Packet Size value */ +#define USB_MPS_ADDITIONAL_TRANSACTIONS(mps) (((mps) & 0x1800) >> 11) + +/** Calculate total payload length from Max Packet Size value */ +#define USB_MPS_TO_TPL(mps) \ + ((1 + USB_MPS_ADDITIONAL_TRANSACTIONS(mps)) * USB_MPS_EP_SIZE(mps)) + +/** Calculate Max Packet Size value from total payload length */ +#define USB_TPL_TO_MPS(tpl) \ + (((tpl) > 2048) ? ((2 << 11) | ((tpl) / 3)) : \ + ((tpl) > 1024) ? ((1 << 11) | ((tpl) / 2)) : \ + (tpl)) + +/** Round up total payload length to next valid value */ +#define USB_TPL_ROUND_UP(tpl) \ + (((tpl) > 2048) ? ROUND_UP(tpl, 3) : \ + ((tpl) > 1024) ? ROUND_UP(tpl, 2) : \ + (tpl)) + +/** Determine whether total payload length value is valid according to USB 2.0 */ +#define USB_TPL_IS_VALID(tpl) \ + (((tpl) > 3072) ? false : \ + ((tpl) > 2048) ? ((tpl) % 3 == 0) : \ + ((tpl) > 1024) ? ((tpl) % 2 == 0) : \ + ((tpl) >= 0)) + #ifdef __cplusplus } #endif diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usb_device.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usb_device.h index 59c3db1c..e596555e 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usb_device.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usb_device.h @@ -92,6 +92,8 @@ extern "C" { /** * @brief USB Device Core Layer API * @defgroup _usb_device_core_api USB Device Core API + * @since 1.5 + * @version 1.0.0 * @{ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usbd.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usbd.h index 77784ac1..b588d708 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usbd.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usbd.h @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include @@ -32,6 +32,8 @@ extern "C" { * @brief New USB device stack core API * @defgroup usbd_api USB device core API * @ingroup usb + * @since 3.3 + * @version 0.1.0 * @{ */ @@ -59,6 +61,8 @@ extern "C" { */ #define USB_STRING_DESCRIPTOR_LENGTH(s) (sizeof(s) * 2) +struct usbd_context; + /** Used internally to keep descriptors in order * @cond INTERNAL_HIDDEN */ @@ -67,11 +71,13 @@ enum usbd_str_desc_utype { USBD_DUT_STRING_MANUFACTURER, USBD_DUT_STRING_PRODUCT, USBD_DUT_STRING_SERIAL_NUMBER, + USBD_DUT_STRING_CONFIG, USBD_DUT_STRING_INTERFACE, }; enum usbd_bos_desc_utype { USBD_DUT_BOS_NONE, + USBD_DUT_BOS_VREQ, }; /** @endcond */ @@ -89,12 +95,63 @@ struct usbd_str_desc_data { unsigned int use_hwinfo : 1; }; +/** + * USBD vendor request node + * + * Vendor request node is identified by the vendor code and is used to register + * callbacks to handle the vendor request with the receiving device. + * When the device stack receives a request with type Vendor and recipient + * Device, and bRequest value equal to the vendor request code, it will call + * the vendor callbacks depending on the direction of the request. + * + * Example callback code fragment: + * + * @code{.c} + * static int foo_to_host_cb(const struct usbd_context *const ctx, + * const struct usb_setup_packet *const setup, + * struct net_buf *const buf) + * { + * if (setup->wIndex == WEBUSB_REQ_GET_URL) { + * uint8_t index = USB_GET_DESCRIPTOR_INDEX(setup->wValue); + * + * if (index != SAMPLE_WEBUSB_LANDING_PAGE) { + * return -ENOTSUP; + * } + * + * net_buf_add_mem(buf, &webusb_origin_url, + * MIN(net_buf_tailroom(buf), sizeof(webusb_origin_url))); + * + * return 0; + * } + * + * return -ENOTSUP; + * } + * @endcode + */ +struct usbd_vreq_node { + /** Node information for the dlist */ + sys_dnode_t node; + /** Vendor code (bRequest value) */ + const uint8_t code; + /** Vendor request callback for device-to-host direction */ + int (*to_host)(const struct usbd_context *const ctx, + const struct usb_setup_packet *const setup, + struct net_buf *const buf); + /** Vendor request callback for host-to-device direction */ + int (*to_dev)(const struct usbd_context *const ctx, + const struct usb_setup_packet *const setup, + const struct net_buf *const buf); +}; + /** * USBD BOS Device Capability descriptor data */ struct usbd_bos_desc_data { /** Descriptor usage type (not bDescriptorType) */ enum usbd_bos_desc_utype utype : 8; + union { + struct usbd_vreq_node *const vreq_nd; + }; }; /** @@ -131,6 +188,8 @@ struct usbd_config_node { sys_snode_t node; /** Pointer to configuration descriptor */ void *desc; + /** Optional pointer to string descriptor node */ + struct usbd_desc_node *str_desc_nd; /** List of registered classes (functions) */ sys_slist_t class_list; }; @@ -199,8 +258,6 @@ struct usbd_status { enum usbd_speed speed : 2; }; -struct usbd_context; - /** * @brief Callback type definition for USB device message delivery * @@ -238,6 +295,8 @@ struct usbd_context { sys_slist_t fs_configs; /** slist to manage High-Speed device configurations */ sys_slist_t hs_configs; + /** dlist to manage vendor requests with recipient device */ + sys_dlist_t vreqs; /** Status of the USB device support */ struct usbd_status status; /** Pointer to Full-Speed device descriptor */ @@ -463,8 +522,11 @@ static inline void *usbd_class_get_private(const struct usbd_class_data *const c * with usbd_config_attrib_rwup() and usbd_config_attrib_self() * @param power bMaxPower value in 2 mA units. This value can also be set with * usbd_config_maxpower() + * @param desc_nd Address of the string descriptor node used to describe the + * configuration, see USBD_DESC_CONFIG_DEFINE(). + * String descriptors are optional and the parameter can be NULL. */ -#define USBD_CONFIGURATION_DEFINE(name, attrib, power) \ +#define USBD_CONFIGURATION_DEFINE(name, attrib, power, desc_nd) \ static struct usb_cfg_descriptor \ cfg_desc_##name = { \ .bLength = sizeof(struct usb_cfg_descriptor), \ @@ -479,6 +541,7 @@ static inline void *usbd_class_get_private(const struct usbd_class_data *const c BUILD_ASSERT((power) < 256, "Too much power"); \ static struct usbd_config_node name = { \ .desc = &cfg_desc_##name, \ + .str_desc_nd = desc_nd, \ } /** @@ -497,13 +560,13 @@ static inline void *usbd_class_get_private(const struct usbd_class_data *const c #define USBD_DESC_LANG_DEFINE(name) \ static uint16_t langid_##name = sys_cpu_to_le16(0x0409); \ static struct usbd_desc_node name = { \ - .bLength = sizeof(struct usb_string_descriptor), \ - .bDescriptorType = USB_DESC_STRING, \ .str = { \ .idx = 0, \ .utype = USBD_DUT_STRING_LANG, \ }, \ .ptr = &langid_##name, \ + .bLength = sizeof(struct usb_string_descriptor), \ + .bDescriptorType = USB_DESC_STRING, \ } /** @@ -524,9 +587,9 @@ static inline void *usbd_class_get_private(const struct usbd_class_data *const c .utype = d_utype, \ .ascii7 = true, \ }, \ + .ptr = &ascii_##d_name, \ .bLength = USB_STRING_DESCRIPTOR_LENGTH(d_string), \ .bDescriptorType = USB_DESC_STRING, \ - .ptr = &ascii_##d_name, \ } /** @@ -577,6 +640,18 @@ static inline void *usbd_class_get_private(const struct usbd_class_data *const c .bDescriptorType = USB_DESC_STRING, \ } +/** + * @brief Create a string descriptor node for configuration descriptor + * + * This macro defines a descriptor node whose address can be used as an + * argument for the USBD_CONFIGURATION_DEFINE() macro. + * + * @param d_name String descriptor node identifier. + * @param d_string ASCII7 encoded configuration description string literal + */ +#define USBD_DESC_CONFIG_DEFINE(d_name, d_string) \ + USBD_DESC_STRING_DEFINE(d_name, d_string, USBD_DUT_STRING_CONFIG) + /** * @brief Define BOS Device Capability descriptor node * @@ -597,6 +672,49 @@ static inline void *usbd_class_get_private(const struct usbd_class_data *const c .bDescriptorType = USB_DESC_BOS, \ } +/** + * @brief Define a vendor request with recipient device + * + * @param name Vendor request identifier + * @param vcode Vendor request code + * @param vto_host Vendor callback for to-host direction request + * @param vto_dev Vendor callback for to-device direction request + */ +#define USBD_VREQUEST_DEFINE(name, vcode, vto_host, vto_dev) \ + static struct usbd_vreq_node name = { \ + .code = vcode, \ + .to_host = vto_host, \ + .to_dev = vto_dev, \ + } + +/** + * @brief Define BOS Device Capability descriptor node with vendor request + * + * This macro defines a BOS descriptor, usually a platform capability, with a + * vendor request node. + * + * USBD_DESC_BOS_VREQ_DEFINE(bos_vreq_webusb, sizeof(bos_cap_webusb), &bos_cap_webusb, + * SAMPLE_WEBUSB_VENDOR_CODE, webusb_to_host_cb, NULL); + * + * @param name Descriptor node identifier + * @param len Device Capability descriptor length + * @param subset Pointer to a Device Capability descriptor + * @param vcode Vendor request code + * @param vto_host Vendor callback for to-host direction request + * @param vto_dev Vendor callback for to-device direction request + */ +#define USBD_DESC_BOS_VREQ_DEFINE(name, len, subset, vcode, vto_host, vto_dev) \ + USBD_VREQUEST_DEFINE(vreq_nd_##name, vcode, vto_host, vto_dev); \ + static struct usbd_desc_node name = { \ + .bos = { \ + .utype = USBD_DUT_BOS_VREQ, \ + .vreq_nd = &vreq_nd_##name, \ + }, \ + .ptr = subset, \ + .bLength = len, \ + .bDescriptorType = USB_DESC_BOS, \ + } + /** * @brief Define USB device support class data * @@ -959,8 +1077,8 @@ enum usbd_speed usbd_caps_speed(const struct usbd_context *const uds_ctx); * * @return 0 on success, other values on fail. */ -int usbd_device_set_bcd(struct usbd_context *const uds_ctx, - const enum usbd_speed speed, const uint16_t bcd); +int usbd_device_set_bcd_usb(struct usbd_context *const uds_ctx, + const enum usbd_speed speed, const uint16_t bcd); /** * @brief Set USB device descriptor value idVendor @@ -984,6 +1102,17 @@ int usbd_device_set_vid(struct usbd_context *const uds_ctx, int usbd_device_set_pid(struct usbd_context *const uds_ctx, const uint16_t pid); +/** + * @brief Set USB device descriptor value bcdDevice + * + * @param[in] uds_ctx Pointer to USB device support context + * @param[in] bcd bcdDevice value + * + * @return 0 on success, other values on fail. + */ +int usbd_device_set_bcd_device(struct usbd_context *const uds_ctx, + const uint16_t bcd); + /** * @brief Set USB device descriptor code triple Base Class, SubClass, and Protocol * @@ -1056,6 +1185,20 @@ int usbd_config_maxpower(struct usbd_context *const uds_ctx, */ bool usbd_can_detect_vbus(struct usbd_context *const uds_ctx); +/** + * @brief Register an USB vendor request with recipient device + * + * The vendor request with the recipient device applies to all configurations + * within the device. + * + * @param[in] uds_ctx Pointer to USB device support context + * @param[in] vreq_nd Pointer to vendor request node + * + * @return 0 on success, other values on fail. + */ +int usbd_device_register_vreq(struct usbd_context *const uds_ctx, + struct usbd_vreq_node *const vreq_nd); + /** * @} */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usbd_msg.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usbd_msg.h index 13d0f01e..b9e99d00 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usbd_msg.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usbd_msg.h @@ -21,6 +21,8 @@ extern "C" { /** * @defgroup usbd_msg_api USB device core API * @ingroup usb + * @since 3.7 + * @version 0.1.0 * @{ */ @@ -40,6 +42,8 @@ enum usbd_msg_type { USBD_MSG_SUSPEND, /** Bus reset detected */ USBD_MSG_RESET, + /** Device changed configuration */ + USBD_MSG_CONFIGURATION, /** Non-correctable UDC error message */ USBD_MSG_UDC_ERROR, /** Unrecoverable device stack error message */ @@ -61,6 +65,7 @@ static const char *const usbd_msg_type_list[] = { "Device resumed", "Device suspended", "Bus reset", + "New device configuration", "Controller error", "Stack error", "CDC ACM line coding", diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usbh.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usbh.h index 66ba4307..869f3007 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usbh.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb/usbh.h @@ -16,7 +16,7 @@ #include #include -#include +#include #include #include #include diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb_c/tcpci.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb_c/tcpci.h new file mode 100644 index 00000000..ff36219d --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/usb_c/tcpci.h @@ -0,0 +1,788 @@ +/* + * Copyright 2024 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_INCLUDE_USB_C_TCPCI_H_ +#define ZEPHYR_INCLUDE_USB_C_TCPCI_H_ + +/** + * @file + * @brief Registers and fields definitions for TypeC Port Controller Interface + * + * This file contains register addresses, fields and masks used to retrieve specific data from + * registry values. They may be used by all TCPC drivers compliant to the TCPCI specification. + * Registers and fields are compliant to the Type-C Port Controller Interface + * Specification Revision 2.0, Version 1.3. + */ + +/** Register address - vendor id */ +#define TCPC_REG_VENDOR_ID 0x0 + +/** Register address - product id */ +#define TCPC_REG_PRODUCT_ID 0x2 + +/** Register address - version of TCPC */ +#define TCPC_REG_BCD_DEV 0x4 + +/** Register address - USB TypeC version */ +#define TCPC_REG_TC_REV 0x6 +/** Mask for major part of type-c release supported */ +#define TCPC_REG_TC_REV_MAJOR_MASK GENMASK(7, 4) +/** Macro to extract the major part of type-c release supported */ +#define TCPC_REG_TC_REV_MAJOR(reg) (((reg) & TCPC_REG_TC_REV_MAJOR_MASK) >> 4) +/** Mask for minor part of type-c release supported */ +#define TCPC_REG_TC_REV_MINOR_MASK GENMASK(3, 0) +/** Macro to extract the minor part of type-c release supported */ +#define TCPC_REG_TC_REV_MINOR(reg) ((reg) & TCPC_REG_TC_REV_MINOR_MASK) + +/** Register address - Power delivery revision */ +#define TCPC_REG_PD_REV 0x8 +/** Mask for major part of USB PD revision supported */ +#define TCPC_REG_PD_REV_REV_MAJOR_MASK GENMASK(15, 12) +/** Macro to extract the major part of USB PD revision supported */ +#define TCPC_REG_PD_REV_REV_MAJOR(reg) (((reg) & TCPC_REG_PD_REV_VER_REV_MAJOR_MASK) >> 12) +/** Mask for minor part of USB PD revision supported */ +#define TCPC_REG_PD_REV_REV_MINOR_MASK GENMASK(11, 8) +/** Macro to extract the minor part of USB PD revision supported */ +#define TCPC_REG_PD_REV_REV_MINOR(reg) (((reg) & TCPC_REG_PD_REV_VER_REV_MINOR_MASK) >> 8) +/** Mask for major part of USB PD version supported */ +#define TCPC_REG_PD_REV_VER_MAJOR_MASK GENMASK(7, 4) +/** Macro to extract the major part of USB PD version supported */ +#define TCPC_REG_PD_REV_VER_MAJOR(reg) (((reg) & TCPC_REG_PD_REV_VER_VER_MAJOR_MASK) >> 4) +/** Mask for minor part of USB PD version supported */ +#define TCPC_REG_PD_REV_VER_MINOR_MASK GENMASK(3, 0) +/** Macro to extract the minor part of USB PD version supported */ +#define TCPC_REG_PD_REV_VER_MINOR(reg) ((reg) & TCPC_REG_PD_REV_VER_VER_MINOR_MASK) + +/** Register address - interface revision and version */ +#define TCPC_REG_PD_INT_REV 0xa +/** Mask for major part of USB Port Controller Interface revision supported */ +#define TCPC_REG_PD_INT_REV_REV_MAJOR_MASK GENMASK(15, 12) +/** Macro to extract the major part of USB Port Controller Interface revision supported */ +#define TCPC_REG_PD_INT_REV_REV_MAJOR(reg) (((reg) & TCPC_REG_PD_REV_VER_REV_MAJOR_MASK) >> 12) +/** Mask for minor part of USB Port Controller Interface revision supported */ +#define TCPC_REG_PD_INT_REV_REV_MINOR_MASK GENMASK(11, 8) +/** Macro to extract the minor part of USB Port Controller Interface revision supported */ +#define TCPC_REG_PD_INT_REV_REV_MINOR(reg) (((reg) & TCPC_REG_PD_REV_VER_REV_MINOR_MASK) >> 8) +/** Mask for major part of USB Port Controller Interface version supported */ +#define TCPC_REG_PD_INT_REV_VER_MAJOR_MASK GENMASK(7, 4) +/** Macro to extract the major part of USB Port Controller Interface version supported */ +#define TCPC_REG_PD_INT_REV_VER_MAJOR(reg) (((reg) & TCPC_REG_PD_REV_VER_VER_MAJOR_MASK) >> 4) +/** Mask for minor part of USB Port Controller Interface version supported */ +#define TCPC_REG_PD_INT_REV_VER_MINOR_MASK GENMASK(3, 0) +/** Macro to extract the minor part of USB Port Controller Interface version supported */ +#define TCPC_REG_PD_INT_REV_VER_MINOR(reg) ((reg) & TCPC_REG_PD_REV_VER_VER_MINOR_MASK) + +/** Register address - alert */ +#define TCPC_REG_ALERT 0x10 +/** Value for clear alert */ +#define TCPC_REG_ALERT_NONE 0x0000 +/** Value mask for all alert bits */ +#define TCPC_REG_ALERT_MASK_ALL 0xffff +/** Bit for vendor defined alert */ +#define TCPC_REG_ALERT_VENDOR_DEF BIT(15) +/** Bit for extended alert */ +#define TCPC_REG_ALERT_ALERT_EXT BIT(14) +/** Bit for extended status alert */ +#define TCPC_REG_ALERT_EXT_STATUS BIT(13) +/** Bit for beginning of data receive */ +#define TCPC_REG_ALERT_RX_BEGINNING BIT(12) +/** Bit for vbus disconnection alert */ +#define TCPC_REG_ALERT_VBUS_DISCNCT BIT(11) +/** Bit for receive buffer overflow alert */ +#define TCPC_REG_ALERT_RX_BUF_OVF BIT(10) +/** Bit for fault alert */ +#define TCPC_REG_ALERT_FAULT BIT(9) +/** Bit for low vbus alarm */ +#define TCPC_REG_ALERT_V_ALARM_LO BIT(8) +/** Bit for high vbus alarm */ +#define TCPC_REG_ALERT_V_ALARM_HI BIT(7) +/** Bit for transmission success */ +#define TCPC_REG_ALERT_TX_SUCCESS BIT(6) +/** Bit for transmission discard alert */ +#define TCPC_REG_ALERT_TX_DISCARDED BIT(5) +/** Bit for transmission fail alert */ +#define TCPC_REG_ALERT_TX_FAILED BIT(4) +/** Bit for received hard reset alert */ +#define TCPC_REG_ALERT_RX_HARD_RST BIT(3) +/** Bit for data received alert */ +#define TCPC_REG_ALERT_RX_STATUS BIT(2) +/** Bit for power status alert */ +#define TCPC_REG_ALERT_POWER_STATUS BIT(1) +/** Bit for CC lines status alert */ +#define TCPC_REG_ALERT_CC_STATUS BIT(0) +/** Bits for any of transmission status alert */ +#define TCPC_REG_ALERT_TX_COMPLETE \ + (TCPC_REG_ALERT_TX_SUCCESS | TCPC_REG_ALERT_TX_DISCARDED | TCPC_REG_ALERT_TX_FAILED) + +/** + * Register address - alert mask + * The bits for specific masks are on the same positions as for the @see TCPC_REG_ALERT register. + */ +#define TCPC_REG_ALERT_MASK 0x12 + +/** + * Register address - power status mask + * The bits for specific masks are on the same positions as for the @see TCPC_REG_POWER_STATUS + * register. + */ +#define TCPC_REG_POWER_STATUS_MASK 0x14 + +/** + * Register address - fault status mask + * The bits for specific masks are on the same positions as for the @see TCPC_REG_FAULT_STATUS + * register. + */ +#define TCPC_REG_FAULT_STATUS_MASK 0x15 + +/** + * Register address - extended status mask + * The bits for specific masks are on the same positions as for the @see TCPC_REG_EXT_STATUS + * register. + */ +#define TCPC_REG_EXT_STATUS_MASK 0x16 + +/** + * Register address - extended alert mask + * The bits for specific masks are on the same positions as for the @see TCPC_REG_ALERT_EXT + * register. + */ +#define TCPC_REG_ALERT_EXT_MASK 0x17 + +/** Register address - configure standard output */ +#define TCPC_REG_CONFIG_STD_OUTPUT 0x18 +/** Bit for high impedance outputs */ +#define TCPC_REG_CONFIG_STD_OUTPUT_HIGH_Z BIT(7) +/** Bit for debug accessory connected# */ +#define TCPC_REG_CONFIG_STD_OUTPUT_DBG_ACC_CONN_N BIT(6) +/** Bit for audio accessory connected# */ +#define TCPC_REG_CONFIG_STD_OUTPUT_AUDIO_CONN_N BIT(5) +/** Bit for active cable */ +#define TCPC_REG_CONFIG_STD_OUTPUT_ACTIVE_CABLE BIT(4) +/** Value mask for mux control */ +#define TCPC_REG_CONFIG_STD_OUTPUT_MUX_MASK (3 << 2) +/** Value for mux - no connection */ +#define TCPC_REG_CONFIG_STD_OUTPUT_MUX_NONE (0 << 2) +/** Value for mux - USB3.1 connected */ +#define TCPC_REG_CONFIG_STD_OUTPUT_MUX_USB (1 << 2) +/** Value for mux - DP alternate mode with 4 lanes */ +#define TCPC_REG_CONFIG_STD_OUTPUT_MUX_DP (2 << 2) +/** Value for mux - USB3.1 + DP 0&1 lines */ +#define TCPC_REG_CONFIG_STD_OUTPUT_MUX_USB_DP (3 << 2) +/** Bit for connection present */ +#define TCPC_REG_CONFIG_STD_OUTPUT_CONN_PRESENT BIT(1) +/** Bit for connector orientation */ +#define TCPC_REG_CONFIG_STD_OUTPUT_CONNECTOR_FLIPPED BIT(0) + +/** Register address - TCPC control */ +#define TCPC_REG_TCPC_CTRL 0x19 +/** Bit for SMBus PEC enabled */ +#define TCPC_REG_TCPC_CTRL_SMBUS_PEC BIT(7) +/** Bit for enabling the alert assertion when a connection is found */ +#define TCPC_REG_TCPC_CTRL_EN_LOOK4CONNECTION_ALERT BIT(6) +/** Bit for watchdog monitoring */ +#define TCPC_REG_TCPC_CTRL_WATCHDOG_TIMER BIT(5) +/** Bit for enable debug accessory control by TCPM */ +#define TCPC_REG_TCPC_CTRL_DEBUG_ACC_CONTROL BIT(4) +/** Mask*/ +#define TCPC_REG_TCPC_CTRL_CLOCK_STRETCH_MASK GENMASK(3, 2) +/** Value for clock stretching disabled */ +#define TCPC_REG_TCPC_CTRL_CLOCK_STRETCH_DISABLED 0 +/** Value for limited clock stretching enabled */ +#define TCPC_REG_TCPC_CTRL_CLOCK_STRETCH_EN_ALWAYS (2 << 2) +/** Value for clock stretching enabled only when alert is NOT asserted */ +#define TCPC_REG_TCPC_CTRL_CLOCK_STRETCH_EN_NO_ALERT (3 << 2) +/** Bit for BIST test mode enabled */ +#define TCPC_REG_TCPC_CTRL_BIST_TEST_MODE BIT(1) +/** Bit for plug orientation and vconn destination */ +#define TCPC_REG_TCPC_CTRL_PLUG_ORIENTATION BIT(0) + +/** Register address - role control */ +#define TCPC_REG_ROLE_CTRL 0x1a +/** Bit for dual-role port */ +#define TCPC_REG_ROLE_CTRL_DRP_MASK BIT(6) +/** Mask to extract the RP value from register value */ +#define TCPC_REG_ROLE_CTRL_RP_MASK GENMASK(5, 4) +/** Mask to extract the CC2 pull value from register value */ +#define TCPC_REG_ROLE_CTRL_CC2_MASK GENMASK(3, 2) +/** Mask to extract the CC! pull value from register value */ +#define TCPC_REG_ROLE_CTRL_CC1_MASK GENMASK(1, 0) +/** Macro to set the register value from drp, rp and CC lines values */ +#define TCPC_REG_ROLE_CTRL_SET(drp, rp, cc1, cc2) \ + ((((drp) << 6) & TCPC_REG_ROLE_CTRL_DRP_MASK) | \ + (((rp) << 4) & TCPC_REG_ROLE_CTRL_RP_MASK) | \ + (((cc2) << 2) & TCPC_REG_ROLE_CTRL_CC2_MASK) | ((cc1) & TCPC_REG_ROLE_CTRL_CC1_MASK)) +#define TCPC_REG_ROLE_CTRL_DRP(reg) (((reg) & TCPC_REG_ROLE_CTRL_DRP_MASK) >> 6) +/** Macro to extract the enum tc_rp_value from register value */ +#define TCPC_REG_ROLE_CTRL_RP(reg) (((reg) & TCPC_REG_ROLE_CTRL_RP_MASK) >> 4) +/** Macro to extract the enum tc_cc_pull for CC2 from register value */ +#define TCPC_REG_ROLE_CTRL_CC2(reg) (((reg) & TCPC_REG_ROLE_CTRL_CC2_MASK) >> 2) +/** Macro to extract the enum tc_cc_pull for CC1 from register value */ +#define TCPC_REG_ROLE_CTRL_CC1(reg) ((reg) & TCPC_REG_ROLE_CTRL_CC1_MASK) + +/** Register address - fault control */ +#define TCPC_REG_FAULT_CTRL 0x1b +/** Bit for block the standard input signal force off vbus control */ +#define TCPC_REG_FAULT_CTRL_VBUS_FORCE_OFF BIT(4) +/** Bit for disabling the vbus discharge fault detection timer */ +#define TCPC_REG_FAULT_CTRL_VBUS_DISCHARGE_FAULT BIT(3) +/** Bit for disabling the vbus over current detection */ +#define TCPC_REG_FAULT_CTRL_VBUS_OCP_FAULT_DIS BIT(2) +/** Bit for disabling the vbus over voltage detection */ +#define TCPC_REG_FAULT_CTRL_VBUS_OVP_FAULT_DIS BIT(1) +/** Bit for disabling the vconn over current detection */ +#define TCPC_REG_FAULT_CTRL_VCONN_OCP_FAULT_DIS BIT(0) + +/** Register address - power control */ +#define TCPC_REG_POWER_CTRL 0x1c +/** Bit for fast role swap enable */ +#define TCPC_REG_POWER_CTRL_FRS_ENABLE BIT(7) +/** Bit for disabling the vbus voltage monitoring */ +#define TCPC_REG_POWER_CTRL_VBUS_VOL_MONITOR_DIS BIT(6) +/** Bit for disabling the voltage alarms */ +#define TCPC_REG_POWER_CTRL_VOLT_ALARM_DIS BIT(5) +/** Bit for enabling the automatic vbus discharge based on the vbus voltage */ +#define TCPC_REG_POWER_CTRL_AUTO_DISCHARGE_DISCONNECT BIT(4) +/** Bit for enabling the bleed discharge of vbus */ +#define TCPC_REG_POWER_CTRL_BLEED_DISCHARGE BIT(3) +/** Bit for enabling the forced vbus discharge */ +#define TCPC_REG_POWER_CTRL_FORCE_DISCHARGE BIT(2) +/** + * Bit for enabling the vconn power supported. + * If set, the TCPC will deliver at least the power indicated in the vconn power supported in + * device capabilities register to the vconn. + * If unset, at least 1W of power will be delivered to vconn. + */ +#define TCPC_REG_POWER_CTRL_VCONN_SUPP BIT(1) +/** Bit for enabling the vconn sourcing to CC line */ +#define TCPC_REG_POWER_CTRL_VCONN_EN BIT(0) + +/** Register address - CC lines status */ +#define TCPC_REG_CC_STATUS 0x1d +/** Bit for active looking for a connection by TCPC, both DRP and sink/source only */ +#define TCPC_REG_CC_STATUS_LOOK4CONNECTION BIT(5) +/** Bit for connection result, set if presenting Rd, unset if presenting Rp*/ +#define TCPC_REG_CC_STATUS_CONNECT_RESULT BIT(4) +/** Mask for CC2 line state */ +#define TCPC_REG_CC_STATUS_CC2_STATE_MASK GENMASK(3, 2) +/** + * Macro to extract the status value of CC2 line. Interpretation of this value depends on the + * value of CC2 configuration in Role Control register and on the connect result in this register. + * For value interpretation look at the CC_STATUS Register Definition in the TCPCI specification. + */ +#define TCPC_REG_CC_STATUS_CC2_STATE(reg) (((reg) & TCPC_REG_CC_STATUS_CC2_STATE_MASK) >> 2) +/** Mask for CC1 line state */ +#define TCPC_REG_CC_STATUS_CC1_STATE_MASK GENMASK(1, 0) +/** Macto to extract the status value of CC1 line. Look at the information about the CC2 macro. */ +#define TCPC_REG_CC_STATUS_CC1_STATE(reg) ((reg) & TCPC_REG_CC_STATUS_CC1_STATE_MASK) + +/** Register address - power status */ +#define TCPC_REG_POWER_STATUS 0x1e +/** Bit for debug accessory connected */ +#define TCPC_REG_POWER_STATUS_DEBUG_ACC_CON BIT(7) +/** Bit for internal initialization in-progress. If set, only registers 00-0F contain valid data. */ +#define TCPC_REG_POWER_STATUS_UNINIT BIT(6) +/** Bit for sourcing high voltage. If set, the voltage sourced is above the vSafe5V. */ +#define TCPC_REG_POWER_STATUS_SOURCING_HV BIT(5) +/** Bit for sourcing vbus. If set, sourcing vbus is enabled. */ +#define TCPC_REG_POWER_STATUS_SOURCING_VBUS BIT(4) +/** Bit for vbus detection enabled. */ +#define TCPC_REG_POWER_STATUS_VBUS_DET BIT(3) +/** + * Bit for vbus present. + * If set, the vbus shall be above 4V. If unset, the vbus shall be below 3.5V. + */ +#define TCPC_REG_POWER_STATUS_VBUS_PRES BIT(2) +/** Bit for vconn present. Set if vconn is present on CC1 or CC2, threshold is fixed at 2.4V. */ +#define TCPC_REG_POWER_STATUS_VCONN_PRES BIT(1) +/** Bit for sinking vbus. If set, the TCPC is sinking vbus to the system load. */ +#define TCPC_REG_POWER_STATUS_SINKING_VBUS BIT(0) + +/** Register address - fault status */ +#define TCPC_REG_FAULT_STATUS 0x1f +/** Bit for all registers reset to default */ +#define TCPC_REG_FAULT_STATUS_ALL_REGS_RESET BIT(7) +/** Bit for force vbus off due to external fault */ +#define TCPC_REG_FAULT_STATUS_FORCE_OFF_VBUS BIT(6) +/** Bit for auto discharge failed */ +#define TCPC_REG_FAULT_STATUS_AUTO_DISCHARGE_FAIL BIT(5) +/** Bit for force discharge failed */ +#define TCPC_REG_FAULT_STATUS_FORCE_DISCHARGE_FAIL BIT(4) +/** Bit for internal or external vbus over current */ +#define TCPC_REG_FAULT_STATUS_VBUS_OVER_CURRENT BIT(3) +/** Bit for internal or external vbus over voltage */ +#define TCPC_REG_FAULT_STATUS_VBUS_OVER_VOLTAGE BIT(2) +/** Bit for vconn over current */ +#define TCPC_REG_FAULT_STATUS_VCONN_OVER_CURRENT BIT(1) +/** Bit for I2C interface error */ +#define TCPC_REG_FAULT_STATUS_I2C_INTERFACE_ERR BIT(0) + +/** Register address - extended status */ +#define TCPC_REG_EXT_STATUS 0x20 +/** Bit for vbus at vSafe0V. Set when the TCPC detects that VBUS is below 0.8V. */ +#define TCPC_REG_EXT_STATUS_SAFE0V BIT(0) + +/** Register address - alert extended */ +#define TCPC_REG_ALERT_EXT 0x21 +/** Bit for timer expired */ +#define TCPC_REG_ALERT_EXT_TIMER_EXPIRED BIT(2) +/** Bit for source fast role swap. Set when FRS signal sent due to standard input being low. */ +#define TCPC_REG_ALERT_EXT_SRC_FRS BIT(1) +/** Bit for sink fast role swap. If set, the fast role swap signal was received. */ +#define TCPC_REG_ALERT_EXT_SNK_FRS BIT(0) + +/** Register address - command */ +#define TCPC_REG_COMMAND 0x23 +/** Value for wake i2c command */ +#define TCPC_REG_COMMAND_WAKE_I2C 0x11 +/** Value for disable vbus detect command - disable vbus present and vSafe0V detection */ +#define TCPC_REG_COMMAND_DISABLE_VBUS_DETECT 0x22 +/** Value for enable vbus detect command - enable vbus present and vSafe0V detection */ +#define TCPC_REG_COMMAND_ENABLE_VBUS_DETECT 0x33 +/** Value for disable sink vbus - disable sinking power over vbus */ +#define TCPC_REG_COMMAND_SNK_CTRL_LOW 0x44 +/** Value for sink vbus - enable sinking power over vbus and vbus present detection */ +#define TCPC_REG_COMMAND_SNK_CTRL_HIGH 0x55 +/** Value for disable source vbus - disable sourcing power over vbus */ +#define TCPC_REG_COMMAND_SRC_CTRL_LOW 0x66 +/** Value for source vbus default voltage - enable sourcing vSafe5V over vbus */ +#define TCPC_REG_COMMAND_SRC_CTRL_DEF 0x77 +/** Value for source vbus high voltage - enable sourcing high voltage over vbus */ +#define TCPC_REG_COMMAND_SRC_CTRL_HV 0x88 +/** Value for look for connection - start DRP toggling if DRP role is set */ +#define TCPC_REG_COMMAND_LOOK4CONNECTION 0x99 +/** + * Value for rx one more + * Configure receiver to automatically clear the receive_detect register after sending next GoodCRC. + */ +#define TCPC_REG_COMMAND_RX_ONE_MORE 0xAA +/** + * Value for send fast role swap signal + * Send FRS if TCPC is source with FRS enabled in power control register + */ +#define TCPC_REG_COMMAND_SEND_FRS_SIGNAL 0xCC +/** Value for reset transmit buffer - TCPC resets the pointer of transmit buffer to offset 1 */ +#define TCPC_REG_COMMAND_RESET_TRANSMIT_BUF 0xDD +/** + * Value for reset receive buffer + * If buffer pointer is at 132 or less, it is reset to 1, otherwise it is reset to 133. + */ +#define TCPC_REG_COMMAND_RESET_RECEIVE_BUF 0xEE +/** Value for i2c idle */ +#define TCPC_REG_COMMAND_I2CIDLE 0xFF + +/** Register address - device capabilities 1 */ +#define TCPC_REG_DEV_CAP_1 0x24 +/** Bit for vbus high voltage target - if set, VBUS_HV_TARGET register is implemented */ +#define TCPC_REG_DEV_CAP_1_VBUS_NONDEFAULT_TARGET BIT(15) +/** Bit for vbus over current reporting - if set, vbus over current is reported by TCPC */ +#define TCPC_REG_DEV_CAP_1_VBUS_OCP_REPORTING BIT(14) +/** Bit for vbus over voltage reporting - if set, vbus over voltage is reported by TCPC */ +#define TCPC_REG_DEV_CAP_1_VBUS_OVP_REPORTING BIT(13) +/** Bit for bleed discharge - if set, bleed discharge is implemented in TCPC */ +#define TCPC_REG_DEV_CAP_1_BLEED_DISCHARGE BIT(12) +/** Bit for force discharge - if set, force discharge is implemented in TCPC */ +#define TCPC_REG_DEV_CAP_1_FORCE_DISCHARGE BIT(11) +/** + * Bit for vbus measurement and alarm capable + * If set, TCPC supports vbus voltage measurement and vbus voltage alarms + */ +#define TCPC_REG_DEV_CAP_1_VBUS_MEASURE_ALARM_CAPABLE BIT(10) +/** Mask for source resistor supported */ +#define TCPC_REG_DEV_CAP_1_SRC_RESISTOR_MASK GENMASK(9, 8) +/** + * Macro to extract the supported source resistors from register value + * The value can be cast to enum tc_rp_value and value can be treated as highest amperage supported + * since the TCPC has also to support lower values than specified. + */ +#define TCPC_REG_DEV_CAP_1_SRC_RESISTOR(reg) \ + (((reg) & TCPC_REG_DEV_CAP_1_SRC_RESISTOR_MASK) >> 8) +/** Value for Rp default only - only default amperage is supported */ +#define TCPC_REG_DEV_CAP_1_SRC_RESISTOR_RP_DEF 0 +/** Value for Rp 1.5A and default - support for 1.5A and for default amperage*/ +#define TCPC_REG_DEV_CAP_1_SRC_RESISTOR_RP_1P5_DEF 1 +/** Value for Rp 3.0A, 1.5A and default - support for 3.0A, 1.5A and default amperage */ +#define TCPC_REG_DEV_CAP_1_SRC_RESISTOR_RP_3P0_1P5_DEF 2 +/** Mask for power roles supported */ +#define TCPC_REG_DEV_CAP_1_POWER_ROLE_MASK GENMASK(7, 5) +#define TCPC_REG_DEV_CAP_1_POWER_ROLE(reg) \ + (((reg) & TCPC_REG_DEV_CAP_1_POWER_ROLE_MASK) >> 5) +/** Value for support both source and sink only (no DRP) */ +#define TCPC_REG_DEV_CAP_1_POWER_ROLE_SRC_OR_SNK 0 +/** Value for support source role only */ +#define TCPC_REG_DEV_CAP_1_POWER_ROLE_SRC 1 +/** Value for support sink role only */ +#define TCPC_REG_DEV_CAP_1_POWER_ROLE_SNK 2 +/** Value for support sink role with accessory */ +#define TCPC_REG_DEV_CAP_1_POWER_ROLE_SNK_ACC 3 +/** Value for support dual-role port only */ +#define TCPC_REG_DEV_CAP_1_POWER_ROLE_DRP 4 +/** Value for support source, sink, dual-role port, adapter and cable */ +#define TCPC_REG_DEV_CAP_1_POWER_ROLE_SRC_SNK_DRP_ADPT_CBL 5 +/** Value for support source, sink and dual-role port */ +#define TCPC_REG_DEV_CAP_1_POWER_ROLE_SRC_SNK_DRP 6 +/** Bit for debug SOP' and SOP'' support - if set, all SOP* messages are supported */ +#define TCPC_REG_DEV_CAP_1_ALL_SOP_STAR_MSGS_SUPPORTED BIT(4) +/** Bit for source vconn - if set, TCPC is capable of switching the vconn source */ +#define TCPC_REG_DEV_CAP_1_SOURCE_VCONN BIT(3) +/** Bit for sink vbus - if set, TCPC is capable of controling the sink path to the system load */ +#define TCPC_REG_DEV_CAP_1_SINK_VBUS BIT(2) +/** + * Bit for source high voltage vbus. + * If set, TCPC can control the source high voltage path to vbus + */ +#define TCPC_REG_DEV_CAP_1_SOURCE_HV_VBUS BIT(1) +/** Bit for source vbus - if set, TCPC is capable of controlling the source path to vbus */ +#define TCPC_REG_DEV_CAP_1_SOURCE_VBUS BIT(0) + +/** Register address - device capabilities 2 */ +#define TCPC_REG_DEV_CAP_2 0x26 +/** Bit for device capabilities 3 support */ +#define TCPC_REG_DEV_CAP_2_CAP_3_SUPPORTED BIT(15) +/** Bit for message disable disconnect */ +#define TCPC_REG_DEV_CAP_2_MSG_DISABLE_DISCONNECT BIT(14) +/** Bit for generic timer support */ +#define TCPC_REG_DEV_CAP_2_GENERIC_TIMER BIT(13) +/** + * Bit for long message support + * If set, the TCPC supports up to 264 bytes content of the SOP*. + * One I2C transaction can write up to 132 bytes. + * If unset, the TCPC support only 30 bytes content of the SOP* message. + */ +#define TCPC_REG_DEV_CAP_2_LONG_MSG BIT(12) +/** Bit for SMBus PEC support. If set, SMBus PEC can be enabled in the TCPC control register. */ +#define TCPC_REG_DEV_CAP_2_SMBUS_PEC BIT(11) +/** Bit for source fast-role swap support. If set, TCPC is capable of sending FRS as source. */ +#define TCPC_REG_DEV_CAP_2_SRC_FRS BIT(10) +/** Bit for sink fast-role swap support. If set, TCPC is capable of sending FRS as sink. */ +#define TCPC_REG_DEV_CAP_2_SNK_FRS BIT(9) +/** Bit for watchdog timer support. If set, watchdog can be enabled in the TCPC control register. */ +#define TCPC_REG_DEV_CAP_2_WATCHDOG_TIMER BIT(8) +/** + * Bit for sink disconnect detection. + * If set, the sink disconnect threshold can be set. Otherwise, the vbus present value from + * status register will be used to indicate the sink disconnection. + */ +#define TCPC_REG_DEV_CAP_2_SNK_DISC_DET BIT(7) +/** + * Bit for stop discharge threshold. If set, the TCPM can set the voltage threshold at which + * the forced vbus discharge will be disabled, into the vbus stop discharge threshold register. + */ +#define TCPC_REG_DEV_CAP_2_STOP_DISCHARGE_THRESH BIT(6) +/** Mask for resolution of voltage alarm */ +#define TCPC_REG_DEV_CAP_2_VBUS_VOLTAGE_ALARM_MASK GENMASK(5, 4) +/** Macro to extract the voltage alarm resolution from the register value */ +#define TCPC_REG_DEV_CAP_2_VBUS_VOLTAGE_ALARM(reg) \ + (((reg) & TCPC_REG_DEV_CAP_2_VBUS_VOLTAGE_ALARM_MASK) >> 4) +/** Value for 25mV resolution of voltage alarm, all 10 bits of voltage alarm registers are used. */ +#define TCPC_REG_DEV_CAP_2_VBUS_VOLTAGE_ALARM_25MV 0 +/** Value for 50mV resolution of voltage alarm, only 9 bits of voltage alarm registers are used. */ +#define TCPC_REG_DEV_CAP_2_VBUS_VOLTAGE_ALARM_50MV 1 +/** Value for 100mV resolution of voltage alarm, only 8 bits of voltage alarm registers are used. */ +#define TCPC_REG_DEV_CAP_2_VBUS_VOLTAGE_ALARM_100MV 2 +/** Mask for vconn power supported */ +#define TCPC_REG_DEV_CAP_2_VCONN_POWER_SUPPORTED_MASK GENMASK(3, 1) +/** Macro to extract the vconn power supported from the register value */ +#define TCPC_REG_DEV_CAP_2_VCONN_POWER_SUPPORTED(reg) \ + (((reg) & TCPC_REG_DEV_CAP_2_VCONN_POWER_SUPPORTED_MASK) >> 1) +/** Value for vconn power supported of 1.0W */ +#define TCPC_REG_DEV_CAP_2_VCONN_POWER_SUPPORTED_1_0W 0 +/** Value for vconn power supported of 1.5W */ +#define TCPC_REG_DEV_CAP_2_VCONN_POWER_SUPPORTED_1_5W 1 +/** Value for vconn power supported of 2.0W */ +#define TCPC_REG_DEV_CAP_2_VCONN_POWER_SUPPORTED_2_0W 2 +/** Value for vconn power supported of 3.0W */ +#define TCPC_REG_DEV_CAP_2_VCONN_POWER_SUPPORTED_3_0W 3 +/** Value for vconn power supported of 4.0W */ +#define TCPC_REG_DEV_CAP_2_VCONN_POWER_SUPPORTED_4_0W 4 +/** Value for vconn power supported of 5.0W */ +#define TCPC_REG_DEV_CAP_2_VCONN_POWER_SUPPORTED_5_0W 5 +/** Value for vconn power supported of 6.0W */ +#define TCPC_REG_DEV_CAP_2_VCONN_POWER_SUPPORTED_6_0W 6 +/** Value for external vconn power supported */ +#define TCPC_REG_DEV_CAP_2_VCONN_POWER_SUPPORTED_EXTERNAL 7 +/** Bit for vconn overcurrent fault capable - if set, TCPC can detect the vconn over current */ +#define TCPC_REG_DEV_CAP_2_VCONN_OVC_FAULT BIT(0) + +/** Register address - standard input capabilities */ +#define TCPC_REG_STD_INPUT_CAP 0x28 +/** Mask for source fast role swap */ +#define TCPC_REG_STD_INPUT_CAP_SRC_FRS_MASK GENMASK(4, 3) +/** Macro to extract the source fast role swap from register value */ +#define TCPC_REG_STD_INPUT_CAP_SRC_FRS(reg) (((reg) & TCPC_REG_STD_INPUT_CAP_SRC_FRS_MASK) >> 3) +/** Value for no source fast role swap pin present in TCPC */ +#define TCPC_REG_STD_INTPU_CAP_SRC_FRS_NONE 0 +/** Value for source fast role swap input only pin present in TCPC */ +#define TCPC_REG_STD_INTPU_CAP_SRC_FRS_INPUT 1 +/** Value for source fast role swap both input and output pin present in TCPC */ +#define TCPC_REG_STD_INTPU_CAP_SRC_FRS_BOTH 2 +/** Bit for vbus external over voltage fault. If set, input pin is present in TCPC. */ +#define TCPC_REG_STD_INPUT_CAP_EXT_OVP BIT(2) +/** Bit for vbus external over current fault. If set, input pin is present in TCPC. */ +#define TCPC_REG_STD_INPUT_CAP_EXT_OCP BIT(1) +/** Bit for force off vbus present. If set, input pin is present in TCPC. */ +#define TCPC_REG_STD_INPUT_CAP_FORCE_OFF_VBUS BIT(0) + +/** Register address - standard output capabilities */ +#define TCPC_REG_STD_OUTPUT_CAP 0x29 +/** Bit for vbus sink disconnect detect indicator */ +#define TCPC_REG_STD_OUTPUT_CAP_SNK_DISC_DET BIT(7) +/** Bit for debug accessory indicator */ +#define TCPC_REG_STD_OUTPUT_CAP_DBG_ACCESSORY BIT(6) +/** Bit for vbus present monitor */ +#define TCPC_REG_STD_OUTPUT_CAP_VBUS_PRESENT_MON BIT(5) +/** Bit for audio adapter accessory indicator */ +#define TCPC_REG_STD_OUTPUT_CAP_AUDIO_ACCESSORY BIT(4) +/** Bit for active cable indicator */ +#define TCPC_REG_STD_OUTPUT_CAP_ACTIVE_CABLE BIT(3) +/** Bit for mux configuration control */ +#define TCPC_REG_STD_OUTPUT_CAP_MUX_CFG_CTRL BIT(2) +/** Bit for connection present */ +#define TCPC_REG_STD_OUTPUT_CAP_CONN_PRESENT BIT(1) +/** Bit for connector orientation */ +#define TCPC_REG_STD_OUTPUT_CAP_CONN_ORIENTATION BIT(0) + +/** Register address - configure extended 1 */ +#define TCPC_REG_CONFIG_EXT_1 0x2A +/** + * Bit for fr swap bidirectional pin. + * If set, the bidirectional FR swap pin is configured as standard output signal. + * If unset, it's configured as standard input signal. + */ +#define TCPC_REG_CONFIG_EXT_1_FRS_SNK_DIR BIT(1) +/** + * Bit for standard input source FR swap. + * If set, blocks the source fast role swap input signal from triggering the sending of + * fast role swap signal. + * If unset, allow the input signal to trigger sending the fast role swap signal. + */ +#define TCPC_REG_CONFIG_EXT_1_STD_IN_SRC_FRS BIT(0) + +/** + * Register address - generic timer + * Available only if generic timer bit is set in device capabilities 2 register. + * This register is 16-bit wide and has a resolution of 0.1ms. + */ +#define TCPC_REG_GENERIC_TIMER 0x2c + +/** Register address - message header info */ +#define TCPC_REG_MSG_HDR_INFO 0x2e +/** Bit for cable plug. If set, the message originated from a cable plug. */ +#define TCPC_REG_MSG_HDR_INFO_CABLE_PLUG BIT(4) +/** Mask for data role */ +#define TCPC_REG_MSG_HDR_INFO_DATA_ROLE_MASK BIT(3) +/** Macro to extract the data role from register value */ +#define TCPC_REG_MSG_HDR_INFO_DATA_ROLE(reg) (((reg) & TCPC_REG_MSG_HDR_INFO_DATA_ROLE_MASK) >> 3) +/** Value for data role set as UFP */ +#define TCPC_REG_MSG_HDR_INFO_DATA_ROLE_UFP 0 +/** Value for data role set as DFP */ +#define TCPC_REG_MSG_HDR_INFO_DATA_ROLE_DFP 1 +/** Mask for Power Delivery Specification Revision */ +#define TCPC_REG_MSG_HDR_INFO_PD_REV_MASK GENMASK(2, 1) +/** Macro to extract the Power Delivery Specification Revision from register value */ +#define TCPC_REG_MSG_HDR_INFO_PD_REV(reg) (((reg) & TCPC_REG_MSG_HDR_INFO_PD_REV_MASK) >> 1) +/** Value for Power Delivery Specification Revision 1.0 */ +#define TCPC_REG_MSG_HDR_INFO_PD_REV_1_0 0 +/** Value for Power Delivery Specification Revision 2.0 */ +#define TCPC_REG_MSG_HDR_INFO_PD_REV_2_0 1 +/** Value for Power Delivery Specification Revision 3.0 */ +#define TCPC_REG_MSG_HDR_INFO_PD_REV_3_0 2 +/** Mask for power role */ +#define TCPC_REG_MSG_HDR_INFO_POWER_ROLE_MASK BIT(0) +/** Macro to extract the power role from register value */ +#define TCPC_REG_MSG_HDR_INFO_POWER_ROLE(reg) ((reg) & TCPC_REG_MSG_HDR_INFO_POWER_ROLE_MASK) +/** Value for power role set as sink */ +#define TCPC_REG_MSG_HDR_INFO_POWER_ROLE_SNK 0 +/** Value for power role set as source */ +#define TCPC_REG_MSG_HDR_INFO_POWER_ROLE_SRC 1 +/** + * Macro to set the register value with pd revision, data and power role from parameter and as + * non-cable plug + */ +#define TCPC_REG_MSG_HDR_INFO_SET(pd_rev_type, drole, prole) \ + ((drole) << 3 | (pd_rev_type << 1) | (prole)) +/** Mask for PD revision and power and data role */ +#define TCPC_REG_MSG_HDR_INFO_ROLES_MASK (TCPC_REG_MSG_HDR_INFO_SET(3, 1, 1)) + +/** Register address - receive detect */ +#define TCPC_REG_RX_DETECT 0x2f +/** + * Bit for message disable disconnect. + * If set, the TCPC set as sink shall disable the PD message delivery when the SNK.Open state + * is detected for debounce time specified in specification. + * If unset, sink TCPC disables the PD message delivery when vbus sink disconnect detected in + * alert register is asserted. + */ +#define TCPC_REG_RX_DETECT_MSG_DISABLE_DISCONNECT BIT(7) +/** Bit for enable cable reset. If set, TCPC will detect the cable reset signal. */ +#define TCPC_REG_RX_DETECT_CABLE_RST BIT(6) +/** Bit for enable hard reset. If set, TCPC will detect the hard reset signal. */ +#define TCPC_REG_RX_DETECT_HRST BIT(5) +/** Bit for enable SOP_DBG'' message. If set, TCPC will detect the SOP_DBG'' messages. */ +#define TCPC_REG_RX_DETECT_SOPPP_DBG BIT(4) +/** Bit for enable SOP_DBG' message. If set, TCPC will detect the SOP_DBG' messages. */ +#define TCPC_REG_RX_DETECT_SOPP_DBG BIT(3) +/** Bit for enable SOP'' message. If set, TCPC will detect the SOP'' messages. */ +#define TCPC_REG_RX_DETECT_SOPPP BIT(2) +/** Bit for enable SOP' message. If set, TCPC will detect the SOP' messages. */ +#define TCPC_REG_RX_DETECT_SOPP BIT(1) +/** Bit for enable SOP message. If set, TCPC will detect the SOP messages. */ +#define TCPC_REG_RX_DETECT_SOP BIT(0) +/** Mask for detecting the SOP messages and hard reset signals */ +#define TCPC_REG_RX_DETECT_SOP_HRST_MASK (TCPC_REG_RX_DETECT_SOP | TCPC_REG_RX_DETECT_HRST) +/** Mask for detecting the SOP, SOP' and SOP'' messages and hard reset signals */ +#define TCPC_REG_RX_DETECT_SOP_SOPP_SOPPP_HRST_MASK \ + (TCPC_REG_RX_DETECT_SOP | TCPC_REG_RX_DETECT_SOPP | TCPC_REG_RX_DETECT_SOPPP | \ + TCPC_REG_RX_DETECT_HRST) + +/** + * Register address - receive buffer (readable byte count, rx buf frame type, rx buf byte x) + * In TCPC Rev 2.0, the RECEIVE_BUFFER is comprised of three sets of registers: + * READABLE_BYTE_COUNT, RX_BUF_FRAME_TYPE and RX_BUF_BYTE_x. These registers can + * only be accessed by reading at a common register address 30h. + */ +#define TCPC_REG_RX_BUFFER 0x30 + +/** Register address - transmit */ +#define TCPC_REG_TRANSMIT 0x50 +/** Macro to set the transmit register with message type and retries count */ +#define TCPC_REG_TRANSMIT_SET_WITH_RETRY(retries, type) ((retries) << 4 | (type)) +/** Macro to set the transmit register with message type and without retries */ +#define TCPC_REG_TRANSMIT_SET_WITHOUT_RETRY(type) (type) +/** Value for transmit SOP type message */ +#define TCPC_REG_TRANSMIT_TYPE_SOP 0 +/** Value for transmit SOP' type message */ +#define TCPC_REG_TRANSMIT_TYPE_SOPP 1 +/** Value for transmit SOP'' type message */ +#define TCPC_REG_TRANSMIT_TYPE_SOPPP 2 +/** Value for transmit SOP_DBG' type message */ +#define TCPC_REG_TRANSMIT_TYPE_SOP_DBG_P 3 +/** Value for transmit SOP_DBG'' type message */ +#define TCPC_REG_TRANSMIT_TYPE_SOP_DBG_PP 4 +/** Value for transmit hard reset signal */ +#define TCPC_REG_TRANSMIT_TYPE_HRST 5 +/** Value for transmit cable reset signal */ +#define TCPC_REG_TRANSMIT_TYPE_CABLE_RST 6 +/** Value for transmit BIST carrier mode 2 */ +#define TCPC_REG_TRANSMIT_TYPE_BIST 7 + +/** + * Register address - transmit buffer + * In TCPC Rev 2.0, the TRANSMIT_BUFFER holds the I2C_WRITE_BYTE_COUNT and the + * portion of the SOP* USB PD message payload (including the header and/or the + * data bytes) most recently written by the TCPM in TX_BUF_BYTE_x. TX_BUF_BYTE_x + * is “hidden” and can only be accessed by writing to register address 51h + */ +#define TCPC_REG_TX_BUFFER 0x51 + +/** Register address - vbus voltage */ +#define TCPC_REG_VBUS_VOLTAGE 0x70 +/** Mask for vbus voltage measurement */ +#define TCPC_REG_VBUS_VOLTAGE_MEASUREMENT_MASK GENMASK(9, 0) +/** Macro to extract the vbus measurement from the register value */ +#define TCPC_REG_VBUS_VOLTAGE_MEASUREMENT(reg) ((reg) & TCPC_REG_VBUS_VOLTAGE_MEASUREMENT_MASK) +/** Mask for scale factor */ +#define TCPC_REG_VBUS_VOLTAGE_SCALE_FACTOR_MASK GENMASK(11, 10) +/** Macro to extract the vbus voltage scale from the register value */ +#define TCPC_REG_VBUS_VOLTAGE_SCALE(reg) \ + (1 << (((reg) & TCPC_REG_VBUS_VOLTAGE_SCALE_FACTOR_MASK) >> 10)) +/** Resolution of vbus voltage measurement. It's specified as 25mV. */ +#define TCPC_REG_VBUS_VOLTAGE_LSB 25 +/** + * Macro to convert the register value into real voltage measurement taking scale + * factor into account + */ +#define TCPC_REG_VBUS_VOLTAGE_VBUS(x) \ + (TCPC_REG_VBUS_VOLTAGE_SCALE(x) * TCPC_REG_VBUS_VOLTAGE_MEASUREMENT(x) * \ + TCPC_REG_VBUS_VOLTAGE_LSB) + +/** Register address - vbus sink disconnect threshold */ +#define TCPC_REG_VBUS_SINK_DISCONNECT_THRESH 0x72 +/** + * Resolution of the value stored in register. + * Value read from register must be multiplied by this value to get a real voltage in mV. + * Voltage in mV written to register must be divided by this constant. + * Specification defines it as 25mV + */ +#define TCPC_REG_VBUS_SINK_DISCONNECT_THRESH_LSB 25 +/** Mask for the valid bits of voltage trip point */ +#define TCPC_REG_VBUS_SINK_DISCONNECT_THRESH_MASK GENMASK(11, 0) +/** Default value for vbus sink disconnect threshold */ +#define TCPC_REG_VBUS_SINK_DISCONNECT_THRESH_DEFAULT 0x008C /* 3.5 V */ + +/** Register address - vbus sink disconnect threshold */ +#define TCPC_REG_VBUS_STOP_DISCHARGE_THRESH 0x74 +/** + * Resolution of the value stored in register. + * Value read from register must be multiplied by this value to get a real voltage in mV. + * Voltage in mV written to register must be divided by this constant. + * Specification defines it as 25mV. + */ +#define TCPC_REG_VBUS_STOP_DISCHARGE_THRESH_LSB 25 +/** Mask for the valid bits of voltage trip point */ +#define TCPC_REG_VBUS_STOP_DISCHARGE_THRESH_MASK GENMASK(11, 0) +/** Default value for vbus stop discharge threshold */ +#define TCPC_REG_VBUS_STOP_DISCHARGE_THRESH_DEFAULT 0x0020 /* 0.8 V */ + +/** Register address - vbus voltage alarm - high */ +#define TCPC_REG_VBUS_VOLTAGE_ALARM_HI_CFG 0x76 +/** + * Resolution of the value stored in register. + * Value read from register must be multiplied by this value to get a real voltage in mV. + * Voltage in mV written to register must be divided by this constant. + * Specification defines it as 25mV + */ +#define TCPC_REG_VBUS_VOLTAGE_ALARM_HI_CFG_LSB 25 +/** Mask for the valid bits of voltage trip point */ +#define TCPC_REG_VBUS_VOLTAGE_ALARM_HI_CFG_MASK GENMASK(11, 0) + +/** Register address - vbus voltage alarm - low */ +#define TCPC_REG_VBUS_VOLTAGE_ALARM_LO_CFG 0x78 +/** + * Resolution of the value stored in register. + * Value read from register must be multiplied by this value to get a real voltage in mV. + * Voltage in mV written to register must be divided by this constant. + * Specification defines it as 25mV + */ +#define TCPC_REG_VBUS_VOLTAGE_ALARM_LO_CFG_LSB 25 +/** Mask for the valid bits of voltage trip point */ +#define TCPC_REG_VBUS_VOLTAGE_ALARM_LO_CFG_MASK GENMASK(11, 0) + +/** + * Register address - vbus nondefault target + * Available only if vbus nondefault target is asserted in device capabilities 1 register. + * Purpose of this register is to provide value for nondefault voltage over vbus when sending + * the source vbus nondefault voltage command to command register. + */ +#define TCPC_REG_VBUS_NONDEFAULT_TARGET 0x7a +/** + * Resolution of the value stored in register. + * Value read from register must be multiplied by this value to get a real voltage in mV. + * Voltage in mV written to register must be divided by this constant. + * Specification defines it as 20mV + */ +#define TCPC_REG_VBUS_NONDEFAULT_TARGET_LSB 20 + +/** Register address - device capabilities 3 */ +#define TCPC_REG_DEV_CAP_3 0x7c +/** Mask for vbus voltage support */ +#define TCPC_REG_DEV_CAP_3_VBUS_MAX_MASK GENMASK(2, 0) +/** Macro to extract the vbus voltage support from register value */ +#define TCPC_REG_DEV_CAP_3_VBUS_MAX(reg) ((reg) & TCPC_REG_DEV_CAP_3_VBUS_MAX_MASK) +/** Value for nominal voltage supported of 5V */ +#define TCPC_REG_DEV_CAP_3_VBUS_MAX_5V 0 +/** Value for nominal voltage supported of 9V */ +#define TCPC_REG_DEV_CAP_3_VBUS_MAX_9V 1 +/** Value for nominal voltage supported of 15V */ +#define TCPC_REG_DEV_CAP_3_VBUS_MAX_15V 2 +/** Value for nominal voltage supported of 20V */ +#define TCPC_REG_DEV_CAP_3_VBUS_MAX_20V 3 +/** Value for nominal voltage supported of 28V */ +#define TCPC_REG_DEV_CAP_3_VBUS_MAX_28V 4 +/** Value for nominal voltage supported of 36V */ +#define TCPC_REG_DEV_CAP_3_VBUS_MAX_36V 5 +/** Value for nominal voltage supported of 48V */ +#define TCPC_REG_DEV_CAP_3_VBUS_MAX_48V 6 + +#endif /* ZEPHYR_INCLUDE_USB_C_TCPCI_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/xen/public/grant_table.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/xen/public/grant_table.h index 55162391..0124046d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/xen/public/grant_table.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/xen/public/grant_table.h @@ -126,7 +126,7 @@ typedef uint32_t grant_ref_t; * Version 1 of the grant table entry structure is maintained purely * for backwards compatibility. New guests should use version 2. */ -#if __XEN_INTERFACE_VERSION__ < 0x0003020a +#if CONFIG_XEN_INTERFACE_VERSION < 0x0003020a #define grant_entry_v1 grant_entry #define grant_entry_v1_t grant_entry_t #endif @@ -232,13 +232,13 @@ typedef struct grant_entry_v1 grant_entry_v1_t; #define GNTTABOP_copy 5 #define GNTTABOP_query_size 6 #define GNTTABOP_unmap_and_replace 7 -#if __XEN_INTERFACE_VERSION__ >= 0x0003020a +#if CONFIG_XEN_INTERFACE_VERSION >= 0x0003020a #define GNTTABOP_set_version 8 #define GNTTABOP_get_status_frames 9 #define GNTTABOP_get_version 10 #define GNTTABOP_swap_grant_ref 11 #define GNTTABOP_cache_flush 12 -#endif /* __XEN_INTERFACE_VERSION__ */ +#endif /* CONFIG_XEN_INTERFACE_VERSION */ /* ` } */ /* @@ -315,7 +315,7 @@ struct gnttab_setup_table { /* OUT parameters. */ int16_t status; /* => enum grant_status */ -#if __XEN_INTERFACE_VERSION__ < 0x00040300 +#if CONFIG_XEN_INTERFACE_VERSION < 0x00040300 XEN_GUEST_HANDLE(ulong) frame_list; #else XEN_GUEST_HANDLE(xen_pfn_t) frame_list; diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/xen/public/memory.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/xen/public/memory.h index 513b3273..2baf69ef 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/xen/public/memory.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/xen/public/memory.h @@ -53,7 +53,7 @@ struct xen_memory_reservation { xen_ulong_t nr_extents; unsigned int extent_order; -#if __XEN_INTERFACE_VERSION__ >= 0x00030209 +#if CONFIG_XEN_INTERFACE_VERSION >= 0x00030209 /* XENMEMF flags. */ unsigned int mem_flags; #else @@ -80,7 +80,7 @@ struct xen_add_to_physmap_batch { /* Number of pages to go through */ uint16_t size; -#if __XEN_INTERFACE_VERSION__ < 0x00040700 +#if CONFIG_XEN_INTERFACE_VERSION < 0x00040700 domid_t foreign_domid; /* IFF gmfn_foreign. Should be 0 for other spaces. */ #else union xen_add_to_physmap_batch_extra { diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/xen/public/xen.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/xen/public/xen.h index f8a5b6eb..3018a92d 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/xen/public/xen.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/xen/public/xen.h @@ -41,7 +41,7 @@ DEFINE_XEN_GUEST_HANDLE(char); __DEFINE_XEN_GUEST_HANDLE(uchar, unsigned char); DEFINE_XEN_GUEST_HANDLE(int); __DEFINE_XEN_GUEST_HANDLE(uint, unsigned int); -#if __XEN_INTERFACE_VERSION__ < 0x00040300 +#if CONFIG_XEN_INTERFACE_VERSION < 0x00040300 DEFINE_XEN_GUEST_HANDLE(long); __DEFINE_XEN_GUEST_HANDLE(ulong, unsigned long); #endif @@ -216,7 +216,7 @@ DEFINE_XEN_GUEST_HANDLE(xen_ulong_t); typedef uint16_t domid_t; -#if __XEN_INTERFACE_VERSION__ < 0x00040400 +#if CONFIG_XEN_INTERFACE_VERSION < 0x00040400 /* * Event channel endpoints per domain (when using the 2-level ABI): * 1024 if a long is 32 bits; 4096 if a long is 64 bits. @@ -248,7 +248,7 @@ struct vcpu_time_info { */ uint32_t tsc_to_system_mul; int8_t tsc_shift; -#if __XEN_INTERFACE_VERSION__ > 0x040600 +#if CONFIG_XEN_INTERFACE_VERSION > 0x040600 uint8_t flags; uint8_t pad1[2]; #else diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/zbus/zbus.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/zbus/zbus.h index 40774da5..e5657c0a 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/zbus/zbus.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/include/zephyr/zbus/zbus.h @@ -62,6 +62,13 @@ struct zbus_channel_data { */ struct net_buf_pool *msg_subscriber_pool; #endif /* ZBUS_MSG_SUBSCRIBER_NET_BUF_POOL_ISOLATION */ + +#if defined(CONFIG_ZBUS_CHANNEL_PUBLISH_STATS) || defined(__DOXYGEN__) + /** Kernel timestamp of the last publish action on this channel */ + k_ticks_t publish_timestamp; + /** Number of times data has been published to this channel */ + uint32_t publish_count; +#endif /* CONFIG_ZBUS_CHANNEL_PUBLISH_STATS */ }; /** @@ -73,29 +80,29 @@ struct zbus_channel_data { struct zbus_channel { #if defined(CONFIG_ZBUS_CHANNEL_NAME) || defined(__DOXYGEN__) /** Channel name. */ - const char *const name; + const char *name; #endif /** Message reference. Represents the message's reference that points to the actual * shared memory region. */ - void *const message; + void *message; /** Message size. Represents the channel's message size. */ - const size_t message_size; + size_t message_size; /** User data available to extend zbus features. The channel must be claimed before * using this field. */ - void *const user_data; + void *user_data; /** Message validator. Stores the reference to the function to check the message * validity before actually performing the publishing. No invalid messages can be * published. Every message is valid when this field is empty. */ - bool (*const validator)(const void *msg, size_t msg_size); + bool (*validator)(const void *msg, size_t msg_size); /** Mutable channel data struct. */ - struct zbus_channel_data *const data; + struct zbus_channel_data *data; }; /** @@ -137,26 +144,26 @@ struct zbus_observer_data { struct zbus_observer { #if defined(CONFIG_ZBUS_OBSERVER_NAME) || defined(__DOXYGEN__) /** Observer name. */ - const char *const name; + const char *name; #endif /** Type indication. */ enum zbus_observer_type type; /** Mutable observer data struct. */ - struct zbus_observer_data *const data; + struct zbus_observer_data *data; union { /** Observer message queue. It turns the observer into a subscriber. */ - struct k_msgq *const queue; + struct k_msgq *queue; /** Observer callback function. It turns the observer into a listener. */ - void (*const callback)(const struct zbus_channel *chan); + void (*callback)(const struct zbus_channel *chan); #if defined(CONFIG_ZBUS_MSG_SUBSCRIBER) || defined(__DOXYGEN__) /** Observer message FIFO. It turns the observer into a message subscriber. It only * exists if the @kconfig{CONFIG_ZBUS_MSG_SUBSCRIBER} is enabled. */ - struct k_fifo *const message_fifo; + struct k_fifo *message_fifo; #endif /* CONFIG_ZBUS_MSG_SUBSCRIBER */ }; }; @@ -167,8 +174,8 @@ struct zbus_channel_observation_mask { }; struct zbus_channel_observation { - const struct zbus_channel *const chan; - const struct zbus_observer *const obs; + const struct zbus_channel *chan; + const struct zbus_observer *obs; }; #ifdef __cplusplus @@ -217,7 +224,7 @@ struct zbus_channel_observation { #define ZBUS_RUNTIME_OBSERVERS_LIST_INIT(_slist_name) /* No runtime observers */ #endif -#define _ZBUS_OBS_EXTERN(_name) extern struct zbus_observer _name +#define _ZBUS_OBS_EXTERN(_name) extern const struct zbus_observer _name #define _ZBUS_CHAN_EXTERN(_name) extern const struct zbus_channel _name @@ -259,8 +266,9 @@ struct zbus_channel_observation { /** @endcond */ /* clang-format off */ + /** - * @brief Add a static channel observervation. + * @brief Add a static channel observation. * * This macro initializes a channel observation by receiving the * channel and the observer. @@ -282,7 +290,7 @@ struct zbus_channel_observation { /* clang-format on */ /** - * @brief Add a static channel observervation. + * @brief Add a static channel observation. * * This macro initializes a channel observation by receiving the * channel and the observer. @@ -321,6 +329,7 @@ struct zbus_channel_observation { #define ZBUS_OBSERVERS(...) __VA_ARGS__ /* clang-format off */ + /** * @brief Zbus channel definition. * @@ -342,13 +351,13 @@ struct zbus_channel_observation { .observers_start_idx = -1, \ .observers_end_idx = -1, \ .sem = Z_SEM_INITIALIZER(_CONCAT(_zbus_chan_data_, _name).sem, 1, 1), \ + IF_ENABLED(CONFIG_ZBUS_PRIORITY_BOOST, ( \ + .highest_observer_priority = ZBUS_MIN_THREAD_PRIORITY, \ + )) \ IF_ENABLED(CONFIG_ZBUS_RUNTIME_OBSERVERS, ( \ .observers = SYS_SLIST_STATIC_INIT( \ &_CONCAT(_zbus_chan_data_, _name).observers), \ )) \ - IF_ENABLED(CONFIG_ZBUS_PRIORITY_BOOST, ( \ - .highest_observer_priority = ZBUS_MIN_THREAD_PRIORITY, \ - )) \ }; \ static K_MUTEX_DEFINE(_CONCAT(_zbus_mutex_, _name)); \ _ZBUS_CPP_EXTERN const STRUCT_SECTION_ITERABLE(zbus_channel, _name) = { \ @@ -383,6 +392,7 @@ struct zbus_channel_observation { } /* clang-format off */ + /** * @brief Define and initialize a subscriber. * @@ -396,8 +406,8 @@ struct zbus_channel_observation { */ #define ZBUS_SUBSCRIBER_DEFINE_WITH_ENABLE(_name, _queue_size, _enable) \ K_MSGQ_DEFINE(_zbus_observer_queue_##_name, \ - sizeof(const struct zbus_channel *), \ - _queue_size, sizeof(const struct zbus_channel *) \ + sizeof(struct zbus_channel *), \ + _queue_size, sizeof(struct zbus_channel *) \ ); \ static struct zbus_observer_data _CONCAT(_zbus_obs_data_, _name) = { \ .enabled = _enable, \ @@ -405,7 +415,7 @@ struct zbus_channel_observation { .priority = ZBUS_MIN_THREAD_PRIORITY, \ )) \ }; \ - STRUCT_SECTION_ITERABLE(zbus_observer, _name) = { \ + _ZBUS_CPP_EXTERN const STRUCT_SECTION_ITERABLE(zbus_observer, _name) = { \ ZBUS_OBSERVER_NAME_INIT(_name) /* Name field */ \ .type = ZBUS_OBSERVER_SUBSCRIBER_TYPE, \ .data = &_CONCAT(_zbus_obs_data_, _name), \ @@ -428,6 +438,7 @@ struct zbus_channel_observation { ZBUS_SUBSCRIBER_DEFINE_WITH_ENABLE(_name, _queue_size, true) /* clang-format off */ + /** * @brief Define and initialize a listener. * @@ -446,7 +457,7 @@ struct zbus_channel_observation { .priority = ZBUS_MIN_THREAD_PRIORITY, \ )) \ }; \ - STRUCT_SECTION_ITERABLE(zbus_observer, _name) = { \ + _ZBUS_CPP_EXTERN const STRUCT_SECTION_ITERABLE(zbus_observer, _name) = { \ ZBUS_OBSERVER_NAME_INIT(_name) /* Name field */ \ .type = ZBUS_OBSERVER_LISTENER_TYPE, \ .data = &_CONCAT(_zbus_obs_data_, _name), \ @@ -467,6 +478,7 @@ struct zbus_channel_observation { #define ZBUS_LISTENER_DEFINE(_name, _cb) ZBUS_LISTENER_DEFINE_WITH_ENABLE(_name, _cb, true) /* clang-format off */ + /** * @brief Define and initialize a message subscriber. * @@ -485,7 +497,7 @@ struct zbus_channel_observation { .priority = ZBUS_MIN_THREAD_PRIORITY, \ )) \ }; \ - STRUCT_SECTION_ITERABLE(zbus_observer, _name) = { \ + _ZBUS_CPP_EXTERN const STRUCT_SECTION_ITERABLE(zbus_observer, _name) = { \ ZBUS_OBSERVER_NAME_INIT(_name) /* Name field */ \ .type = ZBUS_OBSERVER_MSG_SUBSCRIBER_TYPE, \ .data = &_CONCAT(_zbus_obs_data_, _name), \ @@ -717,6 +729,89 @@ static inline void zbus_chan_set_msg_sub_pool(const struct zbus_channel *chan, #endif /* ZBUS_MSG_SUBSCRIBER_NET_BUF_POOL_ISOLATION */ +#if defined(CONFIG_ZBUS_CHANNEL_PUBLISH_STATS) || defined(__DOXYGEN__) + +/** + * @brief Update the publishing statistics for a channel + * + * This function updates the publishing statistics for the @ref zbus_chan_claim -> + * @ref zbus_chan_finish workflow, which cannot automatically determine whether + * new data has been published or not. + * + * @warning This function must only be used directly for already locked channels. + * + * @param chan The channel's reference. + */ +static inline void zbus_chan_pub_stats_update(const struct zbus_channel *chan) +{ + __ASSERT(chan != NULL, "chan is required"); + + chan->data->publish_timestamp = k_uptime_ticks(); + chan->data->publish_count += 1; +} + +/** + * @brief Get the time a channel was last published to. + * + * @note Will return 0 if channel has not yet been published to. + * + * @param chan The channel's reference. + * + * @return The kernel timestamp of the last publishing action. + */ +static inline k_ticks_t zbus_chan_pub_stats_last_time(const struct zbus_channel *chan) +{ + __ASSERT(chan != NULL, "chan is required"); + + return chan->data->publish_timestamp; +} + +/** + * @brief Get the number of times a channel has been published to. + * + * @note Will return 0 if channel has not yet been published to. + * + * @param chan The channel's reference. + * + * @return The number of times a channel has been published to. + */ +static inline uint32_t zbus_chan_pub_stats_count(const struct zbus_channel *chan) +{ + __ASSERT(chan != NULL, "chan is required"); + + return chan->data->publish_count; +} + +/** + * @brief Get the average period between publishes to a channel. + * + * @note Will return 0 if channel has not yet been published to. + * + * @param chan The channel's reference. + * + * @return Average duration in milliseconds between publishes. + */ +static inline uint32_t zbus_chan_pub_stats_avg_period(const struct zbus_channel *chan) +{ + __ASSERT(chan != NULL, "chan is required"); + + /* Not yet published, period = 0ms */ + if (chan->data->publish_count == 0) { + return 0; + } + /* Average period across application runtime */ + return k_uptime_get() / chan->data->publish_count; +} + +#else + +static inline void zbus_chan_pub_stats_update(const struct zbus_channel *chan) +{ + (void)chan; +} + +#endif /* CONFIG_ZBUS_CHANNEL_PUBLISH_STATS */ + #if defined(CONFIG_ZBUS_RUNTIME_OBSERVERS) || defined(__DOXYGEN__) /** @@ -782,7 +877,7 @@ struct zbus_observer_node { * @retval -EFAULT A parameter is incorrect, or the function context is invalid (inside an ISR). The * function only returns this value when the @kconfig{CONFIG_ZBUS_ASSERT_MOCK} is enabled. */ -int zbus_obs_set_enable(struct zbus_observer *obs, bool enabled); +int zbus_obs_set_enable(const struct zbus_observer *obs, bool enabled); /** * @brief Get the observer state. @@ -794,7 +889,7 @@ int zbus_obs_set_enable(struct zbus_observer *obs, bool enabled); * * @return Observer state. */ -static inline int zbus_obs_is_enabled(struct zbus_observer *obs, bool *enable) +static inline int zbus_obs_is_enabled(const struct zbus_observer *obs, bool *enable) { _ZBUS_ASSERT(obs != NULL, "obs is required"); _ZBUS_ASSERT(enable != NULL, "enable is required"); diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/modules/cmsis/cmsis_core_a_r.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/modules/cmsis/cmsis_core_a_r.h index 9f4514ed..bef0f602 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/modules/cmsis/cmsis_core_a_r.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/modules/cmsis/cmsis_core_a_r.h @@ -46,6 +46,8 @@ extern "C" { #include #elif defined(CONFIG_CPU_CORTEX_R7) #include +#elif defined(CONFIG_CPU_CORTEX_R8) +#include #elif defined(CONFIG_CPU_CORTEX_R52) #include #elif defined(CONFIG_CPU_AARCH32_CORTEX_A) diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/soc/st/stm32/stm32u0x/soc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/soc/st/stm32/stm32u0x/soc.h new file mode 100644 index 00000000..48261403 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/soc/st/stm32/stm32u0x/soc.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2024 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file SoC configuration macros for the STM32U0 family processors. + * + */ + + +#ifndef _STM32U0_SOC_H_ +#define _STM32U0_SOC_H_ + +#ifndef _ASMLANGUAGE + +#include + +#endif /* !_ASMLANGUAGE */ + +#endif /* _STM32U0_SOC_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/soc/st/stm32/stm32wb0x/soc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/soc/st/stm32/stm32wb0x/soc.h new file mode 100644 index 00000000..8361f725 --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/soc/st/stm32/stm32wb0x/soc.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 STMicroelectronics + * + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @file SoC configuration macros for the STM32WB0 family processors. + * + */ + + +#ifndef _STM32WB0_SOC_H_ +#define _STM32WB0_SOC_H_ + +#ifndef _ASMLANGUAGE + +#include + +/** SMPS modes */ +#define STM32WB0_SMPS_MODE_OFF 0 +#define STM32WB0_SMPS_MODE_PRECHARGE 1 +#define STM32WB0_SMPS_MODE_RUN 2 + +/** Active SMPS mode (provided here for usage in drivers) */ +#define SMPS_MODE _CONCAT(STM32WB0_SMPS_MODE_, \ + DT_STRING_UNQUOTED( \ + DT_INST(0, st_stm32wb0_pwr), \ + smps_mode)) + +#endif /* !_ASMLANGUAGE */ + +#endif /* _STM32WB0_SOC_H_ */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/soc/st/stm32/stm32wbax/soc.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/soc/st/stm32/stm32wbax/soc.h index 0c337ea9..be7e08e7 100644 --- a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/soc/st/stm32/stm32wbax/soc.h +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/soc/st/stm32/stm32wbax/soc.h @@ -17,8 +17,11 @@ #include + /* function exported to the soc power.c */ -int stm32wba_init(void); +void stm32wba_init(void); + +void stm32_power_init(void); #endif /* !_ASMLANGUAGE */ diff --git a/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/subsys/shell/modules/kernel_service/kernel_shell.h b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/subsys/shell/modules/kernel_service/kernel_shell.h new file mode 100644 index 00000000..ca0523ad --- /dev/null +++ b/variants/arduino_giga_r1_m7/llext-edk/include/zephyr/subsys/shell/modules/kernel_service/kernel_shell.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2024 Meta Platforms + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef ZEPHYR_SUBSYS_SHELL_MODULES_KERNEL_SERVICE_KERNEL_SHELL_H_ +#define ZEPHYR_SUBSYS_SHELL_MODULES_KERNEL_SERVICE_KERNEL_SHELL_H_ + +#include + +/* Add command to the set of kernel subcommands, see `SHELL_SUBCMD_ADD` */ +#define KERNEL_CMD_ARG_ADD(_syntax, _subcmd, _help, _handler, _mand, _opt) \ + SHELL_SUBCMD_ADD((kernel), _syntax, _subcmd, _help, _handler, _mand, _opt); + +#define KERNEL_CMD_ADD(_syntax, _subcmd, _help, _handler) \ + KERNEL_CMD_ARG_ADD(_syntax, _subcmd, _help, _handler, 0, 0); + +/* Add command to the set of `kernel thread` subcommands */ +#define KERNEL_THREAD_CMD_ARG_ADD(_syntax, _subcmd, _help, _handler, _mand, _opt) \ + SHELL_SUBCMD_ADD((thread), _syntax, _subcmd, _help, _handler, _mand, _opt); + +#define KERNEL_THREAD_CMD_ADD(_syntax, _subcmd, _help, _handler) \ + KERNEL_THREAD_CMD_ARG_ADD(_syntax, _subcmd, _help, _handler, 0, 0); + +/* Internal function to check if a thread pointer is valid */ +bool z_thread_is_valid(const struct k_thread *thread); + +#endif /* ZEPHYR_SUBSYS_SHELL_MODULES_KERNEL_SERVICE_KERNEL_SHELL_H_ */ diff --git a/variants/arduino_nano_33_ble_sense/llext-edk/include/zephyr/subsys/bluetooth/host/classic/at.h b/variants/arduino_nano_33_ble_sense/llext-edk/include/zephyr/subsys/bluetooth/host/classic/at.h index ae2c7f95..b9059626 100644 --- a/variants/arduino_nano_33_ble_sense/llext-edk/include/zephyr/subsys/bluetooth/host/classic/at.h +++ b/variants/arduino_nano_33_ble_sense/llext-edk/include/zephyr/subsys/bluetooth/host/classic/at.h @@ -15,7 +15,7 @@ enum at_result { }; enum at_cme { - CME_ERROR_AG_FAILURE = 0, + CME_ERPOR_AG_FAILURE = 0, CME_ERROR_NO_CONNECTION_TO_PHONE = 1, CME_ERROR_OPERATION_NOT_ALLOWED = 3, CME_ERROR_OPERATION_NOT_SUPPORTED = 4,

    B;<{IrM*E-2JMixC{C#t%KD6f>s7oI9d`h?e(ziDGTRH_GEN~{H6Z$9Qi=D9k z2EI|jKX0@)Nd+z+&Sp6mS@c~>b42~eLDw_d>{MasF&0!?nVl?<9y0M-F<03504CyzASqte&Q~CBH z9XoVV^7)~j)w_olzQC`BM64(g_Uc{61Bz7!wRa*!>R z#xlA`NLJd`??3(*L51&r2+#Q#You1;=s|uFY47@%BL3%t&G-m+hhD=Y(dZ&cfx{JrqjL=|BExewLj;Iy_ski^|7dAzg-xD z{x}!T03SHGulfG7+8?3S8$IDcBPk#XO*Q^9{qm*U_FRY0$bE>83r=kS5v>W%lof*2uO3G)I41hMy2yi5(Q3 zIBn;(o*JhV(!i^X7U$`0q2pna4b#{d*zeGI5%7%c=)OTe(*Eb#TT|WDI3vvE*T60) zO3!u2GeM)r48m;D!}pjS9v#$MW8mR&u1#ynKffkN2`_QVJj~gdngHhSvcI3x!Lq}@ z2zq9aHPi2yu?F#7?60eWgaoA*5}`*yvz7KStknd)dA-<8wP50Dr?P@l9S>@15Yr-s z_-39)gqOw3+8IBFKar{!n%i2O-=#)?Er&1-!CuddBu|+8q^eSb*w{DFYGgTuGr}tD zPE6(gu4L6-|Va&}3f|ZleXZm{a+3uL8o2TjFzu_o260*jmwUhR`89~$? zXV2s0eHx*M!NaX!+)io0q`Un_@%r8q$SV(dB-u=;S01n! zCHR=~lCKK;98JB94U+G^T#uTtsm4@9Z=ZG2C`lGPK?5vH2}@_-3|S8gUT|lsm;3wY z8MGmd!L7K?bQhHF#Z{4g)$!M)TkM=Q-_7P~0}vd-XjkFy&30t~(&Z{HunXFs zq-%xOZky@ti5uL*RNNIL{vm)QRJ)^PI#=5Ar%4EM<4soa7R{Jl>T*YKR%IjL6H2BZI z2 z<*4YQ7}5C{b38qUv))&vd}#vD1@6D1yz{#tbx8jly4>XXH_gqCo$I!4{jtu_sxauq zq1~#{?V+|xefBerqibo79%$p@;aRCM;MfLBM{DhYwtN>0d#SztnC;eWwBwo4=l|d} zX{^0QGg^36ljl<&on92_C_#N4AB@E)8Uh;dW!GPAiQDpgiSoQphVJkryx-TbL2ASf zishcc^>X>O$6@thomg~voUmQm8%N-*<>4^JBFaGcIk~@SgMW9@Thf^zT&K~$d3&n! z7T;t1Um!8gaS!vUTeTX-RxLg07!AL?s~rYt^D>8QZUyX-+d@dkqJYej$u1Mv^j95= zhI6pNRJw!R?H$VQs}dFm6I&t|)ZgUaMU%j|PE=9B_K0P<$!Q~gP*@;<) z5ezg@&^fb<_Sb`Xkm}AMXOCj66CLTmHHlGca}a(6%`L$7PJ~Ah{s-Y-2#Rbf-}3f{ zb`5Snlo!19@{8rWj3}2;u6=ZL+!dY+y0KcJ0sW-YHuWWG%59`ksQUU0(@6PH{*AZ- zCvMbp3rQ0M)X@vXaPfL*f~=9{Y{dOw?YpGi7M0?RAss@7PTQl@xUHu&XaIeir#TOu zoXhk$41O?b`>O(NQHn!*j)H>z&_Dl)hV~$TqN6dx*WuJQ(Y^2dQ+`Oms2AAEvo6xn(SvmD%r#q_Lqnh0)Z6Snbsz?I5H0faACv8% zELU|hqtAxyzNvP-xD}YYLu4wfZGDo{wm#2HZdMxSR?ZC?x)iMwn^{&Jx+?fc-mN9<5|;0msz^LO80uqzc*HpoU64w57iaYcYZccF#C} zoIC;fKOy}>=S0en``as#jgFCl_R>IaXE<8y6~BYuK5U@97~kdA+9y8aXRc%LcdS)| zc^Q!uKppo#o`>2-+sqh5YaO7~I5trAAKR>0`U}>R-R_d+AwXV)Mo+uHGS8=NQE}{q zx|W3NQyUj_t(N|F!Cx8an2K>z)c|_8QN2yG?hEvFsr&De10E#Rup`+QOb1U>s?mjr zFUdo@>L7C*Xjd+9^%a_`IqGnHHa!p?>mF#=fpJLlk9Z&Ze&QDr zrX`T=W**bL$`bF{eSsN~$|oFpu)%M{h#H&ZWi1EJv5s}piaGPkJ^=!wLwVpFr{XMT zufc2Io8I6sCgJ1;t0iK#hnc3<5ll~nn+1F5RN!E}=9^_q@#y$bkSzNvlRaGX6dUYF z4l&p2PO_~=1qdApMX@ynfh>z?a{vKz-IWR-eT=ON=NW_q5&^O`d8|&8_Xk?&;zadX zkni2VYlFuP&k2jR(lT&s@I==bH;{GyBWgVhW%lJoxO#s`{F7m_N-Z4=!U+9``@#VKN z@Za?b>dl>?RfBf0Bu`KFk)IHpA+csWZ4->*%>FM&NKZK*YGK)y6Qn0MM{^n;KDuUt zYYwQc7?F?keJ$rd3Hh7rIbSM247lzeMk<5my{GvTnyZeGwf9L)+|d~Lzg7aXeoZc2 zbxov;&T^+=(QX_=cL&KT9N2%HXOWj;Edu%i(`aMwolJF7`%9nnpF-fwQMESJO$A3X;(%N}5*ILmWJIQW0OtoDExiMmuYbL)w3U1dJq0 zQEj;Ovfd80E$z)pQ9q*j&tQe5T^Kw+_>@~C9VdI?4ey3P!}usw74mQ@L6&C&h=w}x zCs}3?#U>ujCyK060r{vB@)Xh=x(0YJ;z=!fo&_KJoI7-mvF&M%OoDS4{A~_t$ERRqS_uPBWJ@>5F-C8UfdQ{9oyia2nQI8hd=Y2kV z(CEF3M~~~Y4GG`|;@Tr*G5l;s&{eP+z3M%AQsL(eDf4ew z9fQ8Fhb^#vqP1@e&-r_R3)h|%4x#l7}Z`~b<>Ck6b$AniX2ue_HrKZU-FK;H#@hcJpZwphZmH{NX?bqSJG^+2ASY?i2e}4zV2pD8)bIpF4_xoGVhnMzBls`rI@lA_ z_wEmlFH#Go6{onk_OY{7-3)hqzG@&i1IL3AwtvNw%u%N~FDa*eXS)87|F$esHp#pk z%_>yG&BJ6Wk68VmNjC`ZDf6rrZBghaVpb6{9Hc!k5q5?QXj2wqzC@z#QnYSU%Y<<2 z5-+#zVcNPKRJsC*gko=3JEb`dt($_@Q90>E>=0<{=ymMy=y2=Ol-3;|{+E<3*agaM z>X0=A*}IkZRKp~b^63&*^J5B(Z-rqzyeiT%rsLBpL!n_b>3-fAQ~fNf({TNdag02i z$2p9m!J(eb*oX-^Y+;*2?I@@$6lOdmh!Dy&@4YKVKbv?>tZvQ%e=^zepX^R1BTG2! zPOO*gPI6#-$(tgC+eO&*2dTXXF;!KR+p5Z#;`rr=R0Z8Uwa?^DqrmOnfww*jzg1Il zn=R9Jn~g1guq=K#Rs&_N$^l)2uZfdaD3B#!YbpbU*(pX$r!jPM|xC7T>!gYl$qqH zSWe?2QQY_-7mWf}TOc-JEoLjyJSx~cMJC@kTb12F>TUM!7g!c|*lc97F~&sH4K?;r z$p+IMjeY(kE*ZP&H(}4GgZ!J9w;|@v1)musjGmhje~kJ*HVwEUi`|yl^xj3t!U{d_ zd0i`Sbie0qTX_TileKmaJ0+#4N_bn`4BO@PIFbtEgmq%HxM`MgzXDOJ&O{;lBW#zu zhG%uZpw$AZ>msNf9i#%Vq@(sa)Ryj;pC9w0jp87wdwkv~2eeL$B8!(Urxpztd=;>r zz2IATp-Ez<9F@2!hryk0AUp9tlDtkiRq~odRAkAm_o?}fdqVOOil<3?BZ?!^QFdBd zYeZ7?`|u9ke9W&(i+-QotOrj?a+o&~-sfO3a2oNfsPq>21rIu*=qqFj#$i0%N6Kfj z^s1!W!QpHwY^7`AY=)kV5CcRPg|6s3pA!0iOwEbbd|dLt;;yfN$mDK09KJFN4;e>b&PFoH7r41G@f?=nr&q5tW1y zYiGoizx!i%2u1(p(D!H%b4g{bvuC?gPuPpY2-xDQe^9Gw8tY36K_@5!|t$5;n#jY9VLx&vjc|_joh@n&VJmZH~&-8 zn7@@+^Jz(CJ|*#H#mI=SRdu+Ym!HaX~AvVceTr~0BKyNQJ29iXEq_QnVhB8P~WbK&Hmf0>s$27dZTsgF4<+!)g}h34V6;BH#HDb1xoMqOR*^T zQG5%VOTjKO6<>+9{yVJMEio8lwwM@a$l{V$%JaLi4@%}BQ~M>~DFu3za<-rx8T_F` z)Ko+YNrg}CJ`Hd6TVYeL-h4`Y7OP-Lcb538ox{gezKm6n`gMk^>$^@}Q?BvGYDc6c zh!iEe0v1U5%@~;$=S%)Oj6vUP*ek2I27L#HU-I8>MI^u`%A3*W^nH7vJ-i0cHogVe zFjkQ(?+eJrs_M3!LQmBue6>$Fn@KO0Yh5rLwW4zEPY&{1x zWO8E3yYR&zrZJr+@vsIFP<2tqSBM3&N!`|07~j^HZ;AvBxW#WmbV(993KE@YLVYM& zyv9hCyTuz7+3i^&{vcT=pOtKY`%CcDKe~&B3|vPtHgIvPF*0D;t@`XFjq^5^d@DtK zq~@_UuT6&j*_fW>jy%Dno7}2&zLhbbT84=yXluipuXX8WdjKuEyx!qd?b^18r0CJJ#i_sm=E4xjd zdlRCQ{E}Mt0JmdFC?89*xCgl=H13Us>+GBxvay>;FIT&vkekN!yB?kIPnvJ&p!sB@ zJP0f!eAyCHY3?Rm%yMG-hxD65Jl{m0>VPBU*7nd?Bulmb4H-Z8@)0RbI4czj|C0V9 zuH4Vu_?6$(#v!+awL2oBq_AWh|60f<1`vQB$)HLlq%aIK0st$)@_?+lmF-{ z>0ZJ=%pa6&D3LR_OQ`WqL>_hFd=rs>OV0{+Kao_g>*Xl{r zP&pGdM*t#XR@a%pDi0zJ<0B6of_=x?TGtbd0~IAkPf`Q=eoq%ULHMEC92gO)0OeE|0AMmQ@w%; z*`&mApv95kS6tv#3^-RWtg~ywzqygKXX(B6eqvvGSB6MZ=onxy2JTbnGVKFO*ZxBL z0X$_F&L88@0_TJ?NMJX*Ax(SC;s*lFVHvY0+YRCTnXT8an>P`N)dadA4$G(lL$P;fD&8r#9Soa?%K5l%<;YBuAg*8CDk!f(08A6@+_e(T(- zjA?F?3;Q*50;lOL>2JHcTcW$TWx53IcdKWc10#~4yas^X!If8=+R~E_edGZv=(}iKn zZxWgsF%x;N(OHG-a=NE-lsk8ZuU(L>_Ke)ewdHYQndiO+UZd09jRSKW+w4=_@Y5>a zW={{FCx_2TIOpT}1iY7sb6oiTSa%w}j&_GUcWFe^v8r;3=FQ;hLV49fT2Y#{ z886sKb+wgYzTAe4<}Q_Gt=rUe7!ikmgXl-D`5!3j@dnoi z12(M7>s{0{FcG%+37u@3UMa&FF2hx3fZUwic3Pq(FH!E^;vs3v-6V;Yx3~j3?^MoQ zQ!wAd%ZG>e+2?rrRwpzwmRmhn0izSc{ShC=^SJOiI(#0DGwlz3xIZ-E`z)-gw%Mm3 zw%ByRsO(?Nh<^MtA~Au`g_SsLAlN)^WS$o$%*x81HfM#r2^ZuK`xX_(Cum9`})vw4d< zW3_5?2BcN6l-Zm>wf_nSQQ?0U@20Qr*?3Y5=|!6so}tK1=vvh3=-(Z)zTX}5ji1=e z{jTU!+BvQH-J?}0I6lX{5ljTn-}eqbbANc87lz0AcAbXbhvOOO^H1VTWh7e=v(F)} zqjA^aCqy=l7c_P8Ep)Gd=;`a4H`c3W9v|85s=P+R!Yb`5S$5z+lHKGg7M+ZY20j>=OGUsPJ= zK4j1i#nx@CAeN6j<>DXghdqCj5~uD7Y|wJY(E`Y|*v=kGn`(M+mu3m>5yw!uTa6h<54^?A{iNLDq^)g3 zOX)kt&^!Hv!!xeOxf9P^+)n2nu^Ijri`^Ys4az=AxZ{v7U=>xqmW`z-wLDY;qm)3u z!gG|+yb(PT!&^`iWUvvaU&}e*QC${4cA`&_ex0%1xgwedjP03DB7N$IXD z#^x}_;>~&upMhf&WT!NaGcUv1a$@j&*Dg91ZSt!w%ICX!8(h;+9+kgQ+x!Few^}WZ zT*s&Q4Y`K(A6nwAcTrB8(y&i)ro8m+Eb(r3F(#c{62!=zp9U?EO@0xptfszU<5;l+ zU+r|o0D2<7?5e8xR?D?hEif<78m_AN!=+!oi<*WBVimHYtg0b$a_vi)#kU~$6O}%_ zP|Vf6aD{%1m!HJ9cOX~XPV8H3+|Dv^%xcV)O@M$x=&Y$YfqMDcKJiw-H>$R#qF&9l zH$&q~YMRTof=aDv!Y@d8o6G3g7C!Sh*NC+BHBLI;8#bO&-88Ux7sXli@cgrMh3Dm~ z6zmo4qF4)_zvrEm@@lm`{LF+sep|0k!D#QvY0wDuNLwKhy&XFbU=H<%FbArtzGbC&n~~K@m~DC3;tf- zC9KL@2#@l7!Xs+8b469fDec;Uo8CEdAB80Mo#g)_@RPdcon&$I#zUYoe1_fgA|$Nw z)yN!*H!|K~a?N)Wi`8=mC7-#=d>?+Vpd~v|@_dv$2PJ=cp>xF;sT^f~>1MLaSNu(i z*=Tv95x+k|6uib2xh+@1#hUjh@9uN6**{=CQ8b=qO;QLZ?=B|$%!;4RX8bPR6@uZ1 zT@;4gmMbA(%?HBockE)b&q}newf*n!n*3j6>e~MIcKvkrCG>=RmeTA^m=7Cp)WApc zR7(xb#&f6NP5Yd-P})^5QXHJwwRK}uzw4H@{r}iSd*$>+yg{xNXiqJ=cgBM$DekQrE%>MJ;;KnBNu;J%k0jY(d}B zXdmd%i)_B$iSLr5E6zzOp-;+3TtyoWJ@O3^(|Tk!DL(JY;*s;C`25-|Z82KmoNX-T#baH>PU7rd!XEA-?5HC6nV}R{_E)f~Aqnv9 zksXeNIB2UG-O`eoPFCVQd*eh!_a%f$xjBJ(yEXdv9yAty;?@!e=N|Z$;7=n%p4e1mwgS%@h5!_2QNozS=bjB z*3LRF*Ti;nkz?E`=1=*Q@iIA;~-e~kZs_lwGvm_^H@D_NaV zM^S*`ha7|D$$q}f`s0iItbXyOU|#I zp1hjdvd&I=ZR>i_S|+Ba?93Xdf$A)?iy<={gCAqM@5EFu+ zW@tT|*>1)=SxzP?dG#}PQ%9Zuu|ur*0kS06_&uAhYK$Q#Nd6xx7qL#Q3HE8LGWhU{8B z@~+-4R)u@=ar%Y`xv(>2FQviy`QN+vWZ*K-Dquv$!dh=I#Y{&f9f6Mg17|e@R`FGV zq|!D=4vmbioBBW8rD`~(UD1B$&{Kh1F?XVdjNnsig^6y){0a3q6<_dc;MQg>XYQq~ z<$7kt)Qf98(O6Nn?&iW;yRIWzrESOl-OhDVidX11CD%LS@I2DZn|IEprI^LodpVS` z(H{D~`UGuh&R`rkeAaDLYKoIt%&3}*cyNpqN3QZJXTATHEXJbo5c93zx1Yf;Ufwap zhTo^U08{9?pWMk&8A2(oP1V3$!+TA<-kYLd#;fW!O3`v!F> zN&kachx($~hWO8bqm?bk{dXm2w9xU0xG=D2Rv{|8GdVv02>#RBHFCyq9eim!50({Z zJW;9*$2Vzu+i6>WmdLc9Jor9~Sh_s4glmP;-A|0}DR^e2_4bd=BY zyCjNvn|G`0&Y@@e;t5X{lzv8u8OL@ZgLE{#oE3Us+?rSPos=s0Jl`pG6d`OIcZe6Psmpi&y-Sx>Z?~Oj>|yyp#g>A!)-8gjf%kGeN9TX{ z7M|-ViqY0-8@5(Fy(h1LzMpywQt=a-2DAp|GspZh(rRrq$_%nqrX_TuBwe6FUB9(J zvn8!{tI)Wb)J+KthpIvEW%Mc67`!F} z?P2kIierucH#iUZ{J}TA-|94F!$&zYxt~Nka6at+A?ldFGl~8_j5EEq%Vasd=IWU& zZu1WCg?j6v68-c=CDiJaU>9lOs>&>&WCp}%`pfstpb)CwThdD86rCAboaQo0FV>zv z^|mgc?TbY;0LH?32KP{!Q!~U|^Ru)C-ayz5JlqM3Q`k=HUNcxLBXKi$L2Wq618 zrtmtiNq6vjW_n7t$@<^lUjscoq5#5zj%4P!U-0KyEiJUf2Ltda%Wk|Y3ADLU)Qe1R za=#zZ`M6}glO#9ZYeJlI3*NgnVA`J~eqV70?^qm@E0IIgZgH%DT-wb#y4A2MF+j?D zyi1)mSB!Ba!-t1;@I@Im>N%b)j_4*Bv-7SeP`47*+eB@)hW(vE*mxnY-&RN_3$-)a z7js$dfX@`2F~*ZDK976camAMDLe7DIRt`2TuZ&)`-fuE3uVk{8FaNHRx$Zl}P@rEV zXLKuH%+{W5f2C?cQ=Q*rOsS6dq>=-xQVumf&4CBT%gq<`VWmr5br!w6)zrBR?1`Wg{Lc7o>hwo?9H@pYqBL( z`C_4V!vEuoI)Auaw;MTQJCD}Uwk&2f6taHgF$MheZCGH)3;m_i zC)(8Zc5ZSzGx>BF57od!Io4B_E5D0=J6~(O)T+p$Ggb8~I;*tM#nb#tGv1+Zs_>?Q zllh2O?N66J)vO&zedjB7?Lf*qM(DUsI<@j7{{-paIvOK>6teHhO`H6gu-pu?2`w)F zR1+`16=2Oth>8CM?h|CVUyc|FCP)i=0^rq5bPN$ki~@V6HRk|hx`6RRY-HgS_!HcA z+gDxeHJV%1ak-B16;t{jnUd?c1?R`_&UL(8k?Z(7j+ZNOuEO(sa~;_ZZo#q2x~BiC z7+*C-)@taTsxt1@o2$%nTMd26-TG3MxxbC0*QFxkbuH*|G6QU0jJOjK-^Nr@NrBl> z<>ZSOR<^~{SOhlsKqo2wt}zZ9t`P6|0Aqmso3J)3;&IKb^mJ)wm>py1Y;IvOi;^)r ziZENA!SNXmeFc8wcm@Xtt1;^V<*k0do&HvAw(!M&dfVZYC@x&VAd9GGZGAQyb`nZ_ zw9s!?$hH&wZRq#q_-WL~z5#q{BnKaV@Wvk~|jmB4qEm#+z!oUw%;RldiCo@i_%Pci~dXEdHXJo3aj z@?=6_hm(cPdJs8NNZJ8+jHsJScU7lt`w)?>68DbZMxy$IKDySce+qw!1>x>r<2EBN02WzmGMGDg|_H2hLflYb0=;kOHy1v~cnlR>xv|qMS95espOW-N zo9ysjfd+e%{kZ#bX%5Q6Bl1Fc3_=%8@);YoV1bXa9964_?F&KnBHV$k$44$E{RTIK zxq#oWz__{==Sk;1TqUS@47Z%C%)4(4ASN+Mvg`h&{?5F-ZdFPY)*q&H0j2cNXECL( z&)$d@FaxeK8a<03H|26=V;Gj zl)-bT=YB``2JS_CtAaEbR~6}wcGOSq&+9H=@|;hUeI?qL*);JpeUtK6s2RKrKY`q7QL@dQm~P&z)=b~veW(-aHu@!)BG1J^1C;T z$#)(^P3&E^P)*rajIwONIXy|PW+EKQ7;`9NEE{9Y5&8dRj7_I-hQ?U!ed|^jBx;kv zW)yi+i_?k>`E~YdJ5q~Nm8+{eUKx0hn_Sd5U@V1AY{x6!^)+Vvk{osR%wtK#$;w;l z9ZAJW%GH!(rtp>d*el+@)=a{?OYr5yV-t!eDsN=AYRp>mA@Bm#3lBLDiT3XG=EI7W za-_LW8g2GUqs%``5$2yHgSki2o4X{PS%Q7+_n=j_($rvZ1`K;9CIoMSZR*;RXkz+0 zhB)8*e)!Ha;|MwS<*@CM1k$#wdARNQBw~6fhjcEwb+~g|9(iK7ACyh|y6cD01X@df z;{5IYDb6^7^V*OhONDGlk(LFJ8X}JNJ>;r+h+j)NkTuRmtivRxv7Bm9ZO}c_vkPYe zc?-F5J62i-T+ep@BqK@BQS9DJ2aS+m@W|^!Bg6A@#vt!N*7gD8^0qy>Wh7@!S)h!r z*ko!Ea=DSXt#;E%NJ+|2UL4{zpI>`DlO0ud2>t-3tnK!(9mwX<`62d2qwv@Qq@YShm}(4n{impb1|-6HGtLJ2n~nJQC_y)Khc`d(g^Bl|7c zr03ASg}|nsUc2moCtbgaNjX|YC1)z^7$+m1?xAwsszb1tie#R{j!VTJDvK?`7jb$U zeV_6y_+<%~X$hBUq4&aNTK=s}`>)EhA1YJPG82?CEy&EcD*H#Ws_$pt-r`k}s~Ah= zJkm33%(wox4nkJt8dZUQEic$Vp<Ir2`#w^cg6>QVeG6U># zB0SLd=0M)R7QJ*W)zcBG)hk6GT}$r(YYuuH@{<@TBUJLJirY0uSWusOzQ$O}hsF*Cb6)14XWbud6%=}3e%nf@3=Lc?_r|CXgaD(Fv9U+%$ zqEL-;8=##%;s$2SZvTuzitjp`+0o{ok<%jm&k&Q%hG+DvJ_U#TsQ)#TYFtLgU8vn5 zm`7LqR=jDyrfF2!sO6U-4dIB%m{7)Iwf~Q}$^8XxashE}7&p1q61nPx`>K5A#`gjP z=il4&kYm(x?c7Pg_eW?Q@K8BY6EbMF27}s8Lj03(1g(3c=1`fB`rg;|U zQ^>uNo>-Px0bhm`Iqe;3;j5c)wFQy|VoF79R;q*Luz!dVDYv`Do&|o7UWIt~>RBUYk&@A# z#G=GvHox8;-;q#6&#@ix%6S~L+wD?pQJnHr*Ac7S)pm?m&gzbFh_+9&g>t5&u$4TF zI79t+#O~!uT+P$w1wJu$7ktyWl(}-~&2i}}3LRJ;$7*j)hb3leAFtua8{#6?L z9y|PI)vD{8jB||h-nFZbjh^$a-EfSgn2@KN(!!_x#wN44(|+DPX2v<>ABK$ApVpKF zuPWL15Ukg`aUZtBu*4lHljfG__3gVD@<`@kM}4KW94}WPHUKZL^5;Oewh*vUeG$!k zGfIH&WaDLhkEJBDC|7(*yj45b4NslNQfI%^ioQZrHj|Zuou?{`=G?e!hsPrx-G-)~ zit8X-=ecD~3lU>|65fcr!Uu$xGyODI@hJD#EpdhMcp9xdg{^@zdS){s?Mp3nFE2UJd_f*kx?H@AvdzHxsek*P=I3Oq-&7Q{hH{}X zH8dl@B7em7>bgaK@h*WaX#0_cu#^8YVteCgejdJ8qeu!@ zNRWSx-y0pTmH!mv4{Xtrluz&;C&VJUt`_`0dyHmztDcnyYd^-Ll~=d&);?t%(Xmv$ z*KZy(@5$Z3M1b5KQyeo_1^Hy8IU12fxGaLm3_Bixtxk5VnGKLAyt8;zF|2%Ege?AI z&6>;ynHiK>== zd<-&)(X1w%1MSJrg*M^u7b@3iVEaI2NtHFcd^Nn%g1(1?G)rHa;Pbt5fwWTCsVBt8J z9cl$HCnI0qQU7im56z1Wb}dA9!55LG5kzV`@jNrfM}; zoGCL`GTG+ky!;5f6`u;v*Y6}cR`rO9@U%Fu>{^;{%FHS;IKM}pO@93#or)2v!|nEi9W3T@r;h8P9)z@n;3rC&R6xak?nXA^eVq z*XJ+kZsR3}N$m@%h2gMkYI{?2NNcY;=yiK}_cm zk+@f)Pgly1vzrD-Tem_FA16F--`5%?Y_(54sg=Eu2qz19LLBmHl81?W1G1R>)2-kR zaS%eiyhC(j#Yn1Xgso$7Q{AO#N6WGq|dOHR<(DAx8%^S6tb`_Cr=Z(_u?6;-G9Mk z7GJO*_4}=S>rwv&YrEfwC>boY%tmB!q-zkBV4ZQ6izD=jdJ_J!zB6Kn1}iq3ef&FQ ze5}`wYp0SUt9Zt_v5AA1WOY-X_?$hB94pdf|3e83T-ou!SkwU%paGyAr0L(I9($(>sHW(9J@)$nxSX&WoIFKk+- zGDhn6bOf#-H?(=UH+=ouybES`_^1z5)>`C4O;gP8B>S! z&nTL!mf6J98SupAb>*NKB~OeT? z*+d??$e1w0kzcs{_iDs#QOdhSYqj$B;Sp+~mCeIR0v+?;4H1*^z(~22Kcn-}4_+T% zKY4kSlN7D|o8eR;t!28P#djZp%kUq-?5<|OCtN_*8m)ZaFf_}`_jKJ+D^WRqz4A~= zbLPbitP6a2U6?+k7J$Vp9LNd`U)&3b{GhDnp|XDNQ?Ji$QDbzRczSKxbC7>4dmd%q zL+L)1Y4do#O`Mdh@~$Ghyn2wBp76hnD8->Q&{q;6c$z zs?r3SwMvPA{`)8Vt2Xt9=MI@nb3dwIG;UYD7`dH$arAcf#ZlXt7bCWx?uvexATHec z;Co60oWJ6~+I=%(x~L&hBXaW~XbpIq>yWjPovnheG?8Dt&@a)w0rYuuEr=7HSb~^> zZdJ>V;!ZKAW$Bu)G%C-l711pxpI)1xKC#UXy9$)#3YdkRWzN~B=5ivye;VaqBZn>^}BfAYKQ$#`l(}@RL}Yf%l_ra zN*X=eUZWQl0)`i`lA47G*e@V@Sc=KXFOTR1&oCc+ixX>=dzYO*y;Q`rETeM?m3n>< z^!=fAn_YrU-M^&j52|NTxJU-w#f}#2Ya&{WNqmw@h_Xj|5ap8lN*C*K)bQz(p_K^w zYJ;tPcmBQ{yE7+OUSq}hZ?rG=(AhvN3lPHxqbu*c@4*8jE%OEb328vkw*uBh=Y8wI z*ATfR@Qu`nEJ>7_{~VyWRe6_awQ|&X6$9M2{Kw9aQ;ym;m;^%9>Ou* zcU1q!e%TTzUNg3+9KB=|ifiWk6K@(*N!J+A@)krxQYAT~fNgM`VQh~Ewj)k25%J8* zIB#`sQu>tg6if18YxUta`x#)J#%iWG_wS7^rqNHLinfTSyEG3QotOjbF3*AO;KQ}D z7`Qw_HEuc{HM1#Jh&(r7qH*tS=Y1c1K+Ag!2OXbO>ikPO=~y#+&q+<3XG6t-mXV&x z2sqY^Q`%Nr9;Ut6QM$`Mq6t zx=O@brHRgaowSD^#2&F*dfom{_f+v8%KV$%f^p%pf(q6nl61YDai90y^T7z`78-Zq z_23eRYG1PeQNl(jzwrRwKiX@cKg7yFxih0J=sSkFLDz$S|JI}V<+n!V+uN`Bc5nDw zPAH_%t;=fB6g^+DS$tlBF7|^FdPC(`6sN#r?dA0bEfJ5cVRDbvTy90^y|C@;CEitE zOiaqV*~b9=*^48*HOh01@VAsJ4*K3#>S2pHZzAlLwaFp8PSYoZJFCX_eV& zz!;{~Vl(>oL;Gm=UonOkhzs0 zf+%^G&h?4+dxP2Or?m3zfy`LIeuY#lx+J=IpBU>5`c_}uCuSh7YBuCB$kj3UzGxFl z!H*cZ(wg(Wg#oR6W55(&jwql^S`DnEJ*ViLg~Uab5)Uc4g13<|-=t9S-Sq!njYkJ+ zs+A2xSiP-0^xba-^~ndv>tHEOIBNg>v+sL-D6AkVb7b4-PRKB8O)Rk?j_T;a@F9wN~`wbzs5~*WflyxDX!)t zM@gtZTHhz8%d?a2hJ4^2GYKM4D)^!F;MiVJmwWhaSb6UW`i@*oY~nDg=njP4?GCR? zD#+{F;#I|M#w8A}IDQd@eUp)-?0oahH)(qgKfTrxeFAys#PTLxG2N3U(5OqN9BWQ# zG#*XyVQLX#<`iidjEtoxFn3%ysH|#qarNGbkEw-Gb2L2yr|LNjFIO!xR$`7MrwR3o zgFZK+dqdAJ@U!DZ<~m9*kBukt>3!A8_@;1B7-*T(C(`xzmwjU_jw;%Q9FjZi8jQeC zE?KE#%}q*pEXt`bI(8ee^kFroGEtIt&Rq_uS*-IxA9vA&_zRcE60HZNUoq$PMRlP0 zTF_LWQT@rKLr@6}*;ffBCZWel^&3eQ!hw2aUe|ACP! z@JPaLx|3QzvctSTd|CHaBQEzcaSJ#BPINRK>ry4TyHo|yad|yz=CJaMWW_j_ zVlM_BA=`@aAi@@Wbg^-7B34)xFnSE0Ys6;6Jo++7GX3u3kX$FkFYoDmpxH}G9>9D$ zcamhh1&;^H<%hn%EO(`=(FA1QzQbKh*S9P7s7%&Fpb{x3ubPcH%^?~gr2CZTUfx5< z9}=A4Y?-U7G4Gj^%oJie(xq}vp7*t%v^^xgi!7{|%ZOw_W07DLT9N5|(3#j7^!+Bt zTwQ<&lvl?V^mJDLOZuiuWdgj@>kv(tjGl1vtN3r=_+_u8sf`(2=i6}Aenx|4d2PO52e>JHYvU+u4xV% zwD5{K{;hxCCcvrBn2Z00^f_rx*fEkqKo2S@UL(LuW1_3Mr2EWc=#wWM1&{S;Sk1|O zJsf*?PlTqeOEo2_GZrxv=k@$hgI_xVZ%oiPHaG&)ddS; zyQ~7*gF9cd?{SlWGBlKhXZRi%j!VuT~YZ^nZd$7p9VNr^@rmV9sU8d`HpPy@+1s53ZJJ))=B z1xtA@TH+i&g?U8lq;{<6;acM*85F77(qa~$ZK80|*qnq(Q@ea66NJ>_amdE=M-j0q{Z8vs{xa*rZZ)TcUt1`Wi&if4*V4M5 zMND)3GhqqX%YLVAP75O}g)~|tdxOu0_x^@XqLgzp%Fua6?n34US|8eTMikvDL{L~) z1bypSU>W$miQyrS^JUY5dfg&gxBJP2x?1o9q@XJi$o8owNj zu`8*WR(=HXM-@27pl{#MIh0GwV~X3bTdbZ%bpup>ISMU#;9^>f2CE|7O&VHq4ycMV z;ENcGRW=7Q5%)gI3x;$FTKU=wx;eTc^Ag=`b=*?Ne~C;$liV0!rZd_09)>l~uXHAZ zUP7M$+B~&?!IG(KUz|h018C*M3taJ`*tq$`TnfXUBCFD-d9q|9$@J8$njsjI*{dVG#Kz>1)ZK`0#|9?y z*IL%Ka+tLa*~CrBwdU5_Cw4qiz<$GdwiGa5&5_xNnSwUJUNhFut3G3@YiP zEw!Pgd|>M3mcpubns9@F`bJu*QC$^kWhPpg>0zdgPh2(YS%mbO^tm>{#7X+owj9&Nfo_(9SNA4y~i^4HKqY0c?yYY;OKt?AVk zw%Y8?+NO4`yl042+CfLy8%kT~et?;x753PfZ)hLof?md8jFL>Bdvd1VlelVfrq;_M zcK|Ve>sQro1Aj1SYV3(Wc}=4~L_9HF$Dh1bT?QM-BxyNQp+nl^CHldWpW%P8oM!MyS4~rU=-UmRV%cW+R7#na z=pmUzcGPMc40ZI0-m_59Y%xIk{OPcvA$|g^r*;@Nzbj>h?|!JZkFghm97EJfj}`-vC~n`2w23#xj`p$4Z%fV$@U9f_y* z6!*6+;_6QOt(&UN8uSE{%GT+;IxgB0(V_E}b049Gs9IgGlx^$%@_{=03$0wLDixVm zOf2H=M1vEt$%(ZIpdU7QEY2zwkpnIQc*fM4%nALrJCi(IJ=UqKD)XTYm=bdxw>7CL z+Rsd|rX#;4zA#2|^|7tUj^b5Cw)M`eZ7Oi}X4MuI6!(*5w!Ue#kQQrRN=WD@3whA_ z^xE|9F4!P&P0S2}oDylZ4D*@hCYLxgEN@Qy% z3y_vJz_w1#q>w!NMvtC-*v>Vuo9paPv_|Ya7OVFLuY0a_$!e?V<^s$FE$Q>RXkA-o zvGv%;!)iWw{()WZgDcZ{7<`u}Tos1mo?UGHJBc?4f0rJdc2ob>U611bOS^n$6X2s2 z+X{TFDVAM^=gua;axVP4-?iq6v&H?UHMM7_2+hJGVUO_G+5a>S=onxd44dhA;9E6Q zR#>7u_a~C%PcZ^q%VLD6^t9Hfq=?rEvLhYdL&pPG$EFURWgG5>=NRpaYymOile#7E z9wr^@3OLXeB&U^0iV@gNh~Jvpf0p{~Yu>=AX}6_D?ncc-EBsKKef9G{y9rUX>~m*bZUFq+o{9li>LiZ@*?| z>w7)*ux+6DGyJNXwuip`!O3^O z=e9D}e!7Qy{{6EzPds*(Oz{ApWMxDvm!eL&KL0CV+X!qkGmf9t)zL3QFz6a66s_lv z?W+6!^2iC@>)rMA_nrbhY+q+uXIdtlP~&O_^1c{>>FK6W-_ud{$lJ7Ry_@#E*7Hsx z?fKBi44$ue`v&3q{2RZUZaOQW95Ov^Vk<3$N_T#X^T-$uo?rAfxvJ_kEp=qv6u%9Q zLeDkS7wpFfEX}u?maHDB^_UPmpZhlTsJpq~r<3f=+w<85RsEJLa1uOkd7J7nRHx=C zaG%l?wSS7(`BSfeJpOIfv^>NSc=VC20pEFz*Gg#lA)Knc9C}Chwl*+s>s_h;={fDa z!MEsh{r~v9OL;!FlVXVRFf(^bms_azvg*c@fB%=ov{&M$(O;jrnQ13HI>50KSZv#~ z3~N<0orDK`HW(J7de zh-f*OczC2m^FFL~w4Kv*siEF32L)05_ zBN$4-4Vx{pQAg6@J2`muNt?Z_Cy$xk@2VK(wHoy1rKt1UKpddh(PJ>IaHoSJ-%+r6 zkF9Tyi(oZ*!v#NFZU%Dnz{h09ZJqHGV$sfnSxNT_pzH?b<|^#qYPMi24{fQ*m^aNI7Gut#9SffX`O(QJ`3p0XpPEH ze+zBR{S#WXSVv>M>{*!E$CU)_SACXkL}tCb12xEGo~(-c_&< zFmn5pzL*@Qu~U5?UGcxMQYNzV&ArQ3uBI39+*2W!4eF@opU?qut^1}1BBf%lut zgx6xn2t7@-{*hH@<<5Irn3>artMdC2mK7v@bGs0+>-PP3=6`zj4&eofok<}L(T5*T z27OERhcO=cy<738Znc<9rnr9BN=k+DgxJ=ph#Gpid@a_VukhXV`$_9xF*leSn1<@x z={iKx{)YS3{q)@{DQxP_@&rgEzj;tXOzWMbPFqwWf1a(8j|NV6u}m9p>&~nGln+^b zkk&6g|NL{x8!rCQSiF7r7hQ(v3}IAV`lzFQG2B;?NBi`PwVQtXlUlFe{7_4>5bsFv zSj~?6^$lt#wc_CJXRueApy+*Vy}<`ww9oaZ>*0OZpslBoqj>b5ii^3Qr1nVa`aN@5 zjBDLyb$v=h25=8t0 zXEhZ2#t!dq)Jve}n>jRQCtuIhz0spqNAF}elREVlixB(f0?eekp%!SX>E4_4o^a`~ z&fDa_xtP?Io$C4#2ps*c_>%5t_!!4)y)z3aEG6CRw8b7B(35Le_=uZb}aF<#c8ci>)MYB#4%>t^{|x_K>nE0v^HNhH8tcqKrhne65H z&mrp%8!_;eramTr6b{B>sNV-!U_Gq%;)Ob4rKC@S)sLAMx+HyolV1hJW2STYFW@_l z419HKLDcE}XdmlY1gR7J+|25_2e7k%oo5nkZ(2VO1cP+$JPx}Gy?#u?*sYOuvA|lv zaAd>i=k)>7TW_xwOr8+duNyXQihMqV*BN-jSRaiXS25R){(s`pBf)A^Tg_vhqEvLK2n72dU_JaL(L{p8811u^?s2Q|u%4A^&VxeS3sl#&h|>`hSDqUsXTNH z_ab*1#9rVQUw~|eF~17ghKlz}>HzEeQ$THJuD&jRhl1;$d^ZKGS-hW_N}>4}cxQ^2 zI9w61ik`s`dQC=E&k9^+P_El>zoagju(;nA!9WU!I8y)Nx4x(vQa{YYtEoj(_DoHH z>t_Q@eq(^0o|M0x=8IA>#~5p`1Pi+`eT+BHoQIf1LtG%9qfu-i*Xz-bD{c82@==<* z2+R`PNoO8?nk z(mf_|R1wXNIFVcE&$NAGLw*reN-ULYA4R09(_JbvdD#jIqmfVe{|tP(n~|rE9-oEm zbmCLL_5Zkoc;nQ21HOTkj_W`r)d{r4qXm7BdaT~l9&T|vTKm!E7Q>4C(4`jRS-8c| z_?P+(rYdOOu&y$iH_E+)BhQCg{upif!e<0_>wU4@)`dOH|E2Xgm|F>GJC((cN4qo7 zZrW-}?`xEHNBmp6nHiy$e{`wkX-dnN`CpZ2n-`(YJKk0E3w|^j48nAoYYSuCE>=PIfVqX+pv%)JSG6jjzYTw8Zn z7N8*kvH_j$03l&%64U@Ho$jVk&|%d<(6K{6t3ie!Is-Dk1_H|B0t9DR#6iFr6dmbc zl&CRmIyx@X%`yU!F^W!0BG63&RayJ{pQ;Mrj6ToveZTMhy)XPar|!A?ty}k=d+u2x zPsCyupC}n8LTdbiay#y-#p*H{7Vz19mzjx!Ysl}IA>`*X)gG9u ztex)V{}l_muFoePn;@qJNRDoTuVfsgAo-T?gjEKnv=cKG`zXmSl*v@rh#J8mIzCPl z(+-Fw>?X}q)qM`YdMyOXY%j#BII&V<5Rp{508zpWB#UE88*0V?6)D78DScOiS%kEo*R7R24H^Y{nG<7}ZASSv z+;36617oA5%oMt1*87`WL#6dXf5~@MN{l4vb#+q@lFS8ACLmyb9jES z{(cN*hw=X-|tg z>{4bL;pUwtTZZ>Bo1QA?`jGv7Y0m_>7`VgAUDoxIe&{XbcvSNYYM7MD$R0S z6=_xMllL`*x;3AoSY9Gd4~5}k!H#XveA-#F33V3Bc}YKV>`a$!QMd#*%4;Y z3c?r0oZyPkIC?rz;?*yRZ}@;u@qU6?qI%47vcyJXBfCizGCVsP-&krr8EoIjvNYknqc=AGj$~L>zlhke%9u8lwsc1OfEqdzfK9t)jjr5|WcG3QET6gcq zVoWLRC`C)Z4(^lV8V;D8(zRCf@hxNgkv2SU2Y`DW+T0;~c$w3T`(T$jX_x76nX2Z#DS5DCzt7&H?(#*lTYkw2{ z6w$sidMA+jV;er?61_RzchfSwZ27k$eb;<24wPSSwO>D#A2d1H9Otp zyWpewX_H>Vefh9Ex<3Lzg~ zj^3(T$PLpd#guRx*}H}IRNH98>fha`ZF*0mZ64tC=R+Efa(v!45;K$5=|kGeYX(Kr z8}B`L-zL~-1{D%tuCnWPF|~_@29H2@02yAd_itn4jzQ*^ht#l*=FDqU#yH=&WZdl# zcgiN+hIRG45{LVA!5fCOP*2U1OGzcupFldr9a%jMAegp!hR+oMIi387yW z9Im(=-X1MPh&_2z0ZC5v#D1$l&YVS0CW=hMWb=#A-DL(i@g+s7rw6)3Eo?SCAD@66 zQDf~k)#7At;4oh74ZXeZxEq2LkDIzgtmR1Y4W)2pvENoCm-JM*1Wi6J`wJ~!h8OuJ zd>f{Fzr+3y<&Dx<+2wyDJv;4P_s#}}d!Z(lb|q!j*qsd)=H&*nDZ6Hty87Mv&E0A=#cWUR8ev^NrbO5c~Dep%s zO`Jo1q2|VvF=?~LZojUbx!!f|1Ru52;pe@MB5EalX?iPz=gfJKX8BPo%Zh&7$}ZqI zFaz_9RvttvhXiPL_V==zO_6!6H>MBN+Iik+=ijfklX|&QHp4qbH=G|B@qF6zke%;| zy`6X^dY%g8;ia0!na{yHNH=$eNAnG$h6sai zBvY&ur3*@92j%To$vBAqCJ)ZK2ZM{szf_$EgtYWc8NZZ(OJ z*_h0WO3HqZY^|KRM39mK6#lhZjPGT}LM!&;qvzNg6Y=i1rmuC!A4`(qRaV-RYKnZ& zvIn|>4(}dc2|P=t!?R>bCC!mkP)R9OMEhM(?ykuX9BLfzusVBmNx`V?fu04ViSE{8 z?*~=YSa^R1c|7fjHS#G@jP_JfjLFud62KGx%QQ0K0{kc1H!)qgsdM zNQ1nPdYHM!?NNpMn?pNT#sT`ZsqSHS{cU!#x(2HqoINsz(`F&o!o4*X_*Z2&u&>6H z!}>bWYN;d{7|t;l@3+dp^#hJ|n76X8^5wiEro0~0#}c04_HcGnIbR;X^_uSWMa8M= zzThmCkVMNvOJQkmij41>?x^5LlH@hwvvqk9F4V;qQ|dJzzH}ZSJwB5BBOjmrB%w;J zrnP*Ow0B%qn#p@5Y^`)d>u8zG$l%GME$3qNUebJ4TGye+_0(Qb>bh#Z%B+J<2rTsX zmM$v$RkrVkjmvv|+;}LiU+ry}Ctr8)*du(aCac!m1C0q*_V;)vb|!~y-~`Nc4pL>A z40sj-ZjQNRI!9ep4x(3B|H~No#9{_H-^4qW5^6>7%Q9^BoUD^)%bDI4a+bVHa=zyq zN9&&x8UZv$|2{$<0Gw5&G%abw(^B7X&6jH%=&+DX)c8wM)Jd#@v-}yNaDDZ(Xd% zG$967kmOZY>Z*qrR+o+0CAG$ww3(6FuZm}|= z;Ze0DLd-v&8BN8OutR{ie2pQOy~pYJcb9-;|7-bdDPyRCh5c<9I(~FH@)B z+v5G@>J&zV9lc2mg$O^@z)#jNh_UrR{1jVGRk=EuNx}0}#IQ(3Ki&_i=^i+F4uYo- zcrpV|YEV~L9eKgY*vRW_xw;enB3--^rYA_t@|UnSlPB6wmT>-r0Q5qkiM(8W1!qki zPkyeE-xlvHSGU{d2H2d$8qUt!$1f~bU$RZ=%V(Q#i_b(%_{Z8C!;C#1F*|JLoP?kS zKNHe3NWW$wV=G6wpI|Lu?Mj%lUk?BDdwi`!f6J~xBI+I!OoDx?yr3Dr+4=^>LAD@y zeiN&0gIYr6>MkoAX=SJED~t&2z&co}dcp~RY|Ilk21^Ik8}S#}qXF{X*Sqd8`oY-h z(09t$!Nvm*4>J_Xj3|fNB1TNR7Q<;VmkgZ3GC5a*q+Ql%V7>z8JTNx4-oVrV^DQtg z_G_$Rg5M+^S2r>^d9?vL&C(V*)xX{?U_4f+lWiN--L@@(8S*{;TK|-^t!ZO$55H0U zlQTasPlon#X8PQer4i*+3j^DMyPZy0lh9B9M`LV33f=8PvK;GnQ6o0{(>-bq}QAEZv0lL#(z|y5tPW z>4fBIo6Sf1Z-kkoZkixOy2EQMQAIoD+PMkPo1qm+TRRHJ%6&DBw%n!V0jvY!_OX`G zO+MBJ-#x=A6`dKgWl(hKWiq6I$6W{${Tfr6p;;5;*-R(AT5G%0FziiMXwGYU6O;3G zC>#EUYGJ44%iyMQr^Cx-#<5(z+qqocp-$2MPQo1JC2M8p?&iWR6UxYfl#f=16+7Rx zSmr-s+mzP*Vx=|kgL0&$v_h=z`X*n=zp6{XT~b!6oF)NB(qK1XXEaGGWTyO*@(gw> z;d0rueemIzF(N(id+dAd3Zt^G`a!D;u<=iFj%(%YD*kfWqzos;e)TSYdF7-;C-ew` zOL3+KV7H(srfjcSpus&gI=*{A$b|Rp8hBV>DVDHeWwLWnfCYYai~&t3Vvl4I3pQW4 zP3cipc? z;cQpR-zACJQn?@Y4gT?75|=9msm_V84VD5<4xP4tfmW=VgxRKPA|_&X6vuYR+~v}# zn-|2HEXOxIlv6cx!6q{YtH(^_#a2375SM|8G`Id|x~*EeOGUNn*r<$nb zKhz`=#lDAReb{pBv<4MU5`J_>B9Gr+2SlmxQesL>$pm+4xBL-kBbS$WDS~7RK>q;p zo;2qcW$c!dbD5L3R#6R9x=j90gp1*k(hthv<~?$mdb4l0OnGO*mpSdLD7R;+jJ|4e zt=Wh<4^6J9l8bg`dv)Hz*qZD>nardA$J8vAR!O4R%jC_o;~=yB+WRHrtnhp$NM-Pb z!@{R9JRo8nr=7N-@)KBWNR-ll$Klp8K3m_zn_><>{JqO3rrG^TGMk^|bNJKbV(2#L z`T-~LZ5CAP^R%Ry=Bc$(Sn64A_hx!4VE>+Pwb}zZv|8cqK#$GzT2q0Il7)O1u+B;o z@(jYs8rUYjHMu)Gf*ro1lr2RW@V(vLen$qIccj!^>I6lgOk^NEw+ghxW=NTseU8N> z1yfUM%N-Sr8!hDCbZWFbBV&}0&T*sV31gW^pcML=iByQ3i4IgvjZ3N_#9=;ob>tN>;FirX&6ta9TKNI^zG7Hu-fDjU@`cRMk3z49@6Fk&vbJNP3b$1fwesd% zEpJEr-mo*Le~5E1{nJ&R!Fi1RxWY0h_2hYm%|BmZ${kzJnxdh5`c9YF@_W1tJ}xN+ z`Jm0*=tF7LqGf0iYg?-_lXiq_D>&GPUYw2c;N3PIr`Vm4PB>5zmo1(g!lE<}H;4@i zjxS)N>|%Ilw1_cbj~v4Oa`gF%KA!UxgewG&2ks`|n!?;5PP_MhB+NVB3)_aS4949m z3|)TefyKoc%+M#AroWLP-5jP9AZGS+kiLb^o&}UH&X$ltsKYlNQ!aG;nYgk?vC`gb z%jIg=8-!?V#OttPOt*CTtK1nysWa1U(v3;yDVhbr9E!`P_lF-lp?dQS$%Y#Da02JO_?YwM!_jDN!ifoF2Fa{O(iXK zNR?A7m!aHoXK=Hafp3<9bp19pYn{XAz!&hYJN@Y0ssqgMVerwl9JXxO{A|hLi-4~J zyp?+MCiHO}m}7Pyae&SSOUHg4x(jJEKI&6yr3GmoMcvMK)#_=1H5G%?S?5Uat7$J+ zK%&~q<_VGAZTZrsin)E)xzC>-b?>h-Y&l#oZj_MIcrsA2wql$6;;E(gVw|-3eC8y5 z4ZAAf0nCvhoeis%D{y|>h}|Z)3cNnhTsuK=sntUCZU(j`oQF~%)i&6cldhGRa*DAZ znwA6^QryGbx3!`$)s~}bF_%vU2z4pMqvEDjipp=$L|04m@VM*lV)R7Syyev zIbsFg5^A#vnAa%F8dJV%-!1?7*?&C?DfXB(Ap4`r()PE(naO-MTPl9`<20I2QRSKH zuMysfa8y~?9>F-$?$Slti!z)}?&&UAQQv9bF27!(V~E@R=XQ&<9hzl2CZ?=wH%m+0 zwCYX*PmAEJ_MI}uf08~|6Z@K_8&A)6W0k%kt72Eh8x_6k_TenEPn~jrkKWxCZ>zLO zT2?hLgTw71)2&;Gz4@gET=Yr1D&i_)N+mRi{uQDbx@s(>kA_?f_Qe-K>E+#(#^lt7_Q;$$Aa4GLB1FXcM4W}->Fe5`(o$A$|NDrlqn02nv+hHtGC+L zz)oxJbFV}5DGELYQ3yWFp<}J=EA)oH1I-kv*0I_ehkkwV?vH7KqyI(=JcT(*JJj3i zB;URiaKaZ1JpDG_$Cb3Z^WUoI=OqqjL8=hh)k4;G3b0nLZ+R7CKgsFvV)Wr5mcHxG z(ceQm`sCXetcE8tdTYsE%s3a#65^r)7Dkm6=${?J-2>e}VYb@vo?N@qc2&F(xI544 zMJ*XZWIpOB>YFW5J*z9&(Nq(QyRHKCNPUmKJhH??HO~mp?C}`$WiIFpdY||jYrrc3 zwWGq5`YOnB@zJgpK2qFfl2Z0*Iw)5ySM1cNkgW^SOqnM}fg|n0*Oa1mV$)3=thh&^ zE6PW_ZQHNvisDNx`;%7u(V8nu|RrG~tf9s|eCm^puc z+KYK}fNZD`rd&4g-9*B3Oim|vDoKh5{hkOe5y?yhF+#L9t;P5e7aG*{RLYr>56)J< z!X{?&^|MiijUis%3hK)Y4~)>ivvw%y?W2fpkk7*>YB9WZ&Xn)-?UeiCm$p#V)1I_!?o54p#o;Bk+)XF=$^c zL}`B$A~w~r8d5#B(WRHB!Jguf3&Aqj4hjbc%jdN7jj2yD!h)uU{5Ea}lu!ZDe-pWA zqKTJRLVg1>c5$`--V(b$F2cv%2{{+*NvdsbfQbt6l3X!1A^596{_1kK7&1o_89rj^ zNU1VubZK9Ss6z*M99v+`AV=a~VQUVnLg``n2|Rp`TXp!HX_XCM*k4;$y33@#rzi!5 zYYY)%>5gpK&y~}|D2J68IjY?Ev-NefUE`qsCm-{?a>0m)Rvsvlk>E8DZ?NdCS#OmZ z_hlvH9)1gwNk*uqapH5%nptm=Z9?KHg`k;CTptl9)=P>4i-KZx0(^7P9an1ZrWzY~ zHZ|5a#?PmBSU?K_2;-&3aqf;O=4QnMa9`fG37mvv{O9O*RkptZl zLLUWkvTq6w!hTL#;ZM3r$6`pZPuftxj(rfbMq=ia8X?Mw;qVX8 zb{aN}3l{W+w7*TCt^ESShVh}@mM$k~1`Hh*7xKf;)ReJGa1Z=sg1*0bSZ*}P=6R*c zFqQa1>|jOCpp+n`T%e`=Cis`DDZdOZsp=Wwm|*ZcyhFWGIxN#F@e$aVEchU-^{3mJ z@UTH*=rxP^1jTG@<8X5v#OapX+Dqym5#mh|&H}B!k^9hp_C}n4G1F#IFND7YCrDGI zd$j$%D8^>L7#cRXA;b(j7u*bwMSlzq8^)p^TaVM2+#V}lyiCf(e*CN4J|S)d>lj40 zsR_hQ86Equ;=Z9hgZN4lh7G+9r*jL&OFXWpAi0wdE102UntuC+Lo(HQacZjzJLsEE z$Xq;R&`lxGY>Ro6)0$4SAqdTdgbehK+5?_r2esxM=*7$&JErNDH;OX&(9B^^G!?wzmDs%Pk~{nhO~;;1 z_%_VjvcjTd54&)4QTP7OeFN)S^|>upu5eybK4`ZFO0}5?ei`nR*vw1HaM)wGqzuJ* z$pT5HF0irtUWc=axK(D2M!TfE`F`g;3LCY;!oe?9VN5RckG`!)fZiZ^khY@-PUQR} zEZSWSf9p6^4ej6K($VRhOwHMw-(x22apy&n1e4F2by936Y-Tepb`dFW z0?wl0)-;Pq$06Mi;6x2q+8hTQ51a$II1Trk=6K));8KB$*KiLtn=*TA<#hwDw}zY5 zoNYH}#v`2xxNHqKy_r^te%WzfPK@j=WbGlf)VW-fDLaU#pS}w^uWWA7-?rYjM>?#5 z6&lZ)_;Ib;iVh3rirg_hP`rvSbu8g?&6>6$hkrcoBCJ^3^prF<(>iQ{jDTkeV{?>T zixH$I<>h88xQaco#@i4QV4tNqcqJ@WHY%e!!~nC3__0(@NhKS30=&mY1s-c*xiyic zXBBskxsVnh8^tW-0ZLrpz2h#l5PB07pMtc>&KBi`4m}NbH4S6$0iHg+mygsQ;G&DJ zOG^2E#{PtXtyZ5fu&eg}+}yGlV-!4>jhV9BHWQwO%3)8D@i-!5G^zV?%nn`>3#@Mv zWj5)1X4vEm*Y`{^tZZo1d0G{29Vf(;e}X67jicu+572z_$bvr|rA@JTPozC`96IZp zGhhMDnpV0|t#ocw-?Xv$wG~_3D-g;Dy+W{f!M=UR)u)|rs+(+(Ta7-#ZW_mC_Xu*? z4)91e0l(1(%QLX}y$hk^>MG|1c+ApIMK9JI#~ldSSi2OamQMSg88f4=*SO7Qa|!qT zm)2^^m5#DS_~L#$c3j==q&`o)5?i!Oeam?amik%#SP`s!VK=q9T9i7h1#}`iZRvTO zb;S4QeP!2;56hSN9CEG2a(p&)AfInxZ&5-EB8wQNj(DWA3$K&s{QMDo$ z?m8@O$IIl@e~YteacNrIwH%y=tp!%Umr0Si$geTe5;5vM82UPxLDn~Uf83WDu#?G# zGM3y?l}7se6Y62pi{>9a6EFI=3~Wu>6SO%JRrbUZu!}E-{9Pixw5YN(mWXf(!ds#WWrVwG;qq8lgnbBi)52?G-4LFRuvH6}#jFTVLb$sYUK;C;@NEbW)542l!?ZaW zRc@`JIr;B5xaXDkjXQ3#n%))s_BA8ue0^C7wz^AOXC7}|$9g{y% zOHtWEH`KaDyrCiB?+0^>3ERysSK5#o{mgL*egpRXqMaT_xb}>M9fdK3QeP-?AzT{+3oT z@btu3=`Q&|V<}c$Ej-Bx<4bZG@dPPe3nN|&Bc1`?W#m6#ACBBQIm*)x$O;FJt6ojJ$eS?997}>H(dvha-#@7CZAU((BdF4xoFquwdjZHS(4k zdG)Yh%^+ zE1Ru^38x~y^a&xvXJ6F9SVwGnOaAkm@Pl&NxT7bz8?r}(yIF9E{F1}B)0gCDU&YG4 zbw*!ygQJSRG+lm+*|b9*CuhnJ`c_u$Zs2$`EFNXoYkd9gll)NVY)&r%a}M&U8PWHuSoZs&p9{X6sZ{%(Z%P zTN~#6zav`-4w8LnQO>=?*zYyg#y;)$8f(?}?=gN=dGse&tRIv)Mo&9=Wp`k=Zg?kB z*`@Dud(GfOWk?0JE;%Q4V*PiEFlSiC?}7HhI%w7KeD1NE_c`s{ZXO(19@h3tA9ng7 zCv*eNaoARHOvF5iD_^J9K!cd=mRN(CIdx)_YbsIMe~mf7>+wrY|7GPt$T&Owci;|l z8|2u#fme!A6`Dcitizdo1Y{F=)N#9Na&YA+dy!a9B`3fxKBR{@?iCx#7>jc{Nek9m z8jo9H#Ts|a{A}mpSutf%&1{rhqWzt({hh1*eXs_;vwvn(PG38>dSC-rg4Gqwg1(rK zZ@QC?3h;y(7~A8N%^u5?B@Pyo^U}ozfu-lqV{<`47r++h=gpcPOc}|$5(X)_E4Y~j zU0rLt;ST9kctYQgEfedf@=QY+bJ#zSFt+X`Q%h)em4Nzo%Rc1%!`K`up_QyE`$>#*tn5118o0a$%*nx z7h6?Qy++P)alr|)6LJ|DxHrqhth|J?TMKSrAPpwDWRj=5q6}*7KFktgGjmOBi#aNs zD27DF<|5h;iF5m4tXZq0Q}RbY`~TG6Ut-L^a_|@{8fDgB3mVHF;kYzkr|(XJHY02` zpbK!ldY>(=iegI<`uX+cRf7+47$v)nlH3u!BzJ^LBD`J(EGWt*|CiX~tH9T-WqI_= zf%#wTdtSW{9-JHqvAlkFSOA*uU;DxD@q6T1^K0cbfi3FKEKCf8=(0Bodiw4gec0l z_n-DtOHV@zc*pD+GTyj*hR<3}SR1f2sP7NY@ac5zOW=;v_@Nah%L$~xn?_E@gxPe< zgnCV84O^;VKbhSKc{SpnkoBZq68}cEddK#s;N5GRn!IjM#0>iZ{ops*FUN8R`$M?X zSz8lxOpv-n`*A(Ctf&#nkT2;eG+IfESGYFB#$0O%@viTu8pJz)0=Zu6cV;Agw z_sD0;r()KWv=aR^DhAunu<^q29|6LLE&PX&m)<$BwNHHIn`50TBw=T$)1|Wy9Y5DS zlNmHBwDa9H?=so91hM8Y-a5u%)N;<6Pqol$sMj=FtI1^4B>Y=VPNOEvk80|VdwIR4 zkHf{YKMQk#qS=h&>}*&;%B1I)W|QsngJA*s*>9yKdEq1EM!Hjf=neRo*Z7usnlk>k?Jr~-EX8i-+Vt( zy@OOfE!B6;J|orMs-Hfu{h$mpcma^W@NAM29_uNYabgj83#3L^d&0vB(yOrjZ;qzG zMz=1HgFA%*&7kWC)TKU_cr@kl(t0+LEImQ$(ZZfsZ84p|YGux-BaU?H!)#t+{?Upr z!|ad(DH*)6WS%5`nSza&LExu#nEMK~>@A5S&Q~x)ehA$rHG|eSqz=k{uFWTmGbV8` zH|+Jwv>TarLy|wjwp;Pc?#BAxHVl&E6C+;HR9@`g;~sI6%e^D$zzLGcg|%nsp@9!* zcRa?vV%p7@7q1qubFt-YcQ zy&g_+ycKrBM{<(Sv_z1Fh7W|DhNm58^}S1;hD@oL9|2{egbRyH#x29|Ab#v@+;Gfa zHU}a63S}PmC%5D7iygkNHQIOx_Kbgiy~{I3(IX#hoB-Lxer&pYU^?qq>*8_K%`nN( z_GBDMCHmRBGYxE&I#x_y>vDL?CJ{%2&gF)+Pq|G{rnJC)RW-SL~0Sf^+3WF;v0MZ@;P6AH!9(Wscf6okO z1}ULySjSIdJrUbaru{LNTCAVBSoDgdV>yzJ^_PPa76R7}J+=2YD8gj5zxIVjl&@+S z`v3zQrw%Z%$AKN8VIxXMY=nXR7}#+JwlOx&z`hUc6a)KxY>I*1r%_WsMNj87>)b4T zjB%R6=}CXKMoJkjNIr%Mr^}WlNK+tP7VmT8Zx5MkIxq{A{(^jXoIT)kyWNFp3ugg8 z1u?EEh`B!-Cjr;}1A`1?ap4OJ^7s^QmAm6SXSK0S2a3q2(k5W>)xaM%@;$ucvTNaZ z_xQro3yb79d9~cV31^8K-hLW4qnsU{=IphQ;XMTkgYJgYu# zFE2H0Kz`}Zf}QQ<#vR0k@a9>a&(>-hwbR(CIrz`sV745mHo#xS)e)q5@Y8L63~jdJ zHdh?*b;TODC?%qOHRiYz)91?5PWj_3%!$6U*b(F#V+^;nI$ecHdl%%7M!SJ&^s z>WpvQNgQ2Stg`yVI-5LJ-Ui=rm934JdxEEwB0H-^r_BeCPX!|A%MzsR3Hte5734D= zJ7n~uDSW~0oDbRE(L3jq zR~0`b<`>W2`4B?0S=jWP&RuK6AJ7JCbrP%<7td#Mn{j(qJm*SygI?0Atrh%=oxq^XV|$1>p>w^5XNK0PPTSE6aHs=mC5~TH ziyRM>Rh>nP&dzqsM`#YU$cGkn_WT#II<)94YHdYp&dyQ8+_M|>5=tGvW^yBFi{pXO zKPrQBd>N)3-=H11Begp#lcYQ4SKSGr7Z+ zRhtYw9-QC~#diAhtBN&`G(=rCD+}MHJ;5t8e!5Mwfr^7p81{*Ykve;lpQz#_l$#B| z@V7X*Ts{ci#sl(fjDRe!Z0S^4%=SQ&6cqKU>v^VlGyk0ei1}q^O1a|18gB4l% z&$?|Vp=EcuC;Uo$gz%H@0Vl67O;!E?DHtaEixBJZJwhcqma@5Ah-8hAHdCpO#6Al< z)OcKm^Qz-_yqcB4tG2-&HF>ZHcI`h6!*+-27z}*k_4toKQ`6pPt)dndRP*RN`hxPh zLO+|@NvEUpG1NHi0>*!xx-kp#O){I)E6CbQ5jrhTF`G}gm$Es0Xv;iM{CQi7sXgP{ z>2Es5e1*DEz`AK`!#zCmkATi{ZaUcuk&%A{S&tc|rA>;#k1p~&*xn$|M483tAs^ZU zf4rsndy4gP3bbU&6v_=n=JK79*?5R+I|u3HZ>>a`3Gz6I5jmqer9iqq35R_kZ-rIar8t z?3~3qiXUCRWD9gU2NY8oOSCcyv^+fY+xEC~j~P8=`UII)Qz0m{R+B4vxaU#uT}swc z@3P?0G^qEDiIlewsS+-|;C^X|4do5TC{j;hBfgdOq(PnuV+jq1yYgUD45P@|qL?da zAxE{9y9XWPU^}C;MjFrF+IYgAjf=+9^C;6lzT_EWOq21xI_q5y-wCK`8fLckzBm_+ zDc)D!cUNmdJ$$^GhdmN1`3~5hO=c-I>!sOL`CbWDogTvUxv5p0XA3-}msGzn_ZNMc zhGZ9$MLti*4Cg$2!!mvbq%LJ>94J%FaVcDXm>jKs~#&!?rJT{Y)ai_1IOlE9l z>Zd|EPB%<(dC}DQ@HRWu6XE%(pqxv_O_+<*#JK!GMbx!`53Zdn$XLgV*8025WpW<~ z3i7snYoUAl2~N0Kb%Ok?zuVl9I-)eBS`T!QL+27+*&6WF$MZ=ZPkkKksfT^3`mXpT z@}oU}mq&Z@J-MDc;lF*QC%0}qQc$|<(@^|)#4q;@sk;+(WULFROzG7h%d5S4=DOaX zE`M<#-}AZrQ+?SImVTlI+ryvvC(OMokn8yjhh--^d+foz6R5+w{jj{%7;IB2S`MVU z#&Rb~#%|vq}L9JIpDP%EH^ zRfzE55NCg2HnjjH*>*g{Y=CAx{DqpNx~ipflTZg}UmpW22-KFpbS#}ap~{X`%jHbM z9`1tPhQ7PuM224JEx8;E~-KE*D-#HI7T=9u8y-g8svkt2f zt?gfFyPwMjErFb2+TQ1~tN zWKp(@DOU?!?BF`8Qy37sclNn}U8~dTXPujht^U+v)aaaEY?DI1RC&DL9&ybAw{X_@ zqBQw={7{CA-dY{*1)Tp`vx{nmg&qgZCHcf^ z7BoYlvqPEIrh=N#{$pnz?4(;xF85>w&J~eXfrWi&PTNNZ!-vXaYQ9XGKqkjZq@*=PqPcf=&QADkH1j)s1Z{wH`$x9=kzXs9 ztPE^Z`#2p{JLjQ9tQ;r9JGJ_o!(~Xr^7JlAB9~49`g1|$VVNC78fuQn0ncGy5?aG# zVTYc2*cWe$AJGb14fFh`EZp&r244w%l(j4R5l{Z&3ab58RBtKr=;>ZVy3>{mCn#Ng zn7l9kSEIU`WgH|`%a(WliBYv(H>y8XO44=j#_IT~_hP-S1bDVDNcF(4eG2s+Qd0#< z5i__0Nw8{7e6DW5Ix7*a^)UIF6_Wdv|QJ6 zjK+!7F@AAUC7Z*RC&1dICn+n$T(%*P1vK-boSl9^FQxKmuTKiR)x$M+RI(_ql=*YY>k*5KRSriw0a6`#-M zZG~+T&dI_iB{b7`OBquaS@)|4j=1m!wP0r0GO#6GUGVK zWZ`Ula2lJx8Jrd+Wc8L*50wj5n~!yd!{ZkxEM{|<29LEz2xB#f$uZaF258hBm}4}q z^o%i1(#M$IBcw+=Q;jxKjRtnKk!o}UMuJM5u$YB4Y^^LKf5H-OG@ENWsg;R0ab20C z9eSG4dYVQ`Guor48T|uB18=4nH-ndl7EQeJMBWykE&s6kedbztWFo6wkk-pSq9)^) zksVWB>d1yPlNIt^q~-D3_pOlQV+!I}M^i^J+tg8ndJ711{p@6JB`?W{xizQ?1rF>r z2LSb%`{Ovem+6di`%C>+7mZ3v0cNr9fIr2>!0O@k;nE7Mehr1)DIWG7a$QCaYj#i_ zQGgimpu4d&^FDEv;!dr$BFU42GF{NxWf^V6M>?8f#g2%D+J`qH6kwfM)Y%3)PfrS5 zQEqIV*c4f0lJ50fQJk%w^quY&cu7Y&fy46j#k6Mjtw~wjX)o`m?-=S~7hmU&f(KZ3 z%?Div_Gs8Djae(XnE8vqxTxIYhA+4S;UNUXYmRgn8W@n(&E0KP`bgSn|(7YRVbsbE^)iwhbG$xV9 zodOOR5d)mPFzu(gfdcSQ4SpM5^n&!L=%nH$&f&%S?Jbz4#`+I{D*y8)0)87q`UNs zO60wEg|D*0Qz(shr>{WZny-Xu-{f1l9@q(s_*tbyiA1ybgV;|^nb=F21LxxMiND%K zda0F5w&0HPX3Y9#<>@vSK5`dCV1u)c>QSrnapO<=fB%T#q$)jylA5qHC16LK;N$16 z^=Wd6(!YCHOq)9%oUhH8g|8A<#oz#wG=rT{!X@D4krXZ3{p2+-miD<@+}%&@kdL1; zO`htRpSI2YLe0$dOn<7Ei9Cf;I=$DG7^SEfZ6+$3v{J5WTcHLE(zm#(&iZlsm<2sY zoZnQ8_^0oazh79ufK3{BIEFWI^88NrMO5Xn_vve;6%qO#`M7<+2$S~EX0($eCTQPB zU1rqv)U_7#fw8#DhnKw;UjQ_Unp}z+K=U1k*S(RFs+5DflUPTm(Da~~*{qytEvV}B z9YteI8a(i(2i*(K$I5JkXYa#VCEmmNW=c@4|LGQ3*L3&V^g0T;KOt0|nym$>kP4=#}FFOypT; zCR(A%LX;JH#uIe~jbcCnGlTft|2ekA|2hq;DU9Z`-Ce{)?#Jx5GGZotFSO|zcqJI= z-tV&xOC`wwF_4g%X?z_z24_@gZBI6ENC9r=Uf82?0lroGPj_pyana>moNZ$X;Sax8i zpM}jSwp@i=P3O7*8dZ~C=>pF@7^ldPjyb-9YS0|(3}4$ZM_o)7zsS94g>TuSBa3jR@zT7qR<6}_qLOfCJaX@= zgPTKa{^fAI6g)S8jVTvve(ZmX%BDTSvy^sE&mzWAhSM6Yr(N(Kmb4bb+b72tFZwR< zvM(1mG;yJ8K4p8<&BZ!-1^#kjDLuFm9w*_W6n?N9gX`Tl9%ke7rmqJ9X@!O zGVn?cq)|Wr-E*C)%xvu(M_pTpylA$l7{%*6J@|cTwR7UMXr}ZJm8b%Q0T?L5(#NZCP>c zUGnnifU3+Rj{SA}Sx>A3Vx4NCpC&U% zIIY4$%W}=Tre-58vjq1&vApi^MZwrx!`I3oD+;|JDP|3l57_S5t;WUny5l8YdZ{q} zXk*%JSoJE9{tDVkr4sTps02qVe&8+iVBqhMFZLAUyR_3gP5CmazG2;SZfhaOj46?&V@ZM>%F4StJQ7Qt~4kl@p+Y~C6p=Idl11-Zob>v-jlgtEs1v{cX3)#&~gvQVLF9*nP zx}keG^!s2yW&^&Fq;(a;ZIjDtuB^dbbk@NQLYEi57t!ruZ5=ia`?A!{iK+cg_ zN6+cAA>4ChnT_eBhyf6SO)`tBJP1sba~Y z#wUj-c#0c0=KT$rfhDVrImq4+59;^Tu;4fsMk$OPTv#h^86SXuQ{;2ihY3S5O;_Wy zoW$dd6q5ajuF?;IVw|@6hmzH)H*c{dpV)%ZxDljA+?Qfp;Aq*X!hJ62%#AnQ;+{t{`O6N5kA zL1N19udYf4UBi_5h<8MPb&8dwi-o*nnE&EYW&ksgtdS9QkGbD$#kqvM9J_GBXbIZ_ zY(LnhgLTfH@1P9q6r|ZnlGrxBaCB;}>6Eh|E*l;lY_vnt4>6i$icVa=Y~j@Q=o1>} zMNe^kj?9AluI9EC{Oa0swka4_AY2Vo$z<=Mvs75bfsZuHDZMt+RXnA;UU!o$muh;P z1!#R{SaH1%JCm8JGPg!mD&8kr*jmYsgRHg`v~kb!1sekv^D*zz`|T?|^QH>I^f*0w&>9ESfU=>L-*d=JoY&5#RX z2BlzpXuW|ox{)hVNT(j64HSBCM zk&0%bS0GO#vEDWAB#94ZEN1ga?pdoh$E{Xk#GxWmz#;>fzv z{qUB+NBWt1VO3z_$)iV(G*t>KCtHqJ#0_3mbBA{n?ANcV`L^O!H!QITiyGp2Gc2}J z-tbZKza4oB<$0dkn<0@8m)`J;%Q==ImWh0=3c!4Ej)AAQF4Ao%8+Y@tq%SzurB1~@ zff_CFATaQz0JoLD>OX+XbKR_+Q#Ue^TElLmej+xf;KZ`05Izr>@}AItBrB4c(i!!R zy-Z|}O8yGSnm@J7i7{d#FHv2^D^e#n@MiN?cmtpsIn-!Bnqt}Ni86da%5CtjyB~7$ zB708e*S{i<09DA?k{j4WelvOAwKgO&g;9pxjx^@P5u`twh*AX!lkzx>h5O6GN{=k;@07`ps>|%I{w~cg$_n>y8dw7} zC7ntsMrlmsSLAWP@d?TzoDFwPOk|p>pXGZuSi0WUAST*Ur3N$mKKvz%BFcnkk-w&* zts?dGNnqJT)ZSC?Q9+sFO<+l1e>z3K*8kLEEOJzk>Ty z=K1}w%i9fm)Am-5{c|ff<@VH_t-@G$l;Qr|$}cKP85?DUqp7ABDSr>Gln?PvBGr*f z(+fwUF3XXq&CIo!uk4E2Oz*nvEvC!)9>V2%Ap5Oh>s*<@Iz8{WvOQnBte#X)q&nWa z-p#=GD1-0JT8Xb_0*~)^J-$0@^(r^MCeQ@jsTFRAWI5^S`w~`5`ht;W7-Vm}th5F+ z8f1i2_DIULc@f$r!E4YoUh>u_T14mrz>|>4IpCM|Ch=Db zzn14F_Aqzpe<=D(ZeqllXaSFEOx(EouD_jF zKeR71$Q60Abhn$WeG;Cr*;~x;=6pW%XkB9VgI^wqc41dD>;PD2zxAbPrg$)#X&KOB zQOqr(YHsOz<+gf@*sH-Dk9V7JI?7n)HB9K52Je0oqOsBO^@;Hb^`?ZoF@q8kthEQD zwuC^`7H?`vXdMhbW?_8-dvDFymiU&!`grzZOV)`D%-69EqN(z7X}_SvW9gL7%(Uo4RfaGua!$_XdU!__!N9&|Zp-_|?MHh23fsv;Tai3)W6H>r&WK z9~XzTCdzLPPQ=JOuF0Ktu`LPT1AN*NF_^Z5ZqCvcPHZZjok6?gbMA9?IOjUI8reI)`g%=lWqQy&)x!@ zLU6ytu(vTX)?Q{(7L)b+g&j|T9%Djz0=W-nz6%KALw_`h^T)zR2>yMLsKavx?9xRK zQ`~N(t2!o#uWi@iCIhZ8V2J_mHQ)#X+6xWmL`QF|_%&EljZI{t44ZnVWL z?)^Z=eQMwqh-UG?hbHj|enA6w+hsism9qu7#dzl}Z6@(slrPkn#9hF-hA~;$yjd(b zWD=7Po5a_Ed&tRTjR)=y1NRr;eh1t`!1)Z^Uf`Yv?pfd-F>n>Y!9s1;Uf@<4xHo}& z4Y*^#ySK-ZF`sfWz=)UBdVs z$Jjmckx4uXTnaps_KGu$BmS!6jsxceZWM4U4BS6}yA8Ns0e9TModnJY+;ZTuP!^SU z8o0&4{SoaeK-+G{?+|bqXx~V@^8@dh#JXye_yTbI(Uuv&Wg|?u7lA8bnJhPJ79T<% zKEiJ|aM?V@fkS`sF9YN7DsbNe=f-^Tq5J~OnIpj2P)9LvyA9ljz?A~G0=S5Q`v|x? z;A&Ct9Tg%@n$iIKCJrKBz_6pI^ezlZZN`x`zLTJa7U1L6Xw-x_-zNS z0P~94R&$>|2mdEz_$%pZNS3@{1}kh zbK({KTl=rtGtj8#|84s_)6*KU?bjx4tr)Zb@4*NYq;O}tPDpFmwnt3b+D5Pw-~az( zJ7`?~ZuIxR>L;zC*Vors@Be8?Yx)0rL5pMkZS$}wYqBe_rs*0Q(-nrK%239oOOhV>&E8 zp+i^#6KzRMRsiK8In(;$ft}0r~F+yleu^1o&MSK@<_6*;NqVMmPlg zSAgxDAWDF#NWTs6cI3YU=>mv<1>sYO|6hRT0q+6+Jo49r1|a$|ALC2(Wq-U+qUXK? zEktYO7uZLMKC8ofA^I>K<4pA7`*?pue-6R>q;LHU#+%lV5~QOw{tc8vblgOQX>A`0 zNZWJsptf>l*=yzD@=t`r3|m5IwpR^ML5&uh2fC z_opVC#k)WQ{}uE7k8YFr4qyPV4dYjoiuZ~6cJ>b@@e{yvfVF_PtOl)(_&&(zK)5?- zW)`q09q+fNSFIiDAG; z0Z#yb8Tor*-ALVpxsCAcfEI+4dI(qHOK8tPgc;y(x(*IPxESd>VJ5;)A>0WI5UxRZ zIA8-{SHQqPe3Mi^ylJ)rruGxWeW>>nv||t87l1PX$9e_vLBRErAXcFN%h3Oi`(VC- zcH3#dDg$oAdpjq>MK(2XBzmh z5gu)XON=mQgg-aJ>kRl815P#I`>AGe^*;o$4X}1T)&<~0C-D9ejsyPpfL{Z@43Nfa zo&jA3>}$Z56g~czM)(DMZ?V-T@%P=#;)!Iu55R7i*8#xI2$ur(>}e9$SoM5$2K>~3 ze>7l~0e@w{-xx5Zi&?B%i**IC8c^)6m(yg#-P+%QFb0ylq{vt^hvM4eKkuS1RWP1HNs* z&kQ&Q`6<2%?Id{IfawN)hyghRes9Fj1PuQka~kjqKo{U=Stju}fL|lL2e1#qzem4+ z`7FL!zxEHVz_!^{-W|%}T#-j%DeE`QI-U%2+co^DsCwMI$q`Rd|5P5u8rrwzM zJ@oSX;=NEks|@%#(mjLvKSBHu%#ZH?m*Kq~Lc9avmjMr^qn&`?rJ?;OuRp%~G{8ZC zXOVva(hUI|16YD|eb(c>BTV&tg)qTMM*YJL_!i(@4zvR>cO&>gfFC2g1F#Y6u40T= zGQyPqYlQCv{tcA7aDz#F9B>fY{S4rFwC@|N1DRU|ad=;h&j>+G2Rt(t`wQ^r0q;e) z68PHzLkR!Y_+Hi<@HGQ|Xuxj`INpH64A{$n#RhyE<3R2En*nby)}v(x^cirzF&~%o z*3+*uV4abVG0HpHOOJ0dV6_3e8R>Hj=r!Q|2K-ZJKBK&@M)(IK{sHUW6|{h4Z$7Uu3}P z1}yv>d(2IOc;pPuupE<>4VrKxAP1W8h5g_~^Z>61&}C+_i1yqoGFczp4c-FiM*(;* zegdBF#ZP?;v?TZ(oA7)aek1TJ!7rKcKk=^`^W~W$ogSv>Cj6*g;~zwu7#n_0{9O1= z!q10a$w0hIhKT4x^hZpeIi6wCXWmAC^0Y_o&wPY$!mohvWAYy&a4n4ygZ$u^YJVBV zWWZDdK5oE;Mx$wVu&@6Is8|MAVE z@7)bP;m}{-`Ii98d|W@E?7_t%bN=~5&zWZAFfX0|^z-yX$C&=RnE17SvkNHV`hPTz z+P|t1eBRqluP0k;)AorQrgiP&eEj+3aqpx(AU=2JfY(2qe|b~Q%5UBt+x>69UwO-h z>OKu^FQxdtyf~%T%^Ut=PuPF(&9ZGnW}0T5&T!uGzn=TW+KQRInx_15?cFc;Xg$9C zH=grrBF}}JhxeS5nldT6_0<1E-MfHCSzT?zdnS`G2?0U~5EbPS5(${Z5CVoY;sg=| z4G?p{sOT`sOp=kw%s2-~C~8!+Xwjmjik4bysYQ!QEm~A+sl^tRwzQ>|*HX)?)Y6KI zE%v1r+wZ>jVPp3o(O*9w%d-sn)lWxX=e_<&W^oXaDgXd)KdjGTYO;>eNfFt3MdmyZ+62|NQ3Vf4k=| zPxpNEy%$Fxz2c9rAARxYXSX+R`@-70;%EJ7@|Fkw__tqv{<~kl-sO2?&e)&6J?FLP z-xfI6-@jwZug(hRJo5byo_qJU^0A9{EZXtq7eZ&;_w2C1$v?dR#H|0?@zFgqpByu3 zQvOqmuj^WL&l`_lw8RxV=d0g)=y1l@c5k}krEh++W#oqOBX3xEee`YX3r|}ISElEE zCik|BVih-!nYaCksjJ;nPRyL}mhXZ|H=Vz_df2kO8RtEEbM^OLJHC3|u&@r_Q@!K` zPkQIJ-(H+wQrrCZbN_hpm;ZY6FNQ}y(BZ#bjCykY{alHnq&7AO;l54tPgVn$U%s#B zGYsE)*74btvkF(EgNVLKx4bTlrrY~0%j z{{jA8_z&PsKT>>$;J!<>Ax$$|hEnZpv8?YY%y>5xac|O83;S2FR4@g~$H1fFx&r$eQ@bfNBcizPCe_=lbpZ(ord2;Z4 zC+31XL1(=8mZ~%#K=@(!Jt?wV5q?U`-Js=OLHOsI7T50>-a+_1O0?TvJ2 zIXu(2M$7HRTsl|N?zqC?WF6HZyhPJ7K}*&XVGWb@+c}~kM!}BoA8QJiZyX{Jc zGaZGx>;&cwO}lv+$~mBe8=bVnN6SUQIl#ZPz$Tu?e22N|#5ZwH4c*z8tGwXt#q&PQ zQ(H4dK_9|&t58TI)&DTa3}mJ=xfpCUX5@c{H~NV`sYrC`oO;z za+~2vx#lW0RvbY1H<~t9(}s$_8}UDnHFxgsRs0{Kp4fISgzGe|_fzUfpd5v0v+K3& z%{ndDpRv}_wD&$GeV2~^LoNGzofhN&($I9ChRT1Rj{laH{m|qe@juqIS3V{E-8%m0 zcU1Xjr{sUCrhVg6;_pX);@RXqe?dRN+RfxKAJ6RjPk>IEZ?o$AzeV^RO?wP9jzIkDucX2naXZXagLJx5(h2_u=`i0Ge2=9}Z9TBj7o!kAkNhY4}}ae2EVZ$}-@y;d9~h;i)_WJ{vw4J|CWm zWx(?slj%MRZ`|}T$vG(glzLv`Q#Sel?lxQlPubDilX4&8nRU9a|HaC z@cb3{Z@@nR{|x;1;9rLS349CuHSj+8ZumI-4e+}@d!@mdr5&S3c>EMlkzZ^QQfOo@p!iV7F@HfEU20s@5EO`7yIp_KC zGvH^#*T64?M=i>>(M>}0r`?s~Tp@PsR%iNbN1p979+9>}q@5CJt3=u%kv2;- zjjQZH**93y#)-OnCH8}iPsjLljQ`p+(6|t>8GZ#FkoY_3 z`^hVKXR_DfEP2V{{2am{_6eY+l{^q|3mm!;C}}HD|qsa`=2n@LO;}P zF+sFGe7jAoLzwq9D8qA)KKKn1 zmAEVQtAlv=cYXiz3YTbHuH$wArM;t(!kX3toC1B>NUaaLiZy0q@?dxy@=L7O7%<5G z0Qxa4mrc88e2w)Q0~*(B+-AZ${x*&Kj6RLo>}S-cv0mePjoUQt8>aK2F&hRe<7qr* z%7acI=^E=b1~jhMxJ~0ejmI=*YyHI<>ovM+M57n==fr~KYBbE=mvvi$Mn^kmpK!qo z8Z#a8WacflCHolVhzuLgcaeM#$#;-^|HyZbd_T%}k9_aQcaD7D$ajs1HiWae4DmP~ zn7sE#cn1m3=a|NG$0(^0zr~&?ia9HS^8@$~;Qs>uKk%QxGmkEc;(_s5u0apA_SOrb z<4X8A{1@Rxk8tsQ>^WF`oYHABs&S4VBR_HMqZGlF%`l$xfK2lbuo+g$a1!CBz(!mM z57Q{}Y*K$Z%CStxRg&t{3);Ie^i2dU_<)v)0a@2S=0XV%e_&#C^(wz(kl$@X=-UC> zub@xm7ssqxW{=jll?yKDE5do9bhS#~XqJBneU80&myytC7ug8Q@&lQ_Z)(H%F_A7u zmDhpt)@xbCP@m19J*LacHd>}-yjtHBDrb4A9PYnY;v5G4muRaye(!KzfwuS~{8vCL zfu4Ev2ww>d!C#2y+km70+u^(ez87-$Ap9kGr7`8R!R9)FbPa_`AJbvB2d(Io&Y$BI z)!v19AR})tbF9H+59^F?o91~(W=uEpyr*Ru2 zA%YK{X%x~1kjC$IXY4+Tvi0IzV0eb}9r%yoGjY~E7XHXr(C6UyJcP3jc)ru8F9(lv z<9@s!!0;d{5oYFUfHbYqujAbvaK5H50n)Uu0-B~paG-O2=}P~VEiKJ0V_RC5I?~71 zMn1ob=5W0Hngc zut5A`(Oj`GmD6@6W}%Xa7S?{q_WLbj~-$M>B5`wJ(&4&3{}gcAOU$H8;A& z>-WqSO}EY#n@`LZpLegtpD+5JI63h%;>~~FFGk@K>*xzU5Ls7!UUX0F7C*ajmdJc< zikQFTyW*jai$%$w+~WBuaq;_ie=IKg?1$oiW)BnhHr^@zzT!_};?wRj;#(_(wd-eM)`kS~zO`JeSihSlEHF*dbmjaZ2jw!i+vD@J`Q3i6e`R;bD@?efJo)S`_peSc zyzSj#-}Q-Ld|*Uxc|1irkfKJ4CL;P%INoTyEx}*{ov}oa`V)Z;@B+R>(ChIgb4gx2 znB*pS#l+ zbI&Lj5r44L-4^d~hvTu7fX}xg8G@*2Z(A9LY^*~>gXTdaVzzgAA_5o{o|q>n+Cxzh z^#{cYcL%}&cb5kxS>cZPyL}P2Kj?=#Z@b&m-tG3reC~(`AMKt%pv{BaMUmKQcOca1 z?v8f4Bk>?(xmUJFd=L}yXq(&Xk9yirKtB6|^3fmd@%lTV*B_0C!@dYmW)9dH@r3a! zs8Pdj55^(^ggt?9mq)}xNg+!vv%fkU>w>ht}X@usz(XP=!HaP{yC{@dtcfD;Bas zVPDYd2za7hmIrATTak9F(3>Ta5}bojvzeYuqcWLqyEmI&pXwk zSy-;W1iYW!47|C90rAqMN6%w7|pwCQekvbBHgM& zv|^hwT{qfzg{RXelx?pNo@f-R+{$)LAQX+kR;eVn>I2*ZO_)+3|&qiC0vo`Byw zh~){;W_vB&jlC(As!6QNRBfWk7qd8qSiZ1MK+FsHU|R!-19M@LGIrrhO)Nnil-%jm zsKF*xhoTHpknAt3BL0{!$;Uw3;ft6uH2SWO`(W>y8VjM{azqg=O>-@;Z>7H-T@~X~ zC=#!i$p>}Unm|m+PuDKd&D1(q1)hp+aga-1LSJT2=%JN0mENy1hh(70_v3$iEL{$yj2)BX(rP%6!c*bgT8jOv!NyOVF(dl6qA5gbVNek zCYOdcM4A{_e31^!$5vtdQ^XR(2Bd~4Au{HP!1iFZSaPYx#{wkk4n@4~+2x5fN!$~O zsm`ERDQx#up~#Bs#f;JmOUuMnzHnD>#9HZ#L@_B?h0!e066P|c$|?*5;#M~ZC1Fug z5{~#{v0l-lJ24DD1i4TUau7jRNXGGcdZWcEdRHhOG0)xpU>psmIaob}f?gBq_6Guf zP0A8Y?Oi@^Jm8B!c^vae5VeJc155%VN*4MrN8M;umRMYa;T;okVafC|6kaaEIA?p&ts=;?&x!}- ztd9uoE7a^(ROp?WrF0ll;p%v?kyOuep2VYd0WOlnISpdbz-Y+u!p6%jOfFs|UxdO0 zl-k0I)$yrSnL0g&GUG}M9;t>23f+Z_5*;iR-BGTdN@Nv_ zYV7`C*j5mu`y8t}*(_xx6;tPk_E5kp=HUZtNfxhEtnx&<#TEESP#WuMYOfTv3!7@@ z*4Nbv)%V#Mt}YB;BT8UVW>`s79lBOb6+Ah{=@}!69?bz%j#R7sUX+nmz?mh2^=vGK zfz>e==$O*tKH0&t#1*h9#!jW_wUUKhW5k+L7@d-Zm6e!d_mLCF@s_EDz>V zRR_xQ)X;_~vc{^iba9Q$)slQo7F)!p)eh2;s7Iy5Lba-<8>FsUs)L2fmYpNKacu2$ zE_KQzS*cBBC7Q;%x@485Ra}EHLzOPIfv(mg^)=Sjx&+r`Es^sHEV;y&8Suwq0bdDb zK|ea79BKqsA>0C`&h_Z`UA{n|RDQZS*(rj2baM|54TAKl8w)Ja6mK(q0{w++0X4*9 zB48`FXNd+Z#kr{r``Y~-y)>3Y6xa#ZpqP^)YORYg0Vf_YKNet#9i-*!@wLb0mMu$E znZXN7CcW$s%~%+t8K7G49l5!X!-~!slHrbJ6;`{QEI0-VWD=TidVmgB)3|uy;!CQm z8cuH5qv*U?tFT7ojK!r2&73K6qleX`tQ<>M2GnO^%8ZI8R-7II)uNAfY$`x?1CDmp z&7QV7sPkA1TG11tJ|7lyf#gEZ6fz3cSBBykF44&XQ7*03N_L=zFcwPT7{^dgJQgZJ zxz!SuT21qi>yM%TCaOPGJ!WfWg{y&N3^_hmmvqfx-0G4NlrKCdr3SfaM`vTl$78qL zo3b`kMI=Uyju1{mR?*H-@t%?uzFt_QWzEBgV4ZIjc`Q&YuJx)cPg}d!*RdjiDR9+P z$kbq0H&CXnV``Q*s)YgVDGdT*#*9v-Moaw2zVM694$+N>J0mQEBBR*TJVD>k$Z zZ2hP-92OLrmHYBi>}m_Wh3#r{Tj=F3x1wwYAJFP0)1soJ3yV2M5mpIz#2EZAWnzZn zIwBCy5;a3u4W}2&DlGSwT2si%Ped`2qLDBg zn>iK5NNu!Ip@$f~3L9$lp;=Q(9!R>e7V=?0?Br~mpvwM5PH9$C2wPxNh1f!(2rM~s z!u}cc(Zaa5mXk9o(+gWdFHh=X#=SndK~^JJsnyIP=*psWJE}x=NR&rz&bZStvDn!$ zvL-Z^3M|n=k*LYG457`Vy}_8Lr&O$rO)o1mOc^j~VacinKEqX^QsG0_Ff^4BQZTcj zx0qp?&oByqJG3P7B9D^1exAb6(*LbmKzT}qsu3BT4Jc0<{{7gEJ{W+mvShww#Zy~7 z+7srl*10G}S7?>EXY{Un)ycQowHhowhP{8)&(O4JH!8i`|glVJwCNfM-?OinRRsMii zZu7&Q7`lPpYV&-H3s8L`G{3&4X@PtG!uopm+?M(C>l)on3$LmZi+!Ci8O;6|o7rA+ zJ;0gG*Kc*tL6JkAmco%&XOJh_*c10)4aCJn;p(0&5h=UCGrh`^r+t+@mKB+Pfu}q* zTz-LPMj|XCGcNE{B!ZAGzrY_(4Od(cz(Pu^6IM?+ni7m&jhW_}1lzLyV}j@iV*pEN zz*!gS| znN&w`McAv!c>&{|$LjWXcFAdm4Jmh1QxTwHPKCC`53`AC{ijW!B<(k{l^r_`S zq79gvaoD4_mTfrERq-ur?vPpRMp{G5r{+GXN7ZjjQ_UrH19DR9U+I^}Ty4G9YF{LT zyx_QlHV->D`z~2^;9!N)9>O5OnnVvtv79I?E)YNu3#jcTjG(S{p1ZNGxutP2Cy|iV zFfT=jD`CiRc&uw^Y6PbS9h!?^IRtRWz*8oyH!wqcQajxnfB)b0;@4B(0CroiAEl>CN;@j2VW2*^l?d> z`X)t6czq>92*GN4QuBswKNU;bJYfI-ZijL4xY-Esj*> z#DZhb6yZc!jaDt3A|eZXdbT{F@25Nvq-@si=%ctf5D9p~QPtZEy;e~QHzgAZ+tib1iqyZ*k!%JSrD_G0^V7DJsdvH*4y0{3JfKju=V8VfYybuGL%H)W8R=)%IY)i*?)MT`KYKvrGs7CiiEOcX;m&0 zjGIt{W;nn=i~|wfhr@wh^a8Vtt3vxlI6dfe zy0G7i2NTO*qYIO#uLpXhMYm2B{RVfd(2oUR81|2QLw?M;a^a>+2!n{maTp-SetGy& zXXY179N2v-lgkootR_`dE8*6d6&opQC{j3mR@4H7Rd6w16Q?>T;hNsKesQMbg%b#g z;+W0;~qENZ4GQUu1D5A1|$%;&NfcH>|y;L6bd!&BBp`@6b}O^vDsrznDI) zk-K%gYLG`kvVKy<_@YT$O+T_atCy>hB;6c+s8<{Vqp2Mu)?R)XF{=h9rA$yz)ZOLl zkuLyXn--SmYRdHC{f9PL@NqQ5cOfWv;;2gP)aBbR+|7}@|EjEN&R{(^Cu&2F>Vgl*9K=;`IN(Os~E}+d;9CLnu4ByakaG6O$OO;*mNJ1HuY*D*8s1H$5*O6eyQQ!% zruS-^%ZU`1n5N38=7pLsafisnt7~vK;^dP%f0d`9NHQ}-iu0#fgN-0HbULf-Ch%J%#17(%<%X2?XAs!bGmPs~0+gQD0lg%j` zBt=6rFRtKb+E7Z&bXsR>0ZZm95zb8xP$x92cKRhby$(QeWL zYJCIkBAIcoKKDu*F7L(QYH2jqjk~S2=9~}Ll6XXmTPcB|)_JB7TEyz~;6~&?qI?s9 zAUSM$%5-&A2}|^$^7wue_v_c)gZjskI9(r=hr!QVZ9_w!t@Wrq2)_Z#&1g@>v++1`Eub zE(I#e%F4?r0BPOO&1x|s$1Y4aeAO6i=Uq{`c#-cJxSQcMR7_+IS1i&Mio;>te;73O zmR~qagjaQ|p-_Ih^)TxOd9eI!5ouQ$uR!MXz?>MjaOFhh!;BkPFW^wa+l@6>3}baS z#yXrYrv^Eq;%o-T&Ul5XM{#58{RB&eJi3xoG|x!e{GDv6EV0Pfje{7>k*Rhm*Q9!) zz}w8IyrLq{hHSlbIBwNmVc~b7_>Lg4LsZ{s;7~#dsT_if z{ByBg2;l1uVm?3dw%rU3Je94oD(3cEwPJY;l030x-m&3g?aiIvpqDBn3cMcXVl2!X z_(%hnK5(HDw^ewZRIcdth$zQ3p1$b_sf$#pXz`Lp>-xCITcR?L%SKqw1bXD=wnyy= zrw-Lz@+@?ohc}hcA+Z?a%|;V@@HkRFqf%UtuN9Qw{j*BSHJjrJoRBFiOL9|2%=H9U zpp(_jo2UAx*2_0CSU=+CfTbi7?`az4ix(ei7QptFQ0gQdPw+%tmf3v!DdM6N-g`t8p!_;dVE zZL6*e2RCzNh3E|XLvp=S&S7GZ`pOw85?ojemMBk=V48y^rY9w)&l^&rEJb3-e3Z{f z6&W%k7tT&mGGs;*Wi zn`uJ6t}q?90ml9lCp|Bm$_-UIQSQ?OGYH&tq2 z=5#9$+qsIxDFueTMDE-;vyhtHE6W+hoCr{e)0oMT&nrh+-5u0hu0p>#&6lrV`Y&}c zOUtk36@}XaxDt4E*)>?nL;vaL6IoZxF|X;!t}3g9n@UxWhR1V2`Bf1XbCAu>sGzhw z=$PIJrr?<}doRG9-^p5}EW_j3O&X9aap=ae4WL zLLH9{90`~Ovdm6ph^Un*e0S7~%ZmwnH0vR`BcGR89AQ-&wH7Zy)AAM|*R~!kbTP^C zJDfunfIC&(htwKAO){mJNll?P`Sm)jC3#4|oz&^gAsIiVDy5FWEmnCUcU*dnB<%RH z`mF36e1)E0J$K4a;cz&rs|VHJ%nBh_q$w4jQU!XxD5`Im+EUZltQt{87}!s^4(df0 zNzNsDKaa1@;A99dIOQSP;H;NdR0_OrhCOr1S9al$7CEaTMP~YR8s*@k^wU!@r0LI` znWCpmZZ`+%nKeB{W;*Ux;ma&o{OZb0wu-JCE*jN@nq;Z70gEhe%E6zQ*JNGNuyBbb zzmkT!LgQnJWexyU73$ggUyUeNPse!j@5*xQNqy&++~XI<7p&Ij?&^s-!jl~Au!Xt^ zD?lui^bpB04aC89e<9i@>}LZ`pUDavT&c4Y0y8K;oo3{PjpA1Z>}d}AjA8g~bG_di zNXM&rYc9T`z+q8;iD*d^HfXrBWUZ9nEh?EYv!t`5t^LB;zRJq!6~5_wgP$c9;LDGU zgfDU94g{(~-I$kKM4Xb#keD-Pj&)UC!-6XtaXX>8rrxS+Y{Zh4n+!A+7H;!!eFoK` zZXbAY9ReB?XUrH>a2pJyEHN*RuQ6c5tS&?#b{OMcbgE$d#BBp)LdL+vn9#vBC(eU; z&eMUr4CZScp-?#SRTNy^^0x~=?wtt~Mt!U5d|s9B?!{d{Z2MuU*#6_xUtU^3euVz^ z7$0%46URih!tIaZd*t|x;Je~@1C1##@%8quRq7k=Q8y-Ae4V^K@g;J!z7b#H4z*o} z<1aVPsX`c>u@M=XHHeB0DX+T^qI=}49yh*jjw>EIQ~3TnPDNmHYUmh1)h9YhVQl)` z7@L!XFpm6@w@%!*!BmXvKSQ(Ri^ri^a%>!$#X-40Cne+$`}Fw>iV(+sERpvxSwqp} z39?&$mvMkJ$Auvo{Tf6n<_y+9Db+yzGmBpaxZaJg>AU$IGyal6GLB@io8$T)uAC-x zC8A*HkUxGffQ8#Z_#SwFajg1QK+h1=0i?k>=vNMz_E6=B`nqwli1+FJ%Rusgh9jvH z(@-*DQevJJ11SCL32Q&^N>9YS%9GmEhT0avi5XH96|5dNU(#WL zm#jKT9g5aJHo7`~?jalsC!=aoKYLTOp=wXwrjli2FHUMn(g)J;EjUkN#8}~0g4pM~ zyFK{D1Mfg_a0ZgXxF$c4*1uRCviPg|wTz*qwt^hWFhs$`_~nJ9(i8?S`wV1YDKQ2Fbwyo=@8Ty@ z(L^;$sjp}ZRY!OS!FT3~%=L@LDd{vU*-H&i9aPeY+-<%1=DItGLs9&20KWLE6>Evq zPHIR|v=4VU{UxO?ecqrsT-gp-b;5Jd7@yXa^aQ zWcES~pIm*WW{fN>zlY4U;SG^LvQAS}%{oma6l}nHF_A;ChKQujeFn9FBIAIjUuon* zlYMw#JsHMeX)M2o6i#*ynL*Z3zxAnH*tn&M#N^kQjOr8y1}gbOJVUUCVyJ=L2=g2P zUp&Uw+wiMW@{8}O99@Y%7=lO}cY?V8%k^pB$Q0-iKF%vyeLV&okV+eq+hRsEGf5MTXBOu8x_Zs{kcJw=f( z*ZRklMeR>Y%|GAJ^H9_cWhq^gWIY2)Hh)<|8?IturGfhi`Z%>eD|JCe;Q?zgNlIC5 zs&LARN1kKgYp_1GV3ZqeH%?|yfh)bRM|^F{Bsf6yUkWH){Z#M@jcjmF>Vnx&O+pOo z!g6((TvVz1jBMkMAO<}CD4(t;d^g&Sd!MjgWL?#6>cUd8Wt|VCs!JbS+$DQGrS+GJ zQuV8&B%NULCj&Vf_>p0hD>MnV;{8b@$M?af2M4Tri_A{EMx^XnduU04WpmfM41qX96-aT-s#a9s6v=G$q z4KjpZYQ#-O90T==AfAhO_hza*%>4h~M>GDeNCmw98*Tqq2IG^GzpKj#_}%{k`fs)O zryFG_!J}u`29F=xEuhcQ-q0%H_XM~zp6`jHb0BM*Yct5^m_3FuML0sbp8`f4rd=S^}Txa_YQ~*)3Hoj*!C%| z=z~w!cMN~SY3p!N@IY5I!-&-arr#awO|O_C;J_C*3uePO`usRY=sC zmY4MKY3S=tLuaJD`Zu>9h73JvOnf_@>33>x=z9^SXZSyH1^V~5@k7`J^o+}N^6^Y> zX>aId2-7qCZ@CTo(*%4M;?Re+|0n(k#;5)Jw{-t66DkU!ANTdo^xkVxmnpOj_*iH+MwUkG^~O6JCtX{Li}d^6*Xq7Kal*>z{Cn zKRdxc489yMv;-T%F48VG@sH#05(hwAwpRZw7cHmttTb}_@q6>xnn%z-k&h>pPs392 zoF$6cyEs&1 zrCPoX$Qr#D$i{dO$h4mX@^1+411Rh4g-$^j{y%|jK61yd|Ng6n{fymSBnR`*ngeL_k{BuQjZJx2#o}e`Pz?o zZNPHO&zAy^lscTtG#^2s^n`CVde%VB0eYXtwZJnGcH!?%n|dSGBh0ojPPNmEw;MfO z;8z$XkY%)s;TsJ9A?T%@ZP)sZ=r$>L;}?w_>E~%C>xa&yo3Da`f6I~XeFZ}Pu~9rT z->*XdTutAp@uWun@lv`!DbRnLMu@FCyiz0e(9tgF4Dwl(d-Jm@rCN8l7z8dr(1KKSE+Qpw=F!3G--v!#AfYX3^wdqdgzft1`AnDHoUBHilmjdZ} z6o@-D5>&p||H$aC#oEoD!dLCJC&8Z&eh&CcfrHDx_!Xlk0DjgWJ&(U;`1?^m%fT<3 zf&Q2x*9;p+J^jwek!8WJgg)BiYMnkFr7hiwFxzD#^y~v}L3kvYaK=sm+{J`-UJxB!30{1~ue zwnL_mN9h9i#5{1RNv8_(EdNrC5smeTR{(k#NdDcR(+<}od=Q4Q6=CY4YlZh#J7j(t zF5-uFD!mT_COwi_UmGCbpk-)hc?(p(CTW_cv;OEz*t8?dO=s%S&`FbZA~t_EH9gW< z7j|**MngZ0^j)A?7pZ>Q2V^_%0^Z@&SCxP36TQ7Dv zHv?;34rdpknQ|9uo!4u01tL?{!yc^;WCx( z>yWd+TZ6Dmr_XWmuUg+O>}l5^T)7DK3w~^|s^{&%TF~i;ClIDx7>C6u()&98tfi`r zY^)L4wib~3r)jJJvi;}ka6ORyz8T2&iU6r$rKaBqWPjQYWWU@CTm~$_-@LYfwHm#^ zW`uVFtAQtgUSI+K?ltwc;_qf}0iFUr4BU+MYZ!UX#u}F4ZNOUKaUkubvRQ@aBL0gA zuR(YtP~dMTGo5B2`*luB|Nc4wG`q-OXzHN|{0h*FQ|M&dx0#saVkH{ZZYW<JZumRF-v`>-E0ulbU#1G3#82C|-> z*0@LWTdz^$)fynndjxdq+JW$LVBWP3C(gCR1UC?2<1jEGzke8>rt7bvUiE_xAlrGZ z#z%mx;YWelz^8%iCk4=F0rw$HyZQ%^c2x`dGT_5N%8y&5=%qmRvu&Vr+^9v^0(ybe zzihd~xflJh3*l0P3))qE#ejz~@!bb{4(QF-Ipn%~FYqwJbj&YZG5n*D+W?%kSmkr; z3N`Cze)#Ykm0+OIzoIpB^w-xkO5*t>_R;Dp@Tq{<5JKk0goWeeCLD|20&+iHUn9{=Yf|39nCm* z1U3WL0QUnq{=Ergzc{YZ-lFOwAIS77fU|(r(BA{R4&imcKLcrZJ3y}mo&>spe+9iB zICrVacV$@hW5@MsJYNPn_4FakdOCnG^&AAw0gl7pdp{3&0(_RkIM$V2%)%cvqcrjZ zIZl&vfa`&;0$so?{LOf_*IZy8a4GOA;C3L(Nq4UT`N_Q7#b?Tl-j^UJ`)5Se^C5)a zf=n60JAg-kE?_}a*&QCG+l5cNnBHRayokRg&YZpkq#e8pq~3bOV|(=g^MM-w`0rvBh!3D?m68e`lOnsd1UcK8;&6?$vlqBce#h zwCrN%ohJV|S1WxLK-zB=a4B#Dkon#U+z;$omh4vuiVAofzua&1tOdUav~9q-z>O=_ zIPyNi7Q)7{PV8dMb0*%%YZSj{mBYCkyi$az$2gTv^oK@%sg|$o!MKfjS&1;~osM>F z9P0?{*q@nrq_f^P^y7w;v`g?51NGEAV-^O@fmJvZv~Pe3kA!_-dcdG(l) z^RDS{H>%#BIBEC~X+7&9w+!VtdIR=9z~-CKAAoE7(EiZB3+GI<6XR4m%M#~M`8a1{ z9*tA{+5&UFR1H4s+&ER9pWN;;jgkikg3bcS!nTN56LO1gjlRQ0^;ev{v3 zzG|T1Grn=fc(9Ad9y9v0 zP(LjHnZPRayXNJ}{){~1+QltT8u>8v(oS~*PZ}YhlKbL!jNJA+Rr*JO&J?*dc(#l1 zvqtVJq-TM4400^jN#Mgkx>op2pI7DD53EKwd%d!|F5o_dEACSJh1Jl*b8=OEyBh%$u}6it>CllYk{<*OQDDDxdGt~sK+jZSuX1l#V-ajpJCuS;7Q;DpzG^u zJi8I{thbE_(|(R=+^X|eyG5<-HtcPXN-d z50<<7n<^jVvmAR6W`44_s&ZQzD>N?9xC~eix#Q5scoW)_?-LLdYvJu8_KK+|7x=7) zr5Xc33*oKMQ;httN0{~YIItXe2)GY;;4xKihc#~XV!QzTE#Ok%G0;x}k35d{Vm)lb zIwj>j1Iug|UmQJ5*Fx+m)!vmpm7mQB7eJ_Zqc|+ z;|`6xH15&3PvZfNhcq71cueC7ji)p^x^($9<^kD0XX@}Ijng!iYks8;yEHD)*r54K zb@*D19U6n0AJgGA8rN!Eule`t@Pis3(fGLLZ`a|S8h2~ltNB0G;ny|3sqr1nKc>Sc zG@jDv@T>A?Y0LrAp7J$Xntq5E+wC% zaRQKX6&mX`dVw*}4+7b@9p6)kM|m!Bl}?{wIsSm(h38E`jxRej?gw&QalEMJy#gTT zg*6&`pl30{2M}HWH0}V#GP`(dyXkMFb3ID;zZK1XE{?k9X-*~JE655msf zD!fMHao~2)AO1n|9GCWGoSM&$A2jXy4)k__S%00f|7IZD_gY|)jzoJgZXX`(V#;9? zzxXA!PQD%T+2Gv^#55r819HCJ2IM&NG?4wJ0`kxLnYyL(5^>8z2c5(PRlP?4l`(mb38%VYfW$9R7bSBL8-Eru3k*M7o zpj})ZGkOEi!+PrhvfXdd;k$v22$%g*?I*f`1qiPP76W$z%Ya9LyMc!xPkU_bR{M~x z2T(sK@9hXv&bV4U*hRxPO#07)&-U7-@gG#gU{OfX7yKIi7xi})!VTKq!4^vY+rKmV9}lZ@+5H;- zs&T^gD!l^-)jF~o;f;u&^IvM5Zv`^l6F{b89P?%ux2I?7{;*%`>HCd(KW5}6NV%Wq z8oA?;+i#da#ed#1{M`|iPa~rEfk}p6aL6I=7a4v44|ZXnV)$FZ_k#8g^f-Wj()hl{ zKWqFeknMd+hecG4L*sxJ=-IzTdC_2-euwchrQFIMzPQMwHw*HUAm0jPUSmLx1NQA(ctr~+G*8akqloMB0xigix77QxSqL+oxxhT&a?rV7+4wfr*}$cs-wXP>->Y-YqX;wq zb62YO3_U>F#%5qG@Gy||V_Xamb}{~2rXK98)IO*b$nkAGkowQ*QST`p1=9Wx0xjT4 zAjeaySG^}_1#;Y22V{OvyrbGHaMa=aYdQ$pEd$!cS3fc7df!+3rR~5<@QwnTfz=iBEf>GwGXtZZM+Q!r*)zCa`UBPB1&Q z{kLlSz@fTyn-%oS?>3Z&_ay0-!%&WYm^_Cv?QQUw5=+eQ#;$0$#_hm^U6j?Q<|Ck) zA8TAX02k|Uhengm9vyyG9B#`6lL7)qm|Jn4!zQxo>DlP{RgVGw4*BUQ_D~KgZ$8rwurkLw;25-=V~6Y z8u8hVJ8n|@Mth&u_qXKw)##rDc?bA+0`CUi4y4-&pLcV*^CjTxK-$gxThg7YfpnJc z4?NeS+p0i3qH&!@rn4LI*e)Lf8KxTwPo0Lp8Tmf0(=qjK>~f=0C)Q}>{7+~2)hd`6 zXU+IQ@)3Bu`0&f79{-`!U;lS??n)Vx&j}2`oi2Q)V#|BMsd9$ip!udBvp(rez74%z zkrVXgI&AE(l;K;IJHU8Q|f$VBl5FW^G$miy~O;rYMoOJ z%+qqTd%BSdx#mXMkL*4jb&! z>2NHkGkUh^a7>XC_qrKm+uOwtKQ#47S{^^(47w2iUX+{da02Dr2Hc|C=iz@koDO|n zZ|e0;MuszXajgm_`l+!m(|=6)DYhAD*~NLohwEOx6Y0zc{U5;1z%BN4c|YsH+thmc zQH@Unmw`X>b|v2oWINplq}{AdOLz7`_ZEb?o_HR3Ban{v=txg@?q&dvbyE2`mEHj$ z`_CTo5&vU^T?kjL)Av4rjR?O5Bz@8yYJQmuWcjbvxEkn0n2z;$3&O0gdo?}+Bz*^P z5|EDauOm!+6KDa~4paAt@F?$S6X);)u3CX$ebJe9QDO0kBVp z^EH}wWso*y7p29feMl?f2b^h7))yW7|9<56gbZO%H~^hGKP0oR?BetDjNUy?)xJ84 z=3iTD`2RqCoMV{43K{?G`G!B?PBkCxhaQ&W9E4dPM-gTjjANbQ{m?=auL5!wXw5*D zyE;>i!(N0l5Dp-G6lk0m4>+e?X5wE5xiZk2v()~p54Z>62SIlLAJSMmT;*#SkoC6~ z7zWZ2PawQshSZ0upVx0T={y2Gy1Ar4Ek5mHeSIj*in zxE|q3pm9pikMA{l)`HKvJ*xFkj(MS5rXaDOVqF?nfCszqeADRJ2|W(bc4_P{x8x}! zw;Oz8x0E-IZDtqqo;GrluI-28U-pRPd}-#1JRNztM&^m`paS{HGT6oY`;Fe$kv{GB z6wuU5Il|S@&vCC}y&6xBBD@3Pxd@XV1G3*e51b1$j&)}j)$bbpr@+qvE&DE|XYf>ZYTRKw>ZLRF$MP=)pLm@{^4IVK zZUVd`Cp~c=xn5G$Ip>X#=eTpbM$OXw?1>VSue-sw!0dt^#^0e)j8^9qCLV3WF5a1A z;ysCY%Mtbi$n+DA z7mc7Z-NT4qsqLpjD`6h<$EfeiwLy;Ihk)!ybn6w!bKvcu(@tIoTAH4%ah66iKAHKB zcDWb&*Jyr^#!}#4p@;2CN4u}hOO8`U?=s0%<0>DSKHYNpiL-Bw1lEmR-2AMmkC7Wx zdv1bWmg@k}1^IHsLJv|Ki2H+e` zFB_NcJbJYzseZ6PV;JZHpN{o# zDfF23W_sJfXZd#nnI0X>eGK6>z^(}@z2m@2gu{q$0gKL7`RoHy?*`Cof$I_O10Fzl zJ}~400A|4M6hN16i+h3?D*xIRn};uXgccw~1dpQN<&h zHrs>n0tU330JMuQhmHJh@F{29dOX<0yVo233Git@PAfTnQ{IKJ3)lxd0X*}I>Kp@) z@*aCCvfX3ns`TfUT%?KN}84q?b=bJ{)rI1^unPz;UzDGfC13JH?=8=;?*2&uYlpRkf zP~+Jn2(unu2eO|X2C^T&qr>|kXWFd*bh?uY67$Mp9VRfZc2V-C$=`A4p?!|KKY4yj z`=n#N(Xrpq(Jm$wD*Gz}(r%4o+PKgDp3z$XeXQ>yAoFWn9v6V7VcToxtZm^7-KO_QdYBTY48nrg%} z)re`j5mi&AIb~C!N!e70$L2{>&4Ax?U^5^(n;}ir7kI2M#}!C@n5_y7$HWX)bNZDa zi}cx`+tT^o!=8Q!pK0kg;?t4d4Q_h+CHTxpUysjW=^dauMaEVH>}T4{uMXHYi=V(E z9AdRBsWi-&hpCc2g1l+NOxpnyx1XQS4l$&WI&@8FBWd<`FIv}Z?I9veRGdr(1)V+5$fFNA7m z`ZQ-10@=R-S&TSqG~!m~)q&y=8D{`89r%i^$ha6EBl~x#w5x`LQFN9MtWh^P5hGu$ z!E?^KkwScx>O|VjAZN7aUkUQ)$*727HdgVlb2HusC3hGEMecj}wB_btaJ1*{fy%Vp z?^0RrSs2FBb8kYdjNA;y&8-97nOg*z%-mN|X<4~DGf@ta_5?`7Zp--qN;4fF;d4wn zsxWUIp7Qtv>J##lb&wfn{b|&yNJ(qJMcV3K0_n2JkOT18-Yy6kMKF>=lICu2ME6g=m?6;X|~+&AmAMLN7Pzoi7o3zaB>C=RHM~E#YV}>&uE6G zTsctX%7H3Z4pg~vpvo>?|%_DZEk7Qy+<6fx;?}hZ?PeV!B zI1G4V#Ea=pT4jY8b2g&q@dJ7P8pJalOnLkz$o7aorsq)mcrTh~#NSll>>Hq4neK># zV>50BKX^)pKOCF!GGpHl zg(CN#Xl7e(9;EEKtw=mA_j(QmxmU{Az4*+?eHGkc;+#cb*hbmdRUPSRYrlm>#zvBI z3~4<{Cy{B}XhZUn6op<}t|7%pYDa!-V+^U7q1)WOZM-2>kn~IH$~UAPkAu{JLfFnUq|GE9hXL5mGNfZ9T~DbAhLlHA(_8ra%4Zu= z1xZ=V#5sm^grrQ8CK^%!Gm(qI!*;GAIViQ8`I=-%*(Cjrq{)U9APEadVJk4CYLeD4 zUxkLWjq2C13ePj79VA^(T~iFHmJ#Q&3X2S>o}?x;yltu>HIwuK+i{v9EhFhJrg**~ zc}ZGKUB!kJBPoXwOAKiZNuOm+lo`?<=IiS$&~!uEMbZPT`wBxk^=*(|r}{2KDxj_h zscVHHZ6s+b%NQ`EwIn@20|*;ZHr2nx++S}<#gw{?#f})#7D`=8Qq+)6JqFU6!8O`xvN8PXP##!zaVA=Q$!k@aX zJYYxxl5Swc2MuW>NE2Jwv=7=Q`k2fEwu$F4)+XD;X{6t8oA?^>KHJ2(jQS%7G||u2`hsoZ4C=evHqotWd}0g3>unPqjQ4q@ zOZ|7+CLSW*VVhXP##(2a7-9Hxwu!%BI=9;c*(QF-g08hqe4F%JZI%VSBgc*A zWH@meN5($e#2u8q$u{v6b=+t>_oef(jPqqo!kaxY{9SuG=kpfiFORE&JkFeXTtVh> zi66{yL1M+)FfTMJMDcz4_m-dmFQ7Xhoo~E{kqGEJh zQpYE$`0Kl3^h!y^p{kZGEJ2Os7Uo?{3YX{Nyw9O6M~unHzzL^XG~`Xi44yX&A7bL! zAY#}&?^h5S^Qb-JK?;2hoIEa=Q=Vkiu>Mmj(VD=V|4kNcvWqcQF?aEi3uG~Q6&^=L zGkWpNRiun8CPzpOI$7qU3F?$nrJ2gQbuB4hllrIJ`E8pR)tiwI%aDyJCcp7> zP*x9P%g!KGW|1Fa@~!6~;ve3GnA#<;dS`XH7viLSD z@2`B43Nsx{C5x=d@8Dxxz0@)eIaJ9qZ87=pOrT!oXck%0fMvE+j=zk$8+)0Iy0l+Z zSx;i}i;UkO<8$4Ts`?vf*0GBvYkh(x^Hy{ZOnm&0&SBu2U`=gD=zPVhLWddueaYek zO4j!^>m}r6{PU9aTg`f2v8J8NSkFjS+TS$q867PRy?*?Yl9vawrp70WWn$B!Xpixa zsc2=I_n65DvOj){d>tFbw)S}jK5cDyhZcw)zMyM{_m2!uV~g? zI$9c8>r}MoG;f{ao&PRVyH)a-_gfWN1TVlESd2pd(;i!d7&?k8v(b97ON zutRvTl74;sMR-nEyY>u+Bj;=^tf!7|BvGAgICu&$?EHM6BsrH8)G3GKn-rdX#!ZqW zkF6XdCV{jlUnam~fniI|U;+-F2Mp`Xf1IM~JiswLA0+=7-;*SHLXw_xm^JL^nexO# zoeem0k(4tpcRqFTWWbp}=1M%L{fUIf$SlZ<@_7_8;4B_%+4y_KBD*9Rd&K{sG9B5|hux0YBfGp2kzGEX zSse8S)Mn4fXP!p#?-68IsO+XOonel9@R{TIJ}P5G>6C{Ma9+syb>s!3pF<#%xg1$G zjFkxehj6GqqAcfS8S^!Kjy{Z!+*aWW5wjrc(famJnBvEd-dHts_V zQsRt_Xj04?VqsFFh>)itd{qDl^l)=66}heVYe62;+!X&n+(a!8cH zs-zQML=$DI(&5W68#WAes%j&zZ{Rz{RdrF^G;A2=RMlHLY}hc|scNuval?iYPF16& zlMNe2I#p4Cry4ela;ln*UemB)v{Th$>H3D%Ygao}t%fu^;SX_?$yHt91Gr+tT0R_9 z)tyjU2nq%p5`dtg$B+45zIXUKS_AG=M^ z7*rkSe?X-Y7c{d%IlfpvOZedHRhtZP6Z7!(suM~+g~9LrgR1qOe57>RNY|;_P^@vW z=@)92uniZQQ#C2nhB{Hi7*RFV+R{l}$aqsV!;m0xC+%9bds;mjrd0MUr+Faxmy)eq z7kuVE{`gAQ9L`a4s(OnXie%nheU%#x@ad@xYSq`c1I}TD3TjvICHv}YBP>k6_yoM~ zxz)SlPsM2sf7RcQVk_zR2cat-$j)#8riC@r!goMy`ly+an?7^|T{9~hL!9sng@4VS zVG4bTZFptP0vl1Bgr35xSzMil5jei|#Dj;q)-(`&UiArXC>zp0U~;HF-L>h+Y5AB& ztv=h0YjAblxCV_Tq*@0Y3jL12Rc)E!bWb84sEy;nhqO#vbWFOEWNl6CCURu#m^4G1 zI&Q{}Ni%j#n(2lTWRBvRbb^JPf%WDbgI99+$(bouWBe@bMAOabwXp*}J4CL^xv*)zCa04}Ky`YH5<< z^vrNQmL!%ALUNZXe%A$Z_#oFw&y6}ZaqI**^U76QzT$l3x2aKj-|!|fHE4oN@5h2) znJ#Ze?!ZDZifzJ6A5{2bkfc*3w^q_dXg|Uq1s{lNw0=a+Abm_2XC#Z7WX+eFB#-Bt zB#+asC3~@4NT%1v`RRc(fKQJ&=?%4-luO+<3_7+!1r6ZyBTjl_nX2lvJw$nNSG|}% zId%})GQO4$nQzdIZf3sxCi5bblkc=&hH^LIs?|7e{eZ*i_V3}ckko{b-sHXS9Zxgw zLsFM^?B8PPv7|ezSaCsbLevlIh|i#|J$#G;6Q|?dbsaYNL*0Z=)OFYJ5U~^1DI)5I zgr7@HvwB@`QfVil3A%2mA)39VC(u3Jx{)={E3M=9`kpck-Hl=Wl*BORr-Y8%>!%hc zHRCyfj@#>}`Py&}DkG$v-oatG6f2Xdwos?)iKAJzq%sv+wK$1Agbd8h<4c9K8xkfC z64GHvF}A2JE5g(SkLSaj(miR%)WlLvFQsi%CpD=|Q?k?OrI!0TVN6`1NpnTf%MhK! zKWM$w0nu>hRCuYqJ=S5h6#x#1=FL2>Hx zP?LV*X$f2v^;cpe<7Mgw8-IetH>C8I-0~*83lqH5C!yy5#0IfGwL!*7XuwW=X7(_0 zYbE#uG8Pd{PE9ranDVxzLM;x`T1x)palE~&qVXZD zDQ?kt&^Ka)fwMaf_#SbmQ!PWw?|p7#(%}{y?JGk>!hz>O7iBH`<9t$ne;x~%lB54nG1H)L29n9=$4k^*W;GfY1o{p zM2C~HTUr^rrIoQ;S{b{gm9bk|ndp{QS9D9ua&t@T5#_d9S{b{gm9bk|8M~#Gv0GXh zyQP(}TUwdumR5~V_a(h?RiPXwGI>H(w9-xgKn^plD%b8apQZvctE|I{o$kOpyvnNEk~Uk~L zARfqNd}B6anA3 zXGs%CP2wmVxN$-8D3JQZP%7ED$dKm5-JKwNS)NSd9vQIIv~?!>Xwk;K4ap`xRXO_@ z(w!)!VH)={q$lxBsa|17Z{iCYrtv^SSk%iC+pyV&)lw%s82dUKzZ2f6I_*jyHU5tk z>?D3Clddo%NW6)ajaM2HCQ8&+S6elT6Yn=r_3xVH$wWmN$aN-`O5B3V#_J8KNoc1=9RbJg(HOmIsQ{&ai;I_Mvi`FDf-LXzIWbQ%6 z$;^Px%2K|TIha!X%)MA1WZooGL8cKEu}m)w63-k#Q-+xbsc|Bs2aF0c6UkNNgx5XD zV}?z$!ylkE@hV8uoB^+CX0Zi#)8e=oK?C0vbDEZh_k*MoqfyheJpMSy~I>wOG6T4u2(>e>>Z%5Oe6zBS-O0g;3 zh8H?jT8B%09v=$-?d^D|81tG=2rF>Q#KjMw`lQ^n`Uo{`IxSkrJHf-qHQk%kamtYA z;DlatHoQTZ-hZA)1xAIxBJCu)X~O2|;j17)V&?s>(>$;66OhnWw9N}jh{> z!V-r{PVQY!i!?79kOcX++xsi3*Sy$@{mkv1h^ftcHPpd#yxvAhE{P^pFWOu^gz|E` zsOIIW9%0%9H6F-3+kwfPNGQjDLL6m~Z98#ZhfwtpM#`LAqj6{gp>jC3#Dgm6L*62p z@>=S`L%Sx};4};9iW_jij$iyB`oDh6IU|8OB@N4T&W_Mrmt@Az|WBiFF!Mm^c;NS_j!MTTFOhPD2X?ph8j?zUUt&WIsj;PITc7z-y%YZXe0n@n8FtX< z37L?os!*E!1Ra^FwplYsOkvTSsVN-{M~ib+EFNez9t>?}(^a0F1ScNM;99nfOSyLN zXp1e^Vj)k1s^G@15Je+)KZ-FSo-5wz0F}ZYM3X-`9hjucpxDO8@{e(UaI!48}!LbwMjxlDL6J83XzGG526qiWsy*qoz$%!jT zJBdpsgG{p{n;>yJBSFXX#KRia5|4cdGQ*JKM1#a;hQEW8OuRM;WS8)tAgM&h6p-18 z6fR!l_$s<=CXDhqx_pNV#$U)EU(|5a@hIrnHx#8o=Q$nwHSbMUTJiukwwV>A1DiBD zRzwY%c!_@MIKcdY)rU5IvsE z?u2%xgPNP}BReC}8bYmRP$oQ7a-UCyHLzYj%}SO?AJkrVHu?e!?m->dBasSi(?6)w zEGtetvjMR|oonGF6XS$r>y86SIljt{2eLCBs2SpcS|)gnX(+p2@*LxC=34e$F44%O z6mmE4C%lQerLs?jJ}sG8N6zf8EqI*7`6qxpZAg&Vz|tlAOw&@dhKb8B1$j2Lf-I~- zX^`x5bz?x1cFLChP2qlsl{>x)D0xOrkX;$?L7?;vS#?P2WEiEoQIS2oZ5VXUpSZ>Y z84>5-OmEmsTFZ<8puiS`*gRYG}@$in62k1=yMq1AEQ#v5&cKi#if`pY*sM^E>wWJ+dYTey8feNxy z{(UPf8{e}_yx0|RGFQ@PPG%pP$<4&*W-s$wD8AFRfNsvo9^l2El zu3qLr+}+R2V|oaju0h*#9O1>@RgN!g`uGWYIl|jSAY@m2$xq7Q7gni$s9WY6@%2jQkQ z*<>&D!s=#pqz^k0>?$wp1`E;+&w$2tIz0V6*gB7Q>=Fa}g3oiysrd#g; zd)iA}4@Oj}T=OS6M7dpT8KSC36^aMth}OJFGlbdSc%d-6&5-@Am-zvR6S>jzo(=At z{%e^S4}Ou?EDKFD#0JtrWvXJn;LAzJ1GQt#?DJ@`>`Pww6twjH3hO_5(QxL}{Dlq&VTb@wwv|J+{@8=11PRp4ToBey9Ko|Qm zq^2GZ3$lS9zM_)#_MdElzrE!3BE<3pN`6O#c%DGXV?+pZgs{?SX{O7viM&M0X}Ofb zvW0mm+Tj|F`044O@7NPG|wvzg|OiP5KU1bDVEua(DVhHOoYw`!0-|=|?FdJIzliuBWFzJqB#1pHc|VO4q1~ zca17ECw+zbex7fek$LH((VX2g!se%kqbs{0!WO1aYzABG#~;Ja#UpPKwls%@Bkxr4 z%l-Ht#7vGl@L7I_c~Aw(fj#rYS4|zk)Ns_EBxxW5k4U~@)8bcvj_WCpMpM+ z963+iL;W(H&lZ=BTE{vodzfEXR6@j*jeLdn%pUIB!Cj^-Iu4LUwsWnBa2YXLL+uyw zh@gT@puwrq5t>ReoEu1be65H%0#84`DV6&c)xPXFBG zD`xIrxR(8ki`|yZkBOg(s+Npy*4BK8D=+ltyQy*Qc;Y>aDEeqOTnNIA{$*gR-NfNw zL3%fSGv;q}!w2IUs;B=`cDdoV;Bkm8-brqF6Ie1`Hy7-5H+&Q*tu@_CRj~+ zAW#4Jm%0fVR-ZmjCHzl>HK#vW3dYT1m5@nSOXt-QuQTmR=d}^moxWdMu8$;p)9ck> zTO(|Ex@bAr4BN3uw?^3b^se*4?uaBOr>E@!c2|T=PY>J^>>fAacPL`cSVjFF zbi-D#Iq5GB1$)R1r-03K%oA-SS35<`tGi$L!ej_#YOjc@14XFIAej8={T!v>sQ2T+ z>OB8@{d}e1s9WQ~1$n+&G}5f2mvWnx#sGxk*c*}cuxLbbq8-CYol%W6!%&DEle8?O8RkRL4nL<7o`eu3Jr zy%TM=#<6Kzb3(a2G-X@P2_q3L*p$?H%y>!auBbEdICM7sCALHqyXa&w->5o%9k0D# zQ`{|)(&Hs&7afvN7d?hBq4r)RZZR9Km%u|(VW%jD{s0=H($48WDkr>%X)S}|)1g1n zpFv9tXF@CEdrPP3dgDv1dWP1P4r9d!<%^LHTX#4U^u%!Yd&X}NUtQ=->eUqdf*%_p zlC_Se6=(9<3}-_Rs}yB|97--o6}RyNjh~x9{!7sAmMRoYYaho8fJjVt=efO(GviuJaDP}V&u~TW z&?dpX%eMI)dS1f)k*#gU7BJwu_YT!^tH4jk-D9hH~-yfcgx8=jidIIBvF1*7=(s+O+GM10A=^+LAIH6+iZm2cvFy{0C_DH$SmyY^@x5vfb13 zH$S{-_OmpcJH-x^UPbzlPRT6yc`>MmywJo^4zxkz2yRPCH4R>|5oO3sn?E=hsml!*rYK{E@w{zFk$~*nd z4{VyXa^pIFd6SgS`kS{=sg-N_*^QOFfsCtw**}woCnc^Rzn+0$W995VF&o%h3*KVH znsv}RN}L;46Uc%+zKi611OmE;J_-5|ntLb2c@J^>T&a5G_k%$$o~e=l%{PWMj4BM_gO6JIi$gu?cBs8^PCsF(*$p{`nhJ4?F< zoI|T*bZS3tXL&vZ=0Ey??+C5w^)?3m12&B}urS`*Hgpc(L_YR!PY{9u1Q?NV@3m(7IB|IPsB&GxD_!24?9){j^q zdvm>78}e5SW^8B!`uLdz)er1JuG|y%=Vw?0;)AOTD2;!uxLp2;dp&H=Z`(&h4x)$c zgWQV)^mu*HRWo0l=p_O{?j-_xygnF{UL{WMg#vn{KA4*}HMz&=qn8WtQ+#{50A@SE zo3+>IPwr>+dR)GsreY=}Ur)*xWK#PpeK5KTdhMxszZ62j{K|{@!^kv(wMRh^vnQHk zqr*y?Dz1lcVq?l!*n{Ya=GfTqWr@f2M00Fhf{4|t2J}R8(wiPiFy2gqdozlwDancd zfE|lBv-r<2!ng)eZ@W|Tdg zKYFTtfSQ%PM*$kWvE9<;7c2jSa@pxWB{L^lI@Uxw@Fs_HGC5F;iQBbZ!gGYN|YUgP??(0DZd-l?qA$k^OWdaDeji<7VtcoIso!O zA@`6^KVwhnE;YoV((w`meY?9twSzc8>U^5$KM*VR0IB<-Tl_f0Q4og$RV$A=$ZQsIx`$EsA!FwUxCE_t6COpgh5`-6l znk1$!BvE~s;|}nO5OF>O{RBv_rgncMf@(E4C2JY$H^8oQnZH%>P#2q%{^=H-K!*Bq zIQl_)5^x&+#KLVEBF<>apy1kTB=Z5(F8BjYW(7HpN5)+unUrTA9j-qW>N5CCfclL) zB1eI&hI$l`{uUYIO*#9pQufs{#Ot~svQ_%GNWU({SmmZY?;xpF8E23>oAju8U!;NFNXgi{Onio z*T7c;DgW%9_)%psp;46+|L~poc|)DXU*+_F>nr%^Z+;s73k*Ei7XH)Svn`(ZH~W<^ zc$Mn4tdU=Da^n^wlQjK-Z#fL-iehS$J5({HrySn_QmeIK+vHA={0bO+Anz2>*EU|+DK?U zK;;o_7`EB9k@QRmCy98`K!_JcQK<*H9}uxT1M&B+4ZwO26e}60_43KlyPuXz;u`6? z(=AajcfxH48o!UkQX1xQEZE+SYzP`}g>!nN!ui&fc zn|9)h^E8~xm^>%##EG1SGSk0@FQ?hAHR92sPU|}`hm$D8?zTUvx_@*F)y@sa;*=l2 zb)KfPpjPR4rT#3a6ObJT)L#fPpTs;M(?m2#-g_T;@1wSXy$~=@G*y{z-|S=pPbA?@ zZ+7zW%3yV@EUc?krX00=Mi;$=n3>5)$VNxd!AR5)T6D_ME{xwijytK!^6KSPfmc&(IH* z^Fye=CGnh)cR=1E@g~qNu?~K3?0fZtYAM^-n;ZMZ%EhLG}UJ8^~y+mb@={@7;tA(#OKFr_Y@_-8ei+`gE}o z|8{r4ci`852Io=|7Yg|Y$U`I^1kz_Adc#hG^YQfId{3^^`3W(u=+-0lw3UD2Jav@+ zPj@~d{8``(3dpa1Y^*0y$8zq4NY)0sgQ3aeKkBD#AN}RmtKrLUt0`m0zQ`HSxB>n) zbPnB#ubdadk<0D26GyS|Ivm+-_C}6%oYhDJbj#Hm0|rMU*!vR;!gnCLTY3lNN3g-} z5RG83VDNK5G*}IG$17eYqqPr+2CKpDY!SCYxD3!>H6$9WsyPTM1F8>MvD)Ef88!;d zfG|bGH7k!5aey+fhj1WJdA7`&8x2hr#jJdQ>H~Wnc1$+d=`r+0qS-2Cky~^SgVAvi z^!x2Su>|WB+ao1n z7s<_ZtLm`KV*5yBjsPsSPbG1RGFgz!RHj#D-(0umOl44zd*nZ!*%R>nx) zmMGr4Wd|c34OA9Cb6~kOJH*eUWO@Y1#s6~gdliq1+_Ez07XNRPcteQdzldf|0PPa9 z_-_Vl1iBRe7WYyUn3`PNkAOW4=vHHj8`DL_<{NZ2+*yGB)oDb#U8d-QdpYhQZfv<*dNK?PbDA z{~k_$PFpR*DJefNg@HC1EvIB?mv|J+rx47m)lOSft!OzCcRLi!=cD_ZKoqxecX&5) z&p>z-P~0Y>xGiDpRs=*rRv4`bS|Kz8mFu+(NJb$#3c?6U5@cmjJk0~04VaUE3u7Ez zYyvBGs~tGze$4}E2;>)#U$FI7!L-pV(&kfdQ{4_M44D_r$9@1DX46g_ME->T(HfX=K4c+6Qzc7;HK3^jZ32hvK z-mZ2MAKR9FKXCngpk^ytZX_}EMH%o{+xred*;{trc@>;Xf%byKERa$RDFM>gAi49*AMFy>&>`tlVdlpYHIAKN zVdbk7`ZrYdzN&Ee%xue`trd`2|1rDAfQKvfQro?SyUq)&@_%Xl`y6Q38YF`3& zkto>qxJ{+Ef^7wQZ5#iDP0o6t=mpWLHKIIev=6}F5zPYsDWgqdbesU-k36TPzC8jVs5fAx;L{1Pn3tSKD&od*Igqz521bdv&Fj5RZcY z60kUydS4fd<7<+(2zUps9{0957PCMXis+AH7n8m~f`4NURyEHkd2s^X1MY6ou0@8P z(IG?Y5lsO-)bEVpa^R(43xKR9yqC%5G;0JrD?SUN&2?vz&~w!`*Xcg__ki^Ossy@W zr^a`(S^>Wf%N-qQxmX#s_}xZAkLcUt_m3q00HohTbmtJ*zHjQ2MW0BQE~>HnE&pYy z&u z+}X12!P%!;)<~Z&7VPK6Pm&7NbS8=ELbS}^o5WHe-TGhpw$G+!U$6A(V)`!dpOOmM zrzh=?5+eJ~AaNRy9{XSVcCb(Noi2U4SbaCg8*v2FcRATF%j>(1#4Xad$NxoNqdGvF z?a}Di-n7J3qZ(8$rr#=U=d6RHswmH@oj6*o$SCE}gRuELHe)m|hm$+|V3jlve?CVe z(TOEB7%<-aSrd-@`NTo;=f^Pp=RnUY9QwqOa_Bf(U7$zD5+_aHWJ?i%*(DKu?0v^M>6mG(S~{hwq!?D|kyIa)iYStsIS%;&o8?a_Q(wg-c z&?7`rvmR;9dL8JMz>u}avr$@O&8mlQel6N6P0eeKrbqq%EZQ2;))}p=hDi|UQ=@%= z8LlqosvEtRU|7TH*JVS5=uB`XiRnVraC?)`ubb1(_J-@9;I_BkMk;4LEHO_P>*3?P zcIsTUL!5`U~Y-XiJZ1`LxK=XdEmH#+SHSgh=CfTfoVJ@nd(eU{c-!Jv`>Nmbh9a zOTM))Z$ay%?H07o%v+GjSzwE{A&~`UO>a!%+)!R2jWq*aChckiEUh&*8_J3rn*~Sf z=OAvaZQw_*S;?*PI-9bc32PZLJWkyAL76|D>=O?aZqxoGyZ7R_W4o=OeI)uxbZ1W| zdlck-5>*$+_dc<8>d-1iH1D(0(UxV7kbhMvzkhWu%fCjd#v@bI(EHakt!gQN8!NfjBRLn(9BJIwJ0tE~mGD|* ziS`sD^;3B7wILDrT~+O+h&v9h%6MsXRQ^N>z7RE#qFKBbhKoo0dM`||ZWvoC{m-O) zP3n?(#;ljbGd7q+XBjjk{_8I zmAsGa`&r6Q5Jb}Rv;LBQ7L{zbynbF4N$W8=@BWmp^}M9-@0Y$mlKy23fd?Y#@hhbJ z?#P0Dayjm{c2Ujlo?$x2-zuGVL{bV>>Aj<0>W)Zi%tW>E&8Z7n-Ps_uMLQ(MWbbAR zfokHv0$}Op-E5&S9&9u)+`8)KIcmBU;CgDkS&PJ-h8vwb?74kp)Vwn0H!AX?)B(u$ zg1cKZ1Wl&Mi>yd@o(j9j3Of^}rvg)6wmiEi9^Cmu6gS=_7B@G-y#eSwN)ngaf&PQw z4*<4!J(OZxT`0=&E{oYI)^l*50eD{NJ$3qd=Aes_Du%|c1B=uM=UKnLh2-mi>^jf- zx0G?B2uSZsmfV6Znn8D{Fj4ZNj5<5=Qnicv;Ow5fube&3dTPuy>Zy&X$>?HMrg&*o z@f$6Uhf`25pyD^$@TGxr5ipr%IIiwYYm~{lKY zF8I}eHPLhmc6CvMc&9{7q~E061<*v()I>*^CuRF>oX{NEc!UMWlSn=a$i^cqQ1lj# z_W;?rDraM4)lp_uHG@V45LtD!Sv3}XG+h))f8|4sNL7+c>8xpBgba(_KtWL!HY(uy|dAnv%7k1Uc}X2b>wDs&b%HQ zA*O05z7>;j54vgZ7S2QWgXHenaX5bt2J{+`dfoQB47e1?XoOWB?<_KTpEVD>T~v*y zq6S9&M`EB(eeAU7ha@Cor#%vhZB@p1%f?XL4yQd2z;YilR&?64jZD7+^lz$Wz9*1a z4&rWEOr7iX(EMNE{}HIyFUndOz3K%wf#^3RdjK8k__Iiy0%SEHy(lwZl%8ztJ#4VU zg+IZ41+c?~0;F6Z{Su z61xLkGR&F&5Z8Z`==d3l!=WDlbjbg%C2bl% zUI2azq+_gSzRvKhM)?#1oX}zPF#mJu`V8VbWPJ-5_z$(jn_OHx;|nRQL0%EReIcB0 ziTwIHqp3k+UZ>O!_v^DFpdba*H-n5NF;Yks$i5_&0L`7-RsZ*@ovzpDAekOD@s@*d z=z9Iq|6=m$9TWAdL0%>CJdoAA+Jmq&Sw>8Zzavjs46zgATY>sHAbKa#oE});}XCOe3HZ?z;q2( z7a-NKiNt@Pd<-d8?Bn1Q>Km;p@xH=>g2&`(j%f^s^L z)!KTU6l|1&gZ)BPtP|o*aK8`KH-bDxVw;c@$QL9&0@{_OL$k`*R{RUd$`#L(whN?f z5C2V880Lm166NWtZJz>2VxBGm6nCyah;h|| z=t7iSpdu7R{fL4|F?&70sRG8{>tXdI5)VN7G0?Fa$Ztvf8n7xnr81uO(7(*TT>2GJ z4lZgDtB9%usgTdA3Rx1JK=ZZRt04D*qaj4p;C*RZRQbBJY516g`~)e`@Uf7@d?0-@ zqF+0FsBwQN%R(Prd-*dua+c|Fg+l;q+;d5sEku^xLPAe_rSIKtS#Chxv2nGWvc{E| zr;CktOZ=@WLL=1AQSy+qs&QW+VF9bgRiJBupMLoNS_GSVr(69eF;5peDO&2AdKZWP zBCoy*B&7(Ddi`c*5Rg`%?Cc)-BdEN4P(oU+tl<7qV8fcK6JQSc@o;kK z!1fM`l0CM+#V_`B8rQ-4kp6jQN0xPr-8!Ff5_}!f@^5DTLC3f=^GVeH0^o579pwc4 z#$3G;Xy2#WPwq!a4f zI7;a0zSuX!IIw0SSne6gn4Xa==&Cu@Na6na6Fnmt(=(CAi#D0SzkCDLVMbbxyd_ z82kh@P_yTr==6i1BazHKS?LF|Yv*SveS58=Z|{oDeFH~L&NpycXn_B(Z{SquMe8Bo z!091}9}MTJO}R6PM5R-4q$)JYEuCXrJ*r+M?hz!aAHce5J;PhQ0+LhliewkKr5f-3 z;H13l7RkyU6RXy`xB5V3D72R^C(6QyVHWGvvx#zhV8JQY4;>N}*2IBRAPt4~#^pp~ z_-6_0q47jhk-Ao8Nr4|c%C+pFW;)kB6|#47td7Vlx0fT9+shHl?d6E&FA@~KQ*#^k z@=Y0K=7%|-@p8nPkj{i8O_1K<<%sF08TBEl*!2D_mVS$Lt-Tzv-1VrxU#BO>JYJl? zg#xS9Pf_D+Pgyg`+#Tv)uQ)B5lu+wEpo~gvZ&j!M(9_}Xno!(-%f^fTt zld}*Xj(+#~CWL2!X2q-fsBeyXG6HLXmhUM0V^KB#1>s2%-=S69$9?NRm%jU37mfdt zBpD}X_Xc6h8#1LVu<_zFB-R3L-IAyX3V)0#{^om6ZhKIK%81}?p4C!;ax>+8yMId=QcqC?)l=r>W6CT+u+;+w67Tw*satNNOf>S`5C`T{nNPtI_==wL6rTKVq^b{oc{zYV?QFjdBpS%KAnOUg!%%~a$sex)i>G=vcc z=s6VITGpM4fv@Aia0Wtc0$O;2!ExV+hzlXi1DdVcZ~94k*4Y4Ioh0{FXZ_Vrs0Gi5 zaJD3^P2TcDwaHH)+z+&SxCx_#b3jNo``OHUeu1+62JW*!%T)bl2BNaP1>sE*?Z-0^ zS3uNvT|XCbU-?Zgdo4tLCvXUl7ll8nL`c6s>vj3Ph(^6$e(ciM%TIoKd-anaT?4y@ z1^(y!*aW;d*nGjsF>WS4%MHr6XfW5VIIXHyb{__3^`?$qO6dXm)=`S&{Oxjs5?S5r zn*nAwPz{{e=~LxVhomeM^5Znry7^iha47zQx5;<}=@@BZo(AYQv5$`NsAGt)J~t8@bsy1xu;ZFh;}IdOxPouWxEWI2*FN<)RWs zUz?NH`{`~--=|3~2gWnQtoOCp;k>jNH#^pk)4I+l@IC;Vk35>+(rk>@0lYWgX$P7Q z6fS??j7(ZVcn5_qpWipx-~aUjK*{QOyU5D?v~R^spiq^F>a!t(PH{{ z=z1Jzd`$9_{BAADCyc;aph+*ka3}jojsKTI_!iK3x+Ew2bt3)^!k>U>fi^W-xy%`f zbwIN=DDE`BO{LxiVXKJzly*+BDZqm`VE*e>8xL?hH^M60;VK`#WNrQHm_ zTpjs5gr`NEp`f1OH;7m{nw2{ct@md584<@o7$%~v_h$HmMce>kwTMgP4Kw_aBHjVv z7GSuZ^ZA@M^PE=|i3j_MHKlaY<&a;3|2&XA4`cuv-C`iCM}9g;vYn>4^&X(f76pC&U@hKXh42y(t;zfRaUUXCFcyWt)ZeN- zhxsYRfVcUC%FGI$(;DFy9%%TgX1n1#GV<(BGPDCj;5jOMr|M8SJ$A2J`J30pv;trd zVTyLu=6|)7#^kObyq4k9-EwmUha=`%e{GQIyP$U*FvCp$YmY3y8hkS_-F6dy9WTS3 zagOt$Mm5vfahMjdmoo-GQ09 zPw0MZ+laXnsUk4behl=9(OTJA4ghAIruO=@f0aG!SmB=;&LVrJ`PY9e%XNrf0n9u| z0ra`iUI+iZXp=CxoAxC<)u00Iafk4YA>bRpK;uR1s0S3+@%OfahxkJ@h>kW`g z{4boBfFU0a?w`?oezwEFrbXthm>OO2SVl~*%a$=EGgzGiwv3UCXObq9TgJ4(ZUJ^& z#yA5vqPP#UGt}u8&(_`U0%x~rkUAjUK**Uh@0 zdbSl9Lm8t0XT)7>%r(Vcj!6F`th(4V_dV7WLtaEAH%>&A^n(>N@tpJ3BCkYmfY8!n zckR_*>CskwcN^DV8NGrccDJ3yE4wOg_OK24D|@{q)8@=l*FIdTz;iVs?qSjS@Id97 zYaz4ELME-R0=SPxY1@83X8xJBq4_b}bf;|x{#c8K*?DvE;TLS}N+~b2qyEmwO!dz0 zHap!pSd-HpHYwfJp*bnC`A0=&v&H(|wg=qZEV=yj=B{_#`-ATz;moO5^;%MLabFKd?qQGEw)ChWocR?vyZ19Mm$O7m#+HXf3EAhP;P8dk4*e+ash!?m0=;d%yJT9Hz1Z zQ@uw#8(*D;E0HT%8yPicHxR!jLT@F7=DH(Y=1>0MQp+sq`RA+rrS%PHeHW zmp$`|Cub3G`3+V&-Gl^G)OajqM zE&?Ds2c(-sCs4U$8JM?u-BM9ww!gc2nZ%uC(%>wUQfHaU@s`OBXUIs5JJ>hZw&hzi zCH}wnjNayA9&5{=Pm|UUOao^wZk{`z{*2zO$8BbXl*7N9dnq+{KJDN`-q-#n-~Za* zzHz@+be0+p-?hJ(KLw8~9sMw$kMz0T z6dH?ncZnMPHoib<`}TZ6XI&wV5!(5Bk<&stq4V`WA%KWZ*9#7;`CRFTX`I-e<#&=U z?CoL}i7gDzLcVAeNNiEbVA4*JCfV5H!W&3?#j9B}#`X)Zg%cDX!b4xN{lj}e!lLoK z{v@`-kYcA~Aktf)D-@goN@4F9{=@^7V0`7vv$m4WQDf@Cn%DxA#EgVn2z`LD!xHsj$n9T~E#d>WKmJMyF1%JaV6kozBX(7Tn#E4v114 z%%4h2&fC1Yp;2S^(}l|6Z9b^!U_>q;gR2W^$Ni1hd@_lawOr;ANppbKi{YM2ac$aM z&x^IORo%Q0>CBxf^P1Qk_T=2(qf99r$WG~+hIhc%lKE(0AltlaI=Z1;26i#f&Mb9p zLX@9@-3K@wr%Tz|nEL~Cbei33Yh`z*Y+lJAlka%?hoMwGvxr=G9UxszMfm)zg&`L<+w>eSCCQ);9!}@%Fq#HCji$anCR#A4dN<72@ogvE$=laR;r{xw!`n`{lef`Gb|=q2h@!ZY zC!h260nvg(YQ7`(SKZF@+4wr#&bwCvxi_DbQ+_N}&eZJqxm$Y*P#bZ%wYN&?+^xNn zmDcA$W1}n1QCg!fcld7RPj2AljVM8Upw~y|#`PttczgLArDyQ=k9dcrc>xNs7{)W9 zI0-#)<0R&D4V=P28PPDvTSp?U&sW8>kp?{;8SjcT`1*Zoysui)zP>LRA8G06`;y`4 z@MkcJ^kbZGOxdqUJ4JdMOE@+h01_1GZ7gB_Z7jul8%trJEcq9z*q0*{W5f5PriGk| z@nuTmGN1EDkb7}SVelMCseLoDkZ(rbPj4jkGn_)c8L8JDI7xjovXE~^9)n}{COewJ z_-3RGS(xl-1>>8MuaRv@Qs0a$% zkZ(qo&>0((`etMy-;C6v`Ld+G8Cl3TBNxN_UYWibS;#jdKgE=-NqsZ2kZ(pdpz~%b z9iS~YIhKb-d^%EwB!7rY7xC#x^#OyuJ{?)arz5w)t5{J8!lxr`m<(L%lq%*@sS66r z`BS=*HEvB2pN^ajmei*si}-ZpDbiL(kQVXj$oJ3{CiUsaB0e4YH#oe^|0M>U;@;$9 zauo*4xu(=+m1?T(m)sX7OVZ&xFst~&WJzt&pHM)$&nc<1bWpWnm{U@3>9C3~OqMiQ zy10rjOqMiSI$6aRCQF(uovPvslO@fTuBqa{qol>s^;P=9WJ#+b&ABg3mUM-WF(y>$ z3zH??38jUgV6Y(p2pW0}2|>m~9u?QS#7Z_4t2b(%QL{u} zm@JtT>g_T`MJ?o-YHjHhT}Wq_%rGPg-c>rTI_Q6}E-1$%3QVp%!K;vRDn6`$%2k*zhLU3EAls=_7T8GfG4W zi}aDY!dZon!zeCVKqD6JW=Kgwg$^jvN9qb!SyLv9^mJ1KPXNU!ZGJgZz$Swl=I zx}%TO6NFZ9H6r_br0(0wnbc?3d_GbqtBRBQEP>BQ z>eR(4Y?YRZk5m~xQm0X`K3YA>6MR;WH^8s8)nl!#9&2s&SZk}tT3bEV+Ul`3T0PcB zt4GVt>hW#mw$)>;tsZM_^;m1G$68xG*4pZ^)>e#JJEVYC?$NlJ zVhwfYfqu(KeUPd|x*hapBMpPpEYh=}PXTRhXq0~M6ijeC%CF*2W&;F!+Gt=e?DN1} zT@;dTpZ60)+9$$r2Fjib#nvUqeiwE}6^wtN|9v2HDa_B~$ahK$PfHEr9>)f*x??ja z`n?b@aaYA(N%^vApmqr>lkdga6L1!sqRAhV`gPecl{rg3i%2N#HzR z!!>$zO0Vb8V(NBm(!Y>(PJS_!du}QByp$F&1-73nWIIm>X+Ng~!5Rd)=cR^$`MGz> zMemVgr0b$kKYDjukXub@DDk5elpno2&fnp)>#U$|kwEUV>$%m@DUgEPis-wf!-u%A zBsfgzXOxcirhc?DP1tip;oC3@{pf9NMcS}6)4BFw4jZ<1rE?p$ClKVxuNS$7k}1h= z*yex?_*~r5+=lJ%r1`)_7YxeOhAkP5qDLrmP3(LaWj2bI*(h3OqiC6pqIOOcltrUx zc@%QWrVZPZ%4Z>0W+7K*Ay;N0S7sqsW+7J=gJJ=BO^WIjYi=7H)0H zRj`@-2<1N7wchrIwcXN{n1urZ4SpL(e6^G0L++l95>uuEU06IhZkN|I31T<0S)h4N zP9iP|24%-v>gg$}re$2FA~6|oS`G#K9ul4|3RQ0zX12aTYk2eOd}(PrV&!olqgAw% z(GRfvmV!E8IS0Oi99Z97;QlmzMD9(g`$aiKgNbK3yuaosxr};FAAzX^B2vT9W^CX^FnFTEeGG zRi`8tf5_j&yG;~6U|{$SbX6WVpSret>YjklP*g5j>2AjxS;_wcen*k<8xcx8&GIG~ z&=vl)KX><+a_8|zr%HFY1`OVwyZR%{3kD3emo?YuChCB`>S<^Se~;P$!)jzxjh+h~ zFx+xEfy(hKT4??~Ql2$CPhs$YH?~xhsMUp<=}o!5KG9UVI626~hH$M@=+@dLC-*l9 zi96YJO)gy)3Mo6gn@r22(#rISrqcZ)gUj^G^wI+i3Cr|}rqY#$6qo4$vGhs7jUV_^I^R;&TwIFVo_!^mtRyT=wWRkP{8b zltKQh+| zK0s&vM!d^k5R~kV&RThu)1X7=F<{HCx-`nBlJSG)Ct%T-2{&l{ZEj zPA2yzphf+`{jy4F_#T97fXq=x^NO$|y@4V=3gMRka%}#Ip!VqgHZ#IyD(67Y>Mm|H zd1-EltUb^huCm@H_ZvXR3dddPS!WE`l_3G>ya|Q+N6*m3fP07+4tfM?8|)Tf(ET72 zNQ?s@kD$TbDN*G%D8rVCVZOjAUXL{olJkI;adezJ)$33Qd>_J9K=yMfm>${jCkTH8 zIy4lyGrWqosBv;O#sS$zNzU}@RKREmeL&asEiwa!E(4U9;iZQ$zIWdZXYfN@dMaDR zWE9gyG6g>^9MTT)P&6C_^d6CuKr`b4z`J?>MZ*m_5yn|aoC!F+!*XKQJnGNb7_XkP z22Fu+B_dZyZ0I>TF%KltHkM@9#+<3r&v6!}?&En6Df?zPcarrEp!-aa&QEi)a3k4* z-CS=_h~meP*#`8^&6Sdnh}pcKNxfqq0{c}6LvTG$b6wdX?Tqij*OKXXoSyrsNYI|24 zgIHfafWl-kWjA<p7@2XN-;Qrs#0`hv16ah3%ST*Ha{bYE82kf)vH55V_lF%@>QzXKBJDD`7Xr@s z{;)qqB8swcUcRrcQQ@s#$)E}-zd-zF%EI{h{$Lodx;8ny3Bld6f)OejuwQliVTm;+%tFkzU6-#@!HetMhdOxQ{m zUS@4GfVX*Gwo?4pBm4|9oCb^xspo`x8TnV&Vu_nRQ5e1DS{Pl0)MY?+wbZ@sh6=>z zAUp~5dsnO%J?^`1Lg(%_G>;TzXYVQ$N#3Qu=3Sqo<1=8pcWHFMyDmhHc~`|;mQKKS z?544Vut2XdTpvWE>9+Iuv99i9La@jHleN zx83X9Q=}~B`CFt+rk(2aFSMV|8F0zR55>rpg?@!+56mTy9s_KgL_u zi70LA=SS-1Fz)LWmrRo-$CDsz04A<-+?(Ah4eeeO z6}R?BMHD)>MWJ&)!ao9{P`Uj}p>jurzlFf-z{pNUq9`=(ibA7wPZrHU6hA-ekDn-1 z?v6rbIsy{`n`kCt(tD+-;c(#>Zqa6pJ_g>Az;^#Ug>u|S+~7e3%|EY${awKP^F9*y z0AJ^yZr=`F`bSjcn?E;g!?&#J(Ol2%5XSRV_PuW6f0Fqy7UfG}ERw=le=Urk#-1mD z?O}WM%Y9F$?3^d_o)ezl3pqy!W!UuPUPqMP3sb)4Et;@f2DQqPwbMc!#}PXu;|yf-DXQ{?HRNZZ?$B~O3k&EAP~49_Z| z%Go=j>Os}*v2%34Xhc)2oZnAVboR%~WGTt_meZC|)Lb4#jah<>)#LR^jA+kVXUo*t_ufGYZ+yd)+t~a?N=N(6o^)O)P z^>_bTz28GlMdlQsfBkJ!cW(VXs3PYj-$CLM;H!+0r`YOj9@6Tx^*co5;W=7<(fHrN z*gSeLJvz^=RgdZ4zX5lPUSAgV@H}^#diYj~zX^y|2zy44uRaao2@!RVho46@Yuo$} z2=4*W0((I;7Pc;A-3vqm zjC_&RY2;N0L<8n4P=5bbc_F^5LpH6+{3igmv&fZAafef-@~@v%=NGy=(BO)awIMTzOIM6${2F= z&x~Om!p~>i!u`nJ-3w<>8<#uDe+ys(uFg6vgsEd^epPOnnKOBJATR0v?=7u4pZNJL z?f;_gRiHnlXyg9n(6-84NPUFFzksg}slOp+AyvGXvrFKs>Nr-W^{?-O_bJC+=_c-? zbE5T~C_C@J&0lvkwiDgWK))gB>&^U&c62F zqsgC<`Cp*l*LECDj+HjeIUghO5%5)2+iBj}N{;RG&iWnZouBW-IVLv(={=3PX=8-y zp(Wev+i6oo(-E6B#aFJ?h*qaHKTUG0&p57;8ZhAA^t-uaTBYjt5 z=cSR}&GOYQx^gEDE^02R06hIm9DMz5ry;kYpnA!G#d!0n_ZTslu(*eTDvt9<{@ED1VH${_A_ygXc`YPwH5x1PAf3fN1TF{sPo0Ih)&I&IaV~xCGBG(OCNpJi@@3U*CVzzfM*-U8 z%Z6SKsgHpl{9n@Ly9szxsf>;A`~r*qFiKqbe3{UWlH8v^iK>jzduhS$7>mMUA2CXt zbN2w56%W6F-0i}pG%6Ow%GEe+<92!Kl0OR%WB~2U7U8+g4q4Sz6UOkoM75*fa>Qu_ zw;nJSJC%u0=}nbhVZ3~Ib?QjAa%1>LN)8f9phgc#J2R0=dr&>oegWw|322w7gGMnb zs%=6BBNux2W1B&0`2+tAWW2beWe_~ z+c3BUtAEgEk*liwlV*c}w}Wt1J;&p^4N*4&`i6#ioPB!!tRGe2DTGSuVFH8jc__xu zph)q;8I~&dzKqm*UJJ&pP;fKA=>9smSy%(>EI_TIoeh=GJST5MwOLc`h{d`66h0vZ zRwYj@rv~7)R*S9A+ok22-(vS6e;V(%z#c4*DW~?KqQ0&$hh;6?*A?dHLcty~2v$ww zlXM`56EP;=0G6i`TQK%A)^dg$B`8nt`>0$#+JL=$3Ow4P@LlC3StK2XHWp$0O^}#`J#Vb63h#9zbILUTI&y9gXRsOamk&@K zT%zfr+uA|t@)C*FX#>~{QUYS@kG+~kP zMFLm7A?;!~M-!Rh`k(ars(|||y$;_e2^^OHCPe-Fa0y`lHCQS= z?K6_3M0~ptDR`_m_yPV^IMRXLejI&OM?JC}ns@=Jr4$X#K`MZ>$zV{-+=T*BQRgy+ z2eS-kECwg-443V>93-<|K4hKFaK`1}U^1`cGA|^n0`n2X&b|%!BfyO?EhlF3A|l1+L5kc3{2mb*1(82e zgcr_iRHfwuEqg!kTPc!#FG4J*$ioP*49mdJkw>9Ml+m6B4Y`?dAe2=0U(yoEx$7*tpEfQaHO|G5`5&TxL}U2}S`Mm&L}#vMZErTWDOzk{4$K zve1BtSuB$xHXsWPNcb@}Aib^YA~0>^o^G9vdlZtVCp+e=Rz=&%49F#xQ@KUO+XOU}~8 z7|;h6UII!xJfR8TzgDE#(HK_(zZl@it5^dY80R4HHz{|M$hAVBmlHh8j#+llYh!?`tV62=mH3yQj0BI+Hy#$3e1MGBp9ByP>?9yBu`+0st@Y>Yw zyOXI`NS=Ti;{mFp8buzKq>=|BWwpgivsB*h!eOOlX$aAkWk>~JRpY&5)PCX07(iG z30y<5YC&QFZdEdCf(M|j(C~kTy0Fz9&YzKLP`dm(LuA=u?Du={OVr?98h0Ec7#R=z z4=xU&&~s(*sUiON5dHxQ(ilkl7cX>eBYhLJt9Lsc?Nre4?Pd!Dg0$dwD;RE^kGnoV zSdxFYe*&7e0AEd-B>8SD3*vR)&yr?Q>)*1u(X(~|7F_}1*WiolZ)KF*1^fg+=Gryz z%!5*h*z21mkKqqyQsfq}uLESgbp)clpL;FL_!#&>(qu2!2U0-Mg%|_?S+_IE4>DOY zhXL+JbtwUZi06KkkYBbmoMYM4Y0=; z$~qO98$j{d+3Qi7GpF}fQA?-MfvFahIvb%uaLYh?LLs_gIXE81SU5yXLNE-osC}~oS5A`5z9q`ovU5yV* zHRerBRpSP9SL)HgyEdwDA&BQf@@#-EYJQegd34dPM*(vgh*g34rc?#_CI5ww0`9D; zfx_o&7L197h#0iXr)F7US}W(T>34*X*tr4P{KN3nK}~Zo0PA*jZcnzW8(`bDfUr3J zx&7(*&jEj$G%1~PTdCo5;GY0=dpW|9Ont?Y0bYWej3#$g@ zLW{iPSy-3&)4eFH;UKPrLDiZm&UEiEjI_kjNu zpv&U8Uzf!;$+vF_5&-D3*eH#tq{3c{M>NG_IYBz6AFp zK-N=9vLvCNOL6Z7$dUvn6i{w5@Uf)H*Xt(An6wM{PCy~OXEltl_zeg(J6k;G4sdP* zz}8-2kQ>C-NT;p*60^3oL8|&0$UX_sRo&2-4_p5M{3Ft&svAbrlI&#|@c_Ed8Tjj} zZj=m61iKxet9p>ob^zZD&{aKHS9LE~!v<~wep}V_>3Z;4)rG?67n$6yAvOve=HO5) zsqkFZN|{vn$Czm83TFyBr)5&%w=aVe19Yy+q{6=j{ttkz@E&5aF8>}<;iX4nLj}M{ z@69AaQkcI(5>24tHJ3mtiI7zMD2TQKbj62$Rq-LI_|@Pp1?0;rRC<>L({owOH-fhh zpesB>D*PY7KLHf7Z+!}hn+_{HKO@e5756z`CQ+73Nk?r_sF?EwPzKT)jl|pJzopq6 zW=n+qR-@*=iJalEoA)7UvD7v9$^OFa#yN|7b~o>KZR5l4xayf{paw>nSlEU+{8eH; zVE)L0@~h$KeZWE?87JZ2Huwo9H{NnL-mVOZX8aigQ0jK;|HV2%m)WYklZM%9B^23w z!{1&KlS!w0>lMV1U@yx%3G83LtCm_za3`wc7~h?!9*(fgXzd4}&{Lm{c52w%c;IP_ zY!Xd!tLDC|<}Nz8>kaNZW%fn5&+t}d-VJfD;~naca>~FrRJ_fhuR(-HzMi^KVy zoMz@SgI0793*oq27J|iua%DB~xZW%~Bj*mtnxA`P*OHy{1+mw>I%aGkv5%CFO67Sg z){;;`T}J*(u!LYt2g^2|F2_}SaJaAb;LFLyj{}0KybBPtcxJrWTMjHSl`{_{Q@^}r zy6;1}3j};E(j1p30@`~`?R}w5gX&wmajjuDJ1;Q2Xz_Z(9_Sc!KN{u;buRjakK9&12m85Y1^IW5xD-kVh zWPB|8Um;@KE6sV3(N?XBN!pnn*zVX%oE_j~{ft_%mqqtM+{hlqw2TZ!F_k$K{gU6l zSP*$LEaM!6{r1(kMndrjggjf6LnG2|D1r?qC|Q;;a{iSC>=flY2`q&}=n&}|1Wmo% zhf?H1UsS)+S&xLhF>f(SKUZGq;WK2&xTh6 zrDtQ4kXLd26LYpuKDF@l>;BC56nKt}8*9Vw_H6<2%)mgOgYpT|GXu>|8pHI=z-VVD z!iK!Cn`ore_A>nJ)veGwGQ@cqTC? zOwSC$GrxyqNTw@6c;-WlX80;VbnI+gv+Tf1lPj&-s#P&bJ6k+6u*7)?oCrNLuq^sF z#5HnufnuX`#-C%ep=F5w1>t{8Dop%Vg#SGPMEuXO_d`m$o^&`ujFsfk zcu@*h8s`#|@O?(!>DS^lwuVgBhQ#GMtMDu%mt7n;ytufBy!=_A3e#T<=MMA8(oiom zlVV2Zu!%;fw?^!6_Xe;k%`Co+=Y$JT`Jq0VR~uf`4_KAP>cdaKJ41(QtTFsNv82YD z!mq;BL)97^9{vlp)M%_NY!U0LvG#C~Sgpp!ho2Y-tWIN-!_N`xr?KfeQ#4C56~JmQ z!Ugqpkf}G#xyYdu!-SMXoyO;JILZQ!oLvPYlm4Nc6cv~ z=W;vD5_H0IY2g)`7Yk=n@=6`AF#G{aKd9b(sLtTJ3c zE!U#7VM;Q7C-ZQfE!9z`;!*|I+u=GeD^$^xiAf{$I~~)ofL0r!8#HPYtuaD3YSbax z*9iSyqamWTM(8GuhKbf0p_?@tA==Lf-J;PL(f&s0R*e=Ctv5oqX*5B!!3f>1(K0Lk zGxKwYMk}ni$s)T`qm@?NNAxa@Carjg=pQs%YsE8(-mTGkD;_0!k477wYYbn& zZe)(en!+Zrxf&a;8_hhA%yHYoFS3B<>+)(3e?vPLXl#7=eCk}NvB}{FST2h+HeGjc zi?xu!oXMG`1-G1xt6S#+HT;V|vSU-j|1G(Xt~oZ*}IdN$5h4(%8Ci z10|Ph$qnH=TDC&xVM}-!b*|Ld_VC-pR%z^n@I{QbT4TGyXAwJEW4puGQ*w>Q&I<3P z)oV3&Zulc&>oj&@_ywkSjK(@LN3e5Wud&O+W2p03ZP~u?In=p9^R5f$Fz*{Z8SFoA z%$&#^ZPL60;ZLb^v&LQyzfNq6#$FFkW=U+-*qdP-&18g*)7U%V8Lanh8ao*NJ9*nR z_F?!a+Ok7qpN7|vw^L(ZggNI39j~!(!URLXh_A&D153$!z#XriciyMM8*HgQr)f5n2N7uR!-Mwp^EpW zO=oyA_?$GMjDpjs>nx9zhi;{?O@)Sf{byr>mx)pw=FMamgm62s;Tqc>Uq;(nyt?mE z@dg%Zt43k@J48ol6qavba%~!g<&V&|ks5{N+sGZIQCJ>l?=)JYu)G(Gs9mG5{8MIR zj5nQAi-anoe~i`4CKYcg#0d!FG>W@~g2R}t30~_dbUnqP9X5If$A2cKqv4;ab()h& z#E8GhB&R!)nFGb~cZtq$q}O}7IQ}KknHqh)IIac(JzS%27RUFHJ4?rXr#OBE(b*b3 zSRB8V=p2oHSR8+Z=v<9{S{y%-IiIJ|FN)*m5S_2lZ=j0k0*!uO9KV_9LXG}Z9G4lu zA}5n`E+Y}2&#W%iTqhBiasCJ=^A}9bLW%fwbdDvOTb78+_`OtTp&}8#mu0$4b1M^i z06)^nQC2{FUmOGieV+@tV8=3A3mz#`B=dsdFHyPhZ?kYFkWPBJs zc(t2uGQO3iakQImGA_+~jhk*VzKS-lbv0MVr!nq2H{I%Zh?kpyV>Qg)=g!L%UvBmi`=a)cYC}a z(>>13@Af!vmP6Y#w`_ZSD7o9+{BDnzv7C2kZsqoPJGndE{BDnrWZdIj%{$`L$UVWy ze3Uubk+_5TJ<-*iu#Lpctd^5Bp@M`3jBv7(`6ooEB;j_J*e)$$lz{Lp(?3NMY!bS$ znVzZ%4hbu$<1{DpJ*iv}N?BC9T^-dR+{Ctfx~qePbxh?9R|g4yp^h`1%x|cJgexg= zmX;`M0^xGzWsfFQknjPcob8%U!U$S=j+QWng0PCYJy#QK6277x=V^jN!k5%>zH2%O z^Qq$kSH}bpKA{~Kx;jX}gwY6HdC+fJ^)j`7JtdmPz9rHnWj8QsV9VBe0KV0hS zAi>8HyUf)=!Xy&*x;l;qVJi*0+|@zCMNH)iR|g4MjB=%`gM_mfl8 zdNHDGs}Cy=iqX<>zSJ3vmy-ZiD(6d;%K1{Ia=uiloG(>60G4@5_4!g|!BA&xoGh(eF6+aNk7bMx&b`~+q9dBgfnebV-ktWG}3TERK zcjl_sWgxa;m9iDkn~cgEK*8rD@VdehgxVQ_mlzcln|x8Q7hj>9hX`{3l{-a#gVBeH ztc0ZE1xu}l>R~-b@$Yb157BjiULOP5jlih@qbe7Xw=fA_BncdDbJ!cGQ}5^bmq5a@ zAd$>QPQ9NGknmhMp7--nWMcV%vxe#+VB5;4Bh+MKy!7pGqE_`j(5*&C)B6rV%fZ2j zQEN0*)?SQ7EMS8~Pv6(!-qt}YYBA5X(-`ld)mQU2AwkbCfvCj-tnH5S1y)a9-C78G zjG&&B^!*eGc$Rvi);*nqOFdl#-TAN4?{q{n#}!!p-hwi-uE6T=pi~ZEs<2w}Lg-;7`C^n$UykN>^sCoV>KZrj8 zSGkB#~p@=g$v z98v7!!wkRPdgJ3tvR@xp?Bl}>|B~3v6xB<9K0eIwFUxyWNOBrjST8O6xcuk;Q1&mv zMxG4jJ_rdUBNu=k zDn{e?@j*zSKKm*P@;qg!X+><=K%h~dKq!9?Z{U&gPG2Wh^e^n9L!2T6=6g1 z8wbH`Infq#(b=F`_64}2#IQDsK@wp{zN;B5l5^k{zpEK64$=s)m7D6LMs$jIQ*b*NmT+E~Fe963rW)Z6Kc-09erzloi~i;Q_ZN-NaoQ0)G4 zlvb$P$DNxcJW4B6llupxoyQjwLVaVjsf0&qg=)3ASR_Mf@c_oOih}hB&zA!jON`SI zUcdtw4@VS;?0}=EEsPxrvSqUfEcq=0@8R<_m=CWpl!&#q0ywc9>Zu0c5Je~!Y*&}Nh!#oQv zvs}VBz6WMHnPm<+eSEkWeMaKS55qDdH1sr&LLiT4!DaT+8h935W^b**$J3}YYjP>= z#{UoeUqt2>#?gm5cy%X!U4Ve!hY$%>aoi)H=UTnqFsIyY1Q7__Y)RxUCjvPas zJ-~UJ@!26{H)b-71>Mi^N9cy0(m=OrKL*6IKL^%b4x^4>mHk$95q>^ZkKi!sD%6tU z=V8EM*Sk<&GV1n30^|QPDAIv z$j`&5BRGtj39R$e|06hz`d^UT;J-8iNgPJq0qjCQ52KFYFzRL$%f7)pj5>nDsN0a< zb$%X39l>GLJc#y282FLLj4EuhRlZqM7spFS^R=^kalCZ2KsOgJj+c%WO4#w@cjc7vXG4J|%BU&QiLNAY(j&>6y;T|s??d_b667lkQ>1d^&VIok_M-Uqb zG*k)V0BJCyhY1q$@_6ZJQjjnZ7+)<&1PH9J5hMl#=Jyq(5D4tA6(j)!8K@Ja3(Z@?ihd2pz-YQsv zSj|$FhT`$k(H22$#p9);WAa#|P9LV-X7rZ_J-GvYt%zE}2R*sX&S-}DpeJ{<^Dx53 z*zUMkHf3@doQHtP3y2)Oy32!}7#{S1h6g=thhePtL9=B~z_rrOU1`3FfVOH?OwxAbK~L@y=Vx#f zAN1rdizW~@`uq`Bj600dT^{ko@Q84OcB%4+$FfZ}0}eH< z2uQyIWAw8|{dK^hdXhf}>Ey+{r$QbM_xcjpcj~f|v_W~cF>(t6OGUR(g16@4V$Y}2c zext^5Z;)~Fbl`(Dj{b-Djx1OX+Lml>bn;OsA+yz)33Jqpo)8}qrI4ZI!$sqC-Kk>- zfipgfS;kq|D|RDW<{altMDlW&H0S1YN7zsoCm^>la4wLLjArJdz&;?TQ>Ku^vL`O3 zYiay;;7izx8_quw-8PSQz641Z&YIs8P6|&IP6|f}_n%fwvySnVqHomuTh`}ue9lv) zuVlh)$#Feey21bAMXyx$GZda@$P{Bc(;!mKJu$F z*-th(`9uBdA+5OKBfmMsm{7zGANj+qxxkjnxue}uN3cgqo#!aO3L}1`ESm#9w%Zfw z?v8^zLMGBf5J&L{_DH!PA*0fX3^G4Q>^vU99vPg$UObOSut$bua^y3b%*ZT@CwVCz z!5*0}hoKvaN3cg0=w8LBG$V(b90tdTDjvZeSsY>~V>ml8N+u%%ob$o%LpyO+5tC|3 zBgIiXf<4kEjVGjd1bbw(AZdM=Xu9GN?2+Z-YGK7A*dr&1?GeQd9+6#H9Fk&iI}UC7 z2=>Uu4#!r-BiJLC$(U#;?naBaN3bg%!5;bb5$us491gRJN3chJl;&$F_KT69#2yTC zoId&C?&4&{M)zDaxd@M7=NRngG=xX6AJ0Edp z9P7JBkaoR=ueSe@x@7OljULIHtLtWuOdn$YQz2>H=JCGQ|>OO*IGEewhS(*bAi)q znG0C;EW~hnE!&jiuR-oDoL);TqYArHaFwbdYq;iD?^Z5~4iqktW`zlyaItC2e%gu5H3xiD3 z5g#mA`eZ=x@G;10lm8-w z4Ru}P^(FcY(A}l;Rjfv}|^`mR*Bzl$Ptn-16E>DzhL|h~0^>cmu6Z5&xJXG8ey! z{}&LV0ob9bry)lsQD|b3TlTjQaQdOv9WOp?1&;WQcakn^@3KXPce3;$w)*g2;7$?S zJ#t6uoh}?N)UYlrJBs)|o}pYgHo_j=vX8+vmw7n>0h1RHc_-=P8OnuI!{>`w2d>c@ zDIynFZWjE(xgGZkO@%WZBI*>lU*Rn26b!{>jKaBkAXg_vfh-WjQ9MJraIqjE#WR!( zmkJVA?92*}ib!9kKA{Om$4*7M5j6#VP`EB@0lnak{Zh^U4&55E$cjAS+B&MyCK24H#bke&eY1iB{ zwYhjG#3HyKrZxFu&ViIpUtT^F1M7V_x$TQPpOCd;?GnRRlqY^__#T8W$4d+T365p| zjO$p=RD7+?*f(1kPRCTwvLm=g%W%O=3>VkKPeRx^YY+;eXs|;>oV#d9d^Yal^vXt2 zlQ^`kx(|lBp@j>S0)2G^}75IAL`O#fDd`0usR%9_aM-XaT7>d;!9i zeJQTd-{YbU5$|`Z5XmX(=DY&BdK5V=Dvg>5<7=15TTxl;G$8n-!7|iItf<_nhO4OT zHn1ujp1ozLw!z9M>gg;7VygqA!0F|j3B*w!5vg?U1`<*eiBvi70tu^uR8Z}Bw5d#6 z+S@2FwQ&r=WLj(4{eTFcX$T+0sVU+qDWdd$CSSiaNrMbKQp-LnB}qdL<=vEM zr37i@Zv|yg-~}2VObIdrzZLu(B9QqzWSl~jZn&t<;TO!+MX2qfe&ThgV7f^EAQ`qA zhr%t=(`!dorHTfMLx+qU8cCOMZwoA&6=2yxkSv=HYT0ZC%~{Z=iWFzqSWRDdEnZ#N ziP{8-ZxVr2;Wf(Q2QVuGDG$A2d|ru!ixFNHMRyN+Z-`nsbJ1xXNF`|*p@$L9?+)YD zxCH4Q7J|{d40%(F6dNYgla$YU8+Ak`$3~BJci1S)ub>S}(s;Auv3A$MgbhugEEP)r zBr09z%HKixlQ6SXN4k_-K#5OaGDn5mkWBn<3@^{+bR^%To>hfxlpd=R9}tZ1ptjYS z^y~OSIKD!+gVvb;9O-K$?An=5J!{=mV7L+g6KX)M%WOp4VQlYez4Qdg*gGDhY}i7y zGj*)P@=oP-4oMqI*z~m4VRI`$*<$uXnvR>$k3&J)(T6ppDKbawgRax9&m-5($3YHf zr^P`sa;`x!jY=_n#!=g8=e?F10Gg|E`ApL8vog76qjj#BN`qgr6mLpl-kXRw*6Vh>1D1)6QFCD*^szs9SuyvK&wLntc@lZy7v7gr6g`^M@Q~@k4-*_R zK1{KUnnsjy{E7g}I}L-|p)t|?5xPvOHdfxzgkYZKC#j55oT(UndD2DUh2DXrFlm#$ zmeKc=X3TTm^^PG~`llN1UAH%fx%YA*shqhQeIMI~q+jrEBSq#7%%_eqp8MKu>}%)E z(yHE2=o{o+{R$?x<~62wKVz_kno<^rLhLGZ2f`%;lgp?^-)*Slf<0cI=JnfY)`ZzC z^am_?__PoEbeS#H!G@H16VOUz(8dXaNt>r=pznNu9=7(-x6rwYqB=%EzE+OBUu$*e zQ26Rm*i8;FVmpUIVDWDwoQw!XfhQDMC5-SRg#QVcxPP_C*O7=RED#2s1CjlP&iALvI z;`S5>0aVA)=oR(1=i#V`VjPVZyYuzO`J;>CZ*Dzr7WnJ2@=hnFKDT9Q|(uiHU8+R-ol-P`zmFI3-?k z#r6!>(v2U~9L`y&qSeT`6G5ibigAHtOlEP7m^3@xl3rKc4t`M11WLDRq}`W3K)zqs zF&a6_qzLo2T26LAuH>90YXwXKB*~HA0rvJmY$k62WjI)a0iH@AYY5pV(=ZN%m!Zr;ZK0cL~Zblx8{wS!gP z4WU1ST)z%yADa;lj=w|X>i`8u_d;IrL)%AZ$H0?j%yT@b4}tvv0391I92?+$cx?{9 z9{+~A^sms#s#nYqJ83P{+3+ZYf?dyoz4lPS>UP(Rf)y8Wb*4Oe%}Q4K6{fec&UTg~ zzUr7+oN~u2%yKsVS7FghfFwChkW&WTaUb5IIR=#P!1@NzvJ{Bhcq%B7*a<>#6;>+% z$#=Wy$R3G&zG-FB6t{T0or-{%nA!9?0w0U&Cbf$Je^R~+X~4bUJO`0y063%&mAL>S-g+AFjtbmQ znX5qk8~E>t%&oxIPz@ghsCQNRJCu10)PI8iEoG*z1fK)`H(=2djzOiL1RAFX#Mj}< z_oi(%NmV04!Hp<~$yCZq02K9|vOQ0L8p4vGsXz&)6RspnFE1s#A%P}i1|6ltT1IV1&RSBAaBKAvYjIme&)kat5%tQ&oWRBhpjUJp4mW- zMqm|1fj*IS6!5VvBk{GVlz+XV#C{*_H>=d7qzJ`IL9oOYLPbSKxYY=C1}~w z#o`@5_KwBU+jZCFTAm(dtVYwJ>hzf`hCv#^*;AuvM4IV+9@@Z0PDX4lG)8zY$etm(Qks>jezW}VJ*T5;Nu`X zO5z;&YbxH`AiN2XIvLYP>O^K``j*JX$qqI2)TC{0HRNi`)tzs5t$HGTH-@-2iE&EW>{*lM-qBDd8g3 zuV><5B*y!tSyTT4q!n?71EkA=Y6E$8J8Q%AoeBx*at?>c41iH^5?U31A{Synnf8di zpnA^1Wi^CW0#I6ATvbjkGzO4Xo4_T9D`=8D#$<-;e&)dYrAkxm()6hPrAl&y);apR zYmQu`JY8}EjH=MgZX66H2b7+YoD4-l5jddgx$dX6zNiw^n*J%v=`XtQ()sL3y{R9k zrJpzo$XhOwYzOkT3jD|fN|!VNyGD8MfTuTtpgP*i@X&nKF&Orb z(a(Pq;%N3x(KRSKK;~*hCCD|VT|N}Nqr0joeVNghYm#KPqdVH_VURXD^TgXBWGwO$W&10+TUX~n zEZ9be=&wrHp#*cNy}wFI@6u6*hTq^;|7XnhNF~!IU4QLe>(518cLV0S+fR&E>ZbQ5 z(-WU0LagbH7dv5~?lQ?80w;aQYe4_L91n&VS!FR?04xf)NX}sQtx5PVvZl_B< zg;?immy*tumx;XmmyT4={ExY|8HqeqpbHY4EhWu5^zZ{e5{{g&brF=G2Wa~zY5NN) zeGl+I07go8`KTo8O-;hGvkMynQ<)Hh6VEhd* z^Uq-Lrz#+&p3n093xt1x^G|^1Qy}SUF+%}VP@?C`lzbB~Z=3S|i1PAm1GN+~C4m3h zks6~oLF5lb>h{*p`J|tyN1T3)hb^N=v#E7ta!$@4o0#f2_TW(bT_Db|9wlxIbwdRQ z&ACn`v5i#}nVHR}LTWdR$&%8XSwrtNHhl$A--(=L7+#8ZFxLY)bMl?o!sh_vkp5`E zKpy?-JEGL_6E$OpC8P0kNGG!oBne=!XiO=YT zX{8a#Lc8%MRfO%?s_l$ft-5ph#_0V9qki9$YAkk|qj{XH_xon5inD6HKZq}sixYT% z5+^_py^ngIk60Y(vPACrR?*maN)tE_MJ!G}HRqu=az-y)xz6xDEc-2t#xEKF=7{xD zr_{~uBE`v$_ZAs`jNX~l)uFTfMW1#izLTalK_ptNjkhS~!7#Ikwt)0)d4S2qb1?Au*glAW?azhT)Nf z3c2HooR4ZTORQo#kHuNOjGmyha1Luk&PFCp%gX&6h{YMc=37>S=C4Qjn%|q6|6(Wq zdvk#BC$v!i`=*!%6-EM}I(FjbqKIAt)_A(jMR1w(0NLjb1@Z4@G4JCa1mRx5W=6!? zlQA37cq(<`jI0x{>|$)CHnw-78It8%l5=t` zS>8pmTuTmOz3^8CP#v5`cwPnRd8D|XCcFpaYXm+g@&%9>?iV8f&(A;xA<#gC`=S;g zFoy__WjG0eokYrj{0@O@0JFB%05kWjYa!KLHmH(Q9IB|nsG?G%is_hDw8OwyfYZmi zjD(zF{a-f~xYY=mdqS{}6Qpyoh5T7)!DJ!{gZhK?JdD{->xKjQ8iCINi3vaovF;K9 zB<28_g1`hozoUTk;|`YNPQ;}NjWH7qGjS4-W5HhwC}YRP>EeHn?`B^{(If*+!`3l%)fGLjvxt!ET5y(0gV>qDUIUr>mIvmWE6fZ1# z)l-#UN}Vm>ltZpNWhVgHu4cQ!lww6`fPyXXZ;F|`h}beLhw=IUZD8L57{#7~TstM=srP#VXui*a zyC2|*0{H-eg8=+8y^!wApk9REsd!ip!8ndnVdHhUhbU9!L2cNWpWbthWeV!J1r}n9esD zf_-DODUEM31Z%aq9;V~BnJ2#;MXU_>_|`B!I&C(Akj@tfLOrr(GRzkULgf<1V;@X! zoKTrVP9|SkHZteoYC{tvLPJk;Cj#kwfdD%qL<3(S2=&$)z2td4WqwVnGx7tp3AWB7ie_SdO7b=m;w$oKM~W;INEsuBxyMr zYkpHCDLhpqDIDb*npRAUj`4BFX&N{7WvtJqcc*h7aK^E5CX~i~z!@7dnN=gkwjF|W z0k$}`An6;FV&p=84c)#`BQX|HwHBI#e#d@IsUAS%vdcH8k5eRjGQ-%Dc?QVY+*umN zo=iHIk$uFoz*2iMv$-cToZ6F_%{`f6?8&6(g^gmpCzCD}#-7Y)p(~n`02ZBxNsfxj zp3JE1$&AXL%&6?ijOsm^#i(T0A;Z{{8AcvEXqST5^5>(~$vBPw(_CCl0*3K9;twPkG;q%4=)+OoD~ zjDWTZ!!s9AeX^}B>v(52%++d66g4;roN9JSOj{>?nk4P$q<2fwuDNGwa}7^A)c9?B za*o~x%9{0b^PUWPRJMUe^)}FuYy8^H-X+y?3y;rtOu#3>&NWR(B! zKw^f6Np~woxTHHT3xLA-qY(Cx>XU7to;eOFxpJo5+(Z>RP9t~W0>d+}tQKJm-WWwa z^JNru9Bu>kEb!&RV?u_f7b5!Y3|za>W}OVZ3)JX^7@ETht^gzosTINV`q_LB|(6-*cDA0)$exWf=H z@X&roW{c)P>03fZ>>1GL5;7!GFDt-r4+F_>vt#nx?2)Y6Q5a5g!uJUMAzTw|T7N>I zCi{Yyo0Y}Nsb#gEqNGFyZ(_ZeJ^Bm&m`B`GN^A5za^96y!typbj7v%mPs?buY z(Kj23C9;d0^-v>iBD*;KBNmMl|2<+R1aV`QNX&5V(q-$6>~50Bh%;;?#7YH;>D0<3 zwL+ux%2o_#VXXGU5RbJ5TO~`=kQ_)HX+f&QR>?BiDj8Os9F@sdNxbihzO=h+l?e!wsj>jYgS) z*BB8$xFX8sD2NOYhZtq{dI+TBVe>Y?z{j-w02VTK12%B8rfSyl+xp{Cl*Au^ncV<+ za?)%zaOAxOarXfRh|3K#)0kdxBk~9sC@Bpy6HG}>93W{7Gm}hXH25umM*3ijuB5HN zj|B`mqYSGDNK`It#gHiDL#yOoaIS;MH2|ab#u!Q+a_T9RqZ(oQllwt=2)z3M$%8;X zLf}0juK~&1gvkvc`5=%X2ymKk7`2RNYVT0XUX}SMQW{K6qTyJ`tYsu>xCDUpSx*O=^3hg_`%^?~u77YP8?gL(zYiN! zgX#Sq>$9*NuJCMURW_IdSe1oHJO&u_CH$Fkrd%jI(Da@G@uY>M8zC|PU<}Fx=CtAq zZ@h?&Lrn87$`yk%0W#w#S5NlRY`0m!xn+NAZ*Iv|6{a@=tFfX3i{8yjIah^tt|JkB z5nw21KdPrG59&KWI3F-Tp6mD09``&5PXWZ6`k2y<{{;L8z@VwHhN)P*ASFW`W@gPn zV#y`oWNpC!1b`p7a-m!32i4dy2bsZ7fSSAqmkJ2=px~fBBte(rB|wF>rg=XVwt+JU zG6Mn0fj}lAFrJb6QW1%_P4t%EL)G;FT@8LS@)|U~0Kzi>-P^{x_O>q4 zhnv36gtA6F{?0JN9F@LBjDG+QqtkzbB+VErAj2%EgkX|RU%3_I3Sc;$pCTR+c{(th zj!%NG330kOeeKQg;vc|JOQ|euTFGZYX@-&}K=L4v=?F|E@;Z=J2pmP^VIXHBa5|tq zfT}UD62-z=&l*$78VohZvfNr)WyCX{xV1abaA422C35}oO0ZFB`H)v}d=G?I0DYR^U!MRPWt03pDn#z!?WjsX z)yJGk-HWffgSZ@orGP%uA-)NqThn98I@Fq6#HiaqmDuL-xRP(bosD>>0_rXVy=o}l zPgYMT8TG4YAXGY7u!I(PpEFsLVPgCFr)rRkaayzz+|IFz8TZ$TE-xj&l-rB zyhxAzyb3&=OV0)NE>d_4AY+ne2b2S3@GD24ln4i?kqEQ^WZ0o1A1~rHsbOaY*h?tS zVdr85&Zj(EB1Hqdq=p}9iT8qiH$a9Va??6R++m1#MvB;_MMCXYu<2B=O=w+l$y zdAM8v>^#88%YhuA+!YAi3d#)t`Hi}OZjZ?X{ZBFD*rGr}+3g^-OUvA=s>yAaY0_Rb z{2?MTN!qI>bCP6?Ig=CpUD#1YW83ed`|eT|hg9rRje>}ZQ*`@nmxghQs-W`LX4-L@ zk|DA6I;z|4B76vd^3iKXqaJAicC2gfElf@L$Eu#9#$ng9(T%x-$R^!0RH9XE*1?w6 z-;r^gZgl7n)0p;AdN2`DnacdI77H!`Y`Ov=0GwPoW=SD_fz0>=VMr zV^tL}Hh@~9*Um%CswqeD`3pD`ATkb+{0hhs z2rL2^^-;*`k&s_?!F-Z#{|oFizkngIA}TJw1;U#EGWd|~5w<({kl>5K2Y%)1z4;=M znu6VgU^hZHMsfINUBb=bJe|V}q4q35pR+*k4S`lE^!X}{>w&FOk$4EoDz4?!aX*c_ zg~lyV*)nZ>5wTwYNc;T&fr9`@bD(^j(oK|}r=l`al436frK_={E?}*-D>1*cO$?m8vU2xD0SuaS7t#XY%zz)uIwBkbJTc z)F;7y1dvPu@tkNF{{~V=v9>l)`hijf7(W@vc;2RuT#k$IS0HdEc&7mHt1ajz|AzfN z6B&tV`eab<2lsA3as-ff5co5Z0YK7DLPrHi_5o6lKrH}Sd#?r2>y)2)Reyt_x^(N@ zW-KkYPBlvDPW-GDLOoTO!gX*~E!$HiNzffdPc>Xxq!d?gU0ix5QmKncyA6&>VjQF4 zQdU?(rLn#6$9_?D90BFJ!V;<%^&Jjtr_thx8yUf)B8`ss38D22G6D)mH*uaMrlxB@)~05teAcMGM-MCc_B3`77Bbq`VyX(F zF;13#@@p}0vXs=XPK+iF-ff0W6cx}-D7KbC5H{zd1#Ka*a5pp$ujZx)%> z|DaTd*8h;WvoUQ4`}14HGazRq0IGwl1k<_cOx-R~cA`?Y0A|P%#+|Z)F+)}`bhz#; z_~%Tq`%amO-Ui_t0mGM+QY&=cO%J{+klX;mU%`0`fZyS-F#U`5>k&G)9kN_get(pgP`4U|WpT+D562?~&A3fLT&|8>Lcuos2>O z%#?!PEV-Nxd@AXZku6d{Gh-v5Qa=G%1>RAB*{QaVFV%p#C9xC%S}g;5%T$b(YlMuM%OlhbAW}Pv50n-bhjd|hfnV-~q#FfN!Nw|+CDT#aEF@#fNMzIeT6S*U z3?)(r=GTLz4p^GzH=;ti81oy^FqxyY`E7(HJ9!Ar__mB;W6C>>@U|%9OJQ2s+rthi z`>Q-y*UJ9dgXS!hkDvyp|rB6yC~Z)%Cv(0rH2$e zlPL=3o`*JV-YLuX7JCM*;m+1W=G>Jdec9YwnAEkoED?+ApIY)-DM@2)fLYuuhFHAG z*4)jFqK7A`nOhR_uw-s6D%3kWMx_=Pl_txE+u0+yejvW-ojrq0DFE;6<(&UYX?kaG z7fVKQ8?Xo4fa!J?*PGg@!h>zV)M1SI61I4{sffiT8Ou$G8L?jM+rMeC6R z%PqgT`zbmtkG-wMMGq-7Ynq-njQS3#*$0#^>j7Z5b035KqUy;962@YVk^G?tLZjLZ z0h!uPI|YL-KjZP0}BP25QlyCiKa;cSz?1VDAj)b}o^x{c{_EmcjB zJ6MWHh9q4qpi07TK#_sQ*JTHqugeZJ-*0!I z`F^tl&E02}`tWsFu@vO2To1z*PnUHn3MvqGwxRs&kTC>d|1Jy`($WlT2guICSRu$h zdjhTjcgvE`&IKl8+A0M2^&|WQ-xmqgeVj_vZU(ol;q%;w?S#sLUaFhpgX44%*C*6#>fvB4uiaz;ZWhih6nQqIwp z?I=Ps!*u=%t~^yW!=_Fz#=RkCrhehw&Rul`KFyh>F~^YYUY6eOmG)dWq-)hX%g}`K zxGT^)wB0L@y8=7$A|sF6y*lx@k;m;`)}ifQc^o6HL)*Rb+Is;%wB0L@+r6wV+r2!W zz;d6x9~tx6IN#PtlRaNnt8+8VNoQ$VBcc>C(z)l$8kf#Ou+zEc%Nn1>j5|h}?D?|h zI0q3)3fG#Ovx!|o`o#&zEewzmN@rhbEed=C1Yb^PEi))iXldNCQ+vJ&9!5;Plg`@a ztpXk2w?d4<9q0m7p&Y|l_&V1Ej35nffJEFVO6|mA1fR`J6z?342@(7n_=XMdL zqiIwkbubcr$LRL^VX%6Vnc0d6-!Kvdj8eW`A6(`2Vi?FF%P8YvF@Yg+MhkbAX>FZO zXq3Lwgc#-Cdh&jzj_!AWqV_2NLqKX9+!f7^{SfFOuL>PzCNtE%wJt&U>zw)Gt51claHg^wnAq$ z53Q-jgOR3cHPPBr=B>u_kxfRmxz#W?B5yU%La-YGk3&oO66Sijvgj3WL;sshSYFfy zu{((0fbbQdue_)YB0ZpdPOn4J0vKW)K=LyvPQ!rgT7dVmku+>U%5uea2!!!ocKAh) zgHXr{{2MmZ*3@guKLvug<}u;_YI$-n-)qwFpot#ha(f*q5oX!Hobt&jXS`poj=x*{?^SmdHvV zvk;g`gs1*>B9nov19deyBY>QXz}bL$rqggGDCVB_Rx>@+Dci9tKrN1EXCnC&J?jCf@0LfB61S*LzOIs1xOoUlF8-cR`^-QNTOBm07lckNU6OWaN zr~LnWu9AO-)f|ja9O>(fJ@;?(b}P;Gf1h6ikEmdlqwKVKagb3ixo$$%bhZbQ%+`1z zNGM5r>mA$J)!19_-sUxuW#GE1ed|&>WzQ2G)E&uvHm72ZOGZQa`(ATIYAeL8AuRt$ zn|;48+uZfY_0@nu(#5|o%dO7?-wzlpUGxXJ?4iE}{yF8ww?pFx-Px5_oQ;7LFl36* zYDqKq7 zN5sC;hj>&>CO*jsa=EJx9(z8IJ|I&piM6hVg3*vcet_kM=j z()WUwrlm4}yJUU_jGqF~nZI2!e;n{l0G;_eB=c7T-%Hy3H5g0okj%dh{3XCJ$?ZGA zRg&4&O&gJh&g=tSGW%ec%svsK9d2fylFTL~voE=M{RsyD_q=XJ{wJv#H?O~k8p&(W zXzb3s?)1Kis9AKVj$=?*x}tYVUj66b<`$syx>NF61-utP=XK{aR`e9$;{ZBeHwEWP zzScEOfIgkC-Cgo^dY62i8)BMnzAosJugl$hefU4-YtK67tJ=*M^Dg=F8N>H6U$fIz zBI-)X7u$u-*K8ScPKB*I0Xko^WhLWD;E#|dbu)Vs{pnx8zXlAJ{(knnN@(kSE~aaM z7IDsbvRXbH_zcn>Wy%YLb^`G2fL57cERy-f4ZyDl4EqB2%s-8TCudbTAsFl0P;ZqXEb24onM65aC_edx2=z0 zCF{XjP7XsO$U|G`R~C3!<$tXvm8zPuhO&~-zyF` z^U0vQpfk3t9lr3fyGk<$>~Yix%2-bJjj>rU$V#^gn6Pym_~U66D1&9*J(e$CTX^yM zcB*HGsrh*ETJ!k^vxPU9+38phQa`N+WhBivCh!eqi*G1%SR6;wfYnjkIA+ihTJy}MdjyV{~+Nw#F!mb)#> zO_t;)x#NZl*cgK`*aicpgMrWq1QH0?v=}hGmxLOyX(3=bgc2Zh2!YT82_b|)lJECF zbEQ>y-#p**8qU@H&zy6n&z+gQGh<&lFI2x6V~4WZ%i<-BS!3)_)?m?F&_=R@sexNE z)Y+Cho4MHuObWx_GM?^Wpslo428~Krcs{>YQo{yXh?PN` z5(;B)Pzs5*?BGbl|IZ> zj-{%s6A>S6G135M$ZN1Z$IKs~A%6tSy?_@9G~_RUD{*WQ_!r=}IG%!*$;@obcvTt= z^hvx&bj(oZX9NbBp+PwMLv1o-2IhfgL$em5tVvw-5@Bs#XHhSPOONAyi@D_`FuYmn zZZs?G5?rbpR>M1}-jbjeFyv`ihhX*qXvnL83viqx@JGPCIPMns67UX=H=td$Cz@B} zu4(%l?pkAilZ#t*j0T&lSIEO#VOytHNYh&(W5Egq<~5Ba2AW6`F9!Tw@4){u8;EU6 zCNvkY?bN$zBKt6uVuhw3)xi6xou^yc+i!te+Vi5t#ycpL!0jZBxfMS9nm?|MrY!Sm zR2$b_T!|q)7vc`wZqvB#;$p3DwXu?`B&FS^to3aW%k4IeYqu$DeLpsq?KX{Tw<&9V zW>4Q)Oa5AMRur$7r%=L zu^zY#@9;w&acxUwQE)%GwJnuJ!Qsl%Htx7un0(GgR z+1#0TXp^Z_OY(HIbGpwV)ta+I8**3Eu2OADB|FUNTB+28;ubl-` zYo&^5$xW4m>Oov9rFiUAIjA3qYo#tnZI?=2D^<$1QeUCBs#4cVmDc-Jw@?w*RO(u( zQm&O!0Ebs;>rD}^=`>(vD97(Q~dJw(Ml@;^~rCckuH-1<5)U{HjTq`w>@UE{M zM!HM6R_d3u-kXX1lO&-knPH==Vo<4#t{FDED(_i>)JE3~8(mMsuX<1BLm94>x(84c zKFG7=DIO_3U_8&C3cFS+!?jXMYo)H0%5bgJELrQh_kkWC5aoZ4T(a^bVw&N5iCSWn z^)ly@MGe{NkOZ`{E7L%#M%PMZn+#+DM1GWkasaU(ZJ-K3^v4+J4Iutw4b%fjz&Ha9 z0AkQ=U@(9fj5jbGKnz+8Gy#Y~tAVjKx>hRNW}pQ?3?>+uNM~f%O7#k}N5?KAfw_(K zN-?Y<5h@``E3mgB>gWGxM_pO)jp z)<7QGq~A}=@m;vi>!;=TE?n#N({g;+<}!ob*ZnlW3nxUlr`J!*@!>>=*_hi;%kkkP zhe?u`vDNo*W^ys1+iw}+tjf!XvX|4qG2GE+HepVy@8QC{Qk3*Ew)!5fOlnhOjpn!E z9uT^c#Yl2lJ&|y#9teMtyp3XUkmO(01vOhHZk`ck<2XTEtD7FHTC<-}URaCl{tEpZ(C|$vCIaEk9rK^fc*QQi) zy^LK|RN9uj2k)%n>E*6hP&3lvBy$z&i)Z)v5RX)DNngNR1L>>+EzRkwqSEzN3fY{l zDk?q2;$EK9Nl>My=he+sQPI?0X3nSIO_g4hRDYe*RYj$jT0iUM^pj8Nb@qMQ^Bt~;lzib}sN(wo)GsjZcMXYuj9GQGe@AY-M{$E&cbigH|4q<+0p zueKal6)jP&Rcb?d?#Xg{jif5I4LbK!dAZ84oVdzL_18)aR~6~~G2l3STwBYrkNj@@ z>niFoRJV$8pI>MD$m?t$d7bSeuWKWKc%9ovKEUlGS4+*YkNjI{+dlF-+ecn!`^f8T zA9>v&RLih#xoIEGGg0UEk;gm8`?95(B3>#*VVbA4%Yisj+ewnmyRC708N1u3YS0`zsmON ze`-P%$bBwda(jEOM=EA@;Wetyn@Yyc74pRtBzq zpBnMwv59vvyg!>7>ko=JgT?vhyKqM4)Pclf4|0;sz~cFEnyS=vkKZvVSyc#{bg4JcdGP2$qtnULWj!p|{N2$FD?BNZ$vz;vDJoax;ep!CMApPEu z;X|n48w0cXo!HjVszY|Yt-4%q$P>s0pE#+0ba?-3cRW-F-dCMtp$|J)srWAFLGNe( z2J`f{tV4IWIzha~DJ#>PaYG{{RML+}u??@_!0Os7TI3 zV8jPOIUwd)FU&9|J&y_^aJS6(81ggS?2TyQfoFx`bS8= zQ&q=7SqPHY+FioJS*)+Nn-z-u75ewIXVFB|bA5nn)I`cOH&Hq}n~eO7sgxSCrx$() zvr)G>_)i9j>zQD#ClJot;{Dh+Od4CL9a3nO+R*#+vs#NK&f^i`<+PvBn& ztb3UXqg_n@24J^!VGrE>$}a#(rYjs@sc!bu^n`{8UW6g*lYnn0LXr z6KeTwJ>zteA9(BNvHfR)x>owl*7spQh5r+f*YYLk0TVh=Lcd{iorL0jIXDx6w@gT1 zL_TRkmrLl`pz;`m+6KV(T9#np74zIG&liJ=pUc9bu!D;cfLhlAdgHJQ%UgZ~`WTIv z_lh)L3i5AD;~Lnb5E?0s&49T$c7VLG+mTkE@g;JqDu=^+8J;?tBFa^~qp40kX2+8% z=dS9+FE`X?ziAwG&YmIF4v@kGf6DpoiOLdFmV)(%GE)90pl$(HAM3-4YKOnj^4ti9LW8Uc$s6yF5$Odm?IC@x679Ysr9@; zE`)h5(qN)MuUQyR`2EcHw2~XaQ%f7 zj;i6@FJ9;q?W^i-L6Lf(Nn;!)Gu_u}2`P+hY>mIO|U}F)~x)`u8j(r4X0FK9T zEYw_sruuryM}^@piEWxqXkJT5V0TgyzE_XSzd0!DUy1S>!1*X{lBFiVHXOec&}AKO z;&@eH8KC%b7QY1M01g1`1GVboqRVkyAkZK15svo-Dgo&$s7lae1v=$;9_^rJXv!IY zGjN_nj`sv~TSw`Yyz!waw*%(lm?7{hzzH~x6nGl&G>%81mX2DKEqU#*{T~MD zUog#X-4FJ+_e_LH=L$n@$3%}gboRYRDwfV24?t22~N`Qhsf_QmTw=o*|8$y9SNfDczg4iF* ziP-P)YQL6*Laq87aAzD#1hmI(e;oTllRl3ugar!|{Ghdgc%F#=@lxmsI3LHk0zCjX z;kZHIpJ@LY$FCqW^$#M$A~H{En#YgnX;XL^{}-hoyPx9tSU`6D>-cqFK&E;EDxhhj z@aZ%%Wi+4(?og;X`#mVXUII_O}PI zqZz-q{tfoWBqmgp4YX&d^$kEHj-gP?56J;($Glsm{WJDuOZz6+3-O;Pg-Zd) z;y6lR6W~%D7eUiiU8Nm&+8t3kz4HD_UdFVCX78Mg|FJUKgu z=)XV}>?#9|-@KNO$c=h?2RyEPc`%6GN4B+UJKPTm^#rI*mk70L?tcU53aB*%e1_wF zfv-^-45e1d>(aSLAaLN`)knkml{**Rk9hI}x_($mRc`Ks{;x(f1YNvFBa8WG4>w?=RFxg3y-` zjQJL8L~>q`_B9lkWAml+g0UKg&9Pz4`9Vg*nmIP|K0m1YkaT!+znF*C^1$ZBzUrmZ zTpo-sXzm)=g4~=fl3fv$ZkHJw)$hh#CkcQJ<#rD$G?a6{C9iZ~o(*v`fxqlrd-LoNk@bGJIS?qUMtt@XrORos0 z)#8t_n44Cs-@{^VRlU`(aazAtEuic7HJEf-jlRuO=9tzf8gAU!OVmEeicl=3aaNhl_mfoJZjN!kqKR ze<6{KU%sG3@%5JU6uv5P7PCN_I#ox@2s>GAYp~qtrEE@Ka z4Wsecrri?EyMj%t_)g%T%9|4`B1^mS=XN5ply-SS@8Lu&^$XsfkW2Lm1C;7U@K9*% z-Y7}@Vu-N(Nel`#+;2WG@=)?M&oi#K+?!8$Yc0ICuJH8IQg~~t72ZPZ&g%+qZ9j!~ z1o#kW*#pwwrE&ydRG zNac<$mC3Qzg39FBOjDVAH5ncbk5wpDvEOzH508zr#m~7HOu?Uv9@NreUv~NTjm>cW z=S;_+iyrg_vcpte{J7}B`RjY5knfGmUsHAG&-X^o|4t$s42jv|YD}AG=jpa2IK4FK zw;mTTP|=%XANCB1jS}!y>g{ka)ylOYEsVCl1MAlm!M#xHXMitpddz6L$@Ra5^=QZ}%*HVt@@AiiMl>ALn1BKs5IcjGSrDTA2;!K|IqmVNhTWG)6EA(&r_ovIrfoQ+i0B{&i<{5XNJ;cW2PU!oP z#LGQ*!X29?PxlQ;+SH+YOD0eeG`(64k`3j@%B@d2l1=4jo4y?^UKA##BT&4glzD@f zm?rn;?0a(0z}@4n{1>>xa5cr2+%M*Pf6st8o0^ccZ#~{-VwIZYG)jy6116U| zjCN4E2W>jlp8O6Fmg)ne)YM{?O0sk@gW%Nko=J?QyclWo5-WGa{dHD*X~QtfGgHqa zYY)X9u7b<`VG*YDeZ|kcf=*CoS9ql7;!ei3{SvJfjQy+c!Z^;vN_)p9rt1~l{jAh zCuW|KfA~C4Tj2g2M^@>~DjTxz>Y+UF5(i5DjLf$t@5dtfJ~+C`tAr!@V-@7ZnPCWo z;iyjeIsYj?%}fthsxBS6)I@ia=>9xJW*U7ZFR@k@@5&x$Vn5`W+1x3THP_WZgfBG# zWo#HugOhF`>gDlYmw$st=@&0!<)PfK@a9I{I^T;woL8#D(z-r??Rh0BS^6kne8eB= zrTC^wL-{;beF%VBc_V)+{y}8I1c`!|Bs#t)3tTC;U8r$jbRX)9dnt4>Q zRab=%`CFdEzvte2;?bgNa=LBaq>+=S z9As!TgL>ev?D4Ds|6K08*lBsCS)Pf`R9SxTf8@lf;+hv=?u+j}P_J0p*};IztFVro zsDOJs-p4|{`vK0yu?gZ|?IX&Gox9RD6rR833UblPXXjB$+bzgm2iXQmf9DBmD4&A= zD4vbtcAlj=PKIR${MaIm`w4&VlOZ18S!7I25!V^7_8hnY;(3 zw4%7am_n=hC)`W$zZk0dGvIa{w?h5U@%}|k>CeDRCkK+4b&JrP*Oi#D@cb?MT+k9T zZ=@3QEV_?CE-~|3m6+bQQ>u_l%)A*&%x>VNP$4nxir0doVc4_8oQd!0P$4n5f^LM^ zsupXlnLWSJA z2Xs5+^_|z5Tl!?w-=VnXBp6@e^=GK&2tds*X)RFAzJN(MCJ5{fSd3#KWC!6Y-SNT7 z!uH~t`^b@f@mVX;TL5R__=&)kfZK4~B5*$7Q5@T$2I=q zZ|D`0R~s)QzAcum<@{9UvULr^Sj=nEX_eZ*Br*tHZ9ZM zg|`8Guz1#@T1%C!*MqNwEL&>`!Mj}9I-yA0&MaGB!S_X|kgfj${SET^o<;Tym(qh$ zno?ZzFpO5Z;&D*T-GG%ib``h@a1xFa1TF(yfa5%bu z4pj9)6$bkBlD&t)zlMhFP3%rrJ`E`Dfo%Pe;GsW^n7vQI@fu<;Ls2KcouEBEtdk#F zWu5##@c%nh_c$J|lMh3MGw9s~*sipMHCcr9VjGqq@_yxzf6=UR+jwz9!)g)oD_h=0 zY7BTJ)Ub+}>2SF!I}2_(tVPfWMW(;)q{GqpXBv4p+#jj;XH0L4k!#j&5NB6=(KVhY z{|diSH7lm>*7;ZXv&_GVqmI4sB)2m`9oQ&SKWV&tN9*&R@T95Vp*vdNP=zNgk{z$9 zFG&a&I4w0~r?p^QL2E&KL2JQ|PU{V6jdfb8r%r2ZH?6TwO9SL^?9S?V?0b!H>|V~o z=dw`aENBSeEYyrGgj+Mk!Ziyu3zVPELd^=Z(D*U=5g!;dT7LZ#6P6!v_K=M+c2mOO zps#!wSZOTP_*1E51DA#Bw4F*em|sxIM=Fgq#4tWCI)+EbhCAVL{sak+RgU64Q;{62 zER8q&ImK)YeQmtOZDe(^X!Bhx8efvhlE|c*rZZX6-DF8*Qt6JTxX*^bMygW*^f&vK zvQlT$0?WFb;8Z# z_Vt3E)&^K?-I>V7Mmh5q(by=9DCgJzu z=AS|~|BN&LoDOjF&p7kXr64!|j5Gffa`VqP^UpItZvGi({`op;Sug$v{zMxG+?gcN zriHkc$ck()Lo_3eGb5D=n~}zuk#0uS%}C?SNGIWCGt#1Pcbw^ono!&pvNQ{LI$r=W z&A1awN{>f7rWto)bM_{LVw!Om-Ic!^cl5Dz^i^`H`yN^4maIyYlXDsS9ywDDhYyNX zIvM*O**46DnFHZxy{!ARQfkF~TB+TynTmQ)#y+jg*r$~l`?NA+pH^n<)5?tdv@+{H ztu$>ut-L_m_Gx9tKCR5yrLkI5xh6P+NhX?c(K(o}ip<4WSY$tvmuF!nkA6&8vLh;x_aWq@^htzzGd_2|^aEsofGiAY> z%hR=;?F@F*c24hy8vkl;REb!7h=r{%IuE`XjoVgu*a4)r6J0fzh&BT4Zla03Bo%E0 zI@nm&_M)riY@vtEKR=OA;1+t)1e};(r4GOreb@*j^NDC95MwKkpMtdkgwsb)(I2+} zl%Rjq=AV}(5G@AfRjbPLq}sEEAvXW4!5#ldjA+A;s$wETphd&WHp#8l$>yI+BuLfu z68AF)Uu;(l63!||630!18VS2>QfQt>p(_0BO++rY+uB1xxEw2(< zl>S;Nxzr3K)9a~y;bjJTq!$WYZXlIjFVk0;PHB3&z?B9v>9ZB>s|;k*RZ7s+269~X zw}Ju*f06A4PnLzPQ5vpOsN2jZOnC>e1wt*m}xW&@tO4fT;3SoMT!29M;#Z{2e8C`3^2uAWGB{JQS*hi+X zA_q!3Een%2i&42PdO(ou$T3CDC=3&&eHK zXDK%u3n(^SXDO7D4KMXFPZpFzDPmzr@OK;~(RG$)K^qsj&eAL-dQzxdXDR7~HZG=` z&7FLw8h5%SIfG6=t=%2z*4!N2URoO$*^#KohG}hFOiw7*aE@CNv~e*ON+oF<7uor; zzx1_nv2!nriJ{ z%&>b=0UTbflFYDsaRQP@RcrTRhTV&A5#Hu%?Ox2Vdr@=Yt827-F~jb~k%V`BwRSIN z*u8ip&E{rOa3+!OmCUkxQ8B32?!_#-7gYcZCbWAo%kIS;@awJJi&=Ir9t((tC-W@( zDUWhJV4TaJsRm0n7jwPL9oDjYG1uGN$y#|V_EHFxh??Ox3FGf?j(ZTDhsSh9iS)oS-*Zg{cW0vH%!AOv8c(LfT= z%H7ijQnlK>m}@eS1rYgB2Fd}%ezbuq0MQ>~pf`Z{k2O#aAOYhHGysS}vw^_?Vldvo zZ~!rAG0+4c2CW9h)@t`+uFXITfEY|LFp<%e?Ov=4b4SN^BT?y%_4KGeNU7q|EP4Ts zG2o}Qdog!x`X6`%w8GpGf$B(!c2wmyq|^)a8K!JW+U~{Nl;rKQSJD@)sg{>sTDuo> zGYo`j?Ox2yuU3gBQwn>whF#jN7z<@Bz71Y1RO`vPiGsR#HZJ<~ae134pS->cvyD~VUC?1E&R_MTq37~##8 z(@i+Vd#dar17s|(rLwCHaNRXW40sJ?wFJ`-?_# zjfDz47Ag^m3+aN&8*^&cb;8JQVqAeq+A$jl%ET)vykObSM!U80?lnaLUT zIwjf}nVFJPckR^$ncZSL%f5C-X7((3Q_)FlXJlqC*9yEIL1smuZo7|}($2`t+LRgv z!*6=^rc7J%6}(f5rq5y$b;U{B8JW2#sdqtI-!o+{wLaWSYY8fIoxQ-q^hq-M^XP4s zw4ITeeXeK72bc8rEE7?0wdU3tf2)l~=GcQtymvy*n$| z8JShCRcmKt1v?`Zt5mgiMpm#hayzA0PF!WBYAElY@`|-3$>*hR3j36pf>%9@g@KBF zOYFUstUlr|7+YUrnUJd1dEXTWl_b>WvR*$o@jn<)!Nfm9xcQ2DP~Il~d7Jp>ZQ`G| ziGSWE{&_d?@8>4|rp?5EiL`CvpSOvB-X{KeoA~E#;-9yPf8Hkkc{lOze>Sa-BfQkF zaJAuk*Rl4!o|XekoeZp1UAHFg;H#r@wqMGg}>lysr_oysd(w*Y2g0)5_N{j^l3Ct|G*yVXj18$(D4s8kWF7e zWA_iW5-m@^ByhO(16Aoe3E$sPtubNm^hU;){!s?%(_hjj_&=~dp&@;Pz_FEzz~J0wI9saA9DNyh|E>+u9S_ojy{qCYmVhto3@ z(KD=Ix2K!-0Q}T+9``JY3dL$$%&SxnDGP>AaQM|uT;vVhheqq46}ychjK{XKt20?e zijw}Oq^|NyYqIUT$*!AC`{%lPZL?|ryl9lI*|dLtG%3+++P}a+!W(oMSr>aNX1|dy z!eqG~RAv>{pcgS8d&YSl*6CTUe#{&61M;tUPj{H<+4B1eZuu+Zx;J?1?hF*m?AMOL zepa3;?^@i?*YV3@x>Pe;iN<|o){vQy^99*rl5;cF4pa0E7so7Q^bDB zf?g`_Zal~YOU?3O3f^8bJ7dCr0Z$W-K6bk)!^D7af&1q@$%a=p(?nP z=`O;<<8-i=zP|mu%oohNh5vY8}+j*t{Rj~1P zjwwJ@Zv4ujn2p4|mS3Pw`}DFE`~YGWW+!5@(2vmSp)qC&rYyC<% zsHgdsi`mYJP%%3mv&Sktiy2JC>^vCfh-oo{shHge<9abIW|8`K7!N_M;jGS>b&J#} z7l$=24o!&EV7;-jGY*Hk+<6THugJ2+0jA>c1&lw5X>ow5I3(`ljRCnhMC$c0>Y&y+ zU2*t+?u_~`x$|R-S@Sw#Uvo zZn_f|6SF+&4ZIcwygCv53%yCJ6yYh)S2JT4`+`JrO;68j7wGr{-2Je(4x0J}VCp}4 zOe>>I%)cDRN%$QHP3sFdSX%vXTm$DaX!>6XQT@LDP5!!t3IW5nr&#{wiLzS>Z(?yP z8_H047V4+~e1zkDfqsCJ`)TaZjFA9YaJC*WTY8$UYZGPPb=vBSbRWoUwc%(Mkgb(C zc7x28=}v!-?9v-$`iD4Pq1Ml=#O8Hy1^_G*znM%R(`#T~EWv&_^vasK4u{?XbDf~R zf}VL)#M`4A?-Y2-hhrn&2Fz0L_nm>+nHwX|3nR}XyL(=Zr(Qq04$xY$*LqLH0tUq= z>NQgx@Y*7A);ZZopa&nkp)qnZeX2ju^^I#tp1NCqi^{v{+TG2ozh*ca$dN;#3H;|t zF7V#zi}#R3Fap_$rLZr;e>3Dw=ndM>g#Ip};fY`wLX*bBo;Z}pElB-bl9MHQph@bf zUfyp?1gHLo^dm?<+$DXeN$Y9SV-kTTzXjW`Bl)VNXB|M*-C)vsnsjp_m~@P4v^RUt zrG!rMjR-U^#@i+L-|=qmHb5b{fI@O3F|U1d9l=@_VoO2G$2um0(cg3S@WFBngPFJVGeRx^PJ0?LtyL!jd^`JmR^YWldXGU+##mr*Kb{ZeGTK! z(D(A|m3X(>6M^QFG2-&;rSAC!DC8HQkYACQ*S@Z!E-8MMo=ncw7=MS|XrfySLNMsygS#ZBXxz94Sj13zn=) z+M@e!7Odratc~%0>OIaUVw)f{vq@$~{t&l+#`hIV`b3In#OtJZ4@!4It}M=o57Vgs zZ5XeM`9t+#XT;ky3kV-V9BMjjcVjNrtY8R?0TAtomnh->XFX!TLpBkSksD>{N8gXl z^v>A)C|$BEqGl)F$SakN$9`Y2q&`aj zv2mN_Zbs=m$ff_-cz>n;ei+-twDcbvAFcGi3*#*@E&a#F=P3O}4^xnkrC;-(|Catz z732OcHdjv%lWT~gzvZ;PQEc{)_f-0aV`?zuVzYmIs9vK>V9XcOPSe;w-m2J~3gZMZ z|E-MOKR#cvxeLav(3lnXv2<}j+$JL*!*~~RGn4}zbJ%vu4O;p*F_;Xw;rL;38;&o< zXD7%Fg<-0(tcS6mm^KuKsYY`$j1$GQ;drFJ1;#~C>lY+6nkWQ6P}Xo1O6N2|4CV>$ zPw4(6>9Jv^v^&e2Jhp@JHx`QQ87jjLkB6&??DW6F*0hqj2(H1n3SIv(3L>^?rv#NR zI0~7Oz3FrO87}XqBfm?D~!IU>59U8Xz$&)_6z%LdYK#5B9;IE^^}``TKgf9%XDixCE(*8a<7C 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